{"version":3,"file":"windows-plus-form-fields-custom-input.mjs","sources":["../../../projects/windows-plus-form-fields/custom-input/util/enum/autocomplete/autocomplete.enum.ts","../../../projects/windows-plus-form-fields/custom-input/components/custom-password-input/custom-password-input.component.ts","../../../projects/windows-plus-form-fields/custom-input/components/custom-password-input/custom-password-input.component.html","../../../projects/windows-plus-form-fields/custom-input/components/custom-text-input/custom-text-input.component.ts","../../../projects/windows-plus-form-fields/custom-input/components/custom-text-input/custom-text-input.component.html","../../../projects/windows-plus-form-fields/custom-input/components/custom-number-input/custom-number-input.component.ts","../../../projects/windows-plus-form-fields/custom-input/components/custom-number-input/custom-number-input.component.html","../../../projects/windows-plus-form-fields/custom-input/components/custom-text-area/custom-text-area.component.ts","../../../projects/windows-plus-form-fields/custom-input/components/custom-text-area/custom-text-area.component.html","../../../projects/windows-plus-form-fields/custom-input/components/custom-date-input/custom-date-input.component.ts","../../../projects/windows-plus-form-fields/custom-input/components/custom-date-input/custom-date-input.component.html","../../../projects/windows-plus-form-fields/custom-input/components/autocomplete-input/autocomplete-input.component.ts","../../../projects/windows-plus-form-fields/custom-input/components/autocomplete-input/autocomplete-input.component.html","../../../projects/windows-plus-form-fields/custom-input/custom-input.module.ts","../../../projects/windows-plus-form-fields/custom-input/util/enum/input-type/input-type.enum.ts","../../../projects/windows-plus-form-fields/custom-input/public-api.ts","../../../projects/windows-plus-form-fields/custom-input/windows-plus-form-fields-custom-input.ts"],"sourcesContent":["/**\r\n * @author Alex Hodson\r\n * @description an enumerator which contains the input fields autocomplete values\r\n */\r\nexport enum Autocomplete {\r\n\tOFF = 'off',\r\n\tON = 'on',\r\n\tNAME = 'name',\r\n\tPREFIX = 'honorific-prefix',\r\n\tFIRST_NAME = 'given-name',\r\n\tMIDDLE_NAME = 'additional-name',\r\n\tLAST_NAME = 'family-name',\r\n\tSUFFIX = 'honorific-suffix',\r\n\tNICKNAME = 'nickname',\r\n\tEMAIL = 'email',\r\n\tTELEPHONE = 'tel',\r\n\tUSERNAME = 'username',\r\n\tNEW_PASSWORD = 'new-password',\r\n\tCURRENT_PASSWORD = 'current-password',\r\n\tORGANISATION = 'organization',\r\n\tADDRESS_LINE_1 = 'address-line1',\r\n\tADDRESS_LINE_2 = 'address-line2',\r\n\tADDRESS_LINE_3 = 'address-line3',\r\n\tADDRESS_LEVEL1 = 'address-level1',\r\n\tADDRESS_LEVEL2 = 'address-level2',\r\n\tADDRESS_LEVEL3 = 'address-level3',\r\n\tADDRESS_LEVEL4 = 'address-level4',\r\n\tCOUNTY_NAME = 'country-name',\r\n\tPOSTCODE = 'postal-code'\r\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms'\r\nimport { Autocomplete } from '../../util/enum/autocomplete/autocomplete.enum'\r\n\r\n@Component({\r\n  selector: 'wp-custom-password-input',\r\n  templateUrl: './custom-password-input.component.html',\r\n  styleUrls: ['./custom-password-input.component.sass']\r\n})\r\nexport class CustomPasswordInputComponent implements OnInit {\r\n\t/**\r\n\t * @description a string which represents the text value for the input fields label\r\n\t */\r\n\t@Input() label: string = ''\r\n\t/**\r\n\t * @description a FormControl instance which contains the value associated with the input field\r\n\t */\r\n\t@Input() value: FormControl = new FormControl('')\r\n\t/**\r\n\t * @description a string which represents the HTML identifier for the input field\r\n\t */\r\n\t@Input() id: string\r\n\t/**\r\n\t * @description a string which represents the \r\n\t */\r\n\t@Input() errorMessage?: string\r\n\t/**\r\n\t * @description the test identifier for the input element\r\n\t */\r\n\t@Input() testId?: string\r\n\t/**\r\n\t * @description an optional properties representing the autocomplete value\r\n\t */\r\n\t@Input() autocomplete?: Autocomplete = Autocomplete.OFF\r\n\t/**\r\n\t * @description an event emitter which fires when a change is detected in the input elements value\r\n\t */\r\n\t@Output() handleChange: EventEmitter<string> = new EventEmitter<string>()\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description class constructor specifying the required services and properties for the password input field\r\n\t */\r\n  constructor() { }\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description the method to be run when the component is first rendered\r\n\t */\r\n  ngOnInit(): void {\r\n  }\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description handles a change in the in the input elements value\r\n\t */\r\n\thandleValueChange(): void {\r\n\t\tthis.handleChange.emit(this.value.value)\r\n\t}\r\n}\r\n","<div class=\"form-label-group\">\r\n\t<label \r\n\t\tclass=\"custom-label\"\r\n\t\t*ngIf=\"label\"\r\n\t>\r\n\t\t{{label}}\r\n\t</label>\r\n\t<div>\r\n\t\t<input\r\n\t\t\t[id]=\"id\"\r\n\t\t\ttype=\"password\"\r\n\t\t\tclass=\"form-control custom-input\"\r\n\t\t\tplaceholder=\"Enter your password\"\r\n\t\t\t[formControl]=\"value\"\r\n\t\t\t[autocomplete]=\"autocomplete\"\r\n\t\t\t[attr.data-testid]=\"testId\"\r\n\t\t\t(change)=\"handleValueChange()\"\r\n\t\t/>\r\n\t</div>\r\n</div>","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core'\r\nimport { FormControl } from '@angular/forms'\r\nimport { Autocomplete } from '../../util/enum/autocomplete/autocomplete.enum'\r\n\r\n@Component({\r\n  selector: 'wp-custom-text-input',\r\n  templateUrl: './custom-text-input.component.html',\r\n  styleUrls: ['./custom-text-input.component.sass']\r\n})\r\nexport class CustomTextInputComponent implements OnInit {\r\n\t/**\r\n\t * @description the text input elements identifier\r\n\t */\r\n\t@Input({ required: true }) id: string\r\n\t/**\r\n\t * @description the text input elements label\r\n\t */\r\n\t@Input({ required: true }) label: string\r\n\t/**\r\n\t * @description the value of the text input element\r\n\t */\r\n\t@Input({ required: true }) value: FormControl\r\n\t/**\r\n\t * @description text input elements name\r\n\t */\r\n\t@Input() name?: string\r\n\t/**\r\n\t * @description whether the text input is disabled\r\n\t */\r\n\t@Input() disabled?: boolean\r\n\t/**\r\n\t * @description the text input elements error message\r\n\t */\r\n\t@Input() errorMessage?: string\r\n\t/**\r\n\t * @description the tab index to be applied to the input element\r\n\t */\r\n\t@Input() tabIndex?: number\r\n\t/**\r\n\t * @description the placeholder to be used when the input field is empty\r\n\t */\r\n\t@Input() placeholder?: string = ''\r\n\t/**\r\n\t * @description the test identifier for the input element\r\n\t */\r\n\t@Input() testId?: string\r\n\t/**\r\n\t * @description an event emitter which fires when a change is detected in the input elements value\r\n\t */\r\n\t@Output() handleChange: EventEmitter<string> = new EventEmitter<string>()\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description class constructor specifying the required services and properties for the component\r\n\t */\r\n  constructor() { }\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description the method to be run when the component is rendered\r\n\t */\r\n  ngOnInit(): void {\r\n  }\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description handles a change in the in the input elements value\r\n\t */\r\n\thandleValueChange(): void {\r\n\t\tthis.handleChange.emit(this.value.value)\r\n\t}\r\n}\r\n","<div class=\"form-label-group\">\r\n\t<label \r\n\t\tclass=\"custom-label text-truncate\"\r\n\t\t[ngClass]=\"{'text-red': errorMessage}\"\r\n\t\t*ngIf=\"label\"\r\n\t>\r\n\t\t{{label}}\r\n\t</label>\r\n\t<div>\r\n\t\t<input \r\n\t\t\t[id]=\"id\"\r\n\t\t\ttype=\"text\"\r\n\t\t\tclass=\"form-control custom-input\"\r\n\t\t\t[formControl]=\"value\"\r\n\t\t\t[placeholder]=\"placeholder\"\r\n\t\t\t[readonly]=\"disabled\"\r\n\t\t\t[tabindex]=\"tabIndex\"\r\n\t\t\t[name]=\"name\"\r\n\t\t\t[attr.data-testid]=\"testId\"\r\n\t\t\t(change)=\"handleValueChange()\"\r\n\t\t/>\r\n\t</div>\r\n\t<div *ngIf=\"errorMessage\">\r\n\t\t<span id=\"{{id + '-error-message'}}\" class=\"text-red\">{{errorMessage}}</span>\r\n\t</div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms'\r\n\r\n@Component({\r\n  selector: 'wp-custom-number-input',\r\n  templateUrl: './custom-number-input.component.html',\r\n  styleUrls: ['./custom-number-input.component.sass']\r\n})\r\nexport class CustomNumberInputComponent implements OnInit {\r\n\t/**\r\n\t * @description the number input elements identifier\r\n\t */\r\n\t@Input() id: string\r\n\t/**\r\n\t * @description the number input elements label\r\n\t */\r\n\t@Input() label: string\r\n\t/**\r\n\t * @description the value of the number input element\r\n\t */\r\n\t@Input() value: FormControl\r\n\t/**\r\n\t * @description number input elements name\r\n\t */\r\n\t@Input() name?: string\r\n\t/**\r\n\t * @description whether the number input is disabled\r\n\t */\r\n\t@Input() disabled?: boolean\r\n\t/**\r\n\t * @description the maximum number allowed in the element\r\n\t */\r\n\t@Input() max: number\r\n\t/**\r\n\t * @description the minimum number required in the element\r\n\t */\r\n\t@Input() min: number\r\n\t/**\r\n\t * @description the step increase\r\n\t */\r\n\t@Input() step: number\r\n\t/**\r\n\t * @description the number input elements error message\r\n\t */\r\n\t@Input() errorMessage?: string\r\n\t/**\r\n\t * @description the tab index to be applied to the input element\r\n\t */\r\n\t@Input() tabIndex?: number\r\n\t/**\r\n\t * @description the test identifier for the input element\r\n\t */\r\n\t@Input() testId?: string\r\n\t/**\r\n\t * @description an event emitter which fires when a change is detected in the input elements value\r\n\t */\r\n\t@Output() handleChange: EventEmitter<number> = new EventEmitter<number>()\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description class constructor specifying the required services and properties for the component\r\n\t */\r\n  constructor() { }\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description the method to be run when the component is rendered\r\n\t */\r\n  ngOnInit(): void {\r\n  }\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description handles a change in the in the input elements value\r\n\t */\r\n\thandleValueChange(value: string): void {\r\n\t\tthis.value.setValue(value.includes('.') ? parseFloat(value) : parseInt(value))\r\n\t\tthis.handleChange.emit(this.value.value)\r\n\t}\r\n\r\n}\r\n","<div class=\"form-label-group\">\r\n\t<label \r\n\t\tclass=\"custom-label text-truncate\"\r\n\t\t*ngIf=\"label\"\r\n\t>\r\n\t\t{{label}}\r\n\t</label>\r\n\t<div>\r\n\t\t<input \r\n\t\t\t[id]=\"id\"\r\n\t\t\ttype=\"number\"\r\n\t\t\tclass=\"form-control custom-input\"\r\n\t\t\t[value]=\"value.value\"\r\n\t\t\t[readonly]=\"disabled\"\r\n\t\t\t[step]=\"step\"\r\n\t\t\t[max]=\"max\"\r\n\t\t\t[min]=\"min\"\r\n\t\t\t[disabled]=\"disabled\"\r\n\t\t\t[tabindex]=\"tabIndex\"\r\n\t\t\t[attr.data-testid]=\"testId\"\r\n\t\t\t(change)=\"handleValueChange($event.target.value)\"\r\n\t\t/>\r\n\t</div>\r\n\t<div>\r\n\t\t<span class=\"text-grey text-small\">Your number must be between {{min}} - {{max}}</span>\r\n\t</div>\r\n\t<div *ngIf=\"errorMessage\">\r\n\t\t<span id=\"{{id + '-error-message'}}\" class=\"text-red\">{{errorMessage}}</span>\r\n\t</div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core'\r\nimport { FormControl } from '@angular/forms'\r\n\r\n@Component({\r\n\tselector: 'wp-custom-text-area',\r\n\ttemplateUrl: './custom-text-area.component.html',\r\n\tstyleUrls: ['./custom-text-area.component.sass']\r\n})\r\nexport class CustomTextAreaComponent {\r\n\t/**\r\n\t * @description the text area element's identifier\r\n\t */\r\n\t@Input() id: string\r\n\t/**\r\n\t * @description the text area's label\r\n\t */\r\n\t@Input() label?: string\r\n\t/**\r\n\t * @description the value of the text area element\r\n\t */\r\n\t@Input() value: FormControl\r\n\t/**\r\n\t * @description the name of the text area element\r\n\t */\r\n\t@Input() name: string\r\n\t/**\r\n\t * @description the maximum length allowed in the text area\r\n\t */\r\n\t@Input() maxLength: number\r\n\t/**\r\n\t * @description whether the text area is disabled\r\n\t */\r\n\t@Input() disabled?: boolean\r\n\t/**\r\n\t * @description an error message to be displayed for the text area\r\n\t */\r\n\t@Input() errorMessage?: string\r\n\t/**\r\n\t * @description the test identifier for the input element\r\n\t */\r\n\t@Input() testId?: string\r\n\t/**\r\n\t * @description handles a change in the text area's value\r\n\t */\r\n\t@Output() handleChange: EventEmitter<string> = new EventEmitter<string>()\r\n\t/**\r\n\t * @description a number which represents the current length of the text area value\r\n\t */\r\n\tcurrentLength: number = 0\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description class constructor specifying the required services and properties for the component\r\n\t */\r\n\tconstructor() { }\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description the method to be run when the component is rendered. A subscription is created on the text area form control value which will set the\r\n\t * current length member according to the length of the text area value\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tthis.value.valueChanges.subscribe(value => {\r\n\t\t\tthis.currentLength = value.length\r\n\t\t})\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description handles a change in the in the text area elements value\r\n\t */\r\n\thandleValueChange(): void {\r\n\t\tthis.handleChange.emit(this.value.value)\r\n\t}\r\n\r\n}\r\n","<div class=\"form-label-group\">\r\n\t<label \r\n\t\tclass=\"custom-label text-truncate\"\r\n\t\t*ngIf=\"label\"\r\n\t>\r\n\t\t{{label}}\r\n\t</label>\r\n\t<div>\r\n\t\t<textarea \r\n\t\t\t[id]=\"id\"\r\n\t\t\ttype=\"text\"\r\n\t\t\tclass=\"form-control custom-input\"\r\n\t\t\t[formControl]=\"value\"\r\n\t\t\t[readonly]=\"disabled\"\r\n\t\t\t[maxlength]=\"maxLength\"\r\n\t\t\t[attr.data-testid]=\"testId\"\r\n\t\t\t(change)=\"handleValueChange()\"\r\n\t\t></textarea>\r\n\t</div>\r\n\t<div \r\n\t\tid=\"{{id + '-count-indicator'}}\"\r\n\t\tclass=\"d-flex justify-content-end\"\r\n\t\t[ngClass]=\"currentLength < maxLength ? 'text-grey' : 'text-red'\"\r\n\t>\r\n\t\t<span id=\"{{id + '-current-length'}}\">{{currentLength}}</span>/{{maxLength}}\r\n\t</div>\r\n\t<div *ngIf=\"errorMessage\">\r\n\t\t<span id=\"{{id + '-error-message'}}\" class=\"text-red\">{{errorMessage}}</span>\r\n\t</div>\r\n</div>","import { Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms'\r\nimport { NgbCalendar, NgbDate, NgbDateStruct, NgbInputDatepicker } from '@ng-bootstrap/ng-bootstrap'\r\nimport { faCalendar } from '@fortawesome/free-regular-svg-icons'\r\n\r\n@Component({\r\n  selector: 'wp-custom-date-input',\r\n  templateUrl: './custom-date-input.component.html',\r\n  styleUrls: ['./custom-date-input.component.sass']\r\n})\r\nexport class CustomDateInputComponent implements OnChanges {\r\n\t/**\r\n\t * @description the date picker HTML reference\r\n\t */\r\n\t@ViewChild('d') datePicker: NgbInputDatepicker\r\n\t/**\r\n\t * @description the identifier associated with the date picker\r\n\t */\r\n\t@Input() id: string\r\n\t/**\r\n\t * @description the label associated with the date picker\r\n\t */\r\n\t@Input() label: string\r\n\t/**\r\n\t * @description the value to be displayed in the date picker\r\n\t */\r\n\t@Input() value: FormControl\r\n\t/**\r\n\t * @description the name of the date picker\r\n\t */\r\n\t@Input() name: string\r\n\t/**\r\n\t * @description an error messages to be displayed\r\n\t */\r\n\t@Input() errorMessage = ''\r\n\t/**\r\n\t * @description whether the date picker is disabled\r\n\t */\r\n\t@Input() disabled = false\r\n\t/**\r\n\t * @description whether the date picker is embedded and not triggered from an input element\r\n\t */\r\n\t@Input() embed = true\r\n\t/**\r\n\t * @description whether the date picked expects a range to be selected\r\n\t */\r\n\t@Input() ranged = false\r\n\t/**\r\n\t * @description the minimum date which can be selected\r\n\t */\r\n\t@Input() minDate?: NgbDateStruct\r\n\t/**\r\n\t * @description the maximum date which can be selected\r\n\t */\r\n\t@Input() maxDate?: NgbDateStruct\r\n\t/**\r\n\t * @description the day numbers to be disabled\r\n\t */\r\n\t@Input() daysToRestrict?: number[]\r\n\t/**\r\n\t * @description the test identifier for the input element\r\n\t */\r\n\t@Input() testId?: string\r\n\t/**\r\n\t * @description specific dates to be disabled\r\n\t */\r\n\t@Input() specificDatesToRestrict?: NgbDateStruct[]\r\n\t/**\r\n\t * @description emits the date picker value when changed\r\n\t */\r\n\t@Output() handleChange: EventEmitter<NgbDateStruct[]> = new EventEmitter<NgbDateStruct[]>()\r\n\t\r\n\t/**\r\n\t * @description an object which contains the configuration for the date picker button\r\n\t */\r\n\tbuttonConfiguration: any = {\r\n\t\t'id': 'calendar-button',\r\n\t\t'value': faCalendar,\r\n\t\t'handleClick': () => { this.datePicker.toggle() }\r\n\t}\r\n\r\n\t/**\r\n\t * @description the date which the user is currently hovering over\r\n\t */\r\n\thoveredDate: NgbDate | null = null\r\n\t/**\r\n\t * @description the from date (initial) where a range is required\r\n\t */\r\n\tfromDate: NgbDate;\r\n\t/**\r\n\t * @description the end date where a range is required\r\n\t */\r\n\ttoDate: NgbDate | null = null;\r\n\r\n\t/**\r\n\t * @description determines whether the calendar date given should be disabled according to the restriction rules\r\n\t */\r\n\tisDisabled: (...args: any[]) => boolean|undefined\r\n\t\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description class constructor specifying the required properties and services\r\n\t */\r\n\tconstructor(private calendar: NgbCalendar) {\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description the method to be run when the component properties are changed\r\n\t */\r\n\tngOnChanges(): void {\r\n\t\tthis.isDisabled = (date: NgbDateStruct) => {\r\n\t\t\treturn !!this.specificDatesToRestrict?.find(x =>{\r\n\t\t\t\tconst restrictionDate = new NgbDate(x.year, x.month, x.day)\r\n\t\t\r\n\t\t\t\treturn restrictionDate.equals(date) // If the date matches a specific date\r\n\t\t\t}) || this.daysToRestrict?.includes(this.calendar.getWeekday(new NgbDate(date.year,date.month,date.day))) // If the day number matches in the restriction rules\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description emits the value stored in the date picker\r\n\t * @param date the selected date\r\n\t */\r\n\thandleValueChange(date: NgbDate): void {\r\n\t\tif (!this.fromDate && !this.toDate) {\r\n\t\t\tif (this.ranged) this.fromDate = date;\r\n\t\t\tthis.value.setValue(date)\r\n\t\t\tthis.handleChange.emit([date])\r\n\t\t} else if (this.fromDate && !this.toDate && (date.equals(this.fromDate) || date.after(this.fromDate))) {\r\n\t\t\tthis.toDate = date;\r\n\t\t\tthis.handleChange.emit([this.fromDate, date])\r\n\t\t} else {\r\n\t\t\tthis.toDate = null;\r\n\t\t\tthis.fromDate = date;\r\n\t\t\tthis.value.setValue(date)\r\n\t\t\tthis.handleChange.emit([date])\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description determines whether the specified date is the element being hovered over in the calendar\r\n\t * @param date the date in the calendar\r\n\t * @returns whether the given date is being hovered over\r\n\t */\r\n\tisHovered(date: NgbDate) {\r\n\t\tconst hovered = date === this.hoveredDate\r\n\t\t\r\n\t\tif (hovered) return hovered\r\n\r\n\t\treturn (\r\n\t\t\t(\r\n\t\t\t\tthis.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate)\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\t\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description determines whether the specified date is inside the selected date range\r\n\t * @param date the date in the calendar\r\n\t * @returns whether the given date is inside the to and from date\r\n\t */\r\n\tisInside(date: NgbDate) {\r\n\t\treturn date.after(this.fromDate) && (\r\n\t\t\t(this.toDate && date.before(this.toDate)) || (!this.toDate && date.before(this.hoveredDate))\r\n\t\t)\r\n\t}\r\n\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description determines whether the specified date is part of the date range selection\r\n\t * @param date the date in the calendar\r\n\t * @returns whether the specified date is part of the selected range\r\n\t */\r\n\tisRange(date: NgbDate) {\r\n\t\treturn (\r\n\t\t\tdate.equals(this.fromDate) ||\r\n\t\t\t(this.toDate && date.equals(this.toDate)) ||\r\n\t\t\tthis.isInside(date) ||\r\n\t\t\tthis.isHovered(date)\r\n\t\t);\r\n\t}\r\n}\r\n","<div class=\"form-label-group\">\r\n\t<label \r\n\t\tclass=\"custom-label text-truncate\"\r\n\t\t[ngClass]=\"{'text-red': errorMessage}\"\r\n\t\t*ngIf=\"label\"\r\n\t>\r\n\t\t{{label}}\r\n\t</label>\r\n\t<div *ngIf=\"embed\">\r\n\t\t<ngb-datepicker \r\n\t\t\t[dayTemplate]=\"customDay\"\r\n\t\t\t[minDate]=\"minDate\"\r\n\t\t\t[maxDate]=\"maxDate\"\r\n\t\t\t[markDisabled]=\"isDisabled\"\r\n\t\t\t(dateSelect)=\"handleValueChange($event)\"\r\n\t\t></ngb-datepicker>\r\n\t</div>\r\n\t<div *ngIf=\"!embed\">\r\n\t\t<div class=\"input-group\">\r\n\t\t\t<input \r\n\t\t\t\t[id]=\"id\"\r\n\t\t\t\tclass=\"form-control text-grey\"\r\n\t\t\t\tplaceholder=\"Please select a date\"\r\n\t\t\t\tname=\"name\"\r\n\t\t\t\t[readonly]=\"true\"\r\n\t\t\t\t[formControl]=\"value\"\r\n\t\t\t\t[attr.data-testid]=\"testId\"\r\n\t\t\t\tngbDatepicker\r\n\t\t\t\t#d=\"ngbDatepicker\"\r\n\t\t\t\t[container]=\"'body'\"\r\n\t\t\t\t[autoClose]=\"ranged ? 'outside' : true\"\r\n\t\t\t\t[dayTemplate]=\"customDay\"\r\n\t\t\t\t[minDate]=\"minDate\"\r\n\t\t\t\t[maxDate]=\"maxDate\"\r\n\t\t\t\t[markDisabled]=\"isDisabled\"\r\n\t\t\t\tdatepickerClass=\"datepicker-popup\"\r\n\t\t\t\toutsideDays=\"hidden\"\r\n\t\t\t\t(dateSelect)=\"handleValueChange($event)\"\r\n\t\t\t>\r\n\t\t\t<button \r\n\t\t\t\t[id]=\"buttonConfiguration.id\"\r\n\t\t\t\tclass=\"btn btn-primary w-auto\"\r\n\t\t\t\t(click)=\"buttonConfiguration.handleClick($event)\"\r\n\t\t\t\t>\r\n\t\t\t\t<span class=\"ms-1\">\r\n\t\t\t\t\t<fa-icon [icon]=\"buttonConfiguration.value\"></fa-icon>\r\n\t\t\t\t</span>\r\n\t\t\t</button>\r\n\r\n\t\t</div>\r\n\t</div>\r\n\t<div *ngIf=\"errorMessage\">\r\n\t\t<span class=\"text-red\">{{errorMessage}}</span>\r\n\t</div>\r\n</div>\r\n\r\n<ng-template \r\n\t#customDay\r\n\tlet-date\r\n\tlet-currentMonth=\"currentMonth\"\r\n\tlet-selected=\"selected\"\r\n\tlet-disabled=\"disabled\"\r\n\t\r\n\tlet-focused=\"focused\"\r\n>\r\n\t<div \r\n\t\tclass=\"custom-calendar-day w-100 h-100 text-center text\"\r\n\t\t[class.bg-blue]=\"selected\"\r\n\t\t[class.bg-secondary-blue]=\"(!ranged && isHovered(date)) || (ranged && isRange(date))\"\r\n\t\t[class.bg-pale-blue]=\"ranged && isInside(date)\"\r\n\t\t[class.bg-grey]=\"date.month !== currentMonth || disabled\"\r\n\t\t[class.text-grey]=\"(!ranged && !selected) || (ranged && date !== fromDate && date !== toDate && date !== hoveredDate && !selected)\"\r\n\t\t[class.text-muted]=\"date.month !== currentMonth || disabled\"\r\n\t\t\r\n\t\t(mouseenter)=\"hoveredDate = date\"\r\n\t\t(mouseleave)=\"hoveredDate = null\"\r\n\t>\r\n\t\t<span \r\n\t\t\tclass=\"d-flex align-items-center justify-content-center h-100\"\r\n\t\t\t[class.focused]=\"focused\"\r\n\t\t>\r\n\t\t\t{{ date.day }}\r\n\t\t</span>\r\n\t</div>\r\n</ng-template>","import { CommonModule } from '@angular/common'\r\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\r\nimport { debounceTime, distinctUntilChanged, fromEvent, map, of } from 'rxjs'\r\nimport { AutocompleteItem, AutocompleteItems } from '../../public-api'\r\n\r\n\r\n@Component({\r\n  selector: 'wp-autocomplete-input',\r\n  templateUrl: './autocomplete-input.component.html',\r\n  styleUrls: ['./autocomplete-input.component.sass']\r\n})\r\nexport class AutocompleteInputComponent implements AfterViewInit {\r\n\t/**\r\n\t * @description a reference to the autocomplete field\r\n\t */\r\n  @ViewChild('autocompleteField', { read: ElementRef }) inputField: ElementRef\r\n\t/**\r\n\t * @description the text input elements identifier\r\n\t */\r\n\t@Input({ required: true }) id: string\r\n\t/**\r\n\t * @description the text input elements label\r\n\t */\r\n\t@Input({ required: true }) label: string\r\n\t/**\r\n\t * @description the value of the text input element\r\n\t */\r\n\t@Input({ required: true }) value: FormControl\r\n\t/**\r\n\t * @description the autocomplete items available\r\n\t */\r\n\t@Input({ required: true }) autocompleteItems: AutocompleteItems\r\n\t/**\r\n\t * @description text input elements name\r\n\t */\r\n\t@Input() name?: string\r\n\t/**\r\n\t * @description whether the text input is disabled\r\n\t */\r\n\t@Input() disabled?: boolean\r\n\t/**\r\n\t * @description the text input elements error message\r\n\t */\r\n\t@Input() errorMessage?: string\r\n\t/**\r\n\t * @description the tab index to be applied to the input element\r\n\t */\r\n\t@Input() tabIndex?: number\r\n\t/**\r\n\t * @description the placeholder to be used when the input field is empty\r\n\t */\r\n\t@Input() placeholder?: string = ''\r\n\t/**\r\n\t * @description the test identifier for the input element\r\n\t */\r\n\t@Input() testId?: string\r\n\t/**\r\n\t * @description an event emitter which fires when a change is detected in the input elements value\r\n\t */\r\n\t@Output() handleChange: EventEmitter<AutocompleteItem|null> = new EventEmitter<AutocompleteItem|null>()\r\n\r\n\toutputItems: AutocompleteItems = []\r\n\t/**\r\n\t * @description a boolean representing the visibility of the autocomplete list\r\n\t */\r\n\tshowList: boolean = false\r\n\t/**\r\n\t * @description the currently selected autocomplete item\r\n\t */\r\n\tcurrentValue: AutocompleteItem|null\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description class constructor specifying the required services and properties for the component\r\n\t */\r\n  constructor() { }\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description the method to be run after the view is initialised\r\n\t */\r\n\tngAfterViewInit(): void {\r\n\t\tthis.initialiseFilter()\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description handles a change in the in the input elements value\r\n\t */\r\n\thandleValueChange(): void {\r\n\t\tthis.handleChange.emit(this.currentValue)\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description toggles the visibility of the autocomplete list\r\n\t */\r\n\ttoggleDropdownList(): void {\r\n\t\tthis.showList = !this.showList\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description initialise the filtering of the autocomplete items\r\n\t */\r\n\tinitialiseFilter(): void {\r\n\t\tconst search$ = fromEvent(this.inputField.nativeElement, 'keyup')\r\n\t\t\t.pipe(\r\n\t\t\t\tmap((event: any) => event.target.value),\r\n\t\t\t\tdebounceTime(500),  \r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\tmap((term) => term ? this.filterItems(term) : of<any>(this.autocompleteItems))\r\n\t\t\t);\r\n\r\n\t\t\tsearch$.subscribe((data: any) => {\r\n\t\t\t\tthis.outputItems = data || []\r\n\t\t\t})\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description filters through the autocomplete items identifying any items which match the term\r\n\t * @param term the term to be used as part of the filter\r\n\t * @returns an array containing the filtered items\r\n\t */\r\n\tfilterItems(term: string): any {\r\n\t\treturn this.autocompleteItems.filter(element => element.label.toLowerCase().includes(term.toLowerCase()))\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description handles the autocomplete field gaining focus\r\n\t */\r\n\thandleFocus(): void {\r\n\t\tthis.currentValue = null\r\n\t\tthis.toggleDropdownList()\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description handles the autocomplete field losing focus - triggering the value change event emitter\r\n\t */\r\n\thandleUnfocus(): void {\r\n\t\tthis.toggleDropdownList()\r\n\t\t\r\n\t\tif (!this.currentValue) {\r\n\t\t\tthis.currentValue = {\r\n\t\t\t\t'label': this.value.value,\r\n\t\t\t\t'properties': {\r\n\t\t\t\t\t'label': this.value.value,\r\n\t\t\t\t\t'value': 0\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.handleValueChange()\r\n\t}\r\n\t/**\r\n\t * @author Alex Hodson\r\n\t * @description handles the selection of an autocomplete item\r\n\t * @param item the selected item\r\n\t */\r\n\tsetSelectedValue(item: AutocompleteItem): void {\r\n\t\tthis.currentValue = item\r\n\t\tthis.value.setValue(item.label)\r\n\t}\r\n}\r\n","<div class=\"position-relative\">\r\n\t<div class=\"form-label-group\">\r\n\t\t<label \r\n\t\t\tclass=\"custom-label text-truncate\"\r\n\t\t\t[ngClass]=\"{'text-red': errorMessage}\"\r\n\t\t\t*ngIf=\"label\"\r\n\t\t>\r\n\t\t\t{{label}}\r\n\t\t</label>\r\n\t\t<div>\r\n\t\t\t<input \r\n\t\t\t\t#autocompleteField\r\n\t\t\t\t[id]=\"id\"\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tclass=\"form-control custom-input\"\r\n\t\t\t\t[formControl]=\"value\"\r\n\t\t\t\t[placeholder]=\"placeholder\"\r\n\t\t\t\t[readonly]=\"disabled\"\r\n\t\t\t\t[tabindex]=\"tabIndex\"\r\n\t\t\t\t[name]=\"name\"\r\n\t\t\t\t[attr.data-testid]=\"testId\"\r\n\t\t\t\t(focus)=\"handleFocus()\"\r\n\t\t\t\t(focusout)=\"handleUnfocus()\"\r\n\t\t\t/>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"autocomplete-list\" [hidden]=\"!showList\">\r\n\t\t<div class=\"card\">\r\n      <div class=\"search\">\r\n        <div *ngFor=\"let item of outputItems; let isOdd = odd\" tappable>\r\n\t\t\t\t\t<div \r\n\t\t\t\t\t\t[ngClass]=\"{ 'bg-light-grey': isOdd }\"\r\n\t\t\t\t\t\tclass=\"search-item p-2 cursor-pointer\"\r\n\t\t\t\t\t\t(mousedown)=\"setSelectedValue(item)\"\r\n\t\t\t\t\t>\r\n            <span class=\"text-grey\">{{item.label}}</span>\r\n\t\t\t\t\t</div>\r\n        </div>     \r\n      </div>\r\n    </div>\r\n\t</div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms'\r\nimport { CustomPasswordInputComponent } from './components/custom-password-input/custom-password-input.component';\r\nimport { CustomTextInputComponent } from './components/custom-text-input/custom-text-input.component';\r\nimport { CustomNumberInputComponent } from './components/custom-number-input/custom-number-input.component';\r\nimport { CustomTextAreaComponent } from './components/custom-text-area/custom-text-area.component';\r\nimport { CustomDateInputComponent } from './components/custom-date-input/custom-date-input.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap'\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\r\nimport { AutocompleteInputComponent } from './components/autocomplete-input/autocomplete-input.component'\r\n\r\n@NgModule({\r\n  declarations: [\r\n\t\tAutocompleteInputComponent,\r\n    CustomPasswordInputComponent,\r\n    CustomTextInputComponent,\r\n    CustomNumberInputComponent,\r\n    CustomTextAreaComponent,\r\n    CustomDateInputComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tNgbModule,\r\n\t\tFontAwesomeModule\r\n  ],\r\n  exports: [\r\n\t\tAutocompleteInputComponent,\r\n    CustomPasswordInputComponent,\r\n    CustomTextInputComponent,\r\n    CustomNumberInputComponent,\r\n    CustomTextAreaComponent,\r\n    CustomDateInputComponent\r\n  ]\r\n})\r\nexport class CustomInputModule { }\r\n","/**\r\n * @author Alex Hodson\r\n * @description an enumerator which defines the available input types\r\n */\r\nexport enum InputType {\r\n\tTEXT,\r\n\tNUMBER\r\n}","/*\r\n * Public API Surface of windows-plus-form-fields\r\n */\r\n\r\nexport * from './custom-input.module'\r\n\r\nexport * from './components/custom-password-input/custom-password-input.component'\r\nexport * from './util/interface/custom-password-input/custom-password-input.interface'\r\n\r\nexport * from './components/custom-text-area/custom-text-area.component'\r\nexport * from './util/interface/custom-text-area/custom-text-area.interface'\r\n\r\nexport * from './components/custom-text-input/custom-text-input.component'\r\nexport * from './util/interface/custom-text-input/custom-text-input.interface'\r\n\r\nexport * from './components/custom-number-input/custom-number-input.component'\r\nexport * from './util/interface/custom-number-input/custom-number-input.interface'\r\n\r\nexport * from './components/custom-date-input/custom-date-input.component'\r\nexport * from './util/interface/custom-date-input/custom-date-input.interface'\r\n\r\nexport * from './components/autocomplete-input/autocomplete-input.component'\r\nexport * from './util/interface/autocomplete-input/autocomplete-input.interface'\r\n\r\nexport * from './util/enum/autocomplete/autocomplete.enum'\r\nexport * from './util/enum/input-type/input-type.enum'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}