Skip to content

Commit

Permalink
Revert "Prevent option change event firing when changes occur in comp…
Browse files Browse the repository at this point in the history
…onent (#712) (#744)

* Revert "Prevent option change event firing when changes occur in component (#712) (#717)"

This reverts commit 08a40ba.

* Update shippable config

* Fix tests
  • Loading branch information
dxvladislavvolkov committed Apr 10, 2018
1 parent 2e35fa8 commit b666fa1
Show file tree
Hide file tree
Showing 6 changed files with 6 additions and 29 deletions.
3 changes: 3 additions & 0 deletions karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ module.exports = function(config) {
// RxJs
{ pattern: 'node_modules/rxjs/**/*.+(js|js.map)', included: false, watched: false },

// tslib
{ pattern: 'node_modules/tslib/tslib.js', included: false, watched: false },

// Angular 2 itself and the testing library
{ pattern: 'node_modules/@angular/!(compiler-cli|tsc-wrapped)/**/*.+(js|js.map)', included: false, watched: false },

Expand Down
3 changes: 2 additions & 1 deletion karma.systemjs.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@

// other libraries
'rxjs': 'npm:rxjs',
'rxjs/operators': 'npm:rxjs/operators/index.js'
'rxjs/operators': 'npm:rxjs/operators/index.js',
'tslib': 'npm:tslib/tslib.js'
},
packages: {
app: {
Expand Down
2 changes: 1 addition & 1 deletion shippable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@ build:
- shippable_retry npm install @angular/core@^5.0.0 @angular/common@^5.0.0 @angular/compiler@^5.0.0 @angular/compiler-cli@^5.0.0 @angular/forms@^5.0.0 @angular/http@^5.0.0 @angular/platform-browser@^5.0.0 @angular/platform-browser-dynamic@^5.0.0 --unsafe-perm
- gulp build.tests
- gulp run.tests
- shippable_retry npm install rxjs@^6.0.0-0 @angular/core@^6.0.0-0 @angular/common@^6.0.0-0 @angular/compiler@^6.0.0-0 @angular/compiler-cli@^6.0.0-0 @angular/forms@^6.0.0-0 @angular/http@^6.0.0-0 @angular/platform-browser@^6.0.0-0 @angular/platform-browser-dynamic@^6.0.0-0 --unsafe-perm
- shippable_retry npm install rxjs@^6.0.0-0 @angular/animations@^6.0.0-0 @angular/core@^6.0.0-0 @angular/common@^6.0.0-0 @angular/compiler@^6.0.0-0 @angular/forms@^6.0.0-0 @angular/http@^6.0.0-0 @angular/platform-browser@^6.0.0-0 @angular/platform-browser-dynamic@^6.0.0-0 @angular/compiler-cli@^6.0.0-0 --unsafe-perm
- gulp build.tests
- gulp run.tests
4 changes: 0 additions & 4 deletions src/core/events-strategy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,16 +93,12 @@ let createOnStableSubscription = function(ngZone: NgZone, fireNgEvent: Function)

export class EmitterHelper {
strategy: NgEventsStrategy;
lockedValueChangeEvent = false;

constructor(ngZone: NgZone, public component: DxComponent) {
this.strategy = new NgEventsStrategy(component, ngZone);
createOnStableSubscription(ngZone, this.fireNgEvent);
}
fireNgEvent(eventName: string, eventArgs: any) {
if (this.lockedValueChangeEvent && eventName === 'valueChange') {
return;
}
let emitter = this.component[eventName];
if (emitter) {
emitter.next(eventArgs && eventArgs[0]);
Expand Down
2 changes: 0 additions & 2 deletions templates/component.tst
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,7 @@ export class <#= it.className #>Component extends <#= baseClass #> <#? implement
}
<#? it.isEditor #>
writeValue(value: any): void {
this.eventHelper.lockedValueChangeEvent = true;
this.value = value;
this.eventHelper.lockedValueChangeEvent = false;
}
<#? it.widgetName !== "dxRangeSelector" #>
setDisabledState(isDisabled: boolean): void {
Expand Down
21 changes: 0 additions & 21 deletions tests/src/ui/custom-value-accessor-implementation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ describe('DxTextBox value accessor', () => {

expect(instance.option('disabled')).toBe(false);
}));

it('should change the value', async(() => {
let fixture = TestBed.createComponent(TestContainerComponent);
fixture.detectChanges();
Expand All @@ -90,7 +89,6 @@ describe('DxTextBox value accessor', () => {

expect(instance.option('value')).toBe('text');
}));

it('should change touched option', async(() => {
let fixture = TestBed.createComponent(TestContainerComponent);
fixture.detectChanges();
Expand All @@ -104,23 +102,4 @@ describe('DxTextBox value accessor', () => {

expect(fixture.componentInstance.formControl.touched).toBe(true);
}));

it('should not fire valueChanges event when patchValue method is used with emitEvent=false (T614207)', () => {
let fixture = TestBed.createComponent(TestContainerComponent);
fixture.detectChanges();

let component = fixture.componentInstance,
form = component.form,
testSpy = jasmine.createSpy('testSpy');

form.valueChanges.subscribe(testSpy);

form.controls['formControl'].patchValue('text', { emitEvent: false });
fixture.detectChanges();
expect(testSpy).toHaveBeenCalledTimes(0);

form.controls['formControl'].patchValue('text2');
fixture.detectChanges();
expect(testSpy).toHaveBeenCalledTimes(1);
});
});

0 comments on commit b666fa1

Please sign in to comment.