New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ngx-mat-select

Package Overview
Dependencies
Maintainers
1
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-mat-select

This library was generated for Angular Material to improve select component (mat-select)

  • 1.0.3
  • unpublished
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
99
decreased by-46.2%
Maintainers
1
Weekly downloads
 
Created
Source

NgxMatSelect

This library was generated for Angular Material to improve select component (mat-select). In this library, I defined a directive for which generate Search box and Mobile View.

Extra Features, after use this directive:

  • Searchable (Client Side And Server Side)
  • Mobile View in two ways ('FullScreen' | 'BottomSheet')

RLT support (use dir='rtl' in html tag)

Compatible with Angular SSR (Universal)

See demo

Installation Guide

The first step is adding ngx-mat-select.styles in angular.json

        "styles": [
          "./node_modules/ngx-mat-select/styles/ngx-mat-select.styles.css"
        ],

The second step is adding NgxMatSelectModule into your Module

import {MatSelectModule} from "@angular/material/select";
import {NgxMatSelectModule} from "ngx-mat-select";
...
@NgModule({
  imports: [
  ...
  MatSelectModule,
  NgxMatSelectModule
  ...
  ]
})

you can define global default configs for root:

NgxMatSelectModule.forRoot({
  emptyLabel: 'No results found';
  placeholder: 'Search ...';
  maximumResultForShow: 25;
  valueMember: 'key';
  displayMember:'value';
  maxWidthForMobileView: 450;
  useMobileView: true;
  mobileViewType: 'FullScreen';
})

Samples

Client Side Search And Single Select with BottomSheet View In Mobile

html Template:

  <mat-form-field>
    <mat-select
      ngxMatSelect
      [hasSearchBox]="true"
      [useMobileView]="true"
      mobileViewType="BottomSheet"
      [(ngModel)]="bankValue"
      [multiple]="false"
      name="bank"
      [required]="true"
      [source]="source"
      [displayMember]="'value'"
      [valueMember]="'key'"
      #sf="ngxMatSelect"
    >
      <mat-option [value]="option" *ngFor="let option of sf.filteredSource">
        {{option.value}}
      </mat-option>
    </mat-select>

  </mat-form-field>

MyComponent.ts:

export class MyComponent implements OnInit {

  bankValue = {key: 50, value: 'Bank_50'};
  source: any[] = [];

  ngOnInit(): void {
      for (let i = 0; i < 100; i++) {
       this.source.push({value: 'Bank_' + i, key: i})
      }
  }

}

Client Side Search And Multi Select with FullScreen View In Mobile

html Template:

  <mat-form-field>
    <mat-select
      ngxMatSelect
      [hasSearchBox]="true"
      [useMobileView]="true"
      mobileViewType="FullScreen"
      [(ngModel)]="bankValue"
      [multiple]="true"
      name="bank"
      [required]="true"
      [source]="source"
      [displayMember]="'value'"
      [valueMember]="'key'"
      #sf="ngxMatSelect"
    >
      <mat-option [value]="option" *ngFor="let option of sf.filteredSource">
        {{option.value}}
      </mat-option>
    </mat-select>

  </mat-form-field>

MyComponent.ts:

export class MyComponent implements OnInit {
  bankValue = [{key: 10, value: 'Bank_10'},{key: 75, value: 'Bank_75'}];
  source: any[] = [];

  ngOnInit(): void {
      for (let i = 0; i < 100; i++) {
       this.source.push({value: 'Bank_' + i, key: i})
      }
  }

}

Server Side Search And Multi Select with FullScreen View In Mobile Template:

  <mat-form-field>
    <mat-select
      ngxMatSelect
      [lazyLoad]="true"
      [searcher]="bankSearcher"
      [hasSearchBox]="true"
      [useMobileView]="true"
      mobileViewType="FullScreen"
      [(ngModel)]="bankValue"
      [multiple]="true"
      name="bank"
      [required]="true"
      [source]="source"
      [displayMember]="'value'"
      [valueMember]="'key'"
      #sf="ngxMatSelect"
    >
      <mat-option [value]="option" *ngFor="let option of sf.filteredSource">
        {{option.value}}
      </mat-option>
    </mat-select>

  </mat-form-field>

MyComponent.ts:

import {Observable} from "rxjs";
import {of} from 'rxjs';

export class MyComponent implements OnInit {
  bankValue = [{key: 10, value: 'Bank_10'},{key: 75, value: 'Bank_75'}];
  source: any[] = [];

  ngOnInit(): void {
      for (let i = 0; i < 100; i++) {
       this.source.push({value: 'Bank_' + i, key: i})
      }
  }

  // server side mock search by 'of Observable'
  bankSearcher = (search: string): Observable<any[]> => {
      return of(this.kvSource.filter(w => w.value.includes(search)));
  }

}

Input Properties

PropertyDefault ValueOptionsDescription
emptyLabelNo results foundstringlabel for no result found after search
placeholderSearch ...stringplaceholder for search box
maximumResultForShow30number For better performance (especially in mobile), you must set maximum record for showing the records
valueMemberidstringwhen your value is an object, it must be defined
displayMembernamestringfor searching, it must be defined
maxWidthForMobileView599.9numberunit is px
useMobileViewtruebooleanif this value is true and your screen width is less than value of maxWidthForMobileView, 'mat-select' Will be displayed in 'FullScreen' or 'Bottom Sheet'
mobileViewType'FullScreen' | 'BottomSheet'string
lazyLoadfalsebooleanfor use searcher function, it must be true
source[]any[]Initial source(it can be big data)
filteredSource[]any[]filtered data(you receive filtered records from 'NgxMatSelect' directive)
searcher(search: string) => Observable<[]>Functionfor use lazy load you must define function that return ObserverOfArray
hasSearchBoxtrueboolean
titlenullstring

Keywords

FAQs

Package last updated on 02 Mar 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc