0.7.178 • Published 1 year ago

@rxdi/router v0.7.178

Weekly downloads
328
License
MIT
Repository
github
Last release
1 year ago

Router module for client side rxdi application

Starter application

Install

npm i @rxdi/router

Define routes with forRoot these will be evaluated lazy

import { Module } from '@rxdi/core';
import { RouterModule } from '@rxdi/router';
import { DOCUMENTS } from './@introspection/documents';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { Components } from './shared/components';
import { NavbarComponent } from './navbar/navbar.component';
import { FooterComponent } from './footer/footer.component';

@Module({
  components: [
    HomeComponent,
    FooterComponent,
    NavbarComponent
  ],
  imports: [
    RouterModule.forRoot<Components>([
      {
        path: '/',
        component: 'home-component'
      },
      {
        path: '/about',
        component: 'about-component',
        action: () => import('./about/about.component')
      },
      {
        path: '/about/image-:size(\\d+)px',
        component: 'about-component',
        action: () => import('./about/about.component')
      },
      {
        path: '(.*)',
        component: 'not-found-component',
        action: () => import('./not-found/not-found.component')
      }
      //   { path: '/users/:user', component: 'x-user-profile' },
    ], { log: true })
  ],
  bootstrap: [AppComponent],
})
export class AppModule {}

Import <router-outlet></router-outlet> inside AppComponent

import { html, Component } from '@rxdi/lit-html';

/**
 * @customElement app-component
 */
@Component({
  selector: 'app-component',
  template(this: AppComponent) {
    return html`
      <router-outlet></router-outlet>
    `,
  },
  container: document.body
})
export class AppComponent extends HTMLElement {}

Adding header and footer inside router-outlet is simple using <slot></slot> element

<router-outlet>
  <navbar-component slot="header"></navbar-component>
  <footer-component slot="footer"></footer-component>
</router-outlet>

Header and footer can be added also outside of router shadowDOM

<navbar-component></navbar-component>
<router-outlet></router-outlet>
<footer-component></footer-component>

Getting Route parameters using Typescript Decorator

{path: '/profile/:name', component: 'x-user-profile'},

import { Component, LitElement } from '@rxdi/lit-html';
/**
 * @customElement x-user-profile
 */
@Component({
  selector: 'x-user-profile'
})
export class UserProfile extends LitElement {

  @RouteParams()
  params: { name: string }

  render() {
    return html`${this.params.name}`;
  }
}

Router Guards

Defining Guard

import { Injectable } from '@rxdi/core';
import { Observable } from 'rxjs';
import {
 CanActivateContext,
 CanActivateCommands,
 CanActivateResolver,
 CanActivateRedirect
} from '@rxdi/router';

@Injectable()
export class LoggedInGuard implements CanActivateResolver {
 OnInit() {}
  canActivate(
   context: CanActivateContext,
   commands: CanActivateCommands
 ):
   | CanActivateRedirect
   | boolean
   | Promise<boolean>
   | Observable<boolean>
   | void {
   // return false | true;
   // return new Promise((r) => r(true | false));
   // return new Observable((o) => {
   //     o.next(false | true);
   //     o.complete();
   // });
   // throw new Error('error');
 }
}

Using guard

Importing module

Guards can be defined inside RouterModule When particular route resolver is triggered you will stop in this Guard before component is resolved

RouterModule.forRoot<Components>([
  {
    path: '/',
    component: 'home-component'
  },
  {
    path: '/about',
    component: 'about-component',
    children: () => import('./about/about.module'),
    canActivate: LoggedInGuard
  },
])

Njoy!

Hooks

import { html, Component, async, LitElement } from '@rxdi/lit-html';
import { timer } from 'rxjs';
import { map } from 'rxjs/operators';
import { OnBeforeEnter, OnAfterEnter, OnAfterLeave, OnBeforeLeave } from '@rxdi/router';

