Skip to content

Latest commit

 

History

History
81 lines (55 loc) · 2.24 KB

README.md

File metadata and controls

81 lines (55 loc) · 2.24 KB

ember-engines-router-service

npm version Build Status

This addon provides an API for authoring a Router service used in ember-engines.

Compatibility

  • Ember.js v3.24 or above
  • Embroider or ember-auto-import v2

Installation

ember install ember-engines-router-service

Usage

Basically you have the full RouterService API inside each engine. That means you can use APIs such as transitionTo and isActive, plus the new "external routing" APIs such as transitionToExternal and isActiveExternal which help link externalRoutes together.

import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { action } from "@ember/object";

export default class SomeComponent extends Component {
  @service router;

  @action
  transitionToHome() {
    this.router.transitionToExternal('other.route');
  }

  @action
  transitionToAdmin() {
    this.router.transitionTo('admin.route');
  }

  @action
  redirectToHome() {
    this.router.replaceWithExternal('other.route');
  }

  @action
  redirectToLogin() {
    this.router.replaceWith('login.route');
  }
}

For further documentation on this subject, view the Engine Linking RFC.

TypeScript

The library ships types for TypeScript usage:

import Service, { inject as service } from '@ember/service';
import type EnginesRouterService from 'ember-engines-router-service/services/router';

export default class MyService extends Service {
  @service declare router: EnginesRouterService;

  doSomeTranstion (): void {
    const transition = this.router.transitionToExternal('someRouter');
    transition.data.someKey = 'someValue';
  }
}

Contributing

See the Contributing guide for details.

License

This project is licensed under the MIT License.