sdk-textbox
Version:
Simple to use (Angular) textbox for controlling input while typing.
1 lines • 73.3 kB
Source Map (JSON)
{"version":3,"file":"sdk-textbox.mjs","sources":["../../../projects/sdk-textbox/src/lib/components/calendar/calendar.component.ts","../../../projects/sdk-textbox/src/lib/components/calendar/calendar.component.html","../../../projects/sdk-textbox/src/lib/sdk-textbox.component.ts","../../../projects/sdk-textbox/src/lib/sdk-textbox.component.html","../../../projects/sdk-textbox/src/lib/sdk-textbox.module.ts","../../../projects/sdk-textbox/src/public-api.ts","../../../projects/sdk-textbox/src/sdk-textbox.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { DatePipe, isPlatformBrowser } from '@angular/common';\n\n@Component({\n\tselector: 'calendar',\n\ttemplateUrl: './calendar.component.html',\n\tstyleUrls: ['./calendar.component.scss']\n})\n\nexport class CalendarComponent implements OnInit {\n\t@Input() date: string = \"\";\n\t@Input() show: boolean = false;\n\t@Input() height: string = \"180px\";\n\t@Input() width: string = \"180px\";\n\t@Input() fontSize: string = \"1.0em\";\n\t@Output() setDateEvent: EventEmitter<any> = new EventEmitter();\n\n\t/**************************************************************************\n\t* Component Variables\n\t**************************************************************************/\n\t@ViewChild(\"calendar\") calendar!: ElementRef | undefined;\n\t@ViewChild(\"yearText\") yearText: ElementRef | undefined;\n\n\tpublic showCalendar: boolean = true;\n\tpublic showMonths: boolean = false;\n\tpublic showYears: boolean = false;\n\n\tpublic calendarHtml: string = \"\";\n\n\tpublic year: number = 0;\n\tpublic month: string = \"\";\n\tpublic monthNumber: number = 0;\n\tpublic dayNumber: number = 0;\n\tpublic months: string[] = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\tpublic days: string[] = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\n\tpublic calDays: any;\n\n\tprivate newData: string = \"\";\n\n\tconstructor(private datePipe: DatePipe) {}\n\n\tpublic ngOnInit() {\n\t\tthis.setCalendar();\n\n\t\tsetTimeout(() => {\n\t\t\tthis.setStyle();\n\t\t}, 1);\n\t}\n\n\tpublic ngOnChanges() {\n\t\tthis.newData = this.date;\n\t}\n\n\tpublic setDate(date: string) {\n\t\tthis.setDateEvent.emit(date);\n\t}\n\n\tpublic getToday() {\n\t\tthis.newData = new Date().toString();\n\t\tthis.setCalendar();\n\t}\n\n\tpublic getMonth() {\n\t\tthis.showMonths = true;\n\t\tthis.showCalendar = false;\n\t}\n\n\tpublic setMonth(month: any) {\n\t\tthis.showCalendar = true;\n\t\tthis.showMonths = false;\n\n\t\tthis.newData = new Date(this.year, month, this.dayNumber).toString();\n\t\tthis.setCalendar();\n\t}\n\n\tpublic getYear() {\n\t\tthis.showYears = true;\n\t\tthis.showCalendar = false;\n\t}\n\n\tpublic setYear() {\n\t\tif (this.yearText?.nativeElement.value !== \"\" && this.yearText?.nativeElement.value.length === 4) {\n\t\t\tthis.showCalendar = true;\n\t\t\tthis.showYears = false;\n\n\t\t\tthis.newData = new Date(this.yearText?.nativeElement.value, this.monthNumber - 1, this.dayNumber).toString();\n\t\t\tthis.setCalendar();\n\t\t}\n\t}\n\n\tpublic onKeyDown(event: any) {\n\t\tlet text = event.target.value;\n\n\t\tif (event.key === \"Enter\") {\n\t\t\tthis.setYear();\n\t\t} else if (\n\t\t\tevent.key === \"Backspace\"\n\t\t\t|| event.key === \"Tab\"\n\t\t\t|| event.key === \"ArrowLeft\"\n\t\t\t|| event.key === \"ArrowRight\"\n\t\t\t|| event.key === \"Meta\"\n\t\t\t|| event.key === \"Control\"\n\t\t) {\n\t\t\t// DO NOTHING\n\t\t} else {\n\t\t\tif (!(event.metaKey && event.key === \"v\") && !(event.metaKey && event.key === \"c\")) {\n\t\t\t\tif (!event.key.match(/[0-9]/)\n\t\t\t\t\t|| text.length >= 4\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**************************************************************************\n\t* Protected Methods\n\t**************************************************************************/\n\tprivate setCalendar() {\n\t\tlet dt = (this.newData && this.newData !== \"\") ? new Date(this.newData) : new Date();\n\n\t\tthis.year = dt.getFullYear();\n\t\tthis.month = this.months[dt.getMonth()];\n\t\tthis.monthNumber = (dt.getMonth() + 1);\n\t\tthis.dayNumber = dt.getDate();\n\n\t\tlet fistDay = new Date(this.year, dt.getMonth(), 1).getDay();\n\t\tlet totalDays = this.getTotalDays(dt.getFullYear(), dt.getMonth() + 1);\n\t\tlet weeks = Math.floor(totalDays / 7);\n\n\t\tlet isToday: boolean = false;\n\t\tlet isSelected: boolean = false;\n\n\t\tif (fistDay > 0) weeks = weeks + 1;\n\t\tif ((totalDays + fistDay) > (weeks * 7)) weeks = weeks + 1;\n\n\t\tlet plotDay: any = 1;\n\n\t\tthis.calDays = [];\n\n\t\tfor (let w = 0; w < weeks; w++) {\n\t\t\tfor (let d = 0; d < 7; d++) {\n\t\t\t\tlet currentDay = ((7 * w) + (d + 1));\n\n\t\t\t\tif (currentDay < (fistDay + 1)) {\n\t\t\t\t\tthis.calDays.push({ date: \"\", day: \"\"});\n\t\t\t\t} else {\n\t\t\t\t\tif (plotDay <= totalDays) {\n\t\t\t\t\t\tif (this.datePipe.transform(new Date(this.year, this.monthNumber - 1, plotDay), 'yyyy-MM-dd') === this.datePipe.transform(new Date(), 'yyyy-MM-dd')) {\n\t\t\t\t\t\t\tisToday = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tisToday = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.datePipe.transform(new Date(this.year, this.monthNumber - 1, plotDay), 'yyyy-MM-dd') === this.datePipe.transform(this.date, 'yyyy-MM-dd')) {\n\t\t\t\t\t\t\tisSelected = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tisSelected = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.calDays.push({ date: this.datePipe.transform(new Date(this.year, this.monthNumber - 1, plotDay), 'yyyy-MM-dd'), day: plotDay.toString(), today: isToday, selected: isSelected });\n\t\t\t\t\t\t\n\t\t\t\t\t\tplotDay++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.calDays.push({ date: \"\", day: \"\"});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getTotalDays(year: any, month: any) {\n\t\treturn new Date(year, month, 0).getDate();\n\t}\n\n\tprivate setStyle() {\n\t\tlet element = this.calendar?.nativeElement;\n\n\t\tif (element) {\n\t\t\telement.style.setProperty(\"--height\", this.height);\n\t\t\telement.style.setProperty(\"--width\", this.width);\n\t\t\telement.style.setProperty(\"--font-size\", this.fontSize);\n\t\t}\n\t}\n}","<div #calendar *ngIf=\"show\" class=\"sdk-textbox-calendar\" [style.height]=\"((calDays.length * 30) + 30) + 'px'\">\n <div class=\"frame\" *ngIf=\"showCalendar\">\n <div class=\"header\">\n <div class=\"month\" (click)=\"getMonth()\">{{ month }}</div>\n <div class=\"today\" (click)=\"getToday()\">Today</div>\n <div class=\"year\" (click)=\"getYear()\">{{ year }}</div>\n </div>\n <div class=\"calendar\">\n <div class=\"grid\">\n <div class=\"label\">Sun</div>\n <div class=\"label\">Mon</div>\n <div class=\"label\">Tue</div>\n <div class=\"label\">Wed</div>\n <div class=\"label\">Thu</div>\n <div class=\"label\">Fri</div>\n <div class=\"label\">Sat</div>\n <div class=\"item\" [ngClass]=\"{ today: day.today, selected: day.selected }\" *ngFor=\"let day of calDays; let i = index\" (mousedown)=\"setDate(day.date)\">{{ day.day }}</div>\n </div>\n </div>\n </div>\n \n <table *ngIf=\"showMonths\" class=\"table\">\n <tbody>\n <tr>\n <td (click)=\"setMonth(0)\">Jan</td>\n <td (click)=\"setMonth(1)\">Feb</td>\n <td (click)=\"setMonth(2)\">Mar</td>\n <td (click)=\"setMonth(3)\">Apr</td>\n </tr>\n <tr>\n <td (click)=\"setMonth(4)\">May</td>\n <td (click)=\"setMonth(5)\">Jun</td>\n <td (click)=\"setMonth(6)\">Jul</td>\n <td (click)=\"setMonth(7)\">Aug</td>\n </tr>\n <tr>\n <td (click)=\"setMonth(8)\">Sep</td>\n <td (click)=\"setMonth(9)\">Oct</td>\n <td (click)=\"setMonth(10)\">Nov</td>\n <td (click)=\"setMonth(11)\">Dec</td>\n </tr>\n </tbody>\n </table>\n\n <table *ngIf=\"showYears\" class=\"table\">\n <tbody>\n <tr>\n <td>\n <div class=\"year-box\">\n <input #yearText class=\"year\" type=\"number\" (keydown)=\"onKeyDown($event)\" [value]=\"year\" />\n <button class=\"set\" (click)=\"setYear()\">SET</button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { DatePipe, formatCurrency, formatNumber } from '@angular/common';\n\n@Component({\n\tselector: 'sdk-textbox',\n\ttemplateUrl: './sdk-textbox.component.html',\n\tstyleUrls: ['./sdk-textbox.component.scss']\n})\n\nexport class SDKTextboxComponent {\n /**************************************************************************\n * Input/Output Parameters\n **************************************************************************/\n\t@Input() validCharacters: string = \"\";\n\t@Input() value: string = \"\";\n\t@Input() hint: string = \"\";\n\t@Input() pattern: string = \"\";\n\t@Input() locale: string = \"en-US\";\n\t@Input() multiLine: boolean = false;\n\t@Input() border: string | undefined;\n\t@Input() padding: string | undefined;\n\t@Input() margin: string | undefined;\n\t@Input() height: string | undefined;\n\t@Input() width: string | undefined;\n\t@Input() style: string | undefined;\n\t@Input() class: string | undefined;\n\t@Input() showCalendarIcon: boolean = true;\n\t@Input() calHeight: string = \"180px\";\n\t@Input() calWidth: string = \"180px\";\n\t@Input() calFontSize: string = \"1.0em\";\n\t@Output() blurCallBackEvent: EventEmitter<any> = new EventEmitter();\n\t@Output() changeCallBackEvent: EventEmitter<any> = new EventEmitter();\n\t@Output() enterCallBackEvent: EventEmitter<any> = new EventEmitter();\n\n /**************************************************************************\n * Component Variables\n **************************************************************************/\n\t@ViewChild(\"component\") component: ElementRef | undefined;\n\t@ViewChild(\"text\") text: ElementRef | undefined;\n\t@ViewChild(\"calendar\") calendar: ElementRef | undefined;\n\n\tprotected calendarDate: string = \"\";\n\tprotected showCalendar: boolean = false;\n\tprotected lockCalendar: boolean = false;\n\n\tprivate pArray: any = [];\n\tprivate fArray: any = [];\n\n //******************************************************************************\n // Component Life-cycle Methods\n //******************************************************************************\n\tprotected ngOnInit() {\n\t\tif (this.validCharacters) {\n\t\t\tthis.validCharacters = this.validCharacters.toString().toLocaleLowerCase();\n\n\t\t\tswitch (this.validCharacters) {\n\t\t\t\tcase \"calendar\":\n\t\t\t\t\tif (!this.pattern || this.pattern === \"\") this.pattern = \"YYYY-MM-DD\";\n\n\t\t\t\t\tlet divider = this.pattern.replace(/[ymdYMD]/g, \"\").substring(0, 1);\n\t\t\t\t\tlet dividerArray = this.pattern.split(divider);\n\n\t\t\t\t\tthis.hint = this.pattern;\n\t\t\t\t\tthis.createPattern(dividerArray[0].replace(/[ymdYMD]/g, \"#\") + divider + dividerArray[1].replace(/[ymdYMD]/g, \"#\") + divider + dividerArray[2].replace(/[ymdYMD]/g, \"#\"));\n\n\t\t\t\t\tif (this.value && this.value !== \"\") {\n\t\t\t\t\t\tlet datePipe = new DatePipe(this.locale);\n\t\t\t\t\t\tlet pattern = this.pattern!.replace(/[yY]/g, \"y\").replace(/[mM]/g, \"M\").replace(/[dD]/g, \"d\");\n\t\t\t\t\t\tlet value = this.value.split(\"T\")[0];\n\n\t\t\t\t\t\tthis.value = datePipe.transform(value, pattern) || \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (!this.width) {\n\t\t\t\t\t\t\tthis.text!.nativeElement.style.width = `${this.pattern!.length * 10}px`;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.component!.nativeElement.parentNode.hasAttribute(\"nocomponent\")) {\n\t\t\t\t\t\t\tthis.showCalendarIcon = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1);\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"email\":\n\t\t\t\t\tthis.hint = \"name@company.com\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"custom\":\n\t\t\t\t\tif (this.pattern\n\t\t\t\t\t\t&& this.pattern.indexOf(\"#\") > -1\n\t\t\t\t\t\t&& !this.pattern.startsWith(\"[\")\n\t\t\t\t\t\t&& !this.pattern.endsWith(\"]\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.hint = this.pattern;\n\t\t\t\t\t\tthis.createPattern();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected ngAfterViewInit() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.validCharacters === \"calendar\" && this.component && this.text) {\n\t\t\t\tthis.component.nativeElement.style.width = (this.text.nativeElement.clientWidth + 25) + \"px\";\n\t\t\t}\n\t\t}, 100);\n\t}\n\n //*************************************************************************\n // Protected Methods\n //*************************************************************************\n\tprotected onKeyDown(event: any) {\n\t\tthis.showCalendar = false;\n\n\t\tif (event.key === \"Enter\" && !event.shiftKey) {\n\t\t\tthis.text!.nativeElement.blur();\n\n\t\t\tif (this.enterCallBackEvent.observed) {\n\t\t\t\tthis.enterCallBackEvent.emit(event.target.value);\n\t\t\t}\n\t\t} else if (\n\t\t\tevent.key === \"Backspace\"\n\t\t\t|| event.key === \"Tab\"\n\t\t\t|| event.key === \"ArrowLeft\"\n\t\t\t|| event.key === \"ArrowRight\"\n\t\t\t|| event.key === \"Meta\"\n\t\t\t|| event.key === \"Control\"\n\t\t) {\n\t\t\t// DO NOTHING\n\t\t} else {\n\t\t\tlet text = this.removeSelection(event);\n\n\t\t\tif (!(event.metaKey && event.key === \"v\") && !(event.metaKey && event.key === \"c\")) {\n\t\t\t\tswitch (this.validCharacters) {\n\t\t\t\t\tcase \"alpha\":\n\t\t\t\t\t\tif (!event.key.match(/[a-zA-Z]/)) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"numeric\":\n\t\t\t\t\t\tif (!event.key.match(/[0-9]/)) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"alphanumeric\":\n\t\t\t\t\t\tif (!event.key.match(/[a-zA-Z0-9]/)) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"decimal\":\n\t\t\t\t\tcase \"currency\":\n\t\t\t\t\t\tif (!event.key.match(/[-0-9.]/)\n\t\t\t\t\t\t\t|| (event.key === \".\" && text.match(/[.]/g))\n\t\t\t\t\t\t\t|| (event.key === \"-\" && (event.target.selectionStart !== 0 || text.match(/[-]/g)))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet periodArray = text.toString().split(\".\");\n\n\t\t\t\t\t\tif (this.validCharacters === \"currency\" && periodArray.length > 1 && periodArray[1].length >= 2) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"calendar\":\n\t\t\t\t\t\tif (!event.key.match(/[0-9]/)\n\t\t\t\t\t\t\t|| text.replace(/[^0-9]/g, \"\").length === this.pattern!.replace(/[^ymdYMD]/g, \"\").length\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"email\":\n\t\t\t\t\t\tif (!event.key.match(/[a-zA-Z0-9._%+-@]/)\n\t\t\t\t\t\t\t|| (event.key === \"@\" && text.match(/[@]/g))\n\t\t\t\t\t\t\t|| (!text.match(/[@]/g) && text.length >= 64)\n\t\t\t\t\t\t\t|| (text.match(/[@]/g) && text.length >= 254)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet atArray = text.toString().split(\"@\");\n\n\t\t\t\t\t\tif (atArray.length > 1\n\t\t\t\t\t\t\t&& event.target.selectionStart > atArray[0].length\n\t\t\t\t\t\t\t&& !event.key.match(/[a-zA-Z0-9-.]/)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"latitude\":\n\t\t\t\t\t\tlet latrx = /^([\\-]?|[\\-]?[1-9]|[\\-]?[1-8][0-9]|[\\-]?90)(?:[.]\\d{0,15})?$/;\n\t\t\t\t\t\tlet lattext = text + event.key;\n\n\t\t\t\t\t\tif (!lattext.match(new RegExp(latrx))) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"longitude\":\n\t\t\t\t\t\tlet longrx = /^([\\-]?|[\\-]?[1-9]|[\\-]?[1-9]\\d|[\\-]?[1][0-7]\\d|[\\-]?180)(?:[.]\\d{0,15})?$/;\n\t\t\t\t\t\tlet longtext = text + event.key;\n\n\t\t\t\t\t\tif (!longtext.match(new RegExp(longrx))) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"custom\":\n\t\t\t\t\t\tif (this.pattern\n\t\t\t\t\t\t\t&& this.pattern.indexOf(\"#\") > -1\n\t\t\t\t\t\t\t&& !this.pattern.startsWith(\"[\")\n\t\t\t\t\t\t\t&& !this.pattern.endsWith(\"]\")\n\t\t\t\t\t\t\t&& (!event.key.match(/[0-9]/) || text.length === this.pattern.length)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.pattern\n\t\t\t\t\t\t\t&& this.pattern.startsWith(\"[\")\n\t\t\t\t\t\t\t&& this.pattern.endsWith(\"]\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (!event.key.match(new RegExp(this.pattern, \"g\"))) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.pattern\n\t\t\t\t\t\t\t&& this.pattern.startsWith(\"^\")\n\t\t\t\t\t\t\t&& this.pattern.endsWith(\"$\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tlet newText = text + event.key;\n\n\t\t\t\t\t\t\tif (!newText.match(new RegExp(this.pattern))) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected onBlur(event: any) {\n\t\tlet text = event.target.value;\n\n\t\tif (this.validCharacters && text && text !== \"\") {\n\t\t\ttext = this.cleanText(text);\n\t\t\ttext = this.formatText(text);\n\n\t\t\tevent.target.value = text;\n\t\t}\n\n\t\tif (this.validCharacters) {\n\t\t\tthis.validCharacters = this.validCharacters.toString().toLocaleLowerCase();\n\n\t\t\tswitch (this.validCharacters) {\n\t\t\t\tcase \"calendar\":\n\t\t\t\t\tif (!this.lockCalendar) {\n\t\t\t\t\t\tthis.showCalendar = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (this.blurCallBackEvent.observed) {\n\t\t\tthis.blurCallBackEvent.emit(this.text!.nativeElement.value);\n\t\t}\n\t}\n\n\tprotected onInput(event: any) {\n\t\tif (this.validCharacters === \"decimal\"\n\t\t\t|| this.validCharacters === \"currency\"\n\t\t) {\n\t\t\tthis.setNumericText(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"calendar\") {\n\t\t\tthis.setCalendarText(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"email\") {\n\t\t\tthis.setEmailText(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"latitude\") {\n\t\t\tthis.setLatitude(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"longitude\") {\n\t\t\tthis.setLongitude(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"custom\" && this.pArray.length > 0) {\n\t\t\tthis.setCustomText(event);\n\t\t}\n\n\t\tif (this.changeCallBackEvent.observed) {\n\t\t\tthis.changeCallBackEvent.emit(this.text!.nativeElement.value);\n\t\t}\n\t}\n\n\tprotected onCut(event: any) {\n\t\tlet textLeft = event.target.value.toString().substring(0, event.target.selectionStart);\n\t\tlet textRight = event.target.value.toString().substring(event.target.selectionEnd);\n\n\t\tlet text = textLeft + textRight;\n\n\t\tlet clipboardData = event.clipboardData || event.originalEvent.clipboardData;\n\t\tclipboardData.items.add(text, 'text/plain');\n\t}\n\n\tprotected onPaste(event: any) {\n\t\tlet clipboardData = event.clipboardData || event.originalEvent.clipboardData;\n\t\tlet text = clipboardData.getData('text');\n\n\t\tlet textLeft = event.target.value.toString().substring(0, event.target.selectionStart);\n\t\tlet textRight = event.target.value.toString().substring(event.target.selectionEnd);\n\n\t\ttext = textLeft + text + textRight;\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t(this.validCharacters === \"custom\" && this.pattern.startsWith(\"^\") && this.pattern.endsWith(\"$\"))\n\t\t\t|| this.validCharacters === \"latitude\"\n\t\t\t|| this.validCharacters === \"longitude\"\n\t\t) {\n\t\t\tevent.target.value = \"\";\n\t\t} else {\n\t\t\ttext = this.cleanText(text);\n\n\t\t\tevent.target.value = text;\n\t\t}\n\n\t\tif (this.changeCallBackEvent.observed) {\n\t\t\tthis.changeCallBackEvent.emit(this.text!.nativeElement.value);\n\t\t}\n\t}\n\n\tprotected showComponent(event: any) {\n\t\tif (this.validCharacters) {\n\t\t\tthis.validCharacters = this.validCharacters.toString().toLocaleLowerCase();\n\n\t\t\tswitch (this.validCharacters) {\n\t\t\t\tcase \"calendar\":\n\t\t\t\t\tif (!this.component!.nativeElement.parentNode.hasAttribute(\"nocomponent\")) {\n\t\t\t\t\t\tthis.calendarDate = this.text!.nativeElement.value;\n\t\t\t\t\t\tthis.showCalendar = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected setDate(date: any) {\n\t\tthis.text!.nativeElement.value = this.formatText(date);\n\n\t\tif (this.changeCallBackEvent.observed) {\n\t\t\tthis.changeCallBackEvent.emit(this.text!.nativeElement.value);\n\t\t}\n\n\t\tthis.showCalendar = false;\n\t}\n\n //*************************************************************************\n // Private Methods\n //*************************************************************************\n\tprivate setNumericText(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = \"\";\n\t\tlet beforeLength = text.length;\n\t\tlet afterLength = 0;\n\t\tlet cursorStart = event.target.selectionStart;\n\t\tlet cursor = 0;\n\n\t\tevent.preventDefault();\n\n\t\tnewText = text.toString().replace(/[^-0-9.]/g, \"\");\n\t\tnewText = newText.toString().replace(/\\B(?=([0-9]{3})+(?![0-9]))/g, \",\");\n\n\t\tlet periodArray = newText.toString().split(\".\");\n\n\t\tif (periodArray.length > 1) {\n\t\t\tnewText = periodArray[0] + \".\" + periodArray[1].replace(/[,]/g, \"\");\n\t\t}\n\n\t\tafterLength = newText.length;\n\n\t\tcursor = cursorStart + (afterLength - beforeLength);\n\n\t\tevent.target.value = newText;\n\t\tevent.target.selectionStart = cursor;\n\t\tevent.target.selectionEnd = cursor;\n\t}\n\n\tprivate setCalendarText(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = \"\";\n\t\tlet beforeLength = text.length;\n\t\tlet afterLength = 0;\n\t\tlet cursorStart = event.target.selectionStart;\n\t\tlet cursor = 0;\n\n\t\tevent.preventDefault();\n\n\t\tnewText = text.toString().replace(/[^0-9]/g, \"\");\n\n\t\tfor (let x = 0; x < this.pArray.length; x++) {\n\t\t\tnewText = newText.replace(new RegExp(this.pArray[x]), this.fArray[x]);\n\t\t}\n\n\t\tafterLength = newText.length;\n\n\t\tcursor = cursorStart + (afterLength - beforeLength);\n\n\t\tevent.target.value = newText;\n\t\tevent.target.selectionStart = cursor;\n\t\tevent.target.selectionEnd = cursor;\n\t}\n\n\tprivate setEmailText(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = \"\";\n\t\tlet beforeLength = text.length;\n\t\tlet afterLength = 0;\n\t\tlet cursorStart = event.target.selectionStart;\n\t\tlet cursor = 0;\n\n\t\tevent.preventDefault();\n\n\t\tnewText = text.toString().replace(/[^a-zA-Z0-9._%+-@]/g, \"\");\n\n\t\tlet atArray = newText.toString().split(\"@\");\n\n\t\tif (atArray.length > 1) {\n\t\t\tnewText = atArray[0].substring(0, 63) + \"@\" + atArray.slice(1).toString().replace(/[^a-zA-Z0-9-.]/g, \"\");\n\t\t} else {\n\t\t\tnewText = newText.substring(0, 63);\n\t\t}\n\n\t\tnewText = newText.substring(0, 253);\n\n\t\tafterLength = newText.length;\n\n\t\tcursor = cursorStart + (afterLength - beforeLength);\n\n\t\tevent.target.value = newText;\n\t\tevent.target.selectionStart = cursor;\n\t\tevent.target.selectionEnd = cursor;\n\t}\n\n\tprivate setLatitude(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = text;\n\n\t\tevent.preventDefault();\n\n\t\tif (Number(text) < -90) {\n\t\t\tnewText = -90;\n\t\t}\n\t\tif (Number(text) > 90) {\n\t\t\tnewText = 90;\n\t\t}\n\n\t\tevent.target.value = newText;\n\t}\n\n\tprivate setLongitude(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = text;\n\n\t\tevent.preventDefault();\n\n\t\tif (Number(text) < -180) {\n\t\t\tnewText = -180;\n\t\t}\n\t\tif (Number(text) > 180) {\n\t\t\tnewText = 180;\n\t\t}\n\n\t\tevent.target.value = newText;\n\t}\n\t\n\tprivate setCustomText(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = \"\";\n\t\tlet beforeLength = text.length;\n\t\tlet afterLength = 0;\n\t\tlet cursorStart = event.target.selectionStart;\n\t\tlet cursor = 0;\n\n\t\tevent.preventDefault();\n\n\t\tif (text === \"+1 \") text = \"\";\n\t\tnewText = text.toString().replace(/[^0-9]/g, \"\");\n\n\t\tfor (let x = 0; x < this.pArray.length; x++) {\n\t\t\tnewText = newText.replace(new RegExp(this.pArray[x]), this.fArray[x]);\n\t\t}\n\n\t\tafterLength = newText.length;\n\n\t\tcursor = cursorStart + (afterLength - beforeLength);\n\n\t\tevent.target.value = newText;\n\t\tevent.target.selectionStart = cursor;\n\t\tevent.target.selectionEnd = cursor;\n\t}\n\n\tprivate removeSelection(event: any): any {\n\t\tlet textLeft = event.target.value.toString().substring(0, event.target.selectionStart);\n\t\tlet textRight = event.target.value.toString().substring(event.target.selectionEnd + 1);\n\n\t\treturn textLeft + textRight;\n\t}\n\n\tprivate cleanText(text: any): any {\n\t\tif (this.validCharacters?.toString().startsWith(\"[\")) {\n\t\t\tlet format = \"[^\" + this.validCharacters?.toString().split(\"[\")[1];\n\n\t\t\ttext = text.toString().replace(new RegExp(format, \"g\"), \"\");\n\t\t} else {\n\t\t\tswitch (this.validCharacters) {\n\t\t\t\tcase \"alpha\":\n\t\t\t\t\ttext = text.toString().replace(/[^a-zA-Z]/g, \"\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"numeric\":\n\t\t\t\t\ttext = text.toString().replace(/[^0-9]/g, \"\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"alphanumeric\":\n\t\t\t\t\ttext = text.toString().replace(/[^a-zA-Z0-9]/g, \"\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"decimal\":\n\t\t\t\tcase \"currency\":\n\t\t\t\t\ttext = text.toString().replace(/[^0-9.-]|(?:\\/[.].*)[.]|(?!^)-/g, \"\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calendar\":\n\t\t\t\t\tif (this.pattern) {\n\t\t\t\t\t\tlet re = \"[^0-9\" + this.encodeText(Array.from(new Set(this.pattern.replace(/[a-zA-Z0-9]/g, \"\").split(\"\"))).join(\"\")) + \"]\";\n\n\t\t\t\t\t\ttext = text.toString().replace(new RegExp(re, \"g\"), \"\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"email\":\n\t\t\t\t\ttext = text.toString().replace(/[^a-zA-Z0-9._%+-@]/g, \"\");\n\n\t\t\t\t\tlet atArray = text.toString().split(\"@\");\n\n\t\t\t\t\tif (atArray.length > 1) {\n\t\t\t\t\t\tlet periodArray = atArray[1].toString().split(\".\");\n\n\t\t\t\t\t\tif (periodArray.length > 1) {\n\t\t\t\t\t\t\tlet type = periodArray.slice(periodArray.length - 1);\n\t\t\t\t\t\t\ttype = type.toString().replace(/[^a-zA-Z]/g, \"\");\n\n\t\t\t\t\t\t\tperiodArray.pop();\n\t\t\t\t\t\t\ttext = atArray[0] + \"@\" + periodArray.join(\".\") + \".\" + type;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"latitude\":\n\t\t\t\tcase \"longitude\":\n\t\t\t\t\tlet re = \"(\" + this.pattern + \")\";\n\t\t\t\t\ttext = text.toString().replace(new RegExp(re, \"g\"), \"$1\");\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"custom\":\n\t\t\t\t\tif (this.pattern) {\n\t\t\t\t\t\tif (this.pattern.indexOf(\"#\") > -1 && !this.pattern.startsWith(\"[\") && !this.pattern.endsWith(\"]\")) {\n\t\t\t\t\t\t\tlet re = \"[^0-9\" + this.encodeText(Array.from(new Set(this.pattern.split(\"\"))).join(\"\")) + \"]\";\n\t\t\t\t\t\t\ttext = text.toString().replace(new RegExp(re.replace(\"#\", \"\"), \"g\"), \"\");\n\t\t\t\t\t\t\ttext = text.substring(0, this.pattern.length);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.pattern.startsWith(\"[\") && this.pattern.endsWith(\"]\")) {\n\t\t\t\t\t\t\tlet re = this.pattern.replace(\"[\", \"[^\");\n\n\t\t\t\t\t\t\tif (this.pattern.startsWith(\"[^\")) {\n\t\t\t\t\t\t\t\tre = this.pattern.replace(\"[^\", \"[\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttext = text.toString().replace(new RegExp(re, \"g\"), \"\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.pattern.startsWith(\"^\") && this.pattern.endsWith(\"$\")) {\n\t\t\t\t\t\t\tlet re = \"(\" + this.pattern + \")\";\n\t\t\t\t\t\t\ttext = text.toString().replace(new RegExp(re, \"g\"), \"$1\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tprivate formatText(text: any): any {\n\t\tif (this.validCharacters === \"currency\") {\n\t\t\ttext = formatCurrency(parseFloat(text), this.locale, this.pattern ?? '$');\n\t\t} else if (this.validCharacters === \"custom\" || this.validCharacters === \"latitude\" || this.validCharacters === \"longitude\") {\n\t\t\t// DO NOTHING\n\t\t} else if (this.validCharacters === \"calendar\") {\n\t\t\tconst datepipe: DatePipe = new DatePipe(this.locale)\n\n\t\t\tlet pattern = this.pattern!.replace(/[yY]/g, \"y\").replace(/[mM]/g, \"M\").replace(/[dD]/g, \"d\");\n\n\t\t\ttry {\n\t\t\t\ttext = datepipe.transform(text, pattern, undefined, this.locale);\n\t\t\t\tthis.text!.nativeElement.style.backgroundColor = \"\";\n\t\t\t} catch {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.text!.nativeElement.style.backgroundColor = \"rgb(255, 210, 217)\";\n\t\t\t\t\tthis.text!.nativeElement.focus();\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.pattern) {\n\t\t\t\ttext = formatNumber(parseFloat(text), this.locale, this.pattern);\n\t\t\t}\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tprivate createPattern(pattern: string = \"\") {\n\t\tif (pattern === \"\") {\n\t\t\tpattern = this.pattern?.trim() ?? \"\";\n\t\t}\n\t\tlet ws: any = pattern.replace(/([\\#])\\1+/g, \"#\");\n\n\t\tlet wsPattern = \"\";\n\t\tlet breakArray = [];\n\t\tlet cnt = 1;\n\t\tlet wsBreak = \"\";\n\n\t\tfor (let x = 0; x < ws.length; x++) {\n\t\t\tif (ws[x] === \"#\") {\n\t\t\t\twsPattern += `$${cnt}`;\n\t\t\t\tcnt++;\n\t\t\t} else {\n\t\t\t\twsPattern += ws[x];\n\t\t\t}\n\n\t\t\twsBreak = ws[x];\n\n\t\t\tif (ws[x] === \" \" || ws[x] === \"-\" || ws[x] === \".\" || ws[x] === \"/\" || ws[x] === \"_\") {\n\t\t\t\tbreakArray.push(wsBreak);\n\t\t\t\twsBreak = \"\";\n\t\t\t}\n\t\t}\n\n\t\tlet charArray = [];\n\t\tlet chars = \"\";\n\n\t\tfor (let x = 0; x < pattern.length; x++) {\n\t\t\tif (pattern[x] === \"#\") {\n\t\t\t\tchars += \"#\";\n\t\t\t} else {\n\t\t\t\tif (chars !== \"\") {\n\t\t\t\t\tcharArray.push(chars);\n\t\t\t\t}\n\t\t\t\tchars = \"\";\n\t\t\t}\n\t\t}\n\n\t\t// Add any remaining chars.\n\t\tif (chars !== \"\") {\n\t\t\tcharArray.push(chars);\n\t\t}\n\n\t\tlet patternArray = [];\n\n\t\tfor (let x = 0; x < charArray.length; x++) {\n\t\t\tpatternArray.push(`[0-9]{1,${charArray[x].length}}`);\n\t\t}\n\n\t\tthis.pArray = [];\n\t\tthis.fArray = [];\n\t\tlet wsFilter = ws;\n\t\tlet wspFilter = wsPattern;\n\t\tlet f = \"\";\n\t\tlet p = \"\";\n\n\t\tfor (let l = 0; l < patternArray.length; l++) {\n\t\t\tf = wsFilter.split(breakArray[l])[0];\n\t\t\twsFilter = wsFilter.substring(f.length + 1);\n\t\t\tp = wspFilter.split(breakArray[l])[0];\n\t\t\twspFilter = wspFilter.substring(p.length + 1);\n\n\t\t\tfor (let x = l; x < patternArray.length; x++) {\n\t\t\t\tif (this.pArray[x] === undefined) this.pArray.push(\"\");\n\t\t\t\tif (this.fArray[x] === undefined) this.fArray.push(\"\");\n\n\t\t\t\tlet m = (l > 0) ? \"*\" : \"\";\n\n\t\t\t\t// build left-side (pArray)\n\t\t\t\tif (f.startsWith(\"#\") && f.endsWith(\"#\")) { // number only\n\t\t\t\t\tif (x === l) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l] + \")\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pArray[x] += this.encodeText(f).replace(\"#\", m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\") + this.encodeText(breakArray[l]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!f.startsWith(\"#\") && !f.endsWith(\"#\")) { // wrapper\n\t\t\t\t\tif (x === l) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l] + \")\";\n\t\t\t\t\t} else if (x === (l + 1)) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\" + this.encodeText(breakArray[l]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pArray[x] += this.encodeText(f).replace(\"#\", m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\") + this.encodeText(breakArray[l]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!f.startsWith(\"#\") && f.endsWith(\"#\")) { // starts with non-digit\n\t\t\t\t\tif (x === l) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l] + \")\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\" + this.encodeText(breakArray[l]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (f.startsWith(\"#\") && !f.endsWith(\"#\")) { // ends with non-digit\n\t\t\t\t\tif (x === l) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l] + \")\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\" + this.encodeText(breakArray[l]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// build right-side (fArray)\n\t\t\t\tif (f.startsWith(\"#\") && f.endsWith(\"#\")) { // number only\n\t\t\t\t\tif (l === x) {\n\t\t\t\t\t\tthis.fArray[x] += p;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fArray[x] += p + (breakArray[l] ?? \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!f.startsWith(\"#\") && !f.endsWith(\"#\")) { // wrapper\n\t\t\t\t\tif (l === x) {\n\t\t\t\t\t\tthis.fArray[x] += p.replace(/[^$0-9]/g, \"\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fArray[x] += p + (breakArray[l] ?? \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!f.startsWith(\"#\") && f.endsWith(\"#\")) { // starts with non-digit\n\t\t\t\t\tif (l === x) {\n\t\t\t\t\t\tthis.fArray[x] += p;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fArray[x] += p + (breakArray[l] ?? \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (f.startsWith(\"#\") && !f.endsWith(\"#\")) { // ends with non-digit\n\t\t\t\t\tif (l === x) {\n\t\t\t\t\t\tthis.fArray[x] += p.replace(/[^$0-9]/g, \"\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fArray[x] += p + (breakArray[l] ?? \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate encodeText(text: any): any {\n\t\treturn text.replace(/[|{}\\\\()[\\]^$+*?.+]/g, '\\\\$&').replace(/\\s/, \"\\\\s\");\n\t}\n}\n","<div #component class=\"sdk_textbox\" style=\"position: relative; padding: 0;\">\n <div *ngIf=\"!multiLine\" [ngStyle]=\"{ 'margin': margin ?? '0', 'border': 'unset', 'height': height ?? 'unset', 'width': width ?? 'unset' }\">\n <input #text type=\"text\" [ngStyle]=\"{ 'padding': padding ?? '5px', 'margin': '0', 'border': border ?? '1px solid rgb(200, 200, 200)', 'height': '100%', 'width': '100%' }\" [class]=\"class\" [style]=\"style\" [placeholder]=\"hint\" (keydown)=\"onKeyDown($event)\" (focus)=\"text.select()\" (blur)=\"onBlur($event)\" (input)=\"onInput($event)\" (cut)=\"onCut($event)\" (paste)=\"onPaste($event)\" (click)=\"!showCalendarIcon ? showComponent($event) : false\" [value]=\"value\" />\n <i *ngIf=\"validCharacters === 'calendar' && showCalendarIcon\" class=\"sdk-icon\" (click)=\"showComponent($event); text.focus(); lockCalendar = true\" (mouseout)=\"lockCalendar = false; showCalendar ? text.focus() : false;\">calendar_month</i>\n <calendar *ngIf=\"showCalendar && validCharacters?.toLocaleLowerCase() === 'calendar'\" #calendar [date]=\"calendarDate\" [show]=\"showCalendar\" [height]=\"calHeight\" [width]=\"calWidth\" [fontSize]=\"calFontSize\" (setDateEvent)=\"setDate($event)\" (mouseover)=\"lockCalendar = true\" (mouseout)=\"lockCalendar = false; text.focus()\"></calendar>\n </div>\n <div *ngIf=\"multiLine\" [ngStyle]=\"{ 'margin': margin ?? '0', 'border': 'unset', 'height': height ?? 'unset', 'width': width ?? 'unset' }\">\n <textarea #text [ngStyle]=\"{ 'padding': padding ?? '5px', 'margin': '0', 'border': border ?? '1px solid rgb(200, 200, 200)', 'height':'100%', 'width': '100%' }\" [class]=\"class\" [style]=\"style\" [placeholder]=\"hint\" (keydown)=\"onKeyDown($event)\" (focus)=\"text.select()\" (blur)=\"onBlur($event)\" (input)=\"onInput($event)\" (cut)=\"onCut($event)\" (paste)=\"onPaste($event)\" (click)=\"!showCalendarIcon ? showComponent($event) : false\" [value]=\"value\"></textarea>\n </div>\n</div>\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\n\nimport { SDKTextboxComponent } from './sdk-textbox.component';\n\nimport { CalendarComponent } from './components/calendar/calendar.component';\n\n@NgModule({\n declarations: [\n SDKTextboxComponent,\n CalendarComponent\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n SDKTextboxComponent\n ],\n providers: [\n DatePipe\n ],\n schemas: [\n NO_ERRORS_SCHEMA\n ]\n})\nexport class SDKTextboxModule { }\n","/*\n * Public API Surface of sdk-textbox\n */\n\nexport { SDKTextboxModule } from './lib/sdk-textbox.module';\nexport { SDKTextboxComponent } from './lib/sdk-textbox.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CalendarComponent"],"mappings":"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