@Component({
  selector: 'about-component',
  template(this: AboutComponent) {
    return html`
    <header>
      <h1>About</h1>
    </header>
    <p>
    <img src="https://www.w3schools.com/html/pic_trulli.jpg" alt="Italian Trulli">
    </p>
    `;
  }
})
export class AboutComponent extends LitElement implements OnBeforeEnter, OnAfterEnter, OnAfterLeave, OnBeforeLeave {
  onBeforeEnter() {
    this;
    debugger;
  }
  onAfterEnter() {
    this;
    debugger;
  }
  onBeforeLeave() {
    this;
    debugger;
  }
  onAfterLeave() {
    this;
    debugger;
  }
  OnInit() {
    debugger;
    console.log('About component init');
  }

  OnDestroy() {
    debugger;
    console.log('About component destroyed');
  }

}
0.7.176

1 year ago

0.7.175

1 year ago

0.7.178

1 year ago

0.7.177

1 year ago

0.7.174

2 years ago

0.7.173

2 years ago

0.7.170

2 years ago

0.7.172

2 years ago

0.7.171

2 years ago

0.7.169

2 years ago

0.7.167

2 years ago

0.7.168

2 years ago

0.7.163

2 years ago

0.7.162

2 years ago

0.7.165

2 years ago

0.7.164

2 years ago

0.7.166

2 years ago

0.7.161

2 years ago

0.7.160

2 years ago

0.7.159

2 years ago

0.7.158

2 years ago

0.7.157

2 years ago

0.7.152

3 years ago

0.7.154

3 years ago

0.7.153

3 years ago

0.7.156

3 years ago

0.7.155

3 years ago

0.7.151

3 years ago

0.7.150

3 years ago

0.7.149

3 years ago

0.7.148

3 years ago

0.7.147

3 years ago

0.7.141

3 years ago

0.7.140

3 years ago

0.7.143

3 years ago

0.7.142

3 years ago

0.7.145

3 years ago

0.7.144

3 years ago

0.7.146

3 years ago

0.7.138

3 years ago

0.7.137

3 years ago

0.7.139

3 years ago

0.7.136

4 years ago

0.7.135

4 years ago

0.7.121

4 years ago

0.7.120

4 years ago

0.7.123

4 years ago

0.7.122

4 years ago

0.7.125

4 years ago

0.7.124

4 years ago

0.7.130

4 years ago

0.7.132

4 years ago

0.7.131

4 years ago

0.7.134

4 years ago

0.7.133

4 years ago

0.7.127

4 years ago

0.7.126

4 years ago

0.7.129

4 years ago

0.7.128

4 years ago

0.7.118

4 years ago

0.7.119

4 years ago

0.7.116

4 years ago

0.7.117

4 years ago

0.7.115

4 years ago

0.7.114

4 years ago

0.7.113

4 years ago

0.7.112

4 years ago

0.7.111

4 years ago

0.7.110

4 years ago

0.7.109

4 years ago

0.7.108

4 years ago

0.7.107

4 years ago

0.7.101

4 years ago

0.7.103

4 years ago

0.7.102

4 years ago

0.7.105

4 years ago

0.7.104

4 years ago

0.7.106

4 years ago

0.7.100

4 years ago

0.7.99

4 years ago

0.7.98

4 years ago

0.7.97

4 years ago

0.7.96

4 years ago

0.7.95

4 years ago

0.7.94

4 years ago

0.7.93

4 years ago

0.7.91

5 years ago

0.7.92

5 years ago

0.7.90

5 years ago

0.7.88

5 years ago

0.7.89

5 years ago

0.7.87

5 years ago

0.7.86

5 years ago

0.7.85

5 years ago

0.7.84

5 years ago

0.7.83

5 years ago

0.7.82

5 years ago

0.7.81

5 years ago

0.7.80

5 years ago

0.7.79

5 years ago

0.7.78

5 years ago

0.7.77

5 years ago

0.7.76

5 years ago

0.7.75

5 years ago

0.7.73

5 years ago

0.7.72

