barsa-tiles 0.0.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 (120) hide show
  1. package/README.md +25 -0
  2. package/esm2020/barsa-tiles.mjs +5 -0
  3. package/esm2020/lib/action-item/action-item.component.mjs +17 -0
  4. package/esm2020/lib/action-links.pipe.mjs +16 -0
  5. package/esm2020/lib/actions-link/actions-link.component.mjs +19 -0
  6. package/esm2020/lib/app-finder/app-finder.component.mjs +53 -0
  7. package/esm2020/lib/app-finder-app-list/app-finder-app-list.component.mjs +40 -0
  8. package/esm2020/lib/app-finder-group/app-finder-group.component.mjs +42 -0
  9. package/esm2020/lib/app-finder.service.mjs +121 -0
  10. package/esm2020/lib/barsa-tiles.module.mjs +196 -0
  11. package/esm2020/lib/change-app-tile/change-app-tile.component.mjs +47 -0
  12. package/esm2020/lib/create-app-group/create-app-group.component.mjs +44 -0
  13. package/esm2020/lib/directives/emptylist.directive.mjs +36 -0
  14. package/esm2020/lib/feed-tile/feed-tile.component.mjs +31 -0
  15. package/esm2020/lib/footer-edit-tile/footer-edit-tile.component.mjs +13 -0
  16. package/esm2020/lib/footer-tile/footer-tile.component.mjs +28 -0
  17. package/esm2020/lib/form-app-finder/form-app-finder.component.mjs +94 -0
  18. package/esm2020/lib/form-tile/form-tile.component.mjs +34 -0
  19. package/esm2020/lib/logo-tile/logo-tile.component.mjs +22 -0
  20. package/esm2020/lib/micro-tile-chart-area/micro-tile-chart-area.component.mjs +39 -0
  21. package/esm2020/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.mjs +28 -0
  22. package/esm2020/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +26 -0
  23. package/esm2020/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.mjs +19 -0
  24. package/esm2020/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.mjs +30 -0
  25. package/esm2020/lib/micro-tile-chart-line/micro-tile-chart-line.component.mjs +31 -0
  26. package/esm2020/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.mjs +26 -0
  27. package/esm2020/lib/models/app-tile-footer-section.mjs +2 -0
  28. package/esm2020/lib/models/app-tile-footer.mjs +2 -0
  29. package/esm2020/lib/models/app-tile-group-pin.mjs +2 -0
  30. package/esm2020/lib/models/base-bt-tile-component.mjs +20 -0
  31. package/esm2020/lib/models/base-tile-component.mjs +57 -0
  32. package/esm2020/lib/models/base-tile-setting.mjs +2 -0
  33. package/esm2020/lib/models/feed-tile-setting.mjs +2 -0
  34. package/esm2020/lib/models/index.mjs +14 -0
  35. package/esm2020/lib/models/logo-tile-setting.mjs +2 -0
  36. package/esm2020/lib/models/micro-tile-chart-bullet-setting.mjs +2 -0
  37. package/esm2020/lib/models/news-tile-setting.mjs +2 -0
  38. package/esm2020/lib/models/numeric-tile-setting.mjs +2 -0
  39. package/esm2020/lib/models/profile-tile-setting.mjs +2 -0
  40. package/esm2020/lib/models/tile-setting.mjs +2 -0
  41. package/esm2020/lib/models/user-portal-settings.mjs +2 -0
  42. package/esm2020/lib/news-tile/news-tile.component.mjs +59 -0
  43. package/esm2020/lib/numeric-tile/numeric-tile.component.mjs +33 -0
  44. package/esm2020/lib/pin-tile/pin-tile.component.mjs +111 -0
  45. package/esm2020/lib/pipes/group-tiles.pipe.mjs +31 -0
  46. package/esm2020/lib/pipes/home-group.pipe.mjs +17 -0
  47. package/esm2020/lib/pipes/tile-home-filter.pipe.mjs +28 -0
  48. package/esm2020/lib/profile-tile/profile-tile.component.mjs +25 -0
  49. package/esm2020/lib/shellbar/shellbar.component.mjs +159 -0
  50. package/esm2020/lib/simple-tile/simple-tile.component.mjs +17 -0
  51. package/esm2020/lib/tile/tile.component.mjs +47 -0
  52. package/esm2020/lib/tile-renderer.directive.mjs +69 -0
  53. package/esm2020/lib/tiles-viewer/tiles-viewer.component.mjs +118 -0
  54. package/esm2020/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +158 -0
  55. package/esm2020/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +75 -0
  56. package/esm2020/lib/tiles-viewer.service.mjs +130 -0
  57. package/esm2020/lib/tiles.service.mjs +500 -0
  58. package/esm2020/public-api.mjs +43 -0
  59. package/fesm2015/barsa-tiles.mjs +2415 -0
  60. package/fesm2015/barsa-tiles.mjs.map +1 -0
  61. package/fesm2020/barsa-tiles.mjs +2386 -0
  62. package/fesm2020/barsa-tiles.mjs.map +1 -0
  63. package/index.d.ts +5 -0
  64. package/lib/action-item/action-item.component.d.ts +6 -0
  65. package/lib/action-links.pipe.d.ts +7 -0
  66. package/lib/actions-link/actions-link.component.d.ts +8 -0
  67. package/lib/app-finder/app-finder.component.d.ts +24 -0
  68. package/lib/app-finder-app-list/app-finder-app-list.component.d.ts +20 -0
  69. package/lib/app-finder-group/app-finder-group.component.d.ts +14 -0
  70. package/lib/app-finder.service.d.ts +33 -0
  71. package/lib/barsa-tiles.module.d.ts +65 -0
  72. package/lib/change-app-tile/change-app-tile.component.d.ts +20 -0
  73. package/lib/create-app-group/create-app-group.component.d.ts +19 -0
  74. package/lib/directives/emptylist.directive.d.ts +14 -0
  75. package/lib/feed-tile/feed-tile.component.d.ts +11 -0
  76. package/lib/footer-edit-tile/footer-edit-tile.component.d.ts +6 -0
  77. package/lib/footer-tile/footer-tile.component.d.ts +11 -0
  78. package/lib/form-app-finder/form-app-finder.component.d.ts +38 -0
  79. package/lib/form-tile/form-tile.component.d.ts +24 -0
  80. package/lib/logo-tile/logo-tile.component.d.ts +7 -0
  81. package/lib/micro-tile-chart-area/micro-tile-chart-area.component.d.ts +8 -0
  82. package/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.d.ts +12 -0
  83. package/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.d.ts +16 -0
  84. package/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.d.ts +7 -0
  85. package/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.d.ts +8 -0
  86. package/lib/micro-tile-chart-line/micro-tile-chart-line.component.d.ts +8 -0
  87. package/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.d.ts +8 -0
  88. package/lib/models/app-tile-footer-section.d.ts +6 -0
  89. package/lib/models/app-tile-footer.d.ts +8 -0
  90. package/lib/models/app-tile-group-pin.d.ts +5 -0
  91. package/lib/models/base-bt-tile-component.d.ts +9 -0
  92. package/lib/models/base-tile-component.d.ts +26 -0
  93. package/lib/models/base-tile-setting.d.ts +5 -0
  94. package/lib/models/feed-tile-setting.d.ts +7 -0
  95. package/lib/models/index.d.ts +13 -0
  96. package/lib/models/logo-tile-setting.d.ts +6 -0
  97. package/lib/models/micro-tile-chart-bullet-setting.d.ts +10 -0
  98. package/lib/models/news-tile-setting.d.ts +4 -0
  99. package/lib/models/numeric-tile-setting.d.ts +9 -0
  100. package/lib/models/profile-tile-setting.d.ts +7 -0
  101. package/lib/models/tile-setting.d.ts +9 -0
  102. package/lib/models/user-portal-settings.d.ts +9 -0
  103. package/lib/news-tile/news-tile.component.d.ts +24 -0
  104. package/lib/numeric-tile/numeric-tile.component.d.ts +12 -0
  105. package/lib/pin-tile/pin-tile.component.d.ts +30 -0
  106. package/lib/pipes/group-tiles.pipe.d.ts +14 -0
  107. package/lib/pipes/home-group.pipe.d.ts +9 -0
  108. package/lib/pipes/tile-home-filter.pipe.d.ts +8 -0
  109. package/lib/profile-tile/profile-tile.component.d.ts +7 -0
  110. package/lib/shellbar/shellbar.component.d.ts +64 -0
  111. package/lib/simple-tile/simple-tile.component.d.ts +6 -0
  112. package/lib/tile/tile.component.d.ts +12 -0
  113. package/lib/tile-renderer.directive.d.ts +27 -0
  114. package/lib/tiles-viewer/tiles-viewer.component.d.ts +51 -0
  115. package/lib/tiles-viewer-container/tiles-viewer-container.component.d.ts +55 -0
  116. package/lib/tiles-viewer-group/tiles-viewer-group.component.d.ts +34 -0
  117. package/lib/tiles-viewer.service.d.ts +42 -0
  118. package/lib/tiles.service.d.ts +68 -0
  119. package/package.json +31 -0
  120. package/public-api.d.ts +39 -0
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # BarsaTiles
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.1.2.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project BarsaTiles` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project BarsaTiles`.
8
+
9
+ > Note: Don't forget to add `--project BarsaTiles` or else it will be added to the default project in your `angular.json` file.
10
+
11
+ ## Build
12
+
13
+ Run `ng build BarsaTiles` to build the project. The build artifacts will be stored in the `dist/` directory.
14
+
15
+ ## Publishing
16
+
17
+ After building your library with `ng build BarsaTiles`, go to the dist folder `cd dist/barsa-tiles` and run `npm publish`.
18
+
19
+ ## Running unit tests
20
+
21
+ Run `ng test BarsaTiles` to execute the unit tests via [Karma](https://karma-runner.github.io).
22
+
23
+ ## Further help
24
+
25
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvYmFyc2EtdGlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { TileComponent } from '../tile/tile.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@fundamental-ngx/core/button";
6
+ import * as i3 from "@fundamental-ngx/core/menu";
7
+ import * as i4 from "@fundamental-ngx/core/tile";
8
+ import * as i5 from "barsa-novin-ray-core";
9
+ export class ActionItemComponent extends TileComponent {
10
+ }
11
+ ActionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12
+ ActionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ActionItemComponent, selector: "bt-action-item", usesInheritance: true, ngImport: i0, template: "<div [class.action-item-edit-mode]=\"editHome\" class=\"action-item\">\r\n <h1 fd-tile-title>{{ title }}</h1>\r\n <h2 fd-tile-subtitle *ngIf=\"subtitle\">{{ subtitle }}</h2>\r\n\r\n <div *ngIf=\"editHome && !data.Locked\" class=\"buttons\">\r\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\r\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\r\n </div>\r\n <fd-menu #menu>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n </fd-menu>\r\n</div>\r\n", styles: [".action-item{display:flex;justify-content:space-between;height:100%;align-items:center;column-gap:10px;padding:7px;background-color:var(--sapTile_Background, #fff);cursor:pointer;box-shadow:var(--sapContent_Shadow0, 0 0 0 .0625rem rgba(0, 0, 0, .1), 0 .125rem .5rem 0 rgba(0, 0, 0, .1));border-radius:var(--sapElement_BorderCornerRadius, .25rem);border:.0625rem solid var(--sapTile_BorderColor, transparent)}.action-item:hover{background-color:var(--sapBackgroundColor);border-color:var(--sapTile_Interactive_BorderColor)}.action-item-edit-mode h1,.action-item-edit-mode h2{opacity:.3}.action-item-edit-mode .buttons{display:flex;column-gap:2px}.action-item-edit-mode .buttons button{display:flex}h1{text-decoration:none;color:var(--sapLinkColor, #0a6ed1);text-shadow:var(--sapContent_TextShadow, 0 0 .125rem #fff)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i3.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i3.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i3.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i3.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "directive", type: i4.TileTitleDirective, selector: "[fdTileTitle], [fd-tile-title]" }, { kind: "directive", type: i4.TileSubtitleDirective, selector: "[fdTileTitle], [fd-tile-subtitle]" }, { kind: "directive", type: i4.TileActionCloseDirective, selector: "[fdTileActionClose], [fd-tile-action-close]", inputs: ["class"] }, { kind: "directive", type: i4.TileActionIndicatorDirective, selector: "[fdTileActionIndicator], [fd-tile-action-indicator]", inputs: ["class"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionItemComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'bt-action-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class.action-item-edit-mode]=\"editHome\" class=\"action-item\">\r\n <h1 fd-tile-title>{{ title }}</h1>\r\n <h2 fd-tile-subtitle *ngIf=\"subtitle\">{{ subtitle }}</h2>\r\n\r\n <div *ngIf=\"editHome && !data.Locked\" class=\"buttons\">\r\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\r\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\r\n </div>\r\n <fd-menu #menu>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n </fd-menu>\r\n</div>\r\n", styles: [".action-item{display:flex;justify-content:space-between;height:100%;align-items:center;column-gap:10px;padding:7px;background-color:var(--sapTile_Background, #fff);cursor:pointer;box-shadow:var(--sapContent_Shadow0, 0 0 0 .0625rem rgba(0, 0, 0, .1), 0 .125rem .5rem 0 rgba(0, 0, 0, .1));border-radius:var(--sapElement_BorderCornerRadius, .25rem);border:.0625rem solid var(--sapTile_BorderColor, transparent)}.action-item:hover{background-color:var(--sapBackgroundColor);border-color:var(--sapTile_Interactive_BorderColor)}.action-item-edit-mode h1,.action-item-edit-mode h2{opacity:.3}.action-item-edit-mode .buttons{display:flex;column-gap:2px}.action-item-edit-mode .buttons button{display:flex}h1{text-decoration:none;color:var(--sapLinkColor, #0a6ed1);text-shadow:var(--sapContent_TextShadow, 0 0 .125rem #fff)}\n"] }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9hY3Rpb24taXRlbS9hY3Rpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FjdGlvbi1pdGVtL2FjdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhOztnSEFBekMsbUJBQW1CO29HQUFuQixtQkFBbUIsNkVDVGhDLGt3QkFnQkE7MkZEUGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVGlsZUNvbXBvbmVudCB9IGZyb20gJy4uL3RpbGUvdGlsZS5jb21wb25lbnQnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnQtYWN0aW9uLWl0ZW0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2FjdGlvbi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uSXRlbUNvbXBvbmVudCBleHRlbmRzIFRpbGVDb21wb25lbnQge31cclxuIiwiPGRpdiBbY2xhc3MuYWN0aW9uLWl0ZW0tZWRpdC1tb2RlXT1cImVkaXRIb21lXCIgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgPGgxIGZkLXRpbGUtdGl0bGU+e3sgdGl0bGUgfX08L2gxPlxyXG4gICAgPGgyIGZkLXRpbGUtc3VidGl0bGUgKm5nSWY9XCJzdWJ0aXRsZVwiPnt7IHN1YnRpdGxlIH19PC9oMj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiZWRpdEhvbWUgJiYgIWRhdGEuTG9ja2VkXCIgY2xhc3M9XCJidXR0b25zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmQtdGlsZS1hY3Rpb24tY2xvc2UgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiAoY2xpY2spPVwiaGlkZUNsaWNrLmVtaXQoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkLXRpbGUtYWN0aW9uLWluZGljYXRvciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIj48L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGZkLW1lbnUgI21lbnU+XHJcbiAgICAgICAgPGxpIGZkLW1lbnUtaXRlbT5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm1lbnUuY2xvc2UoKTsgcmVuYW1lQ2xpY2suZW1pdCgpXCIgZmQtbWVudS1pbnRlcmFjdGl2ZT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgJ1JlbmFtZScgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9mZC1tZW51PlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ActionLinksPipe {
4
+ transform(tiles) {
5
+ return tiles.filter((tile) => tile.IsActionLink);
6
+ }
7
+ }
8
+ ActionLinksPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
+ ActionLinksPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, name: "actionLinks" });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'actionLinks'
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmtzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FjdGlvbi1saW5rcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sZUFBZTtJQUN4QixTQUFTLENBQUMsS0FBVTtRQUNoQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs0R0FIUSxlQUFlOzBHQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFIM0IsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsYUFBYTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnYWN0aW9uTGlua3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHRyYW5zZm9ybSh0aWxlczogYW55KTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGlsZXMuZmlsdGVyKCh0aWxlKSA9PiB0aWxlLklzQWN0aW9uTGluayk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,19 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { BaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/cdk/drag-drop";
6
+ import * as i3 from "../action-item/action-item.component";
7
+ export class ActionsLinkComponent extends BaseComponent {
8
+ }
9
+ ActionsLinkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionsLinkComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
10
+ ActionsLinkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ActionsLinkComponent, selector: "bt-actions-link", inputs: { actionsLink: "actionsLink", editHome: "editHome" }, usesInheritance: true, ngImport: i0, template: "<bt-action-item\n *ngFor=\"let actionItem of actionsLink\"\n cdkDrag\n [data]=\"actionItem\"\n [editHome]=\"editHome\"\n [cdkDragDisabled]=\"!actionItem || actionItem.Locked\"\n [mo]=\"actionItem\"\n>\n</bt-action-item>\n", styles: [":host{display:flex;width:100%;row-gap:5px;flex-wrap:wrap;border-radius:var(--sapElement_BorderCornerRadius, .25rem);column-gap:10px;padding:1px 10px}bt-action-item{margin-top:auto;margin-bottom:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i3.ActionItemComponent, selector: "bt-action-item" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionsLinkComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'bt-actions-link', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-action-item\n *ngFor=\"let actionItem of actionsLink\"\n cdkDrag\n [data]=\"actionItem\"\n [editHome]=\"editHome\"\n [cdkDragDisabled]=\"!actionItem || actionItem.Locked\"\n [mo]=\"actionItem\"\n>\n</bt-action-item>\n", styles: [":host{display:flex;width:100%;row-gap:5px;flex-wrap:wrap;border-radius:var(--sapElement_BorderCornerRadius, .25rem);column-gap:10px;padding:1px 10px}bt-action-item{margin-top:auto;margin-bottom:auto}\n"] }]
14
+ }], propDecorators: { actionsLink: [{
15
+ type: Input
16
+ }], editHome: [{
17
+ type: Input
18
+ }] } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1saW5rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvYWN0aW9ucy1saW5rL2FjdGlvbnMtbGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FjdGlvbnMtbGluay9hY3Rpb25zLWxpbmsuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQU9yRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsYUFBYTs7aUhBQTFDLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDRJQ1RqQyxpUEFTQTsyRkRBYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LWFjdGlvbnMtbGluaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbnMtbGluay5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWN0aW9ucy1saW5rLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uc0xpbmtDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBhY3Rpb25zTGluaztcbiAgICBASW5wdXQoKSBlZGl0SG9tZTogYm9vbGVhbjtcbn1cbiIsIjxidC1hY3Rpb24taXRlbVxuICAgICpuZ0Zvcj1cImxldCBhY3Rpb25JdGVtIG9mIGFjdGlvbnNMaW5rXCJcbiAgICBjZGtEcmFnXG4gICAgW2RhdGFdPVwiYWN0aW9uSXRlbVwiXG4gICAgW2VkaXRIb21lXT1cImVkaXRIb21lXCJcbiAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFhY3Rpb25JdGVtIHx8IGFjdGlvbkl0ZW0uTG9ja2VkXCJcbiAgICBbbW9dPVwiYWN0aW9uSXRlbVwiXG4+XG48L2J0LWFjdGlvbi1pdGVtPlxuIl19
@@ -0,0 +1,53 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@fundamental-ngx/core/button";
6
+ import * as i3 from "@fundamental-ngx/core/menu";
7
+ import * as i4 from "@fundamental-ngx/core/toolbar";
8
+ import * as i5 from "@fundamental-ngx/platform/shared";
9
+ import * as i6 from "@fundamental-ngx/platform/search-field";
10
+ import * as i7 from "barsa-sap-ui";
11
+ import * as i8 from "../app-finder-group/app-finder-group.component";
12
+ import * as i9 from "../app-finder-app-list/app-finder-app-list.component";
13
+ import * as i10 from "barsa-novin-ray-core";
14
+ export class AppFinderComponent extends BaseComponent {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.contentDensity = 'compact';
18
+ this.pinClick = new EventEmitter();
19
+ this.selectedAppGroupIdChange = new EventEmitter();
20
+ }
21
+ onSearchSubmit($event) {
22
+ this.searchTerm = $event.text;
23
+ }
24
+ }
25
+ AppFinderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
26
+ AppFinderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AppFinderComponent, selector: "bt-app-finder", inputs: { appGroups: "appGroups", deviceSize: "deviceSize", sideContentSize: "sideContentSize", selectedAppGroup: "selectedAppGroup", selectedAppGroupId: "selectedAppGroupId", mobile: "mobile", contentDensity: "contentDensity", contentHeight: "contentHeight", pinnedAppInAppTileGroups: "pinnedAppInAppTileGroups" }, outputs: { pinClick: "pinClick", selectedAppGroupIdChange: "selectedAppGroupIdChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"wrapper\">\n <ng-container *ngIf=\"appGroups; else loading\">\n <fd-toolbar [fdType]=\"'solid'\">\n <button\n fd-toolbar-item\n fd-button\n [fdMenu]=\"true\"\n [glyph]=\"'menu2'\"\n [fdType]=\"'transparent'\"\n [fdMenuTrigger]=\"menu\"\n [label]=\"selectedAppGroup?.Title\"\n *ngIf=\"deviceSize === 's'\"\n ></button>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-search-field\n fd-toolbar-item\n [contentDensity]=\"contentDensity\"\n [placeholder]=\"'Search' | bbbTranslate\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n [suggestions]=\"[]\"\n ></fdp-search-field>\n </fd-toolbar>\n <div style=\"display: flex; overflow-y: auto\" [style.height]=\"contentHeight\">\n <div class=\"app-groups\">\n <bt-app-finder-group\n *ngIf=\"deviceSize !== 's'\"\n [appGroups]=\"appGroups\"\n [listMode]=\"true\"\n [selectedId]=\"selectedAppGroupId\"\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\n >\n </bt-app-finder-group>\n </div>\n <bt-app-finder-app-list\n [appGroup]=\"selectedAppGroup\"\n [mobile]=\"mobile\"\n [searchTerm]=\"searchTerm\"\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\n (pinClick)=\"pinClick.emit($event)\"\n ></bt-app-finder-app-list>\n </div>\n <fd-menu\n #menu\n [mobile]=\"deviceSize === 's'\"\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\n >\n <bt-app-finder-group\n *ngIf=\"deviceSize === 's'\"\n [appGroups]=\"appGroups\"\n [selectedId]=\"selectedAppGroupId\"\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\n >\n </bt-app-finder-group>\n </fd-menu>\n </ng-container>\n <ng-template #loading>\n <bsu-mask></bsu-mask>\n </ng-template>\n</div>\n", styles: [":host{display:block;background-color:var(--sapBackgroundColor, #f7f7f7);color:var(--sapTextColor, #32363a)}:host ::ng-deep .fd-list__title{line-height:1.5rem}.wrapper{display:flex;flex-direction:column}fd-toolbar{width:100%}::ng-deep span.fd-toolbar__spacer{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i3.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i4.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i4.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i4.ToolbarSpacerComponent, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "directive", type: i5.PlatformContentDensityDeprecationDirective, selector: " fdp-action-bar[contentDensity], fdp-button[contentDensity], fdp-object-list-item[contentDensity], fdp-standard-list-item[contentDensity], fdp-menu[contentDensity], fdp-menu-button[contentDensity], fdp-panel[contentDensity], fdp-search-field[contentDensity], fdp-split-menu-button[contentDensity], fdp-file-uploader[contentDensity], fdp-upload-collection[contentDensity], fdp-table[contentDensity], fdp-multi-input[contentDensity], fdp-list[contentDensity], fdp-slider[contentDensity], fdp-time-picker[contentDensity], fdp-textarea[contentDensity], fdp-switch[contentDensity], fdp-number-step-input[contentDensity], fdp-select[contentDensity], fdp-date-picker[contentDensity], fdp-checkbox[contentDensity], fdp-checkbox-group[contentDensity], fdp-combobox[contentDensity], fdp-datetime-picker[contentDensity], fdp-input[contentDensity], fdp-radio-group[contentDensity], fdp-radio-button[contentDensity], fdp-multi-combobox[contentDensity], fdp-input-group-addon-body[contentDensity], fdp-input-group[contentDensity], fdp-value-help-dialog[contentDensity], fdp-filter-single-select[contentDensity], fdp-filter-multi-select[contentDensity], fdp-filter-custom[contentDensity] " }, { kind: "component", type: i6.SearchFieldComponent, selector: "fdp-search-field", inputs: ["placeholder", "mobile", "mobileConfig", "disableRefresh", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i7.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "component", type: i8.AppFinderGroupComponent, selector: "bt-app-finder-group", inputs: ["appGroups", "selectedId", "listMode"], outputs: ["selectedIdChange"] }, { kind: "component", type: i9.AppFinderAppListComponent, selector: "bt-app-finder-app-list", inputs: ["appGroup", "mobile", "searchTerm", "pinnedAppInAppTileGroups"], outputs: ["pinClick", "appTileGroupsPinChange"] }, { kind: "pipe", type: i10.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'bt-app-finder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wrapper\">\n <ng-container *ngIf=\"appGroups; else loading\">\n <fd-toolbar [fdType]=\"'solid'\">\n <button\n fd-toolbar-item\n fd-button\n [fdMenu]=\"true\"\n [glyph]=\"'menu2'\"\n [fdType]=\"'transparent'\"\n [fdMenuTrigger]=\"menu\"\n [label]=\"selectedAppGroup?.Title\"\n *ngIf=\"deviceSize === 's'\"\n ></button>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-search-field\n fd-toolbar-item\n [contentDensity]=\"contentDensity\"\n [placeholder]=\"'Search' | bbbTranslate\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n [suggestions]=\"[]\"\n ></fdp-search-field>\n </fd-toolbar>\n <div style=\"display: flex; overflow-y: auto\" [style.height]=\"contentHeight\">\n <div class=\"app-groups\">\n <bt-app-finder-group\n *ngIf=\"deviceSize !== 's'\"\n [appGroups]=\"appGroups\"\n [listMode]=\"true\"\n [selectedId]=\"selectedAppGroupId\"\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\n >\n </bt-app-finder-group>\n </div>\n <bt-app-finder-app-list\n [appGroup]=\"selectedAppGroup\"\n [mobile]=\"mobile\"\n [searchTerm]=\"searchTerm\"\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\n (pinClick)=\"pinClick.emit($event)\"\n ></bt-app-finder-app-list>\n </div>\n <fd-menu\n #menu\n [mobile]=\"deviceSize === 's'\"\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\n >\n <bt-app-finder-group\n *ngIf=\"deviceSize === 's'\"\n [appGroups]=\"appGroups\"\n [selectedId]=\"selectedAppGroupId\"\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\n >\n </bt-app-finder-group>\n </fd-menu>\n </ng-container>\n <ng-template #loading>\n <bsu-mask></bsu-mask>\n </ng-template>\n</div>\n", styles: [":host{display:block;background-color:var(--sapBackgroundColor, #f7f7f7);color:var(--sapTextColor, #32363a)}:host ::ng-deep .fd-list__title{line-height:1.5rem}.wrapper{display:flex;flex-direction:column}fd-toolbar{width:100%}::ng-deep span.fd-toolbar__spacer{display:none}\n"] }]
30
+ }], propDecorators: { appGroups: [{
31
+ type: Input
32
+ }], deviceSize: [{
33
+ type: Input
34
+ }], sideContentSize: [{
35
+ type: Input
36
+ }], selectedAppGroup: [{
37
+ type: Input
38
+ }], selectedAppGroupId: [{
39
+ type: Input
40
+ }], mobile: [{
41
+ type: Input
42
+ }], contentDensity: [{
43
+ type: Input
44
+ }], contentHeight: [{
45
+ type: Input
46
+ }], pinnedAppInAppTileGroups: [{
47
+ type: Input
48
+ }], pinClick: [{
49
+ type: Output
50
+ }], selectedAppGroupIdChange: [{
51
+ type: Output
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZpbmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FwcC1maW5kZXIvYXBwLWZpbmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FwcC1maW5kZXIvYXBwLWZpbmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWhHLE9BQU8sRUFBRSxhQUFhLEVBQThDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7OztBQU9qRyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsYUFBYTtJQU5yRDs7UUFhYSxtQkFBYyxHQUFtQixTQUFTLENBQUM7UUFHMUMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ25ELDZCQUF3QixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FNbkU7SUFIRyxjQUFjLENBQUMsTUFBbUI7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2xDLENBQUM7OytHQWhCUSxrQkFBa0I7bUdBQWxCLGtCQUFrQixpZUNYL0IscTBFQTJEQTsyRkRoRGEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHkgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgTWV0YW9iamVjdERhdGFNb2RlbCwgQWJicmV2YXRpb25EZXZpY2VTaXplIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdidC1hcHAtZmluZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwLWZpbmRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXBwLWZpbmRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZpbmRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGFwcEdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBzaWRlQ29udGVudFNpemU6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZWxlY3RlZEFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQXBwR3JvdXBJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1vYmlsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHkgPSAnY29tcGFjdCc7XG4gICAgQElucHV0KCkgY29udGVudEhlaWdodDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBpbm5lZEFwcEluQXBwVGlsZUdyb3VwczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICAgIEBPdXRwdXQoKSBwaW5DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRBcHBHcm91cElkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xuXG4gICAgb25TZWFyY2hTdWJtaXQoJGV2ZW50OiBTZWFyY2hJbnB1dCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0gPSAkZXZlbnQudGV4dDtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBHcm91cHM7IGVsc2UgbG9hZGluZ1wiPlxuICAgICAgICA8ZmQtdG9vbGJhciBbZmRUeXBlXT1cIidzb2xpZCdcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbZmRNZW51XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCInbWVudTInXCJcbiAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzZWxlY3RlZEFwcEdyb3VwPy5UaXRsZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkZXZpY2VTaXplID09PSAncydcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWFyY2gnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cIm9uU2VhcmNoU3VibWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJbXVwiXG4gICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBvdmVyZmxvdy15OiBhdXRvXCIgW3N0eWxlLmhlaWdodF09XCJjb250ZW50SGVpZ2h0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWdyb3Vwc1wiPlxuICAgICAgICAgICAgICAgIDxidC1hcHAtZmluZGVyLWdyb3VwXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGV2aWNlU2l6ZSAhPT0gJ3MnXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcEdyb3Vwc109XCJhcHBHcm91cHNcIlxuICAgICAgICAgICAgICAgICAgICBbbGlzdE1vZGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZElkXT1cInNlbGVjdGVkQXBwR3JvdXBJZFwiXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZElkQ2hhbmdlKT1cInNlbGVjdGVkQXBwR3JvdXBJZENoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2J0LWFwcC1maW5kZXItZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidC1hcHAtZmluZGVyLWFwcC1saXN0XG4gICAgICAgICAgICAgICAgW2FwcEdyb3VwXT1cInNlbGVjdGVkQXBwR3JvdXBcIlxuICAgICAgICAgICAgICAgIFttb2JpbGVdPVwibW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgICBbcGlubmVkQXBwSW5BcHBUaWxlR3JvdXBzXT1cInBpbm5lZEFwcEluQXBwVGlsZUdyb3Vwc1wiXG4gICAgICAgICAgICAgICAgKHBpbkNsaWNrKT1cInBpbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9idC1hcHAtZmluZGVyLWFwcC1saXN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZkLW1lbnVcbiAgICAgICAgICAgICNtZW51XG4gICAgICAgICAgICBbbW9iaWxlXT1cImRldmljZVNpemUgPT09ICdzJ1wiXG4gICAgICAgICAgICBbbW9iaWxlQ29uZmlnXT1cInsgdGl0bGU6ICdHcm91cHMnIHwgYmJiVHJhbnNsYXRlLCBoYXNDbG9zZUJ1dHRvbjogdHJ1ZSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGJ0LWFwcC1maW5kZXItZ3JvdXBcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRldmljZVNpemUgPT09ICdzJ1wiXG4gICAgICAgICAgICAgICAgW2FwcEdyb3Vwc109XCJhcHBHcm91cHNcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZElkXT1cInNlbGVjdGVkQXBwR3JvdXBJZFwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSWRDaGFuZ2UpPVwibWVudS5jbG9zZSgpOyBzZWxlY3RlZEFwcEdyb3VwSWRDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYnQtYXBwLWZpbmRlci1ncm91cD5cbiAgICAgICAgPC9mZC1tZW51PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICAgICAgPGJzdS1tYXNrPjwvYnN1LW1hc2s+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -0,0 +1,40 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@fundamental-ngx/core/avatar";
6
+ import * as i3 from "@fundamental-ngx/core/button";
7
+ import * as i4 from "@fundamental-ngx/core/card";
8
+ import * as i5 from "@fundamental-ngx/core/fixed-card-layout";
9
+ import * as i6 from "@fundamental-ngx/core/title";
10
+ import * as i7 from "barsa-novin-ray-core";
11
+ import * as i8 from "../directives/emptylist.directive";
12
+ export class AppFinderAppListComponent extends BaseComponent {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.pinClick = new EventEmitter();
16
+ this.appTileGroupsPinChange = new EventEmitter();
17
+ }
18
+ onPinTap(app) {
19
+ this.pinClick.emit(app);
20
+ }
21
+ }
22
+ AppFinderAppListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderAppListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
23
+ AppFinderAppListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AppFinderAppListComponent, selector: "bt-app-finder-app-list", inputs: { appGroup: "appGroup", mobile: "mobile", searchTerm: "searchTerm", pinnedAppInAppTileGroups: "pinnedAppInAppTileGroups" }, outputs: { pinClick: "pinClick", appTileGroupsPinChange: "appTileGroupsPinChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"appGroup\">\r\n <h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n <ng-container *ngIf=\"(appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0\">\r\n <fd-fixed-card-layout [disableDragDrop]=\"true\">\r\n <ng-container\r\n *ngFor=\"let app of appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }; let i = index\"\r\n >\r\n <fd-card *fdCardDef=\"i\">\r\n <fd-card-header [dynCommand]=\"app.DynamicCommand\" [mo]=\"app\">\r\n <fd-avatar *ngIf=\"app.Icon\" [glyph]=\"app.Icon\" size=\"s\" [title]=\"app.Title\"></fd-avatar>\r\n <h2 fd-card-title class=\"header-title\">\r\n {{ app.Title }}\r\n </h2>\r\n <h3 fd-card-subtitle></h3>\r\n </fd-card-header>\r\n <fd-card-content>\r\n <button\r\n fd-button\r\n [glyph]=\"'pushpin-off'\"\r\n [fdType]=\"\r\n pinnedAppInAppTileGroups[app.Id]\r\n ? pinnedAppInAppTileGroups[app.Id].length\r\n ? 'emphasized'\r\n : 'standard'\r\n : app.$HasPinned\r\n ? 'emphasized'\r\n : 'standard'\r\n \"\r\n (click)=\"onPinTap(app)\"\r\n ></button>\r\n </fd-card-content>\r\n </fd-card>\r\n </ng-container>\r\n </fd-fixed-card-layout>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{display:block;flex-grow:1;padding:1rem}button{cursor:pointer}h3{padding-bottom:.5rem}fd-fixed-card-layout,h5{padding-bottom:2rem;display:block}.header-title{padding-bottom:30px}fd-card-content{padding:10px;cursor:default}@media (max-width: 767px){:host{padding:0 1rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i4.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "component", type: i4.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i4.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i4.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i5.FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: ["disableDragDrop", "dragStartDelay", "cardMinimumWidth", "columnsWidthConfig", "maxColumns"], outputs: ["layoutChange", "cardDraggedDropped"] }, { kind: "directive", type: i5.CardDefinitionDirective, selector: "[fdCardDef]", inputs: ["fdCardDef"] }, { kind: "component", type: i6.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "directive", type: i8.EmptyListDirective, selector: "[emptyList]", inputs: ["emptyList"] }, { kind: "pipe", type: i7.FilterStringPipe, name: "filterStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderAppListComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'bt-app-finder-app-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"appGroup\">\r\n <h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n <ng-container *ngIf=\"(appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0\">\r\n <fd-fixed-card-layout [disableDragDrop]=\"true\">\r\n <ng-container\r\n *ngFor=\"let app of appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }; let i = index\"\r\n >\r\n <fd-card *fdCardDef=\"i\">\r\n <fd-card-header [dynCommand]=\"app.DynamicCommand\" [mo]=\"app\">\r\n <fd-avatar *ngIf=\"app.Icon\" [glyph]=\"app.Icon\" size=\"s\" [title]=\"app.Title\"></fd-avatar>\r\n <h2 fd-card-title class=\"header-title\">\r\n {{ app.Title }}\r\n </h2>\r\n <h3 fd-card-subtitle></h3>\r\n </fd-card-header>\r\n <fd-card-content>\r\n <button\r\n fd-button\r\n [glyph]=\"'pushpin-off'\"\r\n [fdType]=\"\r\n pinnedAppInAppTileGroups[app.Id]\r\n ? pinnedAppInAppTileGroups[app.Id].length\r\n ? 'emphasized'\r\n : 'standard'\r\n : app.$HasPinned\r\n ? 'emphasized'\r\n : 'standard'\r\n \"\r\n (click)=\"onPinTap(app)\"\r\n ></button>\r\n </fd-card-content>\r\n </fd-card>\r\n </ng-container>\r\n </fd-fixed-card-layout>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{display:block;flex-grow:1;padding:1rem}button{cursor:pointer}h3{padding-bottom:.5rem}fd-fixed-card-layout,h5{padding-bottom:2rem;display:block}.header-title{padding-bottom:30px}fd-card-content{padding:10px;cursor:default}@media (max-width: 767px){:host{padding:0 1rem}}\n"] }]
27
+ }], propDecorators: { appGroup: [{
28
+ type: Input
29
+ }], mobile: [{
30
+ type: Input
31
+ }], searchTerm: [{
32
+ type: Input
33
+ }], pinnedAppInAppTileGroups: [{
34
+ type: Input
35
+ }], pinClick: [{
36
+ type: Output
37
+ }], appTileGroupsPinChange: [{
38
+ type: Output
39
+ }] } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZpbmRlci1hcHAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FwcC1maW5kZXItYXBwLWxpc3QvYXBwLWZpbmRlci1hcHAtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FwcC1maW5kZXItYXBwLWxpc3QvYXBwLWZpbmRlci1hcHAtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQXVCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFRMUUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGFBQWE7SUFONUQ7O1FBWWMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ25ELDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUcvQyxDQUFDO0tBSVI7SUFIRyxRQUFRLENBQUMsR0FBd0I7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7c0hBYlEseUJBQXlCOzBHQUF6Qix5QkFBeUIsOFNDVHRDLGsyREFvQ0E7MkZEM0JhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDSSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIE1ldGFvYmplY3REYXRhTW9kZWwgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IEFwcFRpbGVHcm91cFBpbiB9IGZyb20gJy4uL21vZGVscyc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdidC1hcHAtZmluZGVyLWFwcC1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHAtZmluZGVyLWFwcC1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2FwcC1maW5kZXItYXBwLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBGaW5kZXJBcHBMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIEBJbnB1dCgpIG1vYmlsZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNlYXJjaFRlcm06IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHBpbm5lZEFwcEluQXBwVGlsZUdyb3VwczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xyXG5cclxuICAgIEBPdXRwdXQoKSBwaW5DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIEBPdXRwdXQoKSBhcHBUaWxlR3JvdXBzUGluQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICAgICAgYXBwVGlsZUdyb3Vwc1BpbjogQXBwVGlsZUdyb3VwUGluW107XHJcbiAgICAgICAgYXBwOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgfT4oKTtcclxuICAgIG9uUGluVGFwKGFwcDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGluQ2xpY2suZW1pdChhcHApO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBHcm91cFwiPlxyXG4gICAgPGg1IGZkLXRpdGxlICplbXB0eUxpc3Q9XCJhcHBHcm91cC5BcHBzXCI+PC9oNT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoYXBwR3JvdXAuQXBwcyB8IGZpbHRlclN0cjogeyBUaXRsZTogc2VhcmNoVGVybSwgbW9kZTogJ2NvbnRhaW5zJyB9KS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGZkLWZpeGVkLWNhcmQtbGF5b3V0IFtkaXNhYmxlRHJhZ0Ryb3BdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXBwIG9mIGFwcEdyb3VwLkFwcHMgfCBmaWx0ZXJTdHI6IHsgVGl0bGU6IHNlYXJjaFRlcm0sIG1vZGU6ICdjb250YWlucycgfTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxmZC1jYXJkICpmZENhcmREZWY9XCJpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWNhcmQtaGVhZGVyIFtkeW5Db21tYW5kXT1cImFwcC5EeW5hbWljQ29tbWFuZFwiIFttb109XCJhcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWF2YXRhciAqbmdJZj1cImFwcC5JY29uXCIgW2dseXBoXT1cImFwcC5JY29uXCIgc2l6ZT1cInNcIiBbdGl0bGVdPVwiYXBwLlRpdGxlXCI+PC9mZC1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBmZC1jYXJkLXRpdGxlIGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHAuVGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGZkLWNhcmQtc3VidGl0bGU+PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWNhcmQtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidwdXNocGluLW9mZidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRBcHBJbkFwcFRpbGVHcm91cHNbYXBwLklkXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBpbm5lZEFwcEluQXBwVGlsZUdyb3Vwc1thcHAuSWRdLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZW1waGFzaXplZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3N0YW5kYXJkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFwcC4kSGFzUGlubmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2VtcGhhc2l6ZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3N0YW5kYXJkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblBpblRhcChhcHApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZmQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPC9mZC1jYXJkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2ZkLWZpeGVkLWNhcmQtbGF5b3V0PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@fundamental-ngx/core/list";
6
+ import * as i3 from "@fundamental-ngx/core/menu";
7
+ export class AppFinderGroupComponent extends BaseComponent {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.selectedIdChange = new EventEmitter();
11
+ }
12
+ ngOnChanges(changes) {
13
+ super.ngOnChanges(changes);
14
+ if (changes.appGroups && !changes.appGroups.firstChange) {
15
+ const appGroups = changes.appGroups.currentValue;
16
+ if (appGroups && appGroups.length > 0 && !this.selectedId) {
17
+ this.selectedIdChange.emit(appGroups[0].Id);
18
+ }
19
+ }
20
+ }
21
+ OnMenuGroupClick(group) {
22
+ this.selectedIdChange.emit(group.Id);
23
+ }
24
+ OnGroupClick(group) {
25
+ this.selectedIdChange.emit(group.Id);
26
+ }
27
+ }
28
+ AppFinderGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
29
+ AppFinderGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AppFinderGroupComponent, selector: "bt-app-finder-group", inputs: { appGroups: "appGroups", selectedId: "selectedId", listMode: "listMode" }, outputs: { selectedIdChange: "selectedIdChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"listMode; else menuTpl\">\n <div class=\"app-groups\">\n <ul fd-list [selection]=\"true\">\n <li\n fd-list-item\n *ngFor=\"let group of appGroups; let i = index\"\n [selected]=\"group.Id === selectedId\"\n (click)=\"OnGroupClick(group)\"\n >\n <span fd-list-title>\n {{ group.Title }}\n </span>\n </li>\n </ul>\n </div>\n</ng-container>\n<ng-template #menuTpl>\n <li *ngFor=\"let group of appGroups; let i = index\" fd-menu-item [selected]=\"group.Id === selectedId\">\n <a fd-menu-interactive (click)=\"OnMenuGroupClick(group)\">\n <span fd-menu-title>\n {{ group.Title }}\n </span>\n </a>\n </li>\n</ng-template>\n", styles: [".app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i2.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i2.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i3.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i3.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i3.MenuTitleDirective, selector: "[fd-menu-title]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderGroupComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'bt-app-finder-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"listMode; else menuTpl\">\n <div class=\"app-groups\">\n <ul fd-list [selection]=\"true\">\n <li\n fd-list-item\n *ngFor=\"let group of appGroups; let i = index\"\n [selected]=\"group.Id === selectedId\"\n (click)=\"OnGroupClick(group)\"\n >\n <span fd-list-title>\n {{ group.Title }}\n </span>\n </li>\n </ul>\n </div>\n</ng-container>\n<ng-template #menuTpl>\n <li *ngFor=\"let group of appGroups; let i = index\" fd-menu-item [selected]=\"group.Id === selectedId\">\n <a fd-menu-interactive (click)=\"OnMenuGroupClick(group)\">\n <span fd-menu-title>\n {{ group.Title }}\n </span>\n </a>\n </li>\n</ng-template>\n", styles: [".app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"] }]
33
+ }], propDecorators: { appGroups: [{
34
+ type: Input
35
+ }], selectedId: [{
36
+ type: Input
37
+ }], listMode: [{
38
+ type: Input
39
+ }], selectedIdChange: [{
40
+ type: Output
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZpbmRlci1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FwcC1maW5kZXItZ3JvdXAvYXBwLWZpbmRlci1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FwcC1maW5kZXItZ3JvdXAvYXBwLWZpbmRlci1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLHNCQUFzQixDQUFDOzs7OztBQU8xRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsYUFBYTtJQU4xRDs7UUFVYyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBaUIzRDtJQWhCRyxXQUFXLENBQUMsT0FBc0I7UUFDOUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtZQUNyRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztZQUNqRCxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQy9DO1NBQ0o7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBMEI7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUEwQjtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOztvSEFwQlEsdUJBQXVCO3dHQUF2Qix1QkFBdUIsOE9DakJwQywyMUJBeUJBOzJGRFJhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnQtYXBwLWZpbmRlci1ncm91cCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwLWZpbmRlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hcHAtZmluZGVyLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwRmluZGVyR3JvdXBDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIGFwcEdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xyXG4gICAgQElucHV0KCkgc2VsZWN0ZWRJZDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbGlzdE1vZGU6IGJvb2xlYW47XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmFwcEdyb3VwcyAmJiAhY2hhbmdlcy5hcHBHcm91cHMuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgY29uc3QgYXBwR3JvdXBzID0gY2hhbmdlcy5hcHBHcm91cHMuY3VycmVudFZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoYXBwR3JvdXBzICYmIGFwcEdyb3Vwcy5sZW5ndGggPiAwICYmICF0aGlzLnNlbGVjdGVkSWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZENoYW5nZS5lbWl0KGFwcEdyb3Vwc1swXS5JZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgT25NZW51R3JvdXBDbGljayhncm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZENoYW5nZS5lbWl0KGdyb3VwLklkKTtcclxuICAgIH1cclxuICAgIE9uR3JvdXBDbGljayhncm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZENoYW5nZS5lbWl0KGdyb3VwLklkKTtcclxuICAgIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdE1vZGU7IGVsc2UgbWVudVRwbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtZ3JvdXBzXCI+XG4gICAgICAgIDx1bCBmZC1saXN0IFtzZWxlY3Rpb25dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGFwcEdyb3VwczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImdyb3VwLklkID09PSBzZWxlY3RlZElkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiT25Hcm91cENsaWNrKGdyb3VwKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXAuVGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI21lbnVUcGw+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBhcHBHcm91cHM7IGxldCBpID0gaW5kZXhcIiBmZC1tZW51LWl0ZW0gW3NlbGVjdGVkXT1cImdyb3VwLklkID09PSBzZWxlY3RlZElkXCI+XG4gICAgICAgIDxhIGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cIk9uTWVudUdyb3VwQ2xpY2soZ3JvdXApXCI+XG4gICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxuICAgICAgICAgICAgICAgIHt7IGdyb3VwLlRpdGxlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,121 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject, BehaviorSubject, combineLatest } from 'rxjs';
3
+ import { BarsaApi } from 'barsa-novin-ray-core';
4
+ import { distinctUntilChanged, map } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "barsa-novin-ray-core";
7
+ import * as i2 from "./tiles.service";
8
+ export class AppFinderService {
9
+ constructor(_portalService, _tileService) {
10
+ this._portalService = _portalService;
11
+ this._tileService = _tileService;
12
+ this._appGroupsSource = new BehaviorSubject([]);
13
+ this._OnDestroy$ = new Subject();
14
+ this._selectedAppGroupIdSource = new Subject();
15
+ this._pinnedAppInAppTileGroupsSource = new BehaviorSubject({});
16
+ this.loadAppGroups();
17
+ this.deviceSize$ = this._tileService.deviceSize$;
18
+ this.pinnedAppInAppTileGroups$ = this._pinnedAppInAppTileGroupsSource.asObservable();
19
+ this.appGroups$ = this._appGroupsSource.asObservable();
20
+ this.selectedAppGroupId$ = this._selectedAppGroupIdSource.asObservable().pipe(distinctUntilChanged());
21
+ this.selectedAppGroup$ = combineLatest([this.appGroups$, this.selectedAppGroupId$]).pipe(map(([moDataList, selectedId]) => moDataList?.find((c) => c.Id === selectedId)));
22
+ }
23
+ get deviceSize() {
24
+ return this._portalService.deviceSize;
25
+ }
26
+ get appTileGroups() {
27
+ return this._tileService.appTileGroups?.MoDataList;
28
+ }
29
+ ngOnDestroy() {
30
+ this._OnDestroy$.next();
31
+ }
32
+ loadAppGroups() {
33
+ this._portalService
34
+ .ReportExecute('UserAppGroups')
35
+ .subscribe((allApps) => this._nextAllApps(allApps.MoDataList));
36
+ }
37
+ selectAppGroup(appGroupId) {
38
+ const appGroups = this._appGroupsSource.getValue();
39
+ const group = appGroups.find((c) => c.Id === appGroupId);
40
+ if (group) {
41
+ this._selectedAppGroupIdSource.next(appGroupId);
42
+ this.loadAppsByAppGroup(appGroups, group);
43
+ }
44
+ }
45
+ loadAppsByAppGroup(appGroups, appGroup) {
46
+ if (appGroup.Apps) {
47
+ return;
48
+ }
49
+ const reportWrapper = BarsaApi.Bw.RunBlMethod('LoadAppsByAppGroup', appGroup.Id);
50
+ const moForReport = reportWrapper.Unwrap();
51
+ appGroup.Apps = appGroup.Apps ?? [];
52
+ const apps = moForReport.MoDataList;
53
+ if (apps.length > 0) {
54
+ const customColumns = Object.keys(apps[0]).filter((c) => c.indexOf('$Caption') > -1 && !c.startsWith('$'));
55
+ apps.forEach((app) => {
56
+ customColumns.forEach((column) => {
57
+ app.$HasPinned = app.$HasPinned || Number(app[column.split('$Caption')[0]]);
58
+ });
59
+ });
60
+ }
61
+ appGroup.Apps = [...appGroup.Apps, ...apps];
62
+ this._nextAllApps(appGroups);
63
+ }
64
+ loadPinnedAppInTileGroups(app) {
65
+ const appId = app.Id;
66
+ const val = this._pinnedAppInAppTileGroupsSource.getValue();
67
+ if (val[appId]) {
68
+ return val;
69
+ }
70
+ const reportWrapper = BarsaApi.Bw.RunBlMethod('PinnedAppInTileGroups', appId);
71
+ const moForReport = reportWrapper.Unwrap();
72
+ val[appId] = val[appId] ?? [];
73
+ const apps = moForReport.MoDataList;
74
+ if (apps.length > 0) {
75
+ apps.forEach((itemApp) => {
76
+ const predefined = itemApp.Id.Id;
77
+ const userSetting = itemApp.UserAppTileGroupSetting?.Id;
78
+ if (predefined) {
79
+ val[appId] = [...val[appId], predefined];
80
+ }
81
+ if (userSetting) {
82
+ val[appId] = [...val[appId], userSetting];
83
+ }
84
+ });
85
+ }
86
+ this._pinnedAppInAppTileGroupsSource.next(val);
87
+ return val;
88
+ }
89
+ pinTileChanged(appTileGroups, app, callback) {
90
+ this._tileService.pinTileChanged(appTileGroups, app, (settings) => {
91
+ const val = this._pinnedAppInAppTileGroupsSource.getValue();
92
+ const appId = app.Id;
93
+ for (let i = 0; i < appTileGroups.length; i++) {
94
+ const appTileSetting = settings[i];
95
+ const appTileGroupSettingId = appTileSetting.UserAppTileGroupSettingId;
96
+ const appTileGroupId = appTileSetting.AppTileGroupId;
97
+ if (appTileGroups[i].visible) {
98
+ val[appId] = [...val[appId], appTileGroupSettingId, appTileGroupId];
99
+ }
100
+ else {
101
+ val[appId] = val[appId].filter((c) => c !== appTileGroupSettingId && c !== appTileGroupId);
102
+ }
103
+ }
104
+ this._pinnedAppInAppTileGroupsSource.next({ ...val });
105
+ callback();
106
+ });
107
+ }
108
+ _nextAllApps(appGroups) {
109
+ const newAppGroups = appGroups ?? this._appGroupsSource.getValue();
110
+ this._appGroupsSource.next([...newAppGroups]);
111
+ }
112
+ }
113
+ AppFinderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderService, deps: [{ token: i1.PortalService }, { token: i2.TilesService }], target: i0.ɵɵFactoryTarget.Injectable });
114
+ AppFinderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderService, providedIn: 'root' });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderService, decorators: [{
116
+ type: Injectable,
117
+ args: [{
118
+ providedIn: 'root'
119
+ }]
120
+ }], ctorParameters: function () { return [{ type: i1.PortalService }, { type: i2.TilesService }]; } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZpbmRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9hcHAtZmluZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFM0UsT0FBTyxFQUVILFFBQVEsRUFJWCxNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUszRCxNQUFNLE9BQU8sZ0JBQWdCO0lBY3pCLFlBQW9CLGNBQTZCLEVBQVUsWUFBMEI7UUFBakUsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVA3RSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsRUFBRSxDQUFDLENBQUM7UUFDbEUsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWxDLDhCQUF5QixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDbEQsb0NBQStCLEdBQUcsSUFBSSxlQUFlLENBRTFELEVBQUUsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDakQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BGLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQ2xGLENBQUM7SUFDTixDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUM7SUFDdkQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGNBQWM7YUFDZCxhQUFhLENBQUMsZUFBZSxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsY0FBYyxDQUFDLFVBQWtCO1FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUNELGtCQUFrQixDQUFDLFNBQWdDLEVBQUUsUUFBNkI7UUFDOUUsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sV0FBVyxHQUFxQixhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0QsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFM0csSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzdCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QseUJBQXlCLENBQUMsR0FBd0I7UUFHOUMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUQsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDWixPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUUsTUFBTSxXQUFXLEdBQXFCLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUU3RCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU5QixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNyQixNQUFNLFVBQVUsR0FBSSxPQUFPLENBQUMsRUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxVQUFVLEVBQUU7b0JBQ1osR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQzVDO2dCQUNELElBQUksV0FBVyxFQUFFO29CQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2lCQUM3QztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUNELGNBQWMsQ0FBQyxhQUFnQyxFQUFFLEdBQXdCLEVBQUUsUUFBUTtRQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDOUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFFckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUMseUJBQXlCLENBQUM7Z0JBQ3ZFLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUM7Z0JBQ3JELElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtvQkFDMUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxDQUFDLENBQUM7aUJBQ3ZFO3FCQUFNO29CQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUsscUJBQXFCLElBQUksQ0FBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDO2lCQUM5RjthQUNKO1lBQ0QsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN0RCxRQUFRLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNPLFlBQVksQ0FBQyxTQUFpQztRQUNsRCxNQUFNLFlBQVksR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7NkdBdEhRLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTsyRkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXG4gICAgQmFyc2FBcGksXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBNb0ZvclJlcG9ydE1vZGVsLFxuICAgIFBvcnRhbFNlcnZpY2Vcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi90aWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFRpbGVHcm91cFBpbiB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwRmluZGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcGlubmVkQXBwSW5BcHBUaWxlR3JvdXBzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+O1xuICAgIGFwcEdyb3VwcyQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPjtcblxuICAgIHNlbGVjdGVkQXBwR3JvdXBJZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBzZWxlY3RlZEFwcEdyb3VwJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsIHwgdW5kZWZpbmVkPjtcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTwncycgfCAnbScgfCAnbCcgfCAneGwnPjtcbiAgICBwcml2YXRlIF9hcHBHcm91cHNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWxbXT4oW10pO1xuICAgIHByaXZhdGUgX09uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRBcHBHcm91cElkU291cmNlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgX3Bpbm5lZEFwcEluQXBwVGlsZUdyb3Vwc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTtcbiAgICB9Pih7fSk7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSwgcHJpdmF0ZSBfdGlsZVNlcnZpY2U6IFRpbGVzU2VydmljZSkge1xuICAgICAgICB0aGlzLmxvYWRBcHBHcm91cHMoKTtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3RpbGVTZXJ2aWNlLmRldmljZVNpemUkO1xuICAgICAgICB0aGlzLnBpbm5lZEFwcEluQXBwVGlsZUdyb3VwcyQgPSB0aGlzLl9waW5uZWRBcHBJbkFwcFRpbGVHcm91cHNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuYXBwR3JvdXBzJCA9IHRoaXMuX2FwcEdyb3Vwc1NvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFwcEdyb3VwSWQkID0gdGhpcy5fc2VsZWN0ZWRBcHBHcm91cElkU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBcHBHcm91cCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFwcEdyb3VwcyQsIHRoaXMuc2VsZWN0ZWRBcHBHcm91cElkJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFttb0RhdGFMaXN0LCBzZWxlY3RlZElkXSkgPT4gbW9EYXRhTGlzdD8uZmluZCgoYykgPT4gYy5JZCA9PT0gc2VsZWN0ZWRJZCkpXG4gICAgICAgICk7XG4gICAgfVxuICAgIGdldCBkZXZpY2VTaXplKCk6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemU7XG4gICAgfVxuICAgIGdldCBhcHBUaWxlR3JvdXBzKCk6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aWxlU2VydmljZS5hcHBUaWxlR3JvdXBzPy5Nb0RhdGFMaXN0O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9PbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB9XG4gICAgbG9hZEFwcEdyb3VwcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZVxuICAgICAgICAgICAgLlJlcG9ydEV4ZWN1dGUoJ1VzZXJBcHBHcm91cHMnKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYWxsQXBwcykgPT4gdGhpcy5fbmV4dEFsbEFwcHMoYWxsQXBwcy5Nb0RhdGFMaXN0KSk7XG4gICAgfVxuICAgIHNlbGVjdEFwcEdyb3VwKGFwcEdyb3VwSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcHBHcm91cHMgPSB0aGlzLl9hcHBHcm91cHNTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBhcHBHcm91cHMuZmluZCgoYykgPT4gYy5JZCA9PT0gYXBwR3JvdXBJZCk7XG4gICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHBHcm91cElkU291cmNlLm5leHQoYXBwR3JvdXBJZCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRBcHBzQnlBcHBHcm91cChhcHBHcm91cHMsIGdyb3VwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsb2FkQXBwc0J5QXBwR3JvdXAoYXBwR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmIChhcHBHcm91cC5BcHBzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVwb3J0V3JhcHBlciA9IEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kKCdMb2FkQXBwc0J5QXBwR3JvdXAnLCBhcHBHcm91cC5JZCk7XG4gICAgICAgIGNvbnN0IG1vRm9yUmVwb3J0OiBNb0ZvclJlcG9ydE1vZGVsID0gcmVwb3J0V3JhcHBlci5VbndyYXAoKTtcbiAgICAgICAgYXBwR3JvdXAuQXBwcyA9IGFwcEdyb3VwLkFwcHMgPz8gW107XG4gICAgICAgIGNvbnN0IGFwcHMgPSBtb0ZvclJlcG9ydC5Nb0RhdGFMaXN0O1xuICAgICAgICBpZiAoYXBwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21Db2x1bW5zID0gT2JqZWN0LmtleXMoYXBwc1swXSkuZmlsdGVyKChjKSA9PiBjLmluZGV4T2YoJyRDYXB0aW9uJykgPiAtMSAmJiAhYy5zdGFydHNXaXRoKCckJykpO1xuXG4gICAgICAgICAgICBhcHBzLmZvckVhY2goKGFwcCkgPT4ge1xuICAgICAgICAgICAgICAgIGN1c3RvbUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcC4kSGFzUGlubmVkID0gYXBwLiRIYXNQaW5uZWQgfHwgTnVtYmVyKGFwcFtjb2x1bW4uc3BsaXQoJyRDYXB0aW9uJylbMF1dKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGFwcEdyb3VwLkFwcHMgPSBbLi4uYXBwR3JvdXAuQXBwcywgLi4uYXBwc107XG4gICAgICAgIHRoaXMuX25leHRBbGxBcHBzKGFwcEdyb3Vwcyk7XG4gICAgfVxuICAgIGxvYWRQaW5uZWRBcHBJblRpbGVHcm91cHMoYXBwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTtcbiAgICB9IHtcbiAgICAgICAgY29uc3QgYXBwSWQgPSBhcHAuSWQ7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuX3Bpbm5lZEFwcEluQXBwVGlsZUdyb3Vwc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAodmFsW2FwcElkXSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXBvcnRXcmFwcGVyID0gQmFyc2FBcGkuQncuUnVuQmxNZXRob2QoJ1Bpbm5lZEFwcEluVGlsZUdyb3VwcycsIGFwcElkKTtcbiAgICAgICAgY29uc3QgbW9Gb3JSZXBvcnQ6IE1vRm9yUmVwb3J0TW9kZWwgPSByZXBvcnRXcmFwcGVyLlVud3JhcCgpO1xuXG4gICAgICAgIHZhbFthcHBJZF0gPSB2YWxbYXBwSWRdID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IGFwcHMgPSBtb0ZvclJlcG9ydC5Nb0RhdGFMaXN0O1xuICAgICAgICBpZiAoYXBwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBhcHBzLmZvckVhY2goKGl0ZW1BcHApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVkZWZpbmVkID0gKGl0ZW1BcHAuSWQgYXMgYW55KS5JZDtcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VyU2V0dGluZyA9IGl0ZW1BcHAuVXNlckFwcFRpbGVHcm91cFNldHRpbmc/LklkO1xuICAgICAgICAgICAgICAgIGlmIChwcmVkZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbFthcHBJZF0gPSBbLi4udmFsW2FwcElkXSwgcHJlZGVmaW5lZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh1c2VyU2V0dGluZykge1xuICAgICAgICAgICAgICAgICAgICB2YWxbYXBwSWRdID0gWy4uLnZhbFthcHBJZF0sIHVzZXJTZXR0aW5nXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9waW5uZWRBcHBJbkFwcFRpbGVHcm91cHNTb3VyY2UubmV4dCh2YWwpO1xuICAgICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICBwaW5UaWxlQ2hhbmdlZChhcHBUaWxlR3JvdXBzOiBBcHBUaWxlR3JvdXBQaW5bXSwgYXBwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBjYWxsYmFjayk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWxlU2VydmljZS5waW5UaWxlQ2hhbmdlZChhcHBUaWxlR3JvdXBzLCBhcHAsIChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gdGhpcy5fcGlubmVkQXBwSW5BcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCBhcHBJZCA9IGFwcC5JZDtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcHBUaWxlR3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXBwVGlsZVNldHRpbmcgPSBzZXR0aW5nc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhcHBUaWxlR3JvdXBTZXR0aW5nSWQgPSBhcHBUaWxlU2V0dGluZy5Vc2VyQXBwVGlsZUdyb3VwU2V0dGluZ0lkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFwcFRpbGVHcm91cElkID0gYXBwVGlsZVNldHRpbmcuQXBwVGlsZUdyb3VwSWQ7XG4gICAgICAgICAgICAgICAgaWYgKGFwcFRpbGVHcm91cHNbaV0udmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB2YWxbYXBwSWRdID0gWy4uLnZhbFthcHBJZF0sIGFwcFRpbGVHcm91cFNldHRpbmdJZCwgYXBwVGlsZUdyb3VwSWRdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbFthcHBJZF0gPSB2YWxbYXBwSWRdLmZpbHRlcigoYykgPT4gYyAhPT0gYXBwVGlsZUdyb3VwU2V0dGluZ0lkICYmIGMgIT09IGFwcFRpbGVHcm91cElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9waW5uZWRBcHBJbkFwcFRpbGVHcm91cHNTb3VyY2UubmV4dCh7IC4uLnZhbCB9KTtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF9uZXh0QWxsQXBwcyhhcHBHcm91cHM/OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3QXBwR3JvdXBzID0gYXBwR3JvdXBzID8/IHRoaXMuX2FwcEdyb3Vwc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl9hcHBHcm91cHNTb3VyY2UubmV4dChbLi4ubmV3QXBwR3JvdXBzXSk7XG4gICAgfVxufVxuIl19