ngx-query-builder

Angular query builder

Usage no npm install needed!

<script type="module">
  import ngxQueryBuilder from 'https://cdn.skypack.dev/ngx-query-builder';
</script>

README

NgxQueryBuilder

Angular Query Builder component. Easy to integrate and use.

Installation

npm install ngx-query-builder

Import NgxQueryBuilderModule (see app.module.ts):

import {NgxQueryBuilderModule} from 'ngx-query-builder';
// ...

@NgModule({
  imports: [
    NgxQueryBuilderModule
    // ...
  ]
  // ...
})
export class AppModule {}

Usage

import { Component } from '@angular/core';
import {QueryBuilderFieldMap, RuleSet} from 'ngx-query-builder';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {

  query: RuleSet = {
    condition: 'and',
    rules: [
      {
        field: 'category',
        type: 'select',
        operator: 'equal',
        value: ['wallets']
      },
      {
        field: 'price',
        type: 'double',
        operator: 'greater',
        value: 45.5
      },
      {
        field: 'inStock',
        type: 'boolean',
        operator: 'equal',
        value: true
      },
      {
        field: 'createdOn',
        type: 'date',
        operator: 'equal',
        value: '2020-01-20'
      }
    ]
  };

  fieldMap: QueryBuilderFieldMap = {
    name: {
      name: 'Name',
      type: 'string',
      settings: {
        nullableOperators: true,
        emptyOperators: true
      }
    },
    price: {
      name: 'Price',
      type: 'double'
    },
    createdOn: {
      name: 'Created On',
      type: 'date'
    },
    inStock: {
      name: 'In Stock',
      type: 'boolean'
    },
    category: {
      name: 'Category',
      type: 'select',
      options: [
        {name: 'Jackets', value: 'jackets'},
        {name: 'Hats', value: 'hats'},
        {name: 'Sandals', value: 'sandals'},
        {name: 'Wallets', value: 'wallets'},
        {name: 'Belts', value: 'belts'},
        {name: 'T-Shirts', value: 't-shirts'},
        {name: 'Toys', value: 'toys'},
        {name: 'Jumpers', value: 'jumpers'},
        {name: 'Jewellery', value: 'jewellery'},
      ]
    }
  };

}
<ngx-query-builder [(ngModel)]="query" 
                   [fieldMap]="fieldMap">
</ngx-query-builder>