5 years ago

0.7.74

5 years ago

0.7.71

5 years ago

0.7.70

5 years ago

0.7.68

5 years ago

0.7.69

5 years ago

0.7.67

5 years ago

0.7.66

5 years ago

0.7.63

5 years ago

0.7.62

5 years ago

0.7.61

5 years ago

0.7.60

5 years ago

0.7.57

5 years ago

0.7.56

5 years ago

0.7.59

5 years ago

0.7.58

5 years ago

0.7.51

5 years ago

0.7.50

5 years ago

0.7.53

5 years ago

0.7.52

5 years ago

0.7.48

5 years ago

0.7.47

5 years ago

0.7.49

5 years ago

0.7.46

5 years ago

0.7.40

5 years ago

0.7.39

6 years ago

0.7.38

6 years ago

0.7.37

6 years ago

0.7.36

6 years ago

0.7.35

6 years ago

0.7.34

6 years ago

0.7.33

6 years ago

0.7.32

6 years ago

0.7.31

6 years ago

0.7.30

6 years ago

0.7.29

6 years ago

0.7.28

6 years ago

0.7.27

6 years ago

0.7.26

6 years ago

0.7.25

6 years ago

0.7.24

6 years ago

0.7.23

6 years ago

0.7.22

6 years ago

0.7.21

6 years ago

0.7.20

6 years ago

0.7.19

6 years ago

0.7.18

6 years ago

0.7.17

6 years ago

0.7.16

6 years ago

0.7.15

6 years ago

0.7.14

6 years ago

0.7.13

6 years ago

0.7.12

6 years ago

0.7.11

6 years ago

0.7.10

6 years ago

0.7.9

6 years ago

0.7.8

6 years ago

0.7.7

6 years ago

0.7.6

6 years ago

0.7.5

6 years ago

0.7.4

6 years ago

0.7.3

6 years ago

0.7.2

6 years ago

0.7.1

6 years ago

0.7.0

6 years ago

0.6.13

6 years ago

0.6.12

6 years ago

0.6.11

6 years ago

0.6.10

6 years ago

0.6.9

6 years ago

0.6.8

6 years ago

0.6.7

6 years ago

0.6.6

6 years ago

0.6.5

6 years ago

0.6.4

6 years ago

0.6.3

6 years ago

0.6.2

6 years ago

0.6.1

6 years ago

0.6.0

6 years ago

0.5.21

6 years ago

0.5.20

6 years ago

0.5.19

6 years ago

0.5.18

6 years ago

0.5.17

6 years ago

0.5.16

6 years ago

0.5.15

6 years ago

0.5.14

6 years ago

0.5.13

6 years ago

0.5.12

6 years ago

0.5.11

6 years ago

0.5.10

6 years ago

0.5.9

6 years ago

0.5.8

6 years ago

0.5.7

6 years ago

0.5.6

6 years ago

0.5.5

6 years ago

0.5.4

6 years ago

0.5.3

6 years ago

0.5.2

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.4.35

6 years ago

0.4.34

6 years ago

0.4.33

6 years ago

0.4.32

6 years ago

0.4.31

6 years ago

0.4.30

6 years ago

0.4.29

6 years ago

0.4.28

6 years ago

0.4.27

6 years ago

0.4.26

6 years ago

0.4.25

6 years ago

0.4.24

6 years ago

0.4.23

6 years ago

0.4.22

6 years ago

0.4.21

6 years ago

0.4.20

6 years ago

0.4.19

6 years ago

0.4.18

6 years ago

0.4.17

6 years ago

0.4.16

6 years ago

0.4.15

6 years ago

0.4.14

6 years ago

0.4.13

6 years ago

0.4.12

6 years ago

0.4.11

6 years ago

0.4.10

6 years ago

0.4.9

6 years ago

0.4.8

6 years ago

0.4.7

6 years ago

0.4.6

6 years ago

0.4.5

6 years ago

0.4.4

6 years ago

0.4.3

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.19

