0.2.1 • Published 3 years ago

ngx-global-mat-select v0.2.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

GlobalMatSelect

npm npm

This library was generated with Angular CLI version 10.1.6.

What does it do ?

This package aims to add extra features to Angular Material Select component through combining multiple functionalities from Angular Material, ngx-mat-select-search and ng-mat-select-infinite-scroll. to provide the following easy-to-configure features:

  • Local filtering through available options
  • Server side options filtering (Live Search) through HTTP requests
  • Supporting infinite scroll to load long lists of options
  • Full compatibility with Material Form Field Component <mat-form-field>

How to use it in your project

Install npm i global-mat-search

then import GlobalMatSelectModule in app.module.ts

import {NgModule} from "@angular/core";
import {GlobalMatSelectModule} from "ngx-global-mat-select";

@NgModule({
  declarations: [  ],
  imports: [
    GlobalMatSelectModule,
  ],
  providers: [],
  bootstrap: []
})
export class AppModule { }

In the template use selector

<global-mat-select 
                    [options]="options"
                    [config]="cfg"
                    [formControl]="..."
                    (infiniteScrollLimit)="getNewOptionsAndPushToOptionsArr()"
></global-mat-select>

With the following Inputs

Options Input

PropertyTypeDescriptionRequiredNotes
optionsGlobalMatSelectOptionsInterface[]Array of available options to select fromTrue

Config Input

The config object should be of type GlobalMatSelectConfig and implements the following props

PropertyTypeDescriptionRequiredNotes
labelstringLabel value to view above the select inputFalse
placeholderstringPlaceholder value to view in the select inputFalse
searchPlaceHolderstringPlaceholder value to view in the search inputFalse
enableMultiSelectbooleanEnable multi-options selectTrue
liveSearchConfigGlobalMatSelectLiveSearchConfigInterfaceConfiguration to apply live searchFalse
enableLiveSearchbooleanEnable Live-search to an external APITrue
enableLocalSearchbooleanEnable Local-searchTrueOne type of search should be explicitly true
totalOptionsLengthnumberUsed to stop Infinite scroll Event emitting if totalOptionsLength <= options.length (Reached the end of available dataFalseThe pagination event wont emit if the user is searching for options using Local or Live search

Interfaces

  • GlobalMatSelectOptionsInterface used to force all options to have the following props
{
    text: string
    value: any
}
  • GlobalMatSelectLiveSearchConfigInterface used to config server side options filtering, should implement the following props
{
     /**
       * @description URL used to execute server side search
       */
      liveSearchURL: string;
    
      /**
       * @description enable QueryString search
       */
      isQueryStringSearch: boolean;
    
      /**
       * @description querySearch Config, Must be fulfilled if isQueryStringSearch == True
       */
      queryConfig?: {queryString: string,}
    
      /**
       * @description enable Header search, else regular URL variable search
       */
      isHeaderSearch: boolean;
    
      /**
       * @description headerSearch Config, Must be fulfilled if isHeaderStringSearch == True
       */
      headerConfig?: {headersString: string}
   
      /**
       * @param res<any> Response from the liveSearchURL API
       * @description Mapping function used to map the API response to OptionsInterface Array
       */
      liveResultMappingFunc(res): GlobalMatSelectOptionsInterface[];

}

Example of using liveResultMappingFunc

 liveResultMappingFunc(data: any): GlobalMatSelectOptionsInterface[] {
              return (data as Array<any>).map(item => ({value: item.id, text: item.title}));
}

Run ng build global-mat-select to build the project. The build artifacts will be stored in the dist/ directory.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.