38 lines
1.0 KiB
JavaScript
38 lines
1.0 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Helper from '@ember/component/helper';
|
|
import { inject as service } from '@ember/service';
|
|
import { action } from '@ember/object';
|
|
|
|
export default class IsHrefHelper extends Helper {
|
|
@service('router') router;
|
|
init() {
|
|
super.init(...arguments);
|
|
this.router.on('routeWillChange', this.routeWillChange);
|
|
}
|
|
|
|
compute([targetRouteName, ...rest]) {
|
|
if (this.router.currentRouteName.startsWith('nspace.') && targetRouteName.startsWith('dc.')) {
|
|
targetRouteName = `nspace.${targetRouteName}`;
|
|
}
|
|
if (typeof this.next !== 'undefined' && this.next !== 'loading') {
|
|
return this.next.startsWith(targetRouteName);
|
|
}
|
|
return this.router.isActive(...[targetRouteName, ...rest]);
|
|
}
|
|
|
|
@action
|
|
routeWillChange(transition) {
|
|
this.next = transition.to.name.replace('.index', '');
|
|
this.recompute();
|
|
}
|
|
|
|
willDestroy() {
|
|
this.router.off('routeWillChange', this.routeWillChange);
|
|
super.willDestroy();
|
|
}
|
|
}
|