{"version":3,"file":"narik-ui-material.mjs","sources":["../../../projects/narik-ui-material/src/lib/injectionTokens.ts","../../../projects/narik-ui-material/src/lib/base/narik-mat-form-field.ts","../../../projects/narik-ui-material/src/lib/base/narik-mat-auto-complete-base.ts","../../../projects/narik-ui-material/src/lib/input-output-items.ts","../../../projects/narik-ui-material/src/lib/narik-mat-auto-complete/narik-mat-auto-complete.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-auto-complete/narik-mat-auto-complete.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-auto-complete/narik-mat-auto-complete.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-busy-indicator/narik-mat-busy-indicator.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-busy-indicator/narik-mat-busy-indicator.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-busy-indicator/narik-mat-busy-indicator.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-button/narik-mat-button.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-button/narik-mat-button.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-button/narik-mat-button.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-check-box/narik-mat-checkbox.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-check-box/narik-mat-checkbox.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-check-box/narik-mat-checkbox.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-check-box-list/narik-mat-checkbox-list.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-check-box-list/narik-mat-checkbox-list.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-check-box-list/narik-mat-checkbox-list.module.ts","../../../projects/narik-ui-material/src/lib/data-source/mat-lazy-data-source.ts","../../../projects/narik-ui-material/src/lib/data-source/mat-local-data-source.ts","../../../projects/narik-ui-material/src/lib/base/narik-mat-input-base.ts","../../../projects/narik-ui-material/src/lib/narik-mat-input/narik-mat-input.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-input/narik-mat-input.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-data-table/narik-mat-data-table.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-data-table/narik-mat-data-table.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-data-table/paginatorI18n.ts","../../../projects/narik-ui-material/src/lib/narik-mat-input/narik-mat-input.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-data-table/narik-mat-data-table.module.ts","../../../projects/narik-ui-material/src/lib/base/narik-mat-date-picker-base.ts","../../../projects/narik-ui-material/src/lib/narik-mat-date-picker/narik-mat-date-picker.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-date-picker/narik-mat-date-picker.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-date-picker/narik-mat-date-picker.module.ts","../../../projects/narik-ui-material/src/lib/base/narik-mat-data-table-select-base.ts","../../../projects/narik-ui-material/src/lib/narik-mat-toolbar/narik-mat-toolbar.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-toolbar/narik-mat-toolbar.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-data-table-select/narik-mat-data-table-select.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-data-table-select/narik-mat-data-table-select.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-toolbar/narik-mat-toolbar.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-data-table-select/narik-mat-data-table-select.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-radio/narik-mat-radio-group.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-radio/narik-mat-radio-group.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-radio/narik-mat-radio.module.ts","../../../projects/narik-ui-material/src/lib/base/narik-mat-select-base.ts","../../../projects/narik-ui-material/src/lib/narik-mat-select/narik-mat-select.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-select/narik-mat-select.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-select/narik-mat-select.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-dynamic-form/narik-mat-dynamic-form.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-dynamic-form/narik-mat-dynamic-form.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-dynamic-form/narik-mat-dynamic-form.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-dialog/narik-mat-dialog-container.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-dialog/narik-mat-dialog-container.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-dialog/narik-mat-input-dialog.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-dialog/narik-mat-input-dialog.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-dialog/narik-mat-message-dialog.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-dialog/narik-mat-message-dialog.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-dialog/narik-mat-dialog.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-treeview/tree-node-dataBase.ts","../../../projects/narik-ui-material/src/lib/narik-mat-treeview/narik-mat-treeview.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-treeview/narik-mat-treeview.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-treeview/narik-mat-treeview.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-core/narik-mat-core.module.ts","../../../projects/narik-ui-material/src/lib/narik-mat-tab-outlet/narik-mat-tab-outlet-close-header.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-tab-outlet/narik-mat-tab-outlet-close-header.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-tab-outlet/narik-mat-tab-outlet.component.ts","../../../projects/narik-ui-material/src/lib/narik-mat-tab-outlet/narik-mat-tab-outlet.component.html","../../../projects/narik-ui-material/src/lib/narik-mat-tab-outlet/narik-mat-tab-outlet.module.ts","../../../projects/narik-ui-material/src/lib/narik-ui-material.module.ts","../../../projects/narik-ui-material/src/lib/base/narik-mat-list-form.ts","../../../projects/narik-ui-material/src/lib/base/narik-mat-edit-form.ts","../../../projects/narik-ui-material/src/public_api.ts","../../../projects/narik-ui-material/src/narik-ui-material.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const FORM_ITEM_DEFAULT_CLASS = new InjectionToken<string>(\r\n    'FormItemDefaultClass'\r\n);\r\n","import { MetaDataService, MODULE_UI_KEY } from '@narik/infrastructure';\r\nimport { NarikInject } from '@narik/core';\r\nimport { FORM_ITEM_DEFAULT_CLASS } from './../injectionTokens';\r\nimport { Input, Injector, Directive } from '@angular/core';\r\n\r\nimport {\r\n    FloatLabelType,\r\n    MatFormFieldAppearance,\r\n    MAT_FORM_FIELD_DEFAULT_OPTIONS,\r\n} from '@angular/material/form-field';\r\n\r\n@Directive()\r\nexport class NarikMatFormFieldInput {\r\n    _cssClass: string;\r\n    _floatLabel: FloatLabelType = 'auto';\r\n    _appearance: MatFormFieldAppearance;\r\n    _hintLabel: string;\r\n    _suffixIcon: string;\r\n    _startHint: any;\r\n    _endHint: any;\r\n    _suffixContent: any;\r\n    _prefixContent: any;\r\n    _prefixIcon: any;\r\n\r\n    displayErrorMode: 'hint' | 'icon' | 'none' = 'icon';\r\n\r\n    @Input()\r\n    set prefixIcon(value: any) {\r\n        this._prefixIcon = value;\r\n    }\r\n    get prefixIcon(): any {\r\n        return this._prefixIcon;\r\n    }\r\n\r\n    @Input()\r\n    set prefixContent(value: any) {\r\n        this._prefixContent = value;\r\n    }\r\n    get prefixContent(): any {\r\n        return this._prefixContent;\r\n    }\r\n\r\n    @Input()\r\n    set suffixContent(value: any) {\r\n        this._suffixContent = value;\r\n    }\r\n    get suffixContent(): any {\r\n        return this._suffixContent;\r\n    }\r\n\r\n    @Input()\r\n    set endHint(value: any) {\r\n        this._endHint = value;\r\n    }\r\n    get endHint(): any {\r\n        return this._endHint;\r\n    }\r\n\r\n    @Input()\r\n    set startHint(value: any) {\r\n        this._startHint = value;\r\n    }\r\n    get startHint(): any {\r\n        return this._startHint;\r\n    }\r\n\r\n    @Input()\r\n    set suffixIcon(value: string) {\r\n        this._suffixIcon = value;\r\n    }\r\n\r\n    get suffixIcon(): string {\r\n        return this._suffixIcon;\r\n    }\r\n\r\n    @Input()\r\n    set hintLabel(value: string) {\r\n        this._hintLabel = value;\r\n    }\r\n    get hintLabel(): string {\r\n        return this._hintLabel;\r\n    }\r\n\r\n    @Input()\r\n    set appearance(value: MatFormFieldAppearance) {\r\n        this._appearance = value;\r\n    }\r\n    get appearance(): MatFormFieldAppearance {\r\n        return this._appearance;\r\n    }\r\n\r\n    @Input()\r\n    set floatLabel(value: FloatLabelType) {\r\n        this._floatLabel = value;\r\n    }\r\n    get floatLabel(): FloatLabelType {\r\n        return this._floatLabel;\r\n    }\r\n\r\n    @Input()\r\n    set cssClass(value: string) {\r\n        this._cssClass = value;\r\n    }\r\n    get cssClass(): string {\r\n        return this._cssClass;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        // const _defaultLabelOption = injector.get(MAT_LABEL_GLOBAL_OPTIONS, null);\r\n\r\n        const _defaultFormItemClass = injector.get(\r\n            FORM_ITEM_DEFAULT_CLASS,\r\n            null\r\n        );\r\n        const _defaults = injector.get(MAT_FORM_FIELD_DEFAULT_OPTIONS, null);\r\n\r\n        if (_defaultFormItemClass) {\r\n            this.cssClass = _defaultFormItemClass;\r\n        }\r\n        this.appearance =\r\n            _defaults && _defaults.appearance ? _defaults.appearance : 'legacy';\r\n\r\n        this.floatLabel =\r\n            _defaults && _defaults.floatLabel ? _defaults.floatLabel : 'auto';\r\n\r\n        const metaDataService = injector.get(MetaDataService, undefined);\r\n        const containerModuleKey = injector.get(MODULE_UI_KEY, 'narik');\r\n\r\n        const dfOptions = metaDataService.getInformation<any>(\r\n            'uiDefaultOptions',\r\n            containerModuleKey,\r\n            'form-field'\r\n        );\r\n\r\n        if (dfOptions && dfOptions.value && dfOptions.value.displayErrorMode) {\r\n            this.displayErrorMode = dfOptions.value.displayErrorMode;\r\n        }\r\n    }\r\n}\r\n\r\nexport const NARIK_MAT_FORM_INPUTS: string[] = [\r\n    'prefixIcon',\r\n    'prefixContent',\r\n    'suffixContent',\r\n    'endHint',\r\n    'startHint',\r\n    'cssClass',\r\n    'floatLabel',\r\n    'appearance',\r\n    'hintLabel',\r\n    'suffixIcon',\r\n];\r\n","import { Mixin } from '@narik/common';\r\nimport { NarikAutoComplete } from '@narik/ui-core';\r\n\r\nimport { NarikMatFormFieldInput } from './narik-mat-form-field';\r\n\r\nexport interface INarikMatAutoCompleteBase\r\n    extends NarikMatFormFieldInput,\r\n        NarikAutoComplete {}\r\n\r\nexport class NarikMatAutoCompleteBase extends Mixin<INarikMatAutoCompleteBase>(\r\n    NarikAutoComplete,\r\n    NarikMatFormFieldInput\r\n) {}\r\n{\r\n}\r\n","export const NARIK_UI_COMPONENT_INPUTS: string[] = ['options'];\r\n\r\nexport const NARIK_UI_FORM_INPUTS: string[] = [\r\n    'id',\r\n    'name',\r\n    'label',\r\n    'disabled',\r\n    'required',\r\n    'readOnly',\r\n    'placeHolder',\r\n    ...NARIK_UI_COMPONENT_INPUTS,\r\n];\r\n\r\nexport const NARIK_DATA_ORIENTED_OUTPUTS: string[] = [\r\n    'dataChange',\r\n    'selectedItemChange',\r\n];\r\n\r\nexport const NARIK_DATA_ORIENTED_INPUTS: string[] = [\r\n    'listenForDataChange',\r\n    'dataSource',\r\n    'dataKey',\r\n    'dataUrl',\r\n    'dataInfo',\r\n    'dataProviderKey',\r\n    'dataParameters',\r\n    'moduleKey',\r\n    'dataMethod',\r\n    'dataUrlMethod',\r\n    ...NARIK_UI_FORM_INPUTS,\r\n];\r\n\r\nexport const NARIK_DATA_DISPLAY_VALUE_OUTPUTS: string[] = [\r\n    ...NARIK_DATA_ORIENTED_OUTPUTS,\r\n];\r\n\r\nexport const NARIK_DATA_DISPLAY_VALUE_INPUTS: string[] = [\r\n    'displayField',\r\n    'valueField',\r\n    ...NARIK_DATA_ORIENTED_INPUTS,\r\n];\r\n\r\nexport const NARIK_AUTOCOMPLETE_INPUTS: string[] = [\r\n    'displayText',\r\n    'minSearchLength',\r\n    'isLazyLoadData',\r\n];\r\n\r\nexport const NARIK_CHECKBOX_INPUTS: string[] = ['tag', ...NARIK_UI_FORM_INPUTS];\r\n\r\nexport const NARIK_SELECT_INPUTS: string[] = ['multiple'];\r\n\r\nexport const NARIK_DATA_TABLE_SELECT_INPUTS: string[] = [\r\n    ...NARIK_SELECT_INPUTS,\r\n    'gridOptions',\r\n];\r\n\r\nexport const NARIK_DATE_PICKER_INPUTS: string[] = [...NARIK_UI_FORM_INPUTS];\r\n\r\nexport const NARIK_INPUT_INPUTS: string[] = [\r\n    'maxlength',\r\n    'type',\r\n    'mask',\r\n    'icon',\r\n    'displayStatus',\r\n    ...NARIK_UI_FORM_INPUTS,\r\n];\r\n","import { DataProviderService, MODULE_DATA_KEY } from '@narik/infrastructure';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { of } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { map } from 'rxjs/operators';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport {\r\n    Component,\r\n    ElementRef,\r\n    forwardRef,\r\n    Injector,\r\n    OnInit,\r\n    ViewChild,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { NarikMatAutoCompleteBase } from '../base/narik-mat-auto-complete-base';\r\nimport { NARIK_MAT_FORM_INPUTS } from '../base/narik-mat-form-field';\r\nimport {\r\n    NARIK_DATA_DISPLAY_VALUE_OUTPUTS,\r\n    NARIK_DATA_DISPLAY_VALUE_INPUTS,\r\n    NARIK_AUTOCOMPLETE_INPUTS,\r\n} from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-autocomplete  , narik-autocomplete ',\r\n    templateUrl: 'narik-mat-auto-complete.component.html',\r\n    styleUrls: ['narik-mat-auto-complete.component.css'],\r\n    inputs: [\r\n        ...NARIK_MAT_FORM_INPUTS,\r\n        ...NARIK_DATA_DISPLAY_VALUE_INPUTS,\r\n        ...NARIK_AUTOCOMPLETE_INPUTS,\r\n    ],\r\n    outputs: [...NARIK_DATA_DISPLAY_VALUE_OUTPUTS],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NarikMatAutoComplete),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatAutoComplete\r\n    extends NarikMatAutoCompleteBase\r\n    implements OnInit {\r\n    filteredData: Observable<any[]>;\r\n    optionData: any[] = [];\r\n    textChanged = new Subject<string>();\r\n\r\n    @ViewChild('input', { static: true })\r\n    input: ElementRef;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    private _filter(value: string): string[] {\r\n        const filterValue = value.toLowerCase();\r\n\r\n        return this.optionData.filter(\r\n            (item) =>\r\n                item[this.displayField].toLowerCase().indexOf(filterValue) === 0\r\n        );\r\n    }\r\n\r\n    protected useData(data: any[]) {\r\n        this.optionData = data;\r\n        if (!this.isLazyLoadData) {\r\n            this.textChanged.next(\r\n                this.input ? this.input.nativeElement.value : null\r\n            );\r\n        }\r\n        this.setDisplayText();\r\n    }\r\n\r\n    keyUp(key) {\r\n        if (key.keyCode !== 13) {\r\n            this.textChanged.next(this.input.nativeElement.value);\r\n            if (!this.input.nativeElement.value && !this.required) {\r\n                this.value = undefined;\r\n            }\r\n        }\r\n    }\r\n    ngOnInit() {\r\n        this.loadDataOnInit = !this.isLazyLoadData;\r\n        super.ngOnInit();\r\n        if (!this.isLazyLoadData) {\r\n            this.filteredData = this.textChanged.pipe(\r\n                startWith(null),\r\n                debounceTime(300),\r\n                distinctUntilChanged(),\r\n                map((filter: string | null) =>\r\n                    filter && filter.length >= this.minSearchLength\r\n                        ? this._filter(filter)\r\n                        : this.minSearchLength === 0\r\n                        ? this.optionData.slice()\r\n                        : []\r\n                )\r\n            );\r\n        } else {\r\n            const dataProviderService: DataProviderService = this.injector.get(\r\n                DataProviderService\r\n            );\r\n            const dataInfo = this.createDataInfo();\r\n            dataInfo.dataMethod = 'POST';\r\n            dataInfo.actionType = 'COMPLETE';\r\n\r\n            if (!dataInfo.moduleKey) {\r\n                dataInfo.moduleKey = this.injector.get(MODULE_DATA_KEY);\r\n            }\r\n            this.filteredData = this.textChanged.pipe(\r\n                startWith(null),\r\n                debounceTime(300),\r\n                distinctUntilChanged(),\r\n                tap((filter) => {\r\n                    if (filter && filter.length >= this.minSearchLength) {\r\n                        this.dataIsLoading = true;\r\n                    }\r\n                }),\r\n                switchMap((filter) => {\r\n                    dataInfo.dataParameters = {\r\n                        filter: filter,\r\n                    };\r\n                    return filter && filter.length >= this.minSearchLength\r\n                        ? dataProviderService.getData(dataInfo).pipe(\r\n                              tap(\r\n                                  (result: any[]) => (this.optionData = result)\r\n                              ),\r\n                              finalize(() => (this.dataIsLoading = false))\r\n                          )\r\n                        : of([]);\r\n                })\r\n            );\r\n        }\r\n    }\r\n\r\n    optionSelected(e) {\r\n        this.input.nativeElement.value = e.option.viewValue;\r\n        this.value = e.option.value;\r\n    }\r\n\r\n    setDisplayText() {\r\n        if (this.value) {\r\n            const item = this.optionData.filter(\r\n                (x) => x[this.valueField] === this.value\r\n            )[0];\r\n            this.input.nativeElement.value = item\r\n                ? item[this.displayField]\r\n                : this.displayText;\r\n        } else {\r\n            this.input.nativeElement.value = '';\r\n        }\r\n    }\r\n\r\n    protected valueChanged(newValue, oldValue) {\r\n        if (newValue !== oldValue) {\r\n            this.setDisplayText();\r\n        }\r\n    }\r\n}\r\n","<mat-form-field\n  [class]=\"cssClass\"\n  [floatLabel]=\"floatLabel\"\n  [appearance]=\"appearance\"\n  [hintLabel]=\"hintLabel\"\n  [ngClass]=\"{ 'narik-mat-form-field-invalid': !!errors }\"\n>\n  <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n  <input\n    [required]=\"required\"\n    [matAutocomplete]=\"auto\"\n    #input\n    matInput\n    placeholder=\"{{ placeHolder }}\"\n    [name]=\"name\"\n    (keyup)=\"keyUp($event)\"\n    (blur)=\"setDisplayText()\"\n    type=\"text\"\n    (blur)=\"onBlur($event)\"\n  />\n\n  <mat-autocomplete\n    #auto=\"matAutocomplete\"\n    (optionSelected)=\"optionSelected($event)\"\n  >\n    <mat-option\n      *ngFor=\"let item of filteredData | async\"\n      [value]=\"item[valueField]\"\n    >\n      {{ item[displayField] }}\n    </mat-option>\n  </mat-autocomplete>\n\n  <mat-spinner\n    class=\"select-clear\"\n    matSuffix\n    *ngIf=\"dataIsLoading\"\n    mode=\"indeterminate\"\n    diameter=\"17\"\n  ></mat-spinner>\n  <mat-icon *ngIf=\"suffixIcon\" matSuffix>{{ suffixIcon }}</mat-icon>\n  <mat-icon *ngIf=\"prefixIcon\" matPrefix>{{ prefixIcon }}</mat-icon>\n  <mat-hint *ngIf=\"startHint\">\n    {{ startHint }}\n  </mat-hint>\n  <mat-hint *ngIf=\"!!errors && displayErrorMode === 'hint'\">\n    <span class=\"mat-error\">{{ errors }}</span>\n  </mat-hint>\n  <mat-icon\n    *ngIf=\"!!errors && displayErrorMode === 'icon'\"\n    color=\"error\"\n    matTooltip=\"{{ errors }}\"\n    matSuffix\n    matTooltipClass=\"tooltip-red\"\n    >error_outline</mat-icon\n  >\n\n  <mat-hint *ngIf=\"endHint\" align=\"end\">{{ endHint }}</mat-hint>\n\n  <span *ngIf=\"prefixContent\" matPrefix>{{ prefixContent }}</span>\n  <span *ngIf=\"suffixContent\" matSuffix>{{ suffixContent }}</span>\n</mat-form-field>\n","import { NarikMatAutoComplete } from './narik-mat-auto-complete.component';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatIconModule,\r\n        MatAutocompleteModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        MatProgressSpinnerModule,\r\n        MatTooltipModule,\r\n    ],\r\n    declarations: [NarikMatAutoComplete],\r\n    exports: [NarikMatAutoComplete],\r\n    providers: [],\r\n})\r\nexport class NarikMatAutoCompleteModule {}\r\n","import { Component, forwardRef, Input, HostBinding } from '@angular/core';\r\nimport { BusyIndicator } from '@narik/app-core';\r\n\r\n@Component({\r\n    selector: 'narik-mat-busy-indicator , narik-busy-indicator',\r\n    templateUrl: 'narik-mat-busy-indicator.component.html',\r\n    styleUrls: ['narik-mat-busy-indicator.component.css'],\r\n    providers: [\r\n        {\r\n            provide: BusyIndicator,\r\n            useExisting: forwardRef(() => NarikMatBusyIndicator),\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatBusyIndicator implements BusyIndicator {\r\n    busyMessage: string;\r\n\r\n    @HostBinding('style.display') public display = 'block';\r\n    @HostBinding('style.position') public position = 'relative';\r\n\r\n    @HostBinding('style.min-height')\r\n    @Input()\r\n    public minHeight = '100px';\r\n\r\n    @Input()\r\n    isBusy: boolean;\r\n\r\n    @Input()\r\n    diameter = 70;\r\n\r\n    setBusy(newState: boolean, msg?: string) {\r\n        this.isBusy = newState;\r\n    }\r\n}\r\n","<ng-content></ng-content>\n<div class=\"loading-panel\" *ngIf=\"isBusy\"></div>\n<div *ngIf=\"isBusy\" id=\"loader-wrapper\">\n  <mat-spinner [diameter]=\"diameter\" class='busy-indicator-spinner'></mat-spinner>\n</div>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NarikMatBusyIndicator } from './narik-mat-busy-indicator.component';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, MatProgressSpinnerModule],\r\n    declarations: [NarikMatBusyIndicator],\r\n    exports: [NarikMatBusyIndicator],\r\n    providers: [],\r\n})\r\nexport class NarikMatBusyIndicatorModule {}\r\n","import { NarikInject } from '@narik/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n    Component,\r\n    OnInit,\r\n    AfterViewInit,\r\n    ViewChild,\r\n    Renderer2,\r\n    HostListener,\r\n    Injector,\r\n} from '@angular/core';\r\nimport {\r\n    NarikButton,\r\n    BUTTON_DEFAULT_OPTIONS,\r\n    ButtonDefaultOptions,\r\n} from '@narik/ui-core';\r\nimport { NARIK_UI_COMPONENT_INPUTS } from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-button , narik-button ',\r\n    templateUrl: 'narik-mat-button.component.html',\r\n    inputs: [...NARIK_UI_COMPONENT_INPUTS],\r\n})\r\nexport class NarikMatButtonComponent extends NarikButton implements OnInit {\r\n    @NarikInject(BUTTON_DEFAULT_OPTIONS, {\r\n        buttonStyle: 'mat-raised-button',\r\n        busyFontIcon: 'fa-spinner',\r\n    })\r\n    defaultOptions: ButtonDefaultOptions;\r\n\r\n    @HostListener('click', ['$event'])\r\n    public onClick(event: any): void {\r\n        event.stopPropagation();\r\n    }\r\n\r\n    constructor(private renderer: Renderer2, injector: Injector) {\r\n        super(injector);\r\n        this.buttonStyle = this.defaultOptions.buttonStyle;\r\n        this.busyFontIcon = this.defaultOptions.busyFontIcon;\r\n        this.cssClass = this.defaultOptions.cssClass;\r\n    }\r\n\r\n    buttonClick(e) {\r\n        if (!this.disable && !this.isBusy) {\r\n            this.nClick.emit({\r\n                sender: this,\r\n                event: e,\r\n            });\r\n        }\r\n    }\r\n}\r\n","<button  matTooltip=\"{{ (tooltip ?  (tooltip | translate) : '') + ( options.appendShortcutToTooltip && shortcut ? '(' + (shortcut | shortcut) +')' : '' )  }}\" [ngClass]='cssClass'\n  [color]=\"color\" [disabled]=\"disable || isBusy\" (click)=\"buttonClick($event)\" *ngIf=\"!buttonStyle || buttonStyle === 'mat-button'\" mat-button>\n  <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n</button>\n<button  [disabled]=\"disable || isBusy\" matTooltip=\"{{ (tooltip ?  (tooltip | translate) : '') + (options.appendShortcutToTooltip && shortcut ? '(' + (shortcut | shortcut) +')' : '' )  }}\" [ngClass]='cssClass' [color]=\"color\"\n  (click)=\"buttonClick($event)\" *ngIf=\"buttonStyle === 'mat-raised-button'\" mat-raised-button>\n  <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n</button>\n<button  [disabled]=\"disable || isBusy\" matTooltip=\"{{ (tooltip ?  (tooltip | translate) : '') + (options.appendShortcutToTooltip && shortcut ? '(' + (shortcut | shortcut) +')' : '' )  }}\" [ngClass]='cssClass' [color]=\"color\"\n  (click)=\"buttonClick($event)\" *ngIf=\"buttonStyle === 'mat-stroked-button'\" mat-stroked-button>\n  <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n</button>\n<button  [disabled]=\"disable || isBusy\" matTooltip=\"{{ (tooltip ?  (tooltip | translate) : '') + (options.appendShortcutToTooltip && shortcut ? '(' + (shortcut | shortcut) +')' : '' )  }}\" [ngClass]='cssClass' [color]=\"color\"\n  (click)=\"buttonClick($event)\" *ngIf=\"buttonStyle === 'mat-flat-button'\" mat-flat-button>\n  <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n</button>\n<button  [disabled]=\"disable || isBusy\" matTooltip=\"{{ (tooltip ?  (tooltip | translate) : '') + (options.appendShortcutToTooltip && shortcut ? '(' + (shortcut | shortcut) +')' : '' )  }}\" [ngClass]='cssClass' [color]=\"color\"\n  (click)=\"buttonClick($event)\" *ngIf=\"buttonStyle === 'mat-icon-button'\" mat-icon-button>\n  <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n</button>\n<button  [disabled]=\"disable || isBusy\" matTooltip=\"{{ (tooltip ?  (tooltip | translate) : '') + (options.appendShortcutToTooltip && shortcut ? '(' + (shortcut | shortcut) +')' : '' )  }}\" [ngClass]='cssClass' [color]=\"color\"\n  (click)=\"buttonClick($event)\" *ngIf=\"buttonStyle === 'mat-fab'\" mat-fab>\n  <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n</button>\n<button  [disabled]=\"disable || isBusy\" matTooltip=\"{{ (tooltip ?  (tooltip | translate) : '') + (options.appendShortcutToTooltip && shortcut ? '(' + (shortcut | shortcut) +')' : '' )  }}\" [ngClass]='cssClass' [color]=\"color\"\n  (click)=\"buttonClick($event)\" *ngIf=\"buttonStyle === 'mat-mini-fab'\" mat-mini-fab>\n  <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n</button>\n\n<ng-template #buttonContent>\n  <i *ngIf=\"isBusy\" [ngClass]=\"busyFontIcon\" class=\"fas fa-spin\"></i>\n  <i *ngIf=\"fontIcon\" class=\"fas\" [ngClass]=\"fontIcon\"></i>\n  <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n  <ng-container *ngIf=\"buttonStyle !== 'mat-icon-button'\">\n    {{ isBusy && busyLabel ? busyLabel : label }}\n  </ng-container>\n</ng-template>","import { NarikCommonModule } from '@narik/common';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { NarikMatButtonComponent } from './narik-mat-button.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        MatButtonModule,\r\n        MatIconModule,\r\n        MatTooltipModule,\r\n        TranslateModule,\r\n        NarikCommonModule,\r\n    ],\r\n    declarations: [NarikMatButtonComponent],\r\n    exports: [NarikMatButtonComponent],\r\n    providers: [],\r\n})\r\nexport class NarikMatButtonModule {}\r\n","import { NarikCheckBox } from '@narik/ui-core';\r\n\r\nimport { Input, Component, forwardRef, Injector } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NARIK_CHECKBOX_INPUTS } from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-checkbox , narik-checkbox',\r\n    templateUrl: 'narik-mat-checkbox.component.html',\r\n    inputs: [...NARIK_CHECKBOX_INPUTS],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NarikMatCheckBox),\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: NarikCheckBox,\r\n            useExisting: forwardRef(() => NarikMatCheckBox),\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatCheckBox extends NarikCheckBox {\r\n    _cssClass: string;\r\n    _labelPosition: 'before' | 'after';\r\n    _indeterminate: boolean;\r\n    _color: 'primary' | 'warn' | 'accent' = 'primary';\r\n\r\n    @Input()\r\n    set color(value: 'primary' | 'warn' | 'accent') {\r\n        this._color = value;\r\n    }\r\n    get color(): 'primary' | 'warn' | 'accent' {\r\n        return this._color;\r\n    }\r\n\r\n    @Input()\r\n    set indeterminate(value: boolean) {\r\n        this._indeterminate = value;\r\n    }\r\n    get indeterminate(): boolean {\r\n        return this._indeterminate;\r\n    }\r\n\r\n    @Input()\r\n    set labelPosition(value: 'before' | 'after') {\r\n        this._labelPosition = value;\r\n    }\r\n    get labelPosition(): 'before' | 'after' {\r\n        return this._labelPosition;\r\n    }\r\n\r\n    @Input()\r\n    set cssClass(value: string) {\r\n        this._cssClass = value;\r\n    }\r\n    get cssClass(): string {\r\n        return this._cssClass;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","<mat-checkbox [ngClass]=\"cssClass\" [name]=\"name\" [required]='required' [indeterminate]=\"indeterminate\" [(ngModel)]=\"value\"\n  [disabled]=\"disabled\" [color]='color' [labelPosition]=\"labelPosition\">{{label }}</mat-checkbox>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NarikMatCheckBox } from './narik-mat-checkbox.component';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, FormsModule, MatCheckboxModule],\r\n    declarations: [NarikMatCheckBox],\r\n    exports: [NarikMatCheckBox],\r\n    providers: [],\r\n})\r\nexport class NarikMatCheckBoxModule {}\r\n","import { NarikCheckBoxList } from '@narik/ui-core';\r\nimport { Component, forwardRef, Injector, Input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FORM_ITEM_DEFAULT_CLASS } from '../injectionTokens';\r\nimport { NARIK_DATA_DISPLAY_VALUE_INPUTS } from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-checkbox-list , narik-checkbox-list',\r\n    templateUrl: 'narik-mat-checkbox-list.component.html',\r\n    inputs: [...NARIK_DATA_DISPLAY_VALUE_INPUTS],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NarikMatCheckBoxList),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatCheckBoxList extends NarikCheckBoxList {\r\n    itemsData: any[] = [];\r\n    _cssClass: string;\r\n    _layoutDirection: 'vertical' | 'horizontal' = 'vertical';\r\n\r\n    @Input()\r\n    set layoutDirection(value: 'vertical' | 'horizontal') {\r\n        this._layoutDirection = value;\r\n    }\r\n    get layoutDirection(): 'vertical' | 'horizontal' {\r\n        return this._layoutDirection;\r\n    }\r\n\r\n    @Input()\r\n    set cssClass(value: string) {\r\n        this._cssClass = value;\r\n    }\r\n    get cssClass(): string {\r\n        return this._cssClass;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        const _defaultFormItemClass = injector.get(\r\n            FORM_ITEM_DEFAULT_CLASS,\r\n            null\r\n        );\r\n        if (_defaultFormItemClass) {\r\n            this.cssClass = _defaultFormItemClass;\r\n        }\r\n    }\r\n\r\n    protected useData(data: any[]) {\r\n        this.itemsData = data;\r\n    }\r\n}\r\n","<mat-form-field class=\"mat-form-field-no-underline\" [ngClass]='{cssClass : true,\"mat-form-field-no-underline-without-label\" : !label}'\n  floatLabel=\"always\">\n  <mat-label *ngIf=\"label\">{{label}}</mat-label>\n  <input matInput placeholder=\"Input\" style=\"display: none\">\n  <div [ngClass]='{\"vertical-content\" : layoutDirection==\"vertical\"}'>\n    <narik-mat-checkbox *ngFor=\"let item of itemsData\" (change)='addOrRemove(valueField ?  item[valueField]:item);'\n      labelPosition=\"after\" color='' [tag]='valueField ?  item[valueField]:item' label='{{item[displayField]}}'></narik-mat-checkbox>\n  </div>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { NarikMatCheckBoxList } from './narik-mat-checkbox-list.component';\r\nimport { NarikMatCheckBoxModule } from '../narik-mat-check-box/narik-mat-checkbox.module';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        NarikMatCheckBoxModule,\r\n        MatInputModule,\r\n        MatFormFieldModule,\r\n        MatProgressSpinnerModule,\r\n    ],\r\n    declarations: [NarikMatCheckBoxList],\r\n    exports: [NarikMatCheckBoxList],\r\n    providers: [],\r\n})\r\nexport class NarikMatCheckBoxListModule {}\r\n","import { QueryService, ServerResponse } from '@narik/app-core';\r\nimport {\r\n    DataInfo,\r\n    NarikDataSource,\r\n    FilterItems,\r\n    PagingParameters,\r\n    DataProviderService,\r\n} from '@narik/infrastructure';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { CollectionViewer, DataSource } from '@angular/cdk/collections';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\nexport class MatLazyDataSource<T> implements DataSource<T>, NarikDataSource<T> {\r\n    private dataSubject = new BehaviorSubject<T[]>([]);\r\n    private loadingSubject = new BehaviorSubject<boolean>(false);\r\n\r\n    currentData: T[];\r\n    _paginator: MatPaginator | null;\r\n    _sort: MatSort | null;\r\n    _filterSubject: Subject<FilterItems>;\r\n    _filter: FilterItems;\r\n\r\n    set filter(value: FilterItems) {\r\n        this._filter = value;\r\n        this.paginator.pageIndex = 0;\r\n        this.loadData();\r\n    }\r\n    get filter(): FilterItems {\r\n        return this._filter;\r\n    }\r\n\r\n    set filterSubject(value: Subject<FilterItems>) {\r\n        this._filterSubject = value;\r\n        if (this._filterSubject) {\r\n            this._filterSubject\r\n                .pipe(\r\n                    debounceTime(150),\r\n                    distinctUntilChanged(),\r\n                    tap((filter: FilterItems) => {\r\n                        this.filter = filter;\r\n                    })\r\n                )\r\n                .subscribe();\r\n        }\r\n    }\r\n    get filterSubject(): Subject<FilterItems> {\r\n        return this._filterSubject;\r\n    }\r\n\r\n    set sort(value: MatSort | null) {\r\n        this._sort = value;\r\n        if (this._sort) {\r\n            this.sort.sortChange.pipe(tap(() => this.loadData())).subscribe();\r\n        }\r\n    }\r\n    get sort(): MatSort | null {\r\n        return this._sort;\r\n    }\r\n\r\n    set paginator(value: MatPaginator | null) {\r\n        this._paginator = value;\r\n        if (this._paginator != null) {\r\n            this.paginator.page.pipe(tap(() => this.loadData())).subscribe();\r\n        }\r\n    }\r\n    get paginator(): MatPaginator | null {\r\n        return this._paginator;\r\n    }\r\n\r\n    get dataObservable(): Observable<T[]> {\r\n        return this.dataSubject.asObservable();\r\n    }\r\n    get loadingObservable(): Observable<boolean> {\r\n        return this.loadingSubject.asObservable();\r\n    }\r\n\r\n    constructor(\r\n        private queryService: QueryService<T>,\r\n        private dataInfoGetter: () => DataInfo,\r\n        private dataProviderService: DataProviderService = null\r\n    ) {}\r\n\r\n    loadData(remoteDataParams?: PagingParameters) {\r\n        remoteDataParams = remoteDataParams || {\r\n            pageIndex: this.paginator.pageIndex,\r\n            pageCount: this.paginator.pageSize,\r\n            sort: this.sort.direction\r\n                ? [\r\n                      {\r\n                          field: this.sort.active,\r\n                          order: this.sort.direction,\r\n                      },\r\n                  ]\r\n                : undefined,\r\n            filter: this.filter,\r\n        };\r\n        this.loadingSubject.next(true);\r\n\r\n        const dataInfo = this.dataInfoGetter();\r\n\r\n        dataInfo.pagingParameter = remoteDataParams;\r\n        if (this.queryService) {\r\n            this.queryService\r\n                .getList(dataInfo)\r\n                .pipe(\r\n                    catchError(() => of([])),\r\n                    finalize(() => this.loadingSubject.next(false))\r\n                )\r\n                .subscribe((result: ServerResponse<T[]>) => {\r\n                    this.currentData = result.data;\r\n                    if (this.paginator) {\r\n                        this.paginator.length = result.count;\r\n                    }\r\n                    this.dataSubject.next(result.data);\r\n                });\r\n        } else {\r\n            this.dataProviderService\r\n                .getData(dataInfo)\r\n                .pipe(\r\n                    catchError(() => of([])),\r\n                    finalize(() => this.loadingSubject.next(false))\r\n                )\r\n                .subscribe((result: any) => {\r\n                    this.currentData = result.result;\r\n                    if (this.paginator) {\r\n                        this.paginator.length = result.count;\r\n                    }\r\n                    this.dataSubject.next(result.result);\r\n                });\r\n        }\r\n    }\r\n\r\n    connect(collectionViewer: CollectionViewer): Observable<T[]> {\r\n        return this.dataSubject.asObservable();\r\n    }\r\n\r\n    disconnect(collectionViewer: CollectionViewer): void {\r\n        this.dataSubject.complete();\r\n        this.loadingSubject.complete();\r\n    }\r\n}\r\n","import { QueryService, ServerResponse } from '@narik/app-core';\r\nimport {\r\n    DataInfo,\r\n    NarikDataSource,\r\n    PagingParameters,\r\n} from '@narik/infrastructure';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\nexport class MatLocalDataSource<T>\r\n    extends MatTableDataSource<T>\r\n    implements NarikDataSource<T> {\r\n    private loadingSubject = new BehaviorSubject<boolean>(false);\r\n    private dataSubject = new BehaviorSubject<T[]>(this.data || []);\r\n\r\n    get dataObservable(): Observable<T[]> {\r\n        return this.dataSubject.asObservable(); // of(this.data);\r\n    }\r\n    get loadingObservable(): Observable<boolean> {\r\n        return this.loadingSubject.asObservable();\r\n    }\r\n\r\n    get currentData(): T[] {\r\n        return this.data;\r\n    }\r\n\r\n    constructor(\r\n        private queryService: QueryService<T>,\r\n        private dataInfoGetter: () => DataInfo,\r\n        initialData?: T[]\r\n    ) {\r\n        super(initialData);\r\n        this.filterPredicate = (data: any, filters: any) => {\r\n            if (!filters) {\r\n                return true;\r\n            }\r\n            const filterFunction = filters as (x) => boolean;\r\n            return filterFunction(data);\r\n        };\r\n    }\r\n\r\n    setData(data: T[]) {\r\n        this.data = data;\r\n    }\r\n\r\n    loadData(remoteDaraParams?: PagingParameters) {\r\n        if (this.queryService) {\r\n            this.loadingSubject.next(true);\r\n            const dataInfo = this.dataInfoGetter();\r\n\r\n            this.queryService\r\n                .getList(dataInfo)\r\n                .pipe(\r\n                    catchError(() =>\r\n                        of({\r\n                            data: [],\r\n                        })\r\n                    ),\r\n                    finalize(() => this.loadingSubject.next(false))\r\n                )\r\n                .subscribe((result: ServerResponse<T[]>) => {\r\n                    this.data = result.data;\r\n                    this.dataSubject.next(this.data);\r\n                    if (this.paginator) {\r\n                        this.paginator.length = result.count;\r\n                    }\r\n                });\r\n        }\r\n    }\r\n}\r\n","import { Mixin } from '@narik/common';\r\nimport { NarikInput } from '@narik/ui-core';\r\n\r\nimport { NarikMatFormFieldInput } from './narik-mat-form-field';\r\n\r\nexport interface INarikMatInputBase\r\n    extends NarikMatFormFieldInput,\r\n        NarikInput {}\r\n\r\nexport class NarikMatInputBase extends Mixin<INarikMatInputBase>(\r\n    NarikInput,\r\n    NarikMatFormFieldInput\r\n) {}\r\n","import { Component, forwardRef, Injector, Input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { NARIK_MAT_FORM_INPUTS } from '../base/narik-mat-form-field';\r\nimport { NarikMatInputBase } from '../base/narik-mat-input-base';\r\nimport { NARIK_INPUT_INPUTS } from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-input , narik-input',\r\n    templateUrl: 'narik-mat-input.component.html',\r\n    inputs: [...NARIK_MAT_FORM_INPUTS, ...NARIK_INPUT_INPUTS],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NarikMatInput),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatInput extends NarikMatInputBase {\r\n    @Input()\r\n    inputCssClass: string;\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","<mat-form-field\n  [class]=\"cssClass\"\n  [floatLabel]=\"floatLabel\"\n  [appearance]=\"appearance\"\n  [hintLabel]=\"hintLabel\"\n  [ngClass]=\"{ 'narik-mat-form-field-invalid': !!errors }\"\n>\n  <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n  <input\n    [ngClass]=\"inputCssClass\"\n    *ngIf=\"type !== 'textArea'\"\n    [disabled]=\"disabled\"\n    [required]=\"required\"\n    matInput\n    placeholder=\"{{ placeHolder }}\"\n    [name]=\"name\"\n    [(ngModel)]=\"value\"\n    [type]=\"type\"\n    (blur)=\"onBlur($event)\"\n  />\n  <textarea\n    [ngClass]=\"inputCssClass\"\n    cdkTextareaAutosize\n    [disabled]=\"disabled\"\n    *ngIf=\"type === 'textArea'\"\n    [required]=\"required\"\n    matInput\n    placeholder=\"{{ placeHolder }}\"\n    [name]=\"name\"\n    [(ngModel)]=\"value\"\n  ></textarea>\n  <mat-icon *ngIf=\"suffixIcon\" matSuffix>{{ suffixIcon }}</mat-icon>\n  <mat-icon *ngIf=\"prefixIcon\" matPrefix>{{ prefixIcon }}</mat-icon>\n  <mat-hint *ngIf=\"startHint\"> </mat-hint>\n  <mat-hint *ngIf=\"!!errors && displayErrorMode === 'hint'\">\n    <span class=\"mat-error\">{{ errors }}</span>\n  </mat-hint>\n  <mat-icon\n    *ngIf=\"!!errors && displayErrorMode === 'icon'\"\n    color=\"error\"\n    matTooltip=\"{{ errors }}\"\n    matSuffix\n    matTooltipClass=\"tooltip-red\"\n    >error_outline</mat-icon\n  >\n  <mat-hint *ngIf=\"endHint\" align=\"end\">{{ endHint }}</mat-hint>\n\n  <span *ngIf=\"prefixContent\" matPrefix>{{ prefixContent }}</span>\n  <span *ngIf=\"suffixContent\" matSuffix>{{ suffixContent }}</span>\n</mat-form-field>\n","import { isPresent, isString, toFilterFunction, isArray } from '@narik/common';\r\nimport {\r\n    NarikDataSource,\r\n    FilterItems,\r\n    NarikViewField,\r\n    IPagingInfo,\r\n} from '@narik/infrastructure';\r\nimport { NarikDataTable } from '@narik/ui-core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport {\r\n    AfterViewInit,\r\n    Component,\r\n    ElementRef,\r\n    Input,\r\n    OnInit,\r\n    ViewChild,\r\n    AfterContentInit,\r\n    ChangeDetectorRef,\r\n    AfterViewChecked,\r\n    Injector,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\nimport { MatLazyDataSource } from '../data-source/mat-lazy-data-source';\r\nimport { MatLocalDataSource } from '../data-source/mat-local-data-source';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Component({\r\n    selector: 'narik-mat-data-table , narik-data-table',\r\n    templateUrl: 'narik-mat-data-table.component.html',\r\n})\r\nexport class NarikMatDataTable\r\n    extends NarikDataTable\r\n    implements OnInit, AfterViewInit, AfterContentInit, AfterViewChecked {\r\n    fieldNames: string[] = [];\r\n    filterObj: any = {};\r\n    private _sort: MatSort;\r\n    private _paginator: MatPaginator;\r\n\r\n    @ViewChild(MatSort, { static: false })\r\n    set sort(value: MatSort) {\r\n        this._sort = value;\r\n        this.setUiOptionsOnDataSource();\r\n    }\r\n    get sort(): MatSort {\r\n        return this._sort;\r\n    }\r\n\r\n    @ViewChild(MatPaginator, { static: false })\r\n    set paginator(value: MatPaginator) {\r\n        this._paginator = value;\r\n        this.setUiOptionsOnDataSource();\r\n    }\r\n    get paginator() {\r\n        return this._paginator;\r\n    }\r\n\r\n    @ViewChild('searchInput', { static: false }) searchInput: ElementRef;\r\n    filterChange = new Subject<FilterItems>();\r\n    selection: SelectionModel<any>;\r\n    _selectMode: 'None' | 'One' | 'Multiple' = 'Multiple';\r\n    _showRowNumber = true;\r\n    _containerCssClass = 'mat-table-container';\r\n    _rowCssClass: string;\r\n    searchSubject = new Subject<any>();\r\n\r\n    @Input()\r\n    set rowCssClass(value: string) {\r\n        this._rowCssClass = value;\r\n    }\r\n    get rowCssClass(): string {\r\n        return this._rowCssClass;\r\n    }\r\n\r\n    @Input()\r\n    set containerCssClass(value: string) {\r\n        this._containerCssClass = value;\r\n    }\r\n    get containerCssClass(): string {\r\n        return this._containerCssClass;\r\n    }\r\n\r\n    @Input()\r\n    set showRowNumber(value: boolean) {\r\n        this._showRowNumber = value;\r\n    }\r\n    get showRowNumber(): boolean {\r\n        return this._showRowNumber;\r\n    }\r\n\r\n    @Input()\r\n    set selectMode(value: 'None' | 'One' | 'Multiple') {\r\n        this._selectMode = value;\r\n    }\r\n    get selectMode(): 'None' | 'One' | 'Multiple' {\r\n        return this._selectMode;\r\n    }\r\n\r\n    get isServerSide(): boolean {\r\n        return this.dataSource && this.dataSource instanceof MatLazyDataSource;\r\n    }\r\n\r\n    get currentData(): any[] {\r\n        return this.dataSource.currentData;\r\n    }\r\n\r\n    constructor(injector: Injector, private changeDetector: ChangeDetectorRef) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.selection = new SelectionModel<any>(\r\n            this.selectMode === 'Multiple',\r\n            []\r\n        );\r\n        this.selection.changed.subscribe((x) => {\r\n            this.selectedItems = this.selection.selected;\r\n        });\r\n\r\n        this.searchSubject\r\n            .pipe(\r\n                debounceTime(200),\r\n                distinctUntilChanged(\r\n                    (\r\n                        x: { filterValue: string; column: any },\r\n                        y: { filterValue: string; column: any }\r\n                    ) => {\r\n                        if (!x) {\r\n                            return false;\r\n                        }\r\n                        if (x.filterValue !== y.filterValue) {\r\n                            return false;\r\n                        }\r\n                        if (!x.column && !y.column) {\r\n                            return true;\r\n                        }\r\n                        if (x.column && y.column) {\r\n                            return (x.column.model = y.column.model);\r\n                        }\r\n                        return false;\r\n                    }\r\n                )\r\n            )\r\n            .subscribe((f) => {\r\n                this.doFilter(f.filterValue, f.column);\r\n            });\r\n    }\r\n\r\n    ngAfterViewInit() {\r\n        if (this.dataSource) {\r\n            this.initDataSource(this.dataSource);\r\n        }\r\n    }\r\n    ngAfterContentInit() {}\r\n    ngAfterViewChecked() {\r\n        this.changeDetector.detectChanges();\r\n    }\r\n\r\n    public select(row: any) {\r\n        this.selectedItem = row;\r\n    }\r\n    dblclick(row) {\r\n        this.rowDoubleClick.emit(row);\r\n    }\r\n\r\n    setUiOptionsOnDataSource() {\r\n        if (this.dataSource) {\r\n            if (this.dataSource instanceof MatLocalDataSource) {\r\n                this.initLocalDataSource(\r\n                    this.dataSource as MatLocalDataSource<any>\r\n                );\r\n            } else {\r\n                this.initRemoteDataSource(\r\n                    this.dataSource as MatLazyDataSource<any>\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n    initDataSource(ds: NarikDataSource<any>) {\r\n        this.setUiOptionsOnDataSource();\r\n        this.dataSource.dataObservable\r\n            .pipe(takeWhile((x) => this.isAlive))\r\n            .subscribe((x) => {\r\n                this.selection.clear();\r\n            });\r\n        this.dataSource.loadData();\r\n    }\r\n    initLocalDataSource(ds: MatLocalDataSource<any>) {\r\n        ds.sort = this.sort;\r\n        ds.paginator = this.paginator;\r\n    }\r\n\r\n    initRemoteDataSource(ds: MatLazyDataSource<any>) {\r\n        ds.filterSubject = this.filterChange;\r\n        ds.sort = this.sort;\r\n        ds.paginator = this.paginator;\r\n    }\r\n\r\n    makeColumns() {\r\n        this.fieldNames = this.fields ? this.fields.map((x) => x.model) : [];\r\n        if (this.selectMode !== 'None') {\r\n            this.fieldNames.unshift('select');\r\n        }\r\n        if (this.showRowNumber) {\r\n            this.fieldNames.unshift('index');\r\n        }\r\n        if (this.rowCommands && this.rowCommands.length !== 0) {\r\n            this.fieldNames.push('actions');\r\n        }\r\n\r\n        this.fields.forEach((x) => {\r\n            this.filterObj['$$' + x.model] = x.type;\r\n        });\r\n    }\r\n\r\n    isAllSelected() {\r\n        const numSelected = this.selection.selected.length;\r\n        const numRows = this.currentData.length;\r\n        return numSelected === numRows;\r\n    }\r\n\r\n    masterToggle() {\r\n        this.isAllSelected()\r\n            ? this.selection.clear()\r\n            : this.currentData.forEach((row) => this.selection.select(row));\r\n    }\r\n    applyFilter(filterValue, column?: NarikViewField) {\r\n        this.searchSubject.next({\r\n            filterValue: filterValue,\r\n            column: column,\r\n        });\r\n    }\r\n    doFilter(filterValue, column?: NarikViewField) {\r\n        const filter = this.createFilter(filterValue, column);\r\n\r\n        if (this.isServerSide) {\r\n            this.filterChange.next(filter);\r\n        } else {\r\n            if (filter) {\r\n                const filterFunction = toFilterFunction(filter);\r\n                (this.dataSource as MatLocalDataSource<any>).filter = <any>(\r\n                    filterFunction\r\n                );\r\n            } else {\r\n                (this.dataSource as MatLocalDataSource<any>).filter = null;\r\n            }\r\n        }\r\n    }\r\n\r\n    createFilter(filterValue, column: NarikViewField): FilterItems {\r\n        this.filterObj[column ? column.model : '$$overallFilter'] = isString(\r\n            filterValue\r\n        )\r\n            ? filterValue.trim()\r\n            : filterValue;\r\n\r\n        const filter0: FilterItems = {\r\n            condition: 'or',\r\n            filters: [],\r\n        };\r\n        if (this.filterObj['$$overallFilter']) {\r\n            this.fields.forEach((x) => {\r\n                if (!x.type || x.type === 'text') {\r\n                    filter0.filters.push({\r\n                        field: x.model,\r\n                        operator: 'contains',\r\n                        value: this.filterObj['$$overallFilter'],\r\n                    });\r\n                }\r\n            });\r\n        }\r\n\r\n        const filter1: FilterItems = {\r\n            condition: 'and',\r\n            filters: [],\r\n        };\r\n        for (const filterKey in this.filterObj) {\r\n            if (!filterKey.startsWith('$$')) {\r\n                if (\r\n                    this.filterObj.hasOwnProperty(filterKey) &&\r\n                    isPresent(this.filterObj[filterKey]) &&\r\n                    this.filterObj[filterKey] !== ''\r\n                ) {\r\n                    filter1.filters.push({\r\n                        field: filterKey,\r\n                        operator:\r\n                            !this.filterObj['$$' + filterKey] ||\r\n                            this.filterObj['$$' + filterKey] === 'text'\r\n                                ? 'contains'\r\n                                : 'eq',\r\n                        value: this.filterObj[filterKey],\r\n                    });\r\n                }\r\n            }\r\n        }\r\n        if (filter0.filters.length !== 0 && filter1.filters.length === 0) {\r\n            return filter0;\r\n        } else if (\r\n            filter1.filters.length !== 0 &&\r\n            filter0.filters.length === 0\r\n        ) {\r\n            return filter1;\r\n        } else if (\r\n            filter1.filters.length !== 0 &&\r\n            filter0.filters.length !== 0\r\n        ) {\r\n            return {\r\n                condition: 'and',\r\n                filters: [filter0, filter1],\r\n            };\r\n        } else {\r\n            return null;\r\n        }\r\n    }\r\n\r\n    rowCommandClicked(commandKey, row) {\r\n        this.rowCommandClick.emit({\r\n            key: commandKey,\r\n            item: row,\r\n        });\r\n    }\r\n\r\n    protected fieldsChanged() {\r\n        super.fieldsChanged();\r\n        this.makeColumns();\r\n    }\r\n}\r\n","<narik-mat-input [placeHolder]=\"'search' | translate\" [hidden]=\"!options.showSearchPanel\"\n  (keyup)=\"applyFilter($event.target.value)\">\n</narik-mat-input>\n<narik-mat-busy-indicator [isBusy]=\"dataSource.loadingObservable | async\">\n  <div [ngClass]=\"containerCssClass\">\n    <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8 narik-mat-table\" matSort>\n      <ng-container matColumnDef=\"index\">\n        <th class=\"mat-table-index-column\" mat-header-cell *matHeaderCellDef>\n          #\n        </th>\n        <td mat-cell *matCellDef=\"let row; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n      <ng-container matColumnDef=\"select\">\n        <th class=\"mat-table-select-column\" mat-header-cell *matHeaderCellDef>\n          <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n            [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n          </mat-checkbox>\n        </th>\n        <td mat-cell *matCellDef=\"let row\">\n          <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\"\n            [checked]=\"selection.isSelected(row)\">\n          </mat-checkbox>\n        </td>\n      </ng-container>\n      <ng-container [matColumnDef]=\"column.model\" *ngFor=\"let column of fields\">\n        <th mat-header-cell [ngStyle]=\"{ width: column.options.columnWidth || '' }\" *matHeaderCellDef>\n          <span mat-sort-header>{{ column.label | translate }}</span>\n          <ng-container *ngIf=\"options.showSearchFields\">\n            <mat-checkbox *ngIf=\"column.type === 'boolean'\" (change)=\"applyFilter($event.checked, column)\">\n            </mat-checkbox>\n            <input *ngIf=\"column.type !== 'boolean'\" type=\"column.type || 'string'\" class=\"filter-input\" matInput\n              (keyup)=\"applyFilter($event.target.value, column)\" placeholder=\"{{ 'search' | translate }}\" />\n          </ng-container>\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <ng-container [ngSwitch]=\"column.type\">\n            <ng-container *ngSwitchCase=\"'boolean'\">\n              <mat-icon class=\"text-success\" *ngIf=\"element[column.model]\">done</mat-icon>\n              <mat-icon class=\"text-danger\" *ngIf=\"!element[column.model]\">clear</mat-icon>\n            </ng-container>\n            <ng-container *ngSwitchCase=\"'date'\">\n              {{ element[column.model] | date: column.options.format || 'mediumDate' }}</ng-container>\n            <ng-container *ngSwitchDefault>\n              {{ element[column.model] }}</ng-container>\n          </ng-container>\n\n\n        </td>\n      </ng-container>\n      <ng-container *ngIf=\"rowCommands && rowCommands.length !== 0\" matColumnDef=\"actions\">\n        <th mat-header-cell *matHeaderCellDef>\n          <span>{{ \"table.actions\" | translate }}</span>\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div class=\"table-command-container\">\n            <ng-container *ngIf=\"rowCommandType === 'Menu'\">\n              <mat-icon class=\"table-command-menu\" [matMenuTriggerFor]=\"menu\">dehaze</mat-icon>\n              <mat-menu #menu=\"matMenu\">\n                <narik-mat-button [cssClass]=\"'item-full-width'\" *ngFor=\"let item of rowCommands\"\n                  (nClick)=\"rowCommandClicked(item.commandKey, element)\" label=\" {{ item.label | translate }}\"\n                  [buttonStyle]=\"'mat-flat-button'\" [icon]=\"item.icon\"\n                  matTooltip=\"{{ item.title || item.commandKey | translate }}\">\n                </narik-mat-button>\n              </mat-menu>\n            </ng-container>\n            <ng-container *ngIf=\"rowCommandType === 'Flat'\">\n              <mat-icon class=\"table-command-menu\" *ngFor=\"let item of rowCommands\"\n                (click)=\"rowCommandClicked(item.commandKey, element)\"\n                matTooltip=\"{{ item.title || item.commandKey | translate }}\">{{ item.icon }}</mat-icon>\n            </ng-container>\n          </div>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"fieldNames; sticky: true\"></tr>\n      <tr [class]=\"rowCssClass\" [ngClass]=\"{ selected: row === selectedItem }\" mat-row\n        *matRowDef=\"let row; columns: fieldNames\" (dblclick)=\"dblclick(row)\" (click)=\"select(row)\"></tr>\n    </table>\n  </div>\n</narik-mat-busy-indicator>\n<mat-paginator *ngIf=\"pagingInfo\" [pageSize]=\"pagingInfo.pageSize\" [pageSizeOptions]=\"pagingInfo.availablePageSizes\"\n  showFirstLastButtons></mat-paginator>","import { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nexport class PaginatorI18n {\r\n    constructor(private readonly translate: TranslateService) {}\r\n\r\n    getPaginatorIntl(): MatPaginatorIntl {\r\n        const paginatorIntl = new MatPaginatorIntl();\r\n        paginatorIntl.itemsPerPageLabel = this.translate.instant(\r\n            'ITEMS_PER_PAGE_LABEL'\r\n        );\r\n        paginatorIntl.nextPageLabel = this.translate.instant('NEXT_PAGE_LABEL');\r\n        paginatorIntl.previousPageLabel = this.translate.instant(\r\n            'PREVIOUS_PAGE_LABEL'\r\n        );\r\n        paginatorIntl.firstPageLabel = this.translate.instant(\r\n            'FIRST_PAGE_LABEL'\r\n        );\r\n        paginatorIntl.lastPageLabel = this.translate.instant('LAST_PAGE_LABEL');\r\n        paginatorIntl.getRangeLabel = this.getRangeLabel.bind(this);\r\n        return paginatorIntl;\r\n    }\r\n\r\n    private getRangeLabel(\r\n        page: number,\r\n        pageSize: number,\r\n        length: number\r\n    ): string {\r\n        if (length === 0 || pageSize === 0) {\r\n            return this.translate.instant('RANGE_PAGE_LABEL_1', { length });\r\n        }\r\n        length = Math.max(length, 0);\r\n        const startIndex = page * pageSize;\r\n        // If the start index exceeds the list length, do not try and fix the end index to the end.\r\n        const endIndex =\r\n            startIndex < length\r\n                ? Math.min(startIndex + pageSize, length)\r\n                : startIndex + pageSize;\r\n        return this.translate.instant('RANGE_PAGE_LABEL_2', {\r\n            startIndex: startIndex + 1,\r\n            endIndex,\r\n            length,\r\n        });\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NarikMatInput } from './narik-mat-input.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatInputModule,\r\n        MatIconModule,\r\n        MatFormFieldModule,\r\n        MatTooltipModule,\r\n    ],\r\n    declarations: [NarikMatInput],\r\n    exports: [NarikMatInput],\r\n    providers: [],\r\n})\r\nexport class NarikMatInputModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NarikMatDataTable } from './narik-mat-data-table.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {\r\n    MatPaginatorModule,\r\n    MatPaginatorIntl,\r\n} from '@angular/material/paginator';\r\nimport { PaginatorI18n } from './paginatorI18n';\r\nimport { NarikMatBusyIndicatorModule } from '../narik-mat-busy-indicator/narik-mat-busy-indicator.module';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { NarikMatInputModule } from '../narik-mat-input/narik-mat-input.module';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { NarikMatButtonModule } from '../narik-mat-button/narik-mat-button.module';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nexport function PaginatorI18nFactory(translateService: TranslateService) {\r\n    return new PaginatorI18n(translateService).getPaginatorIntl();\r\n}\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatSortModule,\r\n        TranslateModule,\r\n        MatTableModule,\r\n        MatPaginatorModule,\r\n        MatInputModule,\r\n        NarikMatBusyIndicatorModule,\r\n        NarikMatInputModule,\r\n        MatIconModule,\r\n        MatCheckboxModule,\r\n        MatMenuModule,\r\n        MatButtonModule,\r\n        NarikMatButtonModule,\r\n        MatTooltipModule,\r\n    ],\r\n    declarations: [NarikMatDataTable],\r\n    exports: [NarikMatDataTable],\r\n    providers: [\r\n        {\r\n            provide: MatPaginatorIntl,\r\n            deps: [TranslateService],\r\n            useFactory: PaginatorI18nFactory,\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatDataTableModule {}\r\n","import { Mixin } from '@narik/common';\r\nimport { NarikDatePicker } from '@narik/ui-core';\r\n\r\nimport { NarikMatFormFieldInput } from './narik-mat-form-field';\r\n\r\nexport interface INarikMatDatePickerBase\r\n    extends NarikMatFormFieldInput,\r\n        NarikDatePicker {}\r\n\r\nexport class NarikMatDatePickerBase extends Mixin<INarikMatDatePickerBase>(\r\n    NarikDatePicker,\r\n    NarikMatFormFieldInput\r\n) {}\r\n{\r\n}\r\n","import { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport {\r\n    forwardRef,\r\n    Component,\r\n    Injector,\r\n    Inject,\r\n    Optional,\r\n} from '@angular/core';\r\n\r\nimport { NARIK_MAT_FORM_INPUTS } from '../base/narik-mat-form-field';\r\nimport { NarikMatDatePickerBase } from '../base/narik-mat-date-picker-base';\r\nimport {\r\n    DateAdapter,\r\n    MatDateFormats,\r\n    MAT_DATE_FORMATS,\r\n} from '@angular/material/core';\r\nimport { NARIK_DATE_PICKER_INPUTS } from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-date-picker , narik-date-picker',\r\n    templateUrl: 'narik-mat-date-picker.component.html',\r\n    inputs: [...NARIK_MAT_FORM_INPUTS, ...NARIK_DATE_PICKER_INPUTS],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NarikMatDatePicker),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatDatePicker extends NarikMatDatePickerBase {\r\n    mask = {\r\n        guide: true,\r\n        showMask: true,\r\n        mask: [/\\d/, /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, '/', /\\d/, /\\d/],\r\n    };\r\n\r\n    internalChange = false;\r\n    internalChange2 = false;\r\n    _textValue: string;\r\n    set textValue(value: string) {\r\n        if (value !== this._textValue) {\r\n            this._textValue = value;\r\n            if (!this.internalChange) {\r\n                const dateValue = this.adapter.parse(\r\n                    this.textValue,\r\n                    this.dateFormats.parse.dateInput\r\n                );\r\n                this.internalChange2 = true;\r\n                if (dateValue && this.adapter.isValid(dateValue)) {\r\n                    this.value = dateValue;\r\n                } else {\r\n                    this.value = undefined;\r\n                }\r\n                this.internalChange2 = false;\r\n            }\r\n        }\r\n    }\r\n    get textValue(): string {\r\n        return this._textValue;\r\n    }\r\n\r\n    constructor(\r\n        injector: Injector,\r\n        private adapter: DateAdapter<any>,\r\n        @Optional()\r\n        @Inject(MAT_DATE_FORMATS)\r\n        private dateFormats: MatDateFormats\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    todate(value) {\r\n        this.textValue = value;\r\n    }\r\n\r\n    onBlur(event) {\r\n        this.onModelChange(this.value);\r\n        super.onBlur(event);\r\n    }\r\n\r\n    protected valueChanged(newValue, oldValue) {\r\n        if (!this.internalChange2) {\r\n            this.internalChange = true;\r\n            this.textValue = this.value\r\n                ? this.adapter.format(\r\n                      this.value,\r\n                      this.dateFormats.display.dateInput\r\n                  )\r\n                : '';\r\n            this.internalChange = false;\r\n        }\r\n    }\r\n\r\n    protected convertValue(value) {\r\n        return this.adapter.deserialize(value);\r\n    }\r\n}\r\n","<mat-form-field\n  [class]=\"cssClass\"\n  [floatLabel]=\"floatLabel\"\n  [appearance]=\"appearance\"\n  [hintLabel]=\"hintLabel\"\n  [ngClass]=\"{ 'narik-mat-form-field-invalid': !!errors }\"\n>\n  <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n  <input\n    [required]=\"required\"\n    type=\"hidden\"\n    [name]=\"name\"\n    [matDatepicker]=\"picker\"\n    [(ngModel)]=\"value\"\n  />\n\n  <input\n    matInput\n    [required]=\"required\"\n    [textMask]=\"mask\"\n    style=\"direction: ltr\"\n    [ngModel]=\"textValue\"\n    placeholder=\"{{ placeHolder }}\"\n    (input)=\"todate($event.target.value)\"\n    (blur)=\"onBlur($event)\"\n  />\n\n  <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n  <mat-datepicker #picker></mat-datepicker>\n  <mat-icon *ngIf=\"suffixIcon\" matSuffix>{{ suffixIcon }}</mat-icon>\n  <mat-icon *ngIf=\"prefixIcon\" matPrefix>{{ prefixIcon }}</mat-icon>\n  <mat-hint *ngIf=\"startHint\">\n    {{ startHint }}\n  </mat-hint>\n  <mat-hint *ngIf=\"!!errors && displayErrorMode === 'hint'\">\n    <span class=\"mat-error\">{{ errors }}</span>\n  </mat-hint>\n  <mat-icon\n    *ngIf=\"!!errors && displayErrorMode === 'icon'\"\n    color=\"error\"\n    matTooltip=\"{{ errors }}\"\n    matSuffix\n    matTooltipClass=\"tooltip-red\"\n    >error_outline</mat-icon\n  >\n  <mat-hint *ngIf=\"endHint\" align=\"end\">{{ endHint }}</mat-hint>\n\n  <span *ngIf=\"prefixContent\" matPrefix>{{ prefixContent }}</span>\n  <span *ngIf=\"suffixContent\" matSuffix>{{ suffixContent }}</span>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NarikMatDatePicker } from './narik-mat-date-picker.component';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatDatepickerModule,\r\n        MatIconModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        MatTooltipModule,\r\n        TextMaskModule,\r\n    ],\r\n    declarations: [NarikMatDatePicker],\r\n    exports: [NarikMatDatePicker],\r\n    providers: [],\r\n})\r\nexport class NarikMatDatePickerModule {}\r\n","import { Mixin } from '@narik/common';\r\nimport { NarikDataTableSelect } from '@narik/ui-core';\r\n\r\nimport { NarikMatFormFieldInput } from './narik-mat-form-field';\r\n\r\nexport interface INarikMatDataTableSelectBase\r\n    extends NarikMatFormFieldInput,\r\n        NarikDataTableSelect {}\r\n\r\nexport class NarikMatDataTableSelectBase extends Mixin<INarikMatDataTableSelectBase>(\r\n    NarikDataTableSelect,\r\n    NarikMatFormFieldInput\r\n) {}\r\n{\r\n}\r\n","import { NarikToolBar } from '@narik/ui-core';\r\nimport { Component, Injector, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'narik-toolbar , narik-mat-toolbar',\r\n    templateUrl: 'narik-mat-toolbar.component.html',\r\n})\r\nexport class NarikMatToolBar extends NarikToolBar {\r\n    constructor(injector: Injector, viewContainerRef: ViewContainerRef) {\r\n        super(injector, viewContainerRef);\r\n        this.cssClass = 'narik-mat-toolbar';\r\n        this.itemsStyle = 'mat-stroked-button';\r\n    }\r\n}\r\n","<mat-toolbar [color]=\"color\" [ngClass]=\"cssClass\">\n  <ng-container *ngFor=\"let item of items\">\n    <ng-container *ngIf=\"item.itemType === 'divider'\">\n      <mat-divider [vertical]=\"true\"></mat-divider>\n    </ng-container>\n    <ng-container *ngIf=\"item.itemType === 'button'\">\n      <narik-button\n        class=\"toolbar-btn\"\n        *ngIf=\"!item.hideExpr || !invisibleItems[item.key]\"\n        [disable]=\"item.disableExpr && disableItems[item.key]\"\n        [isBusy]=\"item.busyExpr && busyItems[item.key]\"\n        matTooltip=\"{{\n          (item.tooltip ? (item.tooltip | translate) : '') +\n            (options.appendShortcutToTooltip && item.shortcut\n              ? '(' + (item.shortcut | shortcut) + ')'\n              : '')\n        }}\"\n        [cssClass]=\"itemsCssClass\"\n        (nClick)=\"itemCommand(item)\"\n        [buttonStyle]=\"itemsStyle\"\n        [icon]=\"item.icon\"\n        [fontIcon]=\"item.fontIcon\"\n        [label]=\"showLabel ? item.label : ''\"\n      ></narik-button>\n    </ng-container>\n  </ng-container>\n</mat-toolbar>\n","import { isArray, isEquivalent } from '@narik/common';\r\nimport { NarikInject } from '@narik/core';\r\nimport {\r\n    DataInfo,\r\n    DataOption,\r\n    DataProviderService,\r\n    NarikDataSource,\r\n} from '@narik/infrastructure';\r\nimport { DynamicFormService } from '@narik/ui-core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport {\r\n    Component,\r\n    ElementRef,\r\n    forwardRef,\r\n    Injector,\r\n    Input,\r\n    OnInit,\r\n    ViewChild,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\n\r\nimport { NarikMatDataTableSelectBase } from '../base/narik-mat-data-table-select-base';\r\nimport { NARIK_MAT_FORM_INPUTS } from '../base/narik-mat-form-field';\r\nimport { MatLazyDataSource } from '../data-source/mat-lazy-data-source';\r\nimport { MatLocalDataSource } from '../data-source/mat-local-data-source';\r\nimport { NarikMatDataTable } from '../narik-mat-data-table/narik-mat-data-table.component';\r\nimport {\r\n    NARIK_DATA_DISPLAY_VALUE_INPUTS,\r\n    NARIK_DATA_TABLE_SELECT_INPUTS,\r\n    NARIK_DATA_DISPLAY_VALUE_OUTPUTS,\r\n} from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-data-table-select , narik-data-table-select',\r\n    templateUrl: 'narik-mat-data-table-select.component.html',\r\n    styleUrls: ['narik-mat-data-table-select.component.css'],\r\n    inputs: [\r\n        ...NARIK_MAT_FORM_INPUTS,\r\n        ...NARIK_DATA_DISPLAY_VALUE_INPUTS,\r\n        ...NARIK_DATA_TABLE_SELECT_INPUTS,\r\n    ],\r\n    outputs: [...NARIK_DATA_DISPLAY_VALUE_OUTPUTS],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NarikMatDataTableSelect),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatDataTableSelect\r\n    extends NarikMatDataTableSelectBase\r\n    implements OnInit {\r\n    _gridOptions: any;\r\n\r\n    set gridOptions(value: any) {\r\n        if (value && value.showSearchPanel !== true) {\r\n            value.showSearchPanel = false;\r\n        }\r\n        this._gridOptions = value;\r\n    }\r\n    get gridOptions(): any {\r\n        return (\r\n            this._gridOptions || {\r\n                showSearchPanel: false,\r\n            }\r\n        );\r\n    }\r\n\r\n    _selectMode: 'Click' | 'DblClick' = 'Click';\r\n    set selectMode(value: 'Click' | 'DblClick') {\r\n        this._selectMode = value;\r\n    }\r\n    get selectMode(): 'Click' | 'DblClick' {\r\n        return this._selectMode;\r\n    }\r\n\r\n    @NarikInject(DynamicFormService)\r\n    dynamicFormService: DynamicFormService;\r\n\r\n    @ViewChild(MatAutocompleteTrigger, { static: true })\r\n    autoComplete: MatAutocompleteTrigger;\r\n\r\n    @ViewChild(NarikMatDataTable, { static: true })\r\n    dataTable: NarikMatDataTable;\r\n\r\n    @ViewChild('input', { static: true })\r\n    input: ElementRef;\r\n\r\n    @Input()\r\n    isLazyLoadData = true;\r\n\r\n    @Input()\r\n    displayText: string;\r\n\r\n    @Input()\r\n    allowType = false;\r\n\r\n    get gridSelectMode(): 'None' | 'One' | 'Multiple' {\r\n        return this.multiple ? 'Multiple' : 'None';\r\n    }\r\n\r\n    _selectedItem: any;\r\n\r\n    set selectedItem(value: any) {\r\n        if (!isEquivalent(value, this._selectedItem)) {\r\n            if (value) {\r\n                this.value = value[this.valueField];\r\n                this.input.nativeElement.value = value[this.displayField];\r\n            } else {\r\n                this.value = undefined;\r\n                this.input.nativeElement.value = '';\r\n            }\r\n\r\n            this._selectedItem = value;\r\n        }\r\n    }\r\n    get selectedItem(): any {\r\n        return this._selectedItem;\r\n    }\r\n\r\n    tableDataSource: NarikDataSource<any>;\r\n    optionData: any[] = [];\r\n\r\n    _fields: any[] = [\r\n        {\r\n            label: 'title',\r\n            model: 'title',\r\n            name: 'title',\r\n            options: {},\r\n            type: 'text',\r\n        },\r\n    ];\r\n\r\n    @Input()\r\n    set fields(value: any[]) {\r\n        if (value && isArray(value)) {\r\n            this._fields = this.dynamicFormService.createFieldsFromEntityFields(\r\n                value\r\n            );\r\n        } else {\r\n            this._fields = [\r\n                {\r\n                    label: 'title',\r\n                    model: 'title',\r\n                    name: 'title',\r\n                    options: {},\r\n                    type: 'text',\r\n                },\r\n            ];\r\n        }\r\n    }\r\n    get fields(): any[] {\r\n        return this._fields;\r\n    }\r\n\r\n    gridPagingInfo: any;\r\n    filteredData: Observable<any[]>;\r\n\r\n    constructor(\r\n        injector: Injector,\r\n        private dataProviderService: DataProviderService\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    protected detectChanges() {}\r\n\r\n    protected useData(data: any[]) {\r\n        this.optionData = data;\r\n        if (this.tableDataSource) {\r\n            (this.tableDataSource as MatLocalDataSource<any>).setData(data);\r\n        }\r\n        this.setDisplayText();\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.loadDataOnInit = !this.isLazyLoadData;\r\n        this.gridPagingInfo = this.isLazyLoadData\r\n            ? {\r\n                  pageSize: 20,\r\n                  availablePageSizes: [10, 20, 50, 100],\r\n              }\r\n            : undefined;\r\n        if (this.isLazyLoadData) {\r\n            this.tableDataSource = new MatLazyDataSource(\r\n                undefined,\r\n                () => this.createDataInfo(),\r\n                this.dataProviderService\r\n            );\r\n        } else {\r\n            this.tableDataSource = new MatLocalDataSource(undefined, undefined);\r\n            if (this.optionData) {\r\n                (this.tableDataSource as MatLocalDataSource<any>).setData(\r\n                    this.optionData\r\n                );\r\n            }\r\n        }\r\n        super.ngOnInit();\r\n        this.detectChanges();\r\n    }\r\n\r\n    protected valueChanged(newValue: any, oldValue: any): void {\r\n        super.valueChanged(newValue, oldValue);\r\n        if (newValue !== oldValue) {\r\n            this.setDisplayText();\r\n        }\r\n        this.detectChanges();\r\n    }\r\n\r\n    openPanel() {\r\n        if (!this.allowType) {\r\n            this.autoComplete.openPanel();\r\n        }\r\n    }\r\n    rowDblClick(data) {\r\n        if (this.selectMode === 'DblClick') {\r\n            this.selectedItem = data;\r\n            this.autoComplete.closePanel();\r\n        }\r\n    }\r\n    rowSelect(data) {\r\n        if (this.selectMode === 'Click') {\r\n            this.selectedItem = data;\r\n            this.autoComplete.closePanel();\r\n        }\r\n    }\r\n\r\n    keyUp(key) {\r\n        if (key.keyCode !== 13) {\r\n            const filter = this.input.nativeElement.value;\r\n\r\n            this.dataTable.applyFilter(filter);\r\n\r\n            if (!this.input.nativeElement.value && !this.required) {\r\n                this.value = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    setDisplayText() {\r\n        if (this.value) {\r\n            const data = this.tableDataSource.currentData;\r\n            const item = data.filter(\r\n                (x) => x[this.valueField] === this.value\r\n            )[0];\r\n            this.input.nativeElement.value = item\r\n                ? item[this.displayField]\r\n                : this.displayText || '';\r\n        } else {\r\n            this.input.nativeElement.value = '';\r\n        }\r\n    }\r\n\r\n    onBlur() {\r\n        if (!this.isLazyLoadData) {\r\n            this.setDisplayText();\r\n        }\r\n    }\r\n    protected doLoadData(\r\n        dataInfo: DataInfo,\r\n        dataOption: DataOption,\r\n        listenForDataChange: boolean\r\n    ): Observable<any[]> {\r\n        if (this.isLazyLoadData) {\r\n            this.tableDataSource.loadData();\r\n        } else {\r\n            return super.doLoadData(dataInfo, dataOption, listenForDataChange);\r\n        }\r\n    }\r\n}\r\n","<mat-form-field (click)=\"openPanel()\" [ngClass]=\"{'select-mode' : !allowType}\" [class]=\"cssClass\"\n  class=\"item-full-width\" [floatLabel]='floatLabel' [appearance]='appearance' [hintLabel]='hintLabel'>\n  <mat-label *ngIf=\"label\">{{label }}</mat-label>\n  <div>\n    <input [ngClass]=\"{'select-mode' : !allowType}\" [readonly]=\"!allowType\" [required]=\"required\" canfocus\n      [matAutocomplete]=\"auto\" #input matInput placeholder=\"{{placeHolder}}\" [name]=\"name\" (keyup)=\"keyUp($event)\"\n      (blur)=\"onBlur()\" type='text'>\n    <div *ngIf=\"!allowType\" class=\"narik-mat-table-select-arrow-wrapper\">\n      <div class=\"mat-select-arrow\"></div>\n    </div>\n  </div>\n\n\n  <mat-autocomplete #auto=\"matAutocomplete\">\n    <mat-option style=\"display: none\">\n      111\n    </mat-option>\n\n    <narik-data-table [pagingInfo]=\"gridPagingInfo\" [selectedItem]=\"selectedItem\" [options]=\"gridOptions\"\n      (selectedItemChange)=\"rowSelect($event)\" (rowDoubleClick)=\"rowDblClick($event)\" rowCssClass=\"forSelect\"\n      containerCssClass=\"mat-table-select-container\" [selectMode]=\"gridSelectMode\" [fields]=\"fields\"\n      [dataSource]=\"tableDataSource\" selectMode=\"Single\">\n    </narik-data-table>\n    <ng-container *ngIf=\"options.showToolbar\">\n      <narik-mat-toolbar [displayStyle]=\"''\" cssClass=\"select-tool-bar\" itemsStyle=\"mat-flat-button\"\n        itemsCssClass=\"select-tool-bar-btn\" [moduleKey]=\"options.toolbarModuleKey\" [host]=\"this\"\n        [toolbarKey]=\"options.toolbarKey\"></narik-mat-toolbar>\n    </ng-container>\n  </mat-autocomplete>\n\n  <mat-spinner class=\"select-clear\" matSuffix *ngIf=\"dataIsLoading\" mode=\"indeterminate\" diameter=\"17\"></mat-spinner>\n  <mat-icon *ngIf='suffixIcon' matSuffix>{{suffixIcon}}</mat-icon>\n  <mat-icon *ngIf='prefixIcon' matPrefix>{{prefixIcon}}</mat-icon>\n  <mat-hint *ngIf='startHint'>{{startHint}}</mat-hint>\n  <mat-hint *ngIf='endHint' align=\"end\">{{endHint}}</mat-hint>\n\n  <span *ngIf='prefixContent' matPrefix>{{prefixContent}}</span>\n  <span *ngIf='suffixContent' matSuffix>{{suffixContent}}</span>\n\n\n\n</mat-form-field>","import { NarikCommonModule } from '@narik/common';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { NarikMatButtonModule } from '../narik-mat-button/narik-mat-button.module';\r\nimport { NarikMatToolBar } from './narik-mat-toolbar.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatToolbarModule,\r\n        NarikMatButtonModule,\r\n        MatTooltipModule,\r\n        TranslateModule,\r\n        MatDividerModule,\r\n        NarikCommonModule,\r\n    ],\r\n    declarations: [NarikMatToolBar],\r\n    exports: [NarikMatToolBar],\r\n    providers: [],\r\n})\r\nexport class NarikMatToolbarModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { NarikMatDataTableSelect } from './narik-mat-data-table-select.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { NarikMatToolbarModule } from '../narik-mat-toolbar/narik-mat-toolbar.module';\r\nimport { NarikMatDataTableModule } from '../narik-mat-data-table/narik-mat-data-table.module';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatSelectModule,\r\n        MatIconModule,\r\n        MatFormFieldModule,\r\n        MatProgressSpinnerModule,\r\n        MatInputModule,\r\n        MatToolbarModule,\r\n        MatTooltipModule,\r\n        MatAutocompleteModule,\r\n        TranslateModule,\r\n        NarikMatToolbarModule,\r\n        NarikMatDataTableModule,\r\n    ],\r\n    declarations: [NarikMatDataTableSelect],\r\n    exports: [NarikMatDataTableSelect],\r\n    providers: [],\r\n})\r\nexport class NarikMatDataTableSelectModule {}\r\n","import { Component, forwardRef, Injector, Input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NarikRadioGroup } from '@narik/ui-core';\r\nimport { FORM_ITEM_DEFAULT_CLASS } from '../injectionTokens';\r\nimport { NARIK_DATA_DISPLAY_VALUE_INPUTS } from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-radio-group , narik-radio-group',\r\n    templateUrl: 'narik-mat-radio-group.component.html',\r\n    inputs: [...NARIK_DATA_DISPLAY_VALUE_INPUTS],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NarikMatRadioGroup),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatRadioGroup extends NarikRadioGroup {\r\n    displayErrorMode = 'icon';\r\n    _cssClass: string;\r\n    itemsData: any[] = [];\r\n    _layoutDirection: 'vertical' | 'horizontal' = 'vertical';\r\n\r\n    @Input()\r\n    set layoutDirection(value: 'vertical' | 'horizontal') {\r\n        this._layoutDirection = value;\r\n    }\r\n    get layoutDirection(): 'vertical' | 'horizontal' {\r\n        return this._layoutDirection;\r\n    }\r\n\r\n    @Input()\r\n    set cssClass(value: string) {\r\n        this._cssClass = value;\r\n    }\r\n    get cssClass(): string {\r\n        return this._cssClass;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        const _defaultFormItemClass = injector.get(\r\n            FORM_ITEM_DEFAULT_CLASS,\r\n            null\r\n        );\r\n        if (_defaultFormItemClass) {\r\n            this.cssClass = _defaultFormItemClass;\r\n        }\r\n    }\r\n\r\n    protected useData(data: any[]) {\r\n        this.itemsData = data;\r\n    }\r\n}\r\n","<mat-form-field\n  class=\"mat-form-field-no-underline\"\n  [class]=\"cssClass\"\n  floatLabel=\"always\"\n  [ngClass]=\"{\n    'mat-form-field-no-underline-without-label': !label,\n    'narik-mat-form-field-invalid': !!errors\n  }\"\n>\n  <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n  <input matInput placeholder=\"Input\" style=\"display: none\" />\n  <mat-spinner\n    class=\"select-clear\"\n    matSuffix\n    *ngIf=\"dataIsLoading\"\n    mode=\"indeterminate\"\n    diameter=\"17\"\n  ></mat-spinner>\n  <mat-radio-group\n    [(ngModel)]=\"value\"\n    [ngClass]=\"{ 'vertical-content': layoutDirection == 'vertical' }\"\n  >\n    <mat-radio-button\n      class=\"example-radio-button\"\n      *ngFor=\"let item of itemsData\"\n      [value]=\"item[valueField]\"\n      (blur)=\"onBlur($event)\"\n    >\n      {{ item[displayField] }}\n    </mat-radio-button>\n  </mat-radio-group>\n\n  <mat-hint *ngIf=\"!!errors && displayErrorMode === 'hint'\">\n    <span class=\"mat-error\">{{ errors }}</span>\n  </mat-hint>\n  <mat-icon\n    *ngIf=\"!!errors && displayErrorMode === 'icon'\"\n    color=\"error\"\n    matTooltip=\"{{ errors }}\"\n    matSuffix\n    matTooltipClass=\"tooltip-red\"\n    >error_outline</mat-icon\n  >\n</mat-form-field>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NarikMatRadioGroup } from './narik-mat-radio-group.component';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatRadioModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        MatProgressSpinnerModule,\r\n        MatTooltipModule,\r\n        MatIconModule,\r\n    ],\r\n    declarations: [NarikMatRadioGroup],\r\n    exports: [NarikMatRadioGroup],\r\n    providers: [],\r\n})\r\nexport class NarikMatRadioGroupModule {}\r\n","import { Mixin } from '@narik/common';\r\nimport { NarikSelect } from '@narik/ui-core';\r\n\r\nimport { NarikMatFormFieldInput } from './narik-mat-form-field';\r\n\r\nexport interface INarikMatSelectBase\r\n    extends NarikMatFormFieldInput,\r\n        NarikSelect {}\r\n\r\nexport class NarikMatSelectBase extends Mixin<INarikMatSelectBase>(\r\n    NarikSelect,\r\n    NarikMatFormFieldInput\r\n) {}\r\n{\r\n}\r\n","import {\r\n    Component,\r\n    forwardRef,\r\n    Injector,\r\n    HostListener,\r\n    OnInit,\r\n    ViewChild,\r\n    ElementRef,\r\n    Output,\r\n    EventEmitter,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { NARIK_MAT_FORM_INPUTS } from '../base/narik-mat-form-field';\r\nimport { NarikMatSelectBase } from '../base/narik-mat-select-base';\r\nimport { Observable } from 'rxjs';\r\nimport { Subject } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { map } from 'rxjs/operators';\r\nimport { SPACE, ENTER } from '@angular/cdk/keycodes';\r\nimport {\r\n    NARIK_DATA_DISPLAY_VALUE_INPUTS,\r\n    NARIK_SELECT_INPUTS,\r\n    NARIK_DATA_DISPLAY_VALUE_OUTPUTS,\r\n} from '../input-output-items';\r\n\r\n@Component({\r\n    selector: 'narik-mat-select , narik-select',\r\n    templateUrl: 'narik-mat-select.component.html',\r\n    styleUrls: ['narik-mat-select.component.css'],\r\n    inputs: [\r\n        ...NARIK_MAT_FORM_INPUTS,\r\n        ...NARIK_DATA_DISPLAY_VALUE_INPUTS,\r\n        ...NARIK_SELECT_INPUTS,\r\n    ],\r\n    outputs: [...NARIK_DATA_DISPLAY_VALUE_OUTPUTS],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NarikMatSelect),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class NarikMatSelect extends NarikMatSelectBase implements OnInit {\r\n    optionData: any[] = [];\r\n    filteredData: Observable<any[]>;\r\n    textChanged = new Subject<{ filter: string; force: boolean }>();\r\n    @ViewChild('input', { static: false })\r\n    input: ElementRef;\r\n\r\n    isOver = false;\r\n\r\n    @Output()\r\n    iconClicked: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    private _filter(value: string): string[] {\r\n        const filterValue = value.toLowerCase();\r\n\r\n        return this.optionData.filter(\r\n            (item) =>\r\n                item[this.displayField].toLowerCase().indexOf(filterValue) === 0\r\n        );\r\n    }\r\n\r\n    iconClick(icon) {\r\n        this.iconClicked.emit(icon);\r\n    }\r\n\r\n    onKeydown(keyEvent: KeyboardEvent) {\r\n        if (keyEvent.keyCode === SPACE) {\r\n            keyEvent.stopPropagation();\r\n            keyEvent.cancelBubble = true;\r\n        }\r\n    }\r\n    keyUp(keyEvent: KeyboardEvent) {\r\n        if (keyEvent.keyCode !== ENTER) {\r\n            this.textChanged.next({\r\n                filter: this.input.nativeElement.value,\r\n                force: false,\r\n            });\r\n        }\r\n    }\r\n\r\n    protected useData(data: any[]) {\r\n        this.optionData = data;\r\n        this.textChanged.next({\r\n            filter: this.input ? this.input.nativeElement.value : null,\r\n            force: true,\r\n        });\r\n    }\r\n\r\n    @HostListener('mouseover')\r\n    onHover() {\r\n        this.isOver = true;\r\n    }\r\n\r\n    @HostListener('mouseleave')\r\n    onLeave() {\r\n        this.isOver = false;\r\n    }\r\n\r\n    clear(e: MouseEvent) {\r\n        this.value = undefined;\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n    }\r\n\r\n    refresh(e: MouseEvent) {\r\n        this.reLoadData();\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n    }\r\n    ngOnInit() {\r\n        super.ngOnInit();\r\n        this.filteredData = this.textChanged.pipe(\r\n            startWith(null),\r\n            debounceTime(300),\r\n            distinctUntilChanged(\r\n                (\r\n                    x: { filter: string; force: boolean },\r\n                    y: { filter: string; force: boolean }\r\n                ) => {\r\n                    return !!x && x.filter === y.filter && !y.force;\r\n                }\r\n            ),\r\n            map((filterItem: { filter: string; force: boolean }) =>\r\n                filterItem && filterItem.filter\r\n                    ? this._filter(filterItem.filter)\r\n                    : this.optionData.slice()\r\n            )\r\n        );\r\n        this.detectChanges();\r\n    }\r\n}\r\n","<mat-form-field\n  [class]=\"cssClass\"\n  [floatLabel]=\"floatLabel\"\n  [appearance]=\"appearance\"\n  [hintLabel]=\"hintLabel\"\n  [ngClass]=\"{ 'narik-mat-form-field-invalid': !!errors }\"\n>\n  <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n  <mat-select\n    [disabled]=\"disabled\"\n    [required]=\"required\"\n    placeholder=\"{{ placeHolder }}\"\n    [(ngModel)]=\"value\"\n    [name]=\"name\"\n  >\n    <ng-container *ngIf=\"options.showSearchBox\">\n      <div class=\"search-continer\">\n        <input\n          autocomplete=\"off\"\n          #input\n          class=\"search-input\"\n          placeholder=\"{{ 'search' | translate }}\"\n          matInput\n          (keydown)=\"onKeydown($event)\"\n          (keyup)=\"keyUp($event)\"\n          type=\"text\"\n          (blur)=\"onBlur($event)\"\n        />\n      </div>\n    </ng-container>\n    <mat-option\n      *ngFor=\"let item of filteredData | async\"\n      [value]=\"item[valueField]\"\n    >\n      {{ item[displayField] }}\n    </mat-option>\n    <ng-container *ngIf=\"options.showToolbar\">\n      <narik-mat-toolbar\n        [displayStyle]=\"''\"\n        cssClass=\"select-tool-bar\"\n        itemsStyle=\"mat-flat-button\"\n        itemsCssClass=\"select-tool-bar-btn\"\n        [moduleKey]=\"options.toolbarModuleKey\"\n        [host]=\"this\"\n        [toolbarKey]=\"options.toolbarKey\"\n      ></narik-mat-toolbar>\n    </ng-container>\n  </mat-select>\n\n  <mat-spinner\n    class=\"select-clear\"\n    matSuffix\n    *ngIf=\"dataIsLoading\"\n    mode=\"indeterminate\"\n    diameter=\"17\"\n  ></mat-spinner>\n  <mat-icon\n    matTooltip=\"{{ 'clear' | translate }}\"\n    class=\"select-clear\"\n    (click)=\"clear($event)\"\n    *ngIf=\"isOver && value && !required\"\n    color=\"warn\"\n    matSuffix\n    >clear</mat-icon\n  >\n\n  <mat-icon (click)=\"iconClick('suffix')\" *ngIf=\"suffixIcon\" matSuffix>{{\n    suffixIcon\n  }}</mat-icon>\n  <mat-icon (click)=\"iconClick('prefix')\" *ngIf=\"prefixIcon\" matPrefix>{{\n    prefixIcon\n  }}</mat-icon>\n  <mat-hint *ngIf=\"startHint\">\n    {{ startHint }}\n  </mat-hint>\n  <mat-hint *ngIf=\"!!errors && displayErrorMode === 'hint'\">\n    <span class=\"mat-error\">{{ errors }}</span>\n  </mat-hint>\n  <mat-icon\n    *ngIf=\"!!errors && displayErrorMode === 'icon'\"\n    color=\"error\"\n    matTooltip=\"{{ errors }}\"\n    matSuffix\n    matTooltipClass=\"tooltip-red\"\n    >error_outline</mat-icon\n  >\n  <mat-hint *ngIf=\"endHint\" align=\"end\">{{ endHint }}</mat-hint>\n\n  <span *ngIf=\"prefixContent\" matPrefix>{{ prefixContent }}</span>\n  <span *ngIf=\"suffixContent\" matSuffix>{{ suffixContent }}</span>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NarikMatSelect } from './narik-mat-select.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NarikMatToolbarModule } from '../narik-mat-toolbar/narik-mat-toolbar.module';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        MatSelectModule,\r\n        MatIconModule,\r\n        MatFormFieldModule,\r\n        MatProgressSpinnerModule,\r\n        MatInputModule,\r\n        MatToolbarModule,\r\n        MatTooltipModule,\r\n        TranslateModule,\r\n        NarikMatToolbarModule,\r\n    ],\r\n    declarations: [NarikMatSelect],\r\n    exports: [NarikMatSelect],\r\n    providers: [],\r\n})\r\nexport class NarikMatSelectModule {}\r\n","import { groupBy } from '@narik/common';\r\nimport { EntityField, NarikViewField } from '@narik/infrastructure';\r\nimport { NarikDynamicForm } from '@narik/ui-core';\r\n\r\nimport { Component, Injector, OnInit, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'narik-dynamic-form , narik-mat-dynamic-form',\r\n    templateUrl: 'narik-mat-dynamic-form.component.html',\r\n})\r\nexport class NarikMatDynamicForm extends NarikDynamicForm implements OnInit {\r\n    columnWidth = 100;\r\n    groupCount: number;\r\n    fieldsArray = new Map<number, NarikViewField[] | EntityField[]>();\r\n\r\n    constructor(injector: Injector, viewContainerRef: ViewContainerRef) {\r\n        super(injector, viewContainerRef);\r\n    }\r\n\r\n    ngOnInit() {\r\n        super.ngOnInit();\r\n        if (this.columnsCount === 1) {\r\n            this.layoutGap = 0;\r\n        }\r\n        if (this.groupFields) {\r\n            const data = groupBy(this.fields, 'options.groupIndex');\r\n            data.forEach((x) =>\r\n                this.fieldsArray.set(\r\n                    x.key && x.key !== 'undefined' ? +x.key : 0,\r\n                    x.value\r\n                )\r\n            );\r\n            this.groupCount =\r\n                Math.max(...this.fieldsArray.entriesArray().map((x) => x.key)) +\r\n                1;\r\n        }\r\n\r\n        this.columnWidth = 100 / this.columnsCount;\r\n    }\r\n}\r\n","<div\n  [tab-guard]=\"activeTabGuard\"\n  [auto-focus]=\"activeAutoFocus\"\n  [autoFocusContainerName]=\"defaultFocusField\"\n  fxLayout=\"{{ columnsCount === 1 ? 'column' : 'row wrap' }} \"\n  fxLayout.xs=\"column\"\n  fxLayoutGap.xs=\"0\"\n  fxLayoutGap=\"{{ layoutGap }}px\"\n  fxLayoutAlign=\"flex-start\"\n>\n  <ng-container *ngIf=\"!groupFields\">\n    <div\n      fxFlex.gt-xs=\"0 1 calc({{ columnWidth }}% - {{ layoutGap }}px)\"\n      fxFlex=\"100%\"\n      *ngFor=\"let item of fields; let i = index\"\n    >\n      <ng-container\n        *ngTemplateOutlet=\"\n          fieldContainer;\n          context: {\n            $implicit: item,\n            invisibleItems: invisibleItems,\n            disableItems: disableItems,\n            model: model,\n            form: form\n          }\n        \"\n      ></ng-container>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"groupFields\">\n    <div\n      fxFlex.gt-xs=\"0 1 calc({{ columnWidth }}% - {{ layoutGap }}px)\"\n      fxFlex=\"100%\"\n      *ngFor=\"let item of [].constructor(groupCount); let i = index\"\n    >\n      <div fxLayout=\"column\" class=\"narik-mat-form-group\">\n        <div *ngFor=\"let item of fieldsArray.get(i); let j = index\">\n          <ng-container\n            *ngTemplateOutlet=\"\n              fieldContainer;\n              context: {\n                $implicit: item,\n                invisibleItems: invisibleItems,\n                disableItems: disableItems,\n                model: model,\n                form: form\n              }\n            \"\n          ></ng-container>\n        </div>\n      </div>\n    </div>\n  </ng-container>\n</div>\n\n<ng-template\n  #fieldContainer\n  let-item\n  let-invisibleItems=\"invisibleItems\"\n  let-model=\"model\"\n  let-form=\"form\"\n  let-disableItems=\"disableItems\"\n>\n  <ng-container\n    [formGroup]=\"form\"\n    *ngIf=\"!item.hideExpr || !invisibleItems[item.name]\"\n  >\n    <ng-container *ngIf=\"!customFormComponentKeysObject[item.type || 'text']\">\n      <ng-container\n        *ngIf=\"\n          !item.type ||\n          item.type == 'text' ||\n          item.type == 'number' ||\n          item.type == 'time' ||\n          item.type == 'textArea' ||\n          item.type == 'password'\n        \"\n      >\n        <narik-mat-input\n          [name]=\"item.name\"\n          [required]=\"item.required\"\n          placeHolder=\"{{ item.options.placeHolder | translate }}\"\n          [type]=\"item.type || 'text'\"\n          label=\"{{ item.label | translate }}\"\n          [formControlName]=\"item.model\"\n          [options]=\"item.options\"\n        >\n        </narik-mat-input>\n      </ng-container>\n      <ng-container *ngIf=\"item.type == 'boolean'\">\n        <narik-mat-checkbox\n          [name]=\"item.name\"\n          [options]=\"item.options\"\n          [formControlName]=\"item.model\"\n          label=\"{{ item.label | translate }}\"\n        ></narik-mat-checkbox>\n      </ng-container>\n      <ng-container *ngIf=\"item.type == 'date'\">\n        <narik-mat-date-picker\n          [options]=\"item.options\"\n          [name]=\"item.name\"\n          [required]=\"item.required\"\n          placeHolder=\"{{ item.options.placeHolder | translate }}\"\n          [formControlName]=\"item.model\"\n          label=\"{{ item.label | translate }}\"\n        ></narik-mat-date-picker>\n      </ng-container>\n      <ng-container *ngIf=\"item.type == 'select'\">\n        <narik-mat-select\n          [options]=\"item.options\"\n          [name]=\"item.name\"\n          [required]=\"item.required\"\n          placeHolder=\"{{ item.options.placeHolder | translate }}\"\n          [dataInfo]=\"item.dataInfo\"\n          label=\"{{ item.label | translate }}\"\n          [formControlName]=\"item.model\"\n        ></narik-mat-select>\n      </ng-container>\n      <ng-container *ngIf=\"item.type == 'autoComplete'\">\n        <narik-mat-autocomplete\n          [options]=\"item.options\"\n          [name]=\"item.name\"\n          [required]=\"item.required\"\n          placeHolder=\"{{ item.options.placeHolder | translate }}\"\n          [minSearchLength]=\"item.options.minSearchLength || 0\"\n          [isLazyLoadData]=\"item.options.isLazyLoadData\"\n          [dataInfo]=\"item.dataInfo\"\n          label=\"{{ item.label | translate }}\"\n          [formControlName]=\"item.model\"\n        ></narik-mat-autocomplete>\n      </ng-container>\n      <ng-container *ngIf=\"item.type == 'radio'\">\n        <narik-mat-radio-group\n          [options]=\"item.options\"\n          [name]=\"item.name\"\n          [required]=\"item.required\"\n          placeHolder=\"{{ item.options.placeHolder | translate }}\"\n          [dataInfo]=\"item.dataInfo\"\n          label=\"{{ item.label | translate }}\"\n          [formControlName]=\"item.model\"\n        ></narik-mat-radio-group>\n      </ng-container>\n      <ng-container *ngIf=\"item.type == 'checkList'\">\n        <narik-mat-checkbox-list\n          [options]=\"item.options\"\n          [name]=\"item.name\"\n          [required]=\"item.required\"\n          placeHolder=\"{{ item.options.placeHolder | translate }}\"\n          [dataInfo]=\"item.dataInfo\"\n          label=\"{{ item.label | translate }}\"\n          [formControlName]=\"item.model\"\n        ></narik-mat-checkbox-list>\n      </ng-container>\n      <ng-container *ngIf=\"item.type == 'table-select'\">\n        <narik-mat-data-table-select\n          [options]=\"item.options\"\n          [name]=\"item.name\"\n          [gridOptions]=\"item.options.gridOptions || {}\"\n          [required]=\"item.required\"\n          placeHolder=\"{{ item.options.placeHolder | translate }}\"\n          [dataInfo]=\"item.dataInfo\"\n          label=\"{{ item.label | translate }}\"\n          [fields]=\"item.options ? item.options.fields : undefined\"\n          [isLazyLoadData]=\"item.options.isLazyLoadData\"\n          [formControlName]=\"item.model\"\n        >\n        </narik-mat-data-table-select>\n      </ng-container>\n    </ng-container>\n\n    <ng-container *ngIf=\"customFormComponentKeysObject[item.type || 'text']\">\n      <ng-container\n        *narikComponentLoader=\"\n          customFormComponentKeysObject[item.type || 'text'];\n          bindings: {\n            field: item,\n            model: model\n          };\n          bindingSource: this;\n          parameters: {\n            form: form\n          }\n        \"\n      ></ng-container>\n    </ng-container>\n  </ng-container>\n</ng-template>\n","import { NarikCommonModule } from '@narik/common';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { NarikMatAutoCompleteModule } from '../narik-mat-auto-complete/narik-mat-auto-complete.module';\r\nimport { NarikMatCheckBoxListModule } from '../narik-mat-check-box-list/narik-mat-checkbox-list.module';\r\nimport { NarikMatCheckBoxModule } from '../narik-mat-check-box/narik-mat-checkbox.module';\r\nimport { NarikMatDataTableSelectModule } from '../narik-mat-data-table-select/narik-mat-data-table-select.module';\r\nimport { NarikMatDatePickerModule } from '../narik-mat-date-picker/public_api';\r\nimport { NarikMatInputModule } from '../narik-mat-input/narik-mat-input.module';\r\nimport { NarikMatRadioGroupModule } from '../narik-mat-radio/narik-mat-radio.module';\r\nimport { NarikMatSelectModule } from '../narik-mat-select/narik-mat-select.module';\r\nimport { NarikMatDynamicForm } from './narik-mat-dynamic-form.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        TranslateModule,\r\n        NarikCommonModule,\r\n        NarikMatInputModule,\r\n        NarikMatSelectModule,\r\n        NarikMatCheckBoxModule,\r\n        NarikMatRadioGroupModule,\r\n        NarikMatAutoCompleteModule,\r\n        NarikMatDatePickerModule,\r\n        NarikMatDataTableSelectModule,\r\n        NarikMatCheckBoxListModule,\r\n        FlexLayoutModule,\r\n    ],\r\n    declarations: [NarikMatDynamicForm],\r\n    exports: [NarikMatDynamicForm],\r\n    providers: [],\r\n})\r\nexport class NarikMatDynamicFormModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { trigger } from '@angular/animations';\r\nimport { NarikDialogContainer, DialogAnimationBody } from '@narik/core';\r\n\r\n@Component({\r\n    templateUrl: 'narik-mat-dialog-container.component.html',\r\n    styleUrls: ['narik-mat-dialog-container.component.css'],\r\n    animations: [trigger('openClose', DialogAnimationBody)],\r\n})\r\nexport class NarikMatDialogContainer\r\n    extends NarikDialogContainer\r\n    implements OnInit {\r\n    ngOnInit() {}\r\n}\r\n","<div\n  [@openClose]=\"isOpen ? 'open' : 'closed'\"\n  [class]=\"options.dialogCssClass\"\n  (@openClose.done)=\"_onAnimationDone($event)\"\n  class=\"mat-dialog-container p-4\"\n  cdkDrag\n  [tab-guard]=\"true\"\n>\n  <h5 cdkDragHandle class=\"dialog-header\">{{ title | translate }}</h5>\n  <mat-dialog-content>\n    <ng-template narik-loader-host></ng-template>\n  </mat-dialog-content>\n  <mat-divider *ngIf=\"actions && actions.length !== 0\"></mat-divider>\n  <mat-dialog-actions\n    [auto-focus]=\"true\"\n    [autoFocusContainerName]=\"options.defaultAction\"\n    *ngIf=\"actions && actions.length !== 0\"\n    align=\"end\"\n  >\n    <ng-container *ngFor=\"let item of actions\">\n      <ng-container>\n        <narik-button\n          [attr.narik-form-item-key]=\"item.dialogResult\"\n          class=\"mr-2\"\n          (nClick)=\"actionClick(item)\"\n          [color]=\"item.color\"\n          [icon]=\"item.icon\"\n          label=\"{{ 'dialog-buttons.' + item.label | translate }}\"\n        ></narik-button>\n      </ng-container>\n    </ng-container>\n  </mat-dialog-actions>\n</div>\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { DialogInputContent, PARAMETERS } from '@narik/infrastructure';\r\n\r\n@Component({\r\n    templateUrl: 'narik-mat-input-dialog.component.html',\r\n})\r\nexport class NarikMatInputDialog implements OnInit, DialogInputContent {\r\n    entity: any = {};\r\n    fields: any[] = [];\r\n    constructor(@Inject(PARAMETERS) parameters: any) {\r\n        if (parameters) {\r\n            this.entity = parameters.entity;\r\n            this.fields = parameters.fields;\r\n        }\r\n    }\r\n\r\n    ngOnInit() {}\r\n}\r\n","<div class=\"pr-2 pl-2\">\n  <narik-dynamic-form [model]=\"entity\" [fields]=\"fields\"></narik-dynamic-form>\n</div>\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { PARAMETERS } from '@narik/infrastructure';\r\n\r\n@Component({\r\n    templateUrl: 'narik-mat-message-dialog.component.html',\r\n    styleUrls: ['narik-mat-message-dialog.component.css'],\r\n})\r\nexport class NarikMatMessageDialog implements OnInit {\r\n    message: string;\r\n    constructor(@Inject(PARAMETERS) parameters: any) {\r\n        if (parameters) {\r\n            this.message = parameters.message;\r\n        }\r\n    }\r\n\r\n    ngOnInit() {}\r\n}\r\n","<div class=\"message-container\">{{message | translate}}</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport {\r\n    DIALOG_CONTAINER,\r\n    DIALOG_INPUT_COMPONENT,\r\n    DIALOG_MESSAGE_COMPONENT,\r\n} from '@narik/infrastructure';\r\nimport { NarikMatButtonModule } from '../narik-mat-button/narik-mat-button.module';\r\nimport { NarikMatDynamicFormModule } from '../narik-mat-dynamic-form/narik-mat-dynamic-form.module';\r\nimport { NarikMatDialogContainer } from './narik-mat-dialog-container.component';\r\nimport { NarikMatInputDialog } from './narik-mat-input-dialog.component';\r\nimport { NarikMatMessageDialog } from './narik-mat-message-dialog.component';\r\nimport { NarikCommonModule } from '@narik/common';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        TranslateModule,\r\n        NarikCommonModule,\r\n        NarikMatButtonModule,\r\n        NarikMatDynamicFormModule,\r\n        MatDialogModule,\r\n        MatDividerModule,\r\n        MatCardModule,\r\n        DragDropModule,\r\n    ],\r\n    declarations: [\r\n        NarikMatDialogContainer,\r\n        NarikMatInputDialog,\r\n        NarikMatMessageDialog,\r\n    ],\r\n    exports: [\r\n        NarikMatDialogContainer,\r\n        NarikMatInputDialog,\r\n        NarikMatMessageDialog,\r\n    ],\r\n    providers: [\r\n        {\r\n            provide: DIALOG_CONTAINER,\r\n            useValue: NarikMatDialogContainer,\r\n        },\r\n        {\r\n            provide: DIALOG_MESSAGE_COMPONENT,\r\n            useValue: NarikMatMessageDialog,\r\n        },\r\n        {\r\n            provide: DIALOG_INPUT_COMPONENT,\r\n            useValue: NarikMatInputDialog,\r\n        },\r\n    ],\r\n    entryComponents: [\r\n        NarikMatDialogContainer,\r\n        NarikMatInputDialog,\r\n        NarikMatMessageDialog,\r\n    ],\r\n})\r\nexport class NarikMatDialogModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport class NodeItem {\r\n    title: string;\r\n    children?: NodeItem[];\r\n    data: any;\r\n}\r\n\r\nexport class TreeNode {\r\n    constructor(\r\n        public expandable: boolean,\r\n        public item: NodeItem,\r\n        public level: number\r\n    ) {}\r\n}\r\n\r\n@Injectable()\r\nexport class TreeNodeDatabase {\r\n    dataChange = new BehaviorSubject<NodeItem[]>([]);\r\n\r\n    get data(): NodeItem[] {\r\n        return this.dataChange.value;\r\n    }\r\n\r\n    constructor() {\r\n        this.initialize([]);\r\n    }\r\n    remove(node: TreeNode, parentNode: TreeNode) {\r\n        let items: NodeItem[] = [];\r\n        if (parentNode) {\r\n            items = parentNode.item.children;\r\n        } else {\r\n            items = this.data;\r\n        }\r\n        const index = items.indexOf(node.item);\r\n        if (index !== -1) {\r\n            items.splice(index, 1);\r\n            this.dataChange.next(this.data);\r\n        }\r\n    }\r\n    add(title: string, parent?: NodeItem): NodeItem {\r\n        const newItem = { title: title } as NodeItem;\r\n        if (parent) {\r\n            if (!parent.children) {\r\n                parent.children = [];\r\n            }\r\n            parent.children.push(newItem);\r\n        } else {\r\n            this.data.push(newItem);\r\n        }\r\n        this.dataChange.next(this.data);\r\n        return newItem;\r\n    }\r\n    initialize(initData: any) {\r\n        this.dataChange.next(initData);\r\n    }\r\n}\r\n","import { NarikTreeview } from '@narik/ui-core';\r\nimport { Component, Input, Injector } from '@angular/core';\r\nimport { TreeNodeDatabase, TreeNode, NodeItem } from './tree-node-dataBase';\r\n\r\nimport {\r\n    MatTreeFlatDataSource,\r\n    MatTreeFlattener,\r\n} from '@angular/material/tree';\r\nimport { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { Observable } from 'rxjs';\r\nimport { of } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'narik-mat-treeview narik-treeview',\r\n    templateUrl: 'narik-mat-treeview.component.html',\r\n    providers: [TreeNodeDatabase],\r\n})\r\nexport class NarikMatTreeview extends NarikTreeview {\r\n    @Input()\r\n    newNodeTitle: string;\r\n\r\n    _selectedItem: any;\r\n    set selectedItem(value: any) {\r\n        this._selectedItem = value;\r\n    }\r\n    get selectedItem(): any {\r\n        return this._selectedItem;\r\n    }\r\n\r\n    nestedNodeMap = new Map<NodeItem, TreeNode>();\r\n    parentNodeMap = new Map<NodeItem, NodeItem>();\r\n\r\n    treeControl: FlatTreeControl<TreeNode>;\r\n    treeFlattener: MatTreeFlattener<NodeItem, TreeNode>;\r\n    treeDataSource: MatTreeFlatDataSource<NodeItem, TreeNode>;\r\n\r\n    constructor(injector: Injector, private database: TreeNodeDatabase) {\r\n        super(injector);\r\n        this.treeFlattener = new MatTreeFlattener(\r\n            this.transformer,\r\n            this._getLevel,\r\n            this._isExpandable,\r\n            this._getChildren\r\n        );\r\n        this.treeControl = new FlatTreeControl<TreeNode>(\r\n            this._getLevel,\r\n            this._isExpandable\r\n        );\r\n        this.treeDataSource = new MatTreeFlatDataSource(\r\n            this.treeControl,\r\n            this.treeFlattener\r\n        );\r\n\r\n        database.dataChange.subscribe(\r\n            (data) => (this.treeDataSource.data = data)\r\n        );\r\n    }\r\n    transformer = (node: NodeItem, level: number) => {\r\n        let flatNode = this.nestedNodeMap.get(node);\r\n        if (!flatNode) {\r\n            flatNode = new TreeNode(\r\n                !!node.children && node.children.length !== 0,\r\n                node,\r\n                level\r\n            );\r\n            this.nestedNodeMap.set(node, flatNode);\r\n        } else {\r\n            flatNode.level = level;\r\n            flatNode.expandable = !!node.children && node.children.length !== 0;\r\n        }\r\n        return flatNode;\r\n    };\r\n\r\n    private _getLevel = (node: TreeNode) => node.level;\r\n\r\n    private _isExpandable = (node: TreeNode) => {\r\n        return node.expandable;\r\n    };\r\n\r\n    private _getChildren = (node: NodeItem): Observable<NodeItem[]> =>\r\n        of(node.children);\r\n\r\n    hasChild = (_: number, _nodeData: TreeNode) => _nodeData.expandable;\r\n\r\n    initParentMap(menuItem: NodeItem) {\r\n        if (menuItem.children) {\r\n            for (const item of menuItem.children) {\r\n                this.parentNodeMap.set(item, menuItem);\r\n                this.initParentMap(item);\r\n            }\r\n        }\r\n    }\r\n    selectNode(node: TreeNode) {\r\n        this.selectedNode = node;\r\n        this.selectedItem = node ? node.item : null;\r\n    }\r\n\r\n    addNode(selectedNode: TreeNode) {\r\n        const newMenu = this.database.add(\r\n            this.newNodeTitle,\r\n            selectedNode ? selectedNode.item : null\r\n        );\r\n        if (selectedNode) {\r\n            this.parentNodeMap.set(newMenu, selectedNode.item);\r\n            this.treeControl.expand(selectedNode);\r\n        }\r\n    }\r\n    deleteNode(selectedNode: TreeNode) {\r\n        const parentItem = this.parentNodeMap.get(this.selectedItem);\r\n        let parentNode = null;\r\n        if (parentItem) {\r\n            parentNode = this.nestedNodeMap.get(parentItem);\r\n        }\r\n        this.database.remove(selectedNode, parentNode);\r\n        this.selectNode(null);\r\n    }\r\n\r\n    dataSourceChanged() {\r\n        this.database.initialize(this.dataSource);\r\n\r\n        for (const item of this.dataSource) {\r\n            this.initParentMap(item);\r\n        }\r\n    }\r\n}\r\n","<narik-mat-toolbar *ngIf=\"toolbarKey\" [host]=\"this\" [toolbarKey]=\"toolbarKey\"></narik-mat-toolbar>\n<mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\n  <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding>\n    <button mat-icon-button disabled></button>\n    <span class=\"mat-tree-node-text\" [ngClass]=\"{ selected: node === selectedNode }\" (click)=\"selectNode(node)\">\n      {{ node.item.title }}\n    </span>\n  </mat-tree-node>\n  <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding>\n    <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.filename\">\n      <mat-icon class=\"mat-icon-rtl-mirror\">\n        {{\n        treeControl.isExpanded(node)\n        ? \"expand_more\"\n        : \"chevron_right\"\n        }}\n      </mat-icon>\n    </button>\n    <span class=\"mat-tree-node-text\" [ngClass]=\"{ selected: node === selectedNode }\" (click)=\"selectNode(node)\">\n      {{ node.item.title }}\n    </span>\n  </mat-tree-node>\n</mat-tree>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NarikMatTreeview } from './narik-mat-treeview.component';\r\nimport { NarikMatToolbarModule } from '../narik-mat-toolbar/narik-mat-toolbar.module';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        MatTreeModule,\r\n        NarikMatToolbarModule,\r\n        MatIconModule,\r\n    ],\r\n    declarations: [NarikMatTreeview],\r\n    exports: [NarikMatTreeview],\r\n    providers: [],\r\n})\r\nexport class NarikMatTreeviewModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n    imports: [CommonModule],\r\n    declarations: [],\r\n    exports: [],\r\n    providers: [],\r\n})\r\nexport class NarikMatCoreModule {}\r\n","import {\r\n    Component,\r\n    OnInit,\r\n    Input,\r\n    Output,\r\n    EventEmitter,\r\n    HostListener,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'narik-mat-tab-header',\r\n    templateUrl: 'narik-mat-tab-outlet-close-header.component.html',\r\n    styleUrls: ['narik-mat-tab-outlet-close-header.component.css'],\r\n})\r\nexport class NarikMatTabOutletHeaderComponent implements OnInit {\r\n    isOver = false;\r\n\r\n    @Input()\r\n    title: string;\r\n\r\n    @Output()\r\n    closeRequest = new EventEmitter<any>();\r\n\r\n    @HostListener('mouseover') onHover() {\r\n        this.isOver = true;\r\n    }\r\n\r\n    @HostListener('mouseleave')\r\n    onLeave() {\r\n        this.isOver = false;\r\n    }\r\n\r\n    constructor() {}\r\n\r\n    ngOnInit() {}\r\n\r\n    requestClose() {\r\n        this.closeRequest.emit();\r\n    }\r\n}\r\n","<div class=\"header-container\">\n  {{title | translate}}\n  <mat-icon matTooltip=\"{{'close' | translate}}\"\n  [matTooltipPosition]=\"'above'\"\n   *ngIf=\"isOver\" color=\"accent\" (click)=\"requestClose()\">close</mat-icon>\n</div>\n","import { Component, OnInit, Input, Injector } from '@angular/core';\r\n\r\nimport { NarikTabOutlet } from '@narik/ui-core';\r\n\r\n@Component({\r\n    selector: 'narik-mat-tab-outlet , narik-tab-outlet',\r\n    templateUrl: 'narik-mat-tab-outlet.component.html',\r\n})\r\nexport class NarikMatTabOutlet extends NarikTabOutlet implements OnInit {\r\n    @Input()\r\n    isLabel100Percent = true;\r\n\r\n    @Input()\r\n    animationDuration = '0ms';\r\n    /**\r\n     *\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","<div *ngIf=\"tabs.length\" [ngClass]=\"{'w-100': isLabel100Percent}\">\n    <mat-tab-group  [animationDuration]=\"animationDuration\" [(selectedIndex)]=\"selectedIndex\">\n      <mat-tab *ngFor=\"let tab of tabs; let index = index;trackBy: trackByFn\">\n        <ng-template mat-tab-label>\n          <narik-mat-tab-header (closeRequest)=\"removeTab(index);\" [title]='tab.title'></narik-mat-tab-header>\n        </ng-template>\n  \n        <ng-container *ngIf=\"tab.component\">\n          <ng-container *narikComponentLoader=\"\n          tab.component;\n          parameters:tab.data;\n          providers:tab.providers\n            \"></ng-container>\n        </ng-container>\n  \n      </mat-tab>\n    </mat-tab-group>\n  </div>\n  ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { NarikMatTabOutlet } from './narik-mat-tab-outlet.component';\r\nimport { NarikMatTabOutletHeaderComponent } from './narik-mat-tab-outlet-close-header.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NarikCommonModule } from '@narik/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        MatTabsModule,\r\n        TranslateModule,\r\n        MatIconModule,\r\n        MatTooltipModule,\r\n        NarikCommonModule,\r\n    ],\r\n    declarations: [NarikMatTabOutlet, NarikMatTabOutletHeaderComponent],\r\n    exports: [NarikMatTabOutlet, NarikMatTabOutletHeaderComponent],\r\n    providers: [],\r\n})\r\nexport class NarikMatTabOutletModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { NarikMatAutoCompleteModule } from './narik-mat-auto-complete/narik-mat-auto-complete.module';\r\nimport { NarikMatBusyIndicatorModule } from './narik-mat-busy-indicator/narik-mat-busy-indicator.module';\r\nimport { NarikMatButtonModule } from './narik-mat-button/narik-mat-button.module';\r\nimport { NarikMatCheckBoxModule } from './narik-mat-check-box/narik-mat-checkbox.module';\r\nimport { NarikMatCheckBoxListModule } from './narik-mat-check-box-list/narik-mat-checkbox-list.module';\r\nimport { NarikMatDataTableModule } from './narik-mat-data-table/narik-mat-data-table.module';\r\nimport { NarikMatDatePickerModule } from './narik-mat-date-picker/narik-mat-date-picker.module';\r\nimport { NarikMatDialogModule } from './narik-mat-dialog/narik-mat-dialog.module';\r\nimport { NarikMatDynamicFormModule } from './narik-mat-dynamic-form/narik-mat-dynamic-form.module';\r\nimport { NarikMatSelectModule } from './narik-mat-select/narik-mat-select.module';\r\nimport { NarikMatInputModule } from './narik-mat-input/narik-mat-input.module';\r\nimport { NarikMatRadioGroupModule } from './narik-mat-radio/narik-mat-radio.module';\r\nimport { NarikMatTreeviewModule } from './narik-mat-treeview/narik-mat-treeview.module';\r\nimport { NarikMatToolbarModule } from './narik-mat-toolbar/narik-mat-toolbar.module';\r\nimport { NarikMatCoreModule } from './narik-mat-core/narik-mat-core.module';\r\nimport { NarikMatDataTableSelectModule } from './narik-mat-data-table-select/narik-mat-data-table-select.module';\r\nimport { NarikMatTabOutletModule } from './narik-mat-tab-outlet/narik-mat-tab-outlet.module';\r\n\r\n@NgModule({\r\n    imports: [\r\n        TranslateModule,\r\n        NarikMatAutoCompleteModule,\r\n        NarikMatBusyIndicatorModule,\r\n        NarikMatButtonModule,\r\n        NarikMatCheckBoxModule,\r\n        NarikMatCheckBoxListModule,\r\n        NarikMatDataTableModule,\r\n        NarikMatDatePickerModule,\r\n        NarikMatDialogModule,\r\n        NarikMatDynamicFormModule,\r\n        NarikMatInputModule,\r\n        NarikMatRadioGroupModule,\r\n        NarikMatSelectModule,\r\n        NarikMatToolbarModule,\r\n        NarikMatTreeviewModule,\r\n        NarikMatCoreModule,\r\n        NarikMatDataTableSelectModule,\r\n        NarikMatTabOutletModule,\r\n    ],\r\n    declarations: [],\r\n    exports: [\r\n        TranslateModule,\r\n        NarikMatAutoCompleteModule,\r\n        NarikMatBusyIndicatorModule,\r\n        NarikMatButtonModule,\r\n        NarikMatCheckBoxModule,\r\n        NarikMatCheckBoxListModule,\r\n        NarikMatDataTableModule,\r\n        NarikMatDatePickerModule,\r\n        NarikMatDialogModule,\r\n        NarikMatDynamicFormModule,\r\n        NarikMatInputModule,\r\n        NarikMatRadioGroupModule,\r\n        NarikMatSelectModule,\r\n        NarikMatToolbarModule,\r\n        NarikMatTreeviewModule,\r\n        NarikMatCoreModule,\r\n        NarikMatDataTableSelectModule,\r\n        NarikMatTabOutletModule,\r\n    ],\r\n    providers: [],\r\n    entryComponents: [],\r\n})\r\nexport class NarikUiMaterialModule {}\r\n","import { NarikEntity } from '@narik/infrastructure';\r\nimport { NarikListForm } from '@narik/app-core';\r\nimport { OnInit, AfterViewInit, Injector, Directive } from '@angular/core';\r\nimport { MatLazyDataSource } from '../data-source/mat-lazy-data-source';\r\nimport { MatLocalDataSource } from '../data-source/mat-local-data-source';\r\n\r\n@Directive()\r\nexport class NarikUiListForm<T extends NarikEntity>\r\n    extends NarikListForm<T>\r\n    implements OnInit, AfterViewInit {\r\n    get isServerSide(): boolean {\r\n        return this.config && this.config.isServerSideData ? true : false;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.hasDataSource = true;\r\n    }\r\n\r\n    ngOnInit() {\r\n        super.ngOnInit();\r\n        if (this.config) {\r\n            if (this.isServerSide) {\r\n                this.dataSource = new MatLazyDataSource(\r\n                    this.queryService,\r\n                    () => this.DataInfoForGetList\r\n                );\r\n            } else {\r\n                this.dataSource = new MatLocalDataSource(\r\n                    this.queryService,\r\n                    () => this.DataInfoForGetList\r\n                );\r\n            }\r\n        }\r\n    }\r\n    ngAfterViewInit() {}\r\n}\r\n","import { NarikEntity } from '@narik/infrastructure';\r\nimport { NarikEditForm } from '@narik/app-core';\r\nimport { Injector } from '@angular/core';\r\nexport class NarikUiEditForm<T extends NarikEntity> extends NarikEditForm<T> {\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","/*\r\n * Public API Surface of narik-ui-material\r\n */\r\n\r\nexport * from './lib/narik-ui-material.module';\r\nexport * from './lib/base/public_api';\r\nexport * from './lib/injectionTokens';\r\nexport * from './lib/data-source/public_api';\r\nexport * from './lib/narik-mat-auto-complete/public_api';\r\nexport * from './lib/narik-mat-busy-indicator/public_api';\r\nexport * from './lib/narik-mat-button/public_api';\r\nexport * from './lib/narik-mat-check-box/public_api';\r\nexport * from './lib/narik-mat-check-box-list/public_api';\r\nexport * from './lib/narik-mat-input/public_api';\r\nexport * from './lib/narik-mat-radio/public_api';\r\nexport * from './lib/narik-mat-date-picker/public_api';\r\nexport * from './lib/narik-mat-select/public_api';\r\nexport * from './lib/narik-mat-toolbar/public_api';\r\nexport * from './lib/narik-mat-dynamic-form/public_api';\r\nexport * from './lib/narik-mat-treeview/public_api';\r\nexport * from './lib/narik-mat-dialog/public_api';\r\nexport * from './lib/narik-mat-data-table/public_api';\r\nexport * from './lib/narik-mat-core/public_api';\r\nexport * from './lib/narik-mat-data-table-select/public_api';\r\nexport * from './lib/narik-mat-tab-outlet/public_api';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}