UNPKG

ngx-ntk-query-builder

Version:

Angular query builder

1 lines 37.7 kB
{"version":3,"file":"ngx-ntk-query-builder.mjs","sources":["../../../projects/ngx-ntk-query-builder/src/lib/services/translateUi.service.ts","../../../projects/ngx-ntk-query-builder/src/lib/services/operators.service.ts","../../../projects/ngx-ntk-query-builder/src/lib/ngx-ntk-query-builder.component.ts","../../../projects/ngx-ntk-query-builder/src/lib/ngx-ntk-query-builder.component.html","../../../projects/ngx-ntk-query-builder/src/lib/ngx-ntk-query-builder.module.ts","../../../projects/ngx-ntk-query-builder/src/ngx-ntk-query-builder.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class TranslateUiService {\r\n private availableLanguages = ['en', 'fa', 'fr', 'ru'];\r\n private translationPath = './assets/i18n/ngx-ntk-query-builder/';\r\n\r\n constructor(\r\n private translateService: TranslateService,\r\n private http: HttpClient\r\n ) {}\r\n\r\n public init(language: string = null): void {\r\n if (language) {\r\n // Initialize one specific language\r\n this.loadTranslation(language).subscribe(\r\n (translations) => {\r\n this.translateService.setTranslation(language, translations, true);\r\n this.translateService.use(language);\r\n },\r\n (error) => {\r\n console.warn(\r\n `Failed to load translation for ${language}, falling back to English`\r\n );\r\n this.loadTranslation('en').subscribe((enTranslations) => {\r\n this.translateService.setTranslation(\r\n language,\r\n enTranslations,\r\n true\r\n );\r\n this.translateService.use(language);\r\n });\r\n }\r\n );\r\n } else {\r\n // Initialize all languages\r\n const loadPromises = this.availableLanguages.map((lang) =>\r\n this.loadTranslation(lang).pipe(\r\n catchError((error) => {\r\n console.warn(`Failed to load translation for ${lang}`);\r\n return of(null);\r\n })\r\n )\r\n );\r\n\r\n forkJoin(loadPromises).subscribe((results) => {\r\n results.forEach((translations, index) => {\r\n if (translations) {\r\n const lang = this.availableLanguages[index];\r\n this.translateService.setTranslation(lang, translations, true);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n private loadTranslation(language: string): Observable<any> {\r\n return this.http.get(`${this.translationPath}${language}.json`);\r\n }\r\n\r\n public setLanguage(language: string): void {\r\n this.translateService.use(language);\r\n }\r\n\r\n public getCurrentLanguage(): string {\r\n return this.translateService.currentLang;\r\n }\r\n\r\n public getAvailableLanguages(): string[] {\r\n return this.availableLanguages;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { QueryBuilderFieldMap, QueryRule } from '../interfaces/ngx-ntk-query-builder.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OperatorsService {\r\n\r\n readonly INPUT_TYPE_STRING = 'string';\r\n readonly INPUT_TYPE_INTEGER = 'integer';\r\n readonly INPUT_TYPE_DOUBLE = 'double';\r\n readonly INPUT_TYPE_TIME = 'time';\r\n readonly INPUT_TYPE_DATE = 'date';\r\n readonly INPUT_TYPE_SELECT = 'select';\r\n readonly INPUT_TYPE_BOOLEAN = 'boolean';\r\n\r\n readonly INPUT_TYPE_MULTI_SELECT = 'multi_select';\r\n\r\n readonly NULLABLE_OPERATORS = ['is_null', 'is_not_null'];\r\n readonly EMPTY_OPERATORS = ['is_empty', 'is_not_empty'];\r\n readonly MULTI_SELECT_OPERATORS = ['in', 'not_in'];\r\n\r\n private readonly defaultOperator = 'equal';\r\n\r\n private readonly operatorsMap: { [key: string]: string[] } = {\r\n string: ['equal', 'not_equal', 'contains', 'not_contains', 'begins_with', 'not_begins_with', 'ends_with', 'not_ends_with'],\r\n integer: ['equal', 'not_equal', 'greater', 'greater_or_equal', 'less', 'less_or_equal'],\r\n double: ['equal', 'not_equal', 'greater', 'greater_or_equal', 'less', 'less_or_equal'],\r\n time: ['equal', 'not_equal', 'greater', 'greater_or_equal', 'less', 'less_or_equal'],\r\n date: ['equal', 'not_equal', 'greater', 'greater_or_equal', 'less', 'less_or_equal'],\r\n select: ['equal', 'not_equal', ...this.MULTI_SELECT_OPERATORS],\r\n boolean: ['equal'],\r\n };\r\n\r\n private readonly operatorsDisplayNames: { [key: string]: string } = {\r\n equal: 'querybuilder.equal',\r\n not_equal: 'querybuilder.not_equal',\r\n contains: 'querybuilder.contains',\r\n not_contains: 'querybuilder.not_contains',\r\n begins_with: 'querybuilder.begins_with',\r\n not_begins_with: 'querybuilder.not_begins_with',\r\n ends_with: 'querybuilder.ends_with',\r\n not_ends_with: 'querybuilder.not_ends_with',\r\n greater: 'querybuilder.greater',\r\n greater_or_equal: 'querybuilder.greater_or_equal',\r\n less: 'querybuilder.less',\r\n less_or_equal: 'querybuilder.less_or_equal',\r\n is_null: 'querybuilder.is_null',\r\n is_not_null: 'querybuilder.is_not_null',\r\n is_empty: 'querybuilder.is_empty',\r\n is_not_empty: 'querybuilder.is_not_empty',\r\n in: 'querybuilder.in',\r\n not_in: 'querybuilder.not_in'\r\n };\r\n private readonly operatorsDisplayNames___old: { [key: string]: string } = {\r\n equal: 'Equals',\r\n not_equal: 'Does not equal',\r\n contains: 'Contains',\r\n not_contains: 'Does not contain',\r\n begins_with: 'Begins with',\r\n not_begins_with: 'Does not begins with',\r\n ends_with: 'Ends with',\r\n not_ends_with: 'Does not end with',\r\n greater: 'Greater than',\r\n greater_or_equal: 'Greater than or equal',\r\n less: 'Less than',\r\n less_or_equal: 'Less than or equal',\r\n is_null: 'Is null',\r\n is_not_null: 'Is not null',\r\n is_empty: 'Is empty',\r\n is_not_empty: 'Is not empty',\r\n in: 'In',\r\n not_in: 'Not in'\r\n };\r\n constructor(private translate: TranslateService,\r\n ) { }\r\n\r\n getOperators(rule: QueryRule, fieldMap: QueryBuilderFieldMap): string[] {\r\n\r\n if (!this.getAvailableTypes().includes(rule.type)) {\r\n console.error('Type of rule is not valid. Please use one of the following types: ' + this.getAvailableTypes().join(', '));\r\n }\r\n\r\n let operators = this.operatorsMap[rule.type];\r\n\r\n // allow nullable\r\n if (fieldMap[rule.field].settings && fieldMap[rule.field].settings.nullableOperators) {\r\n operators = [...operators, ...this.NULLABLE_OPERATORS];\r\n }\r\n\r\n // allow empty\r\n if (fieldMap[rule.field].settings && fieldMap[rule.field].settings.emptyOperators) {\r\n operators = [...operators, ...this.EMPTY_OPERATORS];\r\n }\r\n\r\n return operators;\r\n }\r\n\r\n getDefaultOperator(): string {\r\n return this.defaultOperator;\r\n }\r\n\r\n getOperatorsWithoutInput(): string[] {\r\n return [...this.NULLABLE_OPERATORS, ...this.EMPTY_OPERATORS];\r\n }\r\n\r\n getOperatorDisplayName(operator: string): string {\r\n if (this.operatorsDisplayNames[operator]) {\r\n return this.operatorsDisplayNames[operator];\r\n }\r\n return operator;\r\n }\r\n\r\n private getAvailableTypes(): string[] {\r\n return [\r\n this.INPUT_TYPE_STRING,\r\n this.INPUT_TYPE_INTEGER,\r\n this.INPUT_TYPE_DOUBLE,\r\n this.INPUT_TYPE_TIME,\r\n this.INPUT_TYPE_DATE,\r\n this.INPUT_TYPE_SELECT,\r\n this.INPUT_TYPE_BOOLEAN\r\n ];\r\n }\r\n}\r\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport {\r\n QueryBuilderFieldMap,\r\n QueryBuilderSettings,\r\n QueryField,\r\n QueryRule,\r\n QueryRuleSet,\r\n} from './interfaces/ngx-ntk-query-builder.interfaces';\r\nimport { OperatorsService } from './services/operators.service';\r\nimport { TranslateUiService } from './services/translateUi.service';\r\n\r\n@Component({\r\n selector: 'ngx-ntk-query-builder',\r\n templateUrl: './ngx-ntk-query-builder.component.html',\r\n styleUrls: ['./ngx-ntk-query-builder.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxQueryBuilderComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: false,\r\n})\r\nexport class NgxQueryBuilderComponent implements OnInit, ControlValueAccessor {\r\n private _language = 'en';\r\n @Input() set language(value: string) {\r\n this._language = value;\r\n this.translateUiService.init(value);\r\n this.translate.use(this.language);\r\n }\r\n\r\n get language(): string {\r\n return this._language;\r\n }\r\n @Input() fieldMap: QueryBuilderFieldMap = {};\r\n @Input() settings: QueryBuilderSettings = {};\r\n @Input() disabled = false;\r\n @Input() data: QueryRuleSet = this.getEmptyRuleSetData();\r\n @Input() parent: QueryRuleSet;\r\n @Input() index: number;\r\n\r\n constructor(\r\n public translate: TranslateService,\r\n private translateUiService: TranslateUiService,\r\n public operatorsService: OperatorsService\r\n ) {\r\n translate.setDefaultLang('en');\r\n translate.use('en');\r\n }\r\n ngOnInit(): void {\r\n if (typeof this.fieldMap !== 'object') {\r\n throw new Error('fieldMap must be an object');\r\n }\r\n\r\n if (typeof this.settings !== 'object') {\r\n throw new Error('settings must be an object');\r\n }\r\n }\r\n /**** ControlValueAccessor START ****/\r\n onChange = (data: QueryRuleSet) => {};\r\n onTouched = () => {};\r\n writeValue(data: any): void {\r\n this.data = data || this.getEmptyRuleSetData();\r\n }\r\n registerOnChange(fn: (data: QueryRuleSet) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n /**** ControlValueAccessor END ****/\r\n addRule(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.data.rules.push({\r\n field: this.getFields()[0].value,\r\n type: this.getFields()[0].type,\r\n operator: this.operatorsService.getDefaultOperator(),\r\n });\r\n\r\n this.onChange(this.data);\r\n this.onTouched();\r\n }\r\n\r\n removeRule(index: number): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.data.rules.splice(index, 1);\r\n\r\n this.onChange(this.data);\r\n this.onTouched();\r\n }\r\n\r\n addRuleSet(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.data.rules.push(this.getEmptyRuleSetData());\r\n\r\n this.onChange(this.data);\r\n this.onTouched();\r\n }\r\n\r\n removeRuleSet(index: number): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.hasParentRuleSet()) {\r\n this.parent.rules.splice(index, 1);\r\n }\r\n\r\n this.onChange(this.data);\r\n this.onTouched();\r\n }\r\n\r\n changeCondition(value: string): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.data.condition = value;\r\n\r\n this.onChange(this.data);\r\n this.onTouched();\r\n }\r\n\r\n changeField(rule: QueryRule, index: number): void {\r\n (this.data.rules[index] as QueryRule).type = this.fieldMap[rule.field].type;\r\n (this.data.rules[index] as QueryRule).operator =\r\n this.operatorsService.getDefaultOperator();\r\n (this.data.rules[index] as QueryRule).value = undefined;\r\n\r\n this.onChange(this.data);\r\n this.onTouched();\r\n }\r\n\r\n hasParentRuleSet(): boolean {\r\n return !!this.parent;\r\n }\r\n\r\n getEmptyRuleSetData(): QueryRuleSet {\r\n return { condition: 'and', rules: [] };\r\n }\r\n\r\n getFields(): QueryField[] {\r\n return Object.keys(this.fieldMap).map((value) => {\r\n const field = this.fieldMap[value];\r\n field.value = value;\r\n return field;\r\n });\r\n }\r\n\r\n getInputType(rule: QueryRule): string {\r\n if (!this.fieldMap[rule.field]) {\r\n throw new Error(`No configuration for field '${rule.field}' was found!`);\r\n }\r\n\r\n const type = this.fieldMap[rule.field].type;\r\n\r\n if (\r\n this.operatorsService.getOperatorsWithoutInput().includes(rule.operator)\r\n ) {\r\n return null; // No displayed input\r\n }\r\n\r\n if (this.operatorsService.MULTI_SELECT_OPERATORS.includes(rule.operator)) {\r\n return type === this.operatorsService.INPUT_TYPE_SELECT\r\n ? this.operatorsService.INPUT_TYPE_MULTI_SELECT\r\n : type;\r\n }\r\n\r\n return type;\r\n }\r\n\r\n getRuleOptions(rule: QueryRule): any {\r\n return this.fieldMap[rule.field].options\r\n ? this.fieldMap[rule.field].options\r\n : [];\r\n }\r\n convertToRuleSet(model: QueryRuleSet | QueryRule): QueryRuleSet {\r\n return model as QueryRuleSet;\r\n }\r\n convertToRule(model: QueryRuleSet | QueryRule): QueryRule {\r\n return model as QueryRule;\r\n }\r\n}\r\n","<div class=\"ngx-ntk-query-builder\" [ngClass]=\"{ disabled: disabled }\">\r\n <div class=\"ngx-ntk-query-group-controls\">\r\n <div class=\"ngx-condition-switcher\">\r\n <div>\r\n <input\r\n name=\"{{ 'condition' + index }}\"\r\n type=\"radio\"\r\n class=\"ngx-switch-radio\"\r\n [(ngModel)]=\"data.condition\"\r\n value=\"and\"\r\n #andOption\r\n />\r\n <label\r\n (click)=\"changeCondition(andOption.value)\"\r\n class=\"ngx-ntk-query-control ngx-switch-label\"\r\n >\r\n {{ \"querybuilder.And\" | translate }}</label\r\n >\r\n </div>\r\n <div>\r\n <input\r\n name=\"{{ 'condition' + index }}\"\r\n type=\"radio\"\r\n class=\"ngx-switch-radio\"\r\n [(ngModel)]=\"data.condition\"\r\n value=\"or\"\r\n #orOption\r\n />\r\n <label\r\n (click)=\"changeCondition(orOption.value)\"\r\n class=\"ngx-ntk-query-control ngx-switch-label\"\r\n >{{ \"querybuilder.Or\" | translate }}</label\r\n >\r\n </div>\r\n </div>\r\n <div class=\"ngx-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ngx-ntk-query-control ngx-ntk-query-btn ngx-ntk-query-btn-add\"\r\n (click)=\"addRule()\"\r\n >\r\n {{ \"querybuilder.AddRule\" | translate }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"ngx-ntk-query-control ngx-ntk-query-btn ngx-ntk-query-btn-add\"\r\n (click)=\"addRuleSet()\"\r\n >\r\n {{ \"querybuilder.AddGroup\" | translate }}\r\n </button>\r\n <ng-container *ngIf=\"hasParentRuleSet()\">\r\n <button\r\n type=\"button\"\r\n class=\"ngx-ntk-query-control ngx-ntk-query-btn ngx-ntk-query-btn-remove\"\r\n (click)=\"removeRuleSet(index)\"\r\n >\r\n {{ \"querybuilder.Remove\" | translate }}\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"ngx-ntk-query-conditions\">\r\n <ul *ngIf=\"data.rules && data.rules.length > 0\">\r\n <li *ngFor=\"let child of data.rules; let i = index\" class=\"ngx-connector\">\r\n <!-- rule -->\r\n <ng-container *ngIf=\"!child['rules']\">\r\n <div class=\"ngx-rule-wrap\">\r\n <div class=\"ngx-rule\">\r\n <div class=\"ngx-field\">\r\n <select\r\n class=\"ngx-ntk-query-control ngx-ntk-query-select\"\r\n [(ngModel)]=\"child['field']\"\r\n (change)=\"changeField(convertToRule(child), i)\"\r\n [disabled]=\"disabled\"\r\n >\r\n <option\r\n *ngFor=\"let field of getFields()\"\r\n [value]=\"field.value\"\r\n >\r\n {{ field.name }}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"ngx-operator\">\r\n <select\r\n class=\"ngx-ntk-query-control ngx-ntk-query-select\"\r\n [(ngModel)]=\"child['operator']\"\r\n [disabled]=\"disabled\"\r\n >\r\n <option\r\n *ngFor=\"\r\n let operator of operatorsService.getOperators(\r\n convertToRule(child),\r\n fieldMap\r\n )\r\n \"\r\n [value]=\"operator\"\r\n >\r\n {{\r\n this.translate.get(\r\n operatorsService.getOperatorDisplayName(operator)\r\n ) | async\r\n }}\r\n </option>\r\n </select>\r\n </div>\r\n <div\r\n class=\"ngx-value\"\r\n [ngSwitch]=\"getInputType(convertToRule(child))\"\r\n >\r\n <!-- STING -->\r\n <ng-container\r\n *ngSwitchCase=\"operatorsService.INPUT_TYPE_STRING\"\r\n >\r\n <input\r\n class=\"ngx-ntk-query-control ngx-ntk-query-input\"\r\n type=\"text\"\r\n [(ngModel)]=\"child['value']\"\r\n [disabled]=\"disabled\"\r\n />\r\n </ng-container>\r\n\r\n <!-- INTEGER -->\r\n <ng-container\r\n *ngSwitchCase=\"operatorsService.INPUT_TYPE_INTEGER\"\r\n >\r\n <input\r\n class=\"ngx-ntk-query-control ngx-ntk-query-input\"\r\n type=\"number\"\r\n [(ngModel)]=\"child['value']\"\r\n [disabled]=\"disabled\"\r\n />\r\n </ng-container>\r\n\r\n <!-- DOUBLE -->\r\n <ng-container\r\n *ngSwitchCase=\"operatorsService.INPUT_TYPE_DOUBLE\"\r\n >\r\n <input\r\n class=\"ngx-ntk-query-control ngx-ntk-query-input\"\r\n type=\"number\"\r\n [(ngModel)]=\"child['value']\"\r\n [disabled]=\"disabled\"\r\n />\r\n </ng-container>\r\n\r\n <!-- DATE -->\r\n <ng-container *ngSwitchCase=\"operatorsService.INPUT_TYPE_DATE\">\r\n <input\r\n class=\"ngx-ntk-query-control ngx-ntk-query-input\"\r\n type=\"date\"\r\n [(ngModel)]=\"child['value']\"\r\n [disabled]=\"disabled\"\r\n />\r\n </ng-container>\r\n\r\n <!-- TIME -->\r\n <ng-container *ngSwitchCase=\"operatorsService.INPUT_TYPE_TIME\">\r\n <input\r\n class=\"ngx-ntk-query-control ngx-ntk-query-input\"\r\n type=\"time\"\r\n [(ngModel)]=\"child['value']\"\r\n [disabled]=\"disabled\"\r\n />\r\n </ng-container>\r\n\r\n <!-- BOOLEAN -->\r\n <ng-container\r\n *ngSwitchCase=\"operatorsService.INPUT_TYPE_BOOLEAN\"\r\n >\r\n <div class=\"ngx-ntk-query-boolean-wrap\">\r\n <div class=\"ngx-boolean\">\r\n <input\r\n id=\"{{ 'booleanYes' + i }}\"\r\n name=\"{{ 'boolean' + i }}\"\r\n type=\"radio\"\r\n class=\"ngx-radio-btn\"\r\n [(ngModel)]=\"child['value']\"\r\n [value]=\"true\"\r\n [disabled]=\"disabled\"\r\n />\r\n <label for=\"{{ 'booleanYes' + i }}\" class=\"ngx-label\">{{\r\n \"querybuilder.Yes\" | translate\r\n }}</label>\r\n </div>\r\n <div class=\"ngx-boolean\">\r\n <input\r\n id=\"{{ 'booleanNo' + i }}\"\r\n name=\"{{ 'boolean' + i }}\"\r\n type=\"radio\"\r\n class=\"ngx-radio-btn\"\r\n [(ngModel)]=\"child['value']\"\r\n [value]=\"false\"\r\n [disabled]=\"disabled\"\r\n />\r\n <label for=\"{{ 'booleanNo' + i }}\" class=\"ngx-label\">{{\r\n \"querybuilder.No\" | translate\r\n }}</label>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- SELECT -->\r\n <ng-container\r\n *ngSwitchCase=\"operatorsService.INPUT_TYPE_SELECT\"\r\n >\r\n <select\r\n class=\"ngx-ntk-query-control ngx-ntk-query-select\"\r\n [(ngModel)]=\"child['value']\"\r\n [disabled]=\"disabled\"\r\n >\r\n <option\r\n *ngFor=\"let opt of getRuleOptions(convertToRule(child))\"\r\n [value]=\"opt.value\"\r\n >\r\n {{ opt.name }}\r\n </option>\r\n </select>\r\n </ng-container>\r\n\r\n <!-- MULTI_SELECT -->\r\n <ng-container\r\n *ngSwitchCase=\"operatorsService.INPUT_TYPE_MULTI_SELECT\"\r\n >\r\n <select\r\n class=\"ngx-ntk-query-control ngx-ntk-query-multi-select\"\r\n [(ngModel)]=\"child['value']\"\r\n [disabled]=\"disabled\"\r\n multiple\r\n >\r\n <option\r\n *ngFor=\"let opt of getRuleOptions(convertToRule(child))\"\r\n [ngValue]=\"opt.value\"\r\n >\r\n {{ opt.name }}\r\n </option>\r\n </select>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"ngx-rule-controls\">\r\n <button\r\n type=\"button\"\r\n class=\"ngx-ntk-query-control ngx-ntk-query-btn ngx-ntk-query-btn-remove\"\r\n (click)=\"removeRule(i)\"\r\n >\r\n {{ \"querybuilder.Remove\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- rule set -->\r\n <ng-container *ngIf=\"child['rules']\">\r\n <ngx-ntk-query-builder\r\n [data]=\"convertToRuleSet(child)\"\r\n [fieldMap]=\"fieldMap\"\r\n [parent]=\"data\"\r\n [disabled]=\"disabled\"\r\n [index]=\"i\"\r\n >\r\n </ngx-ntk-query-builder>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { NgxQueryBuilderComponent } from './ngx-ntk-query-builder.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxQueryBuilderComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TranslateModule.forChild({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: (http: HttpClient) => new TranslateHttpLoader(http, '/assets/i18n/querybuilder/', '.json'),\r\n deps: [HttpClient]\r\n }\r\n }),\r\n ],\r\n exports: [\r\n NgxQueryBuilderComponent,\r\n ],\r\n providers: [\r\n TranslateService,\r\n ]\r\n})\r\nexport class NgxNtkQueryBuilderModule {\r\n static forRoot(): ModuleWithProviders<NgxNtkQueryBuilderModule> {\r\n return {\r\n ngModule: NgxNtkQueryBuilderModule,\r\n providers: [TranslateService]\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.TranslateUiService","i3.OperatorsService"],"mappings":"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"}