{"version":3,"file":"index.mjs","sources":["../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.props.ts","../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.component.ts","../../../../../../projects/components/widgets/input/epoch/date-time/src/date-time.component.html","../../../../../../projects/components/widgets/input/epoch/date-time/src/index.ts"],"sourcesContent":["import {FormWidgetType} from '@wm/core';\nimport {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\n\nexport const dateTimeProps = new Map(\n    [\n        ['autofocus', PROP_BOOLEAN],\n        ['class', PROP_STRING],\n        ['dataentrymode', { value: 'default', ...PROP_STRING }],\n        ['datavaluesource', PROP_ANY],\n        ['datavalue', PROP_STRING],\n        ['datepattern', PROP_STRING],\n        ['disabled', PROP_BOOLEAN],\n        ['excludedays', PROP_STRING],\n        ['excludedates', PROP_STRING],\n        ['hint', PROP_STRING],\n        ['arialabel', PROP_STRING],\n        ['hourstep', { value: 1, ...PROP_NUMBER }],\n        ['maxdate', PROP_STRING],\n        ['mindate', PROP_STRING],\n        ['minutestep', { value: 15, ...PROP_NUMBER }],\n        ['name', PROP_STRING],\n        ['outputformat', { value: 'timestamp', ...PROP_STRING }],\n        ['placeholder', { value: 'Select date time', ...PROP_STRING }],\n        ['readonly', PROP_BOOLEAN],\n        ['required', PROP_BOOLEAN],\n        ['secondsstep', { value: 1, ...PROP_NUMBER }],\n        ['shortcutkey', PROP_STRING],\n        ['show', { value: true, ...PROP_BOOLEAN }],\n        ['showdropdownon', { value: 'default', ...PROP_STRING }],\n        ['showbuttonbar', PROP_BOOLEAN],\n        ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n        ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n        ['showweeks', PROP_BOOLEAN],\n        ['tabindex', { value: 0, ...PROP_NUMBER }],\n        ['timestamp', PROP_STRING],\n        ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n        ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n        ['clearbutton',  { value: true, ...PROP_BOOLEAN }],\n        ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n        ['todaybuttonlabel',  { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n        ['clearbuttonlabel',  { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }],\n        ['showampmbuttons',{ value: false, ...PROP_BOOLEAN }]\n\n    ]\n);\n\nexport const registerProps = () => {\n    register(\n        'wm-datetime',\n        dateTimeProps\n    );\n    registerFormWidget(\n        FormWidgetType.DATETIME,\n        new Map(dateTimeProps)\n    );\n    registerFormWidget(\n        FormWidgetType.TIMESTAMP,\n        new Map(dateTimeProps)\n    );\n};\n","import {FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {DateTimePickerComponent} from '@wm/components/input/epoch/date-time-picker';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    Inject,\n    Injector,\n    NgZone,\n    OnDestroy,\n    Optional,\n    ViewChild\n} from '@angular/core';\nimport {BsDatepickerDirective, BsDatepickerModule} from 'ngx-bootstrap/datepicker';\nimport {TimepickerConfig, TimepickerModule} from 'ngx-bootstrap/timepicker';\n\nimport {\n    AbstractI18nService,\n    addClass,\n    addEventListenerOnElement,\n    adjustContainerPosition,\n    adjustContainerRightEdges,\n    App,\n    AppDefaults,\n    EVENT_LIFE,\n    FormWidgetType,\n    getDateObj,\n    getDisplayDateTimeFormat,\n    getFormattedDate,\n    getMomentLocaleObject,\n    getNativeDateObject\n} from '@wm/core';\nimport {provideAs, provideAsWidgetRef, setFocusTrap, styler} from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from '@wm/components/input/epoch/base-date-time';\nimport {registerProps} from './date-time.props';\nimport {debounce, forEach, includes, isNaN, parseInt} from \"lodash-es\";\nimport {BsDropdownModule} from \"ngx-bootstrap/dropdown\";\nimport * as momentLib from 'moment';\n\ndeclare const $;\nconst moment = momentLib.default || window['moment'];\n\nconst DEFAULT_CLS = 'app-datetime input-group';\nconst WIDGET_CONFIG = { widgetType: 'wm-datetime', hostClass: DEFAULT_CLS };\n\nconst CURRENT_DATE = 'CURRENT_DATE';\n\n@Component({\n    standalone: true,\n    imports: [FormsModule, DateTimePickerComponent, BsDropdownModule, BsDatepickerModule, TimepickerModule,CommonModule],\n    selector: '[wmDateTime]',\n    templateUrl: './date-time.component.html',\n    providers: [\n        provideAs(DatetimeComponent, NG_VALUE_ACCESSOR, true),\n        provideAs(DatetimeComponent, NG_VALIDATORS, true),\n        provideAsWidgetRef(DatetimeComponent),\n        { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n    ]\n})\nexport class DatetimeComponent extends BaseDateTimeComponent implements AfterViewInit, OnDestroy {\n    static initializeProps = registerProps();\n    /**\n     * The below propeties prefixed with \"bs\" always holds the value that is selected from the datepicker.\n     * The bsDateTimeValue = bsDateValue + bsTimeValue.\n     */\n    private bsDateTimeValue: any;\n    public bsDateValue;\n    private bsTimeValue;\n    private proxyModel;\n    private app: App;\n    public hint: string;\n    public arialabel: string;\n    public showdropdownon: string;\n    private deregisterDatepickerEventListener;\n    private deregisterTimepickeEventListener;\n    private isEnterPressedOnDateInput = false;\n    private focusTrap;\n\n    get timestamp() {\n        return this.proxyModel ? this.proxyModel.valueOf() : undefined;\n    }\n\n    get dateInputFormat() {\n        return this._dateOptions.dateInputFormat || 'yyyy-MM-ddTHH:mm:ss';\n    }\n\n    /**\n     * The displayValue is the display value of the bsDateTimeValue after applying the datePattern on it.\n     * @returns {any|string}\n     */\n    get displayValue(): any {\n        const display= getFormattedDate(this.datePipe, this.proxyModel, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n        return this.safeReplaceMeridians(display);\n    }\n\n    get nativeDisplayValue() {\n        return getFormattedDate(this.datePipe, this.proxyModel, 'yyyy-MM-ddTHH:mm:ss', this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n    }\n\n    @ViewChild(BsDatepickerDirective) bsDatePickerDirective;\n\n    /**\n     * This property checks if the timePicker is Open\n     */\n    public isTimeOpen = false;\n\n    /**\n     * This property checks if the datePicker is Open\n     */\n    public isDateOpen = false;\n\n    /**\n     * This timeinterval is used to run the timer when the time component value is set to CURRENT_TIME in properties panel.\n     */\n    private timeinterval: any;\n\n    /**\n     * This property is set to TRUE if the time component value is set to CURRENT_TIME; In this case the timer keeps changing the time value until the widget is available.\n     */\n    public isCurrentDate = false;\n\n    private _debouncedOnChange: Function = debounce(this.invokeOnChange, 10);\n\n    private dateContainerCls: string;\n\n    // @ts-ignore\n    get datavalue(): any {\n        if (this.isCurrentDate && !this.proxyModel) {\n            return CURRENT_DATE;\n        }\n        return getFormattedDate(this.datePipe, this.proxyModel, this.outputformat, this.timeZone, null, null, this);\n    }\n\n    /**Todo[Shubham]: needs to be redefined\n     * This property sets the default value for the date selection\n     */\n    // @ts-ignore\n    set datavalue(newVal: any) {\n        if (newVal === CURRENT_DATE) {\n            this.isCurrentDate = true;\n            this.setTimeInterval();\n        } else {\n            this.proxyModel = newVal ? getDateObj(newVal, { isNativePicker: this.loadNativeDateInput }, this.timeZone) : undefined;\n            this.clearTimeInterval();\n            this.isCurrentDate = false;\n        }\n        this.bsTimeValue = this.bsDateValue = this.proxyModel;\n        this.cdRef.detectChanges();\n    }\n\n    constructor(\n        inj: Injector,\n        private ngZone: NgZone,\n        private cdRef: ChangeDetectorRef,\n        private appDefaults: AppDefaults,\n        app: App,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n    ) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n        this.registerDestroyListener(() => this.clearTimeInterval());\n        styler(this.nativeElement, this);\n        this.app = app;\n        this.dateContainerCls = `app-date-${this.widgetId}`;\n        this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n        this._dateOptions.showWeekNumbers = false;\n        this._dateOptions.customTodayClass='current-date';\n        this.datepattern = this.appDefaults.dateTimeFormat || getDisplayDateTimeFormat(FormWidgetType.DATETIME);\n        this.updateFormat('datepattern');\n    }\n\n    /**\n     * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n     */\n    private setTimeInterval() {\n        if (this.timeinterval) {\n            return;\n        }\n        this.timeinterval = setInterval(() => {\n            const currentTime = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n            this.onModelUpdate(currentTime);\n        }, 1000);\n    }\n\n    /**\n     * This is an internal method used to clear the time interval created\n     */\n    private clearTimeInterval() {\n        if (this.timeinterval) {\n            clearInterval(this.timeinterval);\n            this.timeinterval = null;\n        }\n    }\n\n    /**\n     * This is an internal method to toggle the time picker\n     */\n    public toggleTimePicker(newVal, $event?: any) {\n        if (this.loadNativeDateInput) {\n            this.onDateTimeInputFocus();\n            return;\n        }\n        this.isTimeOpen = newVal;\n        if ($event && $event.type === 'click') {\n            this.invokeEventCallback('click', { $event: $event });\n        }\n        this.addTimepickerClickListener(this.isTimeOpen);\n    }\n\n    private addTimepickerClickListener(skipListener) {\n        if (!skipListener) {\n            return;\n        }\n        const bodyElement = document.querySelector('body');\n        setTimeout(() => {\n            const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n            this.deregisterTimepickeEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n                this.toggleTimePicker(false);\n            }, EVENT_LIFE.ONCE, true);\n        }, 350);\n    }\n\n    /**\n     * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e  DateTime, Time)\n     * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n     */\n    private setIsTimeOpen(val: boolean) {\n        this.isTimeOpen = val;\n    }\n\n    private hideTimepickerDropdown() {\n        this.invokeOnTouched();\n        this.toggleTimePicker(false);\n        if (this.deregisterTimepickeEventListener) {\n            this.deregisterTimepickeEventListener();\n        }\n        const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n        if (parentEl.length > 0) {\n            this.app.notify('captionPositionAnimate', { displayVal: this.displayValue, nativeEl: parentEl });\n        }\n    }\n\n    /**\n     * This is an internal method to add a click listener once the time dropdown is open\n     */\n    public onTimepickerOpen() {\n        // adding class for time widget dropdown menu\n        const tpElements = document.querySelectorAll('timepicker');\n        forEach(tpElements, (element) => {\n            addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n        });\n        if (this.bsDropdown && (this.dateNotInRange || this.invalidDateTimeFormat)) {\n            this.bsTimeValue = null;\n        }\n        this.bsDatePickerDirective.hide();\n        this.focusTimePickerPopover(this);\n        this.bindTimePickerKeyboardEvents();\n        adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n//        adjustContainerRightEdges($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n    }\n\n    public onDatePickerOpen() {\n        this.isDateOpen = !this.isDateOpen;\n        this.toggleTimePicker(false);\n        // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n        // So actual bootstrap input target width we made it to 0 so bootstrap calculating the calendar container top position impropery.\n        // To fix the container top position set the width 1px;\n        this.$element.find('.model-holder').width('1px');\n        const dpContainerEl = $('bs-datepicker-container');\n        dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n        $('.bs-calendar-container').removeAttr('role');\n        const datePickerContainer = $('.bs-datepicker-container')[0];\n        this.focusTrap = setFocusTrap(datePickerContainer, true);\n        this.focusTrap.activate();\n\n        this.bsDateValue ? this.activeDate = this.bsDateValue : this.activeDate = new Date();\n        // if (!this.bsDateValue) {\n        //     this.hightlightToday(this.activeDate);\n        // }\n        this.addDatepickerKeyboardEvents(this, true);\n        adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n    }\n\n    /**\n     * This is an internal method to update the model\n     */\n    public onModelUpdate(newVal, type?) {\n\n        if (type === 'date') {\n            this.invalidDateTimeFormat = false;\n            const formatted = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n            if (this.safeReplaceMeridians(formatted) === this.displayValue) {\n                $(this.nativeElement).find('.display-input').val(this.displayValue);\n            }\n        }\n\n        if (newVal && !this.bsDateValue && this.timeZone) {\n            newVal = getMomentLocaleObject(this.timeZone, newVal);\n        }\n        // min date and max date validation in web.\n        // if invalid dates are entered, device is showing validation message.\n        this.minDateMaxDateValidationOnInput(newVal);\n        if (!newVal) {\n            // Set timevalue as 00:00:00 if we remove any one from hours/minutes/seconds field in timepicker after selecting date\n            if (this.bsDateValue && this.bsTimePicker && (this.bsTimePicker.hours === '' || this.bsTimePicker.minutes === '' || this.bsTimePicker.seconds === '')) {\n                this.bsDateValue = this.bsTimeValue = this.proxyModel = moment(this.bsDateValue).startOf('day').toDate();\n            } else {\n                this.bsDateValue = this.bsTimeValue = this.proxyModel = undefined;\n            }\n            // When the datavalue is manually cleared, both newval and datavalue are undefined but prevDataValue exists - trigger change cb\n            if (newVal !== this.datavalue || (!this.datavalue && (this as any).prevDatavalue)) {\n                this._debouncedOnChange(this.datavalue, {}, true);\n            }\n            return;\n        }\n        if (type === 'date') {\n            if (this.isDateOpen) {\n                this.toggleTimePicker(true);\n            }\n        }\n        if (!this.dateNotInRange && !this.invalidDateTimeFormat) {\n            this.proxyModel = newVal;\n            if (this.proxyModel) {\n                this.bsDateValue = this.bsTimeValue = newVal;\n            }\n            if(this.datavalue=== this.getPrevDataValue()){\n                const time=getFormattedDate(this.datePipe, this.datavalue, this.datepattern, this.timeZone, null, null, this) || ''\n                $(this.nativeElement).find('.display-input').val(time?.replace(this.meridians[0], this.am)?.replace(this.meridians[1], this.pm)) ;}\n        }else {\n            this.proxyModel = newVal;\n        }\n        this._debouncedOnChange(this.datavalue, {}, true);\n        this.cdRef.detectChanges();\n\n        // Update timepicker with formatted time, when timezone is provided.\n        const timePickerFields = $('.bs-timepicker-field');\n        if (this.timeZone && (this as any).key === 'datetimestamp' && timePickerFields.length) {\n            const formattedDate = getFormattedDate(this.datePipe, newVal, this.getTimePattern(), this.timeZone, (this as any).key, null, this);\n            this.updateTimepickerFields(this.safeReplaceMeridians(formattedDate), timePickerFields);\n        }\n    }\n\n    // deduces the timepattern from datepattern set in the studio\n    private getTimePattern() {\n        let timepattern;\n        const timePatternStartIndex = this.datepattern.toLowerCase().indexOf('h');\n        let timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':ss');\n        if (timePatternEndIndex > -1) {\n            // adding the index to +3 to incluse :ss\n            timePatternEndIndex += 3;\n        } else {\n            timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':mm');\n            // adding the index to +3 to incluse :mm\n            if (timePatternEndIndex > -1) {\n                timePatternEndIndex += 3;\n            }\n        }\n        const hasMeridian = this.datepattern.toLowerCase().indexOf('a');\n        timepattern = this.datepattern.substr(timePatternStartIndex, timePatternEndIndex);\n        if (hasMeridian > -1)\n            timepattern += ' a';\n        return timepattern;\n    }\n\n    private updateTimepickerFields(date, timePickerFields) {\n        const meridianField = $('timepicker button.text-center');\n        const formattedArr = date.split(' ');\n        const formattedTime = formattedArr[0].split(':');\n        for (let i = 0; i < timePickerFields.length; i++) {\n            timePickerFields[i].value = formattedTime[i]\n        }\n        if (meridianField?.html()?.trim() !== formattedArr[1]) {\n            meridianField.text(formattedArr[1]);\n        }\n    }\n\n    /**\n     * This is an internal method used to Prevent time picker close while changing time value\n     */\n    private preventTpClose($event) {\n        $event.stopImmediatePropagation();\n    }\n\n    /**\n     * This is an internal method used to toggle the dropdown of the date widget\n     */\n    public toggleDpDropdown($event, skipFocus: boolean = false) {\n        if (this.loadNativeDateInput) {\n            //Fixes click event getting triggred twice in Mobile devices.\n            if (!skipFocus) {\n                this.onDateTimeInputFocus();\n            }\n            return;\n        }\n        if ($event.type === 'click') {\n            this.invokeEventCallback('click', { $event: $event });\n            //this.focusOnInputEl();\n        }\n        if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n            $event.stopPropagation();\n            return;\n        }\n        if (this.bsDatePickerDirective && (this.dateNotInRange||this.invalidDateTimeFormat)) {\n            this.bsDatePickerDirective._bsValue = null;\n        }\n        this.bsDatePickerDirective.toggle();\n        this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n    }\n\n    private addBodyClickListener(skipListener) {\n        if (!skipListener) {\n            return;\n        }\n        const bodyElement = document.querySelector('body');\n        setTimeout(() => {\n            const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n            this.deregisterDatepickerEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n                this.bsDatePickerDirective.hide();\n            }, EVENT_LIFE.ONCE, true);\n        }, 350);\n    }\n\n    public hideDatepickerDropdown() {\n        this.isDateOpen = false;\n        this.focusTrap?.deactivate();\n        this.invokeOnTouched();\n        this.bsDatePickerDirective.hide();\n\n        // To open the timepicker menu when user wants to update time without changing the date.\n        if (this.bsDateValue) {\n            this.toggleTimePicker(true);\n        }\n        this.isEnterPressedOnDateInput = false;\n        if (this.deregisterDatepickerEventListener) {\n            this.deregisterDatepickerEventListener();\n        }\n        const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n        if (parentEl.length > 0) {\n            this.app.notify('captionPositionAnimate', { displayVal: this.displayValue, nativeEl: parentEl });\n        }\n        this.blurDateInput(this.isDateOpen);\n    }\n\n    public onDateChange($event, isNativePicker?: boolean) {\n        if (this.isEnterPressedOnDateInput) {\n            this.isEnterPressedOnDateInput = false;\n            return;\n        }\n        let newVal = $event.target.value.trim();\n        newVal = newVal ? getNativeDateObject(newVal?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]), { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput }) : undefined;\n        // datetime pattern validation\n        // if invalid pattern is entered, device is showing an error.\n        if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n            return;\n        }\n        // min date and max date validation in mobile view.\n        // if invalid dates are entered, device is showing an alert.\n        if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n            return;\n        }\n        this.invalidDateTimeFormat = false;\n        this.onModelUpdate(newVal);\n    }\n\n    /**\n     * This is an internal method triggered when pressing key on the datetime input\n     */\n    public onDisplayKeydown(event) {\n        if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n            event.stopPropagation();\n            let newVal = event.target.value.trim();\n            if (event.key === 'Enter' || event.key === 'ArrowDown') {\n                newVal = newVal ? getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians }) : undefined;\n                event.preventDefault();\n                const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n                const formattedDateWithMeridians = this.safeReplaceMeridians(formattedDate);\n                const inputVal = event.target.value.trim();\n                if (inputVal && this.datepattern === 'timestamp') {\n                    if (!isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {\n                        this.invalidDateTimeFormat = true;\n                        this.invokeOnChange(this.datavalue, event, false);\n                    }\n                } else if (inputVal && inputVal !== formattedDateWithMeridians) {\n                    this.invalidDateTimeFormat = true;\n                    this.invokeOnChange(this.datavalue, event, false);\n                } else {\n                    this.invalidDateTimeFormat = false;\n                    this.isEnterPressedOnDateInput = true;\n                    this.bsDatePickerDirective.bsValue = newVal;\n                }\n                this.toggleDpDropdown(event);\n            } else {\n                this.hideDatepickerDropdown();\n                this.hideTimepickerDropdown();\n            }\n        } else {\n            this.hideDatepickerDropdown();\n            this.hideTimepickerDropdown();\n        }\n    }\n\n    private isValid(event) {\n        if (!event) {\n            const enteredDate = $(this.nativeElement).find('input').val()?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]);\n            const newVal = getNativeDateObject(enteredDate, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput });\n            if (!this.formatValidation(newVal, enteredDate)) {\n                return;\n            }\n        }\n    }\n\n    // change and blur events are added from the template\n    protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n        if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {\n            super.handleEvent(node, eventName, callback, locals);\n        }\n    }\n\n    onInputBlur($event) {\n        if (!$($event.relatedTarget).hasClass('current-date')) {\n            this.invokeOnTouched();\n            this.invokeEventCallback('blur', { $event });\n        }\n    }\n}\n","<div dropdown\n  [isOpen]=\"isTimeOpen\"\n  autoClose=\"false\"\n  [container]=\"'body'\"\n  (onShown)=\"onTimepickerOpen()\"\n  style=\"display: inherit;\">\n  <input class=\"form-control app-textbox display-input\"\n    [attr.aria-label]=\"arialabel\"\n    focus-target\n    [name]=\"name\"\n    [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n    [attr.aria-hidden]=\"!!loadNativeDateInput\"\n    type=\"text\"\n    [value]=\"displayValue\"\n    (click)=\"toggleDpDropdown($event, true)\"\n    (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n    (blur)=\"onInputBlur($event)\"\n    (change)=\"onDateChange($event)\"\n    [autofocus]=\"autofocus\"\n    [disabled]=\"disabled || readonly || isCurrentDate\"\n    [required]=\"required\"\n    [readOnly]=\"isReadOnly\"\n    [attr.placeholder]=\"placeholder\"\n    [attr.accesskey]=\"shortcutkey\"\n    (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n  <span class=\"input-group-btn\">\n    <button type=\"button\"\n      class=\"btn btn-default btn-date\"\n      [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n      [attr.aria-hidden]=\"!!loadNativeDateInput\"\n      [disabled]=\"disabled || readonly || isCurrentDate\"\n      [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n      aria-haspopup=\"true\"\n      [attr.aria-expanded]=\"isDateOpen\"\n      (click)=\"toggleDpDropdown($event, false)\">\n      <i aria-hidden=\"true\"\n      class=\"app-icon wm-sl-l sl-calendar\"></i>\n    </button>\n    <button type=\"button\"\n      class=\"btn btn-default btn-time\"\n      [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n      [attr.aria-hidden]=\"!!loadNativeDateInput\"\n      [disabled]=\"disabled || readonly || isCurrentDate\"\n      aria-label=\"Select time\"\n      aria-haspopup=\"true\"\n      aria-expanded=\"false\"\n      (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n      <i aria-hidden=\"true\"\n      class=\"app-icon wm-sl-l sl-time\"></i>\n    </button>\n  </span>\n  <div style=\"width: 0;display: inline-block;\">\n    <input class=\"model-holder\"\n      aria-label=\"datepicker dropdownmenu\"\n      aria-controls=\"date\"\n      focus-target\n      [tabindex]=\"-1\"\n      [attr.aria-hidden]=\"!!loadNativeDateInput\"\n      [container]=\"containerTarget || '.wm-app'\"\n      [bsConfig]=\"_dateOptions\"\n      [isOpen]=\"isDateOpen\"\n      placement=\"bottom right\"\n      (onShown)=\"onDatePickerOpen()\"\n      (onHidden)=\"hideDatepickerDropdown()\"\n      [daysDisabled]=\"excludedDaysToDisable\"\n      [datesDisabled]=\"excludedDatesToDisable\"\n      #datepicker=bsDatepicker\n      bsDatepicker\n      [isDisabled]=\"disabled || readonly || isCurrentDate\"\n      [bsValue]=\"bsDateValue\"\n      (bsValueChange)=\"onModelUpdate($event, 'date')\">\n  </div>\n  <div *dropdownMenu\n    class=\"dropdown-menu\"\n    aria-label=\"timepicker dropdown\"\n    aria-controls=\"time\"\n    (click)=\"preventTpClose($event)\">\n    <timepicker class=\"model-holder\"\n      [showMeridian]=\"ismeridian\"\n      [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n      [(ngModel)]=\"bsTimeValue\"\n      [ngModelOptions]=\"{standalone: true}\"\n      [min]=\"minTime\"\n      [max]=\"maxTime\"\n      [hourStep]=\"hourstep\"\n      [minuteStep]=\"minutestep\"\n      [secondsStep]=\"secondsstep\"\n      [mousewheel]=\"true\"\n      [arrowkeys]=\"true\"\n      (isValid)=\"isValid($event)\"\n      [showSeconds]=\"showseconds\"\n      (ngModelChange)=\"onModelUpdate($event, 'time')\"\n      [ngClass]=\"{ 'showbuttons': showampmbuttons }\"></timepicker>\n      @if (ismeridian && showampmbuttons) {\n          <div class=\"ampm-toggle text-center\">\n              <button class=\"meridian-btn mb-1\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'AM' }\" (click)=\"setPeriod('AM')\">{{appLocale.LABEL_AM ||\"AM\"}}</button><br>\n              <button class=\"meridian-btn\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'PM' }\" (click)=\"setPeriod('PM')\">{{appLocale.LABEL_PM ||\"PM\"}}</button>\n          </div>\n      }\n    </div>\n  </div>\n@if (loadNativeDateInput) {\n  <wm-datetimepicker\n    dateTimePicker\n    [config]=\"_dateOptions\"\n    [placement]=\"modal\"\n    [excludedDaysToDisable]=\"excludedDaysToDisable\"\n    [excludedDatesToDisable]=\"excludedDatesToDisable\"\n    [displayFormat]=\"dateInputFormat\"\n    [value]=\"bsDateValue\"\n    (change)=\"onModelUpdate($event, 'date')\">\n  </wm-datetimepicker>\n  <div class=\"mobile-input mobile-datepicker-container\"\n    [tabindex]=\"tabindex || 0\"\n    (click)=\"!(disabled || readonly) && showDatePickerModal(bsDateValue)\"\n    [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : arialabel || 'Choose Date'\"\n    (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n    (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n    role=\"button\">\n  </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}