{"version":3,"file":"narik-ui-core.mjs","sources":["../../../projects/narik-ui-core/src/lib/components/narik-dialog-overlay-container/narik-dialog-overlay-container.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-dialog-overlay-container/narik-dialog-overlay-container.component.html","../../../projects/narik-ui-core/src/lib/index.ts","../../../projects/narik-ui-core/src/lib/services/dynamic-form.service.ts","../../../projects/narik-ui-core/src/lib/narik-ui-core.module.ts","../../../projects/narik-ui-core/src/lib/base/narik-ui-component.ts","../../../projects/narik-ui-core/src/lib/base/narik-form-component.ts","../../../projects/narik-ui-core/src/lib/components/narik-input.component.ts","../../../projects/narik-ui-core/src/lib/base/narik-data-oriented-component.ts","../../../projects/narik-ui-core/src/lib/injectionTokens.ts","../../../projects/narik-ui-core/src/lib/base/narik-data-display-value-component.ts","../../../projects/narik-ui-core/src/lib/components/narik-select.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-checkbox.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-radio-group.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-checkbox-list.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-dynamic-form.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-data-table.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-button.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-toolbar.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-date-picker.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-auto-complete.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-treeview.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-color-picker.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-data-table-select.component.ts","../../../projects/narik-ui-core/src/lib/components/narik-tab-outlet.component.ts","../../../projects/narik-ui-core/src/public_api.ts","../../../projects/narik-ui-core/src/narik-ui-core.ts"],"sourcesContent":["import { ComponentLoaderHostDirective } from '@narik/common';\r\nimport {\r\n    DialogOption,\r\n    DialogOverlayContainer,\r\n    DialogRef,\r\n} from '@narik/infrastructure';\r\n\r\nimport { Component, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n    templateUrl: 'narik-dialog-overlay-container.component.html',\r\n    styleUrls: ['narik-dialog-overlay-container.component.css'],\r\n})\r\nexport class NarikDialogOverlayContainerComponent\r\n    implements DialogOverlayContainer, OnInit {\r\n    @ViewChild(ComponentLoaderHostDirective, { static: true })\r\n    loaderHost: ComponentLoaderHostDirective;\r\n\r\n    dialogRef: DialogRef<any>;\r\n    get contentContainerRef(): ViewContainerRef {\r\n        return this.loaderHost.viewContainerRef;\r\n    }\r\n\r\n    options: DialogOption;\r\n    constructor() {}\r\n\r\n    ngOnInit() {}\r\n\r\n    modalClick(e) {\r\n        if (!this.options.isFullScreen && !this.options.disableAutoClose) {\r\n            this.dialogRef.close(undefined, 'DIALOG');\r\n        }\r\n    }\r\n}\r\n","<div class=\"narik-modal\">\n  <div (click)='modalClick($event)' [ngClass]=\"{ 'narik-overlay-dark-backdrop': options.showBackdrop }\" class=\"narik-back-drop\"></div>\n  <div class=\"narik-content-wrapper cdk-overlay-pane\">\n    <div class=\"narik-content-container\" [ngStyle]=\"{'width':options.width  ? options.width : null,'height':options.height  ? options.height : null }\"\n      [ngClass]=\"{'full-screen':options.isFullScreen}\">\n      <ng-template narik-loader-host></ng-template>\n    </div>\n  </div>\n</div>\n","import { Provider } from '@angular/core';\r\nimport { NarikDialogOverlayContainerComponent } from './components/narik-dialog-overlay-container/narik-dialog-overlay-container.component';\r\n\r\nexport const COMPONENTS: Provider[] = [NarikDialogOverlayContainerComponent];\r\nexport const ENTRY_COMPONENTS: Provider[] = [\r\n    NarikDialogOverlayContainerComponent,\r\n];\r\nexport const EXPORT_COMPONENTS: Provider[] = [\r\n    NarikDialogOverlayContainerComponent,\r\n];\r\n","import {\r\n    NarikViewField,\r\n    EntityField,\r\n    isNarikViewField,\r\n} from '@narik/infrastructure';\r\nimport { Injectable, Type } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\nexport interface DynamicFormComponent {\r\n    field: NarikViewField | EntityField;\r\n    model: any;\r\n    form: FormGroup;\r\n}\r\nexport abstract class DynamicFormService {\r\n    abstract initDynamicFormFields(\r\n        fields: NarikViewField[] | EntityField[]\r\n    ): NarikViewField[];\r\n    abstract initDynamicFormModel(model: any): any;\r\n    abstract createFieldsFromEntityFields(\r\n        fields: EntityField[]\r\n    ): NarikViewField[];\r\n    abstract getDynamicFormComponentKeys(): string[];\r\n    abstract getDynamicFormComponent(key: string): Type<DynamicFormComponent>;\r\n    abstract addDynamicFormComponent(\r\n        key: string,\r\n        component: Type<DynamicFormComponent>\r\n    );\r\n}\r\n\r\n@Injectable()\r\nexport class NarikDynamicFormService extends DynamicFormService {\r\n    private dynamicFormComponent: Map<\r\n        string,\r\n        Type<DynamicFormComponent>\r\n    > = new Map<string, Type<DynamicFormComponent>>();\r\n\r\n    initDynamicFormFields(\r\n        fields: NarikViewField[] | EntityField[]\r\n    ): NarikViewField[] {\r\n        if (fields && fields[0] && !isNarikViewField(fields[0])) {\r\n            fields = this.createFieldsFromEntityFields(fields as EntityField[]);\r\n        }\r\n        return fields as NarikViewField[];\r\n    }\r\n    initDynamicFormModel(model: any): any {\r\n        return model || {};\r\n    }\r\n    createFieldsFromEntityFields(fields: EntityField[]): NarikViewField[] {\r\n        return fields.map(\r\n            (x: EntityField) =>\r\n                <NarikViewField>{\r\n                    label: x.title || x.name,\r\n                    model: x.name,\r\n                    name: x.name,\r\n                    type: x.fieldType,\r\n                    options: x.options || {},\r\n                    dataInfo: x.dataInfo || {},\r\n                    showInList:\r\n                        x.showInList === undefined ? true : x.showInList,\r\n                    showInEdit:\r\n                        x.showInEdit === undefined ? true : x.showInEdit,\r\n                    orderInList: x.orderInList,\r\n                    orderInEdit: x.orderInEdit,\r\n                    order: x.order || 100,\r\n                    required: x.required,\r\n                    hideExpr: x.hideExpr,\r\n                    disableExpr: x.disableExpr,\r\n                    validators: x.validators,\r\n                    validatorParams: x.validatorParams,\r\n                }\r\n        );\r\n    }\r\n\r\n    getDynamicFormComponentKeys(): string[] {\r\n        return this.dynamicFormComponent.keysArray();\r\n    }\r\n    getDynamicFormComponent(key: string): Type<DynamicFormComponent> {\r\n        return this.dynamicFormComponent.get(key);\r\n    }\r\n    addDynamicFormComponent(\r\n        key: string,\r\n        component: Type<DynamicFormComponent>\r\n    ) {\r\n        this.dynamicFormComponent.set(key, component);\r\n    }\r\n}\r\n","import { NarikCommonModule } from '@narik/common';\r\nimport {\r\n    DIALOG_OVERLAY_CONTAINER,\r\n    NarikInfrastructureModule,\r\n} from '@narik/infrastructure';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { NarikDialogOverlayContainerComponent } from './components/narik-dialog-overlay-container/narik-dialog-overlay-container.component';\r\nimport { COMPONENTS, ENTRY_COMPONENTS, EXPORT_COMPONENTS } from './index';\r\nimport {\r\n    DynamicFormService,\r\n    NarikDynamicFormService,\r\n} from './services/dynamic-form.service';\r\n\r\n@NgModule({\r\n    imports: [\r\n        FormsModule,\r\n        CommonModule,\r\n        NarikCommonModule,\r\n        NarikInfrastructureModule,\r\n    ],\r\n    declarations: [COMPONENTS],\r\n    exports: [EXPORT_COMPONENTS, FormsModule, CommonModule],\r\n    entryComponents: [ENTRY_COMPONENTS],\r\n    providers: [\r\n        {\r\n            provide: DynamicFormService,\r\n            useClass: NarikDynamicFormService,\r\n        },\r\n        {\r\n            provide: DIALOG_OVERLAY_CONTAINER,\r\n            useValue: NarikDialogOverlayContainerComponent,\r\n        },\r\n    ],\r\n})\r\nexport class NarikUiCoreModule {}\r\n","import {\r\n    NarikComponent,\r\n    MetaDataService,\r\n    MODULE_UI_KEY,\r\n} from '@narik/infrastructure';\r\n\r\nimport { Input, Injector, Directive } from '@angular/core';\r\nimport { NarikInject } from '@narik/core';\r\n\r\n@Directive()\r\nexport class NarikUiComponent extends NarikComponent {\r\n    _options: any = {};\r\n    _defaultOptions = {};\r\n\r\n    get uiKey(): string {\r\n        return undefined;\r\n    }\r\n\r\n    @NarikInject(MetaDataService)\r\n    metaDataService: MetaDataService;\r\n\r\n    @NarikInject(MODULE_UI_KEY)\r\n    containerModuleKey: string;\r\n\r\n    @Input()\r\n    set options(value: any) {\r\n        this._options = this.applyDefaultOptions(value);\r\n    }\r\n    get options(): any {\r\n        return this._options;\r\n    }\r\n\r\n    get DefaultOptions(): any {\r\n        return this._defaultOptions || {};\r\n    }\r\n    constructor(protected injector: Injector) {\r\n        super();\r\n        if (this.uiKey) {\r\n            const dfOptions = this.metaDataService.getInformation<any>(\r\n                'uiDefaultOptions',\r\n                this.containerModuleKey,\r\n                this.uiKey\r\n            );\r\n            if (dfOptions) {\r\n                this._defaultOptions = dfOptions.value;\r\n                this._options = this.applyDefaultOptions(undefined);\r\n            }\r\n        } else {\r\n            this._options = {};\r\n        }\r\n    }\r\n\r\n    protected applyDefaultOptions(value: any) {\r\n        const defOptions = this.DefaultOptions || {};\r\n        if (!value) {\r\n            return { ...defOptions };\r\n        } else {\r\n            return Object.assign({ ...defOptions }, value || {});\r\n        }\r\n    }\r\n}\r\n\r\nexport const NARIK_UI_COMPONENT_INPUTS: string[] = ['options'];\r\n","import { TranslateService } from '@ngx-translate/core';\r\nimport { formatString } from '@narik/common';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { MetaDataService, MODULE_UI_KEY } from '@narik/infrastructure';\r\n\r\nimport {\r\n    EventEmitter,\r\n    Input,\r\n    Output,\r\n    HostBinding,\r\n    Injector,\r\n    AfterViewInit,\r\n    Directive,\r\n} from '@angular/core';\r\nimport {\r\n    ControlValueAccessor,\r\n    FormControl,\r\n    NgModel,\r\n    FormControlName,\r\n} from '@angular/forms';\r\nimport { NarikInject } from '@narik/core';\r\nimport {\r\n    NarikUiComponent,\r\n    NARIK_UI_COMPONENT_INPUTS,\r\n} from './narik-ui-component';\r\n\r\n@Directive()\r\nexport class NarikFormComponent\r\n    extends NarikUiComponent\r\n    implements ControlValueAccessor, AfterViewInit {\r\n    _value: any;\r\n    _id: string;\r\n    identifier: string;\r\n    _name: string;\r\n    _label: string;\r\n    _readOnly: boolean;\r\n    _placeHolder: string;\r\n    _disabled: any;\r\n    _required: boolean;\r\n    errors: string;\r\n\r\n    @NarikInject(NgModel, undefined)\r\n    ngModel: NgModel;\r\n\r\n    @NarikInject(FormControlName, undefined)\r\n    formControlName: FormControlName;\r\n\r\n    @NarikInject(FormControl, undefined)\r\n    formControl: FormControl;\r\n\r\n    // @ViewChild(FormControlName, { static: false })\r\n    // formControl: FormControlName;\r\n\r\n    get control(): FormControl {\r\n        if (this.formControl) {\r\n            return this.formControl;\r\n        } else if (this.formControlName) {\r\n            return this.formControlName.control;\r\n        } else if (this.ngModel) {\r\n            return this.ngModel.control;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    @NarikInject(MetaDataService)\r\n    metaDataService: MetaDataService;\r\n\r\n    @NarikInject(TranslateService, undefined)\r\n    translateService: TranslateService;\r\n\r\n    @NarikInject(MODULE_UI_KEY)\r\n    moduleUiKey: string;\r\n\r\n    @Output()\r\n    change = new EventEmitter<any>();\r\n\r\n    onModelChange: Function = () => {};\r\n    onModelTouched: Function = () => {};\r\n\r\n    onBlur(event) {\r\n        this.onModelTouched();\r\n    }\r\n\r\n    @Input()\r\n    set placeHolder(value: string) {\r\n        this._placeHolder = value;\r\n    }\r\n    get placeHolder(): string {\r\n        return this._placeHolder;\r\n    }\r\n\r\n    @Input()\r\n    set readOnly(value: boolean) {\r\n        this._readOnly = value;\r\n    }\r\n    get readOnly(): boolean {\r\n        return this._readOnly;\r\n    }\r\n\r\n    @Input()\r\n    @HostBinding('attr.narik-form-item-label')\r\n    set label(value: string) {\r\n        this._label = value;\r\n    }\r\n\r\n    get label(): string {\r\n        return this._label;\r\n    }\r\n\r\n    @Input()\r\n    set required(value: boolean) {\r\n        this._required = value;\r\n    }\r\n    get required(): boolean {\r\n        return this._required;\r\n    }\r\n\r\n    @Input()\r\n    @HostBinding('attr.narik-form-item-key')\r\n    set name(value: string) {\r\n        this._name = value;\r\n    }\r\n\r\n    get name(): string {\r\n        return this._name;\r\n    }\r\n\r\n    @Input()\r\n    set id(val: string) {\r\n        this._id = val;\r\n        this.createIdentifier();\r\n    }\r\n\r\n    get id(): string {\r\n        return this._id;\r\n    }\r\n\r\n    set value(val: any) {\r\n        const _oldValue = this._value;\r\n        this._value = this.convertValue(val);\r\n        this.onModelChange(this._value);\r\n        this.change.emit(this._value);\r\n        this.valueChanged(this._value, _oldValue);\r\n    }\r\n    get value(): any {\r\n        return this._value;\r\n    }\r\n\r\n    @Input()\r\n    get disabled() {\r\n        return this._disabled;\r\n    }\r\n    set disabled(value: any) {\r\n        this._disabled = value;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.createIdentifier();\r\n    }\r\n\r\n    ngAfterViewInit() {\r\n        if (this.control) {\r\n            const originalMarkAsTouched = this.control.markAsTouched.bind(\r\n                this.control\r\n            );\r\n            this.control.markAsTouched = (opts) => {\r\n                originalMarkAsTouched(opts);\r\n                this.setValidationErrors();\r\n            };\r\n\r\n            this.control.statusChanges.subscribe(() => {\r\n                this.setValidationErrors();\r\n            });\r\n        }\r\n    }\r\n\r\n    createIdentifier() {\r\n        if (!this._id) {\r\n            this._id = 'input' + UUID.UUID();\r\n        }\r\n    }\r\n\r\n    writeValue(val: any): void {\r\n        this.value = val;\r\n    }\r\n    registerOnChange(fn: Function): void {\r\n        this.onModelChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: Function): void {\r\n        this.onModelTouched = fn;\r\n    }\r\n    setDisabledState?(isDisabled: boolean): void {\r\n        this.disabled = isDisabled;\r\n    }\r\n    protected convertValue(value) {\r\n        return value;\r\n    }\r\n    protected valueChanged(newValue, oldValue) {}\r\n\r\n    setValidationErrors() {\r\n        if (this.control) {\r\n            const errors = [];\r\n            if (!this.control.valid && this.control.touched) {\r\n                errors.push(...this.getMessage());\r\n            }\r\n            this.errors = errors[0] ? errors.join() : undefined;\r\n        }\r\n    }\r\n\r\n    getMessage(): string[] {\r\n        const errors = this.control.errors;\r\n\r\n        const result = [];\r\n        for (const error in errors) {\r\n            if (errors.hasOwnProperty(error)) {\r\n                const parameters: any[] = Object.entries(errors[error]).map(\r\n                    (x) => x[1]\r\n                );\r\n                result.push(\r\n                    formatString(\r\n                        this.translateService.instant('errors.' + error),\r\n                        this.label,\r\n                        ...parameters\r\n                    )\r\n                );\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\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","import {\r\n    NarikFormComponent,\r\n    NARIK_UI_FORM_INPUTS,\r\n} from './../base/narik-form-component';\r\nimport { Input, Injector, Directive } from '@angular/core';\r\n\r\n@Directive()\r\nexport class NarikInput extends NarikFormComponent {\r\n    _type = 'text';\r\n    _maxlength: number;\r\n    _mask: any;\r\n    _icon: string;\r\n    _displayStatus: string;\r\n\r\n    @Input()\r\n    set displayStatus(value: string) {\r\n        this._displayStatus = value;\r\n    }\r\n    get displayStatus(): string {\r\n        return this._displayStatus;\r\n    }\r\n\r\n    @Input()\r\n    set mask(value: any) {\r\n        this._mask = value;\r\n    }\r\n    get mask(): any {\r\n        return this._mask;\r\n    }\r\n\r\n    @Input()\r\n    set maxlength(value: number) {\r\n        this._maxlength = value;\r\n    }\r\n    get maxlength(): number {\r\n        return this._maxlength;\r\n    }\r\n\r\n    @Input()\r\n    set type(value: string) {\r\n        this._type = value;\r\n    }\r\n    get type(): string {\r\n        return this._type;\r\n    }\r\n\r\n    @Input()\r\n    set icon(value: string) {\r\n        this._icon = value;\r\n    }\r\n    get icon(): string {\r\n        return this._icon;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\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 { Observable } from 'rxjs';\r\nimport { Input, OnInit, Injector, Output, EventEmitter, Directive } from '@angular/core';\r\nimport { isEquivalent } from '@narik/common';\r\nimport {\r\n    DataInfo,\r\n    RemoteCallMethodType,\r\n    MODULE_DATA_KEY,\r\n    DataProviderService,\r\n    DataOption,\r\n} from '@narik/infrastructure';\r\n\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport {\r\n    NarikFormComponent,\r\n    NARIK_UI_FORM_INPUTS,\r\n} from './narik-form-component';\r\n\r\n@Directive()\r\nexport abstract class NarikDataOrientedComponent\r\n    extends NarikFormComponent\r\n    implements OnInit {\r\n    private initDataDone = false;\r\n    _dataUrl: string;\r\n    _dataKey: string;\r\n    _dataProviderKey: string;\r\n    _dataParameters: any;\r\n    _moduleKey: string;\r\n    _dataMethod: RemoteCallMethodType;\r\n    _dataUrlMethod: string;\r\n    _listenForDataChange = false;\r\n    _dataInfo: DataInfo;\r\n    _dataSource: any[];\r\n    _dataIsLoading: boolean;\r\n\r\n    @Input()\r\n    loadDataOnInit = true;\r\n\r\n    @Output()\r\n    dataChange = new EventEmitter<any>();\r\n\r\n    @Output()\r\n    selectedItemChange = new EventEmitter<any>();\r\n\r\n    set dataIsLoading(value: boolean) {\r\n        this._dataIsLoading = value;\r\n    }\r\n    get dataIsLoading(): boolean {\r\n        return this._dataIsLoading;\r\n    }\r\n\r\n    @Input()\r\n    set listenForDataChange(value: boolean) {\r\n        this._listenForDataChange = value;\r\n    }\r\n    get listenForDataChange(): boolean {\r\n        return this._listenForDataChange;\r\n    }\r\n\r\n    @Input()\r\n    set dataUrlMethod(value: string) {\r\n        if (value !== this._dataUrlMethod) {\r\n            this._dataUrlMethod = value;\r\n            this.checkIfNeedLoadData();\r\n        }\r\n    }\r\n    get dataUrlMethod(): string {\r\n        return this._dataUrlMethod;\r\n    }\r\n\r\n    @Input()\r\n    set dataMethod(value: RemoteCallMethodType) {\r\n        if (value !== this._dataMethod) {\r\n            this._dataMethod = value;\r\n            this.checkIfNeedLoadData();\r\n        }\r\n    }\r\n    get dataMethod(): RemoteCallMethodType {\r\n        return this._dataMethod;\r\n    }\r\n\r\n    @Input()\r\n    set moduleKey(value: string) {\r\n        if (value !== this._moduleKey) {\r\n            this._moduleKey = value;\r\n            this.checkIfNeedLoadData();\r\n        }\r\n    }\r\n    get moduleKey(): string {\r\n        return this._moduleKey;\r\n    }\r\n\r\n    @Input()\r\n    set dataParameters(value: any) {\r\n        if (!isEquivalent(value, this._dataParameters)) {\r\n            this._dataParameters = value;\r\n            this.checkIfNeedLoadData();\r\n        }\r\n    }\r\n    get dataParameters(): any {\r\n        return this._dataParameters;\r\n    }\r\n\r\n    @Input()\r\n    set dataProviderKey(value: string) {\r\n        if (value !== this._dataProviderKey) {\r\n            this._dataProviderKey = value;\r\n            this.checkIfNeedLoadData();\r\n        }\r\n    }\r\n    get dataProviderKey(): string {\r\n        return this._dataProviderKey;\r\n    }\r\n\r\n    @Input()\r\n    set dataInfo(value: DataInfo) {\r\n        if (!isEquivalent(value, this._dataInfo)) {\r\n            this._dataInfo = value;\r\n            this.checkIfNeedLoadData();\r\n        }\r\n    }\r\n    get dataInfo(): DataInfo {\r\n        return this._dataInfo;\r\n    }\r\n\r\n    @Input()\r\n    set dataKey(value: string) {\r\n        if (value !== this.dataKey) {\r\n            this._dataKey = value;\r\n            this.checkIfNeedLoadData();\r\n        }\r\n    }\r\n    get dataKey(): string {\r\n        return this._dataKey;\r\n    }\r\n\r\n    @Input()\r\n    set dataUrl(value: string) {\r\n        if (value !== this._dataUrl) {\r\n            this._dataUrl = value;\r\n            this.checkIfNeedLoadData();\r\n        }\r\n    }\r\n    get dataUrl(): string {\r\n        return this._dataUrl;\r\n    }\r\n\r\n    @Input()\r\n    set dataSource(value: any[]) {\r\n        this._dataSource = value;\r\n        this.useData(value);\r\n        this.dataChange.emit(value);\r\n    }\r\n\r\n    get dataSource(): any[] {\r\n        return this._dataSource;\r\n    }\r\n\r\n    constructor(protected injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        if (this.loadDataOnInit) {\r\n            this.loadData(this.createDataInfo());\r\n        }\r\n    }\r\n\r\n    private applyData(\r\n        data: any[],\r\n        resolve: (value?: any[] | PromiseLike<any[]>) => void\r\n    ) {\r\n        this.dataSource = data;\r\n        this.dataIsLoading = false;\r\n        this.initDataDone = true;\r\n        resolve(data);\r\n    }\r\n    protected abstract useData(data: any[]);\r\n    protected checkIfNeedLoadData() {\r\n        if (this.initDataDone) {\r\n            this.loadData(this.createDataInfo());\r\n        }\r\n    }\r\n\r\n    protected createDataInfo(): DataInfo {\r\n        if (this.dataInfo) {\r\n            return this.dataInfo;\r\n        } else {\r\n            return {\r\n                dataKey: this.dataKey,\r\n                dataProviderKey: this.dataProviderKey,\r\n                dataUrl: this.dataUrl,\r\n                dataParameters: this.dataParameters,\r\n                dataMethod: this.dataMethod,\r\n                dataUrlMethod: this.dataUrlMethod,\r\n            };\r\n        }\r\n    }\r\n\r\n    protected isDataParametersComplete(dataInfo: DataInfo): boolean {\r\n        if (dataInfo.dataParameters) {\r\n            for (const key in dataInfo.dataParameters) {\r\n                if (dataInfo.dataParameters.hasOwnProperty(key)) {\r\n                    const element = dataInfo.dataParameters[key];\r\n                    if (element === undefined) {\r\n                        return false;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    protected loadData(dataInfo: DataInfo, isReload = false): Promise<any[]> {\r\n        if (dataInfo.dataKey) {\r\n            if (!dataInfo.moduleKey) {\r\n                dataInfo.moduleKey = this.injector.get(MODULE_DATA_KEY);\r\n            }\r\n            return new Promise((resolve, reject) => {\r\n                if (!this.isDataParametersComplete(dataInfo)) {\r\n                    this.applyData([], resolve);\r\n                } else {\r\n                    this.dataIsLoading = true;\r\n                    this.doLoadData(\r\n                        dataInfo,\r\n                        { fromOrigin: isReload },\r\n                        this.listenForDataChange\r\n                    )\r\n                        .pipe(takeWhile(() => this.isAlive))\r\n                        .subscribe((data: any[]) => {\r\n                            this.applyData(data, resolve);\r\n                        });\r\n                }\r\n            });\r\n        }\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        const dataProviderService = this.injector.get(DataProviderService);\r\n        if (listenForDataChange) {\r\n            return dataProviderService.getDataStream(dataInfo, dataOption);\r\n        } else {\r\n            return dataProviderService.getData(dataInfo, dataOption);\r\n        }\r\n    }\r\n\r\n    reLoadData(): Promise<any[]> {\r\n        return this.loadData(this.createDataInfo(), true);\r\n    }\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","import { InjectionToken } from '@angular/core';\r\n\r\nimport { ValueDisplayDefaultFieldNames } from './interfaces/select-default-fields.model';\r\nimport { ButtonDefaultOptions } from './interfaces/button-default-options';\r\n\r\nexport const DEFAULT_VALUE_DISPLAY_FIELD_NAMES = new InjectionToken<ValueDisplayDefaultFieldNames>(\r\n    'DefaultValueDisplayFieldNames'\r\n);\r\nexport const BUTTON_DEFAULT_OPTIONS = new InjectionToken<ButtonDefaultOptions>(\r\n    'ButtonDefaultOptions'\r\n);\r\n","import {\r\n    NarikDataOrientedComponent,\r\n    NARIK_DATA_ORIENTED_INPUTS,\r\n    NARIK_DATA_ORIENTED_OUTPUTS,\r\n} from './narik-data-oriented-component';\r\nimport { Input, Injector, Directive } from '@angular/core';\r\nimport { DEFAULT_VALUE_DISPLAY_FIELD_NAMES } from './../injectionTokens';\r\nimport { isArray } from '@narik/common';\r\n\r\n@Directive()\r\nexport abstract class NarikDataDisplayValueComponent extends NarikDataOrientedComponent {\r\n    _displayField: string;\r\n    _valueField: string;\r\n\r\n    @Input()\r\n    set valueField(value: string) {\r\n        this._valueField = value;\r\n    }\r\n    get valueField(): string {\r\n        return this._valueField;\r\n    }\r\n\r\n    @Input()\r\n    set displayField(value: string) {\r\n        this._displayField = value;\r\n    }\r\n    get displayField(): string {\r\n        return this._displayField;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        const defaultFieldNames = injector.get(\r\n            DEFAULT_VALUE_DISPLAY_FIELD_NAMES,\r\n            {\r\n                valueField: 'id',\r\n                displayField: 'title',\r\n            }\r\n        );\r\n        this.displayField = defaultFieldNames.displayField;\r\n        this.valueField = defaultFieldNames.valueField;\r\n\r\n        this.dataChange.subscribe((x) => {\r\n            if (this.value) {\r\n                this.checkRaiseselectedItemChange(this.value);\r\n            }\r\n        });\r\n    }\r\n\r\n    protected valueChanged(newValue, oldValue) {\r\n        if (newValue !== oldValue) {\r\n            if (newValue) {\r\n                this.checkRaiseselectedItemChange(newValue);\r\n            } else {\r\n                this.selectedItemChange.emit(null);\r\n            }\r\n        }\r\n    }\r\n\r\n    private checkRaiseselectedItemChange(value) {\r\n        if (isArray(this.dataSource)) {\r\n            const item = this.dataSource.filter(\r\n                (x) => x[this.valueField] === value\r\n            )[0];\r\n            this.selectedItemChange.emit(item);\r\n        }\r\n    }\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","import { Input, OnInit, Injector } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { NarikDataDisplayValueComponent } from '../base/narik-data-display-value-component';\r\nimport {\r\n    CommandInfo,\r\n    CommandHost,\r\n    CommandProcessor,\r\n    DialogRef,\r\n    NavigationService,\r\n} from '@narik/infrastructure';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { NarikInject } from '@narik/core';\r\nimport { filter } from 'rxjs/operators';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive()\r\nexport class NarikSelect\r\n    extends NarikDataDisplayValueComponent\r\n    implements ControlValueAccessor, OnInit, CommandHost {\r\n    private changeSubject = new ReplaySubject<void>(1);\r\n\r\n    defaultNavigationProvider = 'route';\r\n\r\n    change$: Observable<any>;\r\n\r\n    @NarikInject(CommandProcessor)\r\n    commandProcessor: CommandProcessor;\r\n\r\n    @NarikInject(NavigationService)\r\n    navigationService: NavigationService;\r\n\r\n    @NarikInject(ActivatedRoute)\r\n    route: ActivatedRoute;\r\n\r\n    get uiKey(): string {\r\n        return 'select';\r\n    }\r\n\r\n    _multiple: boolean;\r\n\r\n    @Input()\r\n    set multiple(value: boolean) {\r\n        this._multiple = value;\r\n    }\r\n    get multiple(): boolean {\r\n        return this._multiple;\r\n    }\r\n\r\n    _dataIsLoading: boolean;\r\n    set dataIsLoading(value: boolean) {\r\n        if (value !== this._dataIsLoading) {\r\n            this.detectChanges();\r\n        }\r\n        this._dataIsLoading = value;\r\n    }\r\n    get dataIsLoading(): boolean {\r\n        return this._dataIsLoading;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.change$ = this.changeSubject.asObservable();\r\n    }\r\n    protected useData(data: any[]) {\r\n        throw new Error('Subclass Must Override useData.');\r\n    }\r\n\r\n    protected detectChanges() {\r\n        this.changeSubject.next();\r\n    }\r\n\r\n    processCommand(cmd: CommandInfo) {\r\n        if (cmd.commandKey === 'refresh') {\r\n            this.reLoadData();\r\n        } else if (cmd.commandKey === 'list') {\r\n            this.showList();\r\n        } else if (cmd.commandKey === 'new') {\r\n            this.newOrEditEntity();\r\n        } else if (cmd.commandKey === 'edit') {\r\n            this.newOrEditEntity(this.value);\r\n        } else {\r\n            this.commandProcessor.processCommand(this, cmd);\r\n        }\r\n    }\r\n\r\n    protected valueChanged(newValue: any, oldValue: any): void {\r\n        super.valueChanged(newValue, oldValue);\r\n        this.detectChanges();\r\n    }\r\n\r\n    ngOnInit() {\r\n        super.ngOnInit();\r\n    }\r\n    protected showList() {\r\n        const data = {};\r\n        data['__dialogTitle'] =\r\n            'list_' + (this.dataKey || this.dataInfo.dataKey);\r\n        this.navigationService\r\n            .navigate(\r\n                this.navigationService.createNavigationCommand(\r\n                    this.defaultNavigationProvider,\r\n                    (this.dataKey || this.dataInfo.dataKey) + '-list'\r\n                ),\r\n                'dialog',\r\n                {\r\n                    relativeTo: this.route,\r\n                },\r\n                data\r\n            )\r\n            .then((d: DialogRef<any>) => {});\r\n    }\r\n    protected newOrEditEntity(value?: any) {\r\n        const data = value\r\n            ? {\r\n                  entityId: value,\r\n              }\r\n            : {};\r\n        data['__dialogTitle'] = this.dataKey || this.dataInfo.dataKey;\r\n        this.navigationService\r\n            .navigate(\r\n                this.navigationService.createNavigationCommand(\r\n                    this.defaultNavigationProvider,\r\n                    this.dataKey || this.dataInfo.dataKey\r\n                ),\r\n                'dialog',\r\n                {\r\n                    relativeTo: this.route,\r\n                },\r\n                data\r\n            )\r\n            .then((d: DialogRef<any>) => {\r\n                d.events\r\n                    .pipe(filter((x) => x.eventType === 'ENTITY_UPDATED'))\r\n                    .subscribe((x) => {\r\n                        this.reLoadData();\r\n                    });\r\n            });\r\n    }\r\n}\r\n\r\nexport const NARIK_SELECT_INPUTS: string[] = ['multiple'];\r\n","import { Directive, Input } from '@angular/core';\r\nimport {\r\n    NarikFormComponent,\r\n    NARIK_UI_FORM_INPUTS,\r\n} from '../base/narik-form-component';\r\n@Directive()\r\nexport abstract class NarikCheckBox extends NarikFormComponent {\r\n    _tag: any;\r\n\r\n    @Input()\r\n    set tag(value: any) {\r\n        this._tag = value;\r\n    }\r\n    get tag(): any {\r\n        return this._tag;\r\n    }\r\n}\r\n\r\nexport const NARIK_CHECKBOX_INPUTS: string[] = ['tag', ...NARIK_UI_FORM_INPUTS];\r\n","import { NarikDataDisplayValueComponent } from '../base/narik-data-display-value-component';\r\n\r\nexport class NarikRadioGroup extends NarikDataDisplayValueComponent {\r\n    protected useData(data: any[]) {\r\n        throw new Error('Subclass Must Override useData.');\r\n    }\r\n}\r\n\r\nexport class NarikRadioItem {}\r\n","import { isEquivalent } from '@narik/common';\r\n\r\nimport { AfterViewInit, Directive, QueryList, ViewChildren } from '@angular/core';\r\n\r\nimport { NarikDataDisplayValueComponent } from '../base/narik-data-display-value-component';\r\nimport { NarikCheckBox } from './narik-checkbox.component';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\n@Directive()\r\nexport class NarikCheckBoxList\r\n    extends NarikDataDisplayValueComponent\r\n    implements AfterViewInit {\r\n    private isInternalChange = false;\r\n    @ViewChildren(NarikCheckBox) checkBoxItems!: QueryList<NarikCheckBox>;\r\n\r\n    ngAfterViewInit() {\r\n        super.ngAfterViewInit();\r\n        if (this.value) {\r\n            this.applyValueToItems();\r\n        }\r\n        if (this.checkBoxItems) {\r\n            this.checkBoxItems.changes\r\n                .pipe(takeWhile((x) => this.isAlive))\r\n                .subscribe((x) => {\r\n                    if (this.value) {\r\n                        this.applyValueToItems();\r\n                    }\r\n                });\r\n        }\r\n    }\r\n\r\n    addOrRemove(value: any) {\r\n        if (!this.isInternalChange) {\r\n            if (this.contains(value)) {\r\n                this.remove(value);\r\n            } else {\r\n                this.add(value);\r\n            }\r\n        }\r\n    }\r\n\r\n    contains(value: any): boolean {\r\n        if (this._value instanceof Array) {\r\n            return this._value.indexOf(value) > -1;\r\n        } else if (!!this._value) {\r\n            return this._value === value;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    private add(value: any) {\r\n        if (!this.contains(value)) {\r\n            if (this._value instanceof Array) {\r\n                this._value.push(value);\r\n            } else {\r\n                this._value = [value];\r\n            }\r\n            this.onModelChange(this._value);\r\n        }\r\n    }\r\n\r\n    private remove(value: any) {\r\n        const index = this._value.indexOf(value);\r\n        if (!this._value || index < 0) {\r\n            return;\r\n        }\r\n        this._value.splice(index, 1);\r\n        this.onModelChange(this._value);\r\n    }\r\n\r\n    valueChanged(newValue, oldValue) {\r\n        if (!isEquivalent(newValue, oldValue)) {\r\n            this.applyValueToItems();\r\n        }\r\n    }\r\n\r\n    private applyValueToItems() {\r\n        if (this.checkBoxItems) {\r\n            this.isInternalChange = true;\r\n            this.checkBoxItems.forEach((checkBoxItem) => {\r\n                checkBoxItem.value = this.contains(checkBoxItem.tag);\r\n            });\r\n            this.isInternalChange = false;\r\n        }\r\n    }\r\n    protected useData(data: any[]) {\r\n        throw new Error('Method not implemented.');\r\n    }\r\n}\r\n","import { NarikInject } from '@narik/core';\r\nimport {\r\n    NarikViewField,\r\n    EntityField,\r\n    FormHost,\r\n    HOST_TOKEN,\r\n    IsHost,\r\n} from '@narik/infrastructure';\r\n\r\nimport { Directive, Injector, Input, OnInit, ViewContainerRef } from '@angular/core';\r\n\r\nimport { DynamicFormService } from '../services/dynamic-form.service';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { evalStringExpression, getParentComponent } from '@narik/common';\r\nimport { NarikUiComponent } from '../base/narik-ui-component';\r\n\r\n@Directive()\r\nexport class NarikDynamicForm extends NarikUiComponent implements OnInit {\r\n    readonly expressionPrefix = '$$$narik';\r\n    customFormComponentKeys: string[] = [];\r\n    customFormComponentKeysObject: any = {};\r\n\r\n    invisibleItems: any = {};\r\n    disableItems: any = {};\r\n\r\n    @Input()\r\n    activeTabGuard = true;\r\n\r\n    @Input()\r\n    form: FormGroup;\r\n\r\n    @Input()\r\n    activeAutoFocus = true;\r\n\r\n    @Input()\r\n    defaultFocusField: string;\r\n\r\n    @Input()\r\n    columnsCount = 1;\r\n\r\n    @Input()\r\n    groupFields = false;\r\n\r\n    @Input()\r\n    layoutGap = 5;\r\n\r\n    @Input()\r\n    host: FormHost;\r\n\r\n    _model: any;\r\n    _fields: NarikViewField[] | EntityField[];\r\n\r\n    @Input()\r\n    set fields(value: NarikViewField[] | EntityField[]) {\r\n        this._fields = this.dynamicFormService.initDynamicFormFields(value);\r\n        this.initExpression(this.fields);\r\n    }\r\n    get fields(): NarikViewField[] | EntityField[] {\r\n        return this._fields;\r\n    }\r\n\r\n    @Input()\r\n    set model(value: any) {\r\n        this._model = this.dynamicFormService.initDynamicFormModel(value);\r\n    }\r\n    get model(): any {\r\n        return this._model;\r\n    }\r\n\r\n    @NarikInject(DynamicFormService)\r\n    dynamicFormService: DynamicFormService;\r\n\r\n    constructor(injector: Injector, viewContainerRef: ViewContainerRef) {\r\n        super(injector);\r\n\r\n        this.customFormComponentKeys = this.dynamicFormService.getDynamicFormComponentKeys();\r\n        for (const item of this.customFormComponentKeys) {\r\n            this.customFormComponentKeysObject[\r\n                item\r\n            ] = this.dynamicFormService.getDynamicFormComponent(item);\r\n        }\r\n\r\n        this.host = injector.get(HOST_TOKEN, null);\r\n\r\n        if (!this.host && viewContainerRef) {\r\n            this.host = getParentComponent<FormHost>(viewContainerRef);\r\n        }\r\n    }\r\n\r\n    ngOnInit() {\r\n        if (IsHost(this.host)) {\r\n            this.host.change$.pipe(debounceTime(100)).subscribe(() => {\r\n                this.applyContextExpressions();\r\n            });\r\n        }\r\n    }\r\n\r\n    initExpression(fields: NarikViewField[] | EntityField[]) {\r\n        for (const field of fields) {\r\n            field.hideExpr = field.hideExpr\r\n                ? evalStringExpression(field.hideExpr, ['host'])\r\n                : null;\r\n            field.disableExpr = field.disableExpr\r\n                ? evalStringExpression(field.disableExpr, ['host'])\r\n                : null;\r\n\r\n            if (field.disableExpr) {\r\n                this.disableItems[field.name] = false;\r\n                this.disableItems[this.expressionPrefix + field.name] =\r\n                    field.disableExpr;\r\n            }\r\n            if (field.hideExpr) {\r\n                this.invisibleItems[field.name] = false;\r\n                this.invisibleItems[this.expressionPrefix + field.name] =\r\n                    field.hideExpr;\r\n            }\r\n        }\r\n    }\r\n    applyContextExpressions(): any {\r\n        this.applyExpressionsOnObject(this.invisibleItems);\r\n        const disableItems = { ...this.disableItems };\r\n        this.applyExpressionsOnObject(this.disableItems);\r\n\r\n        for (const key in this.disableItems) {\r\n            if (\r\n                !key.startsWith('$$$') &&\r\n                Object.prototype.hasOwnProperty.call(this.disableItems, key)\r\n            ) {\r\n                if (disableItems[key] !== this.disableItems[key]) {\r\n                    const formControl = this.form?.get(key);\r\n                    if (this.disableItems[key] === false) {\r\n                        formControl?.enable();\r\n                    } else {\r\n                        formControl?.disable();\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    applyExpressionsOnObject(obj: any) {\r\n        for (const key in obj) {\r\n            if (!key.startsWith('$$$') && obj.hasOwnProperty(key)) {\r\n                obj[key] = obj[this.expressionPrefix + key].apply(null, [\r\n                    this.host,\r\n                ]);\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { NarikUiComponent } from '../base/narik-ui-component';\r\nimport {\r\n    ListRowCommand,\r\n    NarikViewField,\r\n    IPagingInfo,\r\n    NarikDataSource,\r\n} from '@narik/infrastructure';\r\nimport { Input, Output, EventEmitter, Directive } from '@angular/core';\r\nimport { isArray } from '@narik/common';\r\n@Directive()\r\nexport class NarikDataTable extends NarikUiComponent {\r\n    get uiKey(): string {\r\n        return 'data-table';\r\n    }\r\n\r\n    _fields: NarikViewField[];\r\n    _pagingInfo: IPagingInfo | undefined;\r\n    _dataSource: NarikDataSource<any>;\r\n    _selectedItem: any;\r\n    _selectedItems: any[];\r\n\r\n    @Input()\r\n    set selectedItems(value: any[]) {\r\n        this._selectedItems = value;\r\n        this.selectedItemsChange.emit(value);\r\n    }\r\n    get selectedItems(): any[] {\r\n        return this._selectedItems;\r\n    }\r\n\r\n    @Input()\r\n    set selectedItem(value: any) {\r\n        if (this._selectedItem !== value) {\r\n            this._selectedItem = value;\r\n            this.selectedItemChange.emit(value);\r\n        }\r\n    }\r\n    get selectedItem(): any {\r\n        return this._selectedItem;\r\n    }\r\n\r\n    @Input()\r\n    set dataSource(value: NarikDataSource<any>) {\r\n        this._dataSource = value;\r\n    }\r\n    get dataSource(): NarikDataSource<any> {\r\n        return this._dataSource;\r\n    }\r\n\r\n    @Input()\r\n    set fields(value: NarikViewField[]) {\r\n        if (value !== this.fields) {\r\n            if (value && isArray(value)) {\r\n                for (const field of value) {\r\n                    field.options = field.options || {};\r\n                }\r\n            }\r\n            this._fields = value;\r\n            this.fieldsChanged();\r\n        }\r\n    }\r\n    get fields(): NarikViewField[] {\r\n        return this._fields;\r\n    }\r\n\r\n    @Input()\r\n    set pagingInfo(value: IPagingInfo | undefined) {\r\n        if (value !== this.pagingInfo) {\r\n            this._pagingInfo = value;\r\n        }\r\n    }\r\n    get pagingInfo(): IPagingInfo | undefined {\r\n        return this._pagingInfo;\r\n    }\r\n\r\n    @Input()\r\n    rowCommands?: ListRowCommand[] | undefined;\r\n\r\n    @Input()\r\n    rowCommandType?: 'Menu' | 'Flat' | undefined = 'Flat';\r\n\r\n    @Output()\r\n    rowCommandClick = new EventEmitter<{ key: string; item: any }>();\r\n\r\n    @Output()\r\n    selectedItemsChange = new EventEmitter<any[]>();\r\n\r\n    @Output()\r\n    rowDoubleClick = new EventEmitter<any>();\r\n\r\n    @Output()\r\n    selectedItemChange = new EventEmitter<any>();\r\n\r\n    protected fieldsChanged() {}\r\n}\r\n\r\nexport const NARIK_DATA_TABLE_INPUTS: string[] = [\r\n    'rowCommands',\r\n    'rowCommandType',\r\n    'fields',\r\n    'pagingInfo',\r\n    'dataSource',\r\n    'selectedItems',\r\n    'selectedItem',\r\n];\r\n\r\nexport const NARIK_DATA_TABLE_OUTPUTS: string[] = [\r\n    'rowCommandClick',\r\n    'selectedItemsChange',\r\n    'rowDoubleClick',\r\n    'selectedItemChange',\r\n];\r\n","import { UUID } from 'angular2-uuid';\r\nimport { isElementVisible } from '@narik/common';\r\nimport { NarikInject } from '@narik/core';\r\nimport { DialogService, ShortcutService } from '@narik/infrastructure';\r\nimport { filter } from 'rxjs/operators';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\nimport {\r\n    AfterViewInit,\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    OnInit,\r\n    Output,\r\n} from '@angular/core';\r\n\r\nimport { NarikUiComponent } from '../base/narik-ui-component';\r\n\r\n@Directive()\r\nexport class NarikButton\r\n    extends NarikUiComponent\r\n    implements AfterViewInit, OnInit {\r\n    @NarikInject(ShortcutService)\r\n    shortcutService: ShortcutService;\r\n\r\n    @NarikInject(DialogService)\r\n    dialogService: DialogService;\r\n\r\n    @NarikInject(ElementRef)\r\n    element: ElementRef;\r\n\r\n    get uiKey(): string {\r\n        return 'button';\r\n    }\r\n\r\n    private _disable: boolean;\r\n    private _isBusy: boolean;\r\n\r\n    @Input()\r\n    set disable(value: boolean) {\r\n        this._disable = value;\r\n        this.setDisabledState(this.isBusy || this.disable);\r\n    }\r\n    get disable(): boolean {\r\n        return this._disable;\r\n    }\r\n\r\n    @Input()\r\n    set isBusy(value: boolean) {\r\n        this._isBusy = value;\r\n        this.setDisabledState(this.isBusy || this.disable);\r\n    }\r\n    get isBusy(): boolean {\r\n        return this._isBusy;\r\n    }\r\n\r\n    @Input()\r\n    shortcut: string;\r\n\r\n    @Input()\r\n    cssClass: string;\r\n\r\n    @Input()\r\n    color: string;\r\n\r\n    @Input()\r\n    icon: string;\r\n\r\n    @Input()\r\n    fontIcon: string;\r\n\r\n    @Input()\r\n    busyFontIcon: string;\r\n\r\n    @Input()\r\n    buttonStyle: any;\r\n\r\n    @Input()\r\n    label: string;\r\n\r\n    @Input()\r\n    busyLabel: string;\r\n\r\n    @Input()\r\n    tag: any;\r\n\r\n    @Input()\r\n    tooltip: any;\r\n\r\n    @Output()\r\n    nClick = new EventEmitter<any>();\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() {\r\n        if (this.shortcut) {\r\n            const uniqueId = UUID.UUID();\r\n            this.shortcutService\r\n                .addShortcut({\r\n                    keys: this.shortcut,\r\n                    description: this.tooltip || this.label,\r\n                    uniqueId: uniqueId,\r\n                })\r\n                .pipe(\r\n                    takeWhile((x) => this.isAlive),\r\n                    filter(\r\n                        (x: any) =>\r\n                            x.uniqueId === uniqueId &&\r\n                            isElementVisible(this.element) &&\r\n                            this.dialogService.isElementInActiveDialog(\r\n                                this.element\r\n                            )\r\n                    )\r\n                )\r\n                .subscribe((x) => {\r\n                    if (!this.disable && !this.isBusy) {\r\n                        this.nClick.emit({\r\n                            sender: this,\r\n                            event: {},\r\n                        });\r\n                    }\r\n                });\r\n        }\r\n    }\r\n    ngAfterViewInit(): void {\r\n        this.setDisabledState(this.isBusy || this.disable);\r\n    }\r\n\r\n    setDisabledState(state: boolean) {}\r\n}\r\n","import { UUID } from 'angular2-uuid';\r\nimport {\r\n    MetaDataService,\r\n    MODULE_UI_KEY,\r\n    DefaultMetaDataKeys,\r\n    CommandHost,\r\n    CommandInfo,\r\n    ShortcutService,\r\n    DialogService,\r\n    HOST_TOKEN,\r\n    IsHost,\r\n} from '@narik/infrastructure';\r\nimport { NarikInject } from '@narik/core';\r\nimport { getParentComponent } from '@narik/common';\r\nimport {\r\n    Output,\r\n    EventEmitter,\r\n    Input,\r\n    OnInit,\r\n    Injector,\r\n    ViewContainerRef,\r\n    ElementRef,\r\n    HostBinding,\r\n    Directive,\r\n} from '@angular/core';\r\nimport { isString, isArray, isElementVisible } from '@narik/common';\r\nimport { evalStringExpression } from '@narik/common';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { NarikUiComponent } from '../base/narik-ui-component';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nexport interface ToolBarInfo {\r\n    key: string;\r\n    showLable?: boolean;\r\n    items?: (ToolBarItem | string)[];\r\n}\r\nexport interface ToolBarItem {\r\n    key: string;\r\n    itemType?: string;\r\n    label?: string;\r\n    tooltip?: string;\r\n    icon?: string;\r\n    fontIcon?: string;\r\n    data?: any;\r\n    hideExpr?: string;\r\n    disableExpr?: string;\r\n    busyExpr?: string;\r\n    shortcut?: string;\r\n    items?: (ToolBarItem | string)[];\r\n}\r\n@Directive()\r\nexport class NarikToolBar extends NarikUiComponent implements OnInit {\r\n    readonly expressionPrefix = '$$$narik';\r\n    invisibleItems: any = {};\r\n    disableItems: any = {};\r\n    busyItems: any = {};\r\n\r\n    get uiKey(): string {\r\n        return 'toolbar';\r\n    }\r\n\r\n    @Input()\r\n    showLabel: boolean;\r\n\r\n    @Input()\r\n    host: CommandHost;\r\n\r\n    @Input()\r\n    moduleKey: string;\r\n\r\n    @Input()\r\n    toolbarKey: string;\r\n\r\n    @Input()\r\n    cssClass: string;\r\n\r\n    @Input()\r\n    color: string;\r\n\r\n    @Input()\r\n    itemsStyle: string;\r\n\r\n    @Input()\r\n    itemsCssClass: string;\r\n\r\n    @Input()\r\n    items: ToolBarItem[];\r\n\r\n    @Input()\r\n    alwaysCallCommand = false;\r\n\r\n    @Output()\r\n    command = new EventEmitter<CommandInfo>();\r\n\r\n    @NarikInject(MetaDataService)\r\n    metaDataService: MetaDataService;\r\n\r\n    @NarikInject(MODULE_UI_KEY)\r\n    defaultModuleKey: string;\r\n\r\n    @NarikInject(ShortcutService)\r\n    shortcutService: ShortcutService;\r\n\r\n    @NarikInject(DialogService)\r\n    dialogService: DialogService;\r\n\r\n    @NarikInject(ElementRef)\r\n    element: ElementRef;\r\n\r\n    @Input()\r\n    displayStyle = 'block';\r\n\r\n    @HostBinding('style.display')\r\n    get displayValue(): string {\r\n        return this.displayStyle;\r\n    }\r\n\r\n    constructor(injector: Injector, viewContainerRef: ViewContainerRef) {\r\n        super(injector);\r\n\r\n        this.host = injector.get(HOST_TOKEN, null) as CommandHost;\r\n\r\n        if (!this.host && viewContainerRef) {\r\n            this.host = getParentComponent<CommandHost>(viewContainerRef);\r\n        }\r\n    }\r\n\r\n    ngOnInit() {\r\n        if (this.toolbarKey) {\r\n            this.moduleKey = this.moduleKey || this.defaultModuleKey;\r\n\r\n            const info = this.createToolbarItems(\r\n                this.moduleKey,\r\n                this.toolbarKey\r\n            );\r\n            if (this.showLabel === undefined) {\r\n                this.showLabel = info.showLabel;\r\n            }\r\n            this.items = info.items;\r\n            if (IsHost(this.host)) {\r\n                this.host.change$.pipe(debounceTime(100)).subscribe((x) => {\r\n                    this.applyContextExpressions();\r\n                });\r\n            }\r\n            const uniqueId = UUID.UUID();\r\n\r\n            for (const item of this.items) {\r\n                if (item.shortcut) {\r\n                    this.shortcutService\r\n                        .addShortcut({\r\n                            keys: item.shortcut,\r\n                            description: item.tooltip,\r\n                            uniqueId: uniqueId,\r\n                        })\r\n                        .pipe(\r\n                            takeWhile((x) => this.isAlive),\r\n                            filter(\r\n                                (x: any) =>\r\n                                    x.uniqueId === uniqueId &&\r\n                                    isElementVisible(this.element) &&\r\n                                    this.dialogService.isElementInActiveDialog(\r\n                                        this.element\r\n                                    )\r\n                            )\r\n                        )\r\n                        .subscribe((x) => {\r\n                            this.itemCommand(item);\r\n                        });\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private createToolbarItems(\r\n        moduleKey: string,\r\n        toolbarKey: string\r\n    ): { items: ToolBarItem[]; showLabel: boolean } {\r\n        const toolBarInfo = this.metaDataService.getInformation<ToolBarInfo>(\r\n            DefaultMetaDataKeys.toolbars,\r\n            moduleKey,\r\n            toolbarKey\r\n        );\r\n        const items = [];\r\n        if (toolBarInfo) {\r\n            for (const item of toolBarInfo.items) {\r\n                const tollBarItem = this.toToolbarItem(item);\r\n                if (isArray(tollBarItem)) {\r\n                    items.push(...(tollBarItem as ToolBarItem[]));\r\n                } else {\r\n                    items.push(tollBarItem);\r\n                }\r\n            }\r\n            this.items = items;\r\n        }\r\n        return {\r\n            items: items,\r\n            showLabel: toolBarInfo && !!toolBarInfo.showLable,\r\n        };\r\n    }\r\n\r\n    protected toToolbarItem(\r\n        item: ToolBarItem | string\r\n    ): ToolBarItem | ToolBarItem[] {\r\n        if (isString(item)) {\r\n            if ((item as string).startsWith('&&')) {\r\n                return this.createToolbarItems(\r\n                    this.moduleKey,\r\n                    (item as string).replace('&&', '')\r\n                ).items;\r\n            } else {\r\n                return {\r\n                    key: item as string,\r\n                    icon: item as string,\r\n                    itemType: (item as string) === '-' ? 'divider' : 'button',\r\n                    tooltip: (item as string) + '_command_tooltip',\r\n                };\r\n            }\r\n        } else {\r\n            const tItem = item as ToolBarItem;\r\n\r\n            const i = {\r\n                key: tItem.key,\r\n                icon: !tItem.icon && !tItem.fontIcon ? tItem.key : tItem.icon,\r\n                fontIcon: tItem.fontIcon,\r\n                itemType: tItem.itemType || 'button',\r\n                tooltip: tItem.tooltip || tItem.key + '_command_tooltip',\r\n                data: tItem.data,\r\n                shortcut: tItem.shortcut,\r\n                items: tItem.items\r\n                    ? tItem.items.map((x) => this.toToolbarItem(x))\r\n                    : [],\r\n                label: tItem.label || tItem.key,\r\n                hideExpr: tItem.hideExpr\r\n                    ? evalStringExpression(tItem.hideExpr, ['host'])\r\n                    : null,\r\n                disableExpr: tItem.disableExpr\r\n                    ? evalStringExpression(tItem.disableExpr, ['host'])\r\n                    : null,\r\n                busyExpr: tItem.busyExpr\r\n                    ? evalStringExpression(tItem.busyExpr, ['host'])\r\n                    : null,\r\n            };\r\n            if (i.busyExpr) {\r\n                this.busyItems[i.key] = false;\r\n                this.busyItems[this.expressionPrefix + i.key] = i.busyExpr;\r\n            }\r\n            if (i.disableExpr) {\r\n                this.disableItems[i.key] = false;\r\n                this.disableItems[this.expressionPrefix + i.key] =\r\n                    i.disableExpr;\r\n            }\r\n            if (i.hideExpr) {\r\n                this.invisibleItems[i.key] = false;\r\n                this.invisibleItems[this.expressionPrefix + i.key] = i.hideExpr;\r\n            }\r\n            return i as ToolBarItem;\r\n        }\r\n    }\r\n\r\n    applyExpressionsOnObject(obj: any) {\r\n        for (const key in obj) {\r\n            if (!key.startsWith('$$$') && obj.hasOwnProperty(key)) {\r\n                obj[key] = obj[this.expressionPrefix + key].apply(null, [\r\n                    this.host,\r\n                ]);\r\n            }\r\n        }\r\n    }\r\n\r\n    applyContextExpressions(): any {\r\n        this.applyExpressionsOnObject(this.invisibleItems);\r\n        this.applyExpressionsOnObject(this.disableItems);\r\n        this.applyExpressionsOnObject(this.busyItems);\r\n    }\r\n    itemCommand(data: ToolBarItem) {\r\n        if (data.disableExpr && this.disableItems[data.key]) {\r\n            console.log('disabled toolbar item clicked!!' + data.key);\r\n            return;\r\n        }\r\n        if (this.host && !this.alwaysCallCommand) {\r\n            this.host.processCommand({\r\n                commandKey: data.key,\r\n                commandData: data.data,\r\n            });\r\n        } else {\r\n            this.command.emit({\r\n                commandKey: data.key,\r\n                commandData: data.data,\r\n            });\r\n        }\r\n    }\r\n}\r\n","import { isString } from '@narik/common';\r\nimport {\r\n    NarikFormComponent,\r\n    NARIK_UI_FORM_INPUTS,\r\n} from '../base/narik-form-component';\r\n\r\nexport class NarikDatePicker extends NarikFormComponent {\r\n    protected convertValue(value) {\r\n        if (value && isString(value)) {\r\n            return new Date(value);\r\n        }\r\n        return value;\r\n    }\r\n}\r\n\r\nexport const NARIK_DATE_PICKER_INPUTS: string[] = [...NARIK_UI_FORM_INPUTS];\r\n","import { OnInit, Input, Directive } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { NarikDataDisplayValueComponent } from '../base/narik-data-display-value-component';\r\n\r\n@Directive()\r\nexport class NarikAutoComplete\r\n    extends NarikDataDisplayValueComponent\r\n    implements ControlValueAccessor, OnInit {\r\n    @Input()\r\n    displayText: string;\r\n\r\n    @Input()\r\n    minSearchLength = 0;\r\n\r\n    @Input()\r\n    isLazyLoadData = false;\r\n\r\n    protected useData(data: any[]) {\r\n        throw new Error('Subclass Must Override useData.');\r\n    }\r\n}\r\n\r\nexport const NARIK_AUTOCOMPLETE_INPUTS: string[] = [\r\n    'displayText',\r\n    'minSearchLength',\r\n    'isLazyLoadData',\r\n];\r\n","import { CommandHost, CommandInfo } from '@narik/infrastructure';\r\n\r\nimport { Input, EventEmitter, Output, Injector, Directive } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { isEquivalent } from '@narik/common';\r\nimport { NarikUiComponent } from '../base/narik-ui-component';\r\n\r\n@Directive()\r\nexport abstract class NarikTreeview\r\n    extends NarikUiComponent\r\n    implements CommandHost {\r\n    change$: Observable<any>;\r\n\r\n    _selectedNode: any;\r\n\r\n    set selectedNode(value: any) {\r\n        if (!isEquivalent(this._dataSource, value)) {\r\n            this._selectedNode = value;\r\n            this.selectedNodeChange.emit(value);\r\n        }\r\n    }\r\n    get selectedNode(): any {\r\n        return this._selectedNode;\r\n    }\r\n\r\n    @Output()\r\n    selectedNodeChange = new EventEmitter<any>();\r\n\r\n    @Input()\r\n    toolbarKey: string;\r\n\r\n    _dataSource: any;\r\n    @Input()\r\n    set dataSource(value: any) {\r\n        if (!isEquivalent(this._dataSource, value)) {\r\n            this._dataSource = value;\r\n            this.dataSourceChanged();\r\n        }\r\n    }\r\n    get dataSource(): any {\r\n        return this._dataSource;\r\n    }\r\n\r\n    /**\r\n     *\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n    processCommand(cmd: CommandInfo) {\r\n        if (cmd.commandKey === 'add') {\r\n            this.addNode(this.selectedNode);\r\n        } else if (cmd.commandKey === 'delete') {\r\n            if (this.selectedNode) {\r\n                this.deleteNode(this.selectedNode);\r\n            }\r\n        }\r\n    }\r\n\r\n    abstract addNode(selectedNode: any);\r\n    abstract deleteNode(selectedNode: any);\r\n\r\n    dataSourceChanged() {}\r\n}\r\n","import {\r\n    NarikFormComponent,\r\n    NARIK_UI_FORM_INPUTS,\r\n} from './../base/narik-form-component';\r\nimport { Injector } from '@angular/core';\r\n\r\nexport class NarikColorPickerInput extends NarikFormComponent {\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n\r\nexport const NARIK_COLOR_PICKER_INPUTS: string[] = [...NARIK_UI_FORM_INPUTS];\r\n","import { OnInit, Input } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { NarikSelect, NARIK_SELECT_INPUTS } from './narik-select.component';\r\n\r\nexport class NarikDataTableSelect\r\n    extends NarikSelect\r\n    implements ControlValueAccessor, OnInit {\r\n    _gridOptions: any;\r\n    get uiKey(): string {\r\n        return 'data-table-select';\r\n    }\r\n\r\n    set gridOptions(value: any) {\r\n        this._gridOptions = value;\r\n    }\r\n    get gridOptions(): any {\r\n        return this._gridOptions;\r\n    }\r\n}\r\n\r\nexport const NARIK_DATA_TABLE_SELECT_INPUTS: string[] = [\r\n    ...NARIK_SELECT_INPUTS,\r\n    'gridOptions',\r\n];\r\n","import { NarikInject } from '@narik/core';\r\nimport { NarikOutlet, FormTitleResolver } from '@narik/infrastructure';\r\n\r\nimport {\r\n    Injector,\r\n    Input,\r\n    ComponentFactoryResolver,\r\n    StaticProvider,\r\n    OnInit,\r\n    OnDestroy,\r\n    Directive,\r\n} from '@angular/core';\r\nimport {\r\n    ChildrenOutletContexts,\r\n    PRIMARY_OUTLET,\r\n    ActivatedRoute,\r\n} from '@angular/router';\r\n\r\nimport { NarikUiComponent } from '../base/narik-ui-component';\r\nimport { UUID } from 'angular2-uuid';\r\n\r\n@Directive()\r\nexport abstract class NarikTabOutlet\r\n    extends NarikUiComponent\r\n    implements NarikOutlet, OnInit, OnDestroy {\r\n    tabs = [];\r\n    selectedIndex: number;\r\n\r\n    @NarikInject(ChildrenOutletContexts)\r\n    private parentContexts: ChildrenOutletContexts;\r\n\r\n    @NarikInject(FormTitleResolver)\r\n    private formTitleResolver: FormTitleResolver;\r\n\r\n    @Input()\r\n    name: string;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.name = this.name || PRIMARY_OUTLET;\r\n        this.parentContexts.onChildOutletCreated(this.name, this as any);\r\n    }\r\n\r\n    ngOnInit() {\r\n        const context = this.parentContexts.getContext(this.name);\r\n        if (context && context.route) {\r\n            if (context.attachRef) {\r\n            } else {\r\n                // otherwise the component defined in the configuration is created\r\n                this.activateWith(context.route, context.resolver || null);\r\n            }\r\n        }\r\n    }\r\n    removeTab(index: number) {\r\n        this.tabs.splice(index, 1);\r\n    }\r\n    addView(tab: any) {\r\n        this.tabs.push(tab);\r\n        this.selectedIndex = this.tabs.length - 1;\r\n    }\r\n\r\n    trackByFn(index, item) {\r\n        return item.uniqueId;\r\n    }\r\n\r\n    deactivate() {}\r\n\r\n    activateWith(\r\n        activatedRoute: ActivatedRoute,\r\n        resolver: ComponentFactoryResolver | null\r\n    ) {\r\n        const snapshot = (activatedRoute as any)._futureSnapshot;\r\n        const component = <any>snapshot.routeConfig!.component;\r\n\r\n        const providers: StaticProvider[] = [];\r\n        providers.push({ provide: ActivatedRoute, useValue: activatedRoute });\r\n\r\n        this.addView({\r\n            title: this.formTitleResolver.resolveTitle(activatedRoute.snapshot),\r\n            component: component,\r\n            providers: providers,\r\n            uniqueId: UUID.UUID(),\r\n        });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.tabs = [];\r\n        this.parentContexts.onChildOutletDestroyed(this.name);\r\n    }\r\n}\r\n","/*\r\n * Public API Surface of narik-ui-core\r\n */\r\n\r\nexport * from './lib/narik-ui-core.module';\r\nexport * from './lib/components/public-api';\r\nexport * from './lib/interfaces/public_api';\r\nexport * from './lib/base/public_api';\r\nexport * from './lib/services/public_api';\r\nexport * from './lib/injectionTokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}