6 years ago

0.3.18

6 years ago

0.3.17

6 years ago

0.3.16

6 years ago

0.3.15

6 years ago

0.3.14

6 years ago

0.3.13

6 years ago

0.3.12

6 years ago

0.3.11

6 years ago

0.3.10

6 years ago

0.3.9

6 years ago

0.3.8

6 years ago

0.3.7

6 years ago

0.3.6

6 years ago

0.3.5

6 years ago

0.3.4

6 years ago

0.3.3

6 years ago

0.3.2

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.36

6 years ago

0.2.35

6 years ago

0.2.34

6 years ago

0.2.33

6 years ago

0.2.32

6 years ago

0.2.31

6 years ago

0.2.30

6 years ago

0.2.29

6 years ago

0.2.28

6 years ago

0.2.27

6 years ago

0.2.26

6 years ago

0.2.25

6 years ago

0.2.24

6 years ago

0.2.23

6 years ago

0.2.22

6 years ago

0.2.21

6 years ago

0.2.20

6 years ago

0.2.19

6 years ago

0.2.18

6 years ago

0.2.17

6 years ago

0.2.16

6 years ago

0.2.15

6 years ago

0.2.14

6 years ago

0.2.13

6 years ago

0.2.12

6 years ago

0.2.11

6 years ago

0.2.10

6 years ago

0.2.9

6 years ago

0.2.8

6 years ago

0.2.7

6 years ago

0.2.6

6 years ago

0.2.5

6 years ago

0.2.4

6 years ago

0.2.3

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.423

6 years ago

0.0.422

6 years ago

0.0.421

6 years ago

0.0.420

6 years ago

0.0.419

6 years ago

0.0.418

6 years ago

0.0.417

6 years ago

0.0.416

6 years ago

0.0.415

6 years ago

0.0.414

6 years ago

0.0.413

6 years ago

0.0.412

6 years ago

0.0.411

6 years ago

0.0.410

6 years ago

0.0.409

6 years ago

0.0.408

6 years ago

0.0.407

6 years ago

0.0.406

6 years ago

0.0.405

6 years ago

0.0.404

6 years ago

0.0.403

6 years ago

0.0.402

6 years ago

0.0.401

6 years ago

0.0.400

6 years ago

0.0.399

6 years ago

0.0.398

6 years ago

0.0.397

6 years ago

0.0.396

6 years ago

0.0.395

6 years ago

0.0.394

6 years ago

0.0.393

6 years ago

0.0.392

6 years ago

0.0.391

6 years ago

0.0.390

6 years ago

0.0.389

6 years ago

0.0.388

6 years ago

0.0.387

6 years ago

0.0.386

6 years ago

0.0.385

6 years ago

0.0.384

6 years ago

0.0.383

6 years ago

0.0.382

6 years ago

0.0.381

6 years ago

0.0.380

6 years ago

0.0.379

6 years ago

0.0.378

6 years ago

0.0.377

6 years ago

0.0.376

6 years ago

0.0.375

6 years ago

0.0.374

6 years ago

0.0.373

6 years ago

0.0.372

6 years ago

0.0.371

6 years ago

0.0.370

6 years ago

0.0.369

6 years ago

0.0.368

6 years ago

0.0.367

6 years ago

0.0.366

6 years ago

0.0.365

6 years ago

0.0.364

6 years ago

0.0.363

6 years ago

0.0.362

6 years ago

0.0.361

6 years ago

0.0.360

6 years ago

0.0.359

6 years ago

0.0.358

6 years ago

0.0.357

6 years ago

0.0.356

6 years ago

0.0.355

6 years ago

0.0.354

6 years ago

0.0.353

6 years ago

0.0.352

6 years ago

0.0.351

6 years ago

0.0.350

6 years ago

0.0.349

6 years ago

0.0.348

6 years ago

0.0.347

7 years ago

0.0.346

7 years ago

0.0.345

7 years ago

0.0.344

7 years ago