@memberjunction/ng-explorer-core 1.8.1 → 2.1.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.
Files changed (56) hide show
  1. package/dist/app-routing.module.d.ts +4 -0
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +60 -3
  4. package/dist/generic/Events.types.d.ts +13 -0
  5. package/dist/generic/Events.types.d.ts.map +1 -1
  6. package/dist/generic/Events.types.js +6 -0
  7. package/dist/generic/Item.types.d.ts +5 -5
  8. package/dist/lib/app-view/application-view.component.d.ts +4 -2
  9. package/dist/lib/app-view/application-view.component.d.ts.map +1 -1
  10. package/dist/lib/app-view/application-view.component.js +31 -33
  11. package/dist/lib/base-browser-component/base-browser-component.d.ts +2 -1
  12. package/dist/lib/base-browser-component/base-browser-component.d.ts.map +1 -1
  13. package/dist/lib/base-browser-component/base-browser-component.js +7 -5
  14. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts +3 -0
  15. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts.map +1 -1
  16. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +21 -6
  17. package/dist/lib/data-browser-component/data-browser.component.d.ts +2 -2
  18. package/dist/lib/data-browser-component/data-browser.component.d.ts.map +1 -1
  19. package/dist/lib/data-browser-component/data-browser.component.js +23 -9
  20. package/dist/lib/expansion-panel-component/expansion-panel-component.js +4 -4
  21. package/dist/lib/favorites/favorites.component.d.ts.map +1 -1
  22. package/dist/lib/favorites/favorites.component.js +11 -4
  23. package/dist/lib/files/files.component.d.ts +3 -1
  24. package/dist/lib/files/files.component.d.ts.map +1 -1
  25. package/dist/lib/files/files.component.js +20 -5
  26. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +9 -5
  27. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +1 -1
  28. package/dist/lib/generic-browser-list/generic-browser-list.component.js +21 -21
  29. package/dist/lib/header/header.component.d.ts.map +1 -1
  30. package/dist/lib/header/header.component.js +3 -13
  31. package/dist/lib/home-component/home.component.d.ts +5 -2
  32. package/dist/lib/home-component/home.component.d.ts.map +1 -1
  33. package/dist/lib/home-component/home.component.js +49 -51
  34. package/dist/lib/list-view/list-view.component.d.ts.map +1 -1
  35. package/dist/lib/list-view/list-view.component.js +15 -3
  36. package/dist/lib/navigation/navigation.component.d.ts +2 -2
  37. package/dist/lib/navigation/navigation.component.d.ts.map +1 -1
  38. package/dist/lib/navigation/navigation.component.js +55 -27
  39. package/dist/lib/query-browser-component/query-browser.component.d.ts.map +1 -1
  40. package/dist/lib/query-browser-component/query-browser.component.js +17 -5
  41. package/dist/lib/report-browser-component/report-browser.component.d.ts.map +1 -1
  42. package/dist/lib/report-browser-component/report-browser.component.js +15 -3
  43. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  44. package/dist/lib/resource-wrappers/view-resource.component.js +4 -3
  45. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +1 -1
  46. package/dist/lib/single-dashboard/single-dashboard.component.js +1 -1
  47. package/dist/lib/single-list-detail/single-list-detail.component.d.ts +14 -4
  48. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  49. package/dist/lib/single-list-detail/single-list-detail.component.js +232 -120
  50. package/dist/lib/single-query/single-query.component.d.ts +1 -1
  51. package/dist/lib/single-report/single-report.component.d.ts +1 -1
  52. package/dist/lib/single-search-result/single-search-result.component.js +1 -1
  53. package/dist/lib/single-view/single-view.component.d.ts +1 -1
  54. package/dist/lib/single-view/single-view.component.js +1 -1
  55. package/dist/lib/user-notifications/user-notifications.component.js +2 -2
  56. package/package.json +18 -18
@@ -27,6 +27,10 @@ interface DetachedRouteHandleExt extends DetachedRouteHandle {
27
27
  componentRef: ComponentRef<any>;
28
28
  }
29
29
  export declare class AppRoutingModule {
30
+ private router;
31
+ constructor(router: Router);
32
+ loadDynamicRoutes(): void;
33
+ protected innerLoadDynamicRoutes(): Promise<void>;
30
34
  static ɵfac: i0.ɵɵFactoryDeclaration<AppRoutingModule, never>;
31
35
  static ɵmod: i0.ɵɵNgModuleDeclaration<AppRoutingModule, never, [typeof i1.RouterModule], [typeof i1.RouterModule]>;
32
36
  static ɵinj: i0.ɵɵInjectorDeclaration<AppRoutingModule>;
@@ -1 +1 @@
1
- {"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAwB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,EAAoD,MAAM,iBAAiB,CAAC;AAoBvK,OAAO,EAAc,aAAa,EAAgB,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;;AAE1E,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAA;KAAE,CAAM;IAGpE,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAMpD,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI;IAYjF,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAUpD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,IAAI;IAgBnE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO;IAIvF,OAAO,CAAC,QAAQ;CAUjB;AAED,qBAGa,gBAAiB,YAAW,OAAO,CAAC,IAAI,CAAC;IACxC,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,MAAM;gBAA5C,aAAa,EAAE,aAAa,EAAU,MAAM,EAAE,MAAM;IAexE,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;yCAhB7D,gBAAgB;6CAAhB,gBAAgB;CAsF5B;AAmDD,UAAU,sBAAuB,SAAQ,mBAAmB;IAC1D,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;CACjC;AAED,qBAKa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
1
+ {"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAwB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,EAAoD,MAAM,iBAAiB,CAAC;AAoBvK,OAAO,EAAc,aAAa,EAAyC,MAAM,2BAA2B,CAAC;AAC7G,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;;AAG1E,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAA;KAAE,CAAM;IAGpE,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAMpD,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI;IAYjF,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAUpD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,IAAI;IAgBnE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO;IAIvF,OAAO,CAAC,QAAQ;CAUjB;AAED,qBAGa,gBAAiB,YAAW,OAAO,CAAC,IAAI,CAAC;IACxC,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,MAAM;gBAA5C,aAAa,EAAE,aAAa,EAAU,MAAM,EAAE,MAAM;IAexE,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;yCAhB7D,gBAAgB;6CAAhB,gBAAgB;CAsF5B;AAmDD,UAAU,sBAAuB,SAAQ,mBAAmB;IAC1D,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;CACjC;AAED,qBAIa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAIlC,iBAAiB;cAWD,sBAAsB;yCAhB3B,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAoD5B"}
@@ -1,3 +1,12 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { Injectable, NgModule } from '@angular/core';
2
11
  import { RouterModule } from '@angular/router';
3
12
  import { SingleApplicationComponent, SingleEntityComponent, SingleRecordComponent, HomeComponent, UserNotificationsComponent, DataBrowserComponent, ReportBrowserComponent, DashboardBrowserComponent, AuthGuardService as AuthGuard, FilesComponent, QueryBrowserComponent, ListViewComponent, SingleListDetailComponent } from './public-api';
@@ -5,7 +14,7 @@ import { SettingsComponent } from '@memberjunction/ng-explorer-settings';
5
14
  import { LogError, Metadata } from '@memberjunction/core';
6
15
  import { MJEventType, MJGlobal } from '@memberjunction/global';
7
16
  import { SkipChatComponent } from '@memberjunction/ng-ask-skip';
8
- import { EventCodes, ResourceData } from '@memberjunction/ng-shared';
17
+ import { EventCodes, ResourceData, BaseNavigationComponent } from '@memberjunction/ng-shared';
9
18
  import * as i0 from "@angular/core";
10
19
  import * as i1 from "@memberjunction/ng-shared";
11
20
  import * as i2 from "@angular/router";
@@ -212,8 +221,56 @@ const routes = [
212
221
  },
213
222
  ];
214
223
  export class AppRoutingModule {
224
+ constructor(router) {
225
+ this.router = router;
226
+ this.loadDynamicRoutes();
227
+ }
228
+ loadDynamicRoutes() {
229
+ MJGlobal.Instance.GetEventListener(true) // true gets us replay of past events so we can "catch up" as needed
230
+ .subscribe((event) => {
231
+ // event handler
232
+ switch (event.event) {
233
+ case MJEventType.LoggedIn:
234
+ this.innerLoadDynamicRoutes();
235
+ }
236
+ });
237
+ }
238
+ innerLoadDynamicRoutes() {
239
+ return __awaiter(this, void 0, void 0, function* () {
240
+ // gets called after we're logged in
241
+ const md = new Metadata();
242
+ const dynamicRoutes = md.VisibleExplorerNavigationItems.map(item => {
243
+ const registration = MJGlobal.Instance.ClassFactory.GetRegistration(BaseNavigationComponent, item.Name);
244
+ if (registration) {
245
+ // remove the leading slash from the route if it exists
246
+ const route = item.Route.startsWith('/') ? item.Route.substring(1) : item.Route;
247
+ return {
248
+ path: route,
249
+ component: registration.SubClass,
250
+ canActivate: [AuthGuard],
251
+ };
252
+ }
253
+ else {
254
+ throw new Error(`No registration found for Explorer Navigation Item: ${item.Name}`);
255
+ }
256
+ });
257
+ // Find and remove the wildcard route
258
+ const wildcardRouteIndex = routes.findIndex(route => { var _a; return ((_a = route.path) === null || _a === void 0 ? void 0 : _a.trim()) === '**'; });
259
+ const wildcardRoute = routes[wildcardRouteIndex];
260
+ if (wildcardRouteIndex > -1) {
261
+ routes.splice(wildcardRouteIndex, 1);
262
+ }
263
+ // create a combined routes array and make sure that we filter out any dynamic routes that are ALREADY in the router config
264
+ const newCombinedRoutes = [...routes, ...dynamicRoutes.filter(route => !routes.some(r => { var _a, _b; return ((_a = r.path) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase()) === ((_b = route.path) === null || _b === void 0 ? void 0 : _b.trim().toLowerCase()); }))];
265
+ // Re-add the wildcard route at the end
266
+ if (wildcardRoute) {
267
+ newCombinedRoutes.push(wildcardRoute);
268
+ }
269
+ this.router.resetConfig(newCombinedRoutes);
270
+ });
271
+ }
215
272
  }
216
- AppRoutingModule.ɵfac = function AppRoutingModule_Factory(t) { return new (t || AppRoutingModule)(); };
273
+ AppRoutingModule.ɵfac = function AppRoutingModule_Factory(t) { return new (t || AppRoutingModule)(i0.ɵɵinject(i2.Router)); };
217
274
  AppRoutingModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AppRoutingModule });
