mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-07-31 17:38:28 +00:00
[ACS-8036] [Bulk update] [Many files to 1 Hold flow] "Manage Holds" dialog with Manage Existing Holds/Apply New Hold tabs (#4019)
* [ACS-8325] [Bulk Legal Hold] Create Bulk Actions Dropdown (#3956) * ACS-8036 create bulk-actions-dropdown * ACS-8325 update names and add unit tests * ACS-8325 added icon and unit tests * ACS-8325 fix translation * ACS-8325 add and refactor tests in app extension service * ACS-8325 resolve conversations: remove loadBulkActions, rename bulk schema, add translations * ACS-8325 update state * ACS-8325 temporary remove disabled state as it doesn't work after Angular migration * ACS-8325 add formControl and tests * ACS-8325 clean code * ACS-8325 place create component to one place * ACS-8325 add condition to use title if no description provided and cover with test * ACS-8325 add tooltip and update Badge interface * ACS-8325 rename class names and mockItem object * [ACS-8326] enable running actions from bulk dropdown and resetting selection (#3971) * ACS-8036 create bulk-actions-dropdown * ACS-8325 update names and add unit tests * ACS-8325 fix translation * ACS-8325 resolve conversations: remove loadBulkActions, rename bulk schema, add translations * ACS-8325 temporary remove disabled state as it doesn't work after Angular migration * ACS-8325 add formControl and tests * ACS-8325 add condition to use title if no description provided and cover with test * ACS-8325 add tooltip and update Badge interface * ACS-8326 enable running actions from bulk dropdown and resetting dropdown selection * ACS-8326 review remarks - use select control, fix naming * ACS-8326 fix unit test selectors * ACS-8326 review remarks - change property name to more universal, adjust unit tests --------- Co-authored-by: Darya Balvanovich <darya.balvanovich@hyland.com> * [ACS-8424][Bulk Legal Hold] Add Badge for items (#3985) * [ACS-8424] display badges in search result * [ACS-8424] display badges in search result * ACS-8424 create separate badge component, add/move unit tests, undo highlight change failing tests * ACS-8424 template cleanup * ACS-8424 template cleanup cleanup * ACS-8424 revert single deletion in template * ACS-8424 rename new component, change property order --------- Co-authored-by: g-jaskowski <grzegorz.jaskowski@hyland.com> * ACS-8458 refactor styles (#4018) * [ACS-8489] Legal Holds keyboard accessibility (#4009) * ACS-8489 handle keyboard accessibility * ACS-8489 wording fix * ACS-8489 change function name * ACS-8489 fix typo * ACS-8489 review remarks - simplify keyboard event handling, improve unit tests * ACS-8489 move duplicated code to method * ACS-8489 change type name to more precise * [ACS-8036] fix icon visibility in mat-select * ACS-8036 fix styles and import * ACS-8036 remove async from test * ACS-8036 handle event when dropdown closed * ACS-8036 fix rebase issues * ACS-8036 fix rebase issues * ACS-8036 fix rebase --------- Co-authored-by: Grzegorz Jaśkowski <138671284+g-jaskowski@users.noreply.github.com> Co-authored-by: tamaragruszka <156320606+tamaragruszka@users.noreply.github.com> Co-authored-by: g-jaskowski <grzegorz.jaskowski@hyland.com> Co-authored-by: tamaragruszka <tamara.gruszka@hyland.com>
This commit is contained in:
committed by
GitHub
parent
068f6bb8e9
commit
53e90312b0
@@ -1,38 +1,41 @@
|
||||
<div class="search-file-name">
|
||||
<span
|
||||
tabindex="0"
|
||||
role="link"
|
||||
*ngIf="isFile"
|
||||
(click)="showPreview($event)"
|
||||
(keyup.enter)="showPreview($event)"
|
||||
class="aca-link aca-crop-text"
|
||||
[title]="nameStripped"
|
||||
[innerHTML]="name$ | async"
|
||||
></span>
|
||||
<span
|
||||
tabindex="0"
|
||||
role="link"
|
||||
*ngIf="!isFile"
|
||||
(click)="navigate($event)"
|
||||
(keyup.enter)="navigate($event)"
|
||||
class="bold aca-link aca-crop-text"
|
||||
[title]="nameStripped"
|
||||
[innerHTML]="name$ | async"
|
||||
></span>
|
||||
<span
|
||||
data-automation-id="search-results-entry-title"
|
||||
<div class="aca-search-results-text">
|
||||
<div class="search-file-name">
|
||||
<span
|
||||
tabindex="0"
|
||||
role="link"
|
||||
*ngIf="isFile"
|
||||
(click)="showPreview($event)"
|
||||
(keyup.enter)="showPreview($event)"
|
||||
class="aca-link aca-crop-text"
|
||||
[title]="nameStripped"
|
||||
[innerHTML]="name$ | async"
|
||||
></span>
|
||||
<span
|
||||
tabindex="0"
|
||||
role="link"
|
||||
*ngIf="!isFile"
|
||||
(click)="navigate($event)"
|
||||
(keyup.enter)="navigate($event)"
|
||||
class="bold aca-link aca-crop-text"
|
||||
[title]="nameStripped"
|
||||
[innerHTML]="name$ | async"
|
||||
></span>
|
||||
<span
|
||||
data-automation-id="search-results-entry-title"
|
||||
class="aca-crop-text"
|
||||
[title]="titleStripped"
|
||||
[innerHTML]="title$ | async"
|
||||
></span>
|
||||
</div>
|
||||
<div
|
||||
data-automation-id="search-results-entry-description"
|
||||
class="aca-crop-text"
|
||||
[title]="titleStripped"
|
||||
[innerHTML]="title$ | async"
|
||||
></span>
|
||||
[title]="descriptionStripped"
|
||||
[innerHTML]="description$ | async"
|
||||
></div>
|
||||
<div class="aca-result-location">
|
||||
<aca-location-link [context]="context" [showLocation]="true"></aca-location-link>
|
||||
</div>
|
||||
<div class="aca-result-content aca-crop-text" [title]="contentStripped" [innerHTML]="content$ | async"></div>
|
||||
</div>
|
||||
<div
|
||||
data-automation-id="search-results-entry-description"
|
||||
class="aca-crop-text"
|
||||
[title]="descriptionStripped"
|
||||
[innerHTML]="description$ | async"
|
||||
></div>
|
||||
<div class="aca-result-location">
|
||||
<aca-location-link [context]="context" [showLocation]="true"></aca-location-link>
|
||||
</div>
|
||||
<div class="aca-result-content aca-crop-text" [title]="contentStripped" [innerHTML]="content$ | async"></div>
|
||||
<aca-datatable-cell-badges [node]="context.row.node"></aca-datatable-cell-badges>
|
||||
|
@@ -1,4 +1,7 @@
|
||||
.aca-search-results-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 10px 0;
|
||||
width: inherit;
|
||||
|
||||
|
@@ -28,6 +28,16 @@ import { By } from '@angular/platform-browser';
|
||||
import { first } from 'rxjs/operators';
|
||||
import { AppTestingModule } from '../../../testing/app-testing.module';
|
||||
import { SearchResultsRowComponent } from './search-results-row.component';
|
||||
import { Component, Input } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'aca-datatable-cell-badges',
|
||||
standalone: true,
|
||||
template: ''
|
||||
})
|
||||
class MockDatatableCellBadgesComponent {
|
||||
@Input() node: NodeEntry;
|
||||
}
|
||||
|
||||
describe('SearchResultsRowComponent', () => {
|
||||
let component: SearchResultsRowComponent;
|
||||
@@ -76,7 +86,7 @@ describe('SearchResultsRowComponent', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [AppTestingModule, SearchResultsRowComponent]
|
||||
imports: [AppTestingModule, SearchResultsRowComponent, MockDatatableCellBadgesComponent]
|
||||
});
|
||||
|
||||
fixture = TestBed.createComponent(SearchResultsRowComponent);
|
||||
@@ -120,4 +130,11 @@ describe('SearchResultsRowComponent', () => {
|
||||
});
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should pass node to badge component', () => {
|
||||
component.context = { row: { node: nodeEntry } };
|
||||
const badgeElement = fixture.debugElement.query(By.css('aca-datatable-cell-badges'));
|
||||
expect(badgeElement).not.toBe(null);
|
||||
expect(badgeElement.componentInstance.node).toBe(component.context.node);
|
||||
});
|
||||
});
|
||||
|
@@ -24,7 +24,7 @@
|
||||
|
||||
import { Component, Input, OnInit, ViewEncapsulation, ChangeDetectionStrategy, OnDestroy, inject } from '@angular/core';
|
||||
import { NodeEntry, SearchEntryHighlight } from '@alfresco/js-api';
|
||||
import { ViewNodeAction, NavigateToFolder } from '@alfresco/aca-shared/store';
|
||||
import { NavigateToFolder, ViewNodeAction } from '@alfresco/aca-shared/store';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { BehaviorSubject, Subject } from 'rxjs';
|
||||
import { NodesApiService } from '@alfresco/adf-content-services';
|
||||
@@ -34,10 +34,11 @@ import { AutoDownloadService, AppSettingsService } from '@alfresco/aca-shared';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { LocationLinkComponent } from '../../common/location-link/location-link.component';
|
||||
import { MatDialogModule } from '@angular/material/dialog';
|
||||
import { DatatableCellBadgesComponent } from '../../dl-custom-components/datatable-cell-badges/datatable-cell-badges.component';
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
imports: [CommonModule, LocationLinkComponent, MatDialogModule],
|
||||
imports: [CommonModule, LocationLinkComponent, MatDialogModule, DatatableCellBadgesComponent],
|
||||
selector: 'aca-search-results-row',
|
||||
templateUrl: './search-results-row.component.html',
|
||||
styleUrls: ['./search-results-row.component.scss'],
|
||||
@@ -65,7 +66,6 @@ export class SearchResultsRowComponent implements OnInit, OnDestroy {
|
||||
titleStripped = '';
|
||||
descriptionStripped = '';
|
||||
contentStripped = '';
|
||||
|
||||
isFile = false;
|
||||
|
||||
constructor(
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<aca-page-layout>
|
||||
<div class="aca-page-layout-header">
|
||||
<aca-search-input></aca-search-input>
|
||||
<aca-bulk-actions-dropdown *ngIf="bulkActions" [items]="bulkActions"></aca-bulk-actions-dropdown>
|
||||
<div class="aca-search-toolbar-spacer"></div>
|
||||
<aca-toolbar [items]="actions"></aca-toolbar>
|
||||
</div>
|
||||
|
@@ -39,7 +39,8 @@ import {
|
||||
NavigateToFolder,
|
||||
SetInfoDrawerPreviewStateAction,
|
||||
SetInfoDrawerStateAction,
|
||||
ShowInfoDrawerPreviewAction
|
||||
ShowInfoDrawerPreviewAction,
|
||||
SetSearchItemsTotalCountAction
|
||||
} from '@alfresco/aca-shared/store';
|
||||
import {
|
||||
CustomEmptyContentTemplateDirective,
|
||||
@@ -75,6 +76,7 @@ import { TagsColumnComponent } from '../../dl-custom-components/tags-column/tags
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { SearchResultsRowComponent } from '../search-results-row/search-results-row.component';
|
||||
import { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';
|
||||
import { BulkActionsDropdownComponent } from '../../bulk-actions-dropdown/bulk-actions-dropdown.component';
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
@@ -107,7 +109,8 @@ import { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-ext
|
||||
DataColumnComponent,
|
||||
DateColumnHeaderComponent,
|
||||
CustomEmptyContentTemplateDirective,
|
||||
ViewerToolbarComponent
|
||||
ViewerToolbarComponent,
|
||||
BulkActionsDropdownComponent
|
||||
],
|
||||
selector: 'aca-search-results',
|
||||
templateUrl: './search-results.component.html',
|
||||
@@ -268,6 +271,7 @@ export class SearchResultsComponent extends PageComponent implements OnInit {
|
||||
onSearchResultLoaded(nodePaging: ResultSetPaging) {
|
||||
this.data = nodePaging;
|
||||
this.totalResults = this.getNumberOfResults();
|
||||
this.store.dispatch(new SetSearchItemsTotalCountAction(this.totalResults));
|
||||
}
|
||||
|
||||
getNumberOfResults() {
|
||||
|
Reference in New Issue
Block a user