npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

input-search-select-option

v14.0.0

Published

A Angular(8+) Input search select option with customizing theme.

Downloads

30

Readme

Agular Input Search And Select Option Dropdown

All Contributors npm npm downloads

input-search-select-option Custom input search select option component for Angular 8+ with search item, selection options with customizing themes.

Supports

  • Angular 9 and 9+ Supported
  • If your TypeScript is lower than 3.7 and angular version is lower than 9 version. Update TypeScript else go to tsconfig.json file and add "skipLibCheck": true in "compailerOptions"

Features

  • Input Search And Find
  • Working similar like select options
  • Angular forms support
  • Cross browser support
  • Modify colors and background
  • Modify height and width of input and list container

Extra Features

  • You can call create event and create new value by adding create = true in config object.
  • Similar you have an option edit/update icon under list of items. You can select and update your item by calling update event. To use this feature set update = true in config object.
  • Clear on selection of object

Installation

npm install --save input-search-select-option

Include it to your module for example your app.module.ts

import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { InputSearchSelectOptionModule } from 'input-search-select-option';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    FormsModule,
    ReactiveFormsModule,
    InputSearchSelectOptionModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Usage

import { ChangeDetectorRef, Component } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { InputSearchSelectConfig } from 'input-search-select-option';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  id = null;
  reactiveForm: FormGroup;
  options = [
    {
      id: 1,
      value: 'Test User 1'
    },
    {
      id: 2,
      value: 'Test User 1'
    },
    {
      id: 3,
      value: 'Test User 1'
    },
    {
      id: 4,
      value: 'Test User 1'
    }
  ];
  config: InputSearchSelectConfig = {
    idKey: '_id',
    displayKey: 'name',
    height: '250px',
    width: '100%',
    noResultsFound: 'No resource available',
    placeholder: 'Select Resource',
    showNoResultMessage: false,
    clearOnSelection: false,
    create: true,
    update: true,
    theme: {
      customValidationClass: 'is-invalid ',
      inputBackground: '#fff',
      inputColor: '#000',
      containerListBackground: '#40404c',
      ContainerListColor: '#fff',
      listHoverBackground: '#EF411F',
      listHoverColor: '#fff',
      listFontSize: '14px',
      iconColor: '#EF411F',
      iconBackground: '#EF411F',
      iconBorder: '1px solid #EF411F',
    }
  };

  constructor(fb: FormBuilder, private cdr: ChangeDetectorRef) {
    this.reactiveForm = fb.group({
      title: ['', Validators.compose([Validators.required])],
    });
  }

  callCreate($event): void {
    this.options = [...this.options, {
      id: 5,
      value: $event
    }];
    this.id = 5;
  }

  callUpdate($event): void {
    if ($event) {
      const index = this.options.findIndex(x => x.id == $event._id);
      if (index > -1) {
        this.options[index].value = $event.value;
        this.options = [...this.options];
        this.id = $event._id;
      }
    }
  }

  getValue($event): void {
    console.log($event);
  }

  reset() {
    this.reactiveForm.reset();
  }
}
 <div class="p-5">
  <div class="row" [formGroup]="reactiveForm">
    <div class="col-3">
      {{id}}
      <input-search-select-option formControlName="title" [form]="reactiveForm" [controlName]="'title'" [(ngModel)]="id"
        (ngModelChange)="getValue($event)" [config]="config" [options]="options" (createEvent)="callCreate($event)"
        (updateEvent)="callUpdate($event)">
      </input-search-select-option>
      <button class="btn btn-primary" (click)="reset()"> Reset </button>
    </div>
  </div>
</div>

<!-- To use reactive form validation please pass formGroup name in [form] like above e.g and pass control name -->

Settings

  • The required fields contains * this shows mandatory fields.