218
275
  AppRoutingModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled' }), RouterModule] });
219
276
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppRoutingModule, [{
@@ -222,5 +279,5 @@ AppRoutingModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [RouterM
222
279
  imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled' })],
223
280
  exports: [RouterModule],
224
281
  }]
225
- }], null, null); })();
282
+ }], () => [{ type: i2.Router }], null); })();
226
283
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AppRoutingModule, { imports: [i2.RouterModule], exports: [RouterModule] }); })();
@@ -139,4 +139,17 @@ export declare class AfterUpdateItemEvent extends BaseEvent {
139
139
  Item: Item;
140
140
  constructor(item: Item);
141
141
  }
142
+ export declare class DropdownOptionClickEvent {
143
+ /**
144
+ * The text of the dropdown option that was clicked.
145
+ */
146
+ Text: string;
147
+ /**
148
+ * Signals to the source component that another component
149
+ * has handled responding to this event, and that the source
150
+ * component should do nothing.
151
+ */
152
+ Cancel: boolean;
153
+ constructor(text: string);
154
+ }
142
155
  //# sourceMappingURL=Events.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Events.types.d.ts","sourceRoot":"","sources":["../../src/generic/Events.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAE,MAAM,cAAc,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAcb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEpE,qBAAa,SAAS;IAClB;;OAEG;IACI,SAAS,EAAE,UAAU,CAAC;IAC7B;;;OAGG;IACI,MAAM,EAAE,OAAO,CAAC;gBAEX,SAAS,EAAE,UAAU;CAIpC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC/C;;OAEG;IACI,UAAU,EAAE,MAAM,CAAC;gBAEd,UAAU,EAAE,MAAM;CAIjC;AAED,qBAAa,kBAAmB,SAAQ,SAAS;IAC7C;;OAEG;IACI,QAAQ,EAAE,MAAM,CAAC;gBAEZ,QAAQ,EAAE,MAAM;CAI/B;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IAClD;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,qBAAsB,SAAQ,SAAS;IAChD;;;;;;;;;OASG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IAClD;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,qBAAsB,SAAQ,SAAS;IAChD;;;;;;;;;OASG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,mBAAoB,SAAQ,SAAS;IAC9C;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C;;;;;;OAMG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACjD;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC/C;;;;;;OAMG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACjD;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC/C;;;;;;OAMG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB"}
1
+ {"version":3,"file":"Events.types.d.ts","sourceRoot":"","sources":["../../src/generic/Events.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAE,MAAM,cAAc,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAcb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEpE,qBAAa,SAAS;IAClB;;OAEG;IACI,SAAS,EAAE,UAAU,CAAC;IAC7B;;;OAGG;IACI,MAAM,EAAE,OAAO,CAAC;gBAEX,SAAS,EAAE,UAAU;CAIpC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC/C;;OAEG;IACI,UAAU,EAAE,MAAM,CAAC;gBAEd,UAAU,EAAE,MAAM;CAIjC;AAED,qBAAa,kBAAmB,SAAQ,SAAS;IAC7C;;OAEG;IACI,QAAQ,EAAE,MAAM,CAAC;gBAEZ,QAAQ,EAAE,MAAM;CAI/B;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IAClD;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,qBAAsB,SAAQ,SAAS;IAChD;;;;;;;;;OASG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IAClD;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,qBAAsB,SAAQ,SAAS;IAChD;;;;;;;;;OASG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,mBAAoB,SAAQ,SAAS;IAC9C;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C;;;;;;OAMG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACjD;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC/C;;;;;;OAMG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACjD;;OAEG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC/C;;;;;;OAMG;IACI,IAAI,EAAE,IAAI,CAAC;gBAEN,IAAI,EAAE,IAAI;CAIzB;AAED,qBAAa,wBAAwB;IACjC;;OAEG;IACI,IAAI,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACI,MAAM,EAAE,OAAO,CAAC;gBAEX,IAAI,EAAE,MAAM;CAI3B"}
@@ -93,3 +93,9 @@ export class AfterUpdateItemEvent extends BaseEvent {
93
93
  this.Item = item;
94
94
  }
95
95
  }
