ngx-dynamic-tabindex
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

NgxDynamicTabindex

General

Dynamic tabindex Angular attribute directive

Features

  1. Automatically generates tabindex numbers for all nested html elements
  2. Re-applies tabindex values on DOM structure changes
  3. Allows setting custom order for tabindex-ed elements

Installation

$ npm install --save ngx-dynamic-tabindex

Usage

Import NgxDynamicTabindexModule

import { NgxDynamicTabindexModule } from 'ngx-dynamic-tabindex';
 
@NgModule({
    imports: [..., NgxDynamicTabindexModule]
})
export class MyModule {}

Add applyTabIndexes directive to the parent element in your template. Add tabindex attributes without value to all nested elements which you want to render index value for.

<div class="container" applyTabIndexes>
    <input type="text" placeholder="input 1" tabindex>
 
    <div class="wrapped-input">
        <input type="text" placeholder="input 2" tabindex>
    </div>
</div>

Order numbers will be applied to each input in from top to bottom. Result html will look like this:

<div class="container" applytabindexes>
    <input type="text" placeholder="input 1" tabindex="1">
 
    <div class="wrapped-input">
        <input type="text" placeholder="input 2" tabindex="2">
    </div>
</div>

If you need to change the order add tabIndexAheadOffset attribute with value to the tabindex-ed element. The element's tabindex order number will be offset forward in relation to its current position. Attribute's value defines the number of steps for offset.

<div class="container" applyTabIndexes>
    <input type="text" placeholder="input 1" tabindex>
    <input type="text" placeholder="input 2" tabindex>
    
    <div class="wizard-footer">
        <button tabindex tabIndexAheadOffset="1"><Back</button>
        <button tabindex ><Back</button>
    </div> 
</div>

Result html will look like this:

<div class="container" applytabindexes>
    <input matInput type="text" placeholder="input 1" tabindex="1">
    <input matInput type="text" placeholder="input 2" tabindex="2">
    
    <div class="wizard-footer">
        <button tabindexaheadoffset="1" tabindex="4"><Back</button>
        <button tabindex="3"><Back</button>
    </div> 
</div>

Works with AngularMaterial.

Demo project

Stackblitz

Package Sidebar

Install

npm i ngx-dynamic-tabindex

Weekly Downloads

15

Version

1.0.2

License

MIT

Unpacked Size

35.3 kB

Total Files

18

Last publish

Collaborators

  • igorjar