@memberjunction/ng-explorer-core 1.2.2 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-routing.module.d.ts +28 -0
- package/dist/app-routing.module.d.ts.map +1 -0
- package/dist/app-routing.module.js +177 -0
- package/dist/lib/favorites/favorites.component.d.ts.map +1 -1
- package/dist/lib/favorites/favorites.component.js +5 -3
- package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +1 -1
- package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +1 -1
- package/dist/lib/generic-browser-list/generic-browser-list.component.js +15 -13
- package/dist/lib/navigation/navigation.component.js +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js +3 -2
- package/dist/lib/resource-wrappers/record-resource.component.d.ts +3 -3
- package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.js +18 -16
- package/dist/lib/resource-wrappers/report-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/report-resource.component.js +3 -2
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +3 -2
- package/dist/lib/single-record/single-record.component.d.ts +4 -4
- package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
- package/dist/lib/single-record/single-record.component.js +10 -10
- package/dist/lib/single-view/single-view.component.js +1 -2
- package/dist/module.d.ts +32 -31
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +15 -10
- package/package.json +16 -16
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
|
|
2
|
+
import { SharedService } from '@memberjunction/ng-shared';
|
|
3
|
+
import { DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
export declare class CustomReuseStrategy implements RouteReuseStrategy {
|
|
7
|
+
storedRoutes: {
|
|
8
|
+
[key: string]: DetachedRouteHandle;
|
|
9
|
+
};
|
|
10
|
+
shouldDetach(route: ActivatedRouteSnapshot): boolean;
|
|
11
|
+
store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void;
|
|
12
|
+
shouldAttach(route: ActivatedRouteSnapshot): boolean;
|
|
13
|
+
retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null;
|
|
14
|
+
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class ResourceResolver implements Resolve<void> {
|
|
17
|
+
private sharedService;
|
|
18
|
+
constructor(sharedService: SharedService);
|
|
19
|
+
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): void;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceResolver, never>;
|
|
21
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ResourceResolver>;
|
|
22
|
+
}
|
|
23
|
+
export declare class AppRoutingModule {
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppRoutingModule, never>;
|
|
25
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AppRoutingModule, never, [typeof i1.RouterModule], [typeof i1.RouterModule]>;
|
|
26
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AppRoutingModule>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=app-routing.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAkB7G,OAAO,EAAc,aAAa,EAAgB,MAAM,2BAA2B,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;;AAE1E,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;KAAE,CAAM;IAG1D,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAMpD,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAOvE,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAOpD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,IAAI;IAQnE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO;CAGxF;AAED,qBAGa,gBAAiB,YAAW,OAAO,CAAC,IAAI,CAAC;IACxC,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;yCAH7D,gBAAgB;6CAAhB,gBAAgB;CA2D5B;AAgDD,qBAIa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { Injectable, NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { SingleApplicationComponent, SingleEntityComponent, SingleRecordComponent, HomeComponent, UserNotificationsComponent, DataBrowserComponent, ReportBrowserComponent, DashboardBrowserComponent, AuthGuardService as AuthGuard, FilesComponent, QueryBrowserComponent, } from './public-api';
|
|
4
|
+
import { SettingsComponent } from '@memberjunction/ng-explorer-settings';
|
|
5
|
+
import { LogError } from '@memberjunction/core';
|
|
6
|
+
import { MJEventType, MJGlobal } from '@memberjunction/global';
|
|
7
|
+
import { SkipChatComponent } from '@memberjunction/ng-ask-skip';
|
|
8
|
+
import { EventCodes, ResourceData } from '@memberjunction/ng-shared';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@memberjunction/ng-shared";
|
|
11
|
+
import * as i2 from "@angular/router";
|
|
12
|
+
export class CustomReuseStrategy {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.storedRoutes = {};
|
|
15
|
+
}
|
|
16
|
+
// Determines if a route should be detached and stored
|
|
17
|
+
shouldDetach(route) {
|
|
18
|
+
var _a;
|
|
19
|
+
// Store the route if it's an "askskip" route
|
|
20
|
+
return route.routeConfig && ((_a = route.routeConfig.path) === null || _a === void 0 ? void 0 : _a.includes('askskip')) ? true : false;
|
|
21
|
+
}
|
|
22
|
+
// Stores the detached route
|
|
23
|
+
store(route, handle) {
|
|
24
|
+
if (route.routeConfig && route.routeConfig.path) {
|
|
25
|
+
this.storedRoutes[route.routeConfig.path] = handle;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Determines if a stored route should be reattached
|
|
29
|
+
shouldAttach(route) {
|
|
30
|
+
var _a;
|
|
31
|
+
// Reattach if we have a stored route for the incoming route
|
|
32
|
+
if ((_a = route.routeConfig) === null || _a === void 0 ? void 0 : _a.path)
|
|
33
|
+
return !!route.routeConfig && !!this.storedRoutes[route.routeConfig.path];
|
|
34
|
+
else
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
// Retrieves the stored route; null means no stored route for this path
|
|
38
|
+
retrieve(route) {
|
|
39
|
+
if (!route.routeConfig || (route.routeConfig.path && !this.storedRoutes[route.routeConfig.path])) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
else if (route.routeConfig.path)
|
|
43
|
+
return this.storedRoutes[route.routeConfig.path];
|
|
44
|
+
else
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
// Determines if the route should be reused
|
|
48
|
+
shouldReuseRoute(future, curr) {
|
|
49
|
+
return future.routeConfig === curr.routeConfig;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export class ResourceResolver {
|
|
53
|
+
constructor(sharedService) {
|
|
54
|
+
this.sharedService = sharedService;
|
|
55
|
+
}
|
|
56
|
+
resolve(route, state) {
|
|
57
|
+
var _a;
|
|
58
|
+
let resourceType = route.params['resourceType'];
|
|
59
|
+
const resourceRecordId = route.params['resourceRecordId'];
|
|
60
|
+
if (resourceType !== undefined && resourceRecordId !== undefined) {
|
|
61
|
+
resourceType = this.sharedService.mapResourceTypeRouteSegmentToName(resourceType);
|
|
62
|
+
const data = new ResourceData({
|
|
63
|
+
Name: '',
|
|
64
|
+
ResourceRecordID: resourceRecordId,
|
|
65
|
+
ResourceTypeID: (_a = this.sharedService.ResourceTypeByName(resourceType)) === null || _a === void 0 ? void 0 : _a.ID,
|
|
66
|
+
Configuration: {},
|
|
67
|
+
});
|
|
68
|
+
let code = EventCodes.AddDashboard;
|
|
69
|
+
switch (resourceType.trim().toLowerCase()) {
|
|
70
|
+
case 'user views':
|
|
71
|
+
code = EventCodes.ViewClicked;
|
|
72
|
+
break;
|
|
73
|
+
case 'dashboards':
|
|
74
|
+
code = EventCodes.AddDashboard;
|
|
75
|
+
break;
|
|
76
|
+
case 'reports':
|
|
77
|
+
code = EventCodes.AddReport;
|
|
78
|
+
break;
|
|
79
|
+
case 'queries':
|
|
80
|
+
code = EventCodes.AddQuery;
|
|
81
|
+
break;
|
|
82
|
+
case 'records':
|
|
83
|
+
code = EventCodes.EntityRecordClicked;
|
|
84
|
+
data.Configuration.Entity = route.queryParams['Entity'] || route.queryParams['entity']; // Entity or entity is specified for this resource type since resource record id isn't good enough
|
|
85
|
+
if (data.Configuration.Entity === undefined || data.Configuration.Entity === null) {
|
|
86
|
+
LogError('No Entity provided in the URL, must have Entity as a query parameter for this resource type');
|
|
87
|
+
return; // should handle the error better - TO-DO
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
case 'search results':
|
|
91
|
+
code = EventCodes.RunSearch;
|
|
92
|
+
data.Configuration.Entity = route.queryParams['Entity'] || route.queryParams['entity'];
|
|
93
|
+
data.Configuration.SearchInput = resourceRecordId;
|
|
94
|
+
data.ResourceRecordID = 0; /*tell nav to create new tab*/
|
|
95
|
+
break;
|
|
96
|
+
default:
|
|
97
|
+
// unsupported resource type
|
|
98
|
+
return; // should handle the error better - TO-DO
|
|
99
|
+
}
|
|
100
|
+
MJGlobal.Instance.RaiseEvent({
|
|
101
|
+
component: this,
|
|
102
|
+
event: MJEventType.ComponentEvent,
|
|
103
|
+
eventCode: code,
|
|
104
|
+
args: data,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// to-do - handle error
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
ResourceResolver.ɵfac = function ResourceResolver_Factory(t) { return new (t || ResourceResolver)(i0.ɵɵinject(i1.SharedService)); };
|
|
113
|
+
ResourceResolver.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ResourceResolver, factory: ResourceResolver.ɵfac, providedIn: 'root' });
|
|
114
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceResolver, [{
|
|
115
|
+
type: Injectable,
|
|
116
|
+
args: [{
|
|
117
|
+
providedIn: 'root',
|
|
118
|
+
}]
|
|
119
|
+
}], () => [{ type: i1.SharedService }], null); })();
|
|
120
|
+
const routes = [
|
|
121
|
+
{ path: '', component: HomeComponent, canActivate: [AuthGuard] },
|
|
122
|
+
{ path: 'home', component: HomeComponent, canActivate: [AuthGuard] },
|
|
123
|
+
{ path: 'askskip', component: SkipChatComponent, canActivate: [AuthGuard] },
|
|
124
|
+
{ path: 'askskip/:conversationId', component: SkipChatComponent, canActivate: [AuthGuard] },
|
|
125
|
+
{ path: 'dashboards', component: DashboardBrowserComponent, canActivate: [AuthGuard] },
|
|
126
|
+
{ path: 'dashboards/:folderID', component: DashboardBrowserComponent, canActivate: [AuthGuard] },
|
|
127
|
+
{ path: 'reports', component: ReportBrowserComponent, canActivate: [AuthGuard] },
|
|
128
|
+
{ path: 'reports/:folderID', component: ReportBrowserComponent, canActivate: [AuthGuard] },
|
|
129
|
+
{ path: 'queries', component: QueryBrowserComponent, canActivate: [AuthGuard] },
|
|
130
|
+
{ path: 'queries/:folderID', component: QueryBrowserComponent, canActivate: [AuthGuard] },
|
|
131
|
+
{ path: 'data', component: DataBrowserComponent, canActivate: [AuthGuard] },
|
|
132
|
+
{ path: 'files', component: FilesComponent, canActivate: [AuthGuard] },
|
|
133
|
+
{
|
|
134
|
+
path: 'settings',
|
|
135
|
+
component: SettingsComponent,
|
|
136
|
+
canActivate: [AuthGuard],
|
|
137
|
+
children: [
|
|
138
|
+
{
|
|
139
|
+
path: '',
|
|
140
|
+
component: SettingsComponent,
|
|
141
|
+
pathMatch: 'full',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
path: '**',
|
|
145
|
+
component: SettingsComponent,
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{ path: 'notifications', component: UserNotificationsComponent, canActivate: [AuthGuard] },
|
|
150
|
+
{ path: 'app/:appName', component: SingleApplicationComponent, canActivate: [AuthGuard] },
|
|
151
|
+
{ path: 'app/:appName/:entityName', component: SingleApplicationComponent, canActivate: [AuthGuard] },
|
|
152
|
+
{ path: 'app/:appName/:entityName/:folderID', component: SingleApplicationComponent, canActivate: [AuthGuard] },
|
|
153
|
+
{ path: 'entity/:entityName', component: SingleEntityComponent, canActivate: [AuthGuard] },
|
|
154
|
+
{
|
|
155
|
+
path: 'resource/:resourceType/:resourceRecordId',
|
|
156
|
+
resolve: { data: ResourceResolver },
|
|
157
|
+
canActivate: [AuthGuard],
|
|
158
|
+
component: SingleRecordComponent,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
path: '**',
|
|
162
|
+
redirectTo: 'home',
|
|
163
|
+
},
|
|
164
|
+
];
|
|
165
|
+
export class AppRoutingModule {
|
|
166
|
+
}
|
|
167
|
+
AppRoutingModule.ɵfac = function AppRoutingModule_Factory(t) { return new (t || AppRoutingModule)(); };
|
|
168
|
+
AppRoutingModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AppRoutingModule });
|
|
169
|
+
AppRoutingModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled' }), RouterModule] });
|
|
170
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppRoutingModule, [{
|
|
171
|
+
type: NgModule,
|
|
172
|
+
args: [{
|
|
173
|
+
imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled' })],
|
|
174
|
+
exports: [RouterModule],
|
|
175
|
+
}]
|
|
176
|
+
}], null, null); })();
|
|
177
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AppRoutingModule, { imports: [i2.RouterModule], exports: [RouterModule] }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favorites.component.d.ts","sourceRoot":"","sources":["../../../src/lib/favorites/favorites.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;;AAEnE,qBAKa,kBAAkB;IAIjB,OAAO,CAAC,MAAM;IAHnB,SAAS,EAAE,kBAAkB,EAAE,CAAM;IACrC,WAAW,EAAE,MAAM,CAAM;gBAEZ,MAAM,EAAE,MAAM;IAE5B,QAAQ;
|
|
1
|
+
{"version":3,"file":"favorites.component.d.ts","sourceRoot":"","sources":["../../../src/lib/favorites/favorites.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;;AAEnE,qBAKa,kBAAkB;IAIjB,OAAO,CAAC,MAAM;IAHnB,SAAS,EAAE,kBAAkB,EAAE,CAAM;IACrC,WAAW,EAAE,MAAM,CAAM;gBAEZ,MAAM,EAAE,MAAM;IAE5B,QAAQ;IA6Bd,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAgCzC,uBAAuB,CAAC,GAAG,EAAE,GAAG;yCAnErB,kBAAkB;2CAAlB,kBAAkB;CA6E9B"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { Component } from '@angular/core';
|
|
11
|
-
import { Metadata, RunView } from '@memberjunction/core';
|
|
11
|
+
import { Metadata, RunView, CompositeKey } from '@memberjunction/core';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
import * as i1 from "@angular/router";
|
|
14
14
|
import * as i2 from "@progress/kendo-angular-listview";
|
|
@@ -61,12 +61,14 @@ export class FavoritesComponent {
|
|
|
61
61
|
});
|
|
62
62
|
this.favorites = viewResults.Results; // set the result in the list and let the below happen after async and it will update via data binding when done
|
|
63
63
|
const input = this.favorites.map(fav => {
|
|
64
|
-
|
|
64
|
+
let compositeKey = new CompositeKey([{ FieldName: 'ID', Value: fav.RecordID }]);
|
|
65
|
+
return { EntityName: fav.Entity, CompositeKey: compositeKey };
|
|
65
66
|
});
|
|
66
67
|
const results = yield md.GetEntityRecordNames(input);
|
|
67
68
|
if (results) {
|
|
68
69
|
results.forEach((result) => {
|
|
69
|
-
|
|
70
|
+
let compositeKey = new CompositeKey(result.CompositeKey.KeyValuePairs);
|
|
71
|
+
const fav = this.favorites.find(f => f.Entity == result.EntityName && f.RecordID == compositeKey.GetValueByIndex(0));
|
|
70
72
|
if (fav) {
|
|
71
73
|
// typecast fav to any so we can add the recordname into the object below
|
|
72
74
|
fav.RecordName = result.Success ? result.RecordName : fav.Entity + ' ' + fav.RecordID;
|
|
@@ -59,7 +59,7 @@ export declare class GenericBrowserListComponent implements OnInit {
|
|
|
59
59
|
createFolderDialogOpened: boolean;
|
|
60
60
|
private newFolderText;
|
|
61
61
|
private resourceTypes;
|
|
62
|
-
|
|
62
|
+
createButtonDropdownData: {
|
|
63
63
|
text: string;
|
|
64
64
|
}[];
|
|
65
65
|
constructor(sharedService: SharedService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-browser-list.component.d.ts","sourceRoot":"","sources":["../../../src/lib/generic-browser-list/generic-browser-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAS,MAAM,EAAiB,MAAM,eAAe,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAU,IAAI,EAAa,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAa,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,qBAAqB,EAAc,MAAM,4BAA4B,CAAC;AAEjV,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;;AAG9D,qBAKa,2BAA4B,YAAW,MAAM;IAkErC,aAAa,EAAE,aAAa;IAjE/B,UAAU,EAAE,OAAO,CAAQ;IAC3B,QAAQ,EAAE,MAAM,CAAM;IACtB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAM;IAC/B,KAAK,EAAE,GAAG,EAAE,CAAM;IAClB,QAAQ,EAAE,MAAM,CAAU;IAC1B,gBAAgB,EAAE,OAAO,CAAS;IAClC,iBAAiB,EAAE,OAAO,CAAS;IACnC,OAAO,EAAE,MAAM,CAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAa;IAC7B,cAAc,EAAE,MAAM,CAAM;IAC5B,kBAAkB,EAAE,MAAM,CAAM;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,iBAAiB,EAAE,OAAO,CAAQ;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,aAAa,EAAE,OAAO,CAAS;IAC/B,YAAY,EAAE,MAAM,CAAc;IAClD;;;;OAIG;IACa,eAAe,EAAE,OAAO,CAAS;IACjD;;;OAGG;IACa,kBAAkB,EAAE,OAAO,CAAS;IAInC,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAA4C;IACpG,kBAAkB,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAA0C;IAC9F,uBAAuB,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAA+C;IAC7G,qBAAqB,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAA6C;IACvG,uBAAuB,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAA+C;IAC7G,qBAAqB,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAA6C;IAGvG,mBAAmB,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAA2C;IACjG,iBAAiB,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAyC;IAC3F,sBAAsB,EAAE,YAAY,CAAC,sBAAsB,CAAC,CAA8C;IAC1G,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAA4C;IACpG,sBAAsB,EAAE,YAAY,CAAC,sBAAsB,CAAC,CAA8C;IAC1G,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAA4C;IAEpG,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IAC5D,oBAAoB,EAAE,YAAY,CAAC,IAAI,CAAC,CAA4B;IACpE,mBAAmB,EAAE,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,CAAuC;IAE1G,OAAO,CAAC,mBAAmB,CAAe;IAC1C,OAAO,CAAC,sBAAsB,CAAe;IAC7C,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAuB;IACnC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAQ;IACjC,kBAAkB,EAAE,OAAO,CAAS;IACpC,oBAAoB,EAAE,OAAO,CAAS;IACtC,wBAAwB,EAAE,OAAO,CAAS;IACjD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,aAAa,CAA4B;
|
|
1
|
+
{"version":3,"file":"generic-browser-list.component.d.ts","sourceRoot":"","sources":["../../../src/lib/generic-browser-list/generic-browser-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAS,MAAM,EAAiB,MAAM,eAAe,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAU,IAAI,EAAa,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAa,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,qBAAqB,EAAc,MAAM,4BAA4B,CAAC;AAEjV,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;;AAG9D,qBAKa,2BAA4B,YAAW,MAAM;IAkErC,aAAa,EAAE,aAAa;IAjE/B,UAAU,EAAE,OAAO,CAAQ;IAC3B,QAAQ,EAAE,MAAM,CAAM;IACtB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAM;IAC/B,KAAK,EAAE,GAAG,EAAE,CAAM;IAClB,QAAQ,EAAE,MAAM,CAAU;IAC1B,gBAAgB,EAAE,OAAO,CAAS;IAClC,iBAAiB,EAAE,OAAO,CAAS;IACnC,OAAO,EAAE,MAAM,CAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAa;IAC7B,cAAc,EAAE,MAAM,CAAM;IAC5B,kBAAkB,EAAE,MAAM,CAAM;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,iBAAiB,EAAE,OAAO,CAAQ;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,aAAa,EAAE,OAAO,CAAS;IAC/B,YAAY,EAAE,MAAM,CAAc;IAClD;;;;OAIG;IACa,eAAe,EAAE,OAAO,CAAS;IACjD;;;OAGG;IACa,kBAAkB,EAAE,OAAO,CAAS;IAInC,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAA4C;IACpG,kBAAkB,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAA0C;IAC9F,uBAAuB,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAA+C;IAC7G,qBAAqB,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAA6C;IACvG,uBAAuB,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAA+C;IAC7G,qBAAqB,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAA6C;IAGvG,mBAAmB,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAA2C;IACjG,iBAAiB,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAyC;IAC3F,sBAAsB,EAAE,YAAY,CAAC,sBAAsB,CAAC,CAA8C;IAC1G,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAA4C;IACpG,sBAAsB,EAAE,YAAY,CAAC,sBAAsB,CAAC,CAA8C;IAC1G,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAA4C;IAEpG,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IAC5D,oBAAoB,EAAE,YAAY,CAAC,IAAI,CAAC,CAA4B;IACpE,mBAAmB,EAAE,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,CAAuC;IAE1G,OAAO,CAAC,mBAAmB,CAAe;IAC1C,OAAO,CAAC,sBAAsB,CAAe;IAC7C,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAuB;IACnC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAQ;IACjC,kBAAkB,EAAE,OAAO,CAAS;IACpC,oBAAoB,EAAE,OAAO,CAAS;IACtC,wBAAwB,EAAE,OAAO,CAAS;IACjD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,aAAa,CAA4B;IAE1C,wBAAwB;;QAE7B;gBAEiB,aAAa,EAAE,aAAa;IAMlC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB/B,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAI9C,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAQ1B,iBAAiB;IAIX,wBAAwB;IAgCxB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD7B,UAAU,CAAC,IAAI,EAAE,IAAI;IA6BrB,mBAAmB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YA0BxD,YAAY;YA2CZ,cAAc;YAuCd,sBAAsB;IAWpC,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,QAAQ;IAST,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKpC,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAKzB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,OAAO,CAAC,WAAW;IAgBN,iBAAiB,CAAC,IAAI,EAAE,GAAG;IAYjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAuBpB,mBAAmB,CAAC,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9D,kBAAkB,IAAI,IAAI;IAI1B,gBAAgB,IAAI,MAAM;IAI1B,sBAAsB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAS/C,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;yCAhctC,2BAA2B;2CAA3B,2BAA2B;CAidvC"}
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
11
11
|
import { Folder, Item, ItemType } from '../../generic/Item.types';
|
|
12
|
-
import { Metadata,
|
|
12
|
+
import { Metadata, KeyValuePair, RunView, CompositeKey } from '@memberjunction/core';
|
|
13
13
|
import { AfterAddFolderEvent, AfterAddItemEvent, AfterDeleteFolderEvent, AfterDeleteItemEvent, BeforeAddFolderEvent, BeforeAddItemEvent, BeforeDeleteFolderEvent, BeforeDeleteItemEvent, BeforeUpdateFolderEvent, BeforeUpdateItemEvent } from '../../generic/Events.types';
|
|
14
14
|
import { Subject, debounceTime } from 'rxjs';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
@@ -34,7 +34,7 @@ function GenericBrowserListComponent_Conditional_22_Conditional_0_ng_template_6_
|
|
|
34
34
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
35
35
|
i0.ɵɵelementStart(0, "button", 33);
|
|
36
36
|
i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const dataItem_r10 = i0.ɵɵnextContext().$implicit; const ctx_r12 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r12.editItem(dataItem_r10)); });
|
|
37
|
-
i0.ɵɵelement(1, "
|
|
37
|
+
i0.ɵɵelement(1, "span", 35);
|
|
38
38
|
i0.ɵɵelementEnd();
|
|
39
39
|
} }
|
|
40
40
|
function GenericBrowserListComponent_Conditional_22_Conditional_0_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -43,7 +43,7 @@ function GenericBrowserListComponent_Conditional_22_Conditional_0_ng_template_6_
|
|
|
43
43
|
i0.ɵɵtemplate(1, GenericBrowserListComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_1_Template, 2, 0, "button", 32);
|
|
44
44
|
i0.ɵɵelementStart(2, "button", 33);
|
|
45
45
|
i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_22_Conditional_0_ng_template_6_Template_button_click_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r16); const dataItem_r10 = restoredCtx.$implicit; const ctx_r15 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r15.deleteItem(dataItem_r10)); });
|
|
46
|
-
i0.ɵɵelement(3, "
|
|
46
|
+
i0.ɵɵelement(3, "span", 34);
|
|
47
47
|
i0.ɵɵelementEnd()();
|
|
48
48
|
} if (rf & 2) {
|
|
49
49
|
const ctx_r9 = i0.ɵɵnextContext(3);
|
|
@@ -214,7 +214,7 @@ export class GenericBrowserListComponent {
|
|
|
214
214
|
this.createFolderDialogOpened = false;
|
|
215
215
|
this.newFolderText = "Sample Folder";
|
|
216
216
|
this.resourceTypes = [];
|
|
217
|
-
this.
|
|
217
|
+
this.createButtonDropdownData = [
|
|
218
218
|
{ text: "Folder" },
|
|
219
219
|
];
|
|
220
220
|
this.filterItemsSubject
|
|
@@ -224,7 +224,7 @@ export class GenericBrowserListComponent {
|
|
|
224
224
|
ngOnInit() {
|
|
225
225
|
return __awaiter(this, void 0, void 0, function* () {
|
|
226
226
|
if (!this.disableAddButton) {
|
|
227
|
-
this.
|
|
227
|
+
this.createButtonDropdownData.unshift({ text: this.resourceName });
|
|
228
228
|
}
|
|
229
229
|
const md = new Metadata();
|
|
230
230
|
const view = new RunView();
|
|
@@ -379,12 +379,13 @@ export class GenericBrowserListComponent {
|
|
|
379
379
|
this.showLoader = true;
|
|
380
380
|
const md = new Metadata();
|
|
381
381
|
let folderEntity = yield md.GetEntityObject(this.CategoryEntityName);
|
|
382
|
-
let pkv = new
|
|
382
|
+
let pkv = new KeyValuePair();
|
|
383
383
|
pkv.FieldName = "ID";
|
|
384
384
|
pkv.Value = folder.ID;
|
|
385
|
+
let compositeKey = new CompositeKey([pkv]);
|
|
385
386
|
//create view browser component - this will be used to display views
|
|
386
387
|
//then create a new component for applications that wraps around the view browser component
|
|
387
|
-
let loadResult = yield folderEntity.InnerLoad(
|
|
388
|
+
let loadResult = yield folderEntity.InnerLoad(compositeKey);
|
|
388
389
|
if (!loadResult) {
|
|
389
390
|
this.sharedService.CreateSimpleNotification(`unable to fetch folder ${folder.Name}`, "error");
|
|
390
391
|
this.showLoader = false;
|
|
@@ -415,10 +416,11 @@ export class GenericBrowserListComponent {
|
|
|
415
416
|
if (entityID && entityID > 0) {
|
|
416
417
|
const md = new Metadata();
|
|
417
418
|
let entityObject = yield md.GetEntityObject(this.ItemEntityName);
|
|
418
|
-
let pkv = new
|
|
419
|
+
let pkv = new KeyValuePair();
|
|
419
420
|
pkv.FieldName = "ID";
|
|
420
421
|
pkv.Value = entityID;
|
|
421
|
-
let
|
|
422
|
+
let compositeKey = new CompositeKey([pkv]);
|
|
423
|
+
let loadResult = yield entityObject.InnerLoad(compositeKey);
|
|
422
424
|
if (loadResult) {
|
|
423
425
|
let deleteResult = yield entityObject.Delete();
|
|
424
426
|
if (deleteResult) {
|
|
@@ -491,8 +493,8 @@ export class GenericBrowserListComponent {
|
|
|
491
493
|
item.Favorite = !item.Favorite;
|
|
492
494
|
const md = new Metadata();
|
|
493
495
|
let entityName = item.Type === ItemType.Folder ? this.CategoryEntityName : this.ItemEntityName;
|
|
494
|
-
let
|
|
495
|
-
yield md.SetRecordFavoriteStatus(md.CurrentUser.ID, entityName,
|
|
496
|
+
let compositeKey = new CompositeKey([{ FieldName: "ID", Value: item.Data.ID }]);
|
|
497
|
+
yield md.SetRecordFavoriteStatus(md.CurrentUser.ID, entityName, compositeKey, item.Favorite);
|
|
496
498
|
});
|
|
497
499
|
}
|
|
498
500
|
editItem(item) {
|
|
@@ -592,7 +594,7 @@ GenericBrowserListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
592
594
|
i0.ɵɵadvance(2);
|
|
593
595
|
i0.ɵɵtextInterpolate(ctx.title);
|
|
594
596
|
i0.ɵɵadvance();
|
|
595
|
-
i0.ɵɵproperty("data", ctx.
|
|
597
|
+
i0.ɵɵproperty("data", ctx.createButtonDropdownData);
|
|
596
598
|
i0.ɵɵadvance(5);
|
|
597
599
|
i0.ɵɵproperty("clearButton", true);
|
|
598
600
|
i0.ɵɵadvance(2);
|
|
@@ -608,7 +610,7 @@ GenericBrowserListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
608
610
|
} }, 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], 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-line-clamp: 2;\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}", ".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, .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%], .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}"] });
|
|
609
611
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GenericBrowserListComponent, [{
|
|
610
612
|
type: Component,
|
|
611
|
-
args: [{ selector: 'app-generic-browser-list', 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(selectedFolderID){\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]=\"data\" 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 <kendo-loader *ngIf=\"showLoader\" type=\"converging-spinner\"></kendo-loader>\n @if(!showLoader){\n @if(displayAsGrid){\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(disableEditButton){\n <button class=\"list-btn\" (click)=\"editItem(dataItem)\">\n <i class=\"fa-regular fa-pen-to-square\"></i>\n </button>\n }\n <button class=\"list-btn\" (click)=\"deleteItem(dataItem)\">\n <i class=\"fa-regular fa-trash-can\"></i>\n </button>\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(!disableEditButton){\n <button (click)=\"editItem(item)\" class=\"list-btn\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n <button (click)=\"deleteItem(item)\" class=\"list-btn\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\n </div>\n <kendo-card-body (click)=\"itemClick(item)\">\n <span (title)=\"item.Name\" [ngClass]=\"getIconForResourceType(item)\"></span>\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 delete <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, Delete\n </button>\n <button class=\"yes-btn\" (click)=\"onConfirmDeleteItem(false)\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n No, Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\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</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-line-clamp: 2;\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.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"] }]
|
|
613
|
+
args: [{ selector: 'app-generic-browser-list', 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(selectedFolderID){\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]=\"createButtonDropdownData\" 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 <kendo-loader *ngIf=\"showLoader\" type=\"converging-spinner\"></kendo-loader>\n @if(!showLoader){\n @if(displayAsGrid){\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(disableEditButton){\n <button class=\"list-btn\" (click)=\"editItem(dataItem)\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n <button class=\"list-btn\" (click)=\"deleteItem(dataItem)\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\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(!disableEditButton){\n <button (click)=\"editItem(item)\" class=\"list-btn\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n <button (click)=\"deleteItem(item)\" class=\"list-btn\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\n </div>\n <kendo-card-body (click)=\"itemClick(item)\">\n <span (title)=\"item.Name\" [ngClass]=\"getIconForResourceType(item)\"></span>\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 delete <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, Delete\n </button>\n <button class=\"yes-btn\" (click)=\"onConfirmDeleteItem(false)\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n No, Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\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</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-line-clamp: 2;\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.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"] }]
|
|
612
614
|
}], () => [{ type: i1.SharedService }], { showLoader: [{
|
|
613
615
|
type: Input
|
|
614
616
|
}], itemType: [{
|
|
@@ -1090,7 +1090,7 @@ NavigationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Navigat
|
|
|
1090
1090
|
i0.ɵɵproperty("ngIf", !ctx.loading);
|
|
1091
1091
|
i0.ɵɵadvance(2);
|
|
1092
1092
|
i0.ɵɵproperty("ngIf", ctx.contextMenuVisible);
|
|
1093
|
-
} }, dependencies: [i3.NgClass, i3.NgIf, i3.NgStyle,
|
|
1093
|
+
} }, dependencies: [i1.RouterOutlet, i3.NgClass, i3.NgIf, i3.NgStyle, i5.LoaderComponent, i6.FillContainer, i7.DrawerComponent, i7.DrawerContainerComponent, i7.DrawerContentComponent, i7.DrawerItemTemplateDirective, i8.SkipButtonComponent, i9.MJTabStripComponent, i9.MJTabBodyComponent, i9.MJTabComponent, i10.ResourceContainerComponent], styles: [".navigation-wrap[_ngcontent-%COMP%] {\n height: calc(100vh - 80px);\n width: 100%;\n overflow:hidden\n}\n\n.nav-tab-title[_ngcontent-%COMP%] {\n margin-left: 10px;\n}\n\n.drawer-item-icon[_ngcontent-%COMP%] {\n width: 12px;\n height: 12px;\n}\n\n.context-menu[_ngcontent-%COMP%] {\n position: fixed;\n z-index: 9999;\n background-color: #ffffff;\n border: 1px solid #ccc;\n padding: 3px 3px;\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);\n}\n\n.context-menu-item[_ngcontent-%COMP%] {\n padding: 8px 16px;\n cursor: pointer;\n}\n\n.context-menu-item[_ngcontent-%COMP%]:hover {\n background-color: #f1f1f1;\n}\n .navigation-wrap .drawer-container {\n background: var(--gray-color);\n}\n .navigation-wrap .drawer-container .k-content {\n padding: 25px;\n}\n .navigation-wrap .drawer-container .k-tabstrip-items-wrapper {\n background: var(--med-gray);\n padding-left: 20px;\n}\n .navigation-wrap .drawer-container .k-tabstrip-items-wrapper .k-item.k-active{\n border: 1px solid var(--light-gray);\n background: var(--light-gray);\n border-radius: 8px 8px 0 0;\n color: var(--blue-text);\n\n}\n .navigation-wrap .drawer-container .k-tabstrip-items-wrapper .k-item:hover {\n color: var(--blue-text);\n}\n\n .navigation-wrap .drawer-container .k-tabstrip-items-wrapper .k-item {\n\n background: var(--med-gray);\n border-radius: 0;\n border-right: 1px solid #909090;\n}\n\n.tab-resource[_ngcontent-%COMP%] {\n display: block;\n}"] });
|
|
1094
1094
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationComponent, [{
|
|
1095
1095
|
type: Component,
|
|
1096
1096
|
args: [{ selector: 'app-navigation', template: "<div class=\"navigation-wrap\" [ngClass]=\"{'waiting': loader}\" #drawerWrapper>\n <kendo-loader *ngIf=\"loading\" type=\"converging-spinner\" ></kendo-loader>\n <kendo-drawer-container *ngIf=\"!loading\" >\n <kendo-drawer\n #drawer\n [items]=\"drawerItems\"\n [mode]=\"mode\"\n [mini]=\"mini\"\n [animation]=\"false\"\n (select)=\"onDrawerSelect($event)\"\n [autoCollapse]=\"false\"\n >\n <ng-template kendoDrawerItemTemplate let-item>\n <div class=\"drawer-item-icon\">\n <span [class]=\"item.icon\"></span>\n </div>\n <div class=\"item-descr-wrap\" *ngIf=\"!mini\">\n <div>{{ item.text }}</div>\n <span class=\"item-descr\">{{ item.description }}</span>\n </div>\n </ng-template> \n </kendo-drawer>\n <kendo-drawer-content mjFillContainer>\n\n <mj-tabstrip #mjTabstrip mjFillContainer (TabClosed)=\"handleTabClosed($event)\" (TabSelected)=\"handleTabSelected($event)\" (TabContextMenu)=\"handleTabContextMenu($event)\">\n <mj-tab [TabCloseable]=\"false\">\n Home\n </mj-tab>\n <mj-tab-body>\n <router-outlet></router-outlet>\n </mj-tab-body>\n\n @for(tab of tabs; track tab.id; let i = $index) {\n <mj-tab [TabCloseable]=\"true\">\n @if(tab?.contentLoading) {\n <span class=\"fa-regular fa-clock\"></span>\n }\n @else if (tab?.icon) {\n <span [class]=\"tab.icon\"></span>\n }\n {{ tab.labelLoading ? 'Loading...' : tab.label }}\n </mj-tab>\n }\n @for(tab of tabs; track tab.id; let i = $index) {\n <mj-tab-body>\n <mj-resource [Data]=\"tab.data\" [isVisible]=\"activeTabIndex - 1 === i\"\n (ResourceRecordSaved)=\"SaveSingleWorkspaceItem(tab)\"\n (ContentLoadingStarted)=\"setTabContentLoadingStatus(tab, true)\"\n (ContentLoadingComplete)=\"setTabContentLoadingStatus(tab, false)\"\n mjFillContainer\n class=\"tab-resource\"\n ></mj-resource>\n </mj-tab-body> \n }\n </mj-tabstrip>\n </kendo-drawer-content>\n </kendo-drawer-container>\n\n \n <mj-skip-button\n action=\"route\"\n ></mj-skip-button>\n <!-- Skip Button shows up through the above line of code -->\n</div>\n\n<div class=\"context-menu\" [ngStyle]=\"contextMenuStyle\" *ngIf=\"contextMenuVisible\">\n <div class=\"context-menu-item\" (click)=\"handleContextMenuOption(1)\">Close All</div>\n <div class=\"context-menu-item\" (click)=\"handleContextMenuOption(2)\">Close Others</div>\n <div class=\"context-menu-item\" (click)=\"handleContextMenuOption(3)\">Close Tabs to the Right</div>\n </div>\n", styles: [".navigation-wrap {\n height: calc(100vh - 80px);\n width: 100%;\n overflow:hidden\n}\n\n.nav-tab-title {\n margin-left: 10px;\n}\n\n.drawer-item-icon {\n width: 12px;\n height: 12px;\n}\n\n.context-menu {\n position: fixed;\n z-index: 9999;\n background-color: #ffffff;\n border: 1px solid #ccc;\n padding: 3px 3px;\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);\n}\n\n.context-menu-item {\n padding: 8px 16px;\n cursor: pointer;\n}\n\n.context-menu-item:hover {\n background-color: #f1f1f1;\n}\n::ng-deep .navigation-wrap .drawer-container {\n background: var(--gray-color);\n}\n::ng-deep .navigation-wrap .drawer-container .k-content {\n padding: 25px;\n}\n::ng-deep .navigation-wrap .drawer-container .k-tabstrip-items-wrapper {\n background: var(--med-gray);\n padding-left: 20px;\n}\n::ng-deep .navigation-wrap .drawer-container .k-tabstrip-items-wrapper .k-item.k-active{\n border: 1px solid var(--light-gray);\n background: var(--light-gray);\n border-radius: 8px 8px 0 0;\n color: var(--blue-text);\n\n}\n::ng-deep .navigation-wrap .drawer-container .k-tabstrip-items-wrapper .k-item:hover {\n color: var(--blue-text);\n}\n\n::ng-deep .navigation-wrap .drawer-container .k-tabstrip-items-wrapper .k-item {\n\n background: var(--med-gray);\n border-radius: 0;\n border-right: 1px solid #909090;\n}\n\n.tab-resource {\n display: block;\n}"] }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/query-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,iBAAiB,SAEhC;AAED,qBAKa,aAAc,SAAQ,qBAAsB,YAAW,MAAM;IACtE,QAAQ,IAAI,IAAI;IAGV,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAJxD,aAAa;2CAAb,aAAa;
|
|
1
|
+
{"version":3,"file":"query-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/query-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,iBAAiB,SAEhC;AAED,qBAKa,aAAc,SAAQ,qBAAsB,YAAW,MAAM;IACtE,QAAQ,IAAI,IAAI;IAGV,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAJxD,aAAa;2CAAb,aAAa;CAUzB"}
|
|
@@ -16,7 +16,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
16
16
|
import { Component } from '@angular/core';
|
|
17
17
|
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
18
18
|
import { RegisterClass } from '@memberjunction/global';
|
|
19
|
-
import { Metadata } from '@memberjunction/core';
|
|
19
|
+
import { CompositeKey, Metadata } from '@memberjunction/core';
|
|
20
20
|
import * as i0 from "@angular/core";
|
|
21
21
|
import * as i1 from "../single-query/single-query.component";
|
|
22
22
|
export function LoadQueryResource() {
|
|
@@ -28,7 +28,8 @@ let QueryResource = class QueryResource extends BaseResourceComponent {
|
|
|
28
28
|
GetResourceDisplayName(data) {
|
|
29
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
30
|
const md = new Metadata();
|
|
31
|
-
|
|
31
|
+
let compositeKey = new CompositeKey([{ FieldName: "ID", Value: data.ResourceRecordID }]);
|
|
32
|
+
const name = yield md.GetEntityRecordName('Queries', compositeKey);
|
|
32
33
|
return `${name ? name : 'Query ID: ' + data.ResourceRecordID}`;
|
|
33
34
|
});
|
|
34
35
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BaseResourceComponent, ResourceData } from '@memberjunction/ng-shared';
|
|
2
|
-
import {
|
|
2
|
+
import { CompositeKey } from '@memberjunction/core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare function LoadRecordResource(): void;
|
|
5
5
|
export declare class EntityRecordResource extends BaseResourceComponent {
|
|
6
|
-
get
|
|
7
|
-
static
|
|
6
|
+
get CompositeKey(): CompositeKey;
|
|
7
|
+
static GetCompositeKey(data: ResourceData): CompositeKey;
|
|
8
8
|
GetResourceDisplayName(data: ResourceData): Promise<string>;
|
|
9
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<EntityRecordResource, never>;
|
|
10
10
|
static ɵcmp: i0.ɵɵComponentDeclaration<EntityRecordResource, "mj-record-resource", never, {}, {}, never, never, false, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/record-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAY,
|
|
1
|
+
{"version":3,"file":"record-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/record-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAY,YAAY,EAAE,MAAM,sBAAsB,CAAC;;AAE9D,wBAAgB,kBAAkB,SAEjC;AAED,qBAKa,oBAAqB,SAAQ,qBAAqB;IAC3D,IAAW,YAAY,IAAI,YAAY,CAEtC;WAEa,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY;IAYzD,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAjBxD,oBAAoB;2CAApB,oBAAoB;CA6BhC"}
|
|
@@ -17,8 +17,7 @@ var EntityRecordResource_1;
|
|
|
17
17
|
import { Component } from '@angular/core';
|
|
18
18
|
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
19
19
|
import { RegisterClass } from '@memberjunction/global';
|
|
20
|
-
import { Metadata } from '@memberjunction/core';
|
|
21
|
-
import { SharedService } from '@memberjunction/ng-shared';
|
|
20
|
+
import { Metadata, CompositeKey } from '@memberjunction/core';
|
|
22
21
|
import * as i0 from "@angular/core";
|
|
23
22
|
import * as i1 from "@memberjunction/ng-container-directives";
|
|
24
23
|
import * as i2 from "../single-record/single-record.component";
|
|
@@ -26,38 +25,41 @@ export function LoadRecordResource() {
|
|
|
26
25
|
const test = new EntityRecordResource(); // this looks really dumb. Thing is, in production builds, tree shaking causes the class below to not be included in the bundle. This is a hack to force it to be included.
|
|
27
26
|
}
|
|
28
27
|
let EntityRecordResource = EntityRecordResource_1 = class EntityRecordResource extends BaseResourceComponent {
|
|
29
|
-
get
|
|
30
|
-
return EntityRecordResource_1.
|
|
28
|
+
get CompositeKey() {
|
|
29
|
+
return EntityRecordResource_1.GetCompositeKey(this.Data);
|
|
31
30
|
}
|
|
32
|
-
static
|
|
31
|
+
static GetCompositeKey(data) {
|
|
33
32
|
const md = new Metadata();
|
|
34
33
|
const e = md.Entities.find(e => e.Name.trim().toLowerCase() === data.Configuration.Entity.trim().toLowerCase());
|
|
35
|
-
if (!e)
|
|
34
|
+
if (!e) {
|
|
36
35
|
throw new Error(`Entity ${data.Configuration.Entity} not found in metadata`);
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
}
|
|
37
|
+
let compositeKey = new CompositeKey();
|
|
38
|
+
compositeKey.LoadFromURLSegment(e, data.ResourceRecordID);
|
|
39
|
+
return compositeKey;
|
|
39
40
|
}
|
|
40
41
|
GetResourceDisplayName(data) {
|
|
41
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
if (!data.Configuration.Entity)
|
|
43
|
+
if (!data.Configuration.Entity) {
|
|
43
44
|
return '';
|
|
45
|
+
}
|
|
44
46
|
else {
|
|
45
47
|
const md = new Metadata();
|
|
46
|
-
|
|
47
|
-
const name = yield md.GetEntityRecordName(data.Configuration.Entity,
|
|
48
|
-
const displayId =
|
|
48
|
+
let compositeKey = EntityRecordResource_1.GetCompositeKey(data);
|
|
49
|
+
const name = yield md.GetEntityRecordName(data.Configuration.Entity, compositeKey);
|
|
50
|
+
const displayId = compositeKey.KeyValuePairs.length > 1 ? compositeKey.Values() : compositeKey.GetValueByIndex(0);
|
|
49
51
|
return (name ? name : data.Configuration.Entity) + ` (${displayId})`;
|
|
50
52
|
}
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
55
|
};
|
|
54
56
|
EntityRecordResource.ɵfac = /*@__PURE__*/ (() => { let ɵEntityRecordResource_BaseFactory; return function EntityRecordResource_Factory(t) { return (ɵEntityRecordResource_BaseFactory || (ɵEntityRecordResource_BaseFactory = i0.ɵɵgetInheritedFactory(EntityRecordResource)))(t || EntityRecordResource); }; })();
|
|
55
|
-
EntityRecordResource.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityRecordResource, selectors: [["mj-record-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 2, consts: [["mjFillContainer", "", 3, "
|
|
57
|
+
EntityRecordResource.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityRecordResource, selectors: [["mj-record-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 2, consts: [["mjFillContainer", "", 3, "CompositeKey", "entityName", "loadComplete"]], template: function EntityRecordResource_Template(rf, ctx) { if (rf & 1) {
|
|
56
58
|
i0.ɵɵelementStart(0, "mj-single-record", 0);
|
|
57
59
|
i0.ɵɵlistener("loadComplete", function EntityRecordResource_Template_mj_single_record_loadComplete_0_listener() { return ctx.NotifyLoadComplete(); });
|
|
58
60
|
i0.ɵɵelementEnd();
|
|
59
61
|
} if (rf & 2) {
|
|
60
|
-
i0.ɵɵproperty("
|
|
62
|
+
i0.ɵɵproperty("CompositeKey", ctx.CompositeKey)("entityName", ctx.Data.Configuration.Entity);
|
|
61
63
|
} }, dependencies: [i1.FillContainer, i2.SingleRecordComponent], encapsulation: 2 });
|
|
62
64
|
EntityRecordResource = EntityRecordResource_1 = __decorate([
|
|
63
65
|
RegisterClass(BaseResourceComponent, 'Records')
|
|
@@ -67,7 +69,7 @@ export { EntityRecordResource };
|
|
|
67
69
|
type: Component,
|
|
68
70
|
args: [{
|
|
69
71
|
selector: 'mj-record-resource',
|
|
70
|
-
template: `<mj-single-record [
|
|
72
|
+
template: `<mj-single-record [CompositeKey]="this.CompositeKey" [entityName]="Data.Configuration.Entity" (loadComplete)="NotifyLoadComplete()" mjFillContainer></mj-single-record>`
|
|
71
73
|
}]
|
|
72
74
|
}], null, null); })();
|
|
73
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityRecordResource, { className: "EntityRecordResource", filePath: "src/lib/resource-wrappers/record-resource.component.ts", lineNumber:
|
|
75
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityRecordResource, { className: "EntityRecordResource", filePath: "src/lib/resource-wrappers/record-resource.component.ts", lineNumber: 15 }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/report-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,kBAAkB,SAEjC;AAED,qBAKa,cAAe,SAAQ,qBAAsB,YAAW,MAAM;IACvE,QAAQ,IAAI,IAAI;IAGV,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAJxD,cAAc;2CAAd,cAAc;
|
|
1
|
+
{"version":3,"file":"report-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/report-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,kBAAkB,SAEjC;AAED,qBAKa,cAAe,SAAQ,qBAAsB,YAAW,MAAM;IACvE,QAAQ,IAAI,IAAI;IAGV,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAJxD,cAAc;2CAAd,cAAc;CAU1B"}
|
|
@@ -16,7 +16,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
16
16
|
import { Component } from '@angular/core';
|
|
17
17
|
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
18
18
|
import { RegisterClass } from '@memberjunction/global';
|
|
19
|
-
import { Metadata } from '@memberjunction/core';
|
|
19
|
+
import { CompositeKey, Metadata } from '@memberjunction/core';
|
|
20
20
|
import * as i0 from "@angular/core";
|
|
21
21
|
import * as i1 from "../single-report/single-report.component";
|
|
22
22
|
export function LoadReportResource() {
|
|
@@ -28,7 +28,8 @@ let ReportResource = class ReportResource extends BaseResourceComponent {
|
|
|
28
28
|
GetResourceDisplayName(data) {
|
|
29
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
30
|
const md = new Metadata();
|
|
31
|
-
|
|
31
|
+
let compositeKey = new CompositeKey([{ FieldName: "ID", Value: data.ResourceRecordID }]);
|
|
32
|
+
const name = yield md.GetEntityRecordName('Reports', compositeKey);
|
|
32
33
|
return `${name ? name : 'Report ID: ' + data.ResourceRecordID}`;
|
|
33
34
|
});
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/view-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,gBAAgB,SAE/B;AAED,qBAUa,gBAAiB,SAAQ,qBAAqB;IACjD,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCADxD,gBAAgB;2CAAhB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"view-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/view-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,gBAAgB,SAE/B;AAED,qBAUa,gBAAiB,SAAQ,qBAAqB;IACjD,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCADxD,gBAAgB;2CAAhB,gBAAgB;CAc5B"}
|
|
@@ -16,7 +16,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
16
16
|
import { Component } from '@angular/core';
|
|
17
17
|
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
18
18
|
import { RegisterClass } from '@memberjunction/global';
|
|
19
|
-
import { Metadata } from '@memberjunction/core';
|
|
19
|
+
import { CompositeKey, Metadata } from '@memberjunction/core';
|
|
20
20
|
import * as i0 from "@angular/core";
|
|
21
21
|
import * as i1 from "../single-view/single-view.component";
|
|
22
22
|
export function LoadViewResource() {
|
|
@@ -28,7 +28,8 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
28
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
29
|
const md = new Metadata();
|
|
30
30
|
if (data.ResourceRecordID > 0) {
|
|
31
|
-
|
|
31
|
+
let compositeKey = new CompositeKey([{ FieldName: "ID", Value: data.ResourceRecordID }]);
|
|
32
|
+
const name = yield md.GetEntityRecordName('User Views', compositeKey);
|
|
32
33
|
return name ? name : 'View: ' + data.ResourceRecordID;
|
|
33
34
|
}
|
|
34
35
|
else if (((_a = data.Configuration) === null || _a === void 0 ? void 0 : _a.Entity) && ((_b = data.Configuration) === null || _b === void 0 ? void 0 : _b.Entity.length) > 0) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { AfterViewInit, EventEmitter, OnInit } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute } from '@angular/router';
|
|
3
|
-
import {
|
|
3
|
+
import { CompositeKey } from '@memberjunction/core';
|
|
4
4
|
import { Container } from '@memberjunction/ng-container-directives';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class SingleRecordComponent implements OnInit, AfterViewInit {
|
|
7
7
|
private route;
|
|
8
8
|
formContainer: Container;
|
|
9
|
-
|
|
9
|
+
CompositeKey: CompositeKey;
|
|
10
10
|
entityName: string | null;
|
|
11
11
|
loadComplete: EventEmitter<any>;
|
|
12
12
|
constructor(route: ActivatedRoute);
|
|
@@ -15,8 +15,8 @@ export declare class SingleRecordComponent implements OnInit, AfterViewInit {
|
|
|
15
15
|
loading: boolean;
|
|
16
16
|
ngOnInit(): void;
|
|
17
17
|
ngAfterViewInit(): void;
|
|
18
|
-
LoadForm(
|
|
18
|
+
LoadForm(compositeKey: CompositeKey, entityName: string): Promise<void>;
|
|
19
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<SingleRecordComponent, never>;
|
|
20
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SingleRecordComponent, "mj-single-record", never, { "
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SingleRecordComponent, "mj-single-record", never, { "CompositeKey": { "alias": "CompositeKey"; "required": false; }; "entityName": { "alias": "entityName"; "required": false; }; }, { "loadComplete": "loadComplete"; }, never, never, false, never>;
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=single-record.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-record.component.d.ts","sourceRoot":"","sources":["../../../src/lib/single-record/single-record.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,YAAY,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"single-record.component.d.ts","sourceRoot":"","sources":["../../../src/lib/single-record/single-record.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,YAAY,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAA0B,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;;AAIpE,qBAKa,qBAAsB,YAAW,MAAM,EAAE,aAAa;IAOpD,OAAO,CAAC,KAAK;IANY,aAAa,EAAG,SAAS,CAAC;IAChD,YAAY,EAAE,YAAY,CAAsB;IAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAM;IAE9B,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;gBAEtD,KAAK,EAAE,cAAc;IAInC,cAAc,EAAE,MAAM,CAAK;IAC3B,cAAc,EAAE,OAAO,CAAS;IAChC,OAAO,EAAE,OAAO,CAAQ;IAE/B,QAAQ,IAAI,IAAI;IAGhB,eAAe;IAIT,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM;yCAtBlD,qBAAqB;2CAArB,qBAAqB;CAyDjC"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
11
|
-
import { Metadata } from '@memberjunction/core';
|
|
11
|
+
import { Metadata, CompositeKey } from '@memberjunction/core';
|
|
12
12
|
import { MJGlobal } from '@memberjunction/global';
|
|
13
13
|
import { Container } from '@memberjunction/ng-container-directives';
|
|
14
14
|
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
@@ -24,7 +24,7 @@ function SingleRecordComponent_ng_template_1_Template(rf, ctx) { }
|
|
|
24
24
|
export class SingleRecordComponent {
|
|
25
25
|
constructor(route) {
|
|
26
26
|
this.route = route;
|
|
27
|
-
this.
|
|
27
|
+
this.CompositeKey = new CompositeKey();
|
|
28
28
|
this.entityName = '';
|
|
29
29
|
this.loadComplete = new EventEmitter();
|
|
30
30
|
this.appDescription = '';
|
|
@@ -34,14 +34,14 @@ export class SingleRecordComponent {
|
|
|
34
34
|
ngOnInit() {
|
|
35
35
|
}
|
|
36
36
|
ngAfterViewInit() {
|
|
37
|
-
this.LoadForm(this.
|
|
37
|
+
this.LoadForm(this.CompositeKey, this.entityName);
|
|
38
38
|
}
|
|
39
|
-
LoadForm(
|
|
39
|
+
LoadForm(compositeKey, entityName) {
|
|
40
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
41
|
// Perform any necessary actions with the ViewID, such as fetching data
|
|
42
|
-
if (
|
|
42
|
+
if (compositeKey.KeyValuePairs && entityName) {
|
|
43
43
|
this.entityName = entityName;
|
|
44
|
-
this.
|
|
44
|
+
this.CompositeKey = compositeKey;
|
|
45
45
|
const formReg = MJGlobal.Instance.ClassFactory.GetRegistration(BaseFormComponent, entityName);
|
|
46
46
|
const md = new Metadata();
|
|
47
47
|
const entity = md.Entities.find(e => {
|
|
@@ -51,7 +51,7 @@ export class SingleRecordComponent {
|
|
|
51
51
|
if (formReg) {
|
|
52
52
|
const record = yield md.GetEntityObject(entityName);
|
|
53
53
|
if (record) {
|
|
54
|
-
yield record.InnerLoad(
|
|
54
|
+
yield record.InnerLoad(compositeKey);
|
|
55
55
|
const viewContainerRef = this.formContainer.viewContainerRef;
|
|
56
56
|
viewContainerRef.clear();
|
|
57
57
|
const componentRef = viewContainerRef.createComponent(formReg.SubClass);
|
|
@@ -61,7 +61,7 @@ export class SingleRecordComponent {
|
|
|
61
61
|
this.loadComplete.emit();
|
|
62
62
|
}
|
|
63
63
|
else
|
|
64
|
-
throw new Error(`Unable to load entity ${entityName} with primary key values: ${
|
|
64
|
+
throw new Error(`Unable to load entity ${entityName} with primary key values: ${compositeKey.ToString()}`);
|
|
65
65
|
}
|
|
66
66
|
this.loading = false;
|
|
67
67
|
}
|
|
@@ -74,7 +74,7 @@ SingleRecordComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Singl
|
|
|
74
74
|
} if (rf & 2) {
|
|
75
75
|
let _t;
|
|
76
76
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.formContainer = _t.first);
|
|
77
|
-
} }, inputs: {
|
|
77
|
+
} }, inputs: { CompositeKey: "CompositeKey", entityName: "entityName" }, outputs: { loadComplete: "loadComplete" }, decls: 2, vars: 1, consts: [["type", "converging-spinner", 4, "ngIf"], ["mjContainer", ""], ["type", "converging-spinner"]], template: function SingleRecordComponent_Template(rf, ctx) { if (rf & 1) {
|
|
78
78
|
i0.ɵɵtemplate(0, SingleRecordComponent_kendo_loader_0_Template, 1, 0, "kendo-loader", 0)(1, SingleRecordComponent_ng_template_1_Template, 0, 0, "ng-template", 1);
|
|
79
79
|
} if (rf & 2) {
|
|
80
80
|
i0.ɵɵproperty("ngIf", ctx.loading);
|
|
@@ -85,7 +85,7 @@ SingleRecordComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Singl
|
|
|
85
85
|
}], () => [{ type: i1.ActivatedRoute }], { formContainer: [{
|
|
86
86
|
type: ViewChild,
|
|
87
87
|
args: [Container, { static: true }]
|
|
88
|
-
}],
|
|
88
|
+
}], CompositeKey: [{
|
|
89
89
|
type: Input
|
|
90
90
|
}], entityName: [{
|
|
91
91
|
type: Input
|
|
@@ -13,7 +13,6 @@ import { Metadata, LogError } from '@memberjunction/core';
|
|
|
13
13
|
import { distinctUntilChanged, Subject } from "rxjs";
|
|
14
14
|
import { debounceTime } from "rxjs/operators";
|
|
15
15
|
import { ViewInfo } from '@memberjunction/core-entities';
|
|
16
|
-
import { SharedService } from '@memberjunction/ng-shared';
|
|
17
16
|
import * as i0 from "@angular/core";
|
|
18
17
|
import * as i1 from "@angular/router";
|
|
19
18
|
import * as i2 from "@memberjunction/ng-shared";
|
|
@@ -103,7 +102,7 @@ export class SingleViewComponent {
|
|
|
103
102
|
handleRowClick(args) {
|
|
104
103
|
return __awaiter(this, void 0, void 0, function* () {
|
|
105
104
|
// tell the router to navigate instead of raising an event directly. router will in turn handle raising the event as required
|
|
106
|
-
this.router.navigate(['resource', 'record',
|
|
105
|
+
this.router.navigate(['resource', 'record', args.CompositeKey.ToURLSegment()], { queryParams: { Entity: args.entityName } });
|
|
107
106
|
});
|
|
108
107
|
}
|
|
109
108
|
LoadView(viewInfo) {
|
package/dist/module.d.ts
CHANGED
|
@@ -36,39 +36,40 @@ import * as i34 from "./lib/user-notifications/user-notifications.component";
|
|
|
36
36
|
import * as i35 from "./lib/resource-wrappers/query-resource.component";
|
|
37
37
|
import * as i36 from "./lib/expansion-panel-component/expansion-panel-component";
|
|
38
38
|
import * as i37 from "./lib/app-view/application-view.component";
|
|
39
|
-
import * as i38 from "
|
|
40
|
-
import * as i39 from "@angular/
|
|
41
|
-
import * as i40 from "@angular/
|
|
42
|
-
import * as i41 from "@
|
|
43
|
-
import * as i42 from "@progress/kendo-angular-
|
|
44
|
-
import * as i43 from "@progress/kendo-angular-
|
|
45
|
-
import * as i44 from "@
|
|
46
|
-
import * as i45 from "@
|
|
47
|
-
import * as i46 from "@progress/kendo-angular-
|
|
48
|
-
import * as i47 from "@progress/kendo-angular-
|
|
49
|
-
import * as i48 from "@progress/kendo-angular-
|
|
50
|
-
import * as i49 from "@progress/kendo-angular-
|
|
51
|
-
import * as i50 from "@progress/kendo-angular-
|
|
52
|
-
import * as i51 from "@
|
|
53
|
-
import * as i52 from "@memberjunction/ng-
|
|
54
|
-
import * as i53 from "@memberjunction/ng-
|
|
55
|
-
import * as i54 from "@
|
|
56
|
-
import * as i55 from "@progress/kendo-angular-
|
|
57
|
-
import * as i56 from "@
|
|
58
|
-
import * as i57 from "@memberjunction/ng-
|
|
59
|
-
import * as i58 from "@
|
|
60
|
-
import * as i59 from "@progress/kendo-angular-
|
|
61
|
-
import * as i60 from "@progress/kendo-angular-
|
|
62
|
-
import * as i61 from "@
|
|
63
|
-
import * as i62 from "@memberjunction/ng-
|
|
64
|
-
import * as i63 from "@memberjunction/ng-
|
|
65
|
-
import * as i64 from "@memberjunction/ng-
|
|
66
|
-
import * as i65 from "@memberjunction/ng-
|
|
67
|
-
import * as i66 from "@memberjunction/ng-
|
|
68
|
-
import * as i67 from "@memberjunction/ng-
|
|
39
|
+
import * as i38 from "./app-routing.module";
|
|
40
|
+
import * as i39 from "@angular/common";
|
|
41
|
+
import * as i40 from "@angular/forms";
|
|
42
|
+
import * as i41 from "@angular/router";
|
|
43
|
+
import * as i42 from "@progress/kendo-angular-grid";
|
|
44
|
+
import * as i43 from "@progress/kendo-angular-dialog";
|
|
45
|
+
import * as i44 from "@progress/kendo-angular-excel-export";
|
|
46
|
+
import * as i45 from "@memberjunction/ng-compare-records";
|
|
47
|
+
import * as i46 from "@progress/kendo-angular-indicators";
|
|
48
|
+
import * as i47 from "@progress/kendo-angular-charts";
|
|
49
|
+
import * as i48 from "@progress/kendo-angular-buttons";
|
|
50
|
+
import * as i49 from "@progress/kendo-angular-layout";
|
|
51
|
+
import * as i50 from "@progress/kendo-angular-inputs";
|
|
52
|
+
import * as i51 from "@progress/kendo-angular-label";
|
|
53
|
+
import * as i52 from "@memberjunction/ng-record-changes";
|
|
54
|
+
import * as i53 from "@memberjunction/ng-container-directives";
|
|
55
|
+
import * as i54 from "@memberjunction/ng-base-forms";
|
|
56
|
+
import * as i55 from "@progress/kendo-angular-listview";
|
|
57
|
+
import * as i56 from "@progress/kendo-angular-treeview";
|
|
58
|
+
import * as i57 from "@memberjunction/ng-user-view-grid";
|
|
59
|
+
import * as i58 from "@memberjunction/ng-query-grid";
|
|
60
|
+
import * as i59 from "@progress/kendo-angular-sortable";
|
|
61
|
+
import * as i60 from "@progress/kendo-angular-filter";
|
|
62
|
+
import * as i61 from "@progress/kendo-angular-dropdowns";
|
|
63
|
+
import * as i62 from "@memberjunction/ng-shared";
|
|
64
|
+
import * as i63 from "@memberjunction/ng-ask-skip";
|
|
65
|
+
import * as i64 from "@memberjunction/ng-entity-permissions";
|
|
66
|
+
import * as i65 from "@memberjunction/ng-explorer-settings";
|
|
67
|
+
import * as i66 from "@memberjunction/ng-file-storage";
|
|
68
|
+
import * as i67 from "@memberjunction/ng-user-view-properties";
|
|
69
|
+
import * as i68 from "@memberjunction/ng-tabstrip";
|
|
69
70
|
export declare class ExplorerCoreModule {
|
|
70
71
|
static ɵfac: i0.ɵɵFactoryDeclaration<ExplorerCoreModule, never>;
|
|
71
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ExplorerCoreModule, [typeof i1.FormToolbarComponent, typeof i2.SectionLoaderComponent, typeof i3.ResourceContainerComponent, typeof i4.AuthButtonComponent, typeof i5.DashboardBrowserComponent, typeof i6.DataBrowserComponent, typeof i7.GenericBrowseListComponent, typeof i8.GenericBrowserListComponent, typeof i9.HomeComponent, typeof i10.NavigationComponent, typeof i11.ReportBrowserComponent, typeof i12.QueryBrowserComponent, typeof i13.DashboardResource, typeof i14.EntityRecordResource, typeof i15.ReportResource, typeof i16.SearchResultsResource, typeof i17.UserViewResource, typeof i18.FilesComponent, typeof i19.SingleApplicationComponent, typeof i20.FavoritesComponent, typeof i21.HeaderComponent, typeof i22.JoinGridComponent, typeof i23.SingleEntityComponent, typeof i24.SingleRecordComponent, typeof i25.SingleReportComponent, typeof i26.SingleSearchResultComponent, typeof i27.SingleViewComponent, typeof i28.SingleQueryComponent, typeof i29.UserProfileComponent, typeof i30.SingleDashboardComponent, typeof i31.AddItemComponent, typeof i32.DeleteItemComponent, typeof i33.EditDashboardComponent, typeof i34.UserNotificationsComponent, typeof i35.QueryResource, typeof i36.ExpansionPanelComponent, typeof i37.ApplicationViewComponent], [typeof i38.
|
|
72
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ExplorerCoreModule, [typeof i1.FormToolbarComponent, typeof i2.SectionLoaderComponent, typeof i3.ResourceContainerComponent, typeof i4.AuthButtonComponent, typeof i5.DashboardBrowserComponent, typeof i6.DataBrowserComponent, typeof i7.GenericBrowseListComponent, typeof i8.GenericBrowserListComponent, typeof i9.HomeComponent, typeof i10.NavigationComponent, typeof i11.ReportBrowserComponent, typeof i12.QueryBrowserComponent, typeof i13.DashboardResource, typeof i14.EntityRecordResource, typeof i15.ReportResource, typeof i16.SearchResultsResource, typeof i17.UserViewResource, typeof i18.FilesComponent, typeof i19.SingleApplicationComponent, typeof i20.FavoritesComponent, typeof i21.HeaderComponent, typeof i22.JoinGridComponent, typeof i23.SingleEntityComponent, typeof i24.SingleRecordComponent, typeof i25.SingleReportComponent, typeof i26.SingleSearchResultComponent, typeof i27.SingleViewComponent, typeof i28.SingleQueryComponent, typeof i29.UserProfileComponent, typeof i30.SingleDashboardComponent, typeof i31.AddItemComponent, typeof i32.DeleteItemComponent, typeof i33.EditDashboardComponent, typeof i34.UserNotificationsComponent, typeof i35.QueryResource, typeof i36.ExpansionPanelComponent, typeof i37.ApplicationViewComponent], [typeof i38.AppRoutingModule, typeof i39.CommonModule, typeof i40.FormsModule, typeof i40.ReactiveFormsModule, typeof i41.RouterModule, typeof i42.GridModule, typeof i43.DialogsModule, typeof i44.ExcelExportModule, typeof i45.CompareRecordsModule, typeof i46.IndicatorsModule, typeof i39.CommonModule, typeof i40.FormsModule, typeof i42.GridModule, typeof i47.ChartsModule, typeof i48.ButtonsModule, typeof i49.TabStripModule, typeof i42.ExcelModule, typeof i42.PDFModule, typeof i46.IndicatorsModule, typeof i43.DialogsModule, typeof i50.InputsModule, typeof i51.LabelModule, typeof i45.CompareRecordsModule, typeof i52.RecordChangesModule, typeof i53.ContainerDirectivesModule, typeof i54.BaseFormsModule, typeof i55.ListViewModule, typeof i56.TreeViewModule, typeof i57.UserViewGridModule, typeof i58.QueryGridModule, typeof i59.SortableModule, typeof i49.LayoutModule, typeof i60.FilterModule, typeof i61.DropDownsModule, typeof i62.MemberJunctionSharedModule, typeof i63.AskSkipModule, typeof i64.EntityPermissionsModule, typeof i65.ExplorerSettingsModule, typeof i66.FileStorageModule, typeof i67.UserViewPropertiesDialogModule, typeof i68.MJTabStripModule], [typeof i1.FormToolbarComponent, typeof i2.SectionLoaderComponent, typeof i3.ResourceContainerComponent, typeof i4.AuthButtonComponent, typeof i5.DashboardBrowserComponent, typeof i6.DataBrowserComponent, typeof i7.GenericBrowseListComponent, typeof i8.GenericBrowserListComponent, typeof i9.HomeComponent, typeof i10.NavigationComponent, typeof i11.ReportBrowserComponent, typeof i13.DashboardResource, typeof i14.EntityRecordResource, typeof i15.ReportResource, typeof i16.SearchResultsResource, typeof i17.UserViewResource, typeof i19.SingleApplicationComponent, typeof i20.FavoritesComponent, typeof i21.HeaderComponent, typeof i22.JoinGridComponent, typeof i23.SingleEntityComponent, typeof i24.SingleRecordComponent, typeof i25.SingleReportComponent, typeof i26.SingleSearchResultComponent, typeof i27.SingleViewComponent, typeof i29.UserProfileComponent, typeof i30.SingleDashboardComponent, typeof i31.AddItemComponent, typeof i32.DeleteItemComponent, typeof i33.EditDashboardComponent, typeof i34.UserNotificationsComponent, typeof i36.ExpansionPanelComponent, typeof i37.ApplicationViewComponent]>;
|
|
72
73
|
static ɵinj: i0.ɵɵInjectorDeclaration<ExplorerCoreModule>;
|
|
73
74
|
}
|
|
74
75
|
//# sourceMappingURL=module.d.ts.map
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,qBAwHa,kBAAkB;yCAAlB,kBAAkB;0CAAlB,kBAAkB;0CAAlB,kBAAkB;CAAG"}
|
package/dist/module.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { RouterModule, RouteReuseStrategy } from '@angular/router';
|
|
5
5
|
// Kendo UI Angular imports
|
|
6
6
|
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
7
7
|
import { ChartsModule } from '@progress/kendo-angular-charts';
|
|
8
|
-
import { DialogsModule } from
|
|
8
|
+
import { DialogsModule } from '@progress/kendo-angular-dialog';
|
|
9
9
|
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
|
10
10
|
import { ExcelExportModule } from '@progress/kendo-angular-excel-export';
|
|
11
|
-
import { FilterModule } from
|
|
11
|
+
import { FilterModule } from '@progress/kendo-angular-filter';
|
|
12
12
|
import { ExcelModule, GridModule, PDFModule } from '@progress/kendo-angular-grid';
|
|
13
13
|
import { IndicatorsModule } from '@progress/kendo-angular-indicators';
|
|
14
14
|
import { InputsModule } from '@progress/kendo-angular-inputs';
|
|
15
15
|
import { LabelModule } from '@progress/kendo-angular-label';
|
|
16
16
|
import { LayoutModule, TabStripModule } from '@progress/kendo-angular-layout';
|
|
17
17
|
import { ListViewModule } from '@progress/kendo-angular-listview';
|
|
18
|
-
import { SortableModule } from
|
|
19
|
-
import { TreeViewModule } from
|
|
18
|
+
import { SortableModule } from '@progress/kendo-angular-sortable';
|
|
19
|
+
import { TreeViewModule } from '@progress/kendo-angular-treeview';
|
|
20
20
|
// MJ
|
|
21
21
|
import { CompareRecordsModule } from '@memberjunction/ng-compare-records';
|
|
22
22
|
import { ContainerDirectivesModule } from '@memberjunction/ng-container-directives';
|
|
@@ -69,6 +69,7 @@ import { UserProfileComponent } from './lib/user-profile/user-profile.component'
|
|
|
69
69
|
import { ExpansionPanelComponent } from './lib/expansion-panel-component/expansion-panel-component';
|
|
70
70
|
import { ApplicationViewComponent } from './lib/app-view/application-view.component';
|
|
71
71
|
import { UserViewPropertiesDialogModule } from '@memberjunction/ng-user-view-properties';
|
|
72
|
+
import { AppRoutingModule, CustomReuseStrategy } from './app-routing.module';
|
|
72
73
|
import * as i0 from "@angular/core";
|
|
73
74
|
import * as i1 from "@angular/common";
|
|
74
75
|
import * as i2 from "@progress/kendo-angular-buttons";
|
|
@@ -77,7 +78,8 @@ export class ExplorerCoreModule {
|
|
|
77
78
|
}
|
|
78
79
|
ExplorerCoreModule.ɵfac = function ExplorerCoreModule_Factory(t) { return new (t || ExplorerCoreModule)(); };
|
|
79
80
|
ExplorerCoreModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: ExplorerCoreModule });
|
|
80
|
-
ExplorerCoreModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [
|
|
81
|
+
ExplorerCoreModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [{ provide: RouteReuseStrategy, useClass: CustomReuseStrategy }], imports: [AppRoutingModule,
|
|
82
|
+
CommonModule,
|
|
81
83
|
FormsModule,
|
|
82
84
|
ReactiveFormsModule,
|
|
83
85
|
RouterModule,
|
|
@@ -157,9 +159,10 @@ ExplorerCoreModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Commo
|
|
|
157
159
|
UserNotificationsComponent,
|
|
158
160
|
QueryResource,
|
|
159
161
|
ExpansionPanelComponent,
|
|
160
|
-
ApplicationViewComponent
|
|
162
|
+
ApplicationViewComponent,
|
|
161
163
|
],
|
|
162
164
|
imports: [
|
|
165
|
+
AppRoutingModule,
|
|
163
166
|
CommonModule,
|
|
164
167
|
FormsModule,
|
|
165
168
|
ReactiveFormsModule,
|
|
@@ -199,7 +202,7 @@ ExplorerCoreModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Commo
|
|
|
199
202
|
ExplorerSettingsModule,
|
|
200
203
|
FileStorageModule,
|
|
201
204
|
UserViewPropertiesDialogModule,
|
|
202
|
-
MJTabStripModule
|
|
205
|
+
MJTabStripModule,
|
|
203
206
|
],
|
|
204
207
|
exports: [
|
|
205
208
|
FormToolbarComponent,
|
|
@@ -234,8 +237,9 @@ ExplorerCoreModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Commo
|
|
|
234
237
|
EditDashboardComponent,
|
|
235
238
|
UserNotificationsComponent,
|
|
236
239
|
ExpansionPanelComponent,
|
|
237
|
-
ApplicationViewComponent
|
|
240
|
+
ApplicationViewComponent,
|
|
238
241
|
],
|
|
242
|
+
providers: [{ provide: RouteReuseStrategy, useClass: CustomReuseStrategy }],
|
|
239
243
|
}]
|
|
240
244
|
}], null, null); })();
|
|
241
245
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(ExplorerCoreModule, { declarations: [FormToolbarComponent,
|
|
@@ -274,7 +278,8 @@ ExplorerCoreModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Commo
|
|
|
274
278
|
UserNotificationsComponent,
|
|
275
279
|
QueryResource,
|
|
276
280
|
ExpansionPanelComponent,
|
|
277
|
-
ApplicationViewComponent], imports: [
|
|
281
|
+
ApplicationViewComponent], imports: [AppRoutingModule,
|
|
282
|
+
CommonModule,
|
|
278
283
|
FormsModule,
|
|
279
284
|
ReactiveFormsModule,
|
|
280
285
|
RouterModule,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-explorer-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "MemberJunction Explorer: Core Angular Components",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -26,21 +26,21 @@
|
|
|
26
26
|
"@angular/router": "~17.2.2"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@memberjunction/global": "~1.
|
|
30
|
-
"@memberjunction/core": "~1.
|
|
31
|
-
"@memberjunction/ng-compare-records": "~1.
|
|
32
|
-
"@memberjunction/ng-file-storage": "~1.
|
|
33
|
-
"@memberjunction/ng-record-changes": "~1.
|
|
34
|
-
"@memberjunction/ng-container-directives": "~1.
|
|
35
|
-
"@memberjunction/ng-user-view-grid": "~1.
|
|
36
|
-
"@memberjunction/ng-query-grid": "~1.
|
|
37
|
-
"@memberjunction/ng-user-view-properties": "~1.
|
|
38
|
-
"@memberjunction/ng-shared": "~1.
|
|
39
|
-
"@memberjunction/ng-tabstrip": "~1.
|
|
40
|
-
"@memberjunction/ng-ask-skip": "~1.
|
|
41
|
-
"@memberjunction/ng-auth-services": "~1.
|
|
42
|
-
"@memberjunction/ng-explorer-settings": "~1.
|
|
43
|
-
"@memberjunction/ng-base-forms": "~1.
|
|
29
|
+
"@memberjunction/global": "~1.3.1",
|
|
30
|
+
"@memberjunction/core": "~1.3.1",
|
|
31
|
+
"@memberjunction/ng-compare-records": "~1.3.1",
|
|
32
|
+
"@memberjunction/ng-file-storage": "~1.3.1",
|
|
33
|
+
"@memberjunction/ng-record-changes": "~1.3.1",
|
|
34
|
+
"@memberjunction/ng-container-directives": "~1.3.1",
|
|
35
|
+
"@memberjunction/ng-user-view-grid": "~1.3.1",
|
|
36
|
+
"@memberjunction/ng-query-grid": "~1.3.1",
|
|
37
|
+
"@memberjunction/ng-user-view-properties": "~1.3.1",
|
|
38
|
+
"@memberjunction/ng-shared": "~1.3.1",
|
|
39
|
+
"@memberjunction/ng-tabstrip": "~1.3.1",
|
|
40
|
+
"@memberjunction/ng-ask-skip": "~1.3.1",
|
|
41
|
+
"@memberjunction/ng-auth-services": "~1.3.1",
|
|
42
|
+
"@memberjunction/ng-explorer-settings": "~1.3.1",
|
|
43
|
+
"@memberjunction/ng-base-forms": "~1.3.1",
|
|
44
44
|
"@progress/kendo-angular-grid": "~15.1.0",
|
|
45
45
|
"@progress/kendo-angular-buttons": "~15.1.0",
|
|
46
46
|
"@progress/kendo-angular-listview": "~15.1.0",
|