96
+ export class DropdownOptionClickEvent {
97
+ constructor(text) {
98
+ this.Text = text;
99
+ this.Cancel = false;
100
+ }
101
+ }
@@ -24,14 +24,14 @@ export declare class TreeItem extends Item {
24
24
  * Report Categories, Query Categories, etc.
25
25
  */
26
26
  export declare class Folder {
27
- ID: number;
28
- ParentFolderID?: number | null;
27
+ ID: string;
28
+ ParentFolderID?: string | null;
29
29
  Name: string;
30
30
  Description: string | null;
31
- constructor(id: number, folderName: string);
31
+ constructor(id: string, folderName: string);
32
32
  }
33
33
  export declare class TreeFolder extends Folder {
34
- EntityID: number;
35
- constructor(entityID: number, id: number, folderName: string);
34
+ EntityID: string;
35
+ constructor(entityID: string, id: string, folderName: string);
36
36
  }
37
37
  //# sourceMappingURL=Item.types.d.ts.map
@@ -17,7 +17,7 @@ export declare class ApplicationViewComponent extends BaseBrowserComponent imple
17
17
  private cdr;
18
18
  entityRowRef: Element | undefined;
19
19
  viewPropertiesDialog: UserViewPropertiesDialogComponent;
20
- categoryEntityID: number;
20
+ categoryEntityID: string;
21
21
  currentlySelectedAppEntity: EntityEntity | undefined;
22
22
  AppEntitySelectionDialogVisible: boolean;
23
23
  AllAppEntities: EntityEntity[];
@@ -25,6 +25,9 @@ export declare class ApplicationViewComponent extends BaseBrowserComponent imple
25
25
  UnselectedAppEntities: EntityEntity[];
26
26
  app: ApplicationInfo | undefined;
27
27
  userApp: UserApplicationEntity | undefined;
28
+ extraDropdownOptions: {
29
+ text: string;
30
+ }[];
28
31
  constructor(router: Router, route: ActivatedRoute, location: Location, sharedService: SharedService, cdr: ChangeDetectorRef);
29
32
  ngOnInit(): Promise<void>;
30
33
  IsEntitySelected(entity: EntityEntity): boolean;
@@ -48,7 +51,6 @@ export declare class ApplicationViewComponent extends BaseBrowserComponent imple
48
51
  }): Promise<void>;
49
52
  GoToApps(event: Event): Promise<void>;
50
53
  GoHome(event: Event): Promise<void>;
51
- sortAppEntites(entities: EntityEntity[]): EntityEntity[];
52
54
  static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationViewComponent, never>;
53
55
  static ɵcmp: i0.ɵɵComponentDeclaration<ApplicationViewComponent, "mj-application-view", never, { "categoryEntityID": { "alias": "categoryEntityID"; "required": false; }; }, {}, never, never, false, never>;
54
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"application-view.component.d.ts","sourceRoot":"","sources":["../../../src/lib/app-view/application-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,EAAwB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA0C,eAAe,EAAc,MAAM,sBAAsB,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAA+B,kBAAkB,EAAkB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7K,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAU,IAAI,EAAY,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAEvF,qBAKa,wBAAyB,SAAQ,oBAAqB,YAAW,MAAM;IAenE,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,GAAG;IAdzH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oBAAoB,EAAG,iCAAiC,CAAC;IAEtE,gBAAgB,EAAG,MAAM,CAAC;IAEnC,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;IAErD,+BAA+B,EAAE,OAAO,CAAS;IACjD,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,mBAAmB,EAAE,YAAY,EAAE,CAAM;IACzC,qBAAqB,EAAE,YAAY,EAAE,CAAM;IAC3C,GAAG,EAAE,eAAe,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAAC;gBAE7B,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,QAAQ,EAAE,QAAQ,EAAU,aAAa,EAAE,aAAa,EAAU,GAAG,EAAE,iBAAiB;IAM9J,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkFxB,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAMrC,4BAA4B;IAKtB,gCAAgC,CAAC,IAAI,EAAE,OAAO;IA8DpD,wBAAwB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;cAStC,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9E,WAAW,CAAC,IAAI,EAAE,IAAI;IAc7B,eAAe,CAAC,IAAI,EAAE,qBAAqB;IAO3C,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAYzC,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,WAAW;IAKZ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI/C,aAAa,CAAC,KAAK,EAAE,kBAAkB;IAW1B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD,2BAA2B,CAAC,IAAI,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvJ,QAAQ,CAAC,KAAK,EAAE,KAAK;IAKrB,MAAM,CAAC,KAAK,EAAE,KAAK;IAMzB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;yCA5U/C,wBAAwB;2CAAxB,wBAAwB;CAuVpC"}
1
+ {"version":3,"file":"application-view.component.d.ts","sourceRoot":"","sources":["../../../src/lib/app-view/application-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,EAAwB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA0C,eAAe,EAAc,MAAM,sBAAsB,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAA+B,kBAAkB,EAAkB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7K,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAU,IAAI,EAAY,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAEvF,qBAKa,wBAAyB,SAAQ,oBAAqB,YAAW,MAAM;IAkBnE,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,GAAG;IAjBzH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oBAAoB,EAAG,iCAAiC,CAAC;IAEtE,gBAAgB,EAAG,MAAM,CAAC;IAEnC,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;IAErD,+BAA+B,EAAE,OAAO,CAAS;IACjD,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,mBAAmB,EAAE,YAAY,EAAE,CAAM;IACzC,qBAAqB,EAAE,YAAY,EAAE,CAAM;IAC3C,GAAG,EAAE,eAAe,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC3C,oBAAoB,EAAG;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAAE,CAE5C;gBAEmB,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,QAAQ,EAAE,QAAQ,EAAU,aAAa,EAAE,aAAa,EAAU,GAAG,EAAE,iBAAiB;IAM9J,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyFxB,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAMrC,4BAA4B;IAKtB,gCAAgC,CAAC,IAAI,EAAE,OAAO;IAgEpD,wBAAwB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;cAStC,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9E,WAAW,CAAC,IAAI,EAAE,IAAI;IAc7B,eAAe,CAAC,IAAI,EAAE,qBAAqB;IAO3C,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAYzC,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,WAAW;IAKZ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI/C,aAAa,CAAC,KAAK,EAAE,kBAAkB;IAW1B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD,2BAA2B,CAAC,IAAI,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvJ,QAAQ,CAAC,KAAK,EAAE,KAAK;IAKrB,MAAM,CAAC,KAAK,EAAE,KAAK;yCAlVhB,wBAAwB;2CAAxB,wBAAwB;CAuVpC"}
@@ -73,10 +73,10 @@ function ApplicationViewComponent_div_0_Conditional_26_div_0_Template(rf, ctx) {
73
73
  } if (rf & 2) {
74
74
  const ctx_r1 = i0.ɵɵnextContext(3);
75
75
  i0.ɵɵadvance();
76
- i0.ɵɵproperty("items", ctx_r1.items)("categoryEntityID", ctx_r1.categoryEntityID)("title", ctx_r1.pageTitle)("CategoryEntityName", ctx_r1.categoryEntityName)("selectedFolderID", ctx_r1.selectedFolderID)("showLoader", ctx_r1.showLoader)("viewingResource", false)("displayAsGrid", ctx_r1.displayAsGrid);
76
+ i0.ɵɵproperty("items", ctx_r1.items)("categoryEntityID", ctx_r1.categoryEntityID)("title", ctx_r1.pageTitle)("extraDropdownOptions", ctx_r1.extraDropdownOptions)("CategoryEntityName", ctx_r1.categoryEntityName)("selectedFolderID", ctx_r1.selectedFolderID)("showLoader", ctx_r1.showLoader)("viewingResource", false)("displayAsGrid", ctx_r1.displayAsGrid);
77
77
  } }
78
78
  function ApplicationViewComponent_div_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵtemplate(0, ApplicationViewComponent_div_0_Conditional_26_div_0_Template, 2, 8, "div", 25);
