mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-05-12 17:04:46 +00:00
[ACA-1574] DocumentList - single click navigation (#513)
* single click navigation * fix tests * allow action on row * use adf link class * update tests
This commit is contained in:
parent
36629adf99
commit
af4089ae74
@ -44,6 +44,7 @@ export class DataTable extends Component {
|
|||||||
selectedRow: '.adf-datatable-row.is-selected',
|
selectedRow: '.adf-datatable-row.is-selected',
|
||||||
cell: '.adf-data-table-cell',
|
cell: '.adf-data-table-cell',
|
||||||
locationLink: 'aca-location-link',
|
locationLink: 'aca-location-link',
|
||||||
|
linkCell: '.adf-location-cell',
|
||||||
|
|
||||||
selectedIcon: '.mat-icon',
|
selectedIcon: '.mat-icon',
|
||||||
|
|
||||||
@ -59,6 +60,7 @@ export class DataTable extends Component {
|
|||||||
body: ElementFinder = this.component.element(by.css(DataTable.selectors.body));
|
body: ElementFinder = this.component.element(by.css(DataTable.selectors.body));
|
||||||
cell = by.css(DataTable.selectors.cell);
|
cell = by.css(DataTable.selectors.cell);
|
||||||
locationLink = by.css(DataTable.selectors.locationLink);
|
locationLink = by.css(DataTable.selectors.locationLink);
|
||||||
|
linkCell: ElementFinder = this.component.element(by.css(DataTable.selectors.linkCell));
|
||||||
emptyList: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyListContainer));
|
emptyList: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyListContainer));
|
||||||
emptyFolderDragAndDrop: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyFolderDragAndDrop));
|
emptyFolderDragAndDrop: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyFolderDragAndDrop));
|
||||||
emptyListTitle: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyListTitle));
|
emptyListTitle: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyListTitle));
|
||||||
@ -139,10 +141,18 @@ export class DataTable extends Component {
|
|||||||
return this.body.element(by.cssContainingText(`.adf-data-table-cell span`, name));
|
return this.body.element(by.cssContainingText(`.adf-data-table-cell span`, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getRowLink(name: string): ElementFinder {
|
||||||
|
return this.body.element(by.cssContainingText(`.adf-data-table-cell a`, name));
|
||||||
|
}
|
||||||
|
|
||||||
getItemNameTooltip(name: string): promise.Promise<string> {
|
getItemNameTooltip(name: string): promise.Promise<string> {
|
||||||
return this.getRowName(name).getAttribute('title');
|
return this.getRowName(name).getAttribute('title');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getLinkCellTooltip(name: string): promise.Promise<string> {
|
||||||
|
return this.getRowLink(name).getAttribute('title');
|
||||||
|
}
|
||||||
|
|
||||||
countRows(): promise.Promise<number> {
|
countRows(): promise.Promise<number> {
|
||||||
return this.getRows().count();
|
return this.getRows().count();
|
||||||
}
|
}
|
||||||
|
@ -150,12 +150,12 @@ describe('File Libraries', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Tooltip for sites without description [C217096]', () => {
|
it('Tooltip for sites without description [C217096]', () => {
|
||||||
const tooltip = dataTable.getItemNameTooltip(sitePrivate);
|
const tooltip = dataTable.getLinkCellTooltip(sitePrivate);
|
||||||
expect(tooltip).toBe(`${sitePrivate}`);
|
expect(tooltip).toBe(`${sitePrivate}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Tooltip for sites with description [C217097]', () => {
|
it('Tooltip for sites with description [C217097]', () => {
|
||||||
const tooltip = dataTable.getItemNameTooltip(siteModerated);
|
const tooltip = dataTable.getLinkCellTooltip(siteModerated);
|
||||||
expect(tooltip).toBe(`${siteDescription}`);
|
expect(tooltip).toBe(`${siteDescription}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -147,7 +147,7 @@
|
|||||||
[allowDropFiles]="true"
|
[allowDropFiles]="true"
|
||||||
[navigate]="false"
|
[navigate]="false"
|
||||||
[imageResolver]="imageResolver"
|
[imageResolver]="imageResolver"
|
||||||
(node-dblclick)="onNodeDoubleClick($event.detail?.node)">
|
(node-dblclick)="navigateTo($event.detail?.node)">
|
||||||
|
|
||||||
<data-columns>
|
<data-columns>
|
||||||
<data-column
|
<data-column
|
||||||
@ -158,11 +158,15 @@
|
|||||||
</data-column>
|
</data-column>
|
||||||
|
|
||||||
<data-column
|
<data-column
|
||||||
class="adf-data-table-cell--ellipsis__name"
|
class="adf-data-table-cell--ellipsis__name adf-location-cell"
|
||||||
key="name"
|
key="name"
|
||||||
title="APP.DOCUMENT_LIST.COLUMNS.NAME">
|
title="APP.DOCUMENT_LIST.COLUMNS.NAME">
|
||||||
<ng-template let-value="value" let-context>
|
<ng-template let-value="value" let-context>
|
||||||
<span class="adf-datatable-cell" title="{{ context?.row?.obj | adfNodeNameTooltip }}">{{ value }}</span>
|
<a
|
||||||
|
title="{{ context?.row?.obj | adfNodeNameTooltip }}"
|
||||||
|
(click)="navigateTo(context?.row?.obj)">
|
||||||
|
{{ value }}
|
||||||
|
</a>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</data-column>
|
</data-column>
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onNodeDoubleClick(node: MinimalNodeEntity) {
|
navigateTo(node: MinimalNodeEntity) {
|
||||||
if (node && node.entry) {
|
if (node && node.entry) {
|
||||||
const { id, isFolder } = node.entry;
|
const { id, isFolder } = node.entry;
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
selectionMode="single"
|
selectionMode="single"
|
||||||
[navigate]="false"
|
[navigate]="false"
|
||||||
[sorting]="[ 'title', 'asc' ]"
|
[sorting]="[ 'title', 'asc' ]"
|
||||||
(node-dblclick)="onNodeDoubleClick($event)">
|
(node-dblclick)="navigateTo($event.detail?.node)">
|
||||||
|
|
||||||
<empty-folder-content>
|
<empty-folder-content>
|
||||||
<ng-template>
|
<ng-template>
|
||||||
@ -70,13 +70,15 @@
|
|||||||
</data-column>
|
</data-column>
|
||||||
|
|
||||||
<data-column
|
<data-column
|
||||||
class="adf-data-table-cell--ellipsis__name"
|
class="adf-data-table-cell--ellipsis__name adf-location-cell"
|
||||||
key="title"
|
key="title"
|
||||||
title="APP.DOCUMENT_LIST.COLUMNS.TITLE">
|
title="APP.DOCUMENT_LIST.COLUMNS.TITLE">
|
||||||
<ng-template let-context>
|
<ng-template let-context>
|
||||||
<span class="adf-datatable-cell" title="{{ makeLibraryTooltip(context.row.obj.entry) }}">
|
<a
|
||||||
|
title="{{ makeLibraryTooltip(context.row.obj.entry) }}"
|
||||||
|
(click)="navigateTo(context?.row?.obj)">
|
||||||
{{ makeLibraryTitle(context.row.obj.entry) }}
|
{{ makeLibraryTitle(context.row.obj.entry) }}
|
||||||
</span>
|
</a>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</data-column>
|
</data-column>
|
||||||
|
|
||||||
|
@ -163,35 +163,23 @@ describe('LibrariesComponent', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('onNodeDoubleClick', () => {
|
describe('navigateTo', () => {
|
||||||
it('navigates to document', () => {
|
it('navigates into library folder', () => {
|
||||||
spyOn(component, 'navigate');
|
spyOn(component, 'navigate');
|
||||||
|
|
||||||
const event: any = {
|
const site: any = {
|
||||||
detail: {
|
entry: { guid: 'node-guid' }
|
||||||
node: {
|
|
||||||
entry: { guid: 'node-guid' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
component.onNodeDoubleClick(event);
|
component.navigateTo(site);
|
||||||
|
|
||||||
expect(component.navigate).toHaveBeenCalledWith('node-guid');
|
expect(component.navigate).toHaveBeenCalledWith('node-guid');
|
||||||
});
|
});
|
||||||
|
|
||||||
it(' does not navigate when document is not provided', () => {
|
it(' does not navigate when library is not provided', () => {
|
||||||
spyOn(component, 'navigate');
|
spyOn(component, 'navigate');
|
||||||
|
|
||||||
const event: any = {
|
component.navigateTo(null);
|
||||||
detail: {
|
|
||||||
node: {
|
|
||||||
entry: null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
component.onNodeDoubleClick(event);
|
|
||||||
|
|
||||||
expect(component.navigate).not.toHaveBeenCalled();
|
expect(component.navigate).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
@ -84,11 +84,9 @@ export class LibrariesComponent extends PageComponent implements OnInit {
|
|||||||
return isDuplicate ? `${title} (${id})` : `${title}`;
|
return isDuplicate ? `${title} (${id})` : `${title}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
onNodeDoubleClick(e: CustomEvent) {
|
navigateTo(node: SiteEntry) {
|
||||||
const node: any = e.detail.node.entry;
|
if (node && node.entry.guid) {
|
||||||
|
this.navigate(node.entry.guid);
|
||||||
if (node && node.guid) {
|
|
||||||
this.navigate(node.guid);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user