Newlyweds Proposing Marriage
Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

@e-square/bdir

2.1.0 • Public • Published

@e-square/bdir

A bidirectional support lib for angular

Project policies and statuses

Build Status

Getting Started

Installation

install with npm:

npm install @e-square/bdir --save

Usage

  1. Import the BDirModule:

    import {BrowserModule} from '@angular/platform-browser';
    import {NgModule} from '@angular/core';
    import { BDirModule } from '@e-square/bdir';
     
    @NgModule({
        imports: [
            BrowserModule,
            BDirModule
        ],
        bootstrap: [AppComponent]
    })
    export class AppModule { }
  2. Add bdir directive In the application wrapper:

    <div id="app-wrapper" bdir> 
      <h1>
          Welcome to {{ title }}!
      </h1>
      <router-outlet></router-outlet>
    </div>
  3. Start using scss mixins:

     
    @import "~@e-square/bdir/mixins";
    h1 {
      color: darkslategray;
      @include padding-start(20px);
    }

    Now the h1 element will transpile to:

    h1 {
      color: darkslategray;
    }
    *[dir=ltr] h1 {
      padding-right: 20px; }
     
    *[dir=rtl] h1 {
      padding-left: 20px; }

API

BDirService

Methods:

*setLang(lang: Lang) - Setting the current language which will determine the direction value

*setDir(dir: Direction) - Set the current direction value.

*getDir$(): Observable<Direction> - Get the current direction value as observable.

*setLang(lang: Lang) - Get the opposite direction value as observable.

BDirDirective

bdir: 'start' | 'end' - Will set a dir attribute to the hosting element with rtl | ltr value accordingly start, is the default value.

  <element bdir="start"></element>

Tokens

RTL_LANGUAGES - Define which language will consider as rtl languages, default value: ['he', 'ar', 'hy', 'dv', 'ff', 'ku', 'fa'].

DEFAULT_LANG - Define the default language, default value: 'en'

Mixins

All mixins were written following to the css syntax, simply change left & right with start & end.

Also the mixins were developed in a way that the transpiled code will be as minimal as possible.

*$encapsulation property used for inner components to be affected by their host's direction by using angular's :host-context

padding-start($value, $encapsulation: true)

padding-end($value, $encapsulation: true)

margin-start($value, $encapsulation: true)

margin-end($value, $encapsulation: true)

border-start($value, $encapsulation: true)

border-end($value, $encapsulation: true)

float($start: true, $encapsulation: true)

dir($start: true, $encapsulation: true)

start($value, $encapsulation: true)

end($value, $encapsulation: true)

transformTranslate($x, $y: 0, $encapsulation: true)

transformScale($x, $y: 1, $encapsulation: true)

mirror($encapsulation: true)

Install

npm i @e-square/bdir

DownloadsWeekly Downloads

194

Version

2.1.0

License

MIT

Unpacked Size

144 kB

Total Files

25

Last publish

Collaborators

  • avatar
  • avatar