79
+ i0.ɵɵtemplate(0, ApplicationViewComponent_div_0_Conditional_26_div_0_Template, 2, 9, "div", 25);
80
80
  } if (rf & 2) {
81
81
  const ctx_r1 = i0.ɵɵnextContext(2);
82
82
  i0.ɵɵproperty("ngIf", ctx_r1.SelectedAppEntities.length > 0);
@@ -145,6 +145,9 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
145
145
  this.AllAppEntities = [];
146
146
  this.SelectedAppEntities = [];
147
147
  this.UnselectedAppEntities = [];
148
+ this.extraDropdownOptions = [
149
+ { text: 'View' }
150
+ ];
148
151
  this.categoryEntityName = "User View Categories";
149
152
  this.itemEntityName = "User Views";
150
153
  }
@@ -169,24 +172,31 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
169
172
  // next up we need to find the UserApplication record based on the app and the current user
170
173
  const userAppResult = yield rv.RunView({
171
174
  EntityName: "User Applications",
172
- ExtraFilter: `UserID=${md.CurrentUser.ID} AND ApplicationID=${this.app.ID}`,
175
+ ExtraFilter: `UserID='${md.CurrentUser.ID}' AND ApplicationID='${this.app.ID}'`,
173
176
  ResultType: 'entity_object'
174
177
  });
175
178
  if (!userAppResult || userAppResult.Success === false || userAppResult.Results.length === 0)
176
179
  throw new Error('User Application Record for current user and selected application not found');
177
180
  this.userApp = userAppResult.Results[0];
178
- const matches = this.app.ApplicationEntities.map(ae => md.Entities.find(e => e.ID === ae.EntityID)).filter(e => e); // filter out null entries
181
+ const matches = this.app.ApplicationEntities
182
+ .map(ae => md.Entities.find(e => e.ID === ae.EntityID))
183
+ .filter(e => e) // filter out null entries
184
+ .sort((a, b) => {
185
+ if (!a || !b) {
186
+ return 0;
187
+ }
188
+ return a.Name.localeCompare(b.Name);
189
+ }); // sort by name
179
190
  // store the entire list of POSSIBLE app entities in this list
180
191
  this.AllAppEntities = matches; // we filter out null above so this cast is safe;
181
192
  const userAppEntities = yield rv.RunView({
182
193
  EntityName: 'User Application Entities',
183
194
  ResultType: 'entity_object',
184
- ExtraFilter: `UserApplicationID = ${this.userApp.ID}`,
185
- OrderBy: 'Sequence'
195
+ ExtraFilter: `UserApplicationID = '${this.userApp.ID}'`,
196
+ OrderBy: 'Sequence, Entity'
186
197
  });
187
198
  if (userAppEntities && userAppEntities.Success) {
188
- this.SelectedAppEntities = this.AllAppEntities.filter(e => userAppEntities.Results.some(uae => uae.EntityID === e.ID));
189
- this.SelectedAppEntities = this.sortAppEntites(this.SelectedAppEntities);
199
+ this.SelectedAppEntities = userAppEntities.Results.map(uae => this.AllAppEntities.find(ae => uae.EntityID === ae.ID)).filter(val => val); // now we have our selected app entities and they're sorted properly
190
200
  this.UnselectedAppEntities = this.AllAppEntities.filter(e => !this.SelectedAppEntities.some(sa => sa.ID === e.ID));
191
201
  // special case - if we have NO user app entities and the application has entities that are marked as DefaultForNewUser=1 we will add them now
192
202
  const defaultEntities = this.app.ApplicationEntities.filter(a => a.DefaultForNewUser);
@@ -241,7 +251,7 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
241
251
  const userAppEntities = yield rv.RunView({
242
252
  EntityName: 'User Application Entities',
243
253
  ResultType: 'entity_object',
244
- ExtraFilter: `UserApplicationID = ${this.userApp.ID}`,
254
+ ExtraFilter: `UserApplicationID = '${this.userApp.ID}'`,
245
255
  OrderBy: 'Sequence'
246
256
  });
247
257
  // userAppEntities.results is the current DB state, we need to now compare it to the SelectedAppEntities array
@@ -254,15 +264,17 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
254
264
  const e = this.SelectedAppEntities[index];
255
265
  const existing = existingUserAppEntities.find(uae => uae.EntityID === e.ID);
256
266
  if (existing) {
257
- existing.Sequence = index;
258
- userAppEntitiesToSave.push(existing);
267
+ if (existing.Sequence !== index) {
268
+ existing.Sequence = index;
269
+ userAppEntitiesToSave.push(existing);
270
+ }
259
271
  }
260
272
  else {
261
273
  // this is a new app entity that the user has selected
262
274
  const newApp = yield md.GetEntityObject("User Application Entities");
263
275
  newApp.UserApplicationID = this.userApp.ID;
264
- newApp.EntityID = e.ID;
265
276
  newApp.Sequence = index;
277
+ newApp.EntityID = e.ID;
266
278
  userAppEntitiesToSave.push(newApp);
267
279
  }
268
280
  }
@@ -312,7 +324,7 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
312
324
  this.showLoader = true;
313
325
  this.currentlySelectedAppEntity = entity;
314
326
  if (this.selectedFolderID) {
315
- let viewResult = yield _super.RunView.call(this, this.categoryEntityName, `ID=${this.selectedFolderID}`);
327
+ let viewResult = yield _super.RunView.call(this, this.categoryEntityName, `ID='${this.selectedFolderID}'`);
316
328
  if (viewResult.length > 0) {
317
329
  this.pageTitle = viewResult[0].Name;
318
330
  }
@@ -321,10 +333,10 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
321
333
  this.pageTitle = this.currentlySelectedAppEntity.Name;
322
334
  }
323
335
  const md = new Metadata();
324
- const parentFolderIDFilter = this.selectedFolderID ? `ParentID=${this.selectedFolderID}` : 'ParentID IS NULL';
325
- const categoryFilter = `UserID=${md.CurrentUser.ID} AND EntityID=${this.currentlySelectedAppEntity.ID} AND ` + parentFolderIDFilter;
326
- const categoryIDFilter = this.selectedFolderID ? `CategoryID=${this.selectedFolderID}` : 'CategoryID IS NULL';
327
- const userViewFilter = `UserID = ${md.CurrentUser.ID} AND EntityID = ${this.currentlySelectedAppEntity.ID} AND ` + categoryIDFilter;
336
+ const parentFolderIDFilter = this.selectedFolderID ? `ParentID='${this.selectedFolderID}'` : 'ParentID IS NULL';
337
+ const categoryFilter = `UserID='${md.CurrentUser.ID}' AND EntityID='${this.currentlySelectedAppEntity.ID}' AND ` + parentFolderIDFilter;
338
+ const categoryIDFilter = this.selectedFolderID ? `CategoryID='${this.selectedFolderID}'` : 'CategoryID IS NULL';
339
+ const userViewFilter = `UserID = '${md.CurrentUser.ID}' AND EntityID='${this.currentlySelectedAppEntity.ID}' AND ` + categoryIDFilter;
328
340
  yield _super.LoadData.call(this, {
329
341
  sortItemsAfterLoad: true,
330
342
  categoryItemFilter: categoryFilter,
@@ -438,20 +450,6 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
438
450
  this.router.navigate(['home']);
439
451
  });
440
452
  }
441
- sortAppEntites(entities) {
442
- entities.sort(function (a, b) {
443
- const aName = a.Name.toLowerCase();
444
- const bName = b.Name.toLowerCase();
445
- if (aName < bName) {
446
- return -1;
447
- }
448
- if (aName > bName) {
449
- return 1;
450
- }
451
- return 0;
452
- });
453
- return entities;
454
- }
455
453
  }
