Skip to content

Commit

Permalink
Fixed primefaces#10379 - Unsubscription error when running any defaul…
Browse files Browse the repository at this point in the history
…t component test using Steps
  • Loading branch information
yigitfindikli committed Jul 1, 2021
1 parent 2b852c3 commit 3a2f6c0
Showing 1 changed file with 19 additions and 17 deletions.
36 changes: 19 additions & 17 deletions src/app/components/steps/steps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ import { Subscription } from 'rxjs';
<ul role="tablist">
<li *ngFor="let item of model; let i = index" class="p-steps-item" #menuitem [ngStyle]="item.style" [class]="item.styleClass" role="tab" [attr.aria-selected]="i === activeIndex" [attr.aria-expanded]="i === activeIndex"
[ngClass]="{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}">
<a *ngIf="isClickableRouterLink(item); else elseBlock" [routerLink]="item.routerLink" [queryParams]="item.queryParams" role="presentation" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
<a *ngIf="isClickableRouterLink(item); else elseBlock" [routerLink]="item.routerLink" [queryParams]="item.queryParams" role="presentation" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
(click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
[fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
<span class="p-steps-number">{{i + 1}}</span>
<span class="p-steps-title" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
<ng-template #htmlLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
</a>
<ng-template #elseBlock>
<a [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id"
<a [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id"
[attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
<span class="p-steps-number">{{i + 1}}</span>
<span class="p-steps-title" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
Expand All @@ -35,40 +35,40 @@ import { Subscription } from 'rxjs';
styleUrls: ['./steps.css']
})
export class Steps implements OnInit, OnDestroy {

@Input() activeIndex: number = 0;

@Input() model: MenuItem[];

@Input() readonly: boolean = true;

@Input() style: any;

@Input() styleClass: string;

@Output() activeIndexChange: EventEmitter<any> = new EventEmitter();

constructor(private router: Router, private route:ActivatedRoute, private cd: ChangeDetectorRef) { }

subscription: Subscription;

ngOnInit() {
this.subscription = this.router.events.subscribe(() => this.cd.markForCheck());
}

itemClick(event: Event, item: MenuItem, i: number) {
if (this.readonly || item.disabled) {
event.preventDefault();
return;
}

this.activeIndexChange.emit(i);

if (!item.url) {
event.preventDefault();
}
if (item.command) {

if (item.command) {
item.command({
originalEvent: event,
item: item,
Expand All @@ -84,12 +84,14 @@ export class Steps implements OnInit, OnDestroy {
isActive(item: MenuItem, index: number) {
if (item.routerLink)
return this.router.isActive(item.routerLink, false) || this.router.isActive(this.router.createUrlTree([item.routerLink], {relativeTo: this.route}).toString(), false);
else
else
return index === this.activeIndex;
}

ngOnDestroy() {
this.subscription.unsubscribe();
if (this.subscription) {
this.subscription.unsubscribe();
}
}
}

Expand All @@ -98,4 +100,4 @@ export class Steps implements OnInit, OnDestroy {
exports: [Steps,RouterModule],
declarations: [Steps]
})
export class StepsModule { }
export class StepsModule { }

0 comments on commit 3a2f6c0

Please sign in to comment.