[ADF-621] show drop effect on folders only (#1897)

* show drop effect on folders only

- fix `hasValue` api for data rows (avoid 'false' value to be evaluated as missing value)
- support for evaluating drop support for rows
- document list enables upload zones for folders only

* api improvements as per code review
This commit is contained in:
Denys Vuika
2017-05-26 16:04:41 +01:00
committed by Eugenio Romano
parent d8a46c9765
commit 7b17b10ef1
5 changed files with 11 additions and 3 deletions

View File

@@ -32,7 +32,7 @@
<tr *ngFor="let row of data.getRows(); let idx = index" tabindex="0" <tr *ngFor="let row of data.getRows(); let idx = index" tabindex="0"
class="alfresco-datatable__row" class="alfresco-datatable__row"
[class.alfresco-datatable__row--selected]="selectedRow === row" [class.alfresco-datatable__row--selected]="selectedRow === row"
[adf-upload]="allowDropFiles" [adf-upload-data]="row"> [adf-upload]="allowDropFiles && rowAllowsDrop(row)" [adf-upload-data]="row">
<!-- Actions (left) --> <!-- Actions (left) -->
<td *ngIf="actions && actionsPosition === 'left'" class="alfresco-datatable__actions-cell"> <td *ngIf="actions && actionsPosition === 'left'" class="alfresco-datatable__actions-cell">

View File

@@ -264,4 +264,8 @@ export class DataTableComponent implements AfterContentInit, OnChanges {
this.executeRowAction.emit(new DataRowActionEvent(row, action)); this.executeRowAction.emit(new DataRowActionEvent(row, action));
} }
} }
rowAllowsDrop(row: DataRow): boolean {
return row.isDropTarget === true;
}
} }

View File

@@ -32,6 +32,7 @@ export interface DataTableAdapter {
export interface DataRow { export interface DataRow {
isSelected: boolean; isSelected: boolean;
isDropTarget?: boolean;
hasValue(key: string): boolean; hasValue(key: string): boolean;
getValue(key: string): any; getValue(key: string): any;
} }

View File

@@ -209,7 +209,7 @@ export class ObjectDataRow implements DataRow {
} }
hasValue(key: string): boolean { hasValue(key: string): boolean {
return this.getValue(key) ? true : false; return this.getValue(key) !== undefined;
} }
} }

View File

@@ -234,6 +234,7 @@ export class ShareDataRow implements DataRow {
cache: { [key: string]: any } = {}; cache: { [key: string]: any } = {};
isSelected: boolean = false; isSelected: boolean = false;
readonly isDropTarget;
get node(): NodeMinimalEntry { get node(): NodeMinimalEntry {
return this.obj; return this.obj;
@@ -243,6 +244,8 @@ export class ShareDataRow implements DataRow {
if (!obj) { if (!obj) {
throw new Error(ShareDataRow.ERR_OBJECT_NOT_FOUND); throw new Error(ShareDataRow.ERR_OBJECT_NOT_FOUND);
} }
this.isDropTarget = obj.entry && obj.entry.isFolder;
} }
cacheValue(key: string, value: any): any { cacheValue(key: string, value: any): any {
@@ -258,7 +261,7 @@ export class ShareDataRow implements DataRow {
} }
hasValue(key: string): boolean { hasValue(key: string): boolean {
return this.getValue(key) ? true : false; return this.getValue(key) !== undefined;
} }
} }