#960 fix event handling for FF

- use cross browser `event.target` instead of IE-specific
`event.srcElement`
This commit is contained in:
Denys Vuika
2016-11-01 15:25:04 +00:00
parent b0882e7322
commit 8c1f2cc957
8 changed files with 11 additions and 11 deletions

View File

@@ -29,7 +29,7 @@ describe('BooleanEditorComponent', () => {
it('should update row value on change', () => { it('should update row value on change', () => {
let row = <DynamicTableRow> { value: {} }; let row = <DynamicTableRow> { value: {} };
let column = <DynamicTableColumn> { id: 'key' }; let column = <DynamicTableColumn> { id: 'key' };
let event = { srcElement: { checked: true } }; let event = { target: { checked: true } };
component.onValueChanged(row, column, event); component.onValueChanged(row, column, event);
expect(row.value[column.id]).toBeTruthy(); expect(row.value[column.id]).toBeTruthy();

View File

@@ -28,7 +28,7 @@ import { DynamicTableRow, DynamicTableColumn } from './../../../core/index';
export class BooleanEditorComponent extends CellEditorComponent { export class BooleanEditorComponent extends CellEditorComponent {
onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) { onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {
let value: boolean = (<HTMLInputElement>event.srcElement).checked; let value: boolean = (<HTMLInputElement>event.target).checked;
row.value[column.id] = value; row.value[column.id] = value;
} }

View File

@@ -146,7 +146,7 @@ describe('DropdownEditorComponent', () => {
}); });
it('should update row on value change', () => { it('should update row on value change', () => {
let event = { srcElement: { value: 'two' } }; let event = { target: { value: 'two' } };
component.onValueChanged(row, column, event); component.onValueChanged(row, column, event);
expect(row.value[column.id]).toBe(column.options[1]); expect(row.value[column.id]).toBe(column.options[1]);
}); });

View File

@@ -61,7 +61,7 @@ export class DropdownEditorComponent extends CellEditorComponent implements OnIn
} }
onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) { onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {
let value: any = (<HTMLInputElement>event.srcElement).value; let value: any = (<HTMLInputElement>event.target).value;
value = column.options.find(opt => opt.name === value); value = column.options.find(opt => opt.name === value);
row.value[column.id] = value; row.value[column.id] = value;
} }

View File

@@ -31,7 +31,7 @@ describe('TextEditorComponent', () => {
let column = <DynamicTableColumn> { id: 'key' }; let column = <DynamicTableColumn> { id: 'key' };
const value = '<value>'; const value = '<value>';
let event = { srcElement: { value } }; let event = { target: { value } };
editor.onValueChanged(row, column, event); editor.onValueChanged(row, column, event);
expect(row.value[column.id]).toBe(value); expect(row.value[column.id]).toBe(value);

View File

@@ -28,7 +28,7 @@ import { DynamicTableRow, DynamicTableColumn } from './../../../core/index';
export class TextEditorComponent extends CellEditorComponent { export class TextEditorComponent extends CellEditorComponent {
onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) { onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {
let value: any = (<HTMLInputElement>event.srcElement).value; let value: any = (<HTMLInputElement>event.target).value;
row.value[column.id] = value; row.value[column.id] = value;
} }

View File

@@ -314,26 +314,26 @@ describe('DataTable', () => {
it('should replace image source with fallback thumbnail on error', () => { it('should replace image source with fallback thumbnail on error', () => {
let event = <any> { let event = <any> {
srcElement: { target: {
src: 'missing-image' src: 'missing-image'
} }
}; };
dataTable.fallbackThumbnail = '<fallback>'; dataTable.fallbackThumbnail = '<fallback>';
dataTable.onImageLoadingError(event); dataTable.onImageLoadingError(event);
expect(event.srcElement.src).toBe(dataTable.fallbackThumbnail); expect(event.target.src).toBe(dataTable.fallbackThumbnail);
}); });
it('should replace image source only when fallback available', () => { it('should replace image source only when fallback available', () => {
const originalSrc = 'missing-image'; const originalSrc = 'missing-image';
let event = <any> { let event = <any> {
srcElement: { target: {
src: originalSrc src: originalSrc
} }
}; };
dataTable.fallbackThumbnail = null; dataTable.fallbackThumbnail = null;
dataTable.onImageLoadingError(event); dataTable.onImageLoadingError(event);
expect(event.srcElement.src).toBe(originalSrc); expect(event.target.src).toBe(originalSrc);
}); });
}); });

View File

@@ -146,7 +146,7 @@ export class DataTableComponent implements OnInit, AfterViewChecked {
onImageLoadingError(event: Event) { onImageLoadingError(event: Event) {
if (event && this.fallbackThumbnail) { if (event && this.fallbackThumbnail) {
let element = <any> event.srcElement; let element = <any> event.target;
element.src = this.fallbackThumbnail; element.src = this.fallbackThumbnail;
} }
} }