@alfresco/aca-content 5.2.0 → 5.3.0-11955434723

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 (80) hide show
  1. package/esm2022/folder-rules/manage-rules/manage-rules.smart-component.mjs +13 -17
  2. package/esm2022/folder-rules/rule-details/actions/rule-action.ui-component.mjs +9 -12
  3. package/esm2022/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +8 -12
  4. package/esm2022/folder-rules/rule-details/rule-details.ui-component.mjs +8 -12
  5. package/esm2022/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +5 -7
  6. package/esm2022/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +7 -10
  7. package/esm2022/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +8 -11
  8. package/esm2022/lib/components/common/toggle-shared/toggle-shared.component.mjs +6 -11
  9. package/esm2022/lib/components/context-menu/context-menu-outside-event.directive.mjs +7 -12
  10. package/esm2022/lib/components/context-menu/context-menu.component.mjs +2 -2
  11. package/esm2022/lib/components/details/details.component.mjs +4 -3
  12. package/esm2022/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +5 -10
  13. package/esm2022/lib/components/dl-custom-components/name-column/name-column.component.mjs +8 -12
  14. package/esm2022/lib/components/files/files.component.mjs +9 -8
  15. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +12 -15
  16. package/esm2022/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +12 -16
  17. package/esm2022/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +7 -10
  18. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +6 -11
  19. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +5 -8
  20. package/esm2022/lib/components/search/search-input/search-input.component.mjs +6 -9
  21. package/esm2022/lib/components/search/search-input-control/search-input-control.component.mjs +2 -8
  22. package/esm2022/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +3 -3
  23. package/esm2022/lib/components/search/search-results/search-results.component.mjs +2 -3
  24. package/esm2022/lib/components/search/search-results-row/search-results-row.component.mjs +7 -11
  25. package/esm2022/lib/components/search/search-save/sidenav/save-search-sidenav.component.mjs +5 -10
  26. package/esm2022/lib/components/shared-link-view/shared-link-view.component.mjs +8 -11
  27. package/esm2022/lib/components/sidenav/components/sidenav-header.component.mjs +5 -10
  28. package/esm2022/lib/components/sidenav/directives/active-link.directive.mjs +6 -6
  29. package/esm2022/lib/components/sidenav/directives/expansion-panel.directive.mjs +7 -11
  30. package/esm2022/lib/components/sidenav/directives/menu-panel.directive.mjs +7 -11
  31. package/esm2022/lib/components/sidenav/sidenav.component.mjs +9 -13
  32. package/esm2022/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +6 -10
  33. package/esm2022/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +4 -9
  34. package/esm2022/lib/components/view-profile/view-profile.component.mjs +4 -9
  35. package/esm2022/lib/directives/document-list.directive.mjs +8 -12
  36. package/esm2022/viewer/lib/components/preview/preview.component.mjs +9 -11
  37. package/esm2022/viewer/lib/components/viewer/viewer.component.mjs +15 -16
  38. package/fesm2022/alfresco-aca-content-folder-rules.mjs +27 -49
  39. package/fesm2022/alfresco-aca-content-folder-rules.mjs.map +1 -1
  40. package/fesm2022/alfresco-aca-content-viewer.mjs +16 -20
  41. package/fesm2022/alfresco-aca-content-viewer.mjs.map +1 -1
  42. package/fesm2022/alfresco-aca-content.mjs +73 -168
  43. package/fesm2022/alfresco-aca-content.mjs.map +1 -1
  44. package/folder-rules/manage-rules/manage-rules.smart-component.d.ts +3 -5
  45. package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +4 -5
  46. package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +3 -4
  47. package/folder-rules/rule-details/rule-details.ui-component.d.ts +4 -5
  48. package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +3 -4
  49. package/folder-rules/rule-set-picker/rule-set-picker.smart-component.d.ts +3 -5
  50. package/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.d.ts +3 -4
  51. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +4 -5
  52. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +3 -4
  53. package/lib/components/context-menu/context-menu.component.d.ts +1 -1
  54. package/lib/components/details/details.component.d.ts +1 -2
  55. package/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.d.ts +3 -4
  56. package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +3 -4
  57. package/lib/components/files/files.component.d.ts +1 -1
  58. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +4 -6
  59. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +6 -7
  60. package/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.d.ts +3 -4
  61. package/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.d.ts +3 -4
  62. package/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.d.ts +2 -3
  63. package/lib/components/search/search-input/search-input.component.d.ts +1 -2
  64. package/lib/components/search/search-input-control/search-input-control.component.d.ts +2 -5
  65. package/lib/components/search/search-results/search-results.component.d.ts +0 -1
  66. package/lib/components/search/search-results-row/search-results-row.component.d.ts +3 -4
  67. package/lib/components/search/search-save/sidenav/save-search-sidenav.component.d.ts +3 -5
  68. package/lib/components/shared-link-view/shared-link-view.component.d.ts +4 -5
  69. package/lib/components/sidenav/components/sidenav-header.component.d.ts +3 -4
  70. package/lib/components/sidenav/directives/active-link.directive.d.ts +1 -1
  71. package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +3 -4
  72. package/lib/components/sidenav/directives/menu-panel.directive.d.ts +3 -4
  73. package/lib/components/sidenav/sidenav.component.d.ts +3 -4
  74. package/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.d.ts +3 -4
  75. package/lib/components/upload-files-dialog/upload-files-dialog.component.d.ts +1 -27
  76. package/lib/components/view-profile/view-profile.component.d.ts +2 -4
  77. package/lib/directives/document-list.directive.d.ts +3 -5
  78. package/package.json +5 -5
  79. package/viewer/lib/components/preview/preview.component.d.ts +3 -4
  80. package/viewer/lib/components/viewer/viewer.component.d.ts +2 -2
@@ -1,6 +1,6 @@
1
1
  import { DomSanitizer, HammerModule } from '@angular/platform-browser';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, Injectable, SecurityContext, NgZone, RendererFactory2, Component, ViewEncapsulation, Inject, InjectionToken, Input, EventEmitter, Directive, Output, ViewChild, HostListener, DestroyRef, Injector, NgModule, APP_INITIALIZER, Optional, ContentChildren, ChangeDetectionStrategy } from '@angular/core';
3
+ import { inject, Injectable, SecurityContext, NgZone, RendererFactory2, Component, ViewEncapsulation, Inject, InjectionToken, Input, EventEmitter, DestroyRef, Directive, Output, ViewChild, HostListener, Injector, NgModule, APP_INITIALIZER, Optional, ContentChildren, ChangeDetectionStrategy } from '@angular/core';
4
4
  import * as i7 from '@angular/forms';
5
5
  import { Validators, ReactiveFormsModule, UntypedFormGroup, UntypedFormControl, FormsModule, FormControl, FormGroup } from '@angular/forms';
6
6
  import * as i2 from '@alfresco/adf-core';
