GithubHelp home page GithubHelp logo

chenhailun2006 / ngx-tree-select Goto Github PK

View Code? Open in Web Editor NEW

This project forked from crazyht/ngx-tree-select

0.0 1.0 0.0 3.48 MB

Angular select component with tree items

Home Page: https://crazyht.github.io/ngx-tree-select/

License: MIT License

JavaScript 24.83% TypeScript 66.59% HTML 6.40% CSS 0.62% Dockerfile 0.56% SCSS 1.00%

ngx-tree-select's Introduction

Ngx-tree-select

Greenkeeper badge Build Status npm version

Features:

  • Dropdown with 'flat' items (Like normal select)
  • Dropdown with hierarchical items
  • Simple or multiple selected items
  • With hierarchical datas you can force child selection or allow select parent
  • ngModel & standard validation compliant
  • Can limit displayed selected items (... link allow your user to see entire selection)

Installation

This is how to install the components:

npm install ngx-tree-select

or

yarn add ngx-tree-select

And on your application module:

import {NgxTreeSelectModule} from 'ngx-tree-select';

@NgModule({
  declarations: [ ...],
  imports: [
    BrowserModule,
    ....,
    NgxTreeSelectModule.forRoot({
      allowFilter: true,
      filterPlaceholder: 'Type your filter here...',
      maxVisibleItemCount: 5,
      idField: 'id',
      textField: 'name',
      childrenField: 'children',
      allowParentSelection: true
    })
],
})
export class AppModule { }

See below for SystemJs / UMD installation.

Default options

When you call NgxTreeSelectModule.forRoot you must pass default options. This options can be empty object "{}" or you can add one or more settings :

  • allowFilter : display filter input on dropdown
  • filterPlaceholder : determine placeholder text for filter
  • maxVisibleItemCount : determine maximum number of items are displayed on multiple select
  • idField : determine which property of your items is used as unique identifier
  • textField : determine which property of your items is displayed
  • childrenField : determine which property of yours items contains children items
  • allowParentSelection : if set to true, you can select parent, else when you select parent all children are selected
  • expandMode : Define which item are expand at initilization. Possible value are : None, Selection or All

Using the Tree Select

We will need to add first a version of Font Awesome to our page, for example:

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">

Then we can use the Tree Select like this:

<form novalidate>
  <tree-select name="simpleSelect"
              [items]="items"
              childrenField="children"
              [(ngModel)]="simpleSelected"
              required=true
              #simpleSelect="ngModel"
              [filterPlaceholder]="FilterPlaceholder"
              [allowFilter]="ShowFilter"
              [disabled]="Disabled"
              [allowParentSelection]="AllowParentSelection"
              expandMode="all"></tree-select>
  <div *ngIf="simpleSelect.errors && (simpleSelect.dirty || simpleSelect.touched)" class="alert alert-danger">
    <div [hidden]="!simpleSelect.errors.required">Simple select is required</div>
  </div>
</form>

<form novalidate>
  <tree-select name="multipleSelect"
              [items]="items"
              childrenField="children"
              [multiple]="true"
              [(ngModel)]="multipleSelected"
              filterPlaceholder="Type item filter..."
              required=true
              minlength="2"
              maxlength="4"
              [allowParentSelection]="AllowParentSelection"
              #multipleSelect="ngModel"
              [filterPlaceholder]="FilterPlaceholder"
              [maxVisibleItemCount]="MaxDisplayed"
              [allowFilter]="ShowFilter"
              [disabled]="Disabled">
  </tree-select>
  <div *ngIf="multipleSelect.errors && (multipleSelect.dirty || multipleSelect.touched)" class="alert alert-danger">
    <div [hidden]="!multipleSelect.errors.required">Multiple select is required</div>
    <div [hidden]="!multipleSelect.errors.minlength">You must choose at least 2 items on Multiple select</div>
    <div [hidden]="!multipleSelect.errors.maxlength">You must choose maximum 4 items on Multiple select</div>
  </div>

Component attributes

When you place tree-select on HTML template you can define :

  • items : list of items
  • multiple : allow multiple selection
  • disabled : disable component
  • allowFilter : display filter input on dropdown
  • filterPlaceholder : determine placeholder text for filter
  • maxVisibleItemCount : determine maximum number of items are displayed on multiple select
  • idField : determine which property of your items is used as unique identifier
  • textField : determine which property of your items is displayed
  • childrenField : determine which property of yours items contains children items
  • allowParentSelection : if set to true, you can select parent, else when you select parent all children are selected
  • expandMode : Define which item are expand at initilization. Possible value are : None, Selection or All

tree-select component use default options define when you call NgxTreeSelectModule.forRoot except if you override it with attribute on HTML template.

Running the Demo Application

This command will build and start the demo application:

npm start

Running This Module In Development

First let's build the library using this command:

npm run lib:build

Then let's link it:

cd dist_package\ngx-tree-select
npm link

On another folder on the same machine where we have for example a running Angular CLI, we then do:

npm link ngx-tree-select

Running the Tests

The tests can be executed with the following commands:

npm run test
npm run e2e

Using SystemJs via the UMD bundle ?

Make sure to add this to your map configuration, if you need the module served from a CDN:

map: {

   ...
   'ngx-tree-select': 'https://unpkg.com/ngx-tree-select@<version number>/ngx-tree-select.rollup.umd.min.js'
}

Otherwise if serving from node_modulesdirectly:

map: {
   ...
   'ngx-tree-select': 'node_modules/ngx-tree-select/bundles/ngx-tree-select.umd.min.js'
}

And in our packages property:

packages: {
   ...
  'ngx-tree-select': {
    main: 'index.js',
    defaultExtension: 'js'
  }

}

License

MIT

ngx-tree-select's People

Contributors

crazyht avatar greenkeeper[bot] avatar dioude avatar nokhoneryu avatar dependabot[bot] avatar stockmind avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.