456
454
  ApplicationViewComponent.ɵfac = function ApplicationViewComponent_Factory(t) { return new (t || ApplicationViewComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Location), i0.ɵɵdirectiveInject(i3.SharedService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
457
455
  ApplicationViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ApplicationViewComponent, selectors: [["mj-application-view"]], viewQuery: function ApplicationViewComponent_Query(rf, ctx) { if (rf & 1) {
@@ -461,14 +459,14 @@ ApplicationViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Ap
461
459
  let _t;
462
460
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityRowRef = _t.first);
463
461
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewPropertiesDialog = _t.first);
464
- } }, inputs: { categoryEntityID: "categoryEntityID" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["entityRow", ""], ["userViewDialog", ""], ["class", "app-container", 4, "ngIf"], [1, "app-container"], [1, "card-header-entity", "cloumn"], [1, "header-wrap"], [1, "title-icon"], [1, "title-wrap"], [1, "title-wrap-inner"], [1, "breadcrumb", 3, "click"], [1, "breadcrumb-separator"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumb-end"], [1, "config-button"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-gear"], ["EntityName", "Entities", "DisplayField", "Name", "DisplayIconField", "Icon", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "row", 2, "max-width", "100%"], [1, "col-xs-12", "col-sm-6", "example-col"], ["kendoButton", "", "fillMode", "flat", 3, "toggleable", "selected", "click", 4, "ngFor", "ngForOf"], [1, "main-area", "margin-top-neg-20"], [3, "dialogClosed", "ShowPropertiesButton"], [3, "ngClass"], ["kendoButton", "", "fillMode", "flat", 3, "click", "toggleable", "selected"], [3, "click"], ["class", "main-area margin-top-neg-20", 4, "ngIf"], ["iconName", "aggregateFields", "addText", "Create New View", "ItemEntityName", "User Views", "resourceName", "View", 3, "itemClickEvent", "AfterAddFolderEvent", "AfterAddItemEvent", "AfterDeleteItemEvent", "AfterDeleteFolderEvent", "viewModeChangeEvent", "BeforeAddItemEvent", "BeforeUpdateItemEvent", "items", "categoryEntityID", "title", "CategoryEntityName", "selectedFolderID", "showLoader", "viewingResource", "displayAsGrid"]], template: function ApplicationViewComponent_Template(rf, ctx) { if (rf & 1) {
462
+ } }, inputs: { categoryEntityID: "categoryEntityID" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["entityRow", ""], ["userViewDialog", ""], ["class", "app-container", 4, "ngIf"], [1, "app-container"], [1, "card-header-entity", "cloumn"], [1, "header-wrap"], [1, "title-icon"], [1, "title-wrap"], [1, "title-wrap-inner"], [1, "breadcrumb", 3, "click"], [1, "breadcrumb-separator"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumb-end"], [1, "config-button"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-gear"], ["EntityName", "Entities", "DisplayField", "Name", "DisplayIconField", "Icon", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "row", 2, "max-width", "100%"], [1, "col-xs-12", "col-sm-6", "example-col"], ["kendoButton", "", "fillMode", "flat", 3, "toggleable", "selected", "click", 4, "ngFor", "ngForOf"], [1, "main-area", "margin-top-neg-20"], [3, "dialogClosed", "ShowPropertiesButton"], [3, "ngClass"], ["kendoButton", "", "fillMode", "flat", 3, "click", "toggleable", "selected"], [3, "click"], ["class", "main-area margin-top-neg-20", 4, "ngIf"], ["iconName", "aggregateFields", "addText", "Create New View", "ItemEntityName", "User Views", "resourceName", "View", 3, "itemClickEvent", "AfterAddFolderEvent", "AfterAddItemEvent", "AfterDeleteItemEvent", "AfterDeleteFolderEvent", "viewModeChangeEvent", "BeforeAddItemEvent", "BeforeUpdateItemEvent", "items", "categoryEntityID", "title", "extraDropdownOptions", "CategoryEntityName", "selectedFolderID", "showLoader", "viewingResource", "displayAsGrid"]], template: function ApplicationViewComponent_Template(rf, ctx) { if (rf & 1) {
465
463
  i0.ɵɵtemplate(0, ApplicationViewComponent_div_0_Template, 29, 10, "div", 2);
466
464
  } if (rf & 2) {
467
465
  i0.ɵɵproperty("ngIf", ctx.app);
468
466
  } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i4.LoaderComponent, i5.ButtonComponent, i6.UserViewPropertiesDialogComponent, i7.RecordSelectorDialogComponent, i8.GenericBrowserListComponent], styles: [".app-container[_ngcontent-%COMP%] {\n padding: 15px;\n}\n \n.entity-list[_ngcontent-%COMP%] {\n width: 500px;\n}\n.favorites-list[_ngcontent-%COMP%] {\n width: 400px;\n}\n\n.cloumn[_ngcontent-%COMP%] {\n flex-direction: column;\n}\n.example-col[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n.example-col[_ngcontent-%COMP%] .k-selected[_ngcontent-%COMP%] {\n font-weight: 800;\n color: var(--tdata-color);\n border-bottom: 3px solid var(--border-blue) !important;\n background: var(--white-color);\n}\n\n.margin-top-neg-20[_ngcontent-%COMP%] {\n margin-top: -20px;\n padding: 0px !important\n}\n\n.header-wrap[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n width: 100%;\n}\n\n.title-wrap[_ngcontent-%COMP%] {\n flex-grow: 1;\n font-size: 24px;\n}\n.title-wrap-inner[_ngcontent-%COMP%] {\n display: block;\n}\n\n.breadcrumb[_ngcontent-%COMP%] {\n color: darkblue;\n cursor: pointer;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.breadcrumb-end[_ngcontent-%COMP%] {\n display: inline;\n margin-left: 5px;\n}\n\n\n.breadcrumb-separator[_ngcontent-%COMP%] {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n.home-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n \n.title-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-right: 15px;\n}\n\n.config-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.button-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n font-size: 16px;\n}", ".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
469
467
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ApplicationViewComponent, [{
470
468
  type: Component,
471
- args: [{ selector: 'mj-application-view', template: "<div class=\"app-container\" *ngIf=\"this.app\">\n <div class=\"card-header-entity cloumn\">\n <div class=\"header-wrap\"> \n @if (this.app.Icon && this.app.Icon.length > 0) {\n <div class=\"title-icon\">\n <span [ngClass]=\"this.app.Icon\"></span>\n </div> \n }\n <div class=\"title-wrap\">\n <div class=\"title-wrap-inner\">\n <span class=\"breadcrumb\" (click)=\"GoHome($event)\">Home</span> \n <span class=\"breadcrumb-separator\"><span class=\"fa-solid fa-chevron-right\"></span></span>\n <span class=\"breadcrumb\" (click)=\"GoToApps($event)\">Applications</span>\n <span class=\"breadcrumb-separator\"><span class=\"fa-solid fa-chevron-right\"></span></span>\n <span class=\"breadcrumb-end\">{{this.app.Name}}</span>\n </div>\n </div>\n <div class=\"config-button\">\n <button kendoButton (click)=\"ShowAppEntitySelectionDialog()\"><span class=\"fa-solid fa-gear\"></span></button>\n <mj-record-selector-dialog \n EntityName=\"Entities\"\n [AvailableRecords]=\"AllAppEntities\" \n [SelectedRecords]=\"SelectedAppEntities\" \n [UnselectedRecords]=\"UnselectedAppEntities\"\n [DialogVisible]=\"AppEntitySelectionDialogVisible\"\n DisplayField=\"Name\"\n DisplayIconField=\"Icon\"\n (DialogClosed)=\"OnAppEntitySelectionDialogClosed($event)\"\n >\n </mj-record-selector-dialog>\n </div>\n </div> \n <div class=\"row\" #entityRow style=\"max-width: 100%;\">\n <div class=\"col-xs-12 col-sm-6 example-col\">\n <button\n *ngFor=\"let item of SelectedAppEntities\"\n kendoButton\n fillMode=\"flat\"\n [toggleable]=\"true\"\n [selected]=\"IsEntitySelected(item)\"\n (click)=\"onAppEntityButtonClicked(item)\"\n >\n <span>\n @if (item.Icon && item.Icon.length > 0) {\n <span [ngClass]=\"item.Icon + ' button-icon'\" ></span>\n }\n {{item.Name}}\n </span>\n </button>\n </div>\n </div>\n </div>\n @if (SelectedAppEntities.length === 0 && !showLoader) {\n <div (click)=\"ShowAppEntitySelectionDialog()\">\n <span class=\"fa-solid fa-gear\"></span>\n Click Here to Select Entities\n </div>\n }\n @if(showLoader) {\n <kendo-loader></kendo-loader>\n }\n @else {\n <div class=\"main-area margin-top-neg-20\" *ngIf=\"SelectedAppEntities.length > 0\">\n <app-generic-browser-list \n iconName=\"aggregateFields\" \n [items]=\"items\"\n [categoryEntityID]=\"categoryEntityID\"\n addText=\"Create New View\"\n ItemEntityName=\"User Views\"\n resourceName=\"View\"\n [title]=\"pageTitle\"\n [CategoryEntityName]=\"categoryEntityName\"\n (itemClickEvent)=\"onItemClick($event)\" \n [selectedFolderID]=\"selectedFolderID\"\n [showLoader]=\"showLoader\"\n [viewingResource]=false\n [displayAsGrid]=\"displayAsGrid\"\n (AfterAddFolderEvent)=\"onEvent($event)\"\n (AfterAddItemEvent)=\"onEvent($event)\"\n (AfterDeleteItemEvent)=\"onEvent($event)\"\n (AfterDeleteFolderEvent)=\"onEvent($event)\"\n (viewModeChangeEvent)=\"onViewModeChange($event)\"\n (BeforeAddItemEvent)=\"createNewView($event)\"\n (BeforeUpdateItemEvent)=\"editView($event)\"\n />\n </div>\n }\n\n <mj-user-view-properties-dialog #userViewDialog [ShowPropertiesButton]=\"false\"(dialogClosed)=\"OnViewPropertiesDialogClose($event)\"></mj-user-view-properties-dialog>\n</div>\n", styles: [".app-container {\n padding: 15px;\n}\n \n.entity-list {\n width: 500px;\n}\n.favorites-list {\n width: 400px;\n}\n\n.cloumn {\n flex-direction: column;\n}\n.example-col {\n overflow-x: auto;\n}\n.example-col .k-selected {\n font-weight: 800;\n color: var(--tdata-color);\n border-bottom: 3px solid var(--border-blue) !important;\n background: var(--white-color);\n}\n\n.margin-top-neg-20 {\n margin-top: -20px;\n padding: 0px !important\n}\n\n.header-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n width: 100%;\n}\n\n.title-wrap {\n flex-grow: 1;\n font-size: 24px;\n}\n.title-wrap-inner {\n display: block;\n}\n\n.breadcrumb {\n color: darkblue;\n cursor: pointer;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.breadcrumb-end {\n display: inline;\n margin-left: 5px;\n}\n\n\n.breadcrumb-separator {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n.home-icon {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n \n.title-icon {\n font-size: 32px;\n margin-right: 15px;\n}\n\n.config-button {\n display: flex;\n align-items: center;\n}\n\n.button-icon {\n margin-right: 5px;\n font-size: 16px;\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"] }]
469
+ args: [{ selector: 'mj-application-view', template: "<div class=\"app-container\" *ngIf=\"this.app\">\n <div class=\"card-header-entity cloumn\">\n <div class=\"header-wrap\"> \n @if (this.app.Icon && this.app.Icon.length > 0) {\n <div class=\"title-icon\">\n <span [ngClass]=\"this.app.Icon\"></span>\n </div> \n }\n <div class=\"title-wrap\">\n <div class=\"title-wrap-inner\">\n <span class=\"breadcrumb\" (click)=\"GoHome($event)\">Home</span> \n <span class=\"breadcrumb-separator\"><span class=\"fa-solid fa-chevron-right\"></span></span>\n <span class=\"breadcrumb\" (click)=\"GoToApps($event)\">Applications</span>\n <span class=\"breadcrumb-separator\"><span class=\"fa-solid fa-chevron-right\"></span></span>\n <span class=\"breadcrumb-end\">{{this.app.Name}}</span>\n </div>\n </div>\n <div class=\"config-button\">\n <button kendoButton (click)=\"ShowAppEntitySelectionDialog()\"><span class=\"fa-solid fa-gear\"></span></button>\n <mj-record-selector-dialog \n EntityName=\"Entities\"\n [AvailableRecords]=\"AllAppEntities\" \n [SelectedRecords]=\"SelectedAppEntities\" \n [UnselectedRecords]=\"UnselectedAppEntities\"\n [DialogVisible]=\"AppEntitySelectionDialogVisible\"\n DisplayField=\"Name\"\n DisplayIconField=\"Icon\"\n (DialogClosed)=\"OnAppEntitySelectionDialogClosed($event)\"\n >\n </mj-record-selector-dialog>\n </div>\n </div> \n <div class=\"row\" #entityRow style=\"max-width: 100%;\">\n <div class=\"col-xs-12 col-sm-6 example-col\">\n <button\n *ngFor=\"let item of SelectedAppEntities\"\n kendoButton\n fillMode=\"flat\"\n [toggleable]=\"true\"\n [selected]=\"IsEntitySelected(item)\"\n (click)=\"onAppEntityButtonClicked(item)\"\n >\n <span>\n @if (item.Icon && item.Icon.length > 0) {\n <span [ngClass]=\"item.Icon + ' button-icon'\" ></span>\n }\n {{item.Name}}\n </span>\n </button>\n </div>\n </div>\n </div>\n @if (SelectedAppEntities.length === 0 && !showLoader) {\n <div (click)=\"ShowAppEntitySelectionDialog()\">\n <span class=\"fa-solid fa-gear\"></span>\n Click Here to Select Entities\n </div>\n }\n @if(showLoader) {\n <kendo-loader></kendo-loader>\n }\n @else {\n <div class=\"main-area margin-top-neg-20\" *ngIf=\"SelectedAppEntities.length > 0\">\n <app-generic-browser-list \n iconName=\"aggregateFields\" \n [items]=\"items\"\n [categoryEntityID]=\"categoryEntityID\"\n addText=\"Create New View\"\n ItemEntityName=\"User Views\"\n resourceName=\"View\"\n [title]=\"pageTitle\"\n [extraDropdownOptions]=\"extraDropdownOptions\"\n [CategoryEntityName]=\"categoryEntityName\"\n (itemClickEvent)=\"onItemClick($event)\" \n [selectedFolderID]=\"selectedFolderID\"\n [showLoader]=\"showLoader\"\n [viewingResource]=false\n [displayAsGrid]=\"displayAsGrid\"\n (AfterAddFolderEvent)=\"onEvent($event)\"\n (AfterAddItemEvent)=\"onEvent($event)\"\n (AfterDeleteItemEvent)=\"onEvent($event)\"\n (AfterDeleteFolderEvent)=\"onEvent($event)\"\n (viewModeChangeEvent)=\"onViewModeChange($event)\"\n (BeforeAddItemEvent)=\"createNewView($event)\"\n (BeforeUpdateItemEvent)=\"editView($event)\"\n />\n </div>\n }\n\n <mj-user-view-properties-dialog #userViewDialog [ShowPropertiesButton]=\"false\"(dialogClosed)=\"OnViewPropertiesDialogClose($event)\"></mj-user-view-properties-dialog>\n</div>\n", styles: [".app-container {\n padding: 15px;\n}\n \n.entity-list {\n width: 500px;\n}\n.favorites-list {\n width: 400px;\n}\n\n.cloumn {\n flex-direction: column;\n}\n.example-col {\n overflow-x: auto;\n}\n.example-col .k-selected {\n font-weight: 800;\n color: var(--tdata-color);\n border-bottom: 3px solid var(--border-blue) !important;\n background: var(--white-color);\n}\n\n.margin-top-neg-20 {\n margin-top: -20px;\n padding: 0px !important\n}\n\n.header-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n width: 100%;\n}\n\n.title-wrap {\n flex-grow: 1;\n font-size: 24px;\n}\n.title-wrap-inner {\n display: block;\n}\n\n.breadcrumb {\n color: darkblue;\n cursor: pointer;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.breadcrumb-end {\n display: inline;\n margin-left: 5px;\n}\n\n\n.breadcrumb-separator {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n.home-icon {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n \n.title-icon {\n font-size: 32px;\n margin-right: 15px;\n}\n\n.config-button {\n display: flex;\n align-items: center;\n}\n\n.button-icon {\n margin-right: 5px;\n font-size: 16px;\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"] }]
472
470
  }], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.Location }, { type: i3.SharedService }, { type: i0.ChangeDetectorRef }], { entityRowRef: [{
473
471
  type: ViewChild,
474
472
  args: ['entityRow']
@@ -1,7 +1,8 @@
1
1
  import { Folder, Item, ItemType } from "../../generic/Item.types";
2
2
  import { Router, Params, ActivatedRoute } from '@angular/router';
3
3
  import { BaseEvent } from "../../generic/Events.types";
4
- export declare class BaseBrowserComponent {
4
+ import { BaseNavigationComponent } from "@memberjunction/ng-shared";
5
+ export declare class BaseBrowserComponent extends BaseNavigationComponent {
5
6
  showLoader: boolean;
6
7
  items: Item[];
7
8
  folders: Folder[];
@@ -1 +1 @@
1
- {"version":3,"file":"base-browser-component.d.ts","sourceRoot":"","sources":["../../../src/lib/base-browser-component/base-browser-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAyD,MAAM,4BAA4B,CAAC;AAE9G,qBAAa,oBAAoB;IACtB,UAAU,EAAE,OAAO,CAAS;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,SAAS,EAAE,MAAM,CAAM;IAE9B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAM;IAChC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAM;IACjC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAM;IACzC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAM;IACtC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAM;IAC1C,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAU;IACpC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAQ/C,IAAW,aAAa,IAAI,OAAO,CAAqC;IAExE,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAM/E,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrD,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;cAOvC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;cAY1B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAmB5F,SAAS,CAAC,yBAAyB,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE;IAUlF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;IAa3D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAe7D,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAa/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAGlD;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA"}
1
+ {"version":3,"file":"base-browser-component.d.ts","sourceRoot":"","sources":["../../../src/lib/base-browser-component/base-browser-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAyD,MAAM,4BAA4B,CAAC;AAC9G,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,oBAAqB,SAAQ,uBAAuB;IACtD,UAAU,EAAE,OAAO,CAAS;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,SAAS,EAAE,MAAM,CAAM;IAE9B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAM;IAChC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAM;IACjC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAM;IACzC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAM;IACtC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAM;IAC1C,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAU;IACpC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAS/C,IAAW,aAAa,IAAI,OAAO,CAAqC;IAExE,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAM/E,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrD,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;cAOvC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;cAY1B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAmB5F,SAAS,CAAC,yBAAyB,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE;IAUlF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;IAa3D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAe7D,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAa/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAGlD;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA"}
@@ -10,8 +10,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import { LogStatus, Metadata, RunView } from "@memberjunction/core";
11
11
  import { Folder, Item, ItemType } from "../../generic/Item.types";
12
12
  import { EventTypes } from "../../generic/Events.types";
13
- export class BaseBrowserComponent {
13
+ import { BaseNavigationComponent } from "@memberjunction/ng-shared";
14
+ export class BaseBrowserComponent extends BaseNavigationComponent {
14
15
  constructor() {
16
+ super();
15
17
  this.showLoader = false;
16
18
  this.selectedFolderID = null;
17
19
  this.pageTitle = '';
@@ -35,11 +37,11 @@ export class BaseBrowserComponent {
35
37
  buildFiltersAndLoadData() {
36
38
  return __awaiter(this, void 0, void 0, function* () {
37
39
  const md = new Metadata();
38
- let categoryFilter = this.selectedFolderID ? `CategoryID = ${this.selectedFolderID}` : `CategoryID IS NULL`;
39
- let resourceFilter = `UserID = ${md.CurrentUser.ID} AND ${categoryFilter}`;
40
+ let categoryFilter = this.selectedFolderID ? `CategoryID = '${this.selectedFolderID}'` : `CategoryID IS NULL`;
41
+ let resourceFilter = `UserID = '${md.CurrentUser.ID}' AND ${categoryFilter}`;
40
42
  //filter for the folders
41
- let resourceCategoryFilter = this.selectedFolderID ? `ParentID = ${this.selectedFolderID}` : `ParentID IS NULL`;
42
- resourceCategoryFilter += ` AND UserID = ${md.CurrentUser.ID}`;
43
+ let resourceCategoryFilter = this.selectedFolderID ? `ParentID = '${this.selectedFolderID}'` : `ParentID IS NULL`;
44
+ resourceCategoryFilter += ` AND UserID = '${md.CurrentUser.ID}'`;
43
45
  LogStatus("resourceFilter: " + resourceFilter + " category filter: " + resourceCategoryFilter);
44
46
  yield this.LoadData({
45
47
  sortItemsAfterLoad: true,
@@ -8,6 +8,9 @@ export declare class DashboardBrowserComponent extends BaseBrowserComponent {
8
8
  private router;
9
9
  private route;
10
10
  private sharedService;
11
+ extraDropdownOptions: {
12
+ text: string;
13
+ }[];
11
14
  constructor(router: Router, route: ActivatedRoute, sharedService: SharedService);
12
15
  ngOnInit(): Promise<void>;
13
16
  itemClick(item: Item): void;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard-browser-component/dashboard-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAEnE,qBAMa,yBAA0B,SAAQ,oBAAoB;IAErD,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,aAAa;gBAApE,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,aAAa,EAAE,aAAa;IAajG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,CAAC,IAAI,EAAE,IAAI;IAWpB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;yCAlCvD,yBAAyB;2CAAzB,yBAAyB;CA0CrC"}
1
+ {"version":3,"file":"dashboard-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard-browser-component/dashboard-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAA2B,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAGnE,qBAMa,yBAA0B,SAAQ,oBAAoB;IAKrD,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,aAAa;IAJjF,oBAAoB,EAAG;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAAE,CAE5C;gBAEkB,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,aAAa,EAAE,aAAa;IAajG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,CAAC,IAAI,EAAE,IAAI;IAWpB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;yCArCvD,yBAAyB;2CAAzB,yBAAyB;CA6CrC"}
@@ -1,3 +1,9 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
1
7
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
8
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
9
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,18 +14,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
14
  });
9
15
  };
10
16
  import { Component } from '@angular/core';
17
+ import { BaseNavigationComponent } from '@memberjunction/ng-shared';
11
18
  import { BaseBrowserComponent } from '../base-browser-component/base-browser-component';
19
+ import { RegisterClass } from '@memberjunction/global';
12
20
  import * as i0 from "@angular/core";
13
21
  import * as i1 from "@angular/router";
14
22
  import * as i2 from "@memberjunction/ng-shared";
15
23
  import * as i3 from "../generic-browser-list/generic-browser-list.component";
16
- export class DashboardBrowserComponent extends BaseBrowserComponent {
24
+ let DashboardBrowserComponent = class DashboardBrowserComponent extends BaseBrowserComponent {
17
25
  constructor(router, route, sharedService) {
18
26
  var _a;
19
27
  super();
20
28
  this.router = router;
21
29
  this.route = route;
22
30
  this.sharedService = sharedService;
31
+ this.extraDropdownOptions = [
32
+ { text: 'View' }
33
+ ];
23
34
  this.pageName = "Dashboards";
24
35
  this.routeName = "dashboards";
25
36
  this.routeNameSingular = "dashboard";
@@ -54,17 +65,21 @@ export class DashboardBrowserComponent extends BaseBrowserComponent {
54
65
  let dashboard = item.Data;
55
66
  this.router.navigate(['resource', this.routeNameSingular, dashboard.ID], { queryParams: { edit: true } });
56
67
  }
57
- }
68
+ };
58
69
  DashboardBrowserComponent.ɵfac = function DashboardBrowserComponent_Factory(t) { return new (t || DashboardBrowserComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.SharedService)); };
59
- DashboardBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DashboardBrowserComponent, selectors: [["app-dashboard-browser"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 4, consts: [["title", "Dashboards", "itemType", "dashboard", "iconName", "aggregateFields", "addText", "Create New Dashboard", "ItemEntityName", "Dashboards", "resourceName", "Dashboard", "CategoryEntityName", "Dashboard Categories", 3, "itemClickEvent", "AfterAddFolderEvent", "AfterAddItemEvent", "AfterDeleteItemEvent", "AfterDeleteFolderEvent", "BeforeUpdateItemEvent", "viewModeChangeEvent", "items", "selectedFolderID", "showLoader", "displayAsGrid"]], template: function DashboardBrowserComponent_Template(rf, ctx) { if (rf & 1) {
70
+ DashboardBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DashboardBrowserComponent, selectors: [["app-dashboard-browser"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 5, consts: [["title", "Dashboards", "itemType", "dashboard", "iconName", "aggregateFields", "addText", "Create New Dashboard", "ItemEntityName", "Dashboards", "resourceName", "Dashboard", "CategoryEntityName", "Dashboard Categories", 3, "itemClickEvent", "AfterAddFolderEvent", "AfterAddItemEvent", "AfterDeleteItemEvent", "AfterDeleteFolderEvent", "BeforeUpdateItemEvent", "viewModeChangeEvent", "items", "extraDropdownOptions", "selectedFolderID", "showLoader", "displayAsGrid"]], template: function DashboardBrowserComponent_Template(rf, ctx) { if (rf & 1) {
60
71
  i0.ɵɵelementStart(0, "app-generic-browser-list", 0);
61
72
  i0.ɵɵlistener("itemClickEvent", function DashboardBrowserComponent_Template_app_generic_browser_list_itemClickEvent_0_listener($event) { return ctx.itemClick($event); })("AfterAddFolderEvent", function DashboardBrowserComponent_Template_app_generic_browser_list_AfterAddFolderEvent_0_listener($event) { return ctx.onEvent($event); })("AfterAddItemEvent", function DashboardBrowserComponent_Template_app_generic_browser_list_AfterAddItemEvent_0_listener($event) { return ctx.onEvent($event); })("AfterDeleteItemEvent", function DashboardBrowserComponent_Template_app_generic_browser_list_AfterDeleteItemEvent_0_listener($event) { return ctx.onEvent($event); })("AfterDeleteFolderEvent", function DashboardBrowserComponent_Template_app_generic_browser_list_AfterDeleteFolderEvent_0_listener($event) { return ctx.onEvent($event); })("BeforeUpdateItemEvent", function DashboardBrowserComponent_Template_app_generic_browser_list_BeforeUpdateItemEvent_0_listener($event) { return ctx.onBeforeUpdateItemEvent($event); })("viewModeChangeEvent", function DashboardBrowserComponent_Template_app_generic_browser_list_viewModeChangeEvent_0_listener($event) { return ctx.onViewModeChange($event); });
62
73
  i0.ɵɵelementEnd();
63
74
  } if (rf & 2) {
64
- i0.ɵɵproperty("items", ctx.items)("selectedFolderID", ctx.selectedFolderID)("showLoader", ctx.showLoader)("displayAsGrid", ctx.displayAsGrid);
75
+ i0.ɵɵproperty("items", ctx.items)("extraDropdownOptions", ctx.extraDropdownOptions)("selectedFolderID", ctx.selectedFolderID)("showLoader", ctx.showLoader)("displayAsGrid", ctx.displayAsGrid);
65
76
  } }, dependencies: [i3.GenericBrowserListComponent], styles: [".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
77
+ DashboardBrowserComponent = __decorate([
78
+ RegisterClass(BaseNavigationComponent, 'Dashboards')
79
+ ], DashboardBrowserComponent);
80
+ export { DashboardBrowserComponent };
66
81
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardBrowserComponent, [{
67
82
  type: Component,
68
- args: [{ selector: 'app-dashboard-browser', template: "<app-generic-browser-list \n title=\"Dashboards\" \n itemType=\"dashboard\" \n iconName=\"aggregateFields\" \n [items]=\"items\" \n addText=\"Create New Dashboard\"\n ItemEntityName=\"Dashboards\"\n resourceName=\"Dashboard\"\n CategoryEntityName=\"Dashboard Categories\"\n (itemClickEvent)=\"itemClick($event)\" \n (AfterAddFolderEvent)=\"onEvent($event)\"\n (AfterAddItemEvent)=\"onEvent($event)\"\n (AfterDeleteItemEvent)=\"onEvent($event)\"\n (AfterDeleteFolderEvent)=\"onEvent($event)\"\n (BeforeUpdateItemEvent)=\"onBeforeUpdateItemEvent($event)\"\n [selectedFolderID]=\"selectedFolderID\"\n [showLoader]=\"showLoader\"\n [displayAsGrid]=\"displayAsGrid\"\n (viewModeChangeEvent)=\"onViewModeChange($event)\"\n/>\n", styles: ["\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"] }]
83
+ args: [{ selector: 'app-dashboard-browser', template: "<app-generic-browser-list \n title=\"Dashboards\" \n itemType=\"dashboard\" \n iconName=\"aggregateFields\" \n [items]=\"items\" \n [extraDropdownOptions]=\"extraDropdownOptions\"\n addText=\"Create New Dashboard\"\n ItemEntityName=\"Dashboards\"\n resourceName=\"Dashboard\"\n CategoryEntityName=\"Dashboard Categories\"\n (itemClickEvent)=\"itemClick($event)\" \n (AfterAddFolderEvent)=\"onEvent($event)\"\n (AfterAddItemEvent)=\"onEvent($event)\"\n (AfterDeleteItemEvent)=\"onEvent($event)\"\n (AfterDeleteFolderEvent)=\"onEvent($event)\"\n (BeforeUpdateItemEvent)=\"onBeforeUpdateItemEvent($event)\"\n [selectedFolderID]=\"selectedFolderID\"\n [showLoader]=\"showLoader\"\n [displayAsGrid]=\"displayAsGrid\"\n (viewModeChangeEvent)=\"onViewModeChange($event)\"\n/>\n", styles: ["\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"] }]
69
84
  }], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SharedService }], null); })();
70
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardBrowserComponent, { className: "DashboardBrowserComponent", filePath: "src/lib/dashboard-browser-component/dashboard-browser.component.ts", lineNumber: 15 }); })();
85
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardBrowserComponent, { className: "DashboardBrowserComponent", filePath: "src/lib/dashboard-browser-component/dashboard-browser.component.ts", lineNumber: 16 }); })();