{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/base-form-custom/src/base-form-custom.component.ts","../../../../../projects/components/widgets/input/base-form-custom/src/index.ts"],"sourcesContent":["import { ControlValueAccessor, FormControlName, Validator, ValidatorFn, AbstractControl } from '@angular/forms';\nimport { Injectable, OnDestroy, OnInit } from '@angular/core';\n\nimport { BaseFormComponent } from '@wm/components/input/base-form';\n\n/*\n * WMS-18269\n * custom 'required' validator for components,\n * as the bound values are resolved at runtime\n * Called on 'required' property change\n *\n * Note: Component needs NG_VALIDATOR provider for this to work\n */\nfunction isValidValue(val): Boolean {\n    switch(typeof val) {\n        case 'object': return (!!val && (!!val.length || !!Object.keys(val).length));\n        case 'number': return (!!val || val === 0);\n            default: return !(val === undefined || val === null || val === '');\n    }\n}\nfunction validateRequiredBind(required: boolean): ValidatorFn {\n    return (control: AbstractControl) =>\n        required\n            ? (isValidValue(control.value)\n                ? null\n                : { required: true })\n            : null;\n}\n\n@Injectable()\nexport abstract class BaseFormCustomComponent extends BaseFormComponent implements ControlValueAccessor, OnInit, OnDestroy, Validator {\n\n    private _formControl: FormControlName;\n    protected _onChange: any = () => {};\n    private _onTouched: any = () => {};\n\n    ngOnInit() {\n        super.ngOnInit();\n        this._formControl = this.inj.get(FormControlName, null);\n    }\n\n    public registerOnChange(fn) {\n        this._onChange = fn;\n    }\n\n    public registerOnTouched(fn) {\n        this._onTouched = fn;\n    }\n\n    public writeValue(value) {\n        if (this.isDestroyed) {\n            return;\n        }\n        if (this._formControl) {\n\n            if(this._formControl.valueAccessor[\"widgetSubType\"].startsWith('wm-custom-'))\n                return;\n\n            this.datavalue = value;\n            this.onPropertyChange('datavalue', value);\n            this.updatePrevDatavalue(value);\n        }\n        /*\n         * WMS:18246\n         * Call onChange on default value, so that the Component Model is updated\n         * Do only When the Model Value is different from datavalue\n         */\n        (value!==this.datavalue) && this._onChange(this.datavalue);\n    }\n\n    public get formControl() {\n        return this._formControl;\n    }\n\n    public invokeOnChange(value, $event?: Event | any, valid?: boolean) {\n        // let the angular know about the change\n        if (this._onChange) {\n            this._onChange(value);\n        }\n        if ($event) {\n            super.invokeOnChange(value, $event);\n        } else if (valid) {\n            // Fix for [WMS-24869]: updating PrevDatavalue when there is a default value for the widget.\n            this.updatePrevDatavalue(value);\n        }\n    }\n\n    public invokeOnTouched($event?: Event) {\n        if (this._onTouched) {\n            this._onTouched();\n        }\n\n        if ($event) {\n            this.invokeEventCallback('blur', {$event});\n        }\n    }\n\n    public invokeOnFocus($event: Event) {\n        this.invokeEventCallback('focus', {$event});\n    }\n    /* WMS-18269 */\n    validate(control: AbstractControl):{[key: string]:any} {\n        return this['show'] ? validateRequiredBind(this['required'])(control) : null;\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear form control reference\n        this._formControl = null;\n        this._onChange = null;\n        this._onTouched = null;\n\n        super.ngOnDestroy();\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}