| Setting | Type | Description | Default Value | | :----------------- | :--------- | :----------------------------------- | :------------------ | | * displayKey | String | If objects array passed which key to be displayed defaults to description | 'value' | | * idKey | String | To return the selected value pass idKey | 'id' | | placeholder | String | Text to be show in the dropdown, when no items are selected. | 'Select Item' | | disabled | Boolean | Disable the dropdown | false | | options | Array | Array of items from which to select. Should be an array of objects with id and text properties. You can also use custom properties. In that case you need to map idField and textField properties. (Mapping is required) | n/a | | noResultsFound | String | Text to be show in list container if array of option list is empty or search result not found | 'No results found!' | | height | String | Set maximum height of the input and dropdown list in any unit e.g. '400px' | 'auto' | | width | String | Set maximum width of the input and dropdown list in any unit e.g. '100%' | '100%' | | create | Boolean | Set create true for calling create event to add new value in list. Call (createEvent)="onCallCreateEvent($event)" this will get you new typed value to save in list. $event returns value eg. "Call to new feature".| false | | update | Boolean | Set update true for calling update event to update new value in list of selected object. Call (updateEvent)="onCallUpdateEvent($event)" this will get you new typed value to update in list of selected item. $event returns object contains _id and value. | false | | clearOnSelection | Boolean | This will clear the input field after selecting the item or creating / updating item. Whenever want to add multiple times selected value in table or any other array list. This helps to cleare the input search box and search again and select to add. | false | | theme | Object | Using class DropDownConfig object set various colors and backgound to dropdown | n/a |

Theme Config Class

| Setting | Type | Description | Default Value | | :----------------- | :--------- | :----------------------------------- | :------------------ | | customValidationClass | String | Set your custom validation class for form validation | 'invalid' | | inputBackground | String | Set backgound color for main input box | '#40404c' | | inputColor | String | Set text color of main input box | '#fff' | | containerListBackground | String | Set background color for list container | '#40404c' | | ContainerListColor | String | Set text color for list container | '#fff' | | listHoverBackground | String | Set background color for mouse hover item list | '#EF411F' | | listHoverColor | String | Set text color for mouse hover item list | '#fff' | | listFontSize | String | Set font size for list item | '14px' | | iconColor | String | Set icon color for create, update, cancel button | '#0085dd' | | iconBackground | String | Set icon background for create, update, cancel button | '#fff' | | iconBorder | String | Set icon border for create, update, cancel button | '1px solid #0085dd' |

Config Basic Setting

public config: InputSearchConfig = {
    displayKey: 'value', // If objects array passed which key to be displayed defaults to description
    idKey: '_id', // Id is mandetory to get selected item from list.
    height: '300px', // Set max height of list container
    width: '100%', // Set max width of input and list container
    placeholder: 'Search and select', // Set placeholder
    noResultsFound: 'No result found', // Set text if no items available
    disabled: false, // To disable the input tag
    showNoResultMessage: true, // To show no result found message if false it will not display any message on no result found.
    clearOnSelection: false, // If set true after selection of item input text will be cleared.
    create: false, // To call the create new value event and show create icon
    update: false, // To call the update selected value event and show edit and cancel icon to update value
    theme: {
        customValidationClass : 'invalid' // To set custom validation class
        inputBackground: '#40404c', // Set backgound color for main input box
        inputColor: '#fff', // Set text color of main input box
        containerListBackground: '#40404c', // Set background color for list container
        ContainerListColor: '#fff', // Set text color for list container
        listHoverBackground: '#EF411F', // Set background color for mouse hover item list
        listHoverColor: '#fff', // Set text color for mouse hover item list
        listFontSize: '14px', // Set font size for list item
        iconColor: '#0085dd', // Set icon color for create, edit, cancel button
        iconBackground: '#fff', // Set icon backgound for create, edit, cancel button
        iconBorder: '1px solid #0085dd', // Set icon border for create, edit, cancel button

    }
  };

Dependencies

  • Angular 8 and 8+
  • Font awesome icon library 4.7.0