0.7.178 • Published 2 months ago

@rxdi/router v0.7.178

Weekly downloads
328
License
MIT
Repository
github
Last release
2 months 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

2 months ago

0.7.175

2 months ago

0.7.178

2 months ago

0.7.177

2 months ago

0.7.174

9 months ago

0.7.173

10 months ago

0.7.170

10 months ago

0.7.172

10 months ago

0.7.171

10 months ago

0.7.169

12 months ago

0.7.167

1 year ago

0.7.168

1 year ago

0.7.163

1 year ago

0.7.162

1 year ago

0.7.165

1 year ago

0.7.164

1 year ago

0.7.166

1 year ago

0.7.161

1 year ago

0.7.160

1 year ago

0.7.159

1 year ago

0.7.158

1 year ago

0.7.157

1 year ago

0.7.152

2 years ago

0.7.154

2 years ago

0.7.153

2 years ago

0.7.156

2 years ago

0.7.155

2 years ago

0.7.151

2 years ago

0.7.150

2 years ago

0.7.149

2 years ago

0.7.148

2 years ago

0.7.147

2 years ago

0.7.141

2 years ago

0.7.140

2 years ago

0.7.143

2 years ago

0.7.142

2 years ago

0.7.145

2 years ago

0.7.144

2 years ago

0.7.146

2 years ago

0.7.138

2 years ago

0.7.137

2 years ago

0.7.139

2 years ago

0.7.136

3 years ago

0.7.135

3 years ago

0.7.121

3 years ago

0.7.120

3 years ago

0.7.123

3 years ago

0.7.122

3 years ago

0.7.125

3 years ago

0.7.124

3 years ago

0.7.130

3 years ago

0.7.132

3 years ago

0.7.131

3 years ago

0.7.134

3 years ago

0.7.133

3 years ago

0.7.127

3 years ago

0.7.126

3 years ago

0.7.129

3 years ago

0.7.128

3 years ago

0.7.118

3 years ago

0.7.119

3 years ago

0.7.116

3 years ago

0.7.117

3 years ago

0.7.115

3 years ago

0.7.114

3 years ago

0.7.113

3 years ago

0.7.112

3 years ago

0.7.111

3 years ago

0.7.110

3 years ago

0.7.109

3 years ago

0.7.108

3 years ago

0.7.107

3 years ago

0.7.101

3 years ago

0.7.103

3 years ago

0.7.102

3 years ago

0.7.105

3 years ago

0.7.104

3 years ago

0.7.106

3 years ago

0.7.100

3 years ago

0.7.99

3 years ago

0.7.98

3 years ago

0.7.97

3 years ago

0.7.96

3 years ago

0.7.95

3 years ago

0.7.94

3 years ago

0.7.93

3 years ago

0.7.91

3 years ago

0.7.92

3 years ago

0.7.90

3 years ago

0.7.88

3 years ago

0.7.89

3 years ago

0.7.87

3 years ago

0.7.86

3 years ago

0.7.85

3 years ago

0.7.84

3 years ago

0.7.83

3 years ago

0.7.82

4 years ago

0.7.81

4 years ago

0.7.80

4 years ago

0.7.79

4 years ago

0.7.78

4 years ago

0.7.77

4 years ago

0.7.76

4 years ago

0.7.75

4 years ago

0.7.73

4 years ago

0.7.72

4 years ago

0.7.74

4 years ago

0.7.71

4 years ago

0.7.70

4 years ago

0.7.68

4 years ago

0.7.69

4 years ago

0.7.67

4 years ago

0.7.66

4 years ago

0.7.63

4 years ago

0.7.62

4 years ago

0.7.61

4 years ago

0.7.60

4 years ago

0.7.57

4 years ago

0.7.56

4 years ago

0.7.59

4 years ago

0.7.58

4 years ago

0.7.51

4 years ago

0.7.50

4 years ago

0.7.53

4 years ago

0.7.52

4 years ago

0.7.48

4 years ago

0.7.47

4 years ago

0.7.49

4 years ago

0.7.46

4 years ago

0.7.40

4 years ago

0.7.39

5 years ago

0.7.38

5 years ago

0.7.37

5 years ago

0.7.36

5 years ago

0.7.35

5 years ago

0.7.34

5 years ago

0.7.33

5 years ago

0.7.32

5 years ago

0.7.31

5 years ago

0.7.30

5 years ago

0.7.29

5 years ago

0.7.28

5 years ago

0.7.27

5 years ago

0.7.26

5 years ago

0.7.25

5 years ago

0.7.24

5 years ago

0.7.23

5 years ago

0.7.22

5 years ago

0.7.21

5 years ago

0.7.20

5 years ago

0.7.19

5 years ago

0.7.18

5 years ago

0.7.17

5 years ago

0.7.16

5 years ago

0.7.15

5 years ago

0.7.14

5 years ago

0.7.13

5 years ago

0.7.12

5 years ago

0.7.11

5 years ago

0.7.10

5 years ago

0.7.9

5 years ago

0.7.8

5 years ago

0.7.7

5 years ago

0.7.6

5 years ago

0.7.5

5 years ago

0.7.4

5 years ago

0.7.3

5 years ago

0.7.2

5 years ago

0.7.1

5 years ago

0.7.0

5 years ago

0.6.13

5 years ago

0.6.12

5 years ago

0.6.11

5 years ago

0.6.10

5 years ago

0.6.9

5 years ago

0.6.8

5 years ago

0.6.7

5 years ago

0.6.6

5 years ago

0.6.5

5 years ago

0.6.4

5 years ago

0.6.3

5 years ago

