[ACS-11975] [ACA] Files can be marked as selected in the link rules dialog (#5221)

This commit is contained in:
Dominik Iwanek
2026-06-15 12:08:40 +02:00
committed by GitHub
parent 2a49de437f
commit 0e6b5b9609
3 changed files with 22 additions and 3 deletions
@@ -10,11 +10,12 @@
<mat-dialog-content class="aca-rule-set-picker__content"> <mat-dialog-content class="aca-rule-set-picker__content">
<adf-content-node-selector-panel <adf-content-node-selector-panel
class="aca-rule-set-picker__content__node-selector" class="aca-rule-set-picker__content__node-selector"
[currentFolderId]="defaultNodeId"
(select)="onNodeSelect($event)" (select)="onNodeSelect($event)"
(folderLoaded)="setFolderLoading(false)" (folderLoaded)="setFolderLoading(false)"
(navigationChange)="setFolderLoading(true)" (navigationChange)="setFolderLoading(true)"
(siteChange)="setFolderLoading(true)" /> (siteChange)="setFolderLoading(true)"
[currentFolderId]="defaultNodeId"
[rowFilter]="rowFilter" />
<div class="aca-rule-set-picker__content__rule-list" [ngClass]="{ 'aca-justify': rulesLoading$ | async }"> <div class="aca-rule-set-picker__content__rule-list" [ngClass]="{ 'aca-justify': rulesLoading$ | async }">
<ng-container *ngIf="rulesLoading$ | async; else rulesLoaded"> <ng-container *ngIf="rulesLoading$ | async; else rulesLoaded">
@@ -35,6 +35,7 @@ import {
AlfrescoApiServiceMock, AlfrescoApiServiceMock,
ContentNodeSelectorPanelComponent, ContentNodeSelectorPanelComponent,
NodeEntryEvent, NodeEntryEvent,
ShareDataRow,
SitesService SitesService
} from '@alfresco/adf-content-services'; } from '@alfresco/adf-content-services';
import { provideRouter } from '@angular/router'; import { provideRouter } from '@angular/router';
@@ -48,6 +49,7 @@ import { RuleSet } from '../model/rule-set.model';
}) })
class MockContentNodeSelectorPanelComponent { class MockContentNodeSelectorPanelComponent {
@Input() currentFolderId: string; @Input() currentFolderId: string;
@Input() rowFilter: (row: ShareDataRow) => boolean;
@Output() folderLoaded = new EventEmitter<void>(); @Output() folderLoaded = new EventEmitter<void>();
@Output() navigationChange = new EventEmitter<NodeEntryEvent>(); @Output() navigationChange = new EventEmitter<NodeEntryEvent>();
@Output() siteChange = new EventEmitter<string>(); @Output() siteChange = new EventEmitter<string>();
@@ -126,6 +128,18 @@ describe('RuleSetPickerSmartComponent', () => {
}); });
}); });
describe('rowFilter', () => {
it('should keep folder rows', () => {
const row = { node: { entry: { isFolder: true } } } as ShareDataRow;
expect(component.rowFilter(row)).toBe(true);
});
it('should filter out file rows', () => {
const row = { node: { entry: { isFolder: false } } } as ShareDataRow;
expect(component.rowFilter(row)).toBe(false);
});
});
it('should load the rule sets of a node once it has been selected', () => { it('should load the rule sets of a node once it has been selected', () => {
expect(loadRuleSetsSpy).not.toHaveBeenCalled(); expect(loadRuleSetsSpy).not.toHaveBeenCalled();
component.onNodeSelect([folderToLinkMock]); component.onNodeSelect([folderToLinkMock]);
@@ -37,7 +37,7 @@ import { MatIconModule } from '@angular/material/icon';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { RuleListItemUiComponent } from '../rule-list/rule-list-item/rule-list-item.ui-component'; import { RuleListItemUiComponent } from '../rule-list/rule-list-item/rule-list-item.ui-component';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { ContentNodeSelectorPanelComponent } from '@alfresco/adf-content-services'; import { ContentNodeSelectorPanelComponent, ShareDataRow } from '@alfresco/adf-content-services';
export interface RuleSetPickerOptions { export interface RuleSetPickerOptions {
nodeId: string; nodeId: string;
@@ -104,6 +104,10 @@ export class RuleSetPickerSmartComponent implements OnInit {
} }
} }
rowFilter(row: ShareDataRow): boolean {
return row.node.entry.isFolder;
}
setFolderLoading(isLoading: boolean) { setFolderLoading(isLoading: boolean) {
this.folderLoading$.next(isLoading); this.folderLoading$.next(isLoading);
} }