{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/text/src/base-input/base-input.ts","../../../../../projects/components/widgets/input/text/src/number-locale/number-locale.ts","../../../../../projects/components/widgets/input/text/src/input-calendar/input-calendar.props.ts","../../../../../projects/components/widgets/input/text/src/input-calendar/input-calendar.component.ts","../../../../../projects/components/widgets/input/text/src/input-calendar/input-calendar.component.html","../../../../../projects/components/widgets/input/text/src/input-color/input-color.props.ts","../../../../../projects/components/widgets/input/text/src/input-color/input-color.component.ts","../../../../../projects/components/widgets/input/text/src/input-color/input-color.component.html","../../../../../projects/components/widgets/input/text/src/input-email/input-email.props.ts","../../../../../projects/components/widgets/input/text/src/input-email/input-email.component.ts","../../../../../projects/components/widgets/input/text/src/input-email/input-email.component.html","../../../../../projects/components/widgets/input/text/src/input-number/input-number.props.ts","../../../../../projects/components/widgets/input/text/src/input-text/input-text.props.ts","../../../../../projects/components/widgets/input/text/src/input-text/input-text.component.ts","../../../../../projects/components/widgets/input/text/src/input-text/input-text.component.html","../../../../../projects/components/widgets/input/text/src/input-number/input-number.component.ts","../../../../../projects/components/widgets/input/text/src/input-number/input-number.component.html","../../../../../projects/components/widgets/input/text/src/index.ts"],"sourcesContent":["import {AfterViewInit, ElementRef, Inject, Injectable, Injector, Optional} from '@angular/core';\nimport {NgModel} from '@angular/forms';\n\nimport {$appDigest, addClass, switchClass} from '@wm/core';\nimport {IWidgetConfig, styler, WidgetConfig} from '@wm/components/base';\nimport {BaseFormCustomComponent} from '@wm/components/input/base-form-custom';\nimport {get, isString} from \"lodash-es\";\n\n@Injectable()\nexport abstract class BaseInput extends BaseFormCustomComponent implements AfterViewInit {\n    public class: string;\n    public autotrim: boolean;\n    public imask;\n\n    // possible values for ngModelOptions are 'blur' and 'change'\n    // default is 'blur'\n    public ngModelOptions = {\n        updateOn: '',\n        standalone: true\n    };\n\n    /**\n     * Reference to the input element. All the styles and classes will be applied on this node.\n     * Input components must override this\n     */\n    protected abstract inputEl: ElementRef;\n\n    /**\n     * Reference to the ngModel directive instance.\n     * Used to check the validity of the input\n     */\n    protected abstract ngModel: NgModel;\n\n    protected onPropertyChange(key: string, nv: any, ov: any) {\n        // set the class on the input element\n        if (key === 'tabindex') {\n            return;\n        }\n        if (key === 'required') {\n            /* WMS-18269 | Update Angular about the required attr value change */\n            this._onChange(this.datavalue);\n        }\n        if (key === 'updateon') {\n            this.ngModelOptions.updateOn = nv === 'default' ? 'change' : 'blur';\n        }\n        if (key === 'class') {\n            if (this.inputEl.nativeElement) {\n                switchClass(this.inputEl.nativeElement, nv, ov);\n            }\n        } else if (key === 'datavalue') {\n            // update the oldDataValue when the datavalue is modified programmatically\n            this.updatePrevDatavalue(nv);\n            this._onChange(this.datavalue);\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n\n    // invoke the change callback\n    handleChange(newValue: any) {\n        if (this.autotrim && this.datavalue && isString(this.datavalue)) {\n            this.datavalue = this.datavalue.trim();\n        }\n\n        this.invokeOnChange(this.datavalue, {type: 'change'}, this.ngModel.valid);\n    }\n\n    // Change event is registered from the template, Prevent the framework from registering one more event\n    protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n        if (eventName !== 'change' && eventName !== 'blur') {\n            super.handleEvent(this.inputEl.nativeElement, eventName, eventCallback, locals);\n        }\n    }\n\n    // invoke the blur callback\n    handleBlur($event) {\n        this.invokeOnTouched($event);\n    }\n\n    // Update the model on enter key press\n    flushViewChanges(val) {\n        // when val contains masked value, update the model with unmasked value\n        const unMaskedVal = get(this.imask, 'maskRef.unmaskedValue');\n        val = unMaskedVal ? unMaskedVal : val;\n        this.ngModel.update.next(val);\n        $appDigest();\n    }\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n        // add the class on the input element\n        if (this.class) {\n            addClass(this.inputEl.nativeElement, this.class);\n        }\n        styler(this.inputEl.nativeElement, this);\n    }\n\n    protected constructor(\n        inj: Injector,\n        @Inject(WidgetConfig) config: IWidgetConfig,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n    ) {\n        super(inj, config, explicitContext);\n        let updateOn = this.nativeElement.getAttribute('updateon') || 'blur';\n        updateOn = updateOn === 'default' ? 'change' : updateOn;\n        this.ngModelOptions.updateOn = updateOn;\n    }\n}\n","import {Inject, Injector, Optional} from '@angular/core';\nimport { AbstractControl, Validator } from '@angular/forms';\nimport { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\n\nimport {AbstractI18nService, isDefined} from '@wm/core';\nimport { IWidgetConfig, TrailingZeroDecimalPipe, INPUTMODE } from '@wm/components/base';\n\nimport { BaseInput } from '../base-input/base-input';\nimport {includes, intersection, isNull, isString, isUndefined, round, toArray} from \"lodash-es\";\n\nexport abstract class NumberLocale extends BaseInput implements Validator {\n    private DECIMAL: string;\n    private GROUP: string;\n    private selectedLocale: string;\n    private proxyModel: number;\n    private numberNotInRange: boolean;\n    private isInvalidNumber: boolean;\n    private isDefaultQuery: boolean = true;\n    private decimalValue: string = '';\n    public displayValue: string;\n    private numberfilter: string;\n    private localefilter: string;\n    public readonly: boolean;\n\n    public placeholder: string;\n    public minvalue: number;\n    public maxvalue: number;\n    public updateon: string;\n    public step: number;\n    public trailingzero: boolean;\n    public regexPattern: string;\n    public invalidPattern: boolean = false;\n    private validateType: string;\n    public inputmode: string;\n    public decimalplaces: number;\n    private lastValIsDecimal: boolean;\n\n    constructor(\n        inj: Injector,\n        config: IWidgetConfig,\n        private i18nService: AbstractI18nService,\n        private trailingZeroDecimalPipe: TrailingZeroDecimalPipe,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n    ) {\n        super(inj, config, explicitContext);\n        this.selectedLocale = i18nService.getSelectedLocale();\n        this.DECIMAL = getLocaleNumberSymbol(this.localefilter || this.selectedLocale, NumberSymbol.Decimal);\n        this.GROUP = getLocaleNumberSymbol(this.localefilter || this.selectedLocale, NumberSymbol.Group);\n        this.numberfilter = '1.0-16';\n        this.resetValidations();\n    }\n\n    // Setter for the datavalue.\n    // @ts-ignore\n    set datavalue(value: number) {\n        this.lastValIsDecimal = false;\n\n        // set text value to null if data value is empty.\n        // @ts-ignore\n        if (includes([null, undefined, ''], value)) {\n            const input = this.inputEl.nativeElement;\n            const prevDataValue =  (this as any).prevDatavalue;\n            this.displayValue = input.value = this.proxyModel = null;\n            this.resetValidations();\n            // Fix for [WMS-27648]: When a decimal value is entered (e.g., \"3.\"), datavalue and prevDatavalue become null as it is an invalid number.\n            // handleChange() should be called when the invalid datavalue (e.g., \"3.\") is removed, and the value becomes an empty string (\"\").\n            if ((prevDataValue || prevDataValue == 0 || prevDataValue == null) && !this.isDefaultQuery) {\n                this.handleChange(value);\n                this._onChange();\n            }\n            return;\n        }\n        // if the widget has default value and if we change the locale, the value should be in selected locale format.\n        if (this.isDefaultQuery) {\n            const isLocalizedNumber = isString(value) && includes(value, this.DECIMAL);\n            const parts = isLocalizedNumber ? (value as any).split(this.DECIMAL) : isString(value) && (value as any).split('.');\n\n            let decimalPlacesAttrVal = this.getAttr('decimalplaces');\n            const decimalplaces = decimalPlacesAttrVal !== '' && decimalPlacesAttrVal !== undefined ? Number(decimalPlacesAttrVal) : NaN;\n            if(this.inputmode === INPUTMODE.NATURAL && !isNaN(decimalplaces)) {\n                if(decimalplaces === 0) {\n                    this.decimalValue = '';\n                    (value as any) = isLocalizedNumber ? parts[0] : this.transformNumber(parts[0]);\n                }\n                if(decimalplaces > 0) {\n                    this.decimalValue = parts[1] && parts[1].substring(0, decimalplaces) || '';\n                    if(isLocalizedNumber) {\n                        (value as any) = this.decimalValue.length ? `${parts[0]}${this.DECIMAL}${this.decimalValue}` : parts[0];\n                    } else {\n                        (value as any) = Number.parseFloat(String(value)).toFixed(decimalplaces);\n                    }\n                }\n            } else {\n                this.decimalValue = parts[1] || '';\n                (value as any) = isLocalizedNumber ? value : this.transformNumber(value);\n            }\n        }\n\n        const numberReg = /\\d/;\n        const strVal = value.toString();\n        let model;\n        // When the input value only contains seperator, do not convert the sepertaor into 0\n        if (numberReg.test(strVal)) {\n            model = this.parseNumber(strVal);\n        } else {\n            model = NaN;\n        }\n\n        // On keypress, if the user types a decimal and is still active on the input do not throw error.\n        if (isNaN(model) && strVal[strVal.length - 1] === this.DECIMAL && this.ngModelOptions.updateOn === 'change' && this.$element.find('input:focus').length) {\n            this.lastValIsDecimal = true;\n        }\n        // get a valid number form the text.\n        // if the number is valid or if number is not in range update the model value.\n        if (!this.lastValIsDecimal && this.isValid(model)) {\n            this.proxyModel = model;\n            // update the display value in the text box.\n            this.updateDisplayText();\n            // Do not trigger onchange event for default value\n            if (!this.isDefaultQuery) {\n                this.handleChange(model);\n            }\n        } else {\n            this.displayValue = value.toString();\n            this.proxyModel = null;\n            this.handleChange(null);\n        }\n    }\n\n    // returns the actual model value of the widget.\n    get datavalue(): number {\n        return this.proxyModel;\n    }\n\n    // resets all the flags related to the widget's validation.\n    protected resetValidations() {\n        this.isInvalidNumber = false;\n        this.numberNotInRange = false;\n    }\n\n    /**\n     * Adds validations for the number before updating the widget model. like validating min and max value for the widget.\n     * @param {number} val number to be validated\n     * @returns {number}\n     */\n    private isValid(val: number): boolean {\n        // id number is infinite then consider it as invalid value\n        let invalidDecimalPlaces = false;\n        if(this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {\n            invalidDecimalPlaces = this.countDecimals(val) > this.decimalplaces;\n        } else if(!Number.isInteger(this.step) && this.countDecimals(val) > this.countDecimals(this.step)) {\n            invalidDecimalPlaces = true;\n        }\n        if (isNaN(val) || !isFinite(val) || invalidDecimalPlaces) {\n            this.isInvalidNumber = true;\n            return false;\n        }\n        if (val !== this.getValueInRange(val)) {\n            this.numberNotInRange = true;\n            return true;\n        }\n        this.resetValidations();\n        return true;\n    }\n\n    /**\n     * returns a valid number by validating the minimum and maximum values.\n     * @param {number} value\n     * @returns {number}\n     */\n    private getValueInRange(value: number): number {\n        if (!isNaN(this.minvalue) && value < this.minvalue) {\n            this.validateType = 'minvalue';\n            return this.minvalue;\n\n        }\n        if (!isNaN(this.maxvalue) && value > this.maxvalue) {\n            this.validateType = 'maxvalue';\n            return this.maxvalue;\n        }\n        return value;\n    }\n\n    /**\n     * convert number to localized number using angular decimal pipe. eg 10,00,000 or 1,000,000\n     * @param number\n     * @returns {string}\n     */\n    private transformNumber(number, numberfilter?): string {\n        const filterVal = numberfilter ? numberfilter : this.numberfilter;\n        return this.trailingZeroDecimalPipe.transform(number, this.selectedLocale, filterVal, this.localefilter, this.trailingzero, this.decimalValue, !!numberfilter, this.i18nService?.getwidgetLocale());\n    }\n\n    /**\n     * resets the cursor position in the text box.\n     * @param {number} value cursor position index form left to right.\n     */\n    private resetCursorPosition(value: number) {\n        const input = this.inputEl.nativeElement;\n        // position of the cursor should be given form right to left.\n        let position = input.value.length - value;\n        position = position < 0 ? 0 : position;\n        // set the cursor position in the text box.\n        input.setSelectionRange(position, position);\n    }\n\n    /**\n     * Method parses the Localized number(string) to a valid number.\n     * if the string dose not result to a valid number then returns NaN.\n     * @param {string} val Localized number.\n     * @returns {number}\n     */\n    private parseNumber(val: string): number {\n        // WMS-22179: split number based on the decimal separator in the val\n        // splits string into two parts. decimal and number.\n        const parts = val.split(this.inputmode === INPUTMODE.FINANCIAL ? (val.indexOf(this.DECIMAL) > -1 ? this.DECIMAL : '.') : this.DECIMAL);\n        if (!parts.length) {\n            return null;\n        }\n        if (parts.length > 2) {\n            return NaN;\n        }\n        // If number have decimal point and not have a decimal value then return.\n        if (parts[1] === '') {\n            return NaN;\n        }\n        // replaces all group separators form the number.\n        const number = Number(parts[0].split(this.GROUP).join(''));\n        const decimal = Number(`0.${parts[1] || 0}`);\n        if (Number.isNaN(number) || Number.isNaN(decimal)) {\n            return NaN;\n        }\n        const sum = parts.length > 1 ? parseFloat((number + decimal).toFixed(parts[1].length)) : number + decimal;\n        // if the number is negative then calculate the number as number - decimal\n        // Ex: number = -123 and decimal = 0.45 then number - decimal = -123-045 = -123.45\n        // If entered number is -0.1 to -0.9 then the number is -0 and decimal is 0.1 to 0.9. Now calaculate the number as number-decimal\n        // Ex: number = -0 and decimal = 0.1 then number-decimal = -0-0.1 = -0.1\n        if (number === 0) {\n            return Object.is(0, number) ? sum : number - decimal;\n        }\n        return number > 0 ? sum : number - decimal;\n    }\n\n    // updates the widgets text value.\n    private updateDisplayText() {\n        const input = this.inputEl.nativeElement;\n        const position: number = input.selectionStart;\n        const preValue: string = input.value;\n        if (!this.isDefaultQuery) {\n            const parts = preValue.split(this.DECIMAL);\n            this.decimalValue = parts[1] || '';\n        }\n        const stepVal = this.stepLength();\n        if (this.inputmode === INPUTMODE.FINANCIAL && stepVal) {\n            this.displayValue = input.value = this.transformNumber(this.proxyModel, `1.${stepVal}-${stepVal}`);\n            this.decimalValue = this.decimalValue.replace(/\\D/g,'');\n        } else {\n            this.displayValue = input.value = this.transformNumber(this.proxyModel);\n        }\n\n        if(this.trailingzero) {\n            const regexObj = new RegExp(this.regexPattern);\n            this.invalidPattern = !regexObj.test(this.displayValue);\n        }\n        // in safari browser, setSelectionRange will focus the input by default, which may invoke the focus event on widget.\n        // Hence preventing the setSelectionRange when default value is set i.e. widget is not focused.\n        if (this.updateon === 'default' && !this.isDefaultQuery) {\n            this.resetCursorPosition(preValue.length - position);\n        }\n    }\n\n    // This function returns the step length set in the studio\n    private stepLength() {\n        if(this.inputmode === 'INPUTMODE.NATURAL' && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {\n            return this.decimalplaces;\n        }\n        const stepLen = this.step.toString().split('.');\n        if (stepLen.length === 1 ) {\n            return;\n        } else {\n            return stepLen[1].length;\n        }\n    }\n\n    // This function checks if the currency widget has input mode as natural and trailing zero is defined or not\n    public isNaturalCurrency() {\n        return this.inputmode === INPUTMODE.NATURAL && this.widgetType === 'wm-currency' && !!this.trailingzero;\n    }\n\n       /**\n     * @param value contains the value entered in the input box\n     * This function modifies the user input value, into financial mode.\n     * Number starts from highest precesion decimal, on typing number shifts to the left\n     */\n    public onInputChange(value: any) {\n        const stepVal = this.stepLength();\n        const prevDataValue =  this.getPrevDataValue();\n        // WMS-22355, Trigger change cb if value exists or value is empty but datavalue exists (when value is selected and deleted).\n           // Fix for [WMS-27041]: Ensure the change callback for the number widget triggers only on focus out (when updateon is set to blur),\n           // not during initial input when the previous value is undefined and the current value is null.\n        if (isDefined(value) && (value !== '' || this.datavalue || this.datavalue == 0)) {\n            if (this.widgetType === \"wm-number\") {\n                if (this.inputmode == INPUTMODE.FINANCIAL) {\n                    // Case 1: when there is no default value, prevDataValue is undefined && this.datavalue is null\n                    // Case 2: when there default value, prevDataValue is equal to this.datavalue\n                    if (!((prevDataValue == undefined && this.datavalue == null) || (prevDataValue == this.datavalue))) {\n                        this.handleChange(value);\n                    }\n                } else {\n                    if (!(prevDataValue == undefined && this.datavalue == null)) {\n                        this.handleChange(value);\n                    }\n                }\n            } else { // currency widget\n                this.handleChange(value);\n            }\n        } else {\n            return;\n        }\n\n        if (!stepVal || this.inputmode !== INPUTMODE.FINANCIAL) {\n            return;\n        }\n\n        let financialVal;\n\n        /**\n         * If the value is entered by the user, format the input\n         * If the value is provided as default value, skip formatting\n         */\n        if (this.isDefaultQuery) {\n            financialVal = parseFloat(value);\n        } else {\n            const valInWholeNum = parseInt(value.toString().replace(/\\D/g,''));\n            financialVal = valInWholeNum *  this.step;\n        }\n\n           if (!isNaN(financialVal)) {\n            // When update on key is set keypress, update the datavalue else update only the display value\n            if (this.ngModelOptions.updateOn === 'change') {\n                this.datavalue = parseFloat(financialVal.toFixed(stepVal));\n                this.handleChange(this.datavalue);\n            } else {\n                this.displayValue = financialVal.toFixed(stepVal);\n            }\n        } else if (this.ngModelOptions.updateOn !== 'blur') {\n            this.datavalue = undefined;\n            this.handleChange(null);\n        }\n    }\n\n    // Input mode is financial and trailing zero is set to false, On focus set display val to fixed point notation and On blur strip trailing zeros\n    // In currency, inputmode is natural and trailing zero and step are defined, on blur display val to fixed point notation and on focus strip the zeros\n    public checkForTrailingZeros($event) {\n        const stepVal = this.stepLength();\n        const financialMode = !this.trailingzero && this.inputmode === INPUTMODE.FINANCIAL;\n\n        // If the user's last input is a decimal and not active on input field, throw error\n        if (this.lastValIsDecimal) {\n            this.onModelChange(this.displayValue);\n        }\n        if (!financialMode && !this.isNaturalCurrency()) {\n            return;\n        }\n        if (stepVal && this.datavalue) {\n            let numberfilter;\n            if ((financialMode && $event.type === 'focus') || (this.isNaturalCurrency() && $event.type === 'blur')) {\n                numberfilter = `1.${stepVal}-${stepVal}`;\n            }\n            this.displayValue = this.transformNumber(this.datavalue, numberfilter);\n        }\n    }\n\n    /**\n     * returns the number of decimal places a number have.\n     * @param value: number\n     * @returns {number}\n     */\n    private countDecimals(value) {\n        const num = Number(value);\n        if (num === 0) {\n            return 0;\n        }\n\n        // Convert to number and handle scientific notation\n        if (Number.isNaN(num)) return 0;\n\n        // Get the exponential form to handle scientific notation properly\n        const exponentialStr = num.toExponential();\n        const match = exponentialStr.match(/^-?\\d*\\.?(\\d+)?e([+-]\\d+)$/);\n\n        if (match) {\n            const decimals = match[1] ? match[1].length : 0;\n            const exponent = parseInt(match[2]);\n            return Math.max(0, decimals - exponent);\n        }\n\n        // Fallback to regular decimal counting\n        const decimalStr = num.toString();\n        const isLocalizedNumber = includes(decimalStr, this.DECIMAL);\n        const parts = isLocalizedNumber ? decimalStr.split(this.DECIMAL) : decimalStr.split('.');\n        return parts[1] ? parts[1].length : 0;\n    }\n\n    /**\n     * handles the arrow press event. Increases or decreases the number. triggered fom the template\n     * @param $event keyboard event.\n     * @param key identifier to increase or decrease the number.\n     */\n    public onArrowPress($event, key) {\n        $event.preventDefault();\n        if (this.readonly || this.step === 0) {\n            return;\n        }\n        const targetVal = $event.target.value.replace(/,/g, '');\n\n        // proxyModel to be updated from $event.target.value if present to support arrow keys when input changes else pick up from this.proxymodel\n        let proxyModel;\n        if (targetVal && !isNaN(parseFloat(targetVal))) {\n            proxyModel = parseFloat(targetVal);\n        } else {\n            proxyModel = this.proxyModel;\n        }\n\n        let value;\n\n        // if the number is not in range and when arrow buttons are pressed need to get appropriate number value.\n        if (this.numberNotInRange) {\n            const inputValue = this.parseNumber(this.inputEl.nativeElement.value);\n            // take the textbox value as current model if the value is valid.\n            if (!isNaN(inputValue)) {\n                value = this.getValueInRange(inputValue);\n                proxyModel = inputValue;\n                this.resetValidations();\n            }\n        } else {\n            if (isUndefined(proxyModel) || isNull(proxyModel)) {\n                proxyModel = value = this.getValueInRange((this.minvalue || 0));\n                this.resetValidations();\n            } else {\n                value = this.getValueInRange(proxyModel + (key === 'UP' ? this.step : -this.step));\n            }\n        }\n        if ((key === 'UP' && proxyModel <= value) || (key === 'DOWN' && proxyModel >= value)) {\n            const decimalRoundValue = Math.max(this.countDecimals(proxyModel), this.countDecimals(this.step));\n\n            // update the modelProxy.\n            this.proxyModel = round(value, decimalRoundValue);\n            this.updateDisplayText();\n            this.handleChange(this.proxyModel);\n        }\n    }\n\n    /**\n     * method is called from the from widget. to check whether the value entered is valid or not.\n     * @returns {object}\n     */\n    public validate(c: AbstractControl) {\n        if (this.isInvalidNumber) {\n            this.validateType = '';\n            return {\n                invalidNumber: {\n                    valid: false\n                },\n            };\n        }\n        if (this.numberNotInRange) {\n            return {\n                numberNotInRange: {\n                    valid: false\n                },\n            };\n        }\n        if(this.invalidPattern) {\n            return {\n                pattern: {\n                    valid: false\n                }\n            };\n        }\n        this.validateType = '';\n        /* WMS-18269 | Extending the existing validation for 'required' */\n        if (this['show'] && this['required']) {\n            return (!!c.value || c.value === 0) ? null : { required: true };\n        }\n        return null;\n    }\n\n    public validateInputEntry($event) {\n\n        this.isDefaultQuery = false;\n\n        // allow actions if control key is pressed or if backspace is pressed. (for Mozilla).\n        if ($event.ctrlKey || includes(['Backspace', 'ArrowRight', 'ArrowLeft', 'Tab', 'Enter', 'Delete'], $event.key)) {\n            return;\n        }\n\n        const validity = new RegExp(`^[\\\\d\\\\s-,.e+${this.GROUP}${this.DECIMAL}]$`, 'i');\n        const inputValue = $event.target?.value||\"\";\n\n        // when input mode is financial, do not restrict user on entering the value when step value limit is reached.\n        const skipStepValidation = this.inputmode === INPUTMODE.FINANCIAL;\n\n        // Validates if user eneters more than 16 digits\n        if (inputValue) {\n            const parsedVal =  parseInt(inputValue.toString().replace(/\\D/g,''));\n            if (parsedVal.toString().length > 15) {\n                // WMS-22321: If the number is greater than MAX_SAFE_INTEGER (more than 15 numbers).\n                // user selects a range of digits and presses a key.\n                // Do not throw validation of exceeded number as selected range value will be deleted.\n                const selectedVal = window.getSelection();\n                if (selectedVal && selectedVal.toString() && selectedVal.focusNode === this.nativeElement) {\n                    return true;\n                }\n                return false;\n            }\n        }\n\n        // validates entering of decimal values only when user provides decimal limit(i.e step contains decimal values).\n        // Restrict user from entering only if the decimal limit is reached and the new digit is entered in decimal place\n        // if (!skipStepValidation && inputValue && this.countDecimals(this.step) && (this.countDecimals(inputValue) >= this.countDecimals(this.step)) && $event.target.selectionStart >= inputValue.length - 1) {\n        //     return false;\n        // }\n        // validates if user entered an invalid character.\n        if (!validity.test($event.key)) {\n            return false;\n        }\n\n        if(this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces)) {\n            if(this.decimalplaces === 0 && this.DECIMAL === $event.key) {\n                return false;\n            }\n            const parts = includes(inputValue, this.DECIMAL) ? (inputValue as any).split(this.DECIMAL) : inputValue.split('.');\n            const isCursorPositionAtDecimalPlace = $event.target.selectionStart > parts[0].length;\n            if(this.decimalplaces > 0 && this.countDecimals(inputValue) >= this.decimalplaces && isCursorPositionAtDecimalPlace) {\n                return false;\n            }\n        }\n\n        // comma cannot be entered consecutively\n        if (includes(inputValue, ',') && inputValue[inputValue.length - 1] === ',' && $event.key === ',') {\n            return false;\n        }\n\n        // a decimal value can be entered only once in the input.\n        if (includes(inputValue, this.DECIMAL) && $event.key === this.DECIMAL) {\n            return false;\n        }\n        // 'e' can be entered only once in the input.\n        if (intersection(toArray(inputValue), ['e', 'E']).length && includes('eE', $event.key)) {\n            return false;\n        }\n        if ((includes(inputValue, '+') || includes(inputValue, '-')) && ($event.key === '+' || $event.key === '-')) {\n            return false;\n        }\n        // Do not allow user to enter only space without any input value\n        if (!inputValue && $event.code === 'Space') {\n            return false;\n        }\n    }\n    onBackspace($event) {\n        this.isDefaultQuery = false;\n    }\n    onDelete($event) {\n        this.isDefaultQuery = false;\n    }\n    onEnter($event) {\n        this.datavalue = $event.target.value;\n    }\n\n    onModelChange($event) {\n        if (this.inputmode === INPUTMODE.NATURAL || (this.inputmode === INPUTMODE.FINANCIAL && this.ngModelOptions.updateOn === 'blur')) {\n            this.datavalue = $event;\n        }\n    }\n\n    onPropertyChange(key, nv, ov?) {\n        if (key === 'minvalue' || key === 'maxvalue') {\n            this.isValid(nv);\n        } else if (key === 'datavalue' && !ov) {\n            if (this.isNaturalCurrency()) {\n                this.checkForTrailingZeros({type: 'blur'});\n            } else {\n                this.onInputChange(nv);\n            }\n        } else if(key === 'regexp') {\n            this.regexPattern = nv;\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n    public onPaste($event: ClipboardEvent) {\n        const pastedData = $event.clipboardData.getData('text');\n\n        for (const char of pastedData) {\n            const mockEvent = new KeyboardEvent('keypress', { key: char });\n            if (this.validateInputEntry(mockEvent)===false) {\n                $event.preventDefault();\n                return;\n            }\n        }\n    }\n\n}\n","import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const inputCalendarTypeProps = new Map(\n    [\n        ['autocomplete', {value: true, ...PROP_BOOLEAN}],\n        ['autotrim', {value: true, ...PROP_BOOLEAN}],\n        ['autofocus', PROP_BOOLEAN],\n        ['class', PROP_STRING],\n        ['datasource', PROP_ANY],\n        ['datavalue', PROP_STRING],\n        ['disabled', PROP_BOOLEAN],\n        ['hint', PROP_STRING],\n        ['arialabel', PROP_STRING],\n        ['maxvalue', PROP_NUMBER],\n        ['minvalue', PROP_NUMBER],\n        ['name', PROP_STRING],\n        ['placeholder', {value: 'Enter text', ...PROP_STRING}],\n        ['readonly', PROP_BOOLEAN],\n        ['required', PROP_BOOLEAN],\n        ['shortcutkey', PROP_STRING],\n        ['show', {value: true, ...PROP_BOOLEAN}],\n        ['step', PROP_NUMBER],\n        ['tabindex', {value: 0, ...PROP_NUMBER}],\n        ['type', PROP_STRING],\n        ['updateon', PROP_STRING],\n        ['conditionalclass', PROP_ANY],\n        ['conditionalstyle', PROP_ANY]\n    ]\n);\n\nexport const registerProps = () => {\n    register(\n        'wm-input-calendar',\n        inputCalendarTypeProps\n    );\n};\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {Component, ElementRef, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {IWidgetConfig, provideAs, provideAsWidgetRef} from '@wm/components/base';\nimport {registerProps} from './input-calendar.props';\nimport {BaseInput} from '../base-input/base-input';\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-input-calendar',\n    hostClass: 'app-input-wrapper'\n};\n\n@Component({\n  standalone: true,\n  imports: [CommonModule, FormsModule],\n    selector: 'wm-input[type=\"date\"], wm-input[type=\"datetime-local\"], wm-input[type=\"month\"], wm-input[type=\"time\"], wm-input[type=\"week\"]',\n    templateUrl: './input-calendar.component.html',\n    providers: [\n        provideAs(InputCalendarComponent, NG_VALUE_ACCESSOR, true),\n        provideAs(InputCalendarComponent, NG_VALIDATORS, true),\n        provideAsWidgetRef(InputCalendarComponent)\n    ]\n})\nexport class InputCalendarComponent extends BaseInput implements OnDestroy {\n    static initializeProps = registerProps();\n\n    public required: boolean;\n    public disabled: boolean;\n    public type: string;\n    public name: string;\n    public readonly: string;\n    public conditionalclass: any;\n    public conditionalstyle: any;\n    public minvalue: any;\n    public maxvalue: any;\n    public step: number;\n    public tabindex: any;\n    public placeholder: any;\n    public shortcutkey: string;\n    public autofocus: boolean;\n    public autocomplete: any;\n    public hint: string;\n    public arialabel: string;\n\n    @ViewChild('input',{static: true}) inputEl: ElementRef;\n    @ViewChild(NgModel) ngModel: NgModel;\n\n    constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear ViewChild references\n        this.inputEl = null;\n        this.ngModel = null;\n\n        // Call parent ngOnDestroy\n        super.ngOnDestroy();\n    }\n}\n","<input class=\"form-control app-textbox\"\n       focus-target\n       [type]=\"type\"\n       [attr.name]=\"name\"\n       [(ngModel)]=\"datavalue\"\n       [ngModelOptions]=\"{standalone: true}\"\n       [readonly]=\"readonly\"\n       [required]=\"required\"\n       [disabled]=\"disabled\"\n       [min]=\"minvalue\"\n       [max]=\"maxvalue\"\n       [step]=\"step\"\n       [attr.tabindex]=\"tabindex\"\n       [attr.placeholder]=\"placeholder\"\n       [attr.accesskey]=\"shortcutkey\"\n       [attr.aria-label]=\"arialabel || type + ' field'\"\n       [autofocus]=\"autofocus\"\n       (blur)=\"handleBlur($event)\"\n       (ngModelChange)=\"handleChange($event)\"\n       [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n       [ngClass]=\"conditionalclass\"\n       [ngStyle]=\"conditionalstyle\"\n       #input>\n","import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const inputColorTypeProps = new Map([\n    ['autocomplete', {value: true, ...PROP_BOOLEAN}],\n    ['autofocus', PROP_BOOLEAN],\n    ['autotrim', {value: true, ...PROP_BOOLEAN}],\n    ['class', PROP_STRING],\n    ['datavaluesource', PROP_ANY],\n    ['datavalue', PROP_STRING],\n    ['disabled', PROP_BOOLEAN],\n    ['hint', PROP_STRING],\n    ['arialabel', PROP_STRING],\n    ['name', PROP_STRING],\n    ['placeholder', {value: 'Enter text', ...PROP_STRING}],\n    ['readonly', PROP_BOOLEAN],\n    ['required', PROP_BOOLEAN],\n    ['shortcutkey', PROP_STRING],\n    ['show', {value: true, ...PROP_BOOLEAN}],\n    ['tabindex', {value: 0, ...PROP_NUMBER}],\n    ['type', {value: 'color', ...PROP_STRING}],\n    ['updateon', PROP_STRING],\n    ['conditionalclass', PROP_ANY],\n    ['conditionalstyle', PROP_ANY]\n]);\n\nexport const registerProps = () => {\n    register(\n        'wm-input-color',\n        inputColorTypeProps\n    );\n};\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {Component, ElementRef, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {IWidgetConfig, provideAs, provideAsWidgetRef} from '@wm/components/base';\n\nimport {registerProps} from './input-color.props';\nimport {BaseInput} from '../base-input/base-input';\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-input-color',\n    hostClass: 'app-input-wrapper'\n};\n\n@Component({\n  standalone: true,\n  imports: [CommonModule, FormsModule],\n    selector: 'wm-input[type=\"color\"]',\n    templateUrl: './input-color.component.html',\n    providers: [\n        provideAs(InputColorComponent, NG_VALUE_ACCESSOR, true),\n        provideAs(InputColorComponent, NG_VALIDATORS, true),\n        provideAsWidgetRef(InputColorComponent)\n    ]\n})\nexport class InputColorComponent extends BaseInput implements OnDestroy {\n    static initializeProps = registerProps();\n\n    public required: boolean;\n    public maxchars: number;\n    public name: string;\n    public readonly: boolean;\n    public conditionalclass: any;\n    public conditionalstyle: any;\n    public tabindex: any;\n    public shortcutkey: string;\n    public autofocus: boolean;\n    public disabled: boolean;\n    public placeholder: any;\n    public type: string;\n    public hint: string;\n    public arialabel: string;\n\n    @ViewChild('input', {static: true}) inputEl: ElementRef;\n    @ViewChild(NgModel) ngModel: NgModel;\n\n    constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear ViewChild references\n        this.inputEl = null;\n        this.ngModel = null;\n\n        // Call parent ngOnDestroy\n        super.ngOnDestroy();\n    }\n}\n","<input class=\"form-control app-textbox\"\n       focus-target\n       [type]=\"type\"\n       [attr.name]=\"name\"\n       [(ngModel)]=\"datavalue\"\n       [ngModelOptions]=\"{standalone: true}\"\n       [readonly]=\"readonly\"\n       [required]=\"required\"\n       [disabled]=\"disabled\"\n       [maxlength]=\"maxchars\"\n       [attr.tabindex]=\"tabindex\"\n       [attr.placeholder]=\"placeholder\"\n       [attr.accesskey]=\"shortcutkey\"\n       [attr.aria-label]=\"arialabel\"\n       [autofocus]=\"autofocus\"\n       [ngClass]=\"conditionalclass\"\n       [ngStyle]=\"conditionalstyle\"\n       (blur)=\"handleBlur($event)\"\n       (ngModelChange)=\"handleChange($event)\"\n       #input>\n","import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const inputEmailTypeProps = new Map(\n    [\n        ['autocomplete', {value: true, ...PROP_BOOLEAN}],\n        ['autofocus', PROP_BOOLEAN],\n        ['autotrim', {value: true, ...PROP_BOOLEAN}],\n        ['class', PROP_STRING],\n        ['datavaluesource', PROP_ANY],\n        ['datavalue', PROP_STRING],\n        ['disabled', PROP_BOOLEAN],\n        ['hint', PROP_STRING],\n        ['arialabel', PROP_STRING],\n        ['maxchars', PROP_NUMBER],\n        ['name', PROP_STRING],\n        ['placeholder', {value: 'Enter text', ...PROP_STRING}],\n        ['readonly', PROP_BOOLEAN],\n        ['regexp', PROP_STRING],\n        ['required', PROP_BOOLEAN],\n        ['shortcutkey', PROP_STRING],\n        ['show', {value: true, ...PROP_BOOLEAN}],\n        ['tabindex', {value: 0, ...PROP_NUMBER}],\n        ['type', {value: 'email', ...PROP_STRING}],\n        ['updateon', PROP_STRING],\n        ['conditionalclass', PROP_ANY],\n        ['conditionalstyle', PROP_ANY]\n    ]\n);\n\nexport const registerProps = () => {\n    register(\n        'wm-input-email',\n        inputEmailTypeProps\n    );\n};\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {Component, ElementRef, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {IWidgetConfig, provideAs, provideAsWidgetRef} from '@wm/components/base';\n\nimport {registerProps} from './input-email.props';\nimport {BaseInput} from '../base-input/base-input';\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-input-email',\n    hostClass: 'app-input-wrapper'\n};\n\n@Component({\n  standalone: true,\n  imports: [CommonModule, FormsModule],\n    selector: 'wm-input[type=\"email\"]',\n    templateUrl: './input-email.component.html',\n    providers: [\n        provideAs(InputEmailComponent, NG_VALUE_ACCESSOR, true),\n        provideAs(InputEmailComponent, NG_VALIDATORS, true),\n        provideAsWidgetRef(InputEmailComponent)\n    ]\n})\nexport class InputEmailComponent extends BaseInput implements OnDestroy {\n    static initializeProps = registerProps();\n\n    public required: boolean;\n    public maxchars: number;\n    public disabled: boolean;\n    public name: string;\n    public readonly: boolean;\n    public conditionalclass: any;\n    public conditionalstyle: any;\n    public tabindex: any;\n    public shortcutkey: string;\n    public autofocus: boolean;\n    public autocomplete: any;\n    public regexp: string;\n    public placeholder: any;\n    public type: string;\n    public hint: string;\n    public arialabel: string;\n\n    @ViewChild('input', {static: true}) inputEl: ElementRef;\n    @ViewChild(NgModel) ngModel: NgModel;\n\n    constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear ViewChild references\n        this.inputEl = null;\n        this.ngModel = null;\n\n        // Call parent ngOnDestroy\n        super.ngOnDestroy();\n    }\n}\n","<input class=\"form-control app-textbox\"\n       focus-target\n       [type]=\"type\"\n       [attr.name]=\"name\"\n       [(ngModel)]=\"datavalue\"\n       [ngModelOptions]=\"ngModelOptions\"\n       [readonly]=\"readonly\"\n       [required]=\"required\"\n       [disabled]=\"disabled\"\n       [maxlength]=\"maxchars\"\n       [pattern]=\"regexp\"\n       [attr.tabindex]=\"tabindex\"\n       [attr.placeholder]=\"placeholder\"\n       [attr.accesskey]=\"shortcutkey\"\n       [attr.aria-label]=\"arialabel\"\n       [autofocus]=\"autofocus\"\n       [ngClass]=\"conditionalclass\"\n       [ngStyle]=\"conditionalstyle\"\n       (blur)=\"handleBlur($event)\"\n       (ngModelChange)=\"handleChange($event)\"\n       [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n       (keyup.enter)=\"flushViewChanges(input.value)\"\n       email\n       #input>\n","import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const inputNumberTypeProps = new Map(\n    [\n        ['autocomplete', {value: true, ...PROP_BOOLEAN}],\n        ['autofocus', PROP_BOOLEAN],\n        ['autotrim', {value: true, ...PROP_BOOLEAN}],\n        ['class', PROP_STRING],\n        ['datavaluesource', PROP_ANY],\n        ['datavalue', PROP_STRING],\n        ['disabled', PROP_BOOLEAN],\n        ['hint', PROP_STRING],\n        ['arialabel', PROP_STRING],\n        ['maxchars', PROP_NUMBER],\n        ['maxvalue', PROP_NUMBER],\n        ['minvalue', PROP_NUMBER],\n        ['name', PROP_STRING],\n        ['placeholder', {value: 'Enter text', ...PROP_STRING}],\n        ['readonly', PROP_BOOLEAN],\n        ['regexp', PROP_STRING],\n        ['required', PROP_BOOLEAN],\n        ['shortcutkey', PROP_STRING],\n        ['show', {value: true, ...PROP_BOOLEAN}],\n        ['step', PROP_NUMBER],\n        ['tabindex', {value: 0, ...PROP_NUMBER}],\n        ['type', {value: 'number', ...PROP_STRING}],\n        ['updateon', PROP_STRING],\n        ['conditionalclass', PROP_ANY],\n        ['conditionalstyle', PROP_ANY]\n\n    ]\n);\n\nexport const registerProps = () => {\n    register(\n        'wm-input-number',\n        inputNumberTypeProps\n    );\n};\n","import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\nimport {FormWidgetType} from '@wm/core';\n\n\nimport {inputNumberTypeProps} from '../input-number/input-number.props';\nimport {inputCalendarTypeProps} from '../input-calendar/input-calendar.props';\nimport {inputColorTypeProps} from '../input-color/input-color.props';\nimport {inputEmailTypeProps} from '../input-email/input-email.props';\n\nexport const inputTextTypeProps = new Map(\n    [\n        ['autocomplete', {value: true, ...PROP_BOOLEAN}],\n        ['autofocus', PROP_BOOLEAN],\n        ['autotrim', {value: true, ...PROP_BOOLEAN}],\n        ['class', PROP_STRING],\n        ['datavaluesource', PROP_ANY],\n        ['datavalue', PROP_STRING],\n        ['disabled', PROP_BOOLEAN],\n        ['displayformat', PROP_STRING],\n        ['hint', PROP_STRING],\n        ['arialabel', PROP_STRING],\n        ['maxchars', PROP_NUMBER],\n        ['name', PROP_STRING],\n        ['placeholder', {value: 'Enter text', ...PROP_STRING}],\n        ['readonly', PROP_BOOLEAN],\n        ['regexp', PROP_STRING],\n        ['required', PROP_BOOLEAN],\n        ['shortcutkey', PROP_STRING],\n        ['show', {value: true, ...PROP_BOOLEAN}],\n        ['showdisplayformaton', {value: 'always', ...PROP_ANY}],\n        ['tabindex', {value: 0, ...PROP_NUMBER}],\n        ['type', {value: 'text', ...PROP_STRING}],\n        ['updateon', PROP_STRING],\n        ['conditionalclass', PROP_ANY],\n        ['conditionalstyle', PROP_ANY],\n        ['trailingiconclass', PROP_STRING],\n        ['leadingiconclass', PROP_STRING],\n        ['supportingtext', PROP_STRING]\n    ]\n);\n\nexport const registerProps = () => {\n    register(\n        'wm-input-text',\n        inputTextTypeProps\n    );\n    registerFormWidget(\n        FormWidgetType.PASSWORD,\n        new Map(inputTextTypeProps)\n    );\n    const formTextProps = new Map(inputTextTypeProps);\n\n    const mergeTextProps = (typeProps) => {\n        typeProps.forEach((v: any, k) => formTextProps.set(k, v));\n    };\n    mergeTextProps(inputCalendarTypeProps);\n    mergeTextProps(inputColorTypeProps);\n    mergeTextProps(inputEmailTypeProps);\n    mergeTextProps(inputNumberTypeProps);\n    registerFormWidget(\n        FormWidgetType.TEXT,\n        new Map(formTextProps)\n    );\n};\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { IMaskModule } from 'angular-imask';\nimport {Component, ElementRef, Inject, Injector, OnDestroy, OnInit, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {IWidgetConfig, provideAs, provideAsWidgetRef} from '@wm/components/base';\nimport {registerProps} from './input-text.props';\nimport {BaseInput} from '../base-input/base-input';\nimport {IMaskDirective} from 'angular-imask';\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-input-text',\n    hostClass: 'app-input-wrapper'\n};\n\n@Component({\n  standalone: true,\n  imports: [CommonModule, FormsModule, IMaskModule],\n    selector: 'wm-input[type=\"text\"], wm-input:not([type]), wm-input[type=\"password\"], wm-input[type=\"search\"], wm-input[type=\"tel\"], wm-input[type=\"url\"]',\n    templateUrl: './input-text.component.html',\n    providers: [\n        provideAs(InputTextComponent, NG_VALUE_ACCESSOR, true),\n        provideAs(InputTextComponent, NG_VALIDATORS, true),\n        provideAsWidgetRef(InputTextComponent)\n    ]\n})\nexport class InputTextComponent extends BaseInput implements OnInit, OnDestroy {\n    static initializeProps = registerProps();\n\n    public required: boolean;\n    public maxchars: number;\n    public regexp: string;\n    public displayformat: string;\n    public disabled: boolean;\n    public type: any;\n    public name: string;\n    public readonly: boolean;\n    public conditionalclass: any;\n    public conditionalstyle: any;\n    public tabindex: any;\n    public placeholder: any;\n    public shortcutkey: string;\n    public autofocus: boolean;\n    public autocomplete: any;\n    public maskVal: any;\n    public isFocused: boolean;\n    private lazy: boolean = false;\n    public hint: string;\n    public arialabel: string;\n    public trailingiconclass: string;\n    public leadingiconclass: string;\n    public supportingtext: string\n\n    @ViewChild('input', {static: true}) inputEl: ElementRef;\n    @ViewChild(NgModel) ngModel: NgModel;\n    @ViewChild('input', {read: IMaskDirective}) imask: IMaskDirective<any>;\n\n    constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n    }\n\n    /* Define the property change handler. This function will be triggered when there is a change in the widget property */\n    onPropertyChange(key, nv, ov) {\n        /*Monitoring changes for styles or properties and accordingly handling respective changes.*/\n        switch (key) {\n            case 'displayformat':\n                this.maskVal = this.displayformat;\n                this.checkForDisplayFormat();\n                break;\n            case 'showdisplayformaton':\n                this.lazy = nv === 'keypress' ? true : false;\n                break;\n            default:\n                super.onPropertyChange(key, nv, ov);\n        }\n    }\n    get computedClasses() {\n        return {'with-leading-icon': this.leadingiconclass, 'with-trailing-icon': this.trailingiconclass,\n            ...(typeof this.conditionalclass === 'string' ? { [this.conditionalclass]: true } : this.conditionalclass || {})};\n    }\n\n    get mask() {\n        if (this.displayformat && (!this.placeholder || (this.placeholder && this.isFocused))) {\n            return {\n                mask: this.maskVal,\n                lazy: this.lazy,\n                definitions: {\n                    '9': /\\d/,\n                    'A': /[a-zA-Z]/,\n                    'a': /[a-z]/,\n                    '*': /\\w/\n                }\n            };\n        } else {\n            return false;\n        }\n    }\n\n    // show display format on focus or when it has a data value present. Else show the placeholder\n    public checkForDisplayFormat($event?) {\n        if (this.displayformat) {\n            this.isFocused = (($event && $event.type === 'focus') || this.datavalue) ? true : false;\n            // Do not show format placeholder when no value is present on blur\n            if (!this.isFocused && this.imask && this.imask.maskRef) {\n                this.imask.maskRef.updateOptions({ lazy: true });\n                // on blur, when no value is present assign maskref to null, as in some cases (where format palceholder starts with pranthesis) the format placeholder is still shown. WMS-20124\n                if (!this.datavalue && this.imask.maskRef.value) {\n                    this.imask.maskRef.value = this.datavalue;\n                }\n            } else {\n                // when display format is dynamically populated, cursor position is at the end of the format, readjusting the cursor position based on masked input value\n                // Adding timeout, as the below code should be on hold until imask model is generated\n                setTimeout(() => {\n                    if (this.imask && this.imask.maskRef && this.imask.maskRef.value) {\n                        const maskValIndex = this.imask.maskRef.value.indexOf('_');\n                        const enteredMaskVal = maskValIndex >= 0 ? this.imask.maskRef.value.slice(0, maskValIndex).length : this.imask.maskRef.value.length;\n                        if (enteredMaskVal !== this.imask.maskRef.cursorPos) {\n                            this.imask.maskRef.updateCursor(enteredMaskVal);\n                        }\n                    }\n                }, 50);\n            }\n        } else if (this.imask && this.imask.maskRef) { // When display format is bound via condition, remove the placeholder when the format is not applicable\n            this.imask.maskRef.updateOptions({ lazy: true });\n            // when display format is removed assign input value to the datavalue attr. WMS-20124\n            this.inputEl.nativeElement.value = this.datavalue;\n        }\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.isFocused = !!this.datavalue;\n    }\n\n    iconClickEvent($event, type: string){\n        this.invokeEventCallback(type, { $event })\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear all ViewChild references\n        this.inputEl = null;\n        this.ngModel = null;\n        this.imask = null;\n\n        // Call parent ngOnDestroy (BaseInput → BaseFormCustomComponent → StylableComponent → BaseComponent)\n        super.ngOnDestroy();\n    }\n}\n","<button class=\"btn-leading-icon\" type=\"button\" name=\"leadingIcon\" *ngIf=\"leadingiconclass\" (click)=\"iconClickEvent($event, 'leadingiconclick')\">\n       <i aria-hidden=\"true\" [ngClass]=\"leadingiconclass\"></i>\n</button>\n<input class=\"form-control app-textbox\"\n       focus-target\n       [type]=\"type\"\n       [attr.name]=\"name\"\n       [attr.aria-label]=\"arialabel\"\n       [(ngModel)]=\"datavalue\"\n       [imask]=\"mask\"\n       [unmask]=\"true\"\n       [ngModelOptions]=\"ngModelOptions\"\n       [readonly]=\"readonly\"\n       [required]=\"required\"\n       [disabled]=\"disabled\"\n       [maxlength]=\"maxchars\"\n       [pattern]=\"regexp\"\n       [attr.tabindex]=\"tabindex\"\n       [attr.placeholder]=\"placeholder\"\n       [attr.accesskey]=\"shortcutkey\"\n       [autofocus]=\"autofocus\"\n       [ngClass]=\"computedClasses\"\n       [ngStyle]=\"conditionalstyle\"\n       (ngModelChange)=\"handleChange($event)\"\n       (blur)=\"handleBlur($event); checkForDisplayFormat($event)\"\n       (focus)=\"checkForDisplayFormat($event)\"\n       [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n       (keyup.enter)=\"flushViewChanges(input.value)\"\n       #input>\n<button class=\"btn-trailing-icon\" type=\"button\" name=\"trailingIcon\" *ngIf=\"trailingiconclass\" (click)=\"iconClickEvent($event, 'trailingiconclick')\">\n       <i aria-hidden=\"true\" [ngClass]=\"trailingiconclass\"></i>\n</button>\n<p class=\"app-label help-block supporting-text\" *ngIf=\"supportingtext\" name=\"supportingText\">{{supportingtext}}</p>\n\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {Component, ElementRef, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {IWidgetConfig, provideAs, provideAsWidgetRef} from '@wm/components/base';\nimport {registerProps} from './input-number.props';\nimport {BaseInput} from '../base-input/base-input';\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-input-number',\n    hostClass: 'app-input-wrapper'\n};\n\n@Component({\n  standalone: true,\n  imports: [CommonModule, FormsModule],\n    selector: 'wm-input[type=\"number\"]',\n    templateUrl: './input-number.component.html',\n    providers: [\n        provideAs(InputNumberComponent, NG_VALUE_ACCESSOR, true),\n        provideAs(InputNumberComponent, NG_VALIDATORS, true),\n        provideAsWidgetRef(InputNumberComponent)\n    ]\n})\nexport class InputNumberComponent extends BaseInput implements OnDestroy {\n    static initializeProps = registerProps();\n\n    public required: boolean;\n    public maxchars: number;\n    public disabled: boolean;\n    public name: string;\n    public readonly: boolean;\n    public conditionalclass: any;\n    public conditionalstyle: any;\n    public minvalue: number;\n    public maxvalue: number;\n    public tabindex: any;\n    public placeholder: any;\n    public shortcutkey: string;\n    public autofocus: boolean;\n    public autocomplete: any;\n    public type: string;\n    public hint: string;\n    public arialabel: string;\n\n    @ViewChild('input', {static: true}) inputEl: ElementRef;\n    @ViewChild(NgModel) ngModel: NgModel;\n\n    public step;\n\n    constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n    }\n\n    onArrowPress($event) {\n        if (this.step === 0) {\n           $event.preventDefault();\n        }\n    }\n\n    public validateInputEntry($event) {\n        if ($event.key === 'e' &&  $event.target.value.indexOf($event.key) !== -1) {\n            return false;\n        }\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear ViewChild references\n        this.inputEl = null;\n        this.ngModel = null;\n\n        // Call parent ngOnDestroy\n        super.ngOnDestroy();\n    }\n}\n","<input class=\"form-control app-textbox\"\n       [ngClass]=\"{'step-hidden': step === 0}\"\n       focus-target\n       [type]=\"type\"\n       [attr.name]=\"name\"\n       [(ngModel)]=\"datavalue\"\n       [ngModelOptions]=\"ngModelOptions\"\n       [readonly]=\"readonly\"\n       [required]=\"required\"\n       [disabled]=\"disabled\"\n       [maxlength]=\"maxchars\"\n       [min]=\"minvalue\"\n       [max]=\"maxvalue\"\n       [step]=\"step\"\n       [attr.tabindex]=\"tabindex\"\n       [attr.placeholder]=\"placeholder\"\n       [attr.accesskey]=\"shortcutkey\"\n       [attr.aria-label]=\"arialabel\"\n       [autofocus]=\"autofocus\"\n       [ngClass]=\"conditionalclass\"\n       [ngStyle]=\"conditionalstyle\"\n       (blur)=\"handleBlur($event)\"\n       (ngModelChange)=\"handleChange($event)\"\n       [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n       (keyup.enter)=\"flushViewChanges(input.value)\"\n       (keydown.ArrowUp)=\"onArrowPress($event)\"\n       (keydown.ArrowDown)=\"onArrowPress($event)\"\n       (keypress)=\"validateInputEntry($event)\"\n       #input>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","WIDGET_CONFIG"],"mappings":"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"}