0.6.2

5 years ago

0.6.1

5 years ago

0.6.0

5 years ago

0.5.21

5 years ago

0.5.20

5 years ago

0.5.19

5 years ago

0.5.18

5 years ago

0.5.17

5 years ago

0.5.16

5 years ago

0.5.15

5 years ago

0.5.14

5 years ago

0.5.13

5 years ago

0.5.12

5 years ago

0.5.11

5 years ago

0.5.10

5 years ago

0.5.9

5 years ago

0.5.8

5 years ago

0.5.7

5 years ago

0.5.6

5 years ago

0.5.5

5 years ago

0.5.4

5 years ago

0.5.3

5 years ago

0.5.2

5 years ago

0.5.1

5 years ago

0.5.0

5 years ago

0.4.35

5 years ago

0.4.34

5 years ago

0.4.33

5 years ago

0.4.32

5 years ago

0.4.31

5 years ago

0.4.30

5 years ago

0.4.29

5 years ago

0.4.28

5 years ago

0.4.27

5 years ago

0.4.26

5 years ago

0.4.25

5 years ago

0.4.24

5 years ago

0.4.23

5 years ago

0.4.22

5 years ago

0.4.21

5 years ago

0.4.20

5 years ago

0.4.19

5 years ago

0.4.18

5 years ago

0.4.17

5 years ago

0.4.16

5 years ago

0.4.15

5 years ago

0.4.14

5 years ago

0.4.13

5 years ago

0.4.12

5 years ago

0.4.11

5 years ago

0.4.10

5 years ago

0.4.9

5 years ago

0.4.8

5 years ago

0.4.7

5 years ago

0.4.6

5 years ago

0.4.5

5 years ago

0.4.4

5 years ago

0.4.3

5 years ago

0.4.2

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago

0.3.19

5 years ago

0.3.18

5 years ago

0.3.17

5 years ago

0.3.16

5 years ago

0.3.15

5 years ago

0.3.14

5 years ago

0.3.13

5 years ago

0.3.12

5 years ago

0.3.11

5 years ago

0.3.10

5 years ago

0.3.9

5 years ago

0.3.8

5 years ago

0.3.7

5 years ago

0.3.6

5 years ago

0.3.5

5 years ago

0.3.4

5 years ago

0.3.3

5 years ago

0.3.2

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.2.36

5 years ago

0.2.35

5 years ago

0.2.34

5 years ago

0.2.33

5 years ago

0.2.32

5 years ago

0.2.31

5 years ago

0.2.30

5 years ago

0.2.29

5 years ago

0.2.28

5 years ago

0.2.27

5 years ago

0.2.26

5 years ago

0.2.25

5 years ago

0.2.24

5 years ago

0.2.23

5 years ago

0.2.22

5 years ago

0.2.21

5 years ago

0.2.20

5 years ago

0.2.19

5 years ago

0.2.18

5 years ago

0.2.17

5 years ago

0.2.16

5 years ago

0.2.15

5 years ago

0.2.14

5 years ago

0.2.13

5 years ago

0.2.12

5 years ago

0.2.11

5 years ago

0.2.10

5 years ago

0.2.9

5 years ago

0.2.8

5 years ago

0.2.7

5 years ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.423

5 years ago

0.0.422

5 years ago

0.0.421

5 years ago

0.0.420

5 years ago

0.0.419

5 years ago

0.0.418

5 years ago

0.0.417

5 years ago

0.0.416

5 years ago

0.0.415

5 years ago

0.0.414

5 years ago

0.0.413

5 years ago

0.0.412

5 years ago

0.0.411

5 years ago

0.0.410

5 years ago

0.0.409

5 years ago

0.0.408

5 years ago

0.0.407

5 years ago

0.0.406

5 years ago

0.0.405

5 years ago

0.0.404

5 years ago

0.0.403

5 years ago

0.0.402

5 years ago

0.0.401

5 years ago

0.0.400

5 years ago

0.0.399

5 years ago

0.0.398

5 years ago

0.0.397

5 years ago

0.0.396

5 years ago

0.0.395

5 years ago

0.0.394

5 years ago

0.0.393

5 years ago

0.0.392

5 years ago

0.0.391

5 years ago

0.0.390

5 years ago

0.0.389

5 years ago

0.0.388

5 years ago

0.0.387

5 years ago

0.0.386

5 years ago

0.0.385

5 years ago

0.0.384

5 years ago

0.0.383

5 years ago

0.0.382

5 years ago

0.0.381

5 years ago

0.0.380

5 years ago

0.0.379

5 years ago

0.0.378

5 years ago

0.0.377

5 years ago

0.0.376

5 years ago

0.0.375

5 years ago

0.0.374

5 years ago

0.0.373

5 years ago

0.0.372

5 years ago

0.0.371

5 years ago

0.0.370

5 years ago

0.0.369

5 years ago

0.0.368

5 years ago

0.0.367

5 years ago

0.0.366

5 years ago

0.0.365

5 years ago

0.0.364

5 years ago

0.0.363

5 years ago

0.0.362

5 years ago

0.0.361

5 years ago

0.0.360

5 years ago

0.0.359

5 years ago

0.0.358

5 years ago

0.0.357

5 years ago

0.0.356

5 years ago

0.0.355

5 years ago

0.0.354

5 years ago

0.0.353

5 years ago

0.0.352

5 years ago

0.0.351

5 years ago

0.0.350

5 years ago

0.0.349

5 years ago

0.0.348

5 years ago

0.0.347

5 years ago

0.0.346

5 years ago

0.0.345

5 years ago

0.0.344

5 years ago