1.0.3 • Published 3 years ago

ngx-mat-combobox v1.0.3

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

NgxMatCombobox

Customizable Combobox component for Angular Material

Demo + code examples

Screenshot

Features

  • Single & Multiple selection :)
  • Autocomplete
  • Chips
  • Custom templates for options, header, footer, loading overlay, no options etc..

TODO

  • Tests
  • Documentation
  • Theming support

Installation

npm -i ngx-mat-combobox

Example

For more details see examples or projects/demo application

Components

  • ngx-mat-combobox
@InputTypeDescription
optionsany[]List of strings or complex objects. Default [].
valueAccessorstring | NgxMatComboboxAccessorFnProperty of option's object which holds the 'value' or NgxMatComboboxAccessorFn.
labelAccessorstring | NgxMatComboboxAccessorFnProperty of option's object which holds the 'label' or NgxMatComboboxAccessorFn.
displayAccessorstring | NgxMatComboboxAccessorFnProperty of option's object which holds the 'selected label' or NgxMatComboboxAccessorFn. If not defined labelAccessor will be used.
disabledAccessorstring | NgxMatComboboxAccessorFnProperty of option's object which holds the 'disabled state' or NgxMatComboboxAccessorFn.
mapOptionsFnNgxMatComboboxMapOptionsFnDefault undefined.
filterOptionsFnNgxMatComboboxFilterOptionsFnDefault undefined.
compareOptionsFnNgxMatComboboxCompareOptionsFn
trackOptionByFnTrackByFunction
multiplebooleanMultiple selection mode. Default false.
maxValuesnumberLimit maximum selected options. Default 0 (no limit).
useValuebooleanIf set, component will emit option's value using provided valueAccessor. Default false.
autoActivatebooleanIf set, first available option id dropdown will be activated. Default false.
autoOpenbooleanIf set, dropdown will open when form field is focused. Default false.
autoSelectbooleanIf set, value model is updated when option is activated (e.g. focused by key navigation). Default false.
fillInputbooleanIf set, search input is updated using displayAccessor value. Works only in single selection mode. Default false.
autocompletebooleanAutocomplete mode. Default false.
autocompleteMinCharsnumberDefault 0.
autocompleteDebounceIntervalnumberDefault 400.
noWrapbooleanIf set,selected options list will wrap. Default false.
showToggleTriggerbooleanDefault true.
showLoadingSpinnerbooleanDefault true.
loadingSpinnerDiameternumberDefault undefined.
loadingSpinnerStrokeWidthnumberDefault 2.
loadingSpinnerColorstringDefault 'primary'.
disableOptionsRipplebooleanDefault false.
useChipsbooleanDefault false.
disableChipsRipplebooleanDefault false.
disableChipsRemovebooleanDefault false.
dropdownAlign'start' | 'center' | 'end'Dropdown align. Default 'start'.
dropdownOffsetXnumberDefault 0.
dropdownOffsetYnumberDefault 0.
dropdownAutoFocusbooleanAutofocus first element in custom dropdown template. Default false.
dropdownTrapFocusbooleanTrap focus in custom dropdown template. Default false.
dropdownClassstringDefault undefined.
dropdownMatchFieldWidthbooleanDropdown width based on parent form field width. Default true.
dropdownKeyNavWrapbooleanDropdown key navigation wrap. Default true.
dropdownKeyNavHomeAndEndbooleanDropdown key navigation HOME and END keys. Ignored in autocomplete mode. Default true.
dropdownKeyNavTypeAheadbooleanDropdown key navigation type ahead. Ignored in autocomplete mode. Default true.
noOptionTextstringDefault 'No Results'.
dropdownBackdropbooleanDefault false.
dropdownBackdropClassstringDefault undefined.
@OutputTypeDescription
openedChangeboolean
selectionChangeany[]
PropertyTypeDescription
openedboolean
selectedOptionsObservable<any[]>
filteredOptionsObservable<any[]>
input?NgxMatComboboxInput
MethodReturnsDescription
focus()void
closeDropdown()void
toggleDropdown()void
selectOption(option: any)void
selectOptions(option: any[])void
deselectOption(option: any)void
deselectOptions(option: any[])void
toggleOption(option: any)void
clear()void
isOptionSelected(option: any)boolean
getSelectedOptionIndex(option: any)number
getFilteredOptionIndex(option: any)number
filter(query: string)void
alignDropdown()void
scrollToOption(index: number)void
startLoading()void
stopLoading()void

Exported as ngxMatCombobox

Directives

  • ngxMatComboboxInput or ngx-mat-combobox-input

Exported as ngxMatComboboxInput

  • ngxMatComboboxRemove or ngx-mat-combobox-remove

Exported as ngxMatComboboxRemove.

Custom content templates

  • ngxMatComboboxOption or ngx-mat-combobox-option

  • ngxMatComboboxNoOption or ngx-mat-combobox-no-option

  • ngxMatComboboxDisplay or ngx-mat-combobox-display

  • ngxMatComboboxHeader or ngx-mat-combobox-header

  • ngxMatComboboxFooter or ngx-mat-combobox-footer

  • ngxMatComboboxLoading or ngx-mat-combobox-loading

Interfaces

Function to access object options properties.

export type NgxMatComboboxAccessorFn = (option: any) => any;

Function to map model values to the option objects.

export type NgxMatComboboxMapOptionsFn = (value: any[], options: any[]) => Observable<any[]> | any[];

Autocomplete filter function.

export type NgxMatComboboxFilterOptionsFn = (query: string, options: any[]) => Observable<any[]> | any[];

Function to compare two options. By default valueAccessor is used internally.

export type NgxMatComboboxCompareOptionsFn = (o1: any, o2: any) => boolean;

Defaults

export interface NgxMatComboboxDefaultOptions {
  valueAccessor?: string | NgxMatComboboxAccessorFn;
  labelAccessor?: string | NgxMatComboboxAccessorFn;
  displayAccessor?: string | NgxMatComboboxAccessorFn;
  disabledAccessor?: string | NgxMatComboboxAccessorFn;

  showToggleTrigger?: boolean;

  showLoadingSpinner?: boolean;
  loadingSpinnerDiameter?: number;
  loadingSpinnerStrokeWidth?: number;
  loadingSpinnerColor?: string;

  autocompleteMinChars?: number;
  autocompleteDebounceInterval?: number;

  noWrap?: boolean;
  noOptionText?: string;

  dropdownClass?: string,
  dropdownMatchFieldWidth?: boolean;
  dropdownOffsetX?: number;
  dropdownOffsetY?: number;

  dropdownKeyNavWrap?: boolean;
  dropdownKeyNavHomeAndEnd?: boolean;
  dropdownKeyNavTypeAhead?: boolean;

  disableOptionsRipple?: boolean;
  disableChipsRipple?: boolean;
  disableChipsRemove?: boolean;
}

Global configuration

  providers: [
    //...
    {
      provide: NGX_MAT_COMBOBOX_DEFAULT_OPTIONS, useValue: {
            autocompleteMinChars: 3,
            autocompleteDebounceInterval: 250,
            loadingSpinnerStrokeWidth: 4,
            loadingSpinnerColor: 'accent',
            showToggleTrigger: false,
            dropdownMatchFieldWidth: false,
          } as NgxMatComboboxDefaultOptions
    },
    //...
  ]