0.2.1 • Published 6 years ago

raven-multiselect v0.2.1

Weekly downloads
6
License
MIT
Repository
github
Last release
6 years ago

Raven Multiselect for Angular 6+

An Angular component for selecting multiple values from a list.

demo

Features

  • Add values not present in the list
  • Filter the list as you type
  • Keyboard/touch accessible
  • Compatible with template driven and reactive forms
  • Easily styled with CSS variables

Installation

Install into your Angular project using NPM.

npm install raven-multiselect --save

Import the MultiselectModule into your module, and import the FormsModule or ReactiveFormsModule depending on which you'll be using (FormsModule is used for these examples).

import { MultiselectModule } from 'raven-multiselect';
import { FormsModule } from '@angular/forms';
// ...

@NgModule({
  imports: [
    MultiselectModule,
    FormsModule
    // ...
  ],
  // ...
})
export class AppModule { }

Usage

Add a <raven-multiselect> element to your template, and use <option> tags to create text/values for the multiselect list.

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  template: `
    <raven-multiselect [(ngModel)]="selectedValues"
                       [enableCustomValues]="true"
                       placeholder="Type or select a color">
      <option value="red">Red</option>
      <option value="green">Green</option>
      <option value="blue">Blue</option>
      <option value="yellow">Yellow</option>
    </raven-multiselect>`,
  styles: []
})
export class AppComponent {
  selectedValues = 'red,blue';
}

Options

OptionTypeDescriptionDefault Value
iconsobjectProvide custom SVG icons.Default SVG icons
enableCustomValuesbooleanAllows user to type in a custom value.false
placeholderstringPlaceholder text for text box.Type and press Enter

How to Use Custom Icons

To use custom icons, you will need to pass strings of SVG content (including the <svg> tags) to the icons parameter. For example:

@Component({
  selector: 'app-root',
  template: `
  <raven-multiselect formControlName="color" [icons]="icons">
    <option value="1">Option 1</option>
    <!-- ... -->
  </raven-multiselect>`,
  // ...
})
export class AppComponent implements OnInit {
  icons: any;
  // ...

  constructor() {
    // Use custom icons
    this.icons = {
      arrowDown: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"></path></svg>',
      close: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"></path></svg>'
    };
  }

  // ...
}

Styling

CSS variables are used for styling. Example:

raven-multiselect {
  --rms-choice-color-text: #222;
  --rms-choice-color-bg: #eee;
}

Available CSS Variables

VariableDescriptionDefault Value
--rms-control-heightHeight of the main box.4rem
--rms-control-space-multiplierAffects the amount of padding applied (use 0.5 – 1.5 for best results).1
--rms-control-color-textText color of the box.#555
--rms-control-color-bgBackground color of the box.#fff
--rms-control-color-borderBorder color of the box.#ccc
--rms-control-border-radiusBorder radius for the box.0
--rms-choice-color-textText color of selected values.#fff
--rms-choice-color-bgBackground color of selected values.#333
--rms-choice-color-borderBorder color of selected values.#333
--rms-choice-border-radiusBorder radius for selected values.0
--rms-dropdown-color-textText color of drop-down box.#000
--rms-dropdown-color-bgBackground color of drop-down box.#fff
--rms-dropdown-color-borderBorder color of drop-down box.#ccc
--rms-dropdown-border-radiusBorder radius for drop-down box.0
--rms-dropdown-color-hoverBackground color of hover/focused items.#eee

Development

To contribute to the development of this component, clone this repository and run npm install. Then run ng serve -o to start a development server and to open a sample page in your browser.

License

MIT license.

0.2.1

6 years ago

0.2.0

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago