@openziti/ziti-console-lib 0.4.9 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/assets/styles/global.scss +30 -0
  2. package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +11 -3
  3. package/esm2022/lib/features/data-table/data-table-filter.service.mjs +76 -5
  4. package/esm2022/lib/features/data-table/data-table.component.mjs +13 -4
  5. package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +11 -5
  6. package/esm2022/lib/features/preview-list/preview-list.component.mjs +20 -4
  7. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -1
  8. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +1 -1
  9. package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +2 -2
  10. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +1 -1
  11. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +3 -3
  12. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +106 -21
  13. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +9 -2
  14. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +1 -1
  15. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +1 -1
  16. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +248 -0
  17. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.service.mjs +131 -0
  18. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +2 -4
  19. package/esm2022/lib/models/terminator.mjs +14 -0
  20. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +1 -1
  21. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +1 -1
  22. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +1 -1
  23. package/esm2022/lib/pages/identities/identities-page.component.mjs +1 -1
  24. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +1 -1
  25. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +1 -1
  26. package/esm2022/lib/pages/services/services-page.component.mjs +1 -1
  27. package/esm2022/lib/pages/terminators/terminators-page.component.mjs +96 -0
  28. package/esm2022/lib/pages/terminators/terminators-page.service.mjs +185 -0
  29. package/esm2022/lib/services/ziti-controller-data.service.mjs +7 -3
  30. package/esm2022/lib/services/ziti-data.service.mjs +1 -1
  31. package/esm2022/lib/version.mjs +2 -2
  32. package/esm2022/lib/ziti-console-lib.module.mjs +20 -8
  33. package/esm2022/public-api.mjs +6 -1
  34. package/fesm2022/openziti-ziti-console-lib.mjs +4168 -3343
  35. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  36. package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts +1 -0
  37. package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +1 -1
  38. package/lib/features/data-table/data-table-filter.service.d.ts +11 -1
  39. package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -1
  40. package/lib/features/data-table/data-table.component.d.ts +4 -1
  41. package/lib/features/data-table/data-table.component.d.ts.map +1 -1
  42. package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +3 -1
  43. package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +1 -1
  44. package/lib/features/preview-list/preview-list.component.d.ts +2 -1
  45. package/lib/features/preview-list/preview-list.component.d.ts.map +1 -1
  46. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +1 -1
  47. package/lib/features/projectable-forms/service/service-form.component.d.ts +1 -1
  48. package/lib/features/projectable-forms/service/service-form.service.d.ts +16 -2
  49. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
  50. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
  51. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +59 -0
  52. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +1 -0
  53. package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts +33 -0
  54. package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts.map +1 -0
  55. package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +1 -1
  56. package/lib/models/terminator.d.ts +11 -0
  57. package/lib/models/terminator.d.ts.map +1 -0
  58. package/lib/pages/terminators/terminators-page.component.d.ts +29 -0
  59. package/lib/pages/terminators/terminators-page.component.d.ts.map +1 -0
  60. package/lib/pages/terminators/terminators-page.service.d.ts +31 -0
  61. package/lib/pages/terminators/terminators-page.service.d.ts.map +1 -0
  62. package/lib/services/ziti-controller-data.service.d.ts +1 -1
  63. package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
  64. package/lib/services/ziti-data.service.d.ts +1 -1
  65. package/lib/services/ziti-data.service.d.ts.map +1 -1
  66. package/lib/ziti-console-lib.module.d.ts +20 -18
  67. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/public-api.d.ts +5 -0
  70. package/public-api.d.ts.map +1 -1