@@ -18,7 +18,7 @@ import * as i2$3 from '@ngrx/router-store';
18
18
  import { StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
19
19
  import * as i3 from '@ngrx/effects';
20
20
  import { Actions, createEffect, ofType, EffectsModule } from '@ngrx/effects';
21
- import { map, mergeMap, catchError, take, tap, first, switchMap, debounceTime, filter, takeUntil, distinctUntilChanged, retryWhen, finalize, skipWhile, delay, concatMap } from 'rxjs/operators';
21
+ import { map, mergeMap, catchError, take, tap, first, switchMap, debounceTime, filter, distinctUntilChanged, takeUntil, retryWhen, finalize, skipWhile, delay, concatMap } from 'rxjs/operators';
22
22
  import * as i1$3 from '@angular/material/dialog';
23
23
  import { MatDialog, MAT_DIALOG_DATA, MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
24
24
  import { of, Subject, zip, from, forkJoin, fromEvent, BehaviorSubject, Observable, combineLatest, map as map$1, catchError as catchError$1, merge, throwError } from 'rxjs';
@@ -3461,18 +3461,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
3461
3461
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3462
3462
  */
3463
3463
  class OutsideEventDirective {
3464
- subscriptions = [];
3465
3464
  clickOutside = new EventEmitter();
3465
+ destroyRef = inject(DestroyRef);
3466
3466
  ngOnInit() {
3467
- this.subscriptions = this.subscriptions.concat([
3468
- fromEvent(document.body, 'click')
3469
- .pipe(filter((event) => !this.findAncestor(event.target)))
3470
- .subscribe(() => this.clickOutside.next())
3471
- ]);
3472
- }
3473
- ngOnDestroy() {
3474
- this.subscriptions.forEach((subscription) => subscription.unsubscribe());
3475
- this.subscriptions = [];
3467
+ fromEvent(document.body, 'click')
3468
+ .pipe(filter((event) => !this.findAncestor(event.target)), takeUntilDestroyed(this.destroyRef))
3469
+ .subscribe(() => this.clickOutside.next());
3476
3470
  }
3477
3471
  findAncestor(el) {
3478
3472
  const className = 'aca-context-menu';
@@ -4249,7 +4243,6 @@ class MetadataTabComponent {
4249
4243
  tagService;
4250
4244
  categoryService;
4251
4245
  store;
4252
- onDestroy$ = new Subject();
4253
4246
  _displayCategories = true;
4254
4247
  _displayTags = true;
4255
4248
  node;
@@ -4262,6 +4255,7 @@ class MetadataTabComponent {
4262
4255
  get displayTags() {
4263
4256
  return this._displayTags;
4264
4257
  }
4258
+ destroyRef = inject(DestroyRef);
4265
4259
  constructor(permission, extensions, appConfig, notificationService, contentMetadataService, actions$, tagService, categoryService, store) {
4266
4260
  this.permission = permission;
4267
4261
  this.extensions = extensions;
@@ -4279,12 +4273,12 @@ class MetadataTabComponent {
4279
4273
  ngOnInit() {
4280
4274
  this._displayTags = this.tagService.areTagsEnabled();
4281
4275
  this._displayCategories = this.categoryService.areCategoriesEnabled();
4282
- this.contentMetadataService.error.pipe(takeUntil(this.onDestroy$)).subscribe((err) => {
4276
+ this.contentMetadataService.error.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((err) => {
4283
4277
  this.notificationService.showError(err.message);
4284
4278
  });
4285
4279
  this.checkIfNodeIsUpdatable(this.node);
4286
4280
  this.actions$
4287
- .pipe(ofType(NodeActionTypes.EditOffline), filter((updatedNode) => this.node.id === updatedNode.payload.entry.id), takeUntil(this.onDestroy$))
4281
+ .pipe(ofType(NodeActionTypes.EditOffline), filter((updatedNode) => this.node.id === updatedNode.payload.entry.id), takeUntilDestroyed(this.destroyRef))
4288
4282
  .subscribe((updatedNode) => {
4289
4283
  this.checkIfNodeIsUpdatable(updatedNode?.payload.entry);
4290
4284
  });
@@ -4292,16 +4286,12 @@ class MetadataTabComponent {
4292
4286
  return panels.map((panel) => {
4293
4287
  return { panelTitle: panel.title, component: panel.component };
4294
4288
  });
4295
- }), takeUntil(this.onDestroy$));
4289
+ }), takeUntilDestroyed(this.destroyRef));
4296
4290
  this.store
4297
4291
  .select(infoDrawerMetadataAspect)
4298
- .pipe(takeUntil(this.onDestroy$))
4292
+ .pipe(takeUntilDestroyed(this.destroyRef))
4299
4293
  .subscribe((metadataAspect) => (this.metadataAspect = metadataAspect));
4300
4294
  }
4301
- ngOnDestroy() {
4302
- this.onDestroy$.next(true);
4303
- this.onDestroy$.complete();
4304
- }
4305
4295
  checkIfNodeIsUpdatable(node) {
4306
4296
  this.readOnly = !(node && !isLocked({ entry: node }) ? this.permission.check(node, ['update']) : false);
4307
4297
  }
@@ -4400,7 +4390,7 @@ class LibraryMetadataFormComponent {
4400
4390
  matcher = new InstantErrorStateMatcher();
4401
4391
  canUpdateLibrary = false;
4402
4392
  isAdmin = false;
4403
- onDestroy$ = new Subject();
4393
+ destroyRef = inject(DestroyRef);
4404
4394
  constructor(alfrescoApiService, store, actions$) {
4405
4395
  this.alfrescoApiService = alfrescoApiService;
4406
4396
  this.store = store;
@@ -4428,12 +4418,12 @@ class LibraryMetadataFormComponent {
4428
4418
  this.toggleEdit();
4429
4419
  this.updateForm(this.node);
4430
4420
  this.form.controls.title.statusChanges
4431
- .pipe(takeUntil(this.onDestroy$))
4421
+ .pipe(takeUntilDestroyed(this.destroyRef))
4432
4422
  .subscribe(() => (this._titleErrorTranslationKey = this.form.controls.title.errors?.empty
4433
4423
  ? 'LIBRARY.ERRORS.ONLY_SPACES'
4434
4424
  : 'LIBRARY.ERRORS.TITLE_TOO_LONG_OR_MISSING'));
4435
4425
  this.form.controls['title'].valueChanges
4436
- .pipe(debounceTime(300), mergeMap((title) => this.findLibraryByTitle(title)), takeUntil(this.onDestroy$))
4426
+ .pipe(debounceTime(300), mergeMap((title) => this.findLibraryByTitle(title)), takeUntilDestroyed(this.destroyRef))
4437
4427
  .subscribe((result) => {
4438
4428
  const { entries } = result.list;
4439
4429
  if (entries.length) {
@@ -4450,7 +4440,7 @@ class LibraryMetadataFormComponent {
4450
4440
  });
4451
4441
  this.store
4452
4442
  .select(isAdmin)
4453
- .pipe(takeUntil(this.onDestroy$))
4443
+ .pipe(takeUntilDestroyed(this.destroyRef))
4454
4444
  .subscribe((value) => {
4455
4445
  this.isAdmin = value;
4456
4446
  });
@@ -4458,10 +4448,6 @@ class LibraryMetadataFormComponent {
4458
4448
  this.handleUpdatingEvent(SnackbarActionTypes.Info, 'LIBRARY.SUCCESS.LIBRARY_UPDATED', () => Object.assign(this.node.entry, this.form.value));
4459
4449
  this.handleUpdatingEvent(SnackbarActionTypes.Error, 'LIBRARY.ERRORS.LIBRARY_UPDATE_ERROR', () => this.form.markAsDirty());
4460
4450
  }
4461
- ngOnDestroy() {
4462
- this.onDestroy$.next(true);
4463
- this.onDestroy$.complete();
4464
- }
4465
4451
  ngOnChanges() {
4466
4452
  this.updateForm(this.node);
4467
4453
  this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager' || this.isAdmin;
@@ -4494,7 +4480,7 @@ class LibraryMetadataFormComponent {
4494
4480
  }
4495
4481
  handleUpdatingEvent(actionType, payload, handle) {
4496
4482
  this.actions$
4497
- .pipe(ofType(actionType), filter((action) => action.payload === payload), takeUntil(this.onDestroy$))
4483
+ .pipe(ofType(actionType), filter((action) => action.payload === payload), takeUntilDestroyed(this.destroyRef))
4498
4484
  .subscribe(handle);
4499
4485
  }
4500
4486
  validateEmptyName(control) {
@@ -5044,7 +5030,7 @@ class ToggleFavoriteLibraryComponent {
5044
5030
  appHookService;
5045
5031
  router;
5046
5032
  library;
5047
- onDestroy$ = new Subject();
5033
+ destroyRef = inject(DestroyRef);
5048
5034
  constructor(store, appHookService, router) {
5049
5035
  this.store = store;
5050
5036
  this.appHookService = appHookService;
@@ -5054,7 +5040,7 @@ class ToggleFavoriteLibraryComponent {
5054
5040
  const isFavoriteLibraries = this.router.url.startsWith('/favorite/libraries');
5055
5041
  this.store
5056
5042
  .select(getAppSelection)
5057
- .pipe(distinctUntilChanged(), takeUntil(this.onDestroy$))
5043
+ .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))
5058
5044
  .subscribe((selection) => {
5059
5045
  this.library = { ...selection.library };
5060
5046
  // favorite libraries list should already be marked as favorite
@@ -5063,10 +5049,6 @@ class ToggleFavoriteLibraryComponent {
5063
5049
  }
5064
5050
  });
5065
5051
  }
5066
- ngOnDestroy() {
5067
- this.onDestroy$.next();
5068
- this.onDestroy$.complete();
5069
- }
5070
5052
  onToggleEvent() {
5071
5053
  this.appHookService.favoriteLibraryToggle.next();
5072
5054
  }
@@ -5399,7 +5381,6 @@ class ExpansionPanelDirective {
5399
5381
  expansionPanel;
5400
5382
  acaExpansionPanel;
5401
5383
  hasActiveChildren = false;
5402
- onDestroy$ = new Subject();
5403
5384
  onClick() {
5404
5385
  if (this.expansionPanel.expanded && !this.hasActiveLinks() && !this.acaExpansionPanel.data?.canBeInactive) {
5405
5386
  const firstChild = this.acaExpansionPanel.children[0];
@@ -5414,6 +5395,7 @@ class ExpansionPanelDirective {
5414
5395
  }
5415
5396
  }
5416
5397
  }
5398
+ destroyRef = inject(DestroyRef);
5417
5399
  constructor(store, router, expansionPanel) {
5418
5400
  this.store = store;
5419
5401
  this.router = router;
@@ -5428,15 +5410,11 @@ class ExpansionPanelDirective {
5428
5410
  ngOnInit() {
5429
5411
  this.hasActiveChildren = this.hasActiveLinks();
5430
5412
  this.router.events
5431
- .pipe(filter((event) => event instanceof NavigationEnd), takeUntil(this.onDestroy$))
5413
+ .pipe(filter((event) => event instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))
5432
5414
  .subscribe(() => {
5433
5415
  this.hasActiveChildren = this.hasActiveLinks();
5434
5416
  });
5435
5417
  }
5436
- ngOnDestroy() {
5437
- this.onDestroy$.next(true);
5438
- this.onDestroy$.complete();
5439
- }
5440
5418
  getNavigationCommands(url) {
5441
5419
  const urlTree = this.router.parseUrl(url);
5442
5420
  const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];
@@ -5494,7 +5472,6 @@ class MenuPanelDirective {
5494
5472
  router;
5495
5473
  acaMenuPanel;
5496
5474
  hasActiveChildren = false;
5497
- onDestroy$ = new Subject();
5498
5475
  menuOpened() {
5499
5476
  if (this.acaMenuPanel.children && !this.hasActiveLinks()) {
5500
5477
  const firstChild = this.acaMenuPanel.children[0];
@@ -5509,6 +5486,7 @@ class MenuPanelDirective {
5509
5486
  }
5510
5487
  }
5511
5488
  }
5489
+ destroyRef = inject(DestroyRef);
5512
5490
  constructor(store, router) {
5513
5491
  this.store = store;
5514
5492
  this.router = router;
@@ -5522,15 +5500,11 @@ class MenuPanelDirective {
5522
5500
  ngOnInit() {
5523
5501
  this.hasActiveChildren = this.hasActiveLinks();
5524
5502
  this.router.events
5525
- .pipe(filter((event) => event instanceof NavigationEnd), takeUntil(this.onDestroy$))
5503
+ .pipe(filter((event) => event instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))
5526
5504
  .subscribe(() => {
5527
5505
  this.hasActiveChildren = this.hasActiveLinks();
5528
5506
  });
5529
5507
  }
5530
- ngOnDestroy() {
5531
- this.onDestroy$.next(true);
5532
- this.onDestroy$.complete();
5533
- }
5534
5508
  getNavigationCommands(url) {
5535
5509
  const urlTree = this.router.parseUrl(url);
5536
5510
  const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];
@@ -5584,9 +5558,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
5584
5558
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
5585
5559
  */
5586
5560
  class SidenavHeaderComponent {
5587
- onDestroy$ = new Subject();
5588
5561
  appSettings = inject(AppSettingsService);
5589
5562
  appExtensions = inject(AppExtensionService);
5563
+ destroyRef = inject(DestroyRef);
5590
5564
  appName = this.appSettings.appName;
5591
5565
  logoUrl = this.appSettings.appLogoUrl;
5592
5566
  landingPage = this.appSettings.landingPage;
@@ -5595,15 +5569,11 @@ class SidenavHeaderComponent {
5595
5569
  ngOnInit() {
5596
5570
  this.appExtensions
5597
5571
  .getHeaderActions()
5598
- .pipe(takeUntil(this.onDestroy$))
5572
+ .pipe(takeUntilDestroyed(this.destroyRef))
5599
5573
  .subscribe((actions) => {
5600
5574
  this.actions = actions;
5601
5575
  });
5602
5576
  }
5603
- ngOnDestroy() {
5604
- this.onDestroy$.next(true);
5605
- this.onDestroy$.complete();
5606
- }
5607
5577
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SidenavHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5608
5578
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SidenavHeaderComponent, isStandalone: true, selector: "app-sidenav-header", outputs: { toggleNavBar: "toggleNavBar" }, host: { classAttribute: "app-sidenav-header" }, ngImport: i0, template: "<div class=\"aca-sidenav-header\" data-automation-id=\"app-sidenav-header\">\n <div class=\"aca-sidenav-header-title\" data-automation-id=\"app-sidenav-header-title\">\n <div class=\"aca-sidenav-header-title-logo\"\n tabindex=0\n data-automation-id=\"app-sidenav-header-title-logo\"\n (click)=\"toggleNavBar.emit()\"\n (keypress)=\"toggleNavBar.emit()\">\n <img\n src=\"{{ logoUrl }}\"\n title=\"{{'APP.TOOLTIPS.COLLAPSE_NAVIGATION' | translate}}\"\n alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\" />\n </div>\n\n <div\n class=\"aca-sidenav-header-title-text\"\n data-automation-id=\"app-sidenav-header-title-text\"\n [routerLink]=\"landingPage\">\n {{ appName | translate }}\n </div>\n\n <aca-toolbar [items]=\"actions\" />\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }], encapsulation: i0.ViewEncapsulation.None });
5609
5579
  }
@@ -5724,7 +5694,7 @@ class ActiveLinkDirective {
5724
5694
  acaActiveLink;
5725
5695
  links;
5726
5696
  isLinkActive = false;
5727
- onDestroy$ = new Subject();
5697
+ destroyRef = inject(DestroyRef);
5728
5698
  constructor(router, element, renderer, action) {
5729
5699
  this.router = router;
5730
5700
  this.element = element;
@@ -5733,7 +5703,7 @@ class ActiveLinkDirective {
5733
5703
  }
5734
5704
  ngOnInit() {
5735
5705
  this.router.events
5736
- .pipe(filter((event) => event instanceof NavigationEnd), takeUntil(this.onDestroy$))
5706
+ .pipe(filter((event) => event instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))
5737
5707
  .subscribe((event) => {
5738
5708
  this.update(event.urlAfterRedirects);
5739
5709
  });
@@ -5871,7 +5841,7 @@ class SidenavComponent {
5871
5841
  navigationHistoryService;
5872
5842
  data = {};
5873
5843
  groups = [];
5874
- onDestroy$ = new Subject();
5844
+ destroyRef = inject(DestroyRef);
5875
5845
  constructor(store, extensions, appService, navigationHistoryService) {
5876
5846
  this.store = store;
5877
5847
  this.extensions = extensions;
@@ -5881,16 +5851,16 @@ class SidenavComponent {
5881
5851
  ngOnInit() {
5882
5852
  this.store
5883
5853
  .select(getSideNavState)
5884
- .pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.onDestroy$))
5854
+ .pipe(debounceTime(300), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))
5885
5855
  .subscribe(() => {
5886
5856
  this.groups = this.extensions.getApplicationNavigation(this.extensions.navbar);
5887
5857
  });
5888
5858
  this.appService.setAppNavbarMode(this.data.mode);
5889
- this.appService.toggleAppNavBar$.pipe(takeUntil(this.onDestroy$)).subscribe(() => this.toggleNavBar());
5890
- this.data.layout.expanded.pipe(takeUntil(this.onDestroy$)).subscribe(() => this.setNavBarMode());
5859
+ this.appService.toggleAppNavBar$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.toggleNavBar());
5860
+ this.data.layout.expanded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.setNavBarMode());
5891
5861
  this.navigationHistoryService
5892
5862
  .listenToRouteChanges()
5893
- .pipe(takeUntil(this.onDestroy$))
5863
+ .pipe(takeUntilDestroyed(this.destroyRef))
5894
5864
  .subscribe((event) => {
5895
5865
  this.navigationHistoryService.setHistory(event, 3);
5896
5866
  });
@@ -5911,10 +5881,6 @@ class SidenavComponent {
5911
5881
  this.data.layout.toggleMenu();
5912
5882
  this.setNavBarMode();
5913
5883
  }
5914
- ngOnDestroy() {
5915
- this.onDestroy$.next(true);
5916
- this.onDestroy$.complete();
5917
- }
5918
5884
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SidenavComponent, deps: [{ token: i1.Store }, { token: i1$1.AppExtensionService }, { token: i1$1.AppService }, { token: i1$1.NavigationHistoryService }], target: i0.ɵɵFactoryTarget.Component });
5919
5885
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SidenavComponent, isStandalone: true, selector: "app-sidenav", inputs: { data: "data" }, host: { classAttribute: "app-sidenav" }, ngImport: i0, template: "<div class=\"aca-sidenav\">\n <app-sidenav-header (toggleNavBar)=\"toggleClick()\" />\n\n <div class=\"aca-sidenav__section\">\n <div *ngFor=\"let group of groups; trackBy: trackByGroupId\" class=\"aca-sidenav__section__actions\">\n <mat-list-item class=\"aca-sidenav__section__actions__item\" *ngFor=\"let item of group.items; trackBy: trackByLinkId\">\n <ng-container *ngIf=\"!item.component\">\n <app-expand-menu [item]=\"item\" />\n </ng-container>\n <ng-container *ngIf=\"item.component\">\n <adf-dynamic-component [data]=\"{ item: item, state: 'expanded' }\" [id]=\"item.component\" />\n </ng-container>\n </mat-list-item>\n </div>\n </div>\n</div>\n", styles: [".aca-sidenav{display:flex;flex:1;flex-direction:column;height:100%;overflow-y:hidden;background:var(--theme-sidenav-background-color)}.aca-sidenav-header{padding:32px 0}.aca-sidenav-header-title{display:flex;flex-direction:row;align-items:center;height:32px;padding:0 24px}.aca-sidenav-header-title-logo img{cursor:pointer;height:28px;vertical-align:middle;transform:scale(.7)}.aca-sidenav-header-title-text{flex:1;color:var(--theme-sidenav-text-color);padding-left:12px;letter-spacing:.25px;font-style:normal;font-weight:400;font-size:var(--theme-body-1-font-size);cursor:pointer}.aca-sidenav__section{overflow-y:auto}.aca-sidenav__section .aca-expansion-panel{width:100%;background-color:unset;box-shadow:none;border-radius:0}.aca-sidenav__section .aca-expansion-panel-header{padding:0 32px 0 0;display:flex;align-items:center;border:none}.aca-sidenav__section .aca-expansion-panel-header span:after{transform:rotate(226deg)}.aca-sidenav__section .aca-expansion-panel-header-title{display:flex;flex-direction:row}.aca-sidenav__section .aca-expansion-panel-header-title .aca-action-button__label{font-size:var(--theme-caption-font-size)}.aca-sidenav__section .aca-expansion-panel .aca-expansion-panel-header:hover{background:var(--adf-theme-background-hover-color)}.aca-sidenav__section .aca-expansion-panel-item{flex-direction:row;display:flex;align-items:center;text-decoration:none;width:100%;-webkit-user-select:none;user-select:none}.aca-sidenav__section .aca-expansion-panel-item .aca-action-button__label{color:var(--theme-action-button-text-color)}.aca-sidenav__section .aca-expansion-panel-item:hover .aca-action-button__label{color:var(--theme-sidenav-active-text-color)}.aca-sidenav__section .aca-expansion-panel-body{margin:0 -24px 16px;font-size:var(--theme-body-1-font-size)}.aca-sidenav__section .aca-expansion-panel-body button{line-height:32px;align-items:center}.aca-sidenav__section .aca-action-button{cursor:pointer;color:var(--theme-action-button-text-color);height:32px;padding:0 24px;border-radius:0;line-height:32px;justify-content:start}.aca-sidenav__section .aca-action-button--active{color:var(--theme-sidenav-active-text-color);background:var(--theme-selected-background-color)}.aca-sidenav__section .aca-full-width{display:flex;width:100%}.aca-sidenav__section__actions__item:has(span){padding:0}.aca-sidenav__section__actions__item:has(span) span{pointer-events:auto}.aca-sidenav__section__actions:last-child{border-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SidenavHeaderComponent, selector: "app-sidenav-header", outputs: ["toggleNavBar"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i7$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: ExpandMenuComponent, selector: "app-expand-menu", inputs: ["item"], outputs: ["actionClicked"] }, { kind: "component", type: DynamicExtensionComponent, selector: "adf-dynamic-component", inputs: ["id", "data"] }], encapsulation: i0.ViewEncapsulation.None });
5920
5886
  }
@@ -6253,13 +6219,13 @@ class ToggleSharedComponent {
6253
6219
  selectionState;
6254
6220
  selectionLabel = '';
6255
6221
  isShared = false;
6256
- onDestroy$ = new Subject();
6222
+ destroyRef = inject(DestroyRef);
6257
6223
  constructor(store) {
6258
6224
  this.store = store;
6259
6225
  }
6260
6226
  ngOnInit() {
6261
6227
  this.selection$ = this.store.select(getAppSelection);
6262
- this.selection$.pipe(takeUntil(this.onDestroy$)).subscribe((selectionState) => {
6228
+ this.selection$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((selectionState) => {
6263
6229
  this.selectionState = selectionState;
6264
6230
  this.isShared =
6265
6231
  (this.selectionState?.first?.entry && this.selectionState.first.entry.sharedByUser) ||
@@ -6267,10 +6233,6 @@ class ToggleSharedComponent {
6267
6233
  this.selectionLabel = this.isShared ? 'APP.ACTIONS.SHARE_EDIT' : 'APP.ACTIONS.SHARE';
6268
6234
  });
6269
6235
  }
6270
- ngOnDestroy() {
6271
- this.onDestroy$.next();
6272
- this.onDestroy$.complete();
6273
- }
6274
6236
  editSharedNode(selection, focusedElementOnCloseSelector) {
6275
6237
  this.store.dispatch(new ShareNodeAction(selection.first, {
6276
6238
  focusedElementOnCloseSelector
@@ -6621,7 +6583,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6621
6583
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
6622
6584
  */
6623
6585
  class SearchInputControlComponent {
6624
- onDestroy$ = new Subject();
6625
6586
  /** Type of the input field to render, e.g. "search" or "text" (default). */
6626
6587
  inputType = 'text';
6627
6588
  /** Emitted when the search is submitted pressing ENTER button.
@@ -6637,10 +6598,6 @@ class SearchInputControlComponent {
6637
6598
  searchChange = new EventEmitter();
6638
6599
  searchInput;
6639
6600
  searchTerm = '';
6640
- ngOnDestroy() {
6641
- this.onDestroy$.next(true);
6642
- this.onDestroy$.complete();
6643
- }
6644
6601
  searchSubmit(event) {
6645
6602
  this.submit.emit(event);
6646
6603
  }
@@ -6707,7 +6664,6 @@ class SearchInputComponent {
6707
6664
  appService;
6708
6665
  searchInputService;
6709
6666
  notificationService = inject(NotificationService);
6710
- onDestroy$ = new Subject();
6711
6667
  has400LibraryError = false;
6712
6668
  hasLibrariesConstraint = false;
6713
6669
  searchOnChange;
@@ -6734,6 +6690,7 @@ class SearchInputComponent {
6734
6690
  ];
6735
6691
  searchInputControl;
6736
6692
  trigger;
6693
+ destroyRef = inject(DestroyRef);
6737
6694
  constructor(queryBuilder, queryLibrariesBuilder, config, router, route, store, appHookService, appService, searchInputService) {
6738
6695
  this.queryBuilder = queryBuilder;
6739
6696
  this.queryLibrariesBuilder = queryLibrariesBuilder;
@@ -6748,14 +6705,14 @@ class SearchInputComponent {
6748
6705
  }
6749
6706
  ngOnInit() {
6750
6707
  this.showInputValue();
6751
- this.route.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((params) => {
6708
+ this.route.queryParams.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((params) => {
6752
6709
  const encodedQuery = params['q'];
6753
6710
  if (encodedQuery && this.searchInputControl) {
6754
6711
  this.searchedWord = extractSearchedWordFromEncodedQuery(encodedQuery);
6755
6712
  this.searchInputControl.searchTerm = this.searchedWord;
6756
6713
  }
6757
6714
  });
6758
- this.appHookService.library400Error.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
6715
+ this.appHookService.library400Error.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
6759
6716
  this.has400LibraryError = true;
6760
6717
  this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();
6761
6718
  });
@@ -6774,8 +6731,6 @@ class SearchInputComponent {
6774
6731
  }
6775
6732
  ngOnDestroy() {
6776
6733
  this.appService.setAppNavbarMode('expanded');
6777
- this.onDestroy$.next(true);
6778
- this.onDestroy$.complete();
6779
6734
  this.removeContentFilters();
6780
6735
  }
6781
6736
  onMenuOpened() {
@@ -6960,10 +6915,10 @@ class DocumentListDirective {
6960
6915
  documentListService;
6961
6916
  isLibrary = false;
6962
6917
  selectedNode;
6963
- onDestroy$ = new Subject();
6964
6918
  get sortingPreferenceKey() {
6965
6919
  return this.route.snapshot.data.sortingPreferenceKey;
6966
6920
  }
6921
+ destroyRef = inject(DestroyRef);
6967
6922
  constructor(store, documentList, preferences, route, router, documentListService) {
6968
6923
  this.store = store;
6969
6924
  this.documentList = documentList;
@@ -6997,19 +6952,15 @@ class DocumentListDirective {
6997
6952
  }
6998
6953
  }
6999
6954
  this.documentList.ready
7000
- .pipe(filter(() => !this.router.url.includes('viewer:view')), takeUntil(this.onDestroy$))
6955
+ .pipe(filter(() => !this.router.url.includes('viewer:view')), takeUntilDestroyed(this.destroyRef))
7001
6956
  .subscribe(() => this.onReady());
7002
- this.documentListService.reload$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
6957
+ this.documentListService.reload$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
7003
6958
  this.reload();
7004
6959
  });
7005
- this.documentListService.resetSelection$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
6960
+ this.documentListService.resetSelection$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
7006
6961
  this.reset();
7007
6962
  });
7008
6963
  }
7009
- ngOnDestroy() {
7010
- this.onDestroy$.next(true);
7011
- this.onDestroy$.complete();
7012
- }
7013
6964
  onSortingChanged(event) {
7014
6965
  if (this.sortingPreferenceKey) {
7015
6966
  if (this.documentList.sortingMode === 'client') {
@@ -7186,7 +7137,7 @@ class SearchLibrariesResultsComponent extends PageComponent {
7186
7137
  catch (e) { }
7187
7138
  }));
7188
7139
  if (this.route) {
7189
- this.route.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((params) => {
7140
+ this.route.queryParams.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((params) => {
7190
7141
  const encodedQuery = params[this.queryParamName] || null;
7191
7142
  this.searchedWord = extractSearchedWordFromEncodedQuery(encodedQuery);
7192
7143
  if (this.searchedWord?.length > 1) {
@@ -7398,22 +7349,18 @@ class DatatableCellBadgesComponent {
7398
7349
  appExtensionService;
7399
7350
  node;
7400
7351
  badges;
7401
- onDestroy$ = new Subject();
7352
+ destroyRef = inject(DestroyRef);
7402
7353
  constructor(appExtensionService) {
7403
7354
  this.appExtensionService = appExtensionService;
7404
7355
  }
7405
7356
  ngOnInit() {
7406
7357
  this.appExtensionService
7407
7358
  .getBadges(this.node)
7408
- .pipe(takeUntil(this.onDestroy$))
7359
+ .pipe(takeUntilDestroyed(this.destroyRef))
7409
7360
  .subscribe((badges) => {
7410
7361
  this.badges = badges;
7411
7362
  });
7412
7363
  }
7413
- ngOnDestroy() {
7414
- this.onDestroy$.next(true);
7415
- this.onDestroy$.complete();
7416
- }
7417
7364
  onBadgeClick(badge) {
7418
7365
  if (badge.actions?.click) {
7419
7366
  this.appExtensionService.runActionById(badge.actions?.click, this.node);
@@ -7464,7 +7411,6 @@ class SearchResultsRowComponent {
7464
7411
  highlightPrefix = "<span class='aca-highlight'>";
7465
7412
  highlightPostfix = '</span>';
7466
7413
  node;
7467
- onDestroy$ = new Subject();
7468
7414
  context;
7469
7415
  name$ = new BehaviorSubject('');
7470
7416
  title$ = new BehaviorSubject('');
@@ -7475,6 +7421,7 @@ class SearchResultsRowComponent {
7475
7421
  descriptionStripped = '';
7476
7422
  contentStripped = '';
7477
7423
  isFile = false;
7424
+ destroyRef = inject(DestroyRef);
7478
7425
  constructor(store, nodesApiService, router, autoDownloadService) {
7479
7426
  this.store = store;
7480
7427
  this.nodesApiService = nodesApiService;
@@ -7483,7 +7430,7 @@ class SearchResultsRowComponent {
7483
7430
  }
7484
7431
  ngOnInit() {
7485
7432
  this.updateValues();
7486
- this.nodesApiService.nodeUpdated.pipe(takeUntil(this.onDestroy$)).subscribe((node) => {
7433
+ this.nodesApiService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {
7487
7434
  const row = this.context.row;
7488
7435
  if (row) {
7489
7436
  const { entry } = row.node;
@@ -7533,10 +7480,6 @@ class SearchResultsRowComponent {
7533
7480
  this.titleStripped = this.stripHighlighting(title);
7534
7481
  }
7535
7482
  }
7536
- ngOnDestroy() {
7537
- this.onDestroy$.next(true);
7538
- this.onDestroy$.complete();
7539
- }
7540
7483
  showPreview(event) {
7541
7484
  event.stopPropagation();
7542
7485
  if (!this.settings.autoDownloadEnabled || !this.autoDownloadService.tryDownload(this.node, this.settings.authDownloadThreshold)) {
@@ -7570,7 +7513,7 @@ class BulkActionsDropdownComponent {
7570
7513
  store = inject(Store);
7571
7514
  translationService = inject(TranslationService);
7572
7515
  extensions = inject(AppExtensionService);
7573
- onDestroy$ = new Subject();
7516
+ destroyRef = inject(DestroyRef);
7574
7517
  totalItems$ = this.store.select(getSearchItemsTotalCount);
7575
7518
  ngOnInit() {
7576
7519
  this.totalItems$
@@ -7589,19 +7532,15 @@ class BulkActionsDropdownComponent {
7589
7532
  this.translationService.get('SEARCH.BULK_ACTIONS_DROPDOWN.BULK_NOT_AVAILABLE_TOOLTIP')
7590
7533
  ]);
7591
7534
  }
7592
- }), takeUntil(this.onDestroy$))
7535
+ }), takeUntilDestroyed(this.destroyRef))
7593
7536
  .subscribe(([placeholder, title]) => {
7594
7537
  this.tooltip = title;
7595
7538
  this.placeholder = placeholder;
7596
7539
  });
7597
- this.extensions.bulkActionExecuted$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
7540
+ this.extensions.bulkActionExecuted$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
7598
7541
  this.bulkSelectControl.setValue(null);
7599
7542
  });
7600
7543
  }
7601
- ngOnDestroy() {
7602
- this.onDestroy$.next(true);
7603
- this.onDestroy$.complete();
7604
- }
7605
7544
  runAction(actionOption) {
7606
7545
  this.extensions.runActionById(actionOption.actions.click, {
7607
7546
  focusedElementOnCloseSelector: '.adf-context-menu-source'
@@ -7726,7 +7665,6 @@ class SearchAiInputComponent {
7726
7665
  storedNodesKey = 'knowledgeRetrievalNodes';
7727
7666
  _agentControl = new FormControl(null);
7728
7667
  _agents = [];
7729
- onDestroy$ = new Subject();
7730
7668
  selectedNodesState;
7731
7669
  _queryControl = new FormControl('');
7732
7670
  _initialsByAgentId = {};
@@ -7742,6 +7680,7 @@ class SearchAiInputComponent {
7742
7680
  get initialsByAgentId() {
7743
7681
  return this._initialsByAgentId;
7744
7682
  }
7683
+ destroyRef = inject(DestroyRef);
7745
7684
  constructor(store, searchAiService, notificationService, agentService, userPreferencesService, translateService, modalAiService) {
7746
7685
  this.store = store;
7747
7686
  this.searchAiService = searchAiService;
@@ -7757,7 +7696,7 @@ class SearchAiInputComponent {
7757
7696
  if (!this.usedInAiResultsPage) {
7758
7697
  this.store
7759
7698
  .select(getAppSelection)
7760
- .pipe(takeUntil(this.onDestroy$))
7699
+ .pipe(takeUntilDestroyed(this.destroyRef))
7761
7700
  .subscribe((selection) => {
7762
7701
  this.selectedNodesState = selection;
7763
7702
  });
@@ -7767,7 +7706,7 @@ class SearchAiInputComponent {
7767
7706
  }
7768
7707
  this.agentService
7769
7708
  .getAgents()
7770
- .pipe(takeUntil(this.onDestroy$))
7709
+ .pipe(takeUntilDestroyed(this.destroyRef))
7771
7710
  .subscribe((agents) => {
7772
7711
  this._agents = agents;
7773
7712
  this.agentControl.setValue(this._agents.find((agent) => agent.id === this.agentId));
@@ -7778,10 +7717,6 @@ class SearchAiInputComponent {
7778
7717
  }, {});
7779
7718
  }, () => this.notificationService.showError(this.translateService.instant('KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.AGENTS_FETCHING')));
7780
7719
  }
7781
- ngOnDestroy() {
7782
- this.onDestroy$.next();
7783
- this.onDestroy$.complete();
7784
- }
7785
7720
  onSearchSubmit() {
7786
7721
  this.modalAiService.openUnsavedChangesModal(() => this.search());
7787
7722
  }
@@ -8122,7 +8057,6 @@ class SearchResultsComponent extends PageComponent {
8122
8057
  encodedQuery;
8123
8058
  searchConfig;
8124
8059
  loadedFilters$ = new Subject();
8125
- destroyRef = inject(DestroyRef);
8126
8060
  constructor(tagsService, queryBuilder, changeDetectorRef, route, translationService, savedSearchesService) {
8127
8061
  super();
8128
8062
  this.queryBuilder = queryBuilder;
@@ -8378,9 +8312,9 @@ class CustomNameColumnComponent extends NameColumnComponent {
8378
8312
  cd;
8379
8313
  actions$;
8380
8314
  nodesService;
8381
- onDestroy$$ = new Subject();
8382
8315
  isFile;
8383
8316
  isFileWriteLocked;
8317
+ destroy = inject(DestroyRef);
8384
8318
  constructor(element, cd, actions$, nodesService) {
8385
8319
  super(element, nodesService);
8386
8320
  this.cd = cd;
@@ -8391,7 +8325,7 @@ class CustomNameColumnComponent extends NameColumnComponent {
8391
8325
  this.updateValue();
8392
8326
  this.isFile = this.node?.entry && !this.node.entry.isFolder;
8393
8327
  this.isFileWriteLocked = isLocked(this.node);
8394
- this.nodesService.nodeUpdated.pipe(takeUntil(this.onDestroy$$)).subscribe((node) => {
8328
+ this.nodesService.nodeUpdated.pipe(takeUntilDestroyed(this.destroy)).subscribe((node) => {
8395
8329
  const row = this.context.row;
8396
8330
  if (row) {
8397
8331
  const { entry } = row.node;
@@ -8407,7 +8341,7 @@ class CustomNameColumnComponent extends NameColumnComponent {
8407
8341
  }
8408
8342
  });
8409
8343
  this.actions$
8410
- .pipe(ofType(NodeActionTypes.EditOffline), filter((val) => this.node.entry.id === val.payload.entry.id), takeUntil(this.onDestroy$$))
8344
+ .pipe(ofType(NodeActionTypes.EditOffline), filter((val) => this.node.entry.id === val.payload.entry.id), takeUntilDestroyed(this.destroy))
8411
8345
  .subscribe(() => {
8412
8346
  this.isFileWriteLocked = isLocked(this.node);
8413
8347
  this.cd.detectChanges();
@@ -8417,10 +8351,6 @@ class CustomNameColumnComponent extends NameColumnComponent {
8417
8351
  event.stopPropagation();
8418
8352
  this.onClick();
8419
8353
  }
8420
- ngOnDestroy() {
8421
- this.onDestroy$$.next(true);
8422
- this.onDestroy$$.complete();
8423
- }
8424
8354
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CustomNameColumnComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i3.Actions }, { token: i1$2.NodesApiService }], target: i0.ɵɵFactoryTarget.Component });
8425
8355
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CustomNameColumnComponent, isStandalone: true, selector: "aca-custom-name-column", host: { classAttribute: "adf-datatable-content-cell adf-datatable-link adf-name-column aca-custom-name-column" }, usesInheritance: true, ngImport: i0, template: "<div class=\"aca-custom-name-column\">\n <div class=\"aca-name-column-container\">\n <span\n role=\"link\"\n tabindex=\"0\"\n [attr.aria-label]=\"\n (isFile ? 'CUSTOM_NAME_COLUMN.ACCESSIBILITY.FILE_LINK_ARIA_LABEL' : 'CUSTOM_NAME_COLUMN.ACCESSIBILITY.FOLDER_LINK_ARIA_LABEL')\n | translate : { name: displayText$ | async }\n \"\n class=\"adf-datatable-cell-value\"\n title=\"{{ node | adfNodeNameTooltip }}\"\n (click)=\"onLinkClick($event)\"\n (keyup.enter)=\"onLinkClick($event)\"\n >\n {{ displayText$ | async }}\n </span>\n\n <ng-container *ngIf=\"isFile && isFileWriteLocked\">\n <aca-locked-by [node]=\"context.row.node\" />\n </ng-container>\n </div>\n <aca-datatable-cell-badges [node]=\"node\" />\n</div>\n", styles: [".aca-custom-name-column{display:flex;align-items:center;justify-content:space-between;width:100%}.aca-custom-name-column .aca-name-column-container{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aca-custom-name-column .aca-name-column-container .aca-locked-by{display:flex;align-items:center;color:#0000008a;max-width:100%;padding-right:10px}.aca-custom-name-column .aca-name-column-container .aca-locked-by--name{overflow:hidden;text-overflow:ellipsis}.adf-datatable-content-cell.adf-name-column.aca-custom-name-column{position:unset}.adf-datatable-list .adf-datatable-link:hover .aca-datatable-cell-badges{color:var(--adf-theme-foreground-text-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "component", type: LockedByComponent, selector: "aca-locked-by", inputs: ["node"] }, { kind: "pipe", type: NodeNameTooltipPipe, name: "adfNodeNameTooltip" }, { kind: "component", type: DatatableCellBadgesComponent, selector: "aca-datatable-cell-badges", inputs: ["node"] }], encapsulation: i0.ViewEncapsulation.None });
8426
8356
  }
@@ -8484,14 +8414,14 @@ class FilesComponent extends PageComponent {
8484
8414
  super.ngOnInit();
8485
8415
  const { data } = this.route.snapshot;
8486
8416
  this.title = data.title;
8487
- this.route.queryParamMap.pipe(takeUntil(this.onDestroy$)).subscribe((queryMap) => {
8417
+ this.route.queryParamMap.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((queryMap) => {
8488
8418
  this.queryParams = queryMap.params;
8489
8419
  });
8490
- this.route.params.pipe(takeUntil(this.onDestroy$)).subscribe(({ folderId }) => {
8420
+ this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ folderId }) => {
8491
8421
  const nodeId = folderId || data.defaultNodeId;
8492
8422
  this.contentApi
8493
8423
  .getNode(nodeId)
8494
- .pipe(takeUntil(this.onDestroy$))
8424
+ .pipe(takeUntilDestroyed(this.destroyRef))
8495
8425
  .subscribe((node) => {
8496
8426
  this.isValidPath = true;
8497
8427
  if (node?.entry?.isFolder) {
@@ -8511,11 +8441,11 @@ class FilesComponent extends PageComponent {
8511
8441
  ]);
8512
8442
  this.store
8513
8443
  .select(isAdmin)
8514
- .pipe(takeUntil(this.onDestroy$))
8444
+ .pipe(takeUntilDestroyed(this.destroyRef))
8515
8445
  .subscribe((value) => {
8516
8446
  this.isAdmin = value;
8517
8447
  });
8518
- this.extensions.filesDocumentListPreset$.pipe(takeUntil(this.onDestroy$)).subscribe((preset) => {
8448
+ this.extensions.filesDocumentListPreset$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((preset) => {
8519
8449
  this.columns = preset;
8520
8450
  });
8521
8451
  if (this.queryParams && Object.keys(this.queryParams).length > 0) {
@@ -9179,11 +9109,11 @@ class DetailsComponent extends PageComponent {
9179
9109
  contentService;
9180
9110
  nodeId;
9181
9111
  isLoading;
9182
- onDestroy$ = new Subject();
9183
9112
  activeTab = 1;
9184
9113
  aspectActions = [];
9185
9114
  nodeIcon;
9186
9115
  canManagePermissions = true;
9116
+ onDestroy$ = new Subject();
9187
9117
  constructor(route, contentApi, contentService) {
9188
9118
  super();
9189
9119
  this.route = route;
@@ -9243,9 +9173,10 @@ class DetailsComponent extends PageComponent {
9243
9173
  this.store.dispatch(new NavigateToFolder({ entry: path }));
9244
9174
  }
9245
9175
  ngOnDestroy() {
9246
- this.store.dispatch(new SetSelectedNodesAction([]));
9247
9176
  this.onDestroy$.next();
9248
9177
  this.onDestroy$.complete();
9178
+ this.store.dispatch(new SetSelectedNodesAction([]));
9179
+ super.ngOnDestroy();
9249
9180
  }
9250
9181
  isSmartFolder() {
9251
9182
  if (!this.node?.isFolder) {
@@ -9355,12 +9286,11 @@ class ViewProfileComponent {
9355
9286
  contactSectionDropdown = false;
9356
9287
  contactSectionButtonsToggle = true;
9357
9288
  appNavNarMode$;
9358
- onDestroy$ = new Subject();
9359
9289
  constructor(router, apiService, appService) {
9360
9290
  this.router = router;
9361
9291
  this.appService = appService;
9362
9292
  this.peopleApi = new PeopleApi(apiService.getInstance());
9363
- this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntil(this.onDestroy$));
9293
+ this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntilDestroyed());
9364
9294
  }
9365
9295
  ngOnInit() {
9366
9296
  this.populateForm(this.personDetails);
@@ -9480,10 +9410,6 @@ class ViewProfileComponent {
9480
9410
  isSaveButtonDisabled() {
9481
9411
  return this.profileForm.invalid;
9482
9412
  }
9483
- ngOnDestroy() {
9484
- this.onDestroy$.next(true);
9485
- this.onDestroy$.complete();
9486
- }
9487
9413
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ViewProfileComponent, deps: [{ token: i2$1.Router }, { token: i1$2.AlfrescoApiService }, { token: i1$1.AppService }], target: i0.ɵɵFactoryTarget.Component });
9488
9414
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ViewProfileComponent, isStandalone: true, selector: "app-view-profile", ngImport: i0, template: "<div class=\"app-profile-container\">\n <div class=\"app-profile-row\">\n <div class=\"app-profile-title\">\n <button *ngIf=\"(appNavNarMode$ | async) === 'collapsed'\" mat-icon-button (click)=\"toggleClick()\"\n title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\">\n <mat-icon>menu</mat-icon>\n </button>\n <mat-icon class=\"app-profile-icon\" (click)=\"navigateToPersonalFiles()\" id=\"backButton\">arrow_back</mat-icon>\n <h3 class=\"app-profile\">{{'APP.EDIT_PROFILE.MY_PROFILE' | translate}}</h3>\n </div>\n </div>\n <div class=\"app-profile-general-row\" [formGroup]=\"profileForm\">\n <div class=\"app-profile-general\">\n <div class=\"app-profile-general-section\">\n <mat-icon class=\"app-profile-general-icon\" (click)=\"toggleGeneralDropdown()\" id=\"toggle-general-dropdown\">\n {{ generalSectionDropdown ? 'expand_more' : 'chevron_right'}}</mat-icon>\n <h4 class=\"app-general-title\">{{'APP.EDIT_PROFILE.GENERAL' | translate}}</h4>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"generalSectionButtonsToggle\">\n <button mat-raised-button (click)=\"toggleGeneralButtons()\" id=\"general-edit-button\"\n class=\"app-general-edit\">{{'APP.EDIT_PROFILE.EDIT' | translate}}</button>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"!generalSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-cancel-btn\" id=\"general-cancel-button\"\n (click)=\"toggleGeneralButtons()\">{{'APP.EDIT_PROFILE.CANCEL' | translate}}</button>\n <button mat-raised-button class=\"app-general-save-btn\" id=\"general-save-button\" [disabled]=\"profileForm.invalid\"\n (click)=\"onSaveGeneralData(profileForm)\">{{'APP.EDIT_PROFILE.SAVE' | translate}}</button>\n </div>\n </div>\n <mat-divider class=\"app-divider\" *ngIf=\"generalSectionDropdown\" />\n <div *ngIf=\"generalSectionDropdown\">\n <div class=\"app-general-dropdown\">\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.FIRST_NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\">{{personDetails?.firstName}}</p>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.LAST_NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\">{{personDetails?.lastName}}</p>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.JOB_TITLE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.jobTitle}}</p>\n <input type=\"text\" value=\"\" formControlName=\"jobTitle\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.LOCATION' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.location}}</p>\n <input type=\"text\" value=\"\" formControlName=\"location\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.TELEPHONE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.telephone}}</p>\n <input type=\"tel\" name=\"Telephone\" value=\"\" formControlName=\"telephone\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('telephone').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.MOBILE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.mobile}}</p>\n <input type=\"tel\" value=\"\" formControlName=\"mobile\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('mobile').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"app-profile-contact-row\" [formGroup]=\"profileForm\">\n <div class=\"app-profile-general profile-general-bottom-radius\">\n <div class=\"app-profile-general-section\">\n <mat-icon class=\"app-profile-general-icon\" (click)=\"toggleContactDropdown()\" id=\"toggle-contact-dropdown\">\n {{ contactSectionDropdown ? 'expand_more' : 'chevron_right'}}</mat-icon>\n <h4 class=\"app-general-title\">{{'APP.EDIT_PROFILE.COMPANY_DETAILS' | translate}}</h4>\n </div>\n\n <div class=\"app-general-edit-btn\" *ngIf=\"contactSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-edit\" id=\"contact-edit-button\"\n (click)=\"toggleContactButtons()\">{{'APP.EDIT_PROFILE.EDIT' | translate}}</button>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"!contactSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-cancel-btn\" id=\"contact-cancel-button\"\n (click)=\"toggleContactButtons()\">{{'APP.EDIT_PROFILE.CANCEL' | translate}}</button>\n <button mat-raised-button class=\"app-general-save-btn\" id=\"contact-save-button\" [disabled]=\"profileForm.invalid\"\n (click)=\"onSaveCompanyData(profileForm)\">{{'APP.EDIT_PROFILE.SAVE' | translate}}</button>\n </div>\n </div>\n <mat-divider class=\"app-divider\" *ngIf=\"contactSectionDropdown\" />\n <div *ngIf=\"contactSectionDropdown\">\n <div class=\"app-general-dropdown\">\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.organization}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyName\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.ADDRESS' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.address1}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyAddress\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.POSTCODE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.postcode}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyPostCode\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.TELEPHONE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.telephone}}</p>\n <input type=\"tel\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyTelephone\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('companyTelephone').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.EMAIL' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.email}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyEmail\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('companyEmail').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["app-view-profile{letter-spacing:.5px}app-view-profile .app-profile-container{overflow:scroll;height:100%;width:100%}app-view-profile .app-profile-row{width:100%;height:32px;padding:32px 0;border-bottom:1px solid var(--theme-about-panel-border-color)}app-view-profile .app-profile-title{display:flex;flex-direction:row;align-items:center;height:32px;padding:0 24px}app-view-profile .app-profile{cursor:pointer;margin-top:1rem}app-view-profile .app-profile-general-row{margin:2rem 0 0 2rem;width:70%;border:1px solid var(--theme-grey-background-color);border-radius:1rem}app-view-profile .app-profile-icon{margin-right:1rem;cursor:pointer}app-view-profile .app-profile-general-icon{cursor:pointer}app-view-profile .app-profile-text{letter-spacing:.5px}app-view-profile .app-profile-general{display:flex;padding-left:1rem}app-view-profile .app-profile-general-bottom-radius{border-bottom-left-radius:0;border-bottom-right-radius:0}app-view-profile .app-profile-general-section{display:flex;width:60%;padding-top:1rem;cursor:pointer}app-view-profile .app-general-title{margin-left:.6rem;margin-top:4px;letter-spacing:.5px}app-view-profile .app-general-edit-btn{width:60%;text-align:end}app-view-profile .app-general-edit-btn .app-general-edit{background:var(--theme-grey-text-background-color);height:30px;margin:1rem}app-view-profile .app-general-edit-btn .app-general-cancel-btn{height:30px;margin:1rem 1rem 1rem .5rem;background-color:var(--theme-grey-text-background-color);padding-top:.25px}app-view-profile .app-general-edit-btn .app-general-save-btn{width:75px;height:30px;margin:1rem 1rem 1rem .5rem;color:#fff;background-color:var(--theme-blue-button-color);font-weight:600}app-view-profile .app-divider{border-top-width:2px;border-top-color:var(--theme-grey-background-color);padding-left:-1px;padding-right:1px}app-view-profile .app-selected:focus{border:2px solid var(--theme-blue-button-color);border-radius:6px;outline:none;box-shadow:0 0 2px var(--theme-blue-button-color)}app-view-profile .app-general-edit:hover{background:var(--theme-grey-hover-background-color)}app-view-profile .app-general-dropdown-divider{border-top-color:var(--theme-grey-divider-color)}app-view-profile .app-general-dropdown{padding:0 1rem}app-view-profile .app-general-dropdown-details{display:flex}app-view-profile .app-profile-general-dropdown-heading{color:var(--theme-heading-color);width:20%;font-weight:400;letter-spacing:.5px}app-view-profile .app-profile-general-dropdown-details{margin-top:1.3rem;letter-spacing:.5px}app-view-profile .app-profile-general-dropdown-input-details{width:24%;height:25px;border:none;margin-top:1.3rem;background-color:var(--theme-dropdown-color)}app-view-profile .app-profile-login-row{margin:2rem 0 0 2rem;width:70%;border:1px solid var(--theme-grey-background-color);border-radius:1rem}app-view-profile .app-profile-login{display:flex;padding-left:1rem}app-view-profile .app-profile-login-dropdown-details{width:24%;height:25px;border:none;margin-top:1.3rem;background-color:var(--theme-dropdown-color)}app-view-profile .app-profile-login-dropdown-heading-forgot{margin-top:1.3rem;color:var(--theme-heading-color);margin-left:16rem}app-view-profile .app-profile-company-row{margin-top:2rem}app-view-profile .app-profile-contact-row{margin:2rem 0 5rem 2rem;width:70%;border:1px solid var(--theme-grey-background-color);border-radius:1rem}app-view-profile .app-error-message{padding-top:2rem;padding-left:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i7$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i7$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }], encapsulation: i0.ViewEncapsulation.None });
9489
9415
  }
@@ -9552,10 +9478,10 @@ class SharedLinkViewComponent {
9552
9478
  extensions;
9553
9479
  alfrescoApiService;
9554
9480
  appService;
9555
- onDestroy$ = new Subject();
9556
- sharedLinksApi;
9557
9481
  sharedLinkId = null;
9558
9482
  viewerToolbarActions = [];
9483
+ sharedLinksApi;
9484
+ destroyRef = inject(DestroyRef);
9559
9485
  constructor(route, store, extensions, alfrescoApiService, appService) {
9560
9486
  this.route = route;
9561
9487
  this.store = store;
@@ -9576,15 +9502,11 @@ class SharedLinkViewComponent {
9576
9502
  });
9577
9503
  this.extensions
9578
9504
  .getSharedLinkViewerToolbarActions()
9579
- .pipe(takeUntil(this.onDestroy$))
9505
+ .pipe(takeUntilDestroyed(this.destroyRef))
9580
9506
  .subscribe((actions) => {
9581
9507
  this.viewerToolbarActions = actions;
9582
9508
  });
9583
9509
  }
9584
- ngOnDestroy() {
9585
- this.onDestroy$.next(true);
9586
- this.onDestroy$.complete();
9587
- }
9588
9510
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SharedLinkViewComponent, deps: [{ token: i2$1.ActivatedRoute }, { token: i1.Store }, { token: i1$1.AppExtensionService }, { token: i1$2.AlfrescoApiService }, { token: i1$1.AppService }], target: i0.ɵɵFactoryTarget.Component });
9589
9511
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SharedLinkViewComponent, isStandalone: true, selector: "app-shared-link-view", host: { classAttribute: "app-shared-link-view" }, ngImport: i0, template: "<ng-container *ngIf=\"sharedLinkId\">\n <adf-alfresco-viewer [allowPrint]=\"false\" [allowDownload]=\"false\" [allowFullScreen]=\"false\" [sharedLinkId]=\"sharedLinkId\" [allowGoBack]=\"false\">\n <adf-viewer-toolbar-actions>\n <aca-toolbar [items]=\"viewerToolbarActions\" />\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-shared-link-view{width:100%;height:100%}.app-shared-link-view .adf-alfresco-viewer .adf-viewer{position:relative}.app-shared-link-view .adf-viewer-toolbar .adf-toolbar-divider{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ViewerModule }, { kind: "component", type: i2.ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "ngmodule", type: AlfrescoViewerModule }, { kind: "component", type: i1$2.AlfrescoViewerComponent, selector: "adf-alfresco-viewer", inputs: ["nodeId", "versionId", "sharedLinkId", "showViewer", "maxRetries", "allowGoBack", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "allowDownload", "allowPrint", "allowFullScreen", "hideInfoButton", "closeButtonPosition", "sidebarRightTemplate", "sidebarLeftTemplate"], outputs: ["invalidSharedLink", "navigateBefore", "navigateNext", "showViewerChange"] }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }], encapsulation: i0.ViewEncapsulation.None });
9590
9512
  }
@@ -9729,7 +9651,7 @@ class SearchAiResultsComponent extends PageComponent {
9729
9651
  const openedViewerPreviously = this.openedViewer;
9730
9652
  this.openedViewer = !!params.location;
9731
9653
  return !this.openedViewer && (!openedViewerPreviously || !this.queryAnswer);
9732
- }), takeUntil(this.onDestroy$))
9654
+ }), takeUntilDestroyed(this.destroyRef))
9733
9655
  .subscribe((params) => {
9734
9656
  this._agentId = params.agentId;
9735
9657
  this._searchQuery = params.query ? decodeURIComponent(params.query) : '';
@@ -9749,10 +9671,6 @@ class SearchAiResultsComponent extends PageComponent {
9749
9671
  headerText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.WARNING'
9750
9672
  };
9751
9673
  }
9752
- ngOnDestroy() {
9753
- this.onDestroy$.next();
9754
- this.onDestroy$.complete();
9755
- }
9756
9674
  copyResponseToClipboard() {
9757
9675
  this.clipboardService.copyContentToClipboard(this.queryAnswer.answer, this.translateService.instant('KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.COPY_MESSAGE'));
9758
9676
  }
@@ -9773,7 +9691,7 @@ class SearchAiResultsComponent extends PageComponent {
9773
9691
  }
9774
9692
  this._queryAnswer = response.entry;
9775
9693
  return forkJoin(this.queryAnswer.references.map((reference) => this.nodesApiService.getNode(reference.referenceId)));
9776
- }), retryWhen((errors) => this.aiSearchRetryWhen(errors)), finalize(() => (this._loading = false)), takeUntil(this.onDestroy$))
9694
+ }), retryWhen((errors) => this.aiSearchRetryWhen(errors)), finalize(() => (this._loading = false)), takeUntilDestroyed(this.destroyRef))
9777
9695
  .subscribe((nodes) => {
9778
9696
  nodes.forEach((node) => {
9779
9697
  this._mimeTypeIconsByNodeId[node.id] = this.thumbnailService.getMimeTypeIcon(node.content?.mimeType);
@@ -10623,14 +10541,9 @@ const CONTENT_LAYOUT_ROUTES = {
10623
10541
  class UploadFilesDialogComponent {
10624
10542
  store;
10625
10543
  showFileUploadingDialog$;
10626
- onDestroy$ = new Subject();
10627
10544
  constructor(store) {
10628
10545
  this.store = store;
10629
- this.showFileUploadingDialog$ = this.store.select(getFileUploadingDialog).pipe(delay(0), takeUntil(this.onDestroy$));
10630
- }
10631
- ngOnDestroy() {
10632
- this.onDestroy$.next(true);
10633
- this.onDestroy$.complete();
10546
+ this.showFileUploadingDialog$ = this.store.select(getFileUploadingDialog).pipe(delay(0), takeUntilDestroyed());
10634
10547
  }
10635
10548
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UploadFilesDialogComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
10636
10549
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: UploadFilesDialogComponent, isStandalone: true, selector: "aca-upload-files-dialog", ngImport: i0, template: "<adf-file-uploading-dialog *ngIf=\"showFileUploadingDialog$ | async\" position=\"left\" />", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UploadModule }, { kind: "component", type: i1$2.FileUploadingDialogComponent, selector: "adf-file-uploading-dialog", inputs: ["position", "alwaysVisible"], outputs: ["error"] }], encapsulation: i0.ViewEncapsulation.None });
@@ -10673,7 +10586,6 @@ class AgentsButtonComponent {
10673
10586
  data;
10674
10587
  selectedNodesState;
10675
10588
  _agents = [];
10676
- onDestroy$ = new Subject();
10677
10589
  _disabled = true;
10678
10590
  _initialsByAgentId = {};
10679
10591
  _hxInsightUrl;
@@ -10689,6 +10601,7 @@ class AgentsButtonComponent {
10689
10601
  get hxInsightUrl() {
10690
10602
  return this._hxInsightUrl;
10691
10603
  }
10604
+ destroyRef = inject(DestroyRef);
10692
10605
  constructor(store, notificationService, searchAiService, agentService, translateService, cd) {
10693
10606
  this.store = store;
10694
10607
  this.notificationService = notificationService;
@@ -10700,7 +10613,7 @@ class AgentsButtonComponent {
10700
10613
  ngOnInit() {
10701
10614
  this.store
10702
10615
  .select(getAppSelection)
10703
- .pipe(takeUntil(this.onDestroy$))
10616
+ .pipe(takeUntilDestroyed(this.destroyRef))
10704
10617
  .subscribe((selection) => {
10705
10618
  this.selectedNodesState = selection;
10706
10619
  });
@@ -10720,10 +10633,6 @@ class AgentsButtonComponent {
10720
10633
  }
10721
10634
  }, (error) => this.notificationService.showError(this.translateService.instant(error)));
10722
10635
  }
10723
- ngOnDestroy() {
10724
- this.onDestroy$.next();
10725
- this.onDestroy$.complete();
10726
- }
10727
10636
  onClick() {
10728
10637
  if (!this.selectedNodesState.isEmpty) {
10729
10638
  const message = this.searchAiService.checkSearchAvailability(this.selectedNodesState);
@@ -10780,22 +10689,18 @@ class SaveSearchSidenavComponent {
10780
10689
  savedSearchesService = inject(SavedSearchesService);
10781
10690
  appService = inject(AppService);
10782
10691
  translationService = inject(TranslationService);
10783
- destroy$ = new Subject();
10784
10692
  item;
10785
10693
  manageSearchesId = 'manage-saved-searches';
10694
+ destroyRef = inject(DestroyRef);
10786
10695
  ngOnInit() {
10787
10696
  this.savedSearchesService.innit();
10788
10697
  this.savedSearchesService.savedSearches$
10789
10698
  .asObservable()
10790
- .pipe(takeUntil(this.destroy$))
10699
+ .pipe(takeUntilDestroyed(this.destroyRef))
10791
10700
  .subscribe((savedSearches) => {
10792
10701
  this.item = this.createNavBarLinkRef(savedSearches);
10793
10702
  });
10794
10703
  }
10795
- ngOnDestroy() {
10796
- this.destroy$.next();
10797
- this.destroy$.complete();
10798
- }
10799
10704
  onActionClick(el) {
10800
10705
  if (el.id !== this.manageSearchesId) {
10801
10706
  this.appService.appNavNarMode$.next('collapsed');