@@ -23,6 +23,8 @@ class FilterBarComponent {
23
23
  constructor(filterService) {
24
24
  this.filterService = filterService;
25
25
  this._filters = [];
26
+ this.filterName = 'name';
27
+ this.filterColumn = 'name';
26
28
  this.startCount = '-';
27
29
  this.endCount = '-';
28
30
  this.totalCount = '-';
@@ -68,8 +70,8 @@ class FilterBarComponent {
68
70
  }
69
71
  inputChanged() {
70
72
  const filterObj = {
71
- filterName: 'name',
72
- columnId: 'name',
73
+ filterName: this.filterName,
74
+ columnId: this.filterColumn,
73
75
  value: this.filterString,
74
76
  label: this.filterString,
75
77
  };
@@ -79,13 +81,17 @@ class FilterBarComponent {
79
81
  this.filterService.removeFilter(filterObj);
80
82
  }
81
83
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterBarComponent, deps: [{ token: i1.DataTableFilterService }], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterBarComponent, selector: "lib-table-filter-bar", inputs: { startCount: "startCount", endCount: "endCount", totalCount: "totalCount", currentPage: "currentPage" }, ngImport: i0, template: "<div class=\"filters\">\n <input\n id=\"SearchFilter\"\n data-defined=\"search\"\n type=\"text\"\n class=\"search\"\n placeholder=\"Type to Filter\"\n (keyup)=\"inputChangedDebounced()\"\n [(ngModel)]=\"filterString\"\n />\n <div class=\"clear icon-clear\" data-defined=\"clear\"></div>\n <div class=\"searchButton icon-search\"></div>\n <div class=\"filtered-columns-list\" id=\"ColumnFilterContainer\">\n <div\n (click)=\"removeFilter(filter)\"\n *ngFor=\"let filter of _filters\"\n class=\"filtered-column-item ag-dnd-ghost ag-unselectable ag-theme-alpine\"\n id=\"ColumnVisibility_{{ filter.filterName }}\"\n title=\"Remove filter\"\n >\n <span class=\"ag-dnd-ghost-icon\">\n <span class=\"ag-icon ag-icon-filter\"></span>\n </span>\n <div class=\"ag-dnd-ghost-label\">{{ filter.filterName }}: {{ filter.label }}</div>\n </div>\n </div>\n <div class=\"counters\"><span id=\"Start\">{{startCount}}</span>-<span id=\"End\">{{endCount}}</span> of <span id=\"Total\">{{totalCount}}</span></div>\n <div class=\"navigate prev icon-prev\" [ngClass]=\"{disabled: prevDisabled}\" (click)=\"prevPage()\"></div>\n <div class=\"navigate next icon-next\" [ngClass]=\"{disabled: nextDisabled}\" (click)=\"nextPage()\"></div>\n</div>\n", styles: [".filters{position:relative;width:100%;height:44px;background-color:var(--inputBorder);border-radius:45px;padding:5px;display:flex;align-items:center}.filters input{width:320px;height:35px;float:left;border-radius:20px;font-size:14px;font-weight:600;padding-left:10px;background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.1%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg version%3D%221.1%22 id%3D%22%D0%A1%D0%BB%D0%BE%D0%B9_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%09 viewBox%3D%220 0 75 75%22 style%3D%22enable-background%3Anew 0 0 75 75%3B%22 xml%3Aspace%3D%22preserve%22%3E%3Cstyle type%3D%22text%2Fcss%22%3E%09.st0%7Bfill%3A%23C9C9D3%3B%7D%3C%2Fstyle%3E%3Cpath class%3D%22st0%22 d%3D%22M66.2%2C1.2H8.8c-3.7%2C0-6.7%2C3-6.7%2C6.7v6.2c0%2C1.6%2C0.6%2C3.1%2C1.6%2C4.3L23.9%2C42c0.7%2C0.9%2C1.2%2C2%2C1.2%2C3.1v13.3%09c0%2C1.6%2C0.8%2C3%2C2%2C3.9L42.4%2C73c0.8%2C0.6%2C1.7%2C0.8%2C2.7%2C0.8c0.8%2C0%2C1.5-0.2%2C2.2-0.5c1.6-0.8%2C2.6-2.4%2C2.6-4.2V45.1c0-1.1%2C0.4-2.2%2C1.2-3.1%09l20.2-23.5c1-1.2%2C1.6-2.8%2C1.6-4.4V7.9C72.9%2C4.2%2C69.9%2C1.2%2C66.2%2C1.2z M7.9%2C7.9c0-0.5%2C0.4-0.9%2C0.9-0.9h57.4c0.5%2C0%2C1%2C0.4%2C1%2C0.9v3.8%09c0%2C0.5-0.4%2C1-1%2C1H8.8c-0.5%2C0-1-0.4-1-1V7.9z M44.2%2C47.1l0%2C1.9h-5.7v5.7h5.7l0%2C1.9h-3.8v5.7h3.8l0%2C4.9l-13.4-9.3V45.1%09c0-2.5-0.9-4.9-2.5-6.8l-17-19.9h52.5l-17%2C19.9c-0.8%2C0.9-1.4%2C1.9-1.8%2C3.1h-6.5v5.7H44.2z%22%2F%3E%3C%2Fsvg%3E\");background-size:18px;background-position:right 12px top 7px;background-repeat:no-repeat}.filters .counters{position:relative;right:100px;top:0;line-height:45px;height:40px;font-size:13px;color:var(--tableText);font-weight:800}.filters .timeBox{display:inline-block}.filters .navigate{height:30px;width:30px;background-color:#f5f7fa;border-radius:30px;position:absolute;cursor:pointer;text-align:center;font-size:20px;line-height:30px;overflow:hidden;color:var(--text);transition:.5s}.filters .navigate:hover{background-color:var(--primaryColor);transition:.5s}.filters .navigate:active{background-color:var(--icon);transform:scale(.9);transition:.3s}.filters .navigate:hover:before{color:#fff}.filters .navigate.prev{right:55px;top:15px}.filters .navigate.next{right:15px;top:15px}.filters .navigate.disabled{opacity:.3;cursor:unset!important;background-color:#f5f7fa!important;pointer-events:none!important}.filtered-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:1 0 auto;vertical-align:top}.filtered-columns-list .filtered-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(--inputBorder);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.filtered-columns-list .filtered-column-item .ag-dnd-ghost-label{color:var(--text)}.filtered-columns-list .ag-dnd-ghost .ag-icon-filter,.filtered-columns-list .ag-dnd-ghost .ag-icon-cancel{color:var(--icon)}.filtered-columns-list .ag-dnd-ghost .ag-icon-filter{font-weight:700}.filtered-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-filter,.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-cancel{color:var(--ag-alpine-active-color, var(--primaryColor))}.filtered-columns-list .ag-dnd-ghost:hover .ag-icon-filter{font-weight:400}.filtered-columns-list .ag-dnd-ghost:hover .ag-icon-filter:before{content:\"\\f104\"}.filtered-columns-list .ag-dnd-ghost-label{line-height:initial;color:var(--text)}.filtered-columns-list .p-button .p-togglebutton .p-component{border-radius:20%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterBarComponent, selector: "lib-table-filter-bar", inputs: { filterName: "filterName", filterColumn: "filterColumn", startCount: "startCount", endCount: "endCount", totalCount: "totalCount", currentPage: "currentPage" }, ngImport: i0, template: "<div class=\"filters\">\n <input\n id=\"SearchFilter\"\n data-defined=\"search\"\n type=\"text\"\n class=\"search\"\n placeholder=\"Type to Filter\"\n (keyup)=\"inputChangedDebounced()\"\n [(ngModel)]=\"filterString\"\n />\n <div class=\"clear icon-clear\" data-defined=\"clear\"></div>\n <div class=\"searchButton icon-search\"></div>\n <div class=\"filtered-columns-list\" id=\"ColumnFilterContainer\">\n <div\n (click)=\"removeFilter(filter)\"\n *ngFor=\"let filter of _filters\"\n class=\"filtered-column-item ag-dnd-ghost ag-unselectable ag-theme-alpine\"\n id=\"ColumnVisibility_{{ filter.filterName }}\"\n title=\"Remove filter\"\n >\n <span class=\"ag-dnd-ghost-icon\">\n <span class=\"ag-icon ag-icon-filter\"></span>\n </span>\n <div class=\"ag-dnd-ghost-label\">{{ filter.filterName }}: {{ filter.label }}</div>\n </div>\n </div>\n <div class=\"counters\"><span id=\"Start\">{{startCount}}</span>-<span id=\"End\">{{endCount}}</span> of <span id=\"Total\">{{totalCount}}</span></div>\n <div class=\"navigate prev icon-prev\" [ngClass]=\"{disabled: prevDisabled}\" (click)=\"prevPage()\"></div>\n <div class=\"navigate next icon-next\" [ngClass]=\"{disabled: nextDisabled}\" (click)=\"nextPage()\"></div>\n</div>\n", styles: [".filters{position:relative;width:100%;height:44px;background-color:var(--inputBorder);border-radius:45px;padding:5px;display:flex;align-items:center}.filters input{width:320px;height:35px;float:left;border-radius:20px;font-size:14px;font-weight:600;padding-left:10px;background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.1%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg version%3D%221.1%22 id%3D%22%D0%A1%D0%BB%D0%BE%D0%B9_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%09 viewBox%3D%220 0 75 75%22 style%3D%22enable-background%3Anew 0 0 75 75%3B%22 xml%3Aspace%3D%22preserve%22%3E%3Cstyle type%3D%22text%2Fcss%22%3E%09.st0%7Bfill%3A%23C9C9D3%3B%7D%3C%2Fstyle%3E%3Cpath class%3D%22st0%22 d%3D%22M66.2%2C1.2H8.8c-3.7%2C0-6.7%2C3-6.7%2C6.7v6.2c0%2C1.6%2C0.6%2C3.1%2C1.6%2C4.3L23.9%2C42c0.7%2C0.9%2C1.2%2C2%2C1.2%2C3.1v13.3%09c0%2C1.6%2C0.8%2C3%2C2%2C3.9L42.4%2C73c0.8%2C0.6%2C1.7%2C0.8%2C2.7%2C0.8c0.8%2C0%2C1.5-0.2%2C2.2-0.5c1.6-0.8%2C2.6-2.4%2C2.6-4.2V45.1c0-1.1%2C0.4-2.2%2C1.2-3.1%09l20.2-23.5c1-1.2%2C1.6-2.8%2C1.6-4.4V7.9C72.9%2C4.2%2C69.9%2C1.2%2C66.2%2C1.2z M7.9%2C7.9c0-0.5%2C0.4-0.9%2C0.9-0.9h57.4c0.5%2C0%2C1%2C0.4%2C1%2C0.9v3.8%09c0%2C0.5-0.4%2C1-1%2C1H8.8c-0.5%2C0-1-0.4-1-1V7.9z M44.2%2C47.1l0%2C1.9h-5.7v5.7h5.7l0%2C1.9h-3.8v5.7h3.8l0%2C4.9l-13.4-9.3V45.1%09c0-2.5-0.9-4.9-2.5-6.8l-17-19.9h52.5l-17%2C19.9c-0.8%2C0.9-1.4%2C1.9-1.8%2C3.1h-6.5v5.7H44.2z%22%2F%3E%3C%2Fsvg%3E\");background-size:18px;background-position:right 12px top 7px;background-repeat:no-repeat}.filters .counters{position:relative;right:100px;top:0;line-height:45px;height:40px;font-size:13px;color:var(--tableText);font-weight:800}.filters .timeBox{display:inline-block}.filters .navigate{height:30px;width:30px;background-color:#f5f7fa;border-radius:30px;position:absolute;cursor:pointer;text-align:center;font-size:20px;line-height:30px;overflow:hidden;color:var(--text);transition:.5s}.filters .navigate:hover{background-color:var(--primaryColor);transition:.5s}.filters .navigate:active{background-color:var(--icon);transform:scale(.9);transition:.3s}.filters .navigate:hover:before{color:#fff}.filters .navigate.prev{right:55px;top:15px}.filters .navigate.next{right:15px;top:15px}.filters .navigate.disabled{opacity:.3;cursor:unset!important;background-color:#f5f7fa!important;pointer-events:none!important}.filtered-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:1 0 auto;vertical-align:top}.filtered-columns-list .filtered-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(--inputBorder);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.filtered-columns-list .filtered-column-item .ag-dnd-ghost-label{color:var(--text)}.filtered-columns-list .ag-dnd-ghost .ag-icon-filter,.filtered-columns-list .ag-dnd-ghost .ag-icon-cancel{color:var(--icon)}.filtered-columns-list .ag-dnd-ghost .ag-icon-filter{font-weight:700}.filtered-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-filter,.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-cancel{color:var(--ag-alpine-active-color, var(--primaryColor))}.filtered-columns-list .ag-dnd-ghost:hover .ag-icon-filter{font-weight:400}.filtered-columns-list .ag-dnd-ghost:hover .ag-icon-filter:before{content:\"\\f104\"}.filtered-columns-list .ag-dnd-ghost-label{line-height:initial;color:var(--text)}.filtered-columns-list .p-button .p-togglebutton .p-component{border-radius:20%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
83
85
  }
84
86
  export { FilterBarComponent };
85
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterBarComponent, decorators: [{
86
88
  type: Component,
87
89
  args: [{ selector: 'lib-table-filter-bar', template: "<div class=\"filters\">\n <input\n id=\"SearchFilter\"\n data-defined=\"search\"\n type=\"text\"\n class=\"search\"\n placeholder=\"Type to Filter\"\n (keyup)=\"inputChangedDebounced()\"\n [(ngModel)]=\"filterString\"\n />\n <div class=\"clear icon-clear\" data-defined=\"clear\"></div>\n <div class=\"searchButton icon-search\"></div>\n <div class=\"filtered-columns-list\" id=\"ColumnFilterContainer\">\n <div\n (click)=\"removeFilter(filter)\"\n *ngFor=\"let filter of _filters\"\n class=\"filtered-column-item ag-dnd-ghost ag-unselectable ag-theme-alpine\"\n id=\"ColumnVisibility_{{ filter.filterName }}\"\n title=\"Remove filter\"\n >\n <span class=\"ag-dnd-ghost-icon\">\n <span class=\"ag-icon ag-icon-filter\"></span>\n </span>\n <div class=\"ag-dnd-ghost-label\">{{ filter.filterName }}: {{ filter.label }}</div>\n </div>\n </div>\n <div class=\"counters\"><span id=\"Start\">{{startCount}}</span>-<span id=\"End\">{{endCount}}</span> of <span id=\"Total\">{{totalCount}}</span></div>\n <div class=\"navigate prev icon-prev\" [ngClass]=\"{disabled: prevDisabled}\" (click)=\"prevPage()\"></div>\n <div class=\"navigate next icon-next\" [ngClass]=\"{disabled: nextDisabled}\" (click)=\"nextPage()\"></div>\n</div>\n", styles: [".filters{position:relative;width:100%;height:44px;background-color:var(--inputBorder);border-radius:45px;padding:5px;display:flex;align-items:center}.filters input{width:320px;height:35px;float:left;border-radius:20px;font-size:14px;font-weight:600;padding-left:10px;background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.1%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg version%3D%221.1%22 id%3D%22%D0%A1%D0%BB%D0%BE%D0%B9_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%09 viewBox%3D%220 0 75 75%22 style%3D%22enable-background%3Anew 0 0 75 75%3B%22 xml%3Aspace%3D%22preserve%22%3E%3Cstyle type%3D%22text%2Fcss%22%3E%09.st0%7Bfill%3A%23C9C9D3%3B%7D%3C%2Fstyle%3E%3Cpath class%3D%22st0%22 d%3D%22M66.2%2C1.2H8.8c-3.7%2C0-6.7%2C3-6.7%2C6.7v6.2c0%2C1.6%2C0.6%2C3.1%2C1.6%2C4.3L23.9%2C42c0.7%2C0.9%2C1.2%2C2%2C1.2%2C3.1v13.3%09c0%2C1.6%2C0.8%2C3%2C2%2C3.9L42.4%2C73c0.8%2C0.6%2C1.7%2C0.8%2C2.7%2C0.8c0.8%2C0%2C1.5-0.2%2C2.2-0.5c1.6-0.8%2C2.6-2.4%2C2.6-4.2V45.1c0-1.1%2C0.4-2.2%2C1.2-3.1%09l20.2-23.5c1-1.2%2C1.6-2.8%2C1.6-4.4V7.9C72.9%2C4.2%2C69.9%2C1.2%2C66.2%2C1.2z M7.9%2C7.9c0-0.5%2C0.4-0.9%2C0.9-0.9h57.4c0.5%2C0%2C1%2C0.4%2C1%2C0.9v3.8%09c0%2C0.5-0.4%2C1-1%2C1H8.8c-0.5%2C0-1-0.4-1-1V7.9z M44.2%2C47.1l0%2C1.9h-5.7v5.7h5.7l0%2C1.9h-3.8v5.7h3.8l0%2C4.9l-13.4-9.3V45.1%09c0-2.5-0.9-4.9-2.5-6.8l-17-19.9h52.5l-17%2C19.9c-0.8%2C0.9-1.4%2C1.9-1.8%2C3.1h-6.5v5.7H44.2z%22%2F%3E%3C%2Fsvg%3E\");background-size:18px;background-position:right 12px top 7px;background-repeat:no-repeat}.filters .counters{position:relative;right:100px;top:0;line-height:45px;height:40px;font-size:13px;color:var(--tableText);font-weight:800}.filters .timeBox{display:inline-block}.filters .navigate{height:30px;width:30px;background-color:#f5f7fa;border-radius:30px;position:absolute;cursor:pointer;text-align:center;font-size:20px;line-height:30px;overflow:hidden;color:var(--text);transition:.5s}.filters .navigate:hover{background-color:var(--primaryColor);transition:.5s}.filters .navigate:active{background-color:var(--icon);transform:scale(.9);transition:.3s}.filters .navigate:hover:before{color:#fff}.filters .navigate.prev{right:55px;top:15px}.filters .navigate.next{right:15px;top:15px}.filters .navigate.disabled{opacity:.3;cursor:unset!important;background-color:#f5f7fa!important;pointer-events:none!important}.filtered-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:1 0 auto;vertical-align:top}.filtered-columns-list .filtered-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(--inputBorder);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.filtered-columns-list .filtered-column-item .ag-dnd-ghost-label{color:var(--text)}.filtered-columns-list .ag-dnd-ghost .ag-icon-filter,.filtered-columns-list .ag-dnd-ghost .ag-icon-cancel{color:var(--icon)}.filtered-columns-list .ag-dnd-ghost .ag-icon-filter{font-weight:700}.filtered-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-filter,.filtered-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-cancel{color:var(--ag-alpine-active-color, var(--primaryColor))}.filtered-columns-list .ag-dnd-ghost:hover .ag-icon-filter{font-weight:400}.filtered-columns-list .ag-dnd-ghost:hover .ag-icon-filter:before{content:\"\\f104\"}.filtered-columns-list .ag-dnd-ghost-label{line-height:initial;color:var(--text)}.filtered-columns-list .p-button .p-togglebutton .p-component{border-radius:20%}\n"] }]
88
- }], ctorParameters: function () { return [{ type: i1.DataTableFilterService }]; }, propDecorators: { startCount: [{
90
+ }], ctorParameters: function () { return [{ type: i1.DataTableFilterService }]; }, propDecorators: { filterName: [{
91
+ type: Input
92
+ }], filterColumn: [{
93
+ type: Input
94
+ }], startCount: [{
89
95
  type: Input
90
96
  }], endCount: [{
91
97
  type: Input
@@ -94,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
94
100
  }], currentPage: [{
95
101
  type: Input
96
102
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZGF0YS10YWJsZS90YWJsZS1maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvdGFibGUtZmlsdGVyLWJhci9maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBZ0IsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFHMUMsTUFLYSxrQkFBa0I7SUFZN0IsWUFBbUIsYUFBcUM7UUFBckMsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBVnhELGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFTCxlQUFVLEdBQVcsR0FBRyxDQUFDO1FBQ3pCLGFBQVEsR0FBVyxHQUFHLENBQUM7UUFDdkIsZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUVqQyxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQiwwQkFBcUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFHbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUM3QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ2IsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7b0JBQ3BDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUN6QixNQUFNO2lCQUNQO2FBQ0Y7WUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxLQUFLLEdBQVEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsTUFBTSxHQUFHLEdBQVEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFNBQVMsR0FBYztZQUMzQixVQUFVLEVBQUUsTUFBTTtZQUNsQixRQUFRLEVBQUUsTUFBTTtZQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ3pCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBR0QsWUFBWSxDQUFDLFNBQW9CO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBcEVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDhLQ3pCL0IsczZDQThCQTs7U0RMYSxrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxzQkFBc0I7NkdBUXZCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkZWJvdW5jZSwgaXNOdW1iZXJ9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7RGF0YVRhYmxlRmlsdGVyU2VydmljZSwgRmlsdGVyT2JqfSBmcm9tIFwiLi4vZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdGFibGUtZmlsdGVyLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWJhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckJhckNvbXBvbmVudCB7XG5cbiAgX2ZpbHRlcnMgPSBbXTtcblxuICBASW5wdXQoKSBzdGFydENvdW50OiBzdHJpbmcgPSAnLSc7XG4gIEBJbnB1dCgpIGVuZENvdW50OiBzdHJpbmcgPSAnLSc7XG4gIEBJbnB1dCgpIHRvdGFsQ291bnQ6IHN0cmluZyA9ICctJztcbiAgQElucHV0KCkgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG5cbiAgZmlsdGVyU3RyaW5nID0gJyc7XG4gIGlucHV0Q2hhbmdlZERlYm91bmNlZCA9IGRlYm91bmNlKHRoaXMuaW5wdXRDaGFuZ2VkLmJpbmQodGhpcyksIDQwMCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGZpbHRlclNlcnZpY2U6IERhdGFUYWJsZUZpbHRlclNlcnZpY2UpIHtcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyc0NoYW5nZWQuc3Vic2NyaWJlKGZpbHRlcnMgPT4ge1xuICAgICAgdGhpcy5fZmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gZmlsdGVyLmhpZGRlbiAhPT0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgbGV0IHRtcCA9ICcnO1xuICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgZmlsdGVycy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgIGlmIChmaWx0ZXJzW2lkeF0uY29sdW1uSWQgPT09ICduYW1lJykge1xuICAgICAgICAgIHRtcCA9IGZpbHRlcnNbaWR4XS52YWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJTdHJpbmcgPSB0bXA7XG4gICAgfSk7XG4gIH1cblxuICBuZXh0UGFnZSgpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlKys7XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmNoYW5nZVBhZ2UodGhpcy5jdXJyZW50UGFnZSk7XG4gIH1cblxuICBwcmV2UGFnZSgpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLS07XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmNoYW5nZVBhZ2UodGhpcy5jdXJyZW50UGFnZSk7XG4gIH1cblxuICBnZXQgbmV4dERpc2FibGVkKCkge1xuICAgIGlmICghaXNOdW1iZXIodGhpcy50b3RhbENvdW50KSB8fCAhaXNOdW1iZXIodGhpcy5lbmRDb3VudCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0b3RhbDogYW55ID0gTnVtYmVyLnBhcnNlSW50KHRoaXMudG90YWxDb3VudCk7XG4gICAgY29uc3QgZW5kOiBhbnkgPSBOdW1iZXIucGFyc2VJbnQodGhpcy5lbmRDb3VudCk7XG4gICAgcmV0dXJuIGVuZCA+PSB0b3RhbDtcbiAgfVxuXG4gIGdldCBwcmV2RGlzYWJsZWQoKSB7XG4gICAgaWYgKCFpc051bWJlcih0aGlzLnN0YXJ0Q291bnQpIHx8ICFpc051bWJlcih0aGlzLnRvdGFsQ291bnQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3Qgc3RhcnQgPSBOdW1iZXIucGFyc2VJbnQodGhpcy5zdGFydENvdW50LCAxMCk7XG4gICAgcmV0dXJuIHN0YXJ0IDw9IDE7XG4gIH1cblxuICBpbnB1dENoYW5nZWQoKSB7XG4gICAgY29uc3QgZmlsdGVyT2JqOiBGaWx0ZXJPYmogPSB7XG4gICAgICBmaWx0ZXJOYW1lOiAnbmFtZScsXG4gICAgICBjb2x1bW5JZDogJ25hbWUnLFxuICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyU3RyaW5nLFxuICAgICAgbGFiZWw6IHRoaXMuZmlsdGVyU3RyaW5nLFxuICAgIH07XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnVwZGF0ZUZpbHRlcihmaWx0ZXJPYmopXG4gIH1cblxuXG4gIHJlbW92ZUZpbHRlcihmaWx0ZXJPYmo6IEZpbHRlck9iaikge1xuICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZW1vdmVGaWx0ZXIoZmlsdGVyT2JqKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZpbHRlcnNcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgaWQ9XCJTZWFyY2hGaWx0ZXJcIlxuICAgICAgICBkYXRhLWRlZmluZWQ9XCJzZWFyY2hcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwic2VhcmNoXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHRvIEZpbHRlclwiXG4gICAgICAgIChrZXl1cCk9XCJpbnB1dENoYW5nZWREZWJvdW5jZWQoKVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyU3RyaW5nXCJcbiAgICAvPlxuICAgIDxkaXYgY2xhc3M9XCJjbGVhciBpY29uLWNsZWFyXCIgZGF0YS1kZWZpbmVkPVwiY2xlYXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoQnV0dG9uIGljb24tc2VhcmNoXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZpbHRlcmVkLWNvbHVtbnMtbGlzdFwiIGlkPVwiQ29sdW1uRmlsdGVyQ29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGZpbHRlcilcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgX2ZpbHRlcnNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyZWQtY29sdW1uLWl0ZW0gYWctZG5kLWdob3N0IGFnLXVuc2VsZWN0YWJsZSBhZy10aGVtZS1hbHBpbmVcIlxuICAgICAgICAgICAgICAgIGlkPVwiQ29sdW1uVmlzaWJpbGl0eV97eyBmaWx0ZXIuZmlsdGVyTmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgZmlsdGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZy1kbmQtZ2hvc3QtaWNvblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWctaWNvbiBhZy1pY29uLWZpbHRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZy1kbmQtZ2hvc3QtbGFiZWxcIj57eyBmaWx0ZXIuZmlsdGVyTmFtZSB9fToge3sgZmlsdGVyLmxhYmVsIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb3VudGVyc1wiPjxzcGFuIGlkPVwiU3RhcnRcIj57e3N0YXJ0Q291bnR9fTwvc3Bhbj4tPHNwYW4gaWQ9XCJFbmRcIj57e2VuZENvdW50fX08L3NwYW4+IG9mIDxzcGFuIGlkPVwiVG90YWxcIj57e3RvdGFsQ291bnR9fTwvc3Bhbj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibmF2aWdhdGUgcHJldiBpY29uLXByZXZcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IHByZXZEaXNhYmxlZH1cIiAoY2xpY2spPVwicHJldlBhZ2UoKVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJuYXZpZ2F0ZSBuZXh0IGljb24tbmV4dFwiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogbmV4dERpc2FibGVkfVwiIChjbGljayk9XCJuZXh0UGFnZSgpXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZGF0YS10YWJsZS90YWJsZS1maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvdGFibGUtZmlsdGVyLWJhci9maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBZ0IsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFHMUMsTUFLYSxrQkFBa0I7SUFlN0IsWUFBbUIsYUFBcUM7UUFBckMsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBYnhELGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFTCxlQUFVLEdBQVcsTUFBTSxDQUFDO1FBQzVCLGlCQUFZLEdBQVcsTUFBTSxDQUFDO1FBRTlCLGVBQVUsR0FBVyxHQUFHLENBQUM7UUFDekIsYUFBUSxHQUFXLEdBQUcsQ0FBQztRQUN2QixlQUFVLEdBQVcsR0FBRyxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRWpDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUdsRSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQzdDLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDYixLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDN0MsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU0sRUFBRTtvQkFDcEMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ3pCLE1BQU07aUJBQ1A7YUFDRjtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLEtBQUssR0FBUSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxNQUFNLEdBQUcsR0FBUSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sU0FBUyxHQUFjO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTtTQUN6QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUdELFlBQVksQ0FBQyxTQUFvQjtRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QyxDQUFDOytHQXZFVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzT0N6Qi9CLHM2Q0E4QkE7O1NETGEsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0Usc0JBQXNCOzZHQVF2QixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlYm91bmNlLCBpc051bWJlcn0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlLCBGaWx0ZXJPYmp9IGZyb20gXCIuLi9kYXRhLXRhYmxlLWZpbHRlci5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10YWJsZS1maWx0ZXItYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1iYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItYmFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQmFyQ29tcG9uZW50IHtcblxuICBfZmlsdGVycyA9IFtdO1xuXG4gIEBJbnB1dCgpIGZpbHRlck5hbWU6IHN0cmluZyA9ICduYW1lJztcbiAgQElucHV0KCkgZmlsdGVyQ29sdW1uOiBzdHJpbmcgPSAnbmFtZSc7XG5cbiAgQElucHV0KCkgc3RhcnRDb3VudDogc3RyaW5nID0gJy0nO1xuICBASW5wdXQoKSBlbmRDb3VudDogc3RyaW5nID0gJy0nO1xuICBASW5wdXQoKSB0b3RhbENvdW50OiBzdHJpbmcgPSAnLSc7XG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuXG4gIGZpbHRlclN0cmluZyA9ICcnO1xuICBpbnB1dENoYW5nZWREZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmlucHV0Q2hhbmdlZC5iaW5kKHRoaXMpLCA0MDApO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmaWx0ZXJTZXJ2aWNlOiBEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNDaGFuZ2VkLnN1YnNjcmliZShmaWx0ZXJzID0+IHtcbiAgICAgIHRoaXMuX2ZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlcigoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGZpbHRlci5oaWRkZW4gIT09IHRydWU7XG4gICAgICB9KTtcbiAgICAgIGxldCB0bXAgPSAnJztcbiAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGZpbHRlcnMubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICBpZiAoZmlsdGVyc1tpZHhdLmNvbHVtbklkID09PSAnbmFtZScpIHtcbiAgICAgICAgICB0bXAgPSBmaWx0ZXJzW2lkeF0udmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsdGVyU3RyaW5nID0gdG1wO1xuICAgIH0pO1xuICB9XG5cbiAgbmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSsrO1xuICAgIHRoaXMuZmlsdGVyU2VydmljZS5jaGFuZ2VQYWdlKHRoaXMuY3VycmVudFBhZ2UpO1xuICB9XG5cbiAgcHJldlBhZ2UoKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZS0tO1xuICAgIHRoaXMuZmlsdGVyU2VydmljZS5jaGFuZ2VQYWdlKHRoaXMuY3VycmVudFBhZ2UpO1xuICB9XG5cbiAgZ2V0IG5leHREaXNhYmxlZCgpIHtcbiAgICBpZiAoIWlzTnVtYmVyKHRoaXMudG90YWxDb3VudCkgfHwgIWlzTnVtYmVyKHRoaXMuZW5kQ291bnQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdG90YWw6IGFueSA9IE51bWJlci5wYXJzZUludCh0aGlzLnRvdGFsQ291bnQpO1xuICAgIGNvbnN0IGVuZDogYW55ID0gTnVtYmVyLnBhcnNlSW50KHRoaXMuZW5kQ291bnQpO1xuICAgIHJldHVybiBlbmQgPj0gdG90YWw7XG4gIH1cblxuICBnZXQgcHJldkRpc2FibGVkKCkge1xuICAgIGlmICghaXNOdW1iZXIodGhpcy5zdGFydENvdW50KSB8fCAhaXNOdW1iZXIodGhpcy50b3RhbENvdW50KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0ID0gTnVtYmVyLnBhcnNlSW50KHRoaXMuc3RhcnRDb3VudCwgMTApO1xuICAgIHJldHVybiBzdGFydCA8PSAxO1xuICB9XG5cbiAgaW5wdXRDaGFuZ2VkKCkge1xuICAgIGNvbnN0IGZpbHRlck9iajogRmlsdGVyT2JqID0ge1xuICAgICAgZmlsdGVyTmFtZTogdGhpcy5maWx0ZXJOYW1lLFxuICAgICAgY29sdW1uSWQ6IHRoaXMuZmlsdGVyQ29sdW1uLFxuICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyU3RyaW5nLFxuICAgICAgbGFiZWw6IHRoaXMuZmlsdGVyU3RyaW5nLFxuICAgIH07XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnVwZGF0ZUZpbHRlcihmaWx0ZXJPYmopXG4gIH1cblxuXG4gIHJlbW92ZUZpbHRlcihmaWx0ZXJPYmo6IEZpbHRlck9iaikge1xuICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZW1vdmVGaWx0ZXIoZmlsdGVyT2JqKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZpbHRlcnNcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgaWQ9XCJTZWFyY2hGaWx0ZXJcIlxuICAgICAgICBkYXRhLWRlZmluZWQ9XCJzZWFyY2hcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwic2VhcmNoXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHRvIEZpbHRlclwiXG4gICAgICAgIChrZXl1cCk9XCJpbnB1dENoYW5nZWREZWJvdW5jZWQoKVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyU3RyaW5nXCJcbiAgICAvPlxuICAgIDxkaXYgY2xhc3M9XCJjbGVhciBpY29uLWNsZWFyXCIgZGF0YS1kZWZpbmVkPVwiY2xlYXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoQnV0dG9uIGljb24tc2VhcmNoXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZpbHRlcmVkLWNvbHVtbnMtbGlzdFwiIGlkPVwiQ29sdW1uRmlsdGVyQ29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGZpbHRlcilcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgX2ZpbHRlcnNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyZWQtY29sdW1uLWl0ZW0gYWctZG5kLWdob3N0IGFnLXVuc2VsZWN0YWJsZSBhZy10aGVtZS1hbHBpbmVcIlxuICAgICAgICAgICAgICAgIGlkPVwiQ29sdW1uVmlzaWJpbGl0eV97eyBmaWx0ZXIuZmlsdGVyTmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgZmlsdGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZy1kbmQtZ2hvc3QtaWNvblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWctaWNvbiBhZy1pY29uLWZpbHRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZy1kbmQtZ2hvc3QtbGFiZWxcIj57eyBmaWx0ZXIuZmlsdGVyTmFtZSB9fToge3sgZmlsdGVyLmxhYmVsIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb3VudGVyc1wiPjxzcGFuIGlkPVwiU3RhcnRcIj57e3N0YXJ0Q291bnR9fTwvc3Bhbj4tPHNwYW4gaWQ9XCJFbmRcIj57e2VuZENvdW50fX08L3NwYW4+IG9mIDxzcGFuIGlkPVwiVG90YWxcIj57e3RvdGFsQ291bnR9fTwvc3Bhbj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibmF2aWdhdGUgcHJldiBpY29uLXByZXZcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IHByZXZEaXNhYmxlZH1cIiAoY2xpY2spPVwicHJldlBhZ2UoKVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJuYXZpZ2F0ZSBuZXh0IGljb24tbmV4dFwiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogbmV4dERpc2FibGVkfVwiIChjbGljayk9XCJuZXh0UGFnZSgpXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -31,6 +31,7 @@ class PreviewListComponent {
31
31
  this.items = [];
32
32
  this.allowRemove = false;
33
33
  this.tooltip = '';
34
+ this.showfilter = true;
34
35
  this.itemSelected = new EventEmitter();
35
36
  this.itemRemoved = new EventEmitter();
36
37
  this.previewItems = [];
@@ -71,7 +72,20 @@ class PreviewListComponent {
71
72
  this.sort();
72
73
  }
73
74
  sort() {
74
- this.previewItems.sort((item1, item2) => (item1.name ? item1.name.localeCompare(item2.name) : item1.localeCompare(item2)));
75
+ this.previewItems.sort((item1, item2) => {
76
+ if (item1.skipSort) {
77
+ return item1.name;
78
+ }
79
+ else if (item2.skipSort) {
80
+ return item2.name;
81
+ }
82
+ else if (item1.name) {
83
+ return item1.name.localeCompare(item2.name);
84
+ }
85
+ else {
86
+ return item1.localeCompare(item2);
87
+ }
88
+ });
75
89
  }
76
90
  selected(item) {
77
91
  if (this.clickable)
@@ -85,12 +99,12 @@ class PreviewListComponent {
85
99
  event.preventDefault();
86
100
  }
87
101
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PreviewListComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
88
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PreviewListComponent, selector: "lib-preview-list", inputs: { label: "label", clickable: "clickable", isLoading: "isLoading", allNames: "allNames", items: "items", allowRemove: "allowRemove", tooltip: "tooltip" }, outputs: { itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"listBox row\">\n <input (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <span *ngIf=\"isLoading\" class=\"spinner\"></span>\n\n <div class=\"text row\">\n <div (click)=\"selected(item)\" *ngFor=\"let item of previewItems\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(item)\"></div>\n <span *ngIf=\"!item.href\" class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ item }}</span>\n <a *ngIf=\"item.href\" [href]=\"'./' + item.href\" (click)=\"linkClicked($event, item)\" matTooltip=\"{{tooltip}}\" matTooltipShowDelay=\"1000\" matTooltipPosition=\"below\"><span *ngIf=\"item.name\" class=\"preview-name\">{{ item.name }}</span></a>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;position:relative}.counter{background-color:#4c5566;color:var(--white);position:absolute;right:0}.listBox{background-color:var(--stroke);padding:10px;border-radius:7px;height:100%;min-height:180px}.listBox input{height:40px;border-radius:27px;font-size:14px;font-weight:600;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAD4klEQVRYhc2ZyYsUSRSHvypLbRfGDfWgzngYFRR3EUQPOm5oOyMuKIoo4kk9iAriQfAPcAMvKuJBPAyiXmbAwWVUFGEYmMHlIi24ogd3cW3trpYnv4CooLKrKiuzqn5QUBmZEe/Lly9fvIjMPH36CmA4cABYAHSnsdQK/AVsBR4Y8E/ATaA30KXBYJ3agffA+Cywt8FhEZsx7jUPf/bC4BNwuc5woWYBPdTWmgti9hSwrv6MBToOrFVD92xwsqOOYFEqYAqBGzGOC5gshv07aANuNZCnM8A4IOcacsEFdjyp9lzly0KipZEBA7VYSKwEfpf7nTqU4uqpHkWYVlkInAR+ATZ4AZ4HmoErdQKeCVz0eGymO2asrpawE38D0xXHdjcfFM93aww7Avgf6CUPWyK4Dsw2cJfW7A4WA4/1P6NHcgHoV0PYfrLpwqFdTIv1vyAPvwXmyLMd8voQ4A+gaw1gu8rWENl2T3mO2AiBTfeARYphFB7TgMM1AD4sWy7V5sVyz78oBDZd0wvoZHe7HtiWIuw22fBntQ1iKVAxYFRw7PE8nVEZ2pwCbLPGdimsXbaPF7vYZYmi54A/gfneY7JSdCpwOyHYscC/QJOOLSOcA36NKg+iPIw6rNBM2Ka2bnqLBycAO1hjdfNgW2QzspbpDNj0EZintzSv6wdojdVUom9natIYAzRmXjbmyWakSgGbnigsnJdzepQngqmzXGXUd6wXam2y8aTUGOUAm/4DVnvHZmgpsDsG8G719SvF1bJRUuUCm84Au7zMkfWMl6sl6uPs5jXmmXIH6CxLRMkqu+Weh94BPwJvSvTrAzwCftCxhcFpq8AqMR4W8OXIFqk/AxPUv0lJfl/Q114gP4yGAT092BtxFrxxgL8Ay4D7OrYa4LciwKOBNRHrxKye0pdKjVcSw74eBSuV4RHXtUW0W9+HcQzHBUaVlFPUflxU+4eI9pKqBriUDqm+db9nSQwaJ4bLldUDOzyn9G904KHAxKRtpBkSpsQ3ZNL0sG1EW9r6quNw2R5Lab90vbX67ZXUS5cUcJTnZmjqtjQ2KAlD1QB/9v4PVAETbgnk5OWeSYQDVQKf9WayjKbnO9oxT03VAO8HrgZbAubpS1pU2tLHKrh/VOtGTdMVqdqQmAvs1Eo37z32LarGWrXXMAV4WW9gBGlL8sn2DS1YRo3U57TNScUvCWYJAxsDHPXarKy00vMgcD6pD5ZJ5mELkU3AQuC15+2stk/7JmEkjYnDlu+jtL/rpuZwRn0Rd/C0Zrrn+m69UauK71ulkt2EbU7HUtrFzxF9BXLpzzZLtusDZuUCvgHvMdO9Y7xsIwAAAABJRU5ErkJggg==);background-size:auto 21px;background-position:top 8px right 12px;background-repeat:no-repeat;margin-bottom:10px;padding-left:14px}.text{overflow-y:scroll;height:100%}.listText{width:100%;position:relative;float:left;font-size:14px;font-weight:600;padding-left:10px;padding-right:10px;margin-bottom:2px;color:var(--primary);display:flex;flex-direction:row;align-items:center;gap:5px}.listText a{color:var(--primary)}.listText .icon-clear{margin-top:2px}.listText .icon-clear:hover{color:var(--background)}::-webkit-scrollbar-thumb{background-color:var(--background)!important}.clickable{color:var(--primary);cursor:pointer}.clickable:hover,.clickable:focus{filter:brightness(90%)}.clickable:active{color:var(--icon);transform:translateY(1px)}.clickable .preview-name:hover,.clickable .preview-name:focus{text-decoration:underline}.clickable .preview-name:active{text-decoration:underline}.spinner{position:absolute;right:1em;top:1em;display:inline-block;width:32px;height:32px;border-radius:50%;background:transparent;border-top:5px solid var(--placeholder);border-right:5px solid var(--placeholder);border-bottom:5px solid transparent;border-left:5px solid transparent;animation:loading .5s infinite linear}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
102
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PreviewListComponent, selector: "lib-preview-list", inputs: { label: "label", clickable: "clickable", isLoading: "isLoading", allNames: "allNames", items: "items", allowRemove: "allowRemove", tooltip: "tooltip", showfilter: "showfilter" }, outputs: { itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"listBox row\">\n <input *ngIf=\"showfilter\" (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <span *ngIf=\"isLoading\" class=\"spinner\"></span>\n\n <div class=\"text row\">\n <div (click)=\"selected(item)\" *ngFor=\"let item of previewItems\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(item)\"></div>\n <span *ngIf=\"!item.href\" class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ item }}</span>\n <a *ngIf=\"item.href\" [href]=\"'./' + item.href\" (click)=\"linkClicked($event, item)\" class=\"{{item.linkClass ? item.linkClass : ''}}\" matTooltip=\"{{tooltip}}\" matTooltipShowDelay=\"1000\" matTooltipPosition=\"below\">\n <span *ngIf=\"item.name\" class=\"preview-name\">{{ item.name }}<div *ngIf=\"item.iconClass\" class=\"preview-item-icon {{item.iconClass}}\" (click)=\"remove(item)\"></div></span>\n </a>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;position:relative}.counter{background-color:#4c5566;color:var(--white);position:absolute;right:0}.listBox{background-color:var(--stroke);padding:10px;border-radius:7px;height:100%;min-height:60px}.listBox input{height:40px;border-radius:27px;font-size:14px;font-weight:600;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAD4klEQVRYhc2ZyYsUSRSHvypLbRfGDfWgzngYFRR3EUQPOm5oOyMuKIoo4kk9iAriQfAPcAMvKuJBPAyiXmbAwWVUFGEYmMHlIi24ogd3cW3trpYnv4CooLKrKiuzqn5QUBmZEe/Lly9fvIjMPH36CmA4cABYAHSnsdQK/AVsBR4Y8E/ATaA30KXBYJ3agffA+Cywt8FhEZsx7jUPf/bC4BNwuc5woWYBPdTWmgti9hSwrv6MBToOrFVD92xwsqOOYFEqYAqBGzGOC5gshv07aANuNZCnM8A4IOcacsEFdjyp9lzly0KipZEBA7VYSKwEfpf7nTqU4uqpHkWYVlkInAR+ATZ4AZ4HmoErdQKeCVz0eGymO2asrpawE38D0xXHdjcfFM93aww7Avgf6CUPWyK4Dsw2cJfW7A4WA4/1P6NHcgHoV0PYfrLpwqFdTIv1vyAPvwXmyLMd8voQ4A+gaw1gu8rWENl2T3mO2AiBTfeARYphFB7TgMM1AD4sWy7V5sVyz78oBDZd0wvoZHe7HtiWIuw22fBntQ1iKVAxYFRw7PE8nVEZ2pwCbLPGdimsXbaPF7vYZYmi54A/gfneY7JSdCpwOyHYscC/QJOOLSOcA36NKg+iPIw6rNBM2Ka2bnqLBycAO1hjdfNgW2QzspbpDNj0EZintzSv6wdojdVUom9natIYAzRmXjbmyWakSgGbnigsnJdzepQngqmzXGXUd6wXam2y8aTUGOUAm/4DVnvHZmgpsDsG8G719SvF1bJRUuUCm84Au7zMkfWMl6sl6uPs5jXmmXIH6CxLRMkqu+Weh94BPwJvSvTrAzwCftCxhcFpq8AqMR4W8OXIFqk/AxPUv0lJfl/Q114gP4yGAT092BtxFrxxgL8Ay4D7OrYa4LciwKOBNRHrxKye0pdKjVcSw74eBSuV4RHXtUW0W9+HcQzHBUaVlFPUflxU+4eI9pKqBriUDqm+db9nSQwaJ4bLldUDOzyn9G904KHAxKRtpBkSpsQ3ZNL0sG1EW9r6quNw2R5Lab90vbX67ZXUS5cUcJTnZmjqtjQ2KAlD1QB/9v4PVAETbgnk5OWeSYQDVQKf9WayjKbnO9oxT03VAO8HrgZbAubpS1pU2tLHKrh/VOtGTdMVqdqQmAvs1Eo37z32LarGWrXXMAV4WW9gBGlL8sn2DS1YRo3U57TNScUvCWYJAxsDHPXarKy00vMgcD6pD5ZJ5mELkU3AQuC15+2stk/7JmEkjYnDlu+jtL/rpuZwRn0Rd/C0Zrrn+m69UauK71ulkt2EbU7HUtrFzxF9BXLpzzZLtusDZuUCvgHvMdO9Y7xsIwAAAABJRU5ErkJggg==);background-size:auto 21px;background-position:top 8px right 12px;background-repeat:no-repeat;margin-bottom:10px;padding-left:14px}.text{overflow-y:scroll;height:100%}.listText{width:100%;position:relative;float:left;font-size:14px;font-weight:600;padding-left:10px;padding-right:10px;margin-bottom:2px;color:var(--primary);display:flex;flex-direction:row;align-items:center;gap:5px}.listText a{color:var(--primary);display:flex;flex-direction:row;align-items:center}.listText a:hover .preview-item-icon{text-decoration:underline}.listText .icon-clear{margin-top:2px}.listText .icon-clear:hover{color:var(--background)}::-webkit-scrollbar-thumb{background-color:var(--background)!important}.clickable{color:var(--primary);cursor:pointer}.clickable:hover,.clickable:focus{filter:brightness(90%)}.clickable:active{color:var(--icon);transform:translateY(1px)}.clickable .preview-name:hover,.clickable .preview-name:focus{text-decoration:underline}.clickable .preview-name:active{text-decoration:underline}.preview-name{white-space:pre}.spinner{position:absolute;right:1em;top:1em;display:inline-block;width:32px;height:32px;border-radius:50%;background:transparent;border-top:5px solid var(--placeholder);border-right:5px solid var(--placeholder);border-bottom:5px solid transparent;border-left:5px solid transparent;animation:loading .5s infinite linear}.preview-item-icon{margin-left:7px;font-family:zac!important}.preview-more-results{margin-top:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
89
103
  }
90
104
  export { PreviewListComponent };
91
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PreviewListComponent, decorators: [{
92
106
  type: Component,
93
- args: [{ selector: 'lib-preview-list', template: "<div class=\"listBox row\">\n <input (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <span *ngIf=\"isLoading\" class=\"spinner\"></span>\n\n <div class=\"text row\">\n <div (click)=\"selected(item)\" *ngFor=\"let item of previewItems\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(item)\"></div>\n <span *ngIf=\"!item.href\" class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ item }}</span>\n <a *ngIf=\"item.href\" [href]=\"'./' + item.href\" (click)=\"linkClicked($event, item)\" matTooltip=\"{{tooltip}}\" matTooltipShowDelay=\"1000\" matTooltipPosition=\"below\"><span *ngIf=\"item.name\" class=\"preview-name\">{{ item.name }}</span></a>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;position:relative}.counter{background-color:#4c5566;color:var(--white);position:absolute;right:0}.listBox{background-color:var(--stroke);padding:10px;border-radius:7px;height:100%;min-height:180px}.listBox input{height:40px;border-radius:27px;font-size:14px;font-weight:600;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAD4klEQVRYhc2ZyYsUSRSHvypLbRfGDfWgzngYFRR3EUQPOm5oOyMuKIoo4kk9iAriQfAPcAMvKuJBPAyiXmbAwWVUFGEYmMHlIi24ogd3cW3trpYnv4CooLKrKiuzqn5QUBmZEe/Lly9fvIjMPH36CmA4cABYAHSnsdQK/AVsBR4Y8E/ATaA30KXBYJ3agffA+Cywt8FhEZsx7jUPf/bC4BNwuc5woWYBPdTWmgti9hSwrv6MBToOrFVD92xwsqOOYFEqYAqBGzGOC5gshv07aANuNZCnM8A4IOcacsEFdjyp9lzly0KipZEBA7VYSKwEfpf7nTqU4uqpHkWYVlkInAR+ATZ4AZ4HmoErdQKeCVz0eGymO2asrpawE38D0xXHdjcfFM93aww7Avgf6CUPWyK4Dsw2cJfW7A4WA4/1P6NHcgHoV0PYfrLpwqFdTIv1vyAPvwXmyLMd8voQ4A+gaw1gu8rWENl2T3mO2AiBTfeARYphFB7TgMM1AD4sWy7V5sVyz78oBDZd0wvoZHe7HtiWIuw22fBntQ1iKVAxYFRw7PE8nVEZ2pwCbLPGdimsXbaPF7vYZYmi54A/gfneY7JSdCpwOyHYscC/QJOOLSOcA36NKg+iPIw6rNBM2Ka2bnqLBycAO1hjdfNgW2QzspbpDNj0EZintzSv6wdojdVUom9natIYAzRmXjbmyWakSgGbnigsnJdzepQngqmzXGXUd6wXam2y8aTUGOUAm/4DVnvHZmgpsDsG8G719SvF1bJRUuUCm84Au7zMkfWMl6sl6uPs5jXmmXIH6CxLRMkqu+Weh94BPwJvSvTrAzwCftCxhcFpq8AqMR4W8OXIFqk/AxPUv0lJfl/Q114gP4yGAT092BtxFrxxgL8Ay4D7OrYa4LciwKOBNRHrxKye0pdKjVcSw74eBSuV4RHXtUW0W9+HcQzHBUaVlFPUflxU+4eI9pKqBriUDqm+db9nSQwaJ4bLldUDOzyn9G904KHAxKRtpBkSpsQ3ZNL0sG1EW9r6quNw2R5Lab90vbX67ZXUS5cUcJTnZmjqtjQ2KAlD1QB/9v4PVAETbgnk5OWeSYQDVQKf9WayjKbnO9oxT03VAO8HrgZbAubpS1pU2tLHKrh/VOtGTdMVqdqQmAvs1Eo37z32LarGWrXXMAV4WW9gBGlL8sn2DS1YRo3U57TNScUvCWYJAxsDHPXarKy00vMgcD6pD5ZJ5mELkU3AQuC15+2stk/7JmEkjYnDlu+jtL/rpuZwRn0Rd/C0Zrrn+m69UauK71ulkt2EbU7HUtrFzxF9BXLpzzZLtusDZuUCvgHvMdO9Y7xsIwAAAABJRU5ErkJggg==);background-size:auto 21px;background-position:top 8px right 12px;background-repeat:no-repeat;margin-bottom:10px;padding-left:14px}.text{overflow-y:scroll;height:100%}.listText{width:100%;position:relative;float:left;font-size:14px;font-weight:600;padding-left:10px;padding-right:10px;margin-bottom:2px;color:var(--primary);display:flex;flex-direction:row;align-items:center;gap:5px}.listText a{color:var(--primary)}.listText .icon-clear{margin-top:2px}.listText .icon-clear:hover{color:var(--background)}::-webkit-scrollbar-thumb{background-color:var(--background)!important}.clickable{color:var(--primary);cursor:pointer}.clickable:hover,.clickable:focus{filter:brightness(90%)}.clickable:active{color:var(--icon);transform:translateY(1px)}.clickable .preview-name:hover,.clickable .preview-name:focus{text-decoration:underline}.clickable .preview-name:active{text-decoration:underline}.spinner{position:absolute;right:1em;top:1em;display:inline-block;width:32px;height:32px;border-radius:50%;background:transparent;border-top:5px solid var(--placeholder);border-right:5px solid var(--placeholder);border-bottom:5px solid transparent;border-left:5px solid transparent;animation:loading .5s infinite linear}\n"] }]
107
+ args: [{ selector: 'lib-preview-list', template: "<div class=\"listBox row\">\n <input *ngIf=\"showfilter\" (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <span *ngIf=\"isLoading\" class=\"spinner\"></span>\n\n <div class=\"text row\">\n <div (click)=\"selected(item)\" *ngFor=\"let item of previewItems\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(item)\"></div>\n <span *ngIf=\"!item.href\" class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ item }}</span>\n <a *ngIf=\"item.href\" [href]=\"'./' + item.href\" (click)=\"linkClicked($event, item)\" class=\"{{item.linkClass ? item.linkClass : ''}}\" matTooltip=\"{{tooltip}}\" matTooltipShowDelay=\"1000\" matTooltipPosition=\"below\">\n <span *ngIf=\"item.name\" class=\"preview-name\">{{ item.name }}<div *ngIf=\"item.iconClass\" class=\"preview-item-icon {{item.iconClass}}\" (click)=\"remove(item)\"></div></span>\n </a>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;position:relative}.counter{background-color:#4c5566;color:var(--white);position:absolute;right:0}.listBox{background-color:var(--stroke);padding:10px;border-radius:7px;height:100%;min-height:60px}.listBox input{height:40px;border-radius:27px;font-size:14px;font-weight:600;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAD4klEQVRYhc2ZyYsUSRSHvypLbRfGDfWgzngYFRR3EUQPOm5oOyMuKIoo4kk9iAriQfAPcAMvKuJBPAyiXmbAwWVUFGEYmMHlIi24ogd3cW3trpYnv4CooLKrKiuzqn5QUBmZEe/Lly9fvIjMPH36CmA4cABYAHSnsdQK/AVsBR4Y8E/ATaA30KXBYJ3agffA+Cywt8FhEZsx7jUPf/bC4BNwuc5woWYBPdTWmgti9hSwrv6MBToOrFVD92xwsqOOYFEqYAqBGzGOC5gshv07aANuNZCnM8A4IOcacsEFdjyp9lzly0KipZEBA7VYSKwEfpf7nTqU4uqpHkWYVlkInAR+ATZ4AZ4HmoErdQKeCVz0eGymO2asrpawE38D0xXHdjcfFM93aww7Avgf6CUPWyK4Dsw2cJfW7A4WA4/1P6NHcgHoV0PYfrLpwqFdTIv1vyAPvwXmyLMd8voQ4A+gaw1gu8rWENl2T3mO2AiBTfeARYphFB7TgMM1AD4sWy7V5sVyz78oBDZd0wvoZHe7HtiWIuw22fBntQ1iKVAxYFRw7PE8nVEZ2pwCbLPGdimsXbaPF7vYZYmi54A/gfneY7JSdCpwOyHYscC/QJOOLSOcA36NKg+iPIw6rNBM2Ka2bnqLBycAO1hjdfNgW2QzspbpDNj0EZintzSv6wdojdVUom9natIYAzRmXjbmyWakSgGbnigsnJdzepQngqmzXGXUd6wXam2y8aTUGOUAm/4DVnvHZmgpsDsG8G719SvF1bJRUuUCm84Au7zMkfWMl6sl6uPs5jXmmXIH6CxLRMkqu+Weh94BPwJvSvTrAzwCftCxhcFpq8AqMR4W8OXIFqk/AxPUv0lJfl/Q114gP4yGAT092BtxFrxxgL8Ay4D7OrYa4LciwKOBNRHrxKye0pdKjVcSw74eBSuV4RHXtUW0W9+HcQzHBUaVlFPUflxU+4eI9pKqBriUDqm+db9nSQwaJ4bLldUDOzyn9G904KHAxKRtpBkSpsQ3ZNL0sG1EW9r6quNw2R5Lab90vbX67ZXUS5cUcJTnZmjqtjQ2KAlD1QB/9v4PVAETbgnk5OWeSYQDVQKf9WayjKbnO9oxT03VAO8HrgZbAubpS1pU2tLHKrh/VOtGTdMVqdqQmAvs1Eo37z32LarGWrXXMAV4WW9gBGlL8sn2DS1YRo3U57TNScUvCWYJAxsDHPXarKy00vMgcD6pD5ZJ5mELkU3AQuC15+2stk/7JmEkjYnDlu+jtL/rpuZwRn0Rd/C0Zrrn+m69UauK71ulkt2EbU7HUtrFzxF9BXLpzzZLtusDZuUCvgHvMdO9Y7xsIwAAAABJRU5ErkJggg==);background-size:auto 21px;background-position:top 8px right 12px;background-repeat:no-repeat;margin-bottom:10px;padding-left:14px}.text{overflow-y:scroll;height:100%}.listText{width:100%;position:relative;float:left;font-size:14px;font-weight:600;padding-left:10px;padding-right:10px;margin-bottom:2px;color:var(--primary);display:flex;flex-direction:row;align-items:center;gap:5px}.listText a{color:var(--primary);display:flex;flex-direction:row;align-items:center}.listText a:hover .preview-item-icon{text-decoration:underline}.listText .icon-clear{margin-top:2px}.listText .icon-clear:hover{color:var(--background)}::-webkit-scrollbar-thumb{background-color:var(--background)!important}.clickable{color:var(--primary);cursor:pointer}.clickable:hover,.clickable:focus{filter:brightness(90%)}.clickable:active{color:var(--icon);transform:translateY(1px)}.clickable .preview-name:hover,.clickable .preview-name:focus{text-decoration:underline}.clickable .preview-name:active{text-decoration:underline}.preview-name{white-space:pre}.spinner{position:absolute;right:1em;top:1em;display:inline-block;width:32px;height:32px;border-radius:50%;background:transparent;border-top:5px solid var(--placeholder);border-right:5px solid var(--placeholder);border-bottom:5px solid transparent;border-left:5px solid transparent;animation:loading .5s infinite linear}.preview-item-icon{margin-left:7px;font-family:zac!important}.preview-more-results{margin-top:5px}\n"] }]
94
108
  }], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { label: [{
95
109
  type: Input
96
110
  }], clickable: [{
@@ -105,9 +119,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
105
119
  type: Input
106
120
  }], tooltip: [{
107
121
  type: Input
122
+ }], showfilter: [{
123
+ type: Input
108
124
  }], itemSelected: [{
109
125
  type: Output
110
126
  }], itemRemoved: [{
111
127
  type: Output
112
128
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcmV2aWV3LWxpc3QvcHJldmlldy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcmV2aWV3LWxpc3QvcHJldmlldy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7Ozs7QUFHL0IsTUFLYSxvQkFBb0I7SUFlL0IsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFkbEMsOEJBQThCO1FBQ2QsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBQ25CLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDWixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDNUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztJQUVzQixDQUFDO0lBRXRDLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUs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LG9CQUFvQjttR0FBcEIsb0JBQW9CLHNUQ3pCakMsazVCQVlBOztTRGFhLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs2RkFNWixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNFbXB0eX0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Um91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcmV2aWV3LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJldmlldy1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld0xpc3RDb21wb25lbnQge1xuICAvL0BJbnB1dCgpIGhpZGVPcHRpb246IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbGlja2FibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsbE5hbWVzID0gW107XG4gIEBJbnB1dCgpIGl0ZW1zID0gW107XG4gIEBJbnB1dCgpIGFsbG93UmVtb3ZlID0gZmFsc2VcbiAgQElucHV0KCkgdG9vbHRpcCA9ICcnO1xuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBpdGVtUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBwdWJsaWMgcHJldmlld0l0ZW1zID0gW107XG4gIHByaXZhdGUgaGlkZU9wdGlvbiA9ICdhc2RmJztcbiAgZmlsdGVyRm9yID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByZXZpZXdJdGVtcyA9IFtdO1xuICAgIGlmICghaXNFbXB0eSh0aGlzLmFsbE5hbWVzKSkge1xuICAgICAgdGhpcy5wcmV2aWV3SXRlbXMucHVzaCguLi50aGlzLmFsbE5hbWVzKTtcbiAgICAgIHRoaXMucHJldmlld0l0ZW1zID0gdGhpcy5wcmV2aWV3SXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB0aGlzLmhpZGVPcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXZpZXdJdGVtcy5wdXNoKC4uLnRoaXMuaXRlbXMpO1xuICAgIH1cbiAgICB0aGlzLnNvcnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucHJldmlld0l0ZW1zID0gW107XG4gICAgdGhpcy5wcmV2aWV3SXRlbXMucHVzaCguLi50aGlzLmFsbE5hbWVzKTtcbiAgICB0aGlzLnByZXZpZXdJdGVtcyA9IHRoaXMucHJldmlld0l0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gdGhpcy5oaWRlT3B0aW9uKTtcbiAgICB0aGlzLnNvcnQoKTtcbiAgfVxuXG4gIG9uS2V5ZG93bkV2ZW50KCkge1xuICAgIHRoaXMucHJldmlld0l0ZW1zID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFsbE5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIWlzRW1wdHkodGhpcy5hbGxOYW1lcykpIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsTmFtZXNbaV0uaW5kZXhPZih0aGlzLmZpbHRlckZvcikgPj0gMCkge1xuICAgICAgICAgIHRoaXMucHJldmlld0l0ZW1zLnB1c2godGhpcy5hbGxOYW1lc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zW2ldLm5hbWUuaW5kZXhPZih0aGlzLmZpbHRlckZvcikgPj0gMCkge1xuICAgICAgICAgIHRoaXMucHJldmlld0l0ZW1zLnB1c2godGhpcy5pdGVtc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zb3J0KCk7XG4gIH1cblxuICBzb3J0KCkge1xuICAgIHRoaXMucHJldmlld0l0ZW1zLnNvcnQoKGl0ZW0xLCBpdGVtMikgPT4gKGl0ZW0xLm5hbWUgPyBpdGVtMS5uYW1lLmxvY2FsZUNvbXBhcmUoaXRlbTIubmFtZSkgOiBpdGVtMS5sb2NhbGVDb21wYXJlKGl0ZW0yKSkpO1xuICB9XG5cbiAgc2VsZWN0ZWQoaXRlbTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuY2xpY2thYmxlKSB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgcmVtb3ZlKGl0ZW0pIHtcbiAgICB0aGlzLml0ZW1SZW1vdmVkLmVtaXQoaXRlbSk7XG4gIH1cblxuICBsaW5rQ2xpY2tlZChldmVudCwgaXRlbSkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoaXRlbS5ocmVmKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGlzdEJveCByb3dcIj5cbiAgICA8aW5wdXQgKGtleXVwKT1cIm9uS2V5ZG93bkV2ZW50KClcIiBbKG5nTW9kZWwpXT1cImZpbHRlckZvclwiIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBGaWx0ZXJcIi8+XG4gICAgPHNwYW4gKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cInNwaW5uZXJcIj48L3NwYW4+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dCByb3dcIj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0ZWQoaXRlbSlcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcmV2aWV3SXRlbXNcIiBbbmdDbGFzc109XCJ7IGNsaWNrYWJsZTogY2xpY2thYmxlIH1cIiBjbGFzcz1cImxpc3RUZXh0XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWxsb3dSZW1vdmVcIiBjbGFzcz1cImljb24tY2xlYXJcIiAoY2xpY2spPVwicmVtb3ZlKGl0ZW0pXCI+PC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmhyZWZcIiBjbGFzcz1cInByZXZpZXctbmFtZVwiIG1hdFRvb2x0aXA9XCJ7e3Rvb2x0aXB9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjEwMDBcIj57eyBpdGVtIH19PC9zcGFuPlxuICAgICAgICAgICAgPGEgKm5nSWY9XCJpdGVtLmhyZWZcIiBbaHJlZl09XCInLi8nICsgaXRlbS5ocmVmXCIgKGNsaWNrKT1cImxpbmtDbGlja2VkKCRldmVudCwgaXRlbSlcIiBtYXRUb29sdGlwPVwie3t0b29sdGlwfX1cIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiMTAwMFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCI+PHNwYW4gKm5nSWY9XCJpdGVtLm5hbWVcIiBjbGFzcz1cInByZXZpZXctbmFtZVwiPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj48L2E+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcmV2aWV3LWxpc3QvcHJldmlldy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcmV2aWV3LWxpc3QvcHJldmlldy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7Ozs7QUFHL0IsTUFLYSxvQkFBb0I7SUFnQi9CLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZmxDLDhCQUE4QjtRQUNkLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNuQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNqQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDNUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztJQUVzQixDQUFDO0lBRXRDLFFBQVE7UUFD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LElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDOytHQTdFVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnVkN6QmpDLHNtQ0FjQTs7U0RXYSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7NkZBTVosS0FBSztzQkFBcEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNFbXB0eX0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Um91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcmV2aWV3LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJldmlldy1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld0xpc3RDb21wb25lbnQge1xuICAvL0BJbnB1dCgpIGhpZGVPcHRpb246IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbGlja2FibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsbE5hbWVzID0gW107XG4gIEBJbnB1dCgpIGl0ZW1zID0gW107XG4gIEBJbnB1dCgpIGFsbG93UmVtb3ZlID0gZmFsc2VcbiAgQElucHV0KCkgdG9vbHRpcCA9ICcnO1xuICBASW5wdXQoKSBzaG93ZmlsdGVyID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgaXRlbVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgcHVibGljIHByZXZpZXdJdGVtcyA9IFtdO1xuICBwcml2YXRlIGhpZGVPcHRpb24gPSAnYXNkZic7XG4gIGZpbHRlckZvciA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcmV2aWV3SXRlbXMgPSBbXTtcbiAgICBpZiAoIWlzRW1wdHkodGhpcy5hbGxOYW1lcykpIHtcbiAgICAgIHRoaXMucHJldmlld0l0ZW1zLnB1c2goLi4udGhpcy5hbGxOYW1lcyk7XG4gICAgICB0aGlzLnByZXZpZXdJdGVtcyA9IHRoaXMucHJldmlld0l0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gdGhpcy5oaWRlT3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmV2aWV3SXRlbXMucHVzaCguLi50aGlzLml0ZW1zKTtcbiAgICB9XG4gICAgdGhpcy5zb3J0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnByZXZpZXdJdGVtcyA9IFtdO1xuICAgIHRoaXMucHJldmlld0l0ZW1zLnB1c2goLi4udGhpcy5hbGxOYW1lcyk7XG4gICAgdGhpcy5wcmV2aWV3SXRlbXMgPSB0aGlzLnByZXZpZXdJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IHRoaXMuaGlkZU9wdGlvbik7XG4gICAgdGhpcy5zb3J0KCk7XG4gIH1cblxuICBvbktleWRvd25FdmVudCgpIHtcbiAgICB0aGlzLnByZXZpZXdJdGVtcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hbGxOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFpc0VtcHR5KHRoaXMuYWxsTmFtZXMpKSB7XG4gICAgICAgIGlmICh0aGlzLmFsbE5hbWVzW2ldLmluZGV4T2YodGhpcy5maWx0ZXJGb3IpID49IDApIHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdJdGVtcy5wdXNoKHRoaXMuYWxsTmFtZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5pdGVtc1tpXS5uYW1lLmluZGV4T2YodGhpcy5maWx0ZXJGb3IpID49IDApIHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdJdGVtcy5wdXNoKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc29ydCgpO1xuICB9XG5cbiAgc29ydCgpIHtcbiAgICB0aGlzLnByZXZpZXdJdGVtcy5zb3J0KChpdGVtMSwgaXRlbTIpID0+ICB7XG4gICAgICBpZiAoaXRlbTEuc2tpcFNvcnQpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0xLm5hbWU7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0yLnNraXBTb3J0KSB7XG4gICAgICAgIHJldHVybiAgaXRlbTIubmFtZTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbTEubmFtZSkge1xuICAgICAgICByZXR1cm4gaXRlbTEubmFtZS5sb2NhbGVDb21wYXJlKGl0ZW0yLm5hbWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaXRlbTEubG9jYWxlQ29tcGFyZShpdGVtMilcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdGVkKGl0ZW06IHN0cmluZykge1xuICAgIGlmICh0aGlzLmNsaWNrYWJsZSkgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcbiAgfVxuXG4gIHJlbW92ZShpdGVtKSB7XG4gICAgdGhpcy5pdGVtUmVtb3ZlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgbGlua0NsaWNrZWQoZXZlbnQsIGl0ZW0pIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGl0ZW0uaHJlZik7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxpc3RCb3ggcm93XCI+XG4gICAgPGlucHV0ICpuZ0lmPVwic2hvd2ZpbHRlclwiIChrZXl1cCk9XCJvbktleWRvd25FdmVudCgpXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJGb3JcIiBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gRmlsdGVyXCIvPlxuICAgIDxzcGFuICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJzcGlubmVyXCI+PC9zcGFuPlxuXG4gICAgPGRpdiBjbGFzcz1cInRleHQgcm93XCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdGVkKGl0ZW0pXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJldmlld0l0ZW1zXCIgW25nQ2xhc3NdPVwieyBjbGlja2FibGU6IGNsaWNrYWJsZSB9XCIgY2xhc3M9XCJsaXN0VGV4dFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFsbG93UmVtb3ZlXCIgY2xhc3M9XCJpY29uLWNsZWFyXCIgKGNsaWNrKT1cInJlbW92ZShpdGVtKVwiPjwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5ocmVmXCIgY2xhc3M9XCJwcmV2aWV3LW5hbWVcIiBtYXRUb29sdGlwPVwie3t0b29sdGlwfX1cIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCIxMDAwXCI+e3sgaXRlbSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxhICpuZ0lmPVwiaXRlbS5ocmVmXCIgW2hyZWZdPVwiJy4vJyArIGl0ZW0uaHJlZlwiIChjbGljayk9XCJsaW5rQ2xpY2tlZCgkZXZlbnQsIGl0ZW0pXCIgY2xhc3M9XCJ7e2l0ZW0ubGlua0NsYXNzID8gaXRlbS5saW5rQ2xhc3MgOiAnJ319XCIgbWF0VG9vbHRpcD1cInt7dG9vbHRpcH19XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjEwMDBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWxvd1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5uYW1lXCIgY2xhc3M9XCJwcmV2aWV3LW5hbWVcIj57eyBpdGVtLm5hbWUgfX08ZGl2ICpuZ0lmPVwiaXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cInByZXZpZXctaXRlbS1pY29uIHt7aXRlbS5pY29uQ2xhc3N9fVwiIChjbGljayk9XCJyZW1vdmUoaXRlbSlcIj48L2Rpdj48L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -193,7 +193,7 @@ class EdgeRouterFormComponent extends ProjectableForm {
193
193
  provide: MatDialogRef,
194
194
  useValue: {}
195
195
  }
196
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router: ' : 'Create New Edge Router'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"edge-router-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge router\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Edge Router attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Edge Routers to form a group of Edge Routers.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"edgeRouterRoleAttributes\"\n [placeholder]=\"'Add attributes to group Edge Routers'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <ng-content select=\"[slot=column-1-slot-1]\"></ng-content>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div *ngIf=\"showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'TUNNELER'\"\n [title2]=\"'TRAVERSAL'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">TUNNELER ENABLED</div>\n <div\n (click)=\"toggleTunnelerEnabled()\"\n [ngClass]=\"{ on: formData.isTunnelerEnabled }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!formData.isTunnelerEnabled\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isTunnelerEnabled\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">ALLOW TRAVERSAL</div>\n <div\n (click)=\"toggleNoTraversal()\"\n [ngClass]=\"{ on: !formData.noTraversal }\"\n class=\"toggle\"\n >\n <span [hidden]=\"formData.noTraversal\" class=\"on-label\">YES</span>\n <span [hidden]=\"!formData.noTraversal\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <ng-content select=\"[slot=column-2-slot-1]\"></ng-content>\n <lib-form-field-container\n *ngIf=\"hasEnrolmentToken && !extService['hideZitiRegistration']\"\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"formData.enrollmentJwt\"\n [token]=\"formData.enrollmentToken\"\n [expiration]=\"formData.enrollmentExpiresAt\"\n (doRefresh)=\"refreshEdgeRouter()\"\n [type]=\"'router'\"\n ></lib-qr-code>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentities.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"'OPTIONAL'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [".edge-router-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:15px}.form-field-dropdown{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23668291%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-position:center right 10px;background-repeat:no-repeat;background-size:18px;padding-right:28px}.disabled{opacity:.5;pointer-events:none}::ng-deep .admin-toggle{width:100%;width:35%;display:flex}::ng-deep .admin-toggle .form-field-line{display:none}::ng-deep .admin-toggle .toggle{width:100%}::ng-deep .is-admin-container .form-field-title-container.title-container-2{width:35%!important}.svc-test-result{position:absolute;transition:var(--transition);height:0;width:100%;background-color:var(--background);bottom:0;font-weight:600;padding-left:10px;padding-right:10px;border-color:var(--inputBorder);border-style:solid;border-width:2px;border-bottom-right-radius:7px;border-bottom-left-radius:7px;border-top-style:none}.svc-test-result.test-result-open{height:-moz-fit-content;height:fit-content;box-shadow:0 -2px 11px 0 var(--boxShadow);padding-bottom:15px;padding-top:15px}.svc-test-result .close.icon-close{top:10px;right:10px;font-size:18px;height:18px;width:18px;line-height:18px}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-label{color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-line{border-color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle{border-color:var(--primaryColor);border-style:solid;border-width:2px}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle .switch{top:1px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i7.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i8.PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: i11.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i12.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }, { kind: "component", type: i13.QrCodeComponent, selector: "lib-qr-code", inputs: ["jwt", "token", "expiration", "identity", "type", "authenticators", "qrOnly", "canExpand"], outputs: ["doRefresh"] }, { kind: "component", type: i14.CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }] }); }
196
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router: ' : 'Create New Edge Router'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"edge-router-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge router\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Edge Router attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Edge Routers to form a group of Edge Routers.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"edgeRouterRoleAttributes\"\n [placeholder]=\"'Add attributes to group Edge Routers'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <ng-content select=\"[slot=column-1-slot-1]\"></ng-content>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div *ngIf=\"showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'TUNNELER'\"\n [title2]=\"'TRAVERSAL'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">TUNNELER ENABLED</div>\n <div\n (click)=\"toggleTunnelerEnabled()\"\n [ngClass]=\"{ on: formData.isTunnelerEnabled }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!formData.isTunnelerEnabled\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isTunnelerEnabled\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">ALLOW TRAVERSAL</div>\n <div\n (click)=\"toggleNoTraversal()\"\n [ngClass]=\"{ on: !formData.noTraversal }\"\n class=\"toggle\"\n >\n <span [hidden]=\"formData.noTraversal\" class=\"on-label\">YES</span>\n <span [hidden]=\"!formData.noTraversal\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <ng-content select=\"[slot=column-2-slot-1]\"></ng-content>\n <lib-form-field-container\n *ngIf=\"hasEnrolmentToken && !extService['hideZitiRegistration']\"\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"formData.enrollmentJwt\"\n [token]=\"formData.enrollmentToken\"\n [expiration]=\"formData.enrollmentExpiresAt\"\n (doRefresh)=\"refreshEdgeRouter()\"\n [type]=\"'router'\"\n ></lib-qr-code>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentities.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"'OPTIONAL'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [".edge-router-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:15px}.form-field-dropdown{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23668291%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-position:center right 10px;background-repeat:no-repeat;background-size:18px;padding-right:28px}.disabled{opacity:.5;pointer-events:none}::ng-deep .admin-toggle{width:100%;width:35%;display:flex}::ng-deep .admin-toggle .form-field-line{display:none}::ng-deep .admin-toggle .toggle{width:100%}::ng-deep .is-admin-container .form-field-title-container.title-container-2{width:35%!important}.svc-test-result{position:absolute;transition:var(--transition);height:0;width:100%;background-color:var(--background);bottom:0;font-weight:600;padding-left:10px;padding-right:10px;border-color:var(--inputBorder);border-style:solid;border-width:2px;border-bottom-right-radius:7px;border-bottom-left-radius:7px;border-top-style:none}.svc-test-result.test-result-open{height:-moz-fit-content;height:fit-content;box-shadow:0 -2px 11px 0 var(--boxShadow);padding-bottom:15px;padding-top:15px}.svc-test-result .close.icon-close{top:10px;right:10px;font-size:18px;height:18px;width:18px;line-height:18px}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-label{color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-line{border-color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle{border-color:var(--primaryColor);border-style:solid;border-width:2px}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle .switch{top:1px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i7.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i8.PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip", "showfilter"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: i11.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i12.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }, { kind: "component", type: i13.QrCodeComponent, selector: "lib-qr-code", inputs: ["jwt", "token", "expiration", "identity", "type", "authenticators", "qrOnly", "canExpand"], outputs: ["doRefresh"] }, { kind: "component", type: i14.CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }] }); }
197
197
  }
198
198
  export { EdgeRouterFormComponent };
199
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EdgeRouterFormComponent, decorators: [{
@@ -248,7 +248,7 @@ ${this.formData.id ? '--request PATCH \\' : ''}
248
248
  provide: MatDialogRef,
249
249
  useValue: {}
250
250
  }
251
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router Policy: ' : 'Create New Edge Router Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"edge-router-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge edge router policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Edge Router Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100003'\"\n [helpText]=\"'Choose which edge router to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedEdgeRouterRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedEdgeRouterNamedAttributes\"\n [availableRoleAttributes]=\"svc.edgeRouterRoleAttributes\"\n [availableNamedAttributes]=\"svc.edgeRouterNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedEdgeRoutersByAttribute(selectedEdgeRouterRoleAttributes, selectedEdgeRouterNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedEdgeRoutersByAttribute(selectedEdgeRouterRoleAttributes, selectedEdgeRouterNamedAttributes)\"\n [placeholder]=\"'Select edge router attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Identity Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100002'\"\n [helpText]=\"'Choose which identities to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedIdentityRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedIdentityNamedAttributes\"\n [availableRoleAttributes]=\"svc.identityRoleAttributes\"\n [availableNamedAttributes]=\"svc.identityNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n [placeholder]=\"'Select identity attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Semantic'\"\n [layout]=\"'row'\"\n >\n <select\n [(ngModel)]=\"formData.semantic\"\n id=\"PolicySemantic\"\n class=\"form-field-dropdown\"\n >\n <option value=\"AnyOf\">AnyOf</option>\n <option value=\"AllOf\">AllOf</option>\n </select>\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'Associated Edge Routers'\"\n [count]=\"svc.associatedEdgeRouterNames.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all Edge Routers that this Edge Router Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"edgeRoutersLoading\"\n [allNames]=\"svc.associatedEdgeRouterNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentityNames.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [headerActions]=\"apiOptions\"\n (actionRequested)=\"apiActionRequested($event)\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i7.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i8.PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i11.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }] }); }
251
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router Policy: ' : 'Create New Edge Router Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"edge-router-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge edge router policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Edge Router Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100003'\"\n [helpText]=\"'Choose which edge router to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedEdgeRouterRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedEdgeRouterNamedAttributes\"\n [availableRoleAttributes]=\"svc.edgeRouterRoleAttributes\"\n [availableNamedAttributes]=\"svc.edgeRouterNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedEdgeRoutersByAttribute(selectedEdgeRouterRoleAttributes, selectedEdgeRouterNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedEdgeRoutersByAttribute(selectedEdgeRouterRoleAttributes, selectedEdgeRouterNamedAttributes)\"\n [placeholder]=\"'Select edge router attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Identity Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100002'\"\n [helpText]=\"'Choose which identities to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedIdentityRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedIdentityNamedAttributes\"\n [availableRoleAttributes]=\"svc.identityRoleAttributes\"\n [availableNamedAttributes]=\"svc.identityNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n [placeholder]=\"'Select identity attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Semantic'\"\n [layout]=\"'row'\"\n >\n <select\n [(ngModel)]=\"formData.semantic\"\n id=\"PolicySemantic\"\n class=\"form-field-dropdown\"\n >\n <option value=\"AnyOf\">AnyOf</option>\n <option value=\"AllOf\">AllOf</option>\n </select>\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'Associated Edge Routers'\"\n [count]=\"svc.associatedEdgeRouterNames.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all Edge Routers that this Edge Router Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"edgeRoutersLoading\"\n [allNames]=\"svc.associatedEdgeRouterNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentityNames.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [headerActions]=\"apiOptions\"\n (actionRequested)=\"apiActionRequested($event)\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i7.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i8.PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip", "showfilter"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i11.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }] }); }
252
252
  }
253
253
  export { EdgeRouterPolicyFormComponent };
254
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EdgeRouterPolicyFormComponent, decorators: [{
@@ -37,12 +37,12 @@ class FormFieldContainerComponent {
37
37
  this.actionRequested.emit(action);
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldContainerComponent, selector: "lib-form-field-container", inputs: { title: "title", title2: "title2", layout: "layout", helpText: "helpText", helpText2: "helpText2", label: "label", count: "count", action: "action", actionLabel: "actionLabel", class: "class", contentStyle: "contentStyle", showHeader: "showHeader", headerActions: "headerActions" }, outputs: { actionRequested: "actionRequested" }, ngImport: i0, template: "<div class=\"form-field-container\" class=\"{{class}}\" [ngClass]=\"{'form-field-row': layout === 'row'}\">\n <div class=\"form-field-header\" *ngIf=\"showHeader\">\n <div class=\"form-field-title-container\">\n <span class=\"form-field-title\">{{title}}</span>\n <div\n *ngIf=\"helpText\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <span class=\"form-field-label\" *ngIf=\"label\">{{label}}</span>\n <span class=\"form-field-count\" *ngIf=\"count || count === 0\">{{count}}</span>\n <div class=\"form-field-title-container title-container-2\" *ngIf=\"title2\">\n <span class=\"form-field-title title2\">{{title2}}</span>\n <div\n *ngIf=\"helpText2\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText2}}\"\n matTooltipPosition=\"below\"\n ></div>\n </div>\n </div>\n <div class=\"form-field-content\" [style]=\"contentStyle\">\n <ng-content></ng-content>\n </div>\n <lib-multi-action-button\n *ngIf=\"headerActions\"\n [actions]=\"headerActions\"\n (actionRequested)=\"actionClicked($event)\"\n ></lib-multi-action-button>\n</div>\n", styles: [":host{height:-moz-fit-content;height:fit-content;display:flex;width:100%;flex-direction:column;position:relative}.form-field-container{display:flex;flex-direction:column;background-color:var(--navigation);padding:15px;border-radius:10px;gap:15px;height:100%;position:relative}.form-field-container.hide-overflow .form-field-content{overflow:hidden}.form-field-container .form-field-content{display:flex;flex-direction:column;width:100%;gap:15px;z-index:99999;position:relative;border-radius:7px}.form-field-container.form-field-row .form-field-content{flex-direction:row;width:100%}.form-field-container .form-field-title-container{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;flex:1 1 auto;width:100%}.form-field-container .form-field-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;height:14px;z-index:9999}.form-field-container .form-field-title{display:flex;align-items:center;font-size:14px;font-weight:600;color:var(--tableText);text-transform:uppercase;height:14px}.form-field-container .form-field-label{font-size:14px;font-weight:600;color:var(--placeholder)}.form-field-container .form-field-count{background-color:#4c5566;color:var(--white);display:flex;align-items:center;font-weight:700;border-radius:14px;height:24px;padding-left:13px;padding-right:13px;font-size:13px}.form-field-container .form-field-input::placeholder{font-weight:600}.form-field-container .save-button{text-wrap:nowrap;height:25px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i3.MultiActionButtonComponent, selector: "lib-multi-action-button", inputs: ["actions"], outputs: ["actionRequested"] }] }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldContainerComponent, selector: "lib-form-field-container", inputs: { title: "title", title2: "title2", layout: "layout", helpText: "helpText", helpText2: "helpText2", label: "label", count: "count", action: "action", actionLabel: "actionLabel", class: "class", contentStyle: "contentStyle", showHeader: "showHeader", headerActions: "headerActions" }, outputs: { actionRequested: "actionRequested" }, ngImport: i0, template: "<div class=\"form-field-container\" class=\"{{class}}\" [ngClass]=\"{'form-field-row': layout === 'row'}\">\n <div class=\"form-field-header\" *ngIf=\"showHeader\">\n <div class=\"form-field-title-container\">\n <span class=\"form-field-title\">{{title}}</span>\n <div\n *ngIf=\"helpText\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <span class=\"form-field-label\" *ngIf=\"label\">{{label}}</span>\n <span class=\"form-field-count\" *ngIf=\"count || count === 0\">{{count}}</span>\n <div class=\"form-field-title-container title-container-2\" *ngIf=\"title2\">\n <span class=\"form-field-title title2\">{{title2}}</span>\n <div\n *ngIf=\"helpText2\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText2}}\"\n matTooltipPosition=\"below\"\n ></div>\n </div>\n </div>\n <div class=\"form-field-content\" [style]=\"contentStyle\">\n <ng-content></ng-content>\n </div>\n <lib-multi-action-button\n *ngIf=\"headerActions\"\n [actions]=\"headerActions\"\n (actionRequested)=\"actionClicked($event)\"\n ></lib-multi-action-button>\n</div>\n", styles: [":host{height:-moz-fit-content;height:fit-content;display:flex;width:100%;flex-direction:column;position:relative}.form-field-container{display:flex;flex-direction:column;background-color:var(--navigation);padding:15px;border-radius:10px;gap:15px;height:100%;position:relative}.form-field-container.hide-overflow .form-field-content{overflow:hidden}.form-field-container.no-gap .form-field-content{gap:0}.form-field-container .form-field-content{display:flex;flex-direction:column;width:100%;gap:15px;z-index:99999;position:relative;border-radius:7px}.form-field-container.form-field-row .form-field-content{flex-direction:row;width:100%}.form-field-container .form-field-title-container{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;flex:1 1 auto;width:100%}.form-field-container .form-field-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;height:14px;z-index:9999}.form-field-container .form-field-title{display:flex;align-items:center;font-size:14px;font-weight:600;color:var(--tableText);text-transform:uppercase;height:14px}.form-field-container .form-field-label{font-size:14px;font-weight:600;color:var(--placeholder)}.form-field-container .form-field-count{background-color:#4c5566;color:var(--white);display:flex;align-items:center;font-weight:700;border-radius:14px;height:24px;padding-left:13px;padding-right:13px;font-size:13px}.form-field-container .form-field-input::placeholder{font-weight:600}.form-field-container .save-button{text-wrap:nowrap;height:25px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i3.MultiActionButtonComponent, selector: "lib-multi-action-button", inputs: ["actions"], outputs: ["actionRequested"] }] }); }
41
41
  }
42
42
  export { FormFieldContainerComponent };
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContainerComponent, decorators: [{
44
44
  type: Component,
45
- args: [{ selector: 'lib-form-field-container', template: "<div class=\"form-field-container\" class=\"{{class}}\" [ngClass]=\"{'form-field-row': layout === 'row'}\">\n <div class=\"form-field-header\" *ngIf=\"showHeader\">\n <div class=\"form-field-title-container\">\n <span class=\"form-field-title\">{{title}}</span>\n <div\n *ngIf=\"helpText\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <span class=\"form-field-label\" *ngIf=\"label\">{{label}}</span>\n <span class=\"form-field-count\" *ngIf=\"count || count === 0\">{{count}}</span>\n <div class=\"form-field-title-container title-container-2\" *ngIf=\"title2\">\n <span class=\"form-field-title title2\">{{title2}}</span>\n <div\n *ngIf=\"helpText2\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText2}}\"\n matTooltipPosition=\"below\"\n ></div>\n </div>\n </div>\n <div class=\"form-field-content\" [style]=\"contentStyle\">\n <ng-content></ng-content>\n </div>\n <lib-multi-action-button\n *ngIf=\"headerActions\"\n [actions]=\"headerActions\"\n (actionRequested)=\"actionClicked($event)\"\n ></lib-multi-action-button>\n</div>\n", styles: [":host{height:-moz-fit-content;height:fit-content;display:flex;width:100%;flex-direction:column;position:relative}.form-field-container{display:flex;flex-direction:column;background-color:var(--navigation);padding:15px;border-radius:10px;gap:15px;height:100%;position:relative}.form-field-container.hide-overflow .form-field-content{overflow:hidden}.form-field-container .form-field-content{display:flex;flex-direction:column;width:100%;gap:15px;z-index:99999;position:relative;border-radius:7px}.form-field-container.form-field-row .form-field-content{flex-direction:row;width:100%}.form-field-container .form-field-title-container{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;flex:1 1 auto;width:100%}.form-field-container .form-field-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;height:14px;z-index:9999}.form-field-container .form-field-title{display:flex;align-items:center;font-size:14px;font-weight:600;color:var(--tableText);text-transform:uppercase;height:14px}.form-field-container .form-field-label{font-size:14px;font-weight:600;color:var(--placeholder)}.form-field-container .form-field-count{background-color:#4c5566;color:var(--white);display:flex;align-items:center;font-weight:700;border-radius:14px;height:24px;padding-left:13px;padding-right:13px;font-size:13px}.form-field-container .form-field-input::placeholder{font-weight:600}.form-field-container .save-button{text-wrap:nowrap;height:25px}\n"] }]
45
+ args: [{ selector: 'lib-form-field-container', template: "<div class=\"form-field-container\" class=\"{{class}}\" [ngClass]=\"{'form-field-row': layout === 'row'}\">\n <div class=\"form-field-header\" *ngIf=\"showHeader\">\n <div class=\"form-field-title-container\">\n <span class=\"form-field-title\">{{title}}</span>\n <div\n *ngIf=\"helpText\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <span class=\"form-field-label\" *ngIf=\"label\">{{label}}</span>\n <span class=\"form-field-count\" *ngIf=\"count || count === 0\">{{count}}</span>\n <div class=\"form-field-title-container title-container-2\" *ngIf=\"title2\">\n <span class=\"form-field-title title2\">{{title2}}</span>\n <div\n *ngIf=\"helpText2\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText2}}\"\n matTooltipPosition=\"below\"\n ></div>\n </div>\n </div>\n <div class=\"form-field-content\" [style]=\"contentStyle\">\n <ng-content></ng-content>\n </div>\n <lib-multi-action-button\n *ngIf=\"headerActions\"\n [actions]=\"headerActions\"\n (actionRequested)=\"actionClicked($event)\"\n ></lib-multi-action-button>\n</div>\n", styles: [":host{height:-moz-fit-content;height:fit-content;display:flex;width:100%;flex-direction:column;position:relative}.form-field-container{display:flex;flex-direction:column;background-color:var(--navigation);padding:15px;border-radius:10px;gap:15px;height:100%;position:relative}.form-field-container.hide-overflow .form-field-content{overflow:hidden}.form-field-container.no-gap .form-field-content{gap:0}.form-field-container .form-field-content{display:flex;flex-direction:column;width:100%;gap:15px;z-index:99999;position:relative;border-radius:7px}.form-field-container.form-field-row .form-field-content{flex-direction:row;width:100%}.form-field-container .form-field-title-container{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;flex:1 1 auto;width:100%}.form-field-container .form-field-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;height:14px;z-index:9999}.form-field-container .form-field-title{display:flex;align-items:center;font-size:14px;font-weight:600;color:var(--tableText);text-transform:uppercase;height:14px}.form-field-container .form-field-label{font-size:14px;font-weight:600;color:var(--placeholder)}.form-field-container .form-field-count{background-color:#4c5566;color:var(--white);display:flex;align-items:center;font-weight:700;border-radius:14px;height:24px;padding-left:13px;padding-right:13px;font-size:13px}.form-field-container .form-field-input::placeholder{font-weight:600}.form-field-container .save-button{text-wrap:nowrap;height:25px}\n"] }]
46
46
  }], ctorParameters: function () { return []; }, propDecorators: { title: [{
47
47
  type: Input
48
48
  }], title2: [{
@@ -325,7 +325,7 @@ class IdentityFormComponent extends ProjectableForm {
325
325
  provide: MatDialogRef,
326
326
  useValue: {}
327
327
  }
328
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Identity: ' : 'Create New Identity'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"identity-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Identity Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this identity\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Identity attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Identities to form a group of Identities.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"identityRoleAttributes\"\n [placeholder]=\"'Add attributes to group Identities'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Auth Policy'\"\n [label]=\"'OPTIONAL'\"\n [helpText]=\"'Authentication Policies restrict the authentication methods available to identities.'\"\n >\n <select\n [(ngModel)]=\"formData.authPolicyId\"\n id=\"authPolicyId\"\n class=\"form-field-dropdown\"\n >\n <option value=\"\">Select an Authentication Policy</option>\n <option\n *ngFor=\"let policy of authPolicies\"\n [value]=\"policy.id\"\n >\n {{ policy.name }}\n </option>\n </select>\n <input class=\"form-field-input\" placeholder=\"Optional External ID\" [(ngModel)]=\"formData.externalId\"/>\n </lib-form-field-container>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" (toggleOnChange)=\"showMoreChanged($event)\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div [hidden]=\"!showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'Enrollment Type'\"\n [title2]=\"enrollmentTypeTitle\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <select\n id=\"EnrollmentType\"\n class=\"form-field-dropdown\"\n [ngClass]=\"{disabled: isEditing}\"\n [(ngModel)]=\"enrollmentType\"\n (change)=\"updateEnrollment()\"\n >\n <option value=\"ott\">One Time Token</option>\n <option value=\"CA\">Certificate Authority</option>\n <option value=\"updb\">UPDB</option>\n </select>\n <select\n id=\"CertAuthorities\"\n class=\"form-field-dropdown\"\n *ngIf=\"enrollmentType === 'CA'\"\n [ngClass]=\"{disabled: isEditing}\"\n [(ngModel)]=\"enrollmentCA\"\n [ngClass]=\"{error: errors.enrollmentCA}\"\n (change)=\"updateEnrollment()\"\n >\n <option *ngFor=\"let ca of cas\" [value]=\"ca.id\">{{ca.name}}</option>\n </select>\n <input\n *ngIf=\"enrollmentType === 'updb' && !isEditing\"\n [ngClass]=\"{disabled: isEditing, error: errors.enrollmentUPDB}\"\n [(ngModel)]=\"enrollmentUPDB\"\n (keyup)=\"updateEnrollment()\"\n class=\"form-field-input\"\n id=\"UPDBName\"\n type=\"text\"\n maxlength=\"500\"\n placeholder=\"Enter a name\"\n >\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Admin'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced is-admin-container\"\n >\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">IS ADMIN</div>\n <div\n (click)=\"toggleIsAdmin()\"\n [ngClass]=\"{ on: formData.isAdmin }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!formData.isAdmin\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isAdmin\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Hosting Cost'\"\n [title2]=\"'Precedence'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <input class=\"form-field-input\" [(ngModel)]=\"formData.defaultHostingCost\" type=\"number\"/>\n <select\n [(ngModel)]=\"formData.defaultHostingPrecedence\"\n id=\"hostingPrecedence\"\n class=\"form-field-dropdown\"\n >\n <option value=\"default\">Default</option>\n <option value=\"required\">Required</option>\n <option value=\"failed\">Failed</option>\n </select>\n </lib-form-field-container>\n <lib-form-field-container *ngFor=\"let tagElement of tagElements\"\n [title]=\"tagElement.label\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <div [innerHTML]=\"tagElement.content | safe\"></div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n *ngIf=\"!hideTags\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n *ngIf=\"hasEnrolmentToken || hasAuthenticator\"\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"jwt\"\n [expiration]=\"enrollmentExpiration\"\n [authenticators]=\"formData.authenticators\"\n [type]=\"'identity'\"\n [canExpand]=\"true\"\n (doRefresh)=\"refreshIdentity()\"\n ></lib-qr-code>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Services'\"\n [count]=\"associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Identity is associated with.'\"\n >\n <lib-preview-list\n (itemSelected)=\"serviceSelected($event)\"\n [clickable]=\"true\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"associatedServiceNames\"\n ></lib-preview-list>\n <div class=\"svc-test-result\" [ngClass]=\"{'test-result-open': testResultOpen}\">\n <div class=\"close icon-close\" (click)=\"closeTestResult()\"></div>\n <div class=\"result-container\" [innerHTML]=\"testResult\" ></div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Service Policies'\"\n [count]=\"associatedServicePolicies.length\"\n [helpText]=\"'Preview list of all service policies that this Identity is associated with.'\"\n >\n <lib-preview-list\n (itemSelected)=\"serviceSelected($event)\"\n [clickable]=\"false\"\n [isLoading]=\"servicePoliciesLoading\"\n [allNames]=\"associatedServicePolicyNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"''\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\" readonly/>\n <div class=\"url-copy icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [".identity-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:15px}.disabled{opacity:.5;pointer-events:none}::ng-deep .admin-toggle{width:100%;width:35%;display:flex}::ng-deep .admin-toggle .form-field-line{display:none}::ng-deep .admin-toggle .toggle{width:100%}::ng-deep .is-admin-container .form-field-title-container.title-container-2{width:35%!important}.svc-test-result{position:absolute;transition:var(--transition);height:0;width:100%;background-color:var(--background);bottom:0;font-weight:600;padding-left:10px;padding-right:10px;border-color:var(--inputBorder);border-style:solid;border-width:2px;border-bottom-right-radius:7px;border-bottom-left-radius:7px;border-top-style:none}.svc-test-result.test-result-open{height:-moz-fit-content;height:fit-content;box-shadow:0 -2px 11px 0 var(--boxShadow);padding-bottom:15px;padding-top:15px}.svc-test-result .close.icon-close{top:10px;right:10px;font-size:18px;height:18px;width:18px;line-height:18px}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-label{color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-line{border-color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle{border-color:var(--primaryColor);border-style:solid;border-width:2px}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle .switch{top:1px}::ng-deep .copy.icon-copy.url-copy{background-color:var(--navigation)}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i8.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i9.PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: i10.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i11.FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: i12.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i13.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }, { kind: "component", type: i14.QrCodeComponent, selector: "lib-qr-code", inputs: ["jwt", "token", "expiration", "identity", "type", "authenticators", "qrOnly", "canExpand"], outputs: ["doRefresh"] }, { kind: "component", type: i15.CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }, { kind: "pipe", type: i16.SafePipe, name: "safe" }] }); }
328
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Identity: ' : 'Create New Identity'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"identity-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Identity Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this identity\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Identity attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Identities to form a group of Identities.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"identityRoleAttributes\"\n [placeholder]=\"'Add attributes to group Identities'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Auth Policy'\"\n [label]=\"'OPTIONAL'\"\n [helpText]=\"'Authentication Policies restrict the authentication methods available to identities.'\"\n >\n <select\n [(ngModel)]=\"formData.authPolicyId\"\n id=\"authPolicyId\"\n class=\"form-field-dropdown\"\n >\n <option value=\"\">Select an Authentication Policy</option>\n <option\n *ngFor=\"let policy of authPolicies\"\n [value]=\"policy.id\"\n >\n {{ policy.name }}\n </option>\n </select>\n <input class=\"form-field-input\" placeholder=\"Optional External ID\" [(ngModel)]=\"formData.externalId\"/>\n </lib-form-field-container>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" (toggleOnChange)=\"showMoreChanged($event)\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div [hidden]=\"!showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'Enrollment Type'\"\n [title2]=\"enrollmentTypeTitle\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <select\n id=\"EnrollmentType\"\n class=\"form-field-dropdown\"\n [ngClass]=\"{disabled: isEditing}\"\n [(ngModel)]=\"enrollmentType\"\n (change)=\"updateEnrollment()\"\n >\n <option value=\"ott\">One Time Token</option>\n <option value=\"CA\">Certificate Authority</option>\n <option value=\"updb\">UPDB</option>\n </select>\n <select\n id=\"CertAuthorities\"\n class=\"form-field-dropdown\"\n *ngIf=\"enrollmentType === 'CA'\"\n [ngClass]=\"{disabled: isEditing}\"\n [(ngModel)]=\"enrollmentCA\"\n [ngClass]=\"{error: errors.enrollmentCA}\"\n (change)=\"updateEnrollment()\"\n >\n <option *ngFor=\"let ca of cas\" [value]=\"ca.id\">{{ca.name}}</option>\n </select>\n <input\n *ngIf=\"enrollmentType === 'updb' && !isEditing\"\n [ngClass]=\"{disabled: isEditing, error: errors.enrollmentUPDB}\"\n [(ngModel)]=\"enrollmentUPDB\"\n (keyup)=\"updateEnrollment()\"\n class=\"form-field-input\"\n id=\"UPDBName\"\n type=\"text\"\n maxlength=\"500\"\n placeholder=\"Enter a name\"\n >\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Admin'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced is-admin-container\"\n >\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">IS ADMIN</div>\n <div\n (click)=\"toggleIsAdmin()\"\n [ngClass]=\"{ on: formData.isAdmin }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!formData.isAdmin\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isAdmin\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Hosting Cost'\"\n [title2]=\"'Precedence'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <input class=\"form-field-input\" [(ngModel)]=\"formData.defaultHostingCost\" type=\"number\"/>\n <select\n [(ngModel)]=\"formData.defaultHostingPrecedence\"\n id=\"hostingPrecedence\"\n class=\"form-field-dropdown\"\n >\n <option value=\"default\">Default</option>\n <option value=\"required\">Required</option>\n <option value=\"failed\">Failed</option>\n </select>\n </lib-form-field-container>\n <lib-form-field-container *ngFor=\"let tagElement of tagElements\"\n [title]=\"tagElement.label\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <div [innerHTML]=\"tagElement.content | safe\"></div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n *ngIf=\"!hideTags\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n *ngIf=\"hasEnrolmentToken || hasAuthenticator\"\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"jwt\"\n [expiration]=\"enrollmentExpiration\"\n [authenticators]=\"formData.authenticators\"\n [type]=\"'identity'\"\n [canExpand]=\"true\"\n (doRefresh)=\"refreshIdentity()\"\n ></lib-qr-code>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Services'\"\n [count]=\"associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Identity is associated with.'\"\n >\n <lib-preview-list\n (itemSelected)=\"serviceSelected($event)\"\n [clickable]=\"true\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"associatedServiceNames\"\n ></lib-preview-list>\n <div class=\"svc-test-result\" [ngClass]=\"{'test-result-open': testResultOpen}\">\n <div class=\"close icon-close\" (click)=\"closeTestResult()\"></div>\n <div class=\"result-container\" [innerHTML]=\"testResult\" ></div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Service Policies'\"\n [count]=\"associatedServicePolicies.length\"\n [helpText]=\"'Preview list of all service policies that this Identity is associated with.'\"\n >\n <lib-preview-list\n (itemSelected)=\"serviceSelected($event)\"\n [clickable]=\"false\"\n [isLoading]=\"servicePoliciesLoading\"\n [allNames]=\"associatedServicePolicyNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"''\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\" readonly/>\n <div class=\"url-copy icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [".identity-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:15px}.disabled{opacity:.5;pointer-events:none}::ng-deep .admin-toggle{width:100%;width:35%;display:flex}::ng-deep .admin-toggle .form-field-line{display:none}::ng-deep .admin-toggle .toggle{width:100%}::ng-deep .is-admin-container .form-field-title-container.title-container-2{width:35%!important}.svc-test-result{position:absolute;transition:var(--transition);height:0;width:100%;background-color:var(--background);bottom:0;font-weight:600;padding-left:10px;padding-right:10px;border-color:var(--inputBorder);border-style:solid;border-width:2px;border-bottom-right-radius:7px;border-bottom-left-radius:7px;border-top-style:none}.svc-test-result.test-result-open{height:-moz-fit-content;height:fit-content;box-shadow:0 -2px 11px 0 var(--boxShadow);padding-bottom:15px;padding-top:15px}.svc-test-result .close.icon-close{top:10px;right:10px;font-size:18px;height:18px;width:18px;line-height:18px}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-label{color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-line{border-color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle{border-color:var(--primaryColor);border-style:solid;border-width:2px}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle .switch{top:1px}::ng-deep .copy.icon-copy.url-copy{background-color:var(--navigation)}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i8.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i9.PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip", "showfilter"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: i10.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i11.FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: i12.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i13.TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }, { kind: "component", type: i14.QrCodeComponent, selector: "lib-qr-code", inputs: ["jwt", "token", "expiration", "identity", "type", "authenticators", "qrOnly", "canExpand"], outputs: ["doRefresh"] }, { kind: "component", type: i15.CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }, { kind: "pipe", type: i16.SafePipe, name: "safe" }] }); }
329
329
  }
330
330
  export { IdentityFormComponent };
331
331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityFormComponent, decorators: [{