@metadev/lux 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/fesm2022/metadev-lux.mjs +1096 -1055
  2. package/fesm2022/metadev-lux.mjs.map +1 -1
  3. package/index.d.ts +944 -3
  4. package/package.json +3 -3
  5. package/lib/autocomplete/autocomplete.component.d.ts +0 -81
  6. package/lib/autocomplete-list/autocomplete-list.component.d.ts +0 -65
  7. package/lib/breadcrumb/breadcrumb.component.d.ts +0 -22
  8. package/lib/checkbox/checkbox.component.d.ts +0 -47
  9. package/lib/datasource.d.ts +0 -13
  10. package/lib/datetime/datetime.component.d.ts +0 -69
  11. package/lib/filter/filter.component.d.ts +0 -51
  12. package/lib/geolocation/geolocation.component.d.ts +0 -123
  13. package/lib/geolocation/geolocation.service.d.ts +0 -32
  14. package/lib/geolocation/openlayer-loader.service.d.ts +0 -7
  15. package/lib/helperFns.d.ts +0 -15
  16. package/lib/input/input.component.d.ts +0 -108
  17. package/lib/input/regexp.service.d.ts +0 -15
  18. package/lib/lang.d.ts +0 -2
  19. package/lib/lux.module.d.ts +0 -27
  20. package/lib/map/geopoint.d.ts +0 -7
  21. package/lib/map/map.component.d.ts +0 -39
  22. package/lib/modal/modal-backdrop.d.ts +0 -8
  23. package/lib/modal/modal-config.d.ts +0 -14
  24. package/lib/modal/modal-dismiss-reasons.d.ts +0 -4
  25. package/lib/modal/modal-ref.d.ts +0 -41
  26. package/lib/modal/modal-stack.d.ts +0 -31
  27. package/lib/modal/modal-window.d.ts +0 -28
  28. package/lib/modal/modal.service.d.ts +0 -19
  29. package/lib/modal/util.d.ts +0 -40
  30. package/lib/pagination/pagination.component.d.ts +0 -52
  31. package/lib/pagination/pagination.d.ts +0 -10
  32. package/lib/radiogroup/radiogroup.component.d.ts +0 -37
  33. package/lib/select/select.component.d.ts +0 -38
  34. package/lib/tooltip/placement.d.ts +0 -7
  35. package/lib/tooltip/tooltip-context.d.ts +0 -3
  36. package/lib/tooltip/tooltip.component.d.ts +0 -11
  37. package/lib/tooltip/tooltip.directive.d.ts +0 -27
  38. package/lib/tooltip/tooltip.service.d.ts +0 -20
  39. package/lib/tooltip/tooltop-content.d.ts +0 -6
  40. package/lib/voice-recognition/voice-recognition.directive.d.ts +0 -16
  41. package/lib/window/window.service.d.ts +0 -11
  42. package/public-api.d.ts +0 -18
@@ -1 +1 @@
1
- {"version":3,"file":"metadev-lux.mjs","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.html","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.html","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.html","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.html","../../../projects/lux/src/lib/datetime/datetime.component.ts","../../../projects/lux/src/lib/datetime/datetime.component.html","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/filter/filter.component.html","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.ts","../../../projects/lux/src/lib/modal/modal-ref.ts","../../../projects/lux/src/lib/modal/util.ts","../../../projects/lux/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/modal-window.ts","../../../projects/lux/src/lib/modal/modal-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/map/map.component.html","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.html","../../../projects/lux/src/lib/input/regexp.service.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/input/input.component.html","../../../projects/lux/src/lib/tooltip/placement.ts","../../../projects/lux/src/lib/tooltip/tooltip.component.ts","../../../projects/lux/src/lib/tooltip/tooltop-content.ts","../../../projects/lux/src/lib/tooltip/tooltip.service.ts","../../../projects/lux/src/lib/tooltip/tooltip.directive.ts","../../../projects/lux/src/lib/pagination/pagination.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.html","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.html","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/select/select.component.html","../../../projects/lux/src/lib/voice-recognition/voice-recognition.directive.ts","../../../projects/lux/src/lib/window/window.service.ts","../../../projects/lux/src/lib/lux.module.ts","../../../projects/lux/src/public-api.ts","../../../projects/lux/src/metadev-lux.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\r\n// undefined and null functions\r\n\r\nexport const exists = (value: any): boolean =>\r\n value !== null && value !== undefined;\r\n\r\nexport const hasValue = (value: any): boolean =>\r\n exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);\r\n\r\n// string functions\r\n\r\nexport const isEmptyString = (value: string): boolean => value.trim() === '';\r\n\r\nexport const isValidEmail = (value: string): boolean => {\r\n const re =\r\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;\r\n return re.test(String(value).toLowerCase().trim());\r\n};\r\n\r\nexport const isValidUrl = (value: string): boolean => {\r\n const pattern =\r\n // eslint-disable-next-line max-len\r\n /^((([a-z]+?:\\/\\/)?(((([a-z0-9]([a-z0-9-]*[a-z0-9])*)\\.)+[a-z]{2,})|((([0-9]{1,3}\\.){3}[0-9]{1,3}))|(localhost))(\\:[0-9]+)?))?((\\/[a-zA-Z0-9\\-_+=~.,:;%]+)*\\/?)((\\?|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+(((&|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+)*))?(#[a-zA-Z0-9\\-_+~.,:;%]+(=[a-zA-Z0-9\\*\\-_+~.,:;%]+)?)?$/;\r\n return pattern.test(value);\r\n};\r\n\r\nexport const isValidRelativeUrl = (value: string): boolean => {\r\n const pattern =\r\n // eslint-disable-next-line max-len\r\n /^((([a-z]+?:\\/\\/)?(((([a-z0-9]([a-z0-9-]*[a-z0-9])*)\\.)+[a-z]{2,})|((([0-9]{1,3}\\.){3}[0-9]{1,3}))|(localhost))(\\:[0-9]+)?)|([a-zA-Z0-9\\-_+=~.,:;%]+))?((\\/[a-zA-Z0-9\\-_+=~.,:;%]+)*\\/?)((\\?|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+(((&|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+)*))?(#[a-zA-Z0-9\\-_+~.,:;%]+(=[a-zA-Z0-9\\*\\-_+~.,:;%]+)?)?$/;\r\n return pattern.test(value);\r\n};\r\n\r\nexport const isValidColor = (value: string): boolean => {\r\n value = String(value).toLowerCase();\r\n // valid values for CSS color property, yet not valid colors by themselves\r\n if (\r\n value === 'currentcolor' ||\r\n value === 'inherit' ||\r\n value === 'initial' ||\r\n value === 'revert' ||\r\n value === 'unset'\r\n ) {\r\n return false;\r\n }\r\n return CSS.supports('color', value);\r\n};\r\n\r\n// date functions\r\n\r\nexport const isValidDate = (date: Date): boolean =>\r\n exists(date) ? !isNaN(date.getTime()) : false;\r\n\r\nexport const normalizeDate = (value: any): string => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substr(0, 10);\r\n }\r\n return value ? value.toString() : null;\r\n};\r\n\r\nexport const addTimezoneOffset = (date: Date): Date => {\r\n if (!isValidDate(date)) {\r\n return date;\r\n } else {\r\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000);\r\n }\r\n};\r\n\r\n// number functions\r\n\r\nexport const isValidNumber = (\r\n value: string | number | undefined | null\r\n): boolean => (hasValue(value) ? !Number.isNaN(Number(value)) : false);\r\n\r\nexport const numberOfDecimalDigits = (\r\n x: number | string\r\n): number | undefined => {\r\n if (isValidNumber(x)) {\r\n const xString = String(Number(x));\r\n if (xString === 'Infinity') {\r\n return 0;\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return 0;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return 0;\r\n } else {\r\n return xString.length - indexOfDecimalPoint - 1;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const numberOfWholeDigits = (x: number | string): number | undefined => {\r\n if (isValidNumber(x)) {\r\n let xString = String(Number(x));\r\n if (xString.indexOf('-') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n if (xString === 'Infinity') {\r\n return Infinity;\r\n }\r\n if (xString.indexOf('0') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return Number(xString.slice(indexOfE + 1, xString.length)) + 1;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return xString.length;\r\n } else {\r\n return indexOfDecimalPoint;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const roundToMultipleOf = (x: number, modulo: number): number => {\r\n const moduloString = String(modulo);\r\n // approximates the result\r\n // prone to inexactitude because of floating point arithmetic\r\n const approximation = Math.round(x / modulo) * modulo;\r\n const approximationString = String(approximation);\r\n // remove useless decimals\r\n const uselessDecimalsInApproximation =\r\n numberOfDecimalDigits(approximationString) -\r\n numberOfDecimalDigits(moduloString);\r\n const resultString = approximationString.slice(\r\n 0,\r\n approximationString.length - uselessDecimalsInApproximation\r\n );\r\n return Number(resultString);\r\n};\r\n\r\n// other functions\r\n\r\nexport const isInitialAndEmpty = (\r\n previousValue: any,\r\n newValue: any\r\n): boolean => {\r\n const isPrevArray = Array.isArray(previousValue);\r\n const isNewArray = Array.isArray(newValue);\r\n return !(\r\n (isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||\r\n (isNewArray ? newValue.length !== 0 : Boolean(newValue))\r\n );\r\n};\r\n","/** Language detector based on Navigator preferences */\nexport const languageDetector = (): string => {\n const lang = navigator.language.split('-')[0];\n if (lang === 'es' || lang === 'en') {\n return lang;\n }\n return 'en'; // default\n};\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { debounceTime, first, map } from 'rxjs/operators';\r\nimport {\r\n DataSource,\r\n DataSourceItem,\r\n DecoratedDataSource,\r\n DecoratedDataSourceItem\r\n} from '../datasource';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\n\r\nexport const LOST_FOCUS_TIME_WINDOW_MS = 200; // ms\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => AutocompleteComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => AutocompleteComponent)\r\n }\r\n ]\r\n})\r\nexport class AutocompleteComponent\r\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit\r\n{\r\n static idCounter = 0;\r\n\r\n @ViewChild('i0', { static: true }) i0: ElementRef;\r\n @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\r\n\r\n private _dataSource: DataSource<any, string>;\r\n private _placeholder: string;\r\n private _value: any;\r\n private lostFocusHandled = true;\r\n private t0 = 0;\r\n\r\n showSpinner = false;\r\n touched = false;\r\n completionList: DecoratedDataSource = [];\r\n showCompletion = false;\r\n focusItem: DataSourceItem<any, string>;\r\n\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\r\n\r\n @Input() public inputId: string;\r\n @Input() public disabled: boolean | null = null;\r\n @Input() public readonly: boolean | null = null;\r\n @Input() label = '';\r\n /** If canAddNewValues, user can type items not present in the data-source. */\r\n @Input() canAddNewValues = false;\r\n /** After cleaning the selection should the completion list remain open or closed:\r\n * false: (default) close on filters, to clean a filter and select all.\r\n * true: keep open (when the action most likely is to pick another one).\r\n */\r\n @Input() keepOpenAfterDelete = false;\r\n\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(v: any) {\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n this._value = v;\r\n this.onChange(v);\r\n this.completeLabel();\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n @Input()\r\n get dataSource(): DataSource<any, string> {\r\n return this._dataSource;\r\n }\r\n set dataSource(v: DataSource<any, string>) {\r\n this._dataSource = v;\r\n this.dataSourceChange.emit(v);\r\n }\r\n @Input() required = false;\r\n\r\n @Input()\r\n set placeholder(v: string) {\r\n this._placeholder = v;\r\n }\r\n get placeholder(): string {\r\n return this._placeholder ? this._placeholder : '';\r\n }\r\n\r\n @Input() resolveLabelsFunction?: (\r\n instance: any,\r\n keys: any[]\r\n ) => Observable<DataSource<any, string>> = undefined;\r\n @Input() populateFunction?: (\r\n instance: any,\r\n search: string\r\n ) => Observable<DataSource<any, string>> = undefined;\r\n @Input() instance: any;\r\n\r\n constructor(private cd: ChangeDetectorRef) {}\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched && !this.disabled) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (\r\n this.required &&\r\n (value === '' || value === null || value === undefined)\r\n ) {\r\n return { required: { value, reason: 'Required field.' } };\r\n }\r\n return null;\r\n }\r\n // End of Validator interface\r\n\r\n clear(): void {\r\n this.value = null;\r\n this.toggleCompletion(this.keepOpenAfterDelete, '');\r\n }\r\n\r\n private completeLabel(): void {\r\n if (this.value) {\r\n if (this.dataSource) {\r\n this.label = findLabelForId(this.dataSource, this.value) || '';\r\n } else if (this.instance && this.resolveLabelsFunction) {\r\n this.resolveLabelsFunction(this.instance, [this.value])\r\n .pipe(debounceTime(1), first())\r\n .subscribe((data) => {\r\n this.label = findLabelForId(data, this.value) || '';\r\n });\r\n }\r\n } else {\r\n this.label = '';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `autocompletelist${AutocompleteComponent.idCounter++}`;\r\n this.completeLabel();\r\n }\r\n ngAfterViewInit(): void {\r\n this.setSameWidth();\r\n }\r\n onInputResized(): void {\r\n this.setSameWidth();\r\n }\r\n private setSameWidth(): void {\r\n const width = this.i0.nativeElement.getBoundingClientRect().width;\r\n this.completeDiv.nativeElement.style.width = `${width}px`;\r\n }\r\n\r\n onKeydown(event: KeyboardEvent, label: string): void {\r\n switch (event.key) {\r\n case 'Tab':\r\n if (label) {\r\n this.pickSelectionOrFirstMatch(label);\r\n }\r\n this.showCompletion = false;\r\n break;\r\n }\r\n this.markAsTouched();\r\n }\r\n onKeypress(event: KeyboardEvent, label: string): void {\r\n switch (event.key) {\r\n case 'Intro':\r\n case 'Enter':\r\n this.pickSelectionOrFirstMatch(label);\r\n event.preventDefault();\r\n break;\r\n }\r\n this.markAsTouched();\r\n }\r\n onKeyup(event: KeyboardEvent, label: string): void {\r\n switch (event.key) {\r\n case 'PageDown':\r\n this.focusOnNext(5);\r\n event.preventDefault();\r\n break;\r\n case 'ArrowDown':\r\n this.focusOnNext(1);\r\n event.preventDefault();\r\n break;\r\n case 'PageUp':\r\n this.focusOnPrevious(5);\r\n event.preventDefault();\r\n break;\r\n case 'ArrowUp':\r\n this.focusOnPrevious(1);\r\n event.preventDefault();\r\n break;\r\n case 'Escape':\r\n this.complete(null);\r\n event.preventDefault();\r\n break;\r\n case 'Intro':\r\n case 'Enter':\r\n event.preventDefault();\r\n break;\r\n default:\r\n this.showCompletionList(label);\r\n // event.preventDefault();\r\n }\r\n this.markAsTouched();\r\n }\r\n private focusOnNext(offset: number): void {\r\n const list = this.completionList || [];\r\n const index = list.findIndex(\r\n (it) => this.focusItem && it.key === this.focusItem.key\r\n );\r\n const indexNext =\r\n index !== -1 && list.length > index + offset\r\n ? index + offset\r\n : list.length - 1;\r\n const next = list[indexNext];\r\n this.focusItem = next;\r\n this.ensureItemVisible(index);\r\n }\r\n private focusOnPrevious(offset: number): void {\r\n const list = this.completionList || [];\r\n const index = list.findIndex(\r\n (it) => this.focusItem && it.key === this.focusItem.key\r\n );\r\n const indexPrevious = index !== -1 && index > offset ? index - offset : 0;\r\n const next = list[indexPrevious];\r\n this.focusItem = next;\r\n this.ensureItemVisible(index);\r\n }\r\n onLostFocus(label: string): void {\r\n this.lostFocusHandled = false;\r\n this.t0 = performance.now();\r\n // console.log('Init LostFocus');\r\n setTimeout(() => {\r\n // needs to postpone actions some milliseconds to verify if\r\n // lost focus was followed by a list selection -> then cancel\r\n // if not -> make side effect\r\n if (!this.lostFocusHandled) {\r\n // console.log(\r\n // 'Lost focus 2',\r\n // this.lostFocusHandled,\r\n // 'SIDE EFFECT',\r\n // performance.now() - this.t0,\r\n // 'label:',\r\n // label\r\n // );\r\n if (label && this.label !== label) {\r\n this.pickSelectionOrFirstMatch(label);\r\n } else {\r\n this.lostFocusHandled = true;\r\n }\r\n this.toggleCompletion(false, label);\r\n } else {\r\n // do nothing (list selection took place)\r\n // console.log(\r\n // 'onlost focus 2',\r\n // this.lostFocusHandled,\r\n // 'nothing',\r\n // performance.now() - this.t0\r\n // );\r\n }\r\n }, LOST_FOCUS_TIME_WINDOW_MS);\r\n }\r\n complete(item: DataSourceItem<Record<string, unknown>, string>): void {\r\n if (!this.lostFocusHandled) {\r\n this.lostFocusHandled = true; // prevent a previous lostFocus to trigger a side effect\r\n const ellapsed = performance.now() - this.t0;\r\n if (ellapsed > LOST_FOCUS_TIME_WINDOW_MS) {\r\n console.warn(\r\n 'complete. lostfocus->click timeout of ',\r\n LOST_FOCUS_TIME_WINDOW_MS,\r\n 'ms exceed: ',\r\n performance.now() - this.t0,\r\n ' ms'\r\n );\r\n }\r\n // console.log(\r\n // 'complete. set to true. CANCELED side effect',\r\n // performance.now() - this.t0\r\n // );\r\n }\r\n if (item !== null) {\r\n this.value = item.key;\r\n this.label = item.label;\r\n } else {\r\n this.value = null;\r\n this.label = '';\r\n }\r\n this.toggleCompletion(false, null);\r\n this.markAsTouched();\r\n }\r\n toggleCompletion(show: boolean, label: string): void {\r\n if (show && !this.disabled) {\r\n this.i0.nativeElement.focus();\r\n this.showCompletionList(label);\r\n } else {\r\n this.showCompletion = false;\r\n if (this.canAddNewValues) {\r\n this.syncCustomValue(this.label);\r\n return;\r\n }\r\n }\r\n this.cd.markForCheck();\r\n }\r\n\r\n get selectedOption(): string {\r\n const index = this.completionList.findIndex(\r\n (i) => i.key === this.focusItem.key\r\n );\r\n if (index === -1 || !this.focusItem) {\r\n return null;\r\n }\r\n return `${this.inputId}_${index}`;\r\n }\r\n\r\n private ensureItemVisible(index: number): void {\r\n const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\r\n if (target) {\r\n target.scrollIntoView({ block: 'center' });\r\n }\r\n }\r\n private syncCustomValue(text: string): void {\r\n this.value = text;\r\n this.label = text;\r\n }\r\n /** Pick selection based on text filtering (ingnores drowdown state) */\r\n private pickSelectionOrFirstMatch(text: string): void {\r\n if (this.canAddNewValues) {\r\n this.syncCustomValue(text);\r\n return;\r\n }\r\n const focusIndex = this.completionList.findIndex(\r\n (it) => this.focusItem && it.key === this.focusItem.key\r\n );\r\n if (\r\n this.showCompletion &&\r\n focusIndex > 0 &&\r\n this.focusItem &&\r\n this.focusItem.label\r\n ) {\r\n if (text === this.focusItem.label && this.focusItem.key === this.value) {\r\n // do nothing if value does not change & close dropdow\r\n this.showCompletion = false;\r\n return;\r\n }\r\n // complete selected using selected item on drowdown\r\n this.complete(this.focusItem);\r\n return;\r\n }\r\n const source = (text || '').trim();\r\n if (!source) {\r\n this.showCompletion = false;\r\n // select null value\r\n if (this.value !== null) {\r\n this.value = null;\r\n }\r\n return;\r\n }\r\n this.completionList = [];\r\n this.computeCompletionList(source).subscribe((suggestions) => {\r\n const candidate =\r\n suggestions && suggestions.length > 0 ? suggestions[0] : null;\r\n this.complete(candidate);\r\n });\r\n }\r\n public showCompletionList(text: string): void {\r\n this.setSameWidth();\r\n const useSpinner = this.hasExternalDataSource();\r\n this.spinnerVisibility(useSpinner, true);\r\n setTimeout(() => {\r\n // for spinner to be shown\r\n this.computeCompletionList(text).subscribe({\r\n next: (cl) => {\r\n this.completionList = cl;\r\n this.focusItem = selectElement(this.completionList, text);\r\n this.showCompletion = true;\r\n this.spinnerVisibility(useSpinner, false);\r\n },\r\n error: () => {\r\n this.spinnerVisibility(useSpinner, false);\r\n },\r\n complete: () => {\r\n this.spinnerVisibility(useSpinner, false);\r\n }\r\n });\r\n }, 1);\r\n }\r\n\r\n private spinnerVisibility(useSpinner: boolean, value: boolean): void {\r\n if (useSpinner) {\r\n this.showSpinner = value;\r\n }\r\n }\r\n private hasExternalDataSource(): boolean {\r\n return !this.dataSource && !!this.instance && !!this.populateFunction;\r\n }\r\n private computeCompletionList(text: string): Observable<DecoratedDataSource> {\r\n const searchText = (text || '').toLowerCase();\r\n if (this.dataSource) {\r\n const ds = (this.dataSource || [])\r\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n return of(decorateDataSource(ds, searchText));\r\n } else if (this.instance && this.populateFunction) {\r\n return this.populateFunction(this.instance, searchText).pipe(\r\n debounceTime(1),\r\n first(),\r\n map((ds) => {\r\n const dsFiltered = ds\r\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n return decorateDataSource(dsFiltered, searchText);\r\n })\r\n );\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n}\r\n\r\n/** Returns true if text includes substring. No accents considered. Ignorecase */\r\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\r\n text = normalizedString(text).toLowerCase();\r\n substring = normalizedString(substring).toLowerCase();\r\n return text.includes(substring);\r\n};\r\n\r\n/** Returns a normalized string with no accents: used for comparison */\r\nconst normalizedString = (a: string): string =>\r\n (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n\r\nconst decorateDataSource = (\r\n dataSource: DataSource<any, string>,\r\n subString: string\r\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\r\n\r\nconst decorateItem = (\r\n item: DataSourceItem<any, string>,\r\n tx: string\r\n): DecoratedDataSourceItem => {\r\n const index = normalizedString(item.label)\r\n .toLowerCase()\r\n .indexOf(normalizedString(tx).toLowerCase());\r\n const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\r\n const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\r\n const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\r\n const newItem: DecoratedDataSourceItem = {\r\n ...item,\r\n labelPrefix,\r\n labelMatch,\r\n labelPostfix\r\n };\r\n return newItem;\r\n};\r\n\r\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\r\n const found = data.find((it) => it.key === id);\r\n return found ? found.label : null;\r\n};\r\n\r\nexport const selectElement = (\r\n completionList: DecoratedDataSource,\r\n label: string\r\n): DataSourceItem<any, string> => {\r\n label = (label || '').toLowerCase();\r\n if (!completionList || completionList.length === 0) {\r\n return null;\r\n }\r\n if (completionList.length === 1) {\r\n return completionList[0];\r\n }\r\n const found = completionList.find((it) => it.label.toLowerCase() === label);\r\n return found || completionList[0];\r\n};\r\n","<div class=\"lux-autocomplete\" (blur)=\"toggleCompletion(false, i0.value)\">\n <div class=\"lux-autocomplete-box\">\n <input\n #i0\n [id]=\"inputId\"\n [(ngModel)]=\"label\"\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n (keydown)=\"onKeydown($event, i0.value)\"\n (keypress)=\"onKeypress($event, i0.value)\"\n (keyup)=\"onKeyup($event, i0.value)\"\n (blur)=\"onLostFocus(i0.value)\"\n (focus)=\"toggleCompletion(true, i0.value)\"\n (click)=\"toggleCompletion(true, i0.value)\"\n (resized)=\"onInputResized()\"\n (window:resize)=\"onInputResized()\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"showCompletion\"\n aria-haspopup=\"true\"\n attr.aria-owns=\"{{ inputId + '_list' }}\"\n [attr.aria-activedescendant]=\"selectedOption\"\n />\n <div *ngIf=\"canAddNewValues\" class=\"icon-suggestions\"></div>\n <div *ngIf=\"showSpinner; else noLoading\" class=\"icon-spinner\"></div>\n <ng-template #noLoading>\n <button\n *ngIf=\"!disabled && i0.value && !showCompletion; else dropdown\"\n type=\"button\"\n class=\"icon-clear\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n ></button>\n <ng-template #dropdown>\n <div\n class=\"icon-dropdown\"\n (click)=\"toggleCompletion(!showCompletion, i0.value)\"\n ></div>\n </ng-template>\n </ng-template>\n </div>\n <div\n #completeDiv\n [class.showCompletion]=\"showCompletion\"\n class=\"lux-completion-list\"\n id=\"{{ inputId + '_list' }}\"\n >\n <ul>\n <li\n *ngFor=\"let item of completionList; let index = index\"\n id=\"{{ inputId + '_' + index }}\"\n class=\"lux-completion-item\"\n [class.selected]=\"focusItem && item.key === focusItem.key\"\n (click)=\"complete(item)\"\n [attr.aria-label]=\"item.label\"\n >\n <span class=\"preserve-white-space\">{{ item.labelPrefix }}</span>\n <span class=\"preserve-white-space bold\">{{ item.labelMatch }}</span>\n <span class=\"preserve-white-space\">{{ item.labelPostfix }}</span>\n </li>\n </ul>\n </div>\n</div>\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { first } from 'rxjs/operators';\r\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\r\nimport { DataSource } from '../datasource';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-autocomplete-list',\r\n templateUrl: './autocomplete-list.component.html',\r\n styleUrls: ['./autocomplete-list.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => AutocompleteListComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => AutocompleteListComponent)\r\n }\r\n ]\r\n})\r\nexport class AutocompleteListComponent\r\n implements ControlValueAccessor, Validator, OnInit\r\n{\r\n static idCounter = 0;\r\n\r\n @ViewChild('auto') auto!: AutocompleteListComponent;\r\n\r\n literals = {\r\n en: {\r\n placeholder: 'new item',\r\n deleteLabelTemplate: 'Delete <<label>>',\r\n addMessage: 'Add'\r\n },\r\n es: {\r\n placeholder: 'nuevo elemento',\r\n deleteLabelTemplate: 'Eliminar <<label>>',\r\n addMessage: 'Añadir'\r\n }\r\n };\r\n\r\n public internalDataSource: DataSource<any, string> = [];\r\n private autoPopulate = false;\r\n\r\n private _value: any[] = [];\r\n @Input()\r\n set value(val: any[]) {\r\n if (val === this._value) {\r\n return;\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, val);\r\n this._value = val;\r\n this.ensureLabelsForIds();\r\n this.populateWith('');\r\n this.onChange(this._value);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(this._value);\r\n }\r\n }\r\n get value(): any[] {\r\n return this._value;\r\n }\r\n labels: string[] = [];\r\n newEntry: any;\r\n canAdd = false;\r\n touched = false;\r\n\r\n private _lang = languageDetector();\r\n @Input()\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n }\r\n\r\n @Input() inputId: string;\r\n @Input() dataSource: DataSource<any, any> = [];\r\n @Input() placeholder?: string;\r\n @Input() disabled = false;\r\n @Input() deleteLabelTemplate?: string;\r\n @Input() addMessage?: string;\r\n @Input() required = false;\r\n\r\n @Input() resolveLabelsFunction?: (\r\n instance: any,\r\n ids: any[]\r\n ) => Observable<DataSource<any, string>> = undefined;\r\n @Input() populateFunction?: (\r\n instance: any,\r\n search: string\r\n ) => Observable<DataSource<any, string>> = undefined;\r\n @Input() instance: any;\r\n\r\n @Output() valueChange = new EventEmitter<any[]>();\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched && !this.disabled) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (\r\n this.required &&\r\n (value === '' || value === null || value === undefined)\r\n ) {\r\n return { required: { value, reason: 'Required field.' } };\r\n }\r\n return null;\r\n }\r\n // End of Validator interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `autocompletelist${AutocompleteListComponent.idCounter++}`;\r\n this.autoPopulate =\r\n !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\r\n this.ensureLabelsForIds();\r\n }\r\n ensureLabelsForIds(): void {\r\n if (this.autoPopulate && this.resolveLabelsFunction) {\r\n this.resolveLabelsFunction(this.instance, this._value)\r\n .pipe(first())\r\n .subscribe((data) => {\r\n const res: string[] = [];\r\n (this._value || []).map((id) => {\r\n const found = data.find((it) => it.key === id);\r\n if (found) {\r\n res.push(found.label);\r\n } else {\r\n res.push('(unset)');\r\n }\r\n });\r\n this.labels = res;\r\n });\r\n } else if (this.dataSource) {\r\n const res: string[] = [];\r\n (this._value || []).map((id) => {\r\n const found = this.dataSource.find((it) => it.key === id);\r\n if (found) {\r\n res.push(found.label);\r\n } else {\r\n res.push('(unset)');\r\n }\r\n });\r\n this.labels = res;\r\n } else {\r\n this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\r\n }\r\n }\r\n removeAt(index: number): void {\r\n if (this._value.length > index) {\r\n const key = this._value.splice(index, 1)[0];\r\n const label = this.labels.splice(index, 1)[0];\r\n this.internalDataSource.push({ key, label });\r\n }\r\n this.markAsTouched();\r\n }\r\n onValueChange(): void {\r\n this.updateCanAdd();\r\n }\r\n onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\r\n if (event.key === 'Enter' && !!auto.value) {\r\n this.addNew(auto);\r\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\r\n // todo\r\n } else {\r\n this.populateWith(auto.label + event.key);\r\n }\r\n this.updateCanAdd();\r\n }\r\n populateWith(searchText: string): void {\r\n if (this.autoPopulate && this.populateFunction && this.instance) {\r\n this.populateFunction(this.instance, searchText)\r\n .pipe(first())\r\n .subscribe((data) => {\r\n this.internalDataSource = data.filter(\r\n (it) => !(this._value || []).includes(it.key)\r\n );\r\n });\r\n } else if (this.dataSource) {\r\n this.internalDataSource = this.dataSource.filter(\r\n (it) => !(this._value || []).includes(it.key)\r\n );\r\n }\r\n }\r\n updateCanAdd(): void {\r\n this.canAdd =\r\n !this.disabled &&\r\n this.auto &&\r\n !!this.auto.value && // has value\r\n !this.value.find((it) => it === this.auto.value); // not already in\r\n }\r\n\r\n addNew(auto: AutocompleteComponent): void {\r\n this.value.push(auto.value);\r\n this.ensureLabelsForIds();\r\n this.newEntry = '';\r\n this.internalDataSource = this.internalDataSource.filter(\r\n (it) => !this._value.includes(it.key)\r\n );\r\n this.markAsTouched();\r\n }\r\n\r\n getDeleteMessage(label: string): string {\r\n return (\r\n this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\r\n ).replace('<<label>>', label);\r\n }\r\n}\r\n","<div [id]=\"inputId\">\n <ul>\n <li *ngFor=\"let label of labels; let index = index\">\n <span>{{ label }}</span>\n <button\n *ngIf=\"!disabled\"\n class=\"remove-item\"\n (click)=\"removeAt(index)\"\n attr.aria-label=\"{{ getDeleteMessage(label) }}\"\n ></button>\n </li>\n </ul>\n <div *ngIf=\"!disabled\" class=\"new-entry\">\n <lux-autocomplete\n #auto\n [dataSource]=\"internalDataSource\"\n [placeholder]=\"placeholder ?? literals[lang].placeholder\"\n [(value)]=\"newEntry\"\n (valueChange)=\"onValueChange()\"\n (keypress)=\"onNewEntryChange($event, auto)\"\n >\n </lux-autocomplete>\n <button\n *ngIf=\"canAdd\"\n type=\"button\"\n class=\"add-item\"\n aria-label=\"addMessage ?? literals[lang].addMessage\"\n (click)=\"addNew(auto)\"\n ></button>\n </div>\n</div>\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport {\r\n Router,\r\n NavigationEnd,\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot\r\n} from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport interface BreadcrumbItem {\r\n label: string;\r\n url: string;\r\n}\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrls: ['./breadcrumb.component.scss']\r\n})\r\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\r\n public breadcrumbs: BreadcrumbItem[];\r\n private subs: Subscription[] = [];\r\n public imagePath = '../assets/img/arrow-forward.svg';\r\n\r\n constructor(private route: Router, private activedRoute: ActivatedRoute) {}\r\n\r\n ngOnInit(): void {\r\n this.subs.push(\r\n this.route.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe((_) => {\r\n this.breadcrumbs = [];\r\n this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach((s) => s.unsubscribe());\r\n this.subs = [];\r\n }\r\n\r\n private addBreadcrumbs(\r\n activedRouteSnapshot: ActivatedRouteSnapshot,\r\n isRoot: boolean,\r\n urlPrefix: string\r\n ): void {\r\n const routeConfig = activedRouteSnapshot.routeConfig;\r\n let url = urlPrefix || '';\r\n url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\r\n const label = routeConfig\r\n ? this.getLabel(activedRouteSnapshot)\r\n : isRoot\r\n ? 'Home'\r\n : '';\r\n if (label && url !== '/') {\r\n const breadcrumb = { label, url };\r\n this.breadcrumbs.push(breadcrumb);\r\n }\r\n if (activedRouteSnapshot.children.length) {\r\n this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\r\n }\r\n }\r\n\r\n private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\r\n if (!activedRouteSnapshot.url[0]) {\r\n return '';\r\n }\r\n const id = activedRouteSnapshot.params.id;\r\n return id\r\n ? `${activedRouteSnapshot.url[0]}/${id}`\r\n : activedRouteSnapshot.routeConfig.path || '';\r\n }\r\n\r\n private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\r\n const routeConfig = activedRouteSnapshot.routeConfig;\r\n if (!routeConfig) {\r\n return null;\r\n }\r\n if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\r\n const data = activedRouteSnapshot.data;\r\n if (data.objectTitle) {\r\n return `${data.title} ${data.objectTitle}`;\r\n } else {\r\n return data.title;\r\n }\r\n }\r\n return activedRouteSnapshot.params.id || routeConfig.path;\r\n }\r\n}\r\n","<ul class=\"lux-breadcrumb\">\n <li *ngFor=\"let breadcrumb of breadcrumbs; last as isLast; first as isFirst\"\n class=\"lux-breadcrumb-item\">\n <a [class.first]=\"isFirst\" routerLink=\"{{ breadcrumb.url }}\">{{ breadcrumb.label }}</a>\n <div *ngIf=\"!isLast\" class=\"lux-breadcrumb-separator\"></div>\n </li>\n</ul>\n","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n OnInit,\r\n forwardRef,\r\n ViewChild,\r\n ElementRef,\r\n AfterViewInit\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n\r\nconst KEY_SPACE = ' ';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => CheckboxComponent)\r\n }\r\n ]\r\n})\r\nexport class CheckboxComponent\r\n implements ControlValueAccessor, OnInit, AfterViewInit\r\n{\r\n static idCounter = 0;\r\n\r\n @ViewChild('ck', { static: false }) ck: ElementRef;\r\n\r\n private _lang = languageDetector();\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n private internalValue: boolean;\r\n @Input()\r\n get value(): boolean {\r\n return this.internalValue;\r\n }\r\n set value(v: boolean) {\r\n if (this.internalValue === v) {\r\n return;\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\r\n this.internalValue = v;\r\n this.syncModel();\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n\r\n get tabindexValue(): string {\r\n return this.disabled ? null : '0';\r\n }\r\n\r\n @Input() label: string = null;\r\n @Input() name: string = null;\r\n private _disabled = false;\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(v: boolean) {\r\n if (v === this._disabled) {\r\n return;\r\n }\r\n this._disabled = v;\r\n this.syncModel();\r\n }\r\n @Input() inputId: string;\r\n\r\n literals = {\r\n en: {\r\n yesLabel: 'Yes',\r\n noLabel: 'No'\r\n },\r\n es: {\r\n yesLabel: 'Sí',\r\n noLabel: 'No'\r\n }\r\n };\r\n touched = false;\r\n\r\n @Output() valueChange = new EventEmitter<boolean>();\r\n\r\n constructor() {}\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n writeValue(value: any): void {\r\n this.value = !!value;\r\n }\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\r\n }\r\n ngAfterViewInit(): void {\r\n this.syncModel();\r\n }\r\n\r\n clicked(): void {\r\n if (!this.disabled) {\r\n this.value = !this.internalValue;\r\n this.markAsTouched();\r\n }\r\n }\r\n onKey(event: KeyboardEvent): void {\r\n if (event.key === KEY_SPACE && !this.disabled) {\r\n this.value = !this.internalValue;\r\n this.markAsTouched();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private syncModel(): void {\r\n if (this.ck) {\r\n this.ck.nativeElement.checked = this.internalValue;\r\n }\r\n }\r\n}\r\n","<div class=\"switch\">\n <div>\n <label *ngIf=\"label\" [for]=\"inputId\">{{ label }}</label>\n </div>\n <div *ngIf=\"!disabled\" class=\"switch-item\" (click)=\"clicked()\">\n <input #ck [name]=\"name\" type=\"checkbox\" [id]=\"inputId\" />\n <div\n class=\"slider round\"\n [class.on]=\"value\"\n [class.disabled]=\"disabled\"\n [tabindex]=\"tabindexValue\"\n (keyup)=\"onKey($event)\"\n ></div>\n </div>\n <div>\n <span class=\"checkbox-label\" *ngIf=\"value\">{{\n literals[lang].yesLabel\n }}</span>\n <span class=\"checkbox-label\" *ngIf=\"!value\">{{\n literals[lang].noLabel\n }}</span>\n </div>\n</div>\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n ElementRef,\r\n ViewChild,\r\n forwardRef\r\n} from '@angular/core';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n AbstractControl,\r\n ValidationErrors,\r\n Validator,\r\n NG_VALIDATORS\r\n} from '@angular/forms';\r\nimport {\r\n addTimezoneOffset,\r\n hasValue,\r\n isInitialAndEmpty,\r\n isValidDate\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-datetime',\r\n templateUrl: './datetime.component.html',\r\n styleUrls: ['./datetime.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => DatetimeComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => DatetimeComponent)\r\n }\r\n ]\r\n})\r\nexport class DatetimeComponent\r\n implements OnInit, ControlValueAccessor, Validator\r\n{\r\n static idCounter = 0;\r\n\r\n @ViewChild('dateInput', { static: true }) dateInput: ElementRef;\r\n @ViewChild('timeInput', { static: true }) timeInput: ElementRef;\r\n\r\n touched = false;\r\n dirty = false;\r\n lastErrors: ValidationErrors | null = null;\r\n\r\n private _disabled: string | boolean;\r\n private _required: boolean;\r\n private _value: string;\r\n\r\n public dateValue?: string = undefined;\r\n public timeValue?: string = undefined;\r\n\r\n public userErrors = {\r\n en: {\r\n required: 'Required field.',\r\n min: 'Minimum value is $min.',\r\n max: 'Maximum value is $max.'\r\n },\r\n es: {\r\n required: 'El campo es obligatorio.',\r\n min: 'El valor mínimo es $min.',\r\n max: 'El valor máximo es $max.'\r\n }\r\n };\r\n\r\n @Input()\r\n public min?: string = '1900-01-01T00:00:00Z';\r\n @Input()\r\n public max?: string = '2100-01-01T00:00:00Z';\r\n @Input()\r\n public includeSeconds: boolean = true;\r\n @Input()\r\n public localTime: boolean = true;\r\n\r\n get className(): string {\r\n return this.checkClassName();\r\n }\r\n\r\n @Input() lang = languageDetector();\r\n @Input() public inlineErrors = false;\r\n @Input() public inputId: string;\r\n @Input('aria-label') public ariaLabel: string;\r\n @Input() public readonly: boolean | null = null;\r\n\r\n @Input()\r\n set disabled(v: string | boolean) {\r\n v = typeof v === 'string' && v !== 'false' ? true : v;\r\n this._disabled = v;\r\n }\r\n get disabled(): string | boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set required(v: boolean) {\r\n this._required = v;\r\n }\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n @Input()\r\n set value(v: string) {\r\n if (v === this._value) {\r\n return; // prevent events when there is no changes\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n const datetime = new Date(v);\r\n if (!v) {\r\n this._value = null;\r\n this.setDateInControl(null);\r\n this.setTimeInControl(null);\r\n } else if (!isValidDate(datetime)) {\r\n this._value = v;\r\n // we don't set value in control if the value is not valid\r\n // if we do, the content of the control changes and can erase what the user is typing\r\n } else {\r\n this._value = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n this.setValueInControl(datetime);\r\n }\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n onChange = (_value): void => {};\r\n onTouched = (): void => {};\r\n\r\n constructor() {}\r\n\r\n // ControlValueAccessor Interface implementation\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End of ControlValueAccessor Interface implementation\r\n\r\n private setDateInControl(date: string): void {\r\n // this.dateInput.nativeElement.value = date;\r\n this.dateValue = date;\r\n }\r\n private setTimeInControl(time: string): void {\r\n // this.timeInput.nativeElement.value = time;\r\n this.timeValue = time;\r\n }\r\n private setValueInControl(datetime: Date): void {\r\n const offsetDatetime = this.localTime\r\n ? addTimezoneOffset(datetime)\r\n : datetime;\r\n const offsetDatetimeString = offsetDatetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n this.setDateInControl(offsetDatetimeString.slice(0, 10)); // YYYY-MM-DD\r\n if (this.includeSeconds) {\r\n this.setTimeInControl(offsetDatetimeString.slice(11, 19)); // hh:mm:ss\r\n } else {\r\n this.setTimeInControl(offsetDatetimeString.slice(11, 16)); // hh:mm\r\n }\r\n }\r\n clear(): void {\r\n this.setDateInControl(null);\r\n this.setTimeInControl(null);\r\n this.value = null;\r\n }\r\n isClearable(): boolean {\r\n return hasValue(this.value);\r\n }\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n let result: ValidationErrors | null = null;\r\n\r\n if (\r\n this.required &&\r\n !hasValue(value) &&\r\n !hasValue(this.dateValue) &&\r\n !hasValue(this.timeValue)\r\n ) {\r\n result = result || {};\r\n result.required = { value, reason: 'Required field.' };\r\n }\r\n if (!hasValue(this.dateValue) && hasValue(this.timeValue)) {\r\n result = result || {};\r\n result.existsDate = {\r\n value,\r\n reason: 'Date not specified.'\r\n };\r\n }\r\n if (hasValue(this.dateValue) && !hasValue(this.timeValue)) {\r\n result = result || {};\r\n result.existsTime = {\r\n value,\r\n reason: 'Time not specified.'\r\n };\r\n }\r\n if (\r\n hasValue(this.min) &&\r\n hasValue(value) &&\r\n hasValue(this.dateValue) &&\r\n hasValue(this.timeValue) &&\r\n String(value).localeCompare(this.min) === -1\r\n ) {\r\n result = result || {};\r\n result.min = {\r\n value,\r\n min: this.min,\r\n reason: `Value is lower than minimum value: ${this.min}.`\r\n };\r\n }\r\n if (\r\n hasValue(this.max) &&\r\n hasValue(value) &&\r\n hasValue(this.dateValue) &&\r\n hasValue(this.timeValue) &&\r\n String(value).localeCompare(this.max) !== -1\r\n ) {\r\n result = result || {};\r\n result.max = {\r\n value,\r\n max: this.max,\r\n reason: `Value is greater than than maximum value: ${this.max}.`\r\n };\r\n }\r\n this.lastErrors = result;\r\n return result;\r\n }\r\n // End of Validator interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `datetime$${DatetimeComponent.idCounter++}`;\r\n this.setPatterns();\r\n }\r\n\r\n onLostFocus(): void {\r\n this.markAsTouched();\r\n }\r\n onKeyPress(event: KeyboardEvent): void {\r\n this.keyPress.emit(event);\r\n }\r\n\r\n onEventDatetime(newDate: string, newTime: string): void {\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n if (!newDate || !newTime) {\r\n this.value = null;\r\n } else {\r\n const newValue = `${newDate}T${newTime}`;\r\n const datetime = new Date(newValue);\r\n if (isValidDate(datetime)) {\r\n let datetimeString;\r\n if (this.localTime) {\r\n datetimeString = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n } else {\r\n datetimeString = addTimezoneOffset(datetime).toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n }\r\n if (this.includeSeconds) {\r\n this.value = datetimeString.slice(0, 19) + 'Z'; // YYYY-MM-DDThh:mm:ssZ\r\n } else {\r\n this.value = datetimeString.slice(0, 16) + 'Z'; // YYYY-MM-DDThh:mmZ\r\n }\r\n } else {\r\n this.value = newValue;\r\n }\r\n }\r\n }\r\n\r\n checkClassName(): string {\r\n return this.disabled\r\n ? this.readonly\r\n ? 'disabled readonly'\r\n : 'disabled'\r\n : this.readonly\r\n ? 'readonly'\r\n : '';\r\n }\r\n\r\n setPatterns(): void {\r\n this.min = this.min || '1900-01-01';\r\n this.max = this.max || '2100-01-01';\r\n }\r\n}\r\n","<input\n #dateInput\n class=\"rounded-left prefix\"\n [ngClass]=\"className\"\n type=\"date\"\n [id]=\"inputId + '$date'\"\n [(ngModel)]=\"dateValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [placeholder]=\"\"\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<input\n #timeInput\n [class]=\"(disabled || readonly || !isClearable()) && localTime ? 'rounded-right' : ''\"\n [ngClass]=\"className\"\n type=\"time\"\n [id]=\"inputId + '$time'\"\n [(ngModel)]=\"timeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [placeholder]=\"\"\n [step]=\"includeSeconds ? 1 : 60\"\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<ng-container\n *ngIf=\"!localTime\"\n>\n <div\n [class]=\"disabled || readonly || !isClearable() ? 'rounded-right postfix symbol' : 'postfix symbol'\"\n [ngClass]=\"className\"\n >\n <span>{{ localTime ? '' : 'UTC' }}</span>\n </div>\n</ng-container>\n<button\n #clearButton\n *ngIf=\"!disabled && !readonly && isClearable()\"\n type=\"button\"\n class=\"rounded-right postfix bordered icon-clear\"\n [id]=\"inputId + '$clear'\"\n (click)=\"clear()\"\n aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[lang].required }}\n </div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n forwardRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n/** Filter component to query for objects. */\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => FilterComponent)\r\n }\r\n ]\r\n})\r\nexport class FilterComponent\r\n implements ControlValueAccessor, OnInit, OnDestroy\r\n{\r\n static idCounter = 0;\r\n\r\n private touched = false;\r\n private _searchValue = '';\r\n\r\n @Input() disabled = false;\r\n /** id for the input. If left blank, it is autogenerated */\r\n @Input() inputId: string;\r\n /** Placeholder default text. */\r\n @Input() placeholder = '';\r\n /** Search value introduced by the user. */\r\n @Input()\r\n get searchValue(): string {\r\n return this._searchValue;\r\n }\r\n set searchValue(v: string) {\r\n v = (v || '').toString();\r\n if (v === this._searchValue) {\r\n return;\r\n }\r\n this.onChange(v);\r\n this._searchValue = v;\r\n }\r\n /** Search on type: (default true) Auto-search when user types in. */\r\n @Input() searchOnType = true;\r\n /** Custom aria label in case of not using a label */\r\n @Input('aria-label') ariaLabel: string;\r\n\r\n private debounceValue = 300; // 300 ms\r\n /** Debounce time in milliseconds. (defaults to 300 ms) */\r\n @Input()\r\n set debounce(val: number) {\r\n this.debounceValue = val;\r\n this.recreateObservable();\r\n }\r\n get debounce(): number {\r\n return this.debounceValue;\r\n }\r\n\r\n /** Search value changed by user. */\r\n @Output() searchValueChange = new EventEmitter<string>();\r\n\r\n searchValue$: Observable<string>;\r\n\r\n private subject = new Subject<string>();\r\n private sub: Subscription;\r\n\r\n constructor() {\r\n this.recreateObservable();\r\n }\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n writeValue(value: any): void {\r\n this.searchValue = (value || '').toString();\r\n }\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `filter$${FilterComponent.idCounter++}`;\r\n }\r\n ngOnDestroy(): void {\r\n this.freeSubscriptions();\r\n }\r\n clear(): void {\r\n this.searchValue = '';\r\n this.search();\r\n }\r\n search(): void {\r\n this.searchValueChange.emit(this.searchValue);\r\n }\r\n keyup(event: KeyboardEvent, newValue: string): void {\r\n this.markAsTouched();\r\n this.searchValue = newValue;\r\n if (event.key === 'Enter') {\r\n this.searchNow(this.searchValue);\r\n }\r\n if (this.searchOnType) {\r\n this.addEvent();\r\n }\r\n }\r\n onInputValueChange(newValue: string): void {\r\n this.markAsTouched();\r\n this.searchValue = newValue;\r\n }\r\n\r\n private recreateObservable(): void {\r\n this.searchValue$ = this.subject\r\n .asObservable()\r\n .pipe(debounceTime(this.debounce));\r\n\r\n this.freeSubscriptions();\r\n this.sub = this.searchValue$.subscribe((value) => {\r\n this.searchValueChange.emit(value);\r\n });\r\n }\r\n private freeSubscriptions(): void {\r\n if (this.sub) {\r\n this.sub.unsubscribe();\r\n this.sub = null;\r\n }\r\n }\r\n private searchNow(value: string): void {\r\n this.searchValueChange.emit(value);\r\n }\r\n private addEvent(): void {\r\n this.subject.next(this.searchValue);\r\n }\r\n}\r\n","<div class=\"filter\">\n <input\n #i0\n type=\"text\"\n [attr.aria-label]=\"ariaLabel\"\n [placeholder]=\"placeholder\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [value]=\"searchValue\"\n (valueChange)=\"onInputValueChange(i0.value)\"\n (keyup)=\"keyup($event, i0.value)\"\n />\n\n <button\n [class.hide]=\"!searchValue\"\n aria-label=\"Clear\"\n class=\"clear-indicator icon icon-clear\"\n type=\"button\"\n (click)=\"clear()\"\n ></button>\n <i *ngIf=\"1 || searchOnType\" class=\"search-indicator icon icon-search\"></i>\n <button\n class=\"btn-search\"\n *ngIf=\"!searchOnType\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"search()\"\n >\n Search\n </button>\n</div>\n","import { Component, Input, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-modal-backdrop',\r\n template: ''\r\n})\r\nexport class LuxModalBackdropComponent {\r\n @Input() backdropClass: string;\r\n\r\n @HostBinding('class') class = 'modal-backdrop fade show';\r\n @HostBinding('style') style = 'z-index: 1050';\r\n}\r\n","import { Injectable } from '@angular/core';\n\nexport interface LuxModalOptions {\n ariaDescribedBy?: string;\n ariaLabelledBy?: string;\n backdrop?: boolean;\n keyboard?: boolean;\n windowClass?: string;\n backdropClass?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LuxModalConfig implements LuxModalOptions {\n backdrop = true;\n}\n","import { ComponentRef } from '@angular/core';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef } from './util';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\n\nexport class ActiveModal {\n close(result?: any): void {}\n dismiss(reason?: any): void {}\n}\n\nexport class ModalRef {\n private _resolve: (result?: any) => void;\n private _reject: (reason?: any) => void;\n\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get componentInstance(): any {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n */\n result: Promise<any>;\n\n constructor(\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\n private _contentRef: ContentRef,\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\n private _beforeDismiss?: () => any\n ) {\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n this.dismiss(reason);\n });\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result?: any): void {\n if (this._windowCmptRef) {\n if (this._resolve) {\n this._resolve(result);\n }\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n if (this._reject) {\n this._reject(reason);\n }\n this._removeModalElements();\n }\n\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(\n (result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n () => {}\n );\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n","import { ComponentRef, ViewRef } from '@angular/core';\nimport { Observable, fromEvent } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nexport const FOCUS = 'focus';\n\nexport enum Key {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40\n}\n\nexport const isDefined = (value: any): boolean =>\n value !== undefined && value !== null;\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>\n ) {}\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport const getFocusableBoundaryElements = (\n element: HTMLElement\n): HTMLElement[] => {\n const list: HTMLElement[] = Array.from(\n element.querySelectorAll(\n FOCUSABLE_ELEMENTS_SELECTOR\n ) as NodeListOf<HTMLElement>\n ).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n};\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const focusTrap = (\n element: HTMLElement,\n stopFocusTrap$: Observable<any>,\n refocusOnClick = false\n): void => {\n // last focused element\n const lastFocusedElement$ = fromEvent<FocusEvent>(element, 'focusin').pipe(\n takeUntil(stopFocusTrap$),\n map((e) => e.target)\n );\n\n // 'tab' / 'shift+tab' stream\n fromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n takeUntil(stopFocusTrap$),\n\n filter((e) => e.which === Key.Tab),\n\n withLatestFrom(lastFocusedElement$)\n )\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n\n if (\n (focusedElement === first || focusedElement === element) &&\n tabEvent.shiftKey\n ) {\n last.focus();\n tabEvent.preventDefault();\n }\n\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(\n takeUntil(stopFocusTrap$),\n withLatestFrom(lastFocusedElement$),\n map((arr) => arr[1] as HTMLElement)\n )\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n};\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc\n}\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n HostBinding,\r\n HostListener\r\n} from '@angular/core';\r\n\r\nimport { getFocusableBoundaryElements, FOCUS } from './util';\r\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-modal-window',\r\n template: `\r\n <div class=\"modal-dialog\" role=\"document\">\r\n <div class=\"modal-content\"><ng-content></ng-content></div>\r\n </div>\r\n `\r\n})\r\nexport class LuxModalWindowComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private _elWithFocus: Element; // element that is focused prior to modal opening\r\n\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() backdrop: boolean | string = false;\r\n @Input() keyboard = true;\r\n @Input() windowClass: string;\r\n\r\n @Output() dismissEvent = new EventEmitter();\r\n\r\n @HostBinding('class') get class(): string {\r\n return `modal ${this.windowClass || ''}`;\r\n }\r\n @HostBinding('attr.role') role = 'dialog';\r\n @HostBinding('tabindex') tabindex = '-1';\r\n @HostBinding('attr.aria-modal') ariamodal = true;\r\n @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\r\n return this.ariaLabelledBy;\r\n }\r\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\r\n return this.ariaDescribedBy;\r\n }\r\n @HostListener('click', ['$event.target']) backdropClick(\r\n btn: HTMLElement\r\n ): void {\r\n if (this.backdrop === true && this._elRef.nativeElement === btn) {\r\n this.dismiss(ModalDismissReasons.BackdropClick);\r\n }\r\n }\r\n @HostListener('keyup.esc', ['$event']) escKey(event): void {\r\n if (this.keyboard && !event.defaultPrevented) {\r\n this.dismiss(ModalDismissReasons.Esc);\r\n }\r\n }\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private _document: any,\r\n private _elRef: ElementRef<HTMLElement>\r\n ) {}\r\n\r\n dismiss(reason): void {\r\n this.dismissEvent.emit(reason);\r\n }\r\n\r\n ngOnInit(): void {\r\n this._elWithFocus = this._document.activeElement;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\r\n const firstFocusable = getFocusableBoundaryElements(\r\n this._elRef.nativeElement\r\n )[0];\r\n\r\n const elementToFocus = firstFocusable || this._elRef.nativeElement;\r\n elementToFocus.focus();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n const body = this._document.body;\r\n const elWithFocus = this._elWithFocus;\r\n\r\n let elementToFocus;\r\n if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\r\n elementToFocus = elWithFocus;\r\n } else {\r\n elementToFocus = body;\r\n }\r\n elementToFocus.focus();\r\n this._elWithFocus = null;\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n Inject,\n Injectable,\n Injector,\n RendererFactory2,\n TemplateRef\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\nimport { LuxModalConfig, LuxModalOptions } from './modal-config';\nimport { ActiveModal, ModalRef } from './modal-ref';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef, focusTrap, isDefined } from './util';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStack {\n private _activeWindowCmptHasChanged = new Subject();\n private _modalRefs: ModalRef[] = [];\n private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\n private _ariaHiddenValues: Map<Element, string> = new Map();\n private _backdropAttributes = ['backdropClass'];\n private _windowAttributes = [\n 'ariaLabelledBy',\n 'backdrop',\n 'centered',\n 'keyboard',\n 'scrollable',\n 'size',\n 'windowClass'\n ];\n\n constructor(\n private _applicationRef: ApplicationRef,\n @Inject(DOCUMENT) private _document: any,\n private _injector: Injector,\n private _rendererFactory: RendererFactory2,\n private modalConfig: LuxModalConfig\n ) {\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt =\n this._windowCmpts[this._windowCmpts.length - 1];\n focusTrap(\n activeWindowCmpt.location.nativeElement,\n this._activeWindowCmptHasChanged\n );\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n\n open(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n options: LuxModalOptions\n ): ModalRef {\n const config = Object.assign({}, this.modalConfig, options);\n const containerEl = this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const removeBodyClass = (): void => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n const activeModal = new ActiveModal();\n const contentRef = this.getContentRef(moduleCFR, content, activeModal);\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\n config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\n this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n const modalRef: ModalRef = new ModalRef(\n windowCmptRef,\n contentRef,\n backdropCmptRef\n );\n this._registerModalRef(modalRef);\n this._registerWindowCmpt(windowCmptRef);\n modalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result: any): void => {\n modalRef.close(result);\n };\n activeModal.dismiss = (reason: any): void => {\n modalRef.dismiss(reason);\n };\n\n this._applyWindowOptions(windowCmptRef.instance, config);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackgroundOptions(backdropCmptRef.instance, config);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n\n return modalRef;\n }\n\n private _applyWindowOptions(\n windowInstance: LuxModalWindowComponent,\n config: LuxModalOptions\n ): void {\n this._windowAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n windowInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _applyBackgroundOptions(\n backgroudInstance: LuxModalBackdropComponent,\n config: LuxModalOptions\n ): void {\n this._backdropAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n backgroudInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _revertAriaHidden(): void {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n\n private getContentRef(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n activeModal: ActiveModal\n ): ContentRef {\n if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content, activeModal);\n }\n }\n\n private createFromTemplateRef(\n content: TemplateRef<any>,\n activeModal: ActiveModal\n ): ContentRef {\n const context = {\n $implicit: activeModal,\n\n close(result): void {\n activeModal.close(result);\n },\n\n dismiss(reason): void {\n activeModal.dismiss(reason);\n }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n private _attachBackdrop(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any\n ): ComponentRef<LuxModalBackdropComponent> {\n const backdropFactory = moduleCFR.resolveComponentFactory(\n LuxModalBackdropComponent\n );\n const backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n\n private _attachWindowComponent(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any,\n contentRef: any\n ): ComponentRef<LuxModalWindowComponent> {\n const windowFactory = moduleCFR.resolveComponentFactory(\n LuxModalWindowComponent\n );\n const windowCmptRef = windowFactory.create(\n this._injector,\n contentRef.nodes\n );\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n\n private _registerModalRef(modalRef: ModalRef): void {\n const unregisterModalRef = (): void => {\n const index = this._modalRefs.indexOf(modalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(modalRef);\n modalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n\n private _registerWindowCmpt(\n windowCmpt: ComponentRef<LuxModalWindowComponent>\n ): void {\n this._windowCmpts.push(windowCmpt);\n this._activeWindowCmptHasChanged.next(null);\n\n windowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(windowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next(null);\n }\n });\n }\n\n private _setAriaHidden(element: Element): void {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((sibling) => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n}\n","import {\n Injectable,\n ComponentFactoryResolver,\n TemplateRef,\n} from '@angular/core';\nimport { ModalStack } from './modal-stack';\nimport { ModalRef } from './modal-ref';\nimport { LuxModalOptions } from './modal-config';\n\n/**\n * A service that it allow open an close modal components\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private modalStack: ModalStack,\n private moduleCFR: ComponentFactoryResolver\n ) {}\n\n /**Open a modal component\n * @param content TemplateRef\n */\n open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\n return this.modalStack.open(this.moduleCFR, content, options);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DataSource } from '../datasource';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap\n} from 'rxjs/operators';\nimport { GeoPoint } from '../map/geopoint';\n\ninterface SearchResult {\n place_id: number;\n lat: number;\n lon: number;\n display_name: string;\n icon: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GeolocationService {\n private debouncePeriodMs = 300; // ms\n private cacheSize = 20;\n private lastQueriesWithResults = new Map<string, SearchResult[]>();\n private lastQueriesLru: string[] = [];\n private currentSearch$: Subject<string>;\n private currentQuery$: Observable<SearchResult[]>;\n\n constructor(private http: HttpClient) {\n this.currentSearch$ = new Subject<string>();\n\n const typed$ = this.currentSearch$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n this.currentQuery$ = typed$.pipe(\n debounceTime(this.debouncePeriodMs),\n\n switchMap((currentQuery) => {\n const data = this.getFromCache(currentQuery);\n if (data !== undefined) {\n return of(data);\n }\n // Nominatim search documentation:\n // https://nominatim.org/release-docs/develop/api/Search/\n const url =\n 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\n encodeURIComponent(currentQuery);\n const headers = {\n 'Content-Type': 'application/json'\n };\n this.addToCache(currentQuery, []);\n\n return this.http.get(url, { headers }).pipe(\n map((response) => {\n const searchResults = response as unknown as SearchResult[];\n const uniqueResults = distinct(searchResults);\n return this.addToCache(currentQuery, uniqueResults);\n })\n );\n })\n );\n }\n\n searchGeolocation(query: string): Observable<SearchResult[]> {\n this.currentSearch$.next(query);\n return this.currentQuery$;\n }\n\n getLabels(\n instance: GeolocationService,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n const searchResults = instance.lastQueriesWithResults\n .get(instance.getLatestQuery())\n .filter((searchResult) => samePosition(searchResult, keys));\n return of(\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n return {\n key,\n label: searchResult.display_name\n };\n })\n );\n }\n\n getData(\n instance: GeolocationService,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.searchGeolocation(search).pipe(\n map((searchResults) =>\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n const label = searchResult.display_name;\n return { key, label };\n })\n )\n );\n }\n\n // Cache implemementation ---\n private getFromCache(query: string): SearchResult[] {\n if (this.lastQueriesWithResults.has(query)) {\n return this.lastQueriesWithResults.get(query);\n }\n return undefined;\n }\n private addToCache(query: string, data: SearchResult[]): SearchResult[] {\n if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\n const deletedQuery = this.lastQueriesLru[0];\n this.revomeFromCache(deletedQuery);\n }\n this.lastQueriesWithResults.set(query, data);\n this.lastQueriesLru.push(query);\n return data;\n }\n private revomeFromCache(query: string): void {\n this.lastQueriesWithResults.delete(query);\n const index = this.lastQueriesLru.findIndex((it) => it === query);\n this.lastQueriesLru.splice(index, 1);\n }\n private getLatestQuery(): string | null {\n return this.lastQueriesLru.length\n ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\n : null;\n }\n // End cache implemementation ---\n}\n\nconst samePosition = (\n searchResult: SearchResult,\n keys: GeoPoint[]\n): boolean => {\n let found = false;\n keys.forEach((item) => {\n if (\n searchResult.lon === item.coordinates[0] &&\n searchResult.lat === item.coordinates[1]\n ) {\n found = true;\n }\n });\n return found;\n};\n\nconst distinct = (data: SearchResult[]): SearchResult[] => {\n const unique: { [key: string]: number } = {};\n return data.filter((r) => {\n if (unique[r.display_name]) {\n return false;\n }\n unique[r.display_name] = 1;\n return true;\n });\n};\n","import { Injectable } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\n\nlet openLayersIsInstalled = false;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenLayerLoaderService {\n load(): Observable<boolean> {\n if ((window as any).ol) {\n return of(true);\n }\n\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\n\n if (!openLayersIsInstalled) {\n openLayersIsInstalled = true; // only try to install it once\n loadCss(openLayerCssUrl, () => {});\n return from(\n new Promise<boolean>((resolve, _) => {\n loadScript(openLayerJsUrl, () => resolve(true));\n })\n );\n }\n return of(true);\n }\n}\n\n/** Dynamically load a script from url and return a callback */\nconst loadScript = (url: string, callback: () => void): void => {\n const script: any = document.createElement('script');\n script.type = 'text/javascript';\n\n if (script.readyState) {\n // for old IE\n script.onreadystatechange = (): void => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // Others browsers\n script.onload = (): void => {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n};\n\n/** Dynamically load css from url and return a callback */\nconst loadCss = (url: string, callback: () => void): void => {\n const link: any = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.type = 'text/javascript';\n link.href = url;\n link.onload = (): void => {\n callback();\n };\n document.getElementsByTagName('head')[0].appendChild(link);\n};\n","/* eslint-disable no-self-assign */\r\n\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\r\n\r\nimport { GeoPoint } from './geopoint';\r\n\r\n// @dynamic\r\ndeclare const ol: any;\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-map',\r\n templateUrl: './map.component.html',\r\n styleUrls: ['./map.component.scss']\r\n})\r\nexport class MapComponent implements OnInit, AfterViewInit {\r\n static idCounter = 0;\r\n\r\n private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n private _map: any;\r\n\r\n @Input() mapId;\r\n\r\n _zoom: number;\r\n @Input()\r\n set zoom(zoom: number) {\r\n if (!isNaN(zoom)) {\r\n this._zoom = zoom;\r\n if (this._map) {\r\n this._map.getView().setZoom(zoom);\r\n }\r\n }\r\n }\r\n get zoom(): number {\r\n return this._zoom;\r\n }\r\n\r\n _center: GeoPoint;\r\n @Input()\r\n set center(center: GeoPoint) {\r\n if (center && center.coordinates && center.coordinates.length === 2) {\r\n this._center = center;\r\n if (this._map) {\r\n this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\r\n }\r\n }\r\n }\r\n get center(): GeoPoint {\r\n return this._center;\r\n }\r\n\r\n _readonly: boolean;\r\n @Input()\r\n set readonly(readonly: boolean) {\r\n if (!readonly) {\r\n if (this._map) {\r\n this._map.on('click', (args: any) => {\r\n // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\r\n const coordinates = ol.proj.toLonLat(args.coordinate);\r\n // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\r\n this.addMarkerAtCoordinates(coordinates);\r\n });\r\n this._map.on('pointermove', (event: any) => {\r\n const pixel = this._map.getEventPixel(event.originalEvent);\r\n const hit = this._map.hasFeatureAtPixel(pixel);\r\n this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\r\n });\r\n }\r\n } else {\r\n if (this._map) {\r\n this._map.on('click', (args: any) => {});\r\n this._map.on('pointermove', (event: any) => {});\r\n this._map.getViewport().style.cursor = 'grab';\r\n }\r\n }\r\n this._readonly = readonly;\r\n // reset marker coordinates so marker interactions can be created or recreated accordingly\r\n // to the changes to readonly\r\n this.markerCoordinates = this.markerCoordinates;\r\n }\r\n get readonly(): boolean {\r\n return this._readonly;\r\n }\r\n\r\n private _marker: any;\r\n private _markerInteraction: any;\r\n private _markerCoordinates: number[];\r\n @Input()\r\n private set markerCoordinates(markerCoordinates: number[]) {\r\n if (markerCoordinates && markerCoordinates.length === 2) {\r\n this._markerCoordinates = markerCoordinates;\r\n if (this._map) {\r\n this.addMarkerAtCoordinates(markerCoordinates);\r\n }\r\n } else {\r\n this._markerCoordinates = undefined;\r\n if (this._map) {\r\n this.removeMarker();\r\n }\r\n }\r\n }\r\n private get markerCoordinates(): number[] {\r\n return this._markerCoordinates;\r\n }\r\n @Input()\r\n set markerPoint(markerPoint: GeoPoint) {\r\n if (\r\n !markerPoint ||\r\n !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\r\n ) {\r\n this.markerCoordinates = undefined;\r\n } else {\r\n this.markerCoordinates = [\r\n +markerPoint.coordinates[0],\r\n +markerPoint.coordinates[1]\r\n ];\r\n }\r\n this.valueChange.emit(markerPoint);\r\n }\r\n get markerPoint(): GeoPoint {\r\n return {\r\n type: 'Point',\r\n coordinates: this.markerCoordinates\r\n };\r\n }\r\n @Output() valueChange = new EventEmitter<GeoPoint>();\r\n\r\n private _markerSource: any;\r\n private _markerStyle: any;\r\n\r\n constructor(olLoader: OpenLayerLoaderService) {\r\n olLoader.load().subscribe((_) => {\r\n // Initialize\r\n this._markerSource = new ol.source.Vector();\r\n this._markerStyle = new ol.style.Style({\r\n image: new ol.style.Icon({\r\n anchor: [0.5, 1],\r\n scale: 0.25,\r\n src: '/assets/img/marker.png'\r\n })\r\n });\r\n this.loaded$.next(true);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.loaded$.subscribe((loaded) => {\r\n if (loaded) {\r\n this.initMap();\r\n }\r\n });\r\n }\r\n private initMap(): void {\r\n this._map = new ol.Map({\r\n target: this.mapId,\r\n controls: ol.control.defaults({ attribution: false }),\r\n layers: [\r\n new ol.layer.Tile({\r\n source: new ol.source.OSM()\r\n }),\r\n new ol.layer.Vector({\r\n source: this._markerSource,\r\n style: this._markerStyle\r\n })\r\n ],\r\n view: new ol.View({\r\n center: ol.proj.fromLonLat(\r\n this.center !== undefined ? this.center.coordinates : [0, 0]\r\n ),\r\n zoom: this.zoom\r\n })\r\n });\r\n\r\n if (this.center === undefined || this.center === null) {\r\n // if the center is not set, we set its default value\r\n if ('geolocation' in navigator) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n this.center = {\r\n type: 'Point',\r\n coordinates: [position.coords.longitude, position.coords.latitude]\r\n };\r\n },\r\n (error) => {\r\n this.center = {\r\n type: 'Point',\r\n coordinates: [0, 0]\r\n };\r\n }\r\n );\r\n } else {\r\n this.center = {\r\n type: 'Point',\r\n coordinates: [0, 0]\r\n };\r\n }\r\n } else {\r\n // the center needs the map to be properly set, so if it was set before the map was initialized,\r\n // we set the center again to perform necessary adjustements\r\n this.center = this.center;\r\n }\r\n\r\n if (this.zoom === undefined || this.zoom === null) {\r\n // if the zoom is not set, we set its default value\r\n this.zoom = 18;\r\n } else {\r\n // the zoom needs the map to be properly set, so if it was set before the map was initialized,\r\n // we set the zoom again to perform necessary adjustements\r\n this.zoom = this.zoom;\r\n }\r\n\r\n if (this.readonly === undefined || this.readonly === null) {\r\n // if readonly is not set, we set its default value\r\n this.readonly = false;\r\n } else {\r\n // readonly needs the map to be properly set, so if it was set before the map was initialized,\r\n // we set readonly again to perform necessary adjustements\r\n this.readonly = this.readonly;\r\n }\r\n\r\n if (\r\n this.markerCoordinates !== undefined &&\r\n this.markerCoordinates !== null\r\n ) {\r\n // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\r\n // we set the marker coordinates again to perform necessary adjustements\r\n this.markerCoordinates = this.markerCoordinates;\r\n }\r\n }\r\n\r\n private addMarkerAtCoordinates(coordinates: number[]): void {\r\n if (coordinates && coordinates.length === 2) {\r\n if (this._marker !== undefined) {\r\n this.removeMarker();\r\n }\r\n this._marker = new ol.Feature({\r\n geometry: new ol.geom.Point(\r\n // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\r\n ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\r\n )\r\n });\r\n this._markerSource.addFeature(this._marker);\r\n this._markerCoordinates = this.getMarkerCoordinates();\r\n\r\n if (!this.readonly) {\r\n const dragInteraction = new ol.interaction.Modify({\r\n features: new ol.Collection([this._marker]),\r\n style: this._markerStyle,\r\n pixelTolerance: 50,\r\n hitDetection: true\r\n });\r\n this._markerInteraction = dragInteraction;\r\n this._map.addInteraction(dragInteraction);\r\n }\r\n\r\n this._marker.on(\r\n 'change',\r\n () => {\r\n this._markerCoordinates = this.getMarkerCoordinates();\r\n },\r\n this._marker\r\n );\r\n }\r\n }\r\n\r\n private removeMarker(): void {\r\n if (this._marker !== undefined) {\r\n this._markerSource.removeFeature(this._marker);\r\n this._marker = undefined;\r\n }\r\n if (this._markerInteraction !== undefined) {\r\n this._map.getInteractions().pop();\r\n this._markerInteraction = undefined;\r\n }\r\n }\r\n\r\n private getMarkerCoordinates(): number[] | null {\r\n if (this._marker === undefined || this._marker == null) {\r\n return this._marker;\r\n }\r\n const coordinates = this._marker.getGeometry().getCoordinates();\r\n // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\r\n return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\r\n }\r\n\r\n onResize(): void {\r\n if (this._map) {\r\n this._map.updateSize();\r\n }\r\n }\r\n}\r\n","<div [id]=\"mapId\" class=\"map\" (resized)=\"onResize()\"></div>\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { DataSource } from '../datasource';\r\nimport {\r\n exists,\r\n hasValue,\r\n isInitialAndEmpty,\r\n isValidNumber,\r\n roundToMultipleOf\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\nimport { GeoPoint } from '../map/geopoint';\r\nimport { ModalService } from '../modal/modal.service';\r\nimport { GeolocationService } from './geolocation.service';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-geolocation',\r\n templateUrl: './geolocation.component.html',\r\n styleUrls: ['./geolocation.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => GeolocationComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => GeolocationComponent)\r\n }\r\n ]\r\n})\r\nexport class GeolocationComponent implements OnInit {\r\n static idCounter = 0;\r\n\r\n @ViewChild('latitude', { static: true }) latitude: ElementRef;\r\n @ViewChild('longitude', { static: true }) longitude: ElementRef;\r\n @ViewChild('map', { static: false }) map?: ElementRef;\r\n\r\n touched = false;\r\n dirty = false;\r\n lastErrors: ValidationErrors | null = null;\r\n\r\n private _disabled: string | boolean;\r\n private _required: boolean;\r\n private _value: any;\r\n\r\n latitudeValue?: number = undefined;\r\n longitudeValue?: number = undefined;\r\n\r\n isValidNumber = isValidNumber;\r\n\r\n i18n = {\r\n en: {\r\n lat: 'latitude',\r\n lon: 'longitude',\r\n selectLocation: 'Select location',\r\n location: 'Location',\r\n selectAction: 'Select',\r\n cancelAction: 'Cancel',\r\n closeAction: 'Close',\r\n typeToSearch: 'type to search',\r\n cardinalPoints: {\r\n north: 'N',\r\n south: 'S',\r\n east: 'E',\r\n west: 'W'\r\n },\r\n userErrors: {\r\n required: 'Required field.',\r\n minLatitude: 'Minimum latitude is $minLatitude.',\r\n maxLatitude: 'Maximum latitude is $maxLatitude.',\r\n minLongitude: 'Minimum longitude is $minLongitude.',\r\n maxLongitude: 'Maximum longitude is $maxLongitude.'\r\n }\r\n },\r\n es: {\r\n lat: 'latitud',\r\n lon: 'longitud',\r\n selectLocation: 'Seleccione ubicación',\r\n location: 'Ubicación',\r\n selectAction: 'Seleccionar',\r\n cancelAction: 'Cancelar',\r\n closeAction: 'Cerrar',\r\n typeToSearch: 'escribe para buscar',\r\n cardinalPoints: {\r\n north: 'N',\r\n south: 'S',\r\n east: 'E',\r\n west: 'O'\r\n },\r\n userErrors: {\r\n required: 'El campo es obligatorio.',\r\n minLatitude: 'La latitud mínima es $minLatitude.',\r\n maxLatitude: 'La latitud máxima es $maxLatitude.',\r\n minLongitude: 'La longitud mínima es $minLongitude.',\r\n maxLongitude: 'La longitud máxima es $maxLongitude.'\r\n }\r\n }\r\n };\r\n\r\n @Input()\r\n public minLatitude: number;\r\n @Input()\r\n public maxLatitude: number;\r\n @Input()\r\n public minLongitude: number;\r\n @Input()\r\n public maxLongitude: number;\r\n @Input()\r\n public step: number;\r\n @Input()\r\n public zoom: number;\r\n\r\n get className(): string {\r\n return this.checkClassName();\r\n }\r\n\r\n @Input() lang = languageDetector();\r\n @Input() public inlineErrors = false;\r\n @Input() public inputId: string;\r\n @Input('aria-label') public ariaLabel: string;\r\n @Input() public readonly: boolean | null = null;\r\n\r\n @Input()\r\n set disabled(v: string | boolean) {\r\n v = typeof v === 'string' && v !== 'false' ? true : v;\r\n this._disabled = v;\r\n }\r\n get disabled(): string | boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set required(v: boolean) {\r\n this._required = v;\r\n }\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n @Input()\r\n set value(v: GeoPoint) {\r\n if (v === this._value) {\r\n return; // prevent events when there is no changes\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n if (\r\n v &&\r\n v.coordinates &&\r\n v.coordinates.length === 2 &&\r\n exists(v.coordinates[0] && exists(v.coordinates[1]))\r\n ) {\r\n this._value = v;\r\n this.setLatitudeInControl(v.coordinates[1]);\r\n this.setLongitudeInControl(v.coordinates[0]);\r\n } else if (!v) {\r\n this._value = null;\r\n this.setLatitudeInControl(null);\r\n this.setLongitudeInControl(null);\r\n } else {\r\n this._value = v;\r\n // we don't set value in control if the value is not valid\r\n // if we do, the content of the control changes and can erase what the user is typing\r\n }\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n get value(): GeoPoint {\r\n return this._value;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<GeoPoint>();\r\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n onChange = (value: any): void => {};\r\n onTouched = (): void => {};\r\n\r\n constructor(\r\n private modalService: ModalService,\r\n public locationService: GeolocationService\r\n ) {}\r\n\r\n // ControlValueAccessor Interface implementation\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End of ControlValueAccessor Interface implementation\r\n\r\n private setLatitudeInControl(latitude: number): void {\r\n // this.latitude.nativeElement.value = latitude;\r\n this.latitudeValue = latitude;\r\n }\r\n private setLongitudeInControl(longitude: number): void {\r\n // this.longitude.nativeElement.value = longitude;\r\n this.longitudeValue = longitude;\r\n }\r\n clear(): void {\r\n this.setLatitudeInControl(null);\r\n this.setLongitudeInControl(null);\r\n this.value = null;\r\n }\r\n isClearable(): boolean {\r\n return (\r\n isValidNumber(this.latitudeValue) || isValidNumber(this.longitudeValue)\r\n );\r\n }\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n let result: ValidationErrors | null = null;\r\n\r\n if (\r\n this.required &&\r\n !hasValue(value) &&\r\n !exists(this.latitudeValue) &&\r\n !exists(this.longitudeValue)\r\n ) {\r\n result = result || {};\r\n result.required = { value, reason: 'Required field.' };\r\n }\r\n if (!exists(this.latitudeValue) && exists(this.longitudeValue)) {\r\n result = result || {};\r\n result.existsLatitude = {\r\n value,\r\n reason: 'Latitude not specified.'\r\n };\r\n }\r\n if (exists(this.latitudeValue) && !exists(this.longitudeValue)) {\r\n result = result || {};\r\n result.existsLongitude = {\r\n value,\r\n reason: 'Longitude not specified.'\r\n };\r\n }\r\n if (exists(this.minLatitude) && this.latitudeValue < this.minLatitude) {\r\n result = result || {};\r\n result.minLatitude = {\r\n value,\r\n min: this.minLatitude,\r\n reason: `Latitude is lower than minimum value: ${this.minLatitude}.`\r\n };\r\n }\r\n if (exists(this.maxLatitude) && this.latitudeValue > this.maxLatitude) {\r\n result = result || {};\r\n result.maxLatitude = {\r\n value,\r\n max: this.maxLatitude,\r\n reason: `Latitude is higher than maximum value: ${this.maxLatitude}.`\r\n };\r\n }\r\n if (exists(this.minLongitude) && this.longitudeValue < this.minLongitude) {\r\n result = result || {};\r\n result.minLongitude = {\r\n value,\r\n min: this.minLongitude,\r\n reason: `Longitude is lower than minimum value: ${this.minLongitude}.`\r\n };\r\n }\r\n if (exists(this.maxLongitude) && this.longitudeValue > this.maxLongitude) {\r\n result = result || {};\r\n result.maxLongitude = {\r\n value,\r\n max: this.maxLongitude,\r\n reason: `Longitude is higher than maximum value: ${this.maxLongitude}.`\r\n };\r\n }\r\n this.lastErrors = result;\r\n return result;\r\n }\r\n // End of Validator interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `geolocation$${GeolocationComponent.idCounter++}`;\r\n this.setPatterns();\r\n }\r\n\r\n roundToStepAndUpdateLatitudeAndLongitude(\r\n newLatitudeAndLongitude: number[]\r\n ): void {\r\n const newLatitude = roundToMultipleOf(\r\n newLatitudeAndLongitude[1],\r\n this.step\r\n );\r\n const newLongitude = roundToMultipleOf(\r\n newLatitudeAndLongitude[0],\r\n this.step\r\n );\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n if (!exists(newLatitudeAndLongitude)) {\r\n this.value = null;\r\n }\r\n this.value = {\r\n type: 'Point',\r\n coordinates: [newLongitude, newLatitude]\r\n };\r\n }\r\n\r\n onLostFocus(): void {\r\n this.markAsTouched();\r\n }\r\n onEventLatitude(newLatitude: string): void {\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n const newLatitudeValue = isValidNumber(newLatitude) ? +newLatitude : null;\r\n if (\r\n !(exists(this.value) && exists(this.value.coordinates[0])) &&\r\n !exists(newLatitudeValue)\r\n ) {\r\n this.value = null;\r\n } else {\r\n this.value = {\r\n type: 'Point',\r\n coordinates: [\r\n this.value ? this.value.coordinates[0] : undefined,\r\n newLatitudeValue\r\n ]\r\n };\r\n }\r\n this.markAsTouched();\r\n }\r\n onEventLongitude(newLongitude: string): void {\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n const newLongitudeValue = isValidNumber(newLongitude)\r\n ? +newLongitude\r\n : null;\r\n if (\r\n !exists(newLongitudeValue) &&\r\n !(exists(this.value) && exists(this._value.coordinates[1]))\r\n ) {\r\n this.value = null;\r\n } else {\r\n this.value = {\r\n type: 'Point',\r\n coordinates: [\r\n newLongitudeValue,\r\n this.value ? this.value.coordinates[1] : undefined\r\n ]\r\n };\r\n }\r\n this.markAsTouched();\r\n }\r\n onKeyPress(event: KeyboardEvent): void {\r\n this.keyPress.emit(event);\r\n }\r\n\r\n checkClassName(): string {\r\n return this.disabled\r\n ? this.readonly\r\n ? 'disabled readonly'\r\n : 'disabled'\r\n : this.readonly\r\n ? 'readonly'\r\n : '';\r\n }\r\n\r\n openModalMap(modal: TemplateRef<any>): void {\r\n this.modalService.open(modal).result.then(\r\n (result) => {\r\n if (result !== 'cancel') {\r\n this.roundToStepAndUpdateLatitudeAndLongitude(result);\r\n }\r\n },\r\n (_) => {}\r\n );\r\n }\r\n\r\n onSearchLocationChanged(newValue: GeoPoint, map: any): void {\r\n map.markerPoint = newValue;\r\n map.center = map.markerPoint;\r\n }\r\n\r\n get mapTitle(): string {\r\n return this._disabled || !!this.readonly\r\n ? this.i18n[this.lang].location\r\n : this.i18n[this.lang].selectLocation;\r\n }\r\n\r\n get self(): GeolocationComponent {\r\n return this;\r\n }\r\n\r\n getLabels(\r\n instance: GeolocationComponent,\r\n keys: GeoPoint[]\r\n ): Observable<DataSource<GeoPoint, string>> {\r\n return instance.locationService.getLabels(instance.locationService, keys);\r\n }\r\n\r\n getData(\r\n instance: GeolocationComponent,\r\n search: string\r\n ): Observable<DataSource<GeoPoint, string>> {\r\n return instance.locationService.getData(instance.locationService, search);\r\n }\r\n\r\n setPatterns(): void {\r\n this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\r\n this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\r\n this.minLatitude = this.minLatitude || -90;\r\n this.maxLatitude = this.maxLatitude || +90;\r\n this.minLongitude = this.minLongitude || -180;\r\n this.maxLongitude = this.maxLongitude || +180;\r\n }\r\n}\r\n","<input\n #latitude\n class=\"rounded-left prefix\"\n [ngClass]=\"className\"\n type=\"number\"\n [id]=\"inputId + '$latitude'\"\n [(ngModel)]=\"latitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLatitude !== undefined && minLatitude !== null\n ? minLatitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLatitude !== undefined && maxLatitude !== null\n ? maxLatitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n [placeholder]=\"i18n[lang].lat\"\n (keyup)=\"onEventLatitude(latitude.value)\"\n (change)=\"onEventLatitude(latitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<div\n class=\"infix symbol monospace clickable\"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\">\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue >= 0\">{{\n i18n[lang].cardinalPoints.north\n }}</span>\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue < 0\">{{\n i18n[lang].cardinalPoints.south\n }}</span>\n <span *ngIf=\"!isValidNumber(latitudeValue)\">-</span>\n</div>\n<input\n #longitude\n class=\"prefix\"\n [ngClass]=\"className\"\n type=\"number\"\n [id]=\"inputId + '$longitude'\"\n [(ngModel)]=\"longitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLongitude !== undefined && minLongitude !== null\n ? minLongitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLongitude !== undefined && maxLongitude !== null\n ? maxLongitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n [placeholder]=\"i18n[lang].lon\"\n (keyup)=\"onEventLongitude(longitude.value)\"\n (change)=\"onEventLongitude(longitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<div\n class=\"infix symbol monospace clickable\"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\"\n>\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue >= 0\">{{\n i18n[lang].cardinalPoints.east\n }}</span>\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue < 0\">{{\n i18n[lang].cardinalPoints.west\n }}</span>\n <span *ngIf=\"!isValidNumber(longitudeValue)\">-</span>\n</div>\n<div\n [class]=\"\n disabled || readonly || !isClearable()\n ? 'clickable rounded-right postfix symbol'\n : 'clickable postfix symbol'\n \"\n [ngClass]=\"className\"\n (click)=\"openModalMap(modalMap)\"\n>\n <span class=\"icon-globe\"></span>\n</div>\n<button\n #clearButton\n *ngIf=\"!disabled && !readonly && isClearable()\"\n class=\"rounded-right postfix bordered icon icon-clear\"\n [id]=\"inputId + '$clear'\"\n type=\"button\"\n (click)=\"clear()\"\n aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ i18n[lang].userErrors.required }}\n </div>\n <div *ngIf=\"lastErrors.minLatitude\">\n {{\n i18n[lang].userErrors.minLatitude.replace(\n '$minLatitude',\n lastErrors.minLatitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLatitude\">\n {{\n i18n[lang].userErrors.maxLatitude.replace(\n '$maxLatitude',\n lastErrors.maxLatitude.max\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.minLongitude\">\n {{\n i18n[lang].userErrors.minLongitude.replace(\n '$minLongitude',\n lastErrors.minLongitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLongitude\">\n {{\n i18n[lang].userErrors.maxLongitude.replace(\n '$maxLongitude',\n lastErrors.maxLongitude.max\n )\n }}\n </div>\n</div>\n\n<ng-template #modalMap let-modal>\n <div class=\"lux-modal-header\">\n <h4 class=\"modal-title default-font\" id=\"modal-basic-title\">{{ mapTitle }}</h4>\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss('Cross click')\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"lux-modal-body content\">\n <lux-autocomplete\n #searchBar\n [attr.aria-label]=\"i18n[lang].typeToSearch\"\n [placeholder]=\"i18n[lang].typeToSearch\"\n *ngIf=\"!disabled && !readonly\"\n [instance]=\"self\"\n [resolveLabelsFunction]=\"getLabels\"\n [populateFunction]=\"getData\"\n (valueChange)=\"onSearchLocationChanged(searchBar.value, map)\"\n ></lux-autocomplete>\n <div class=\"map-container\">\n <lux-map\n #map\n [center]=\"value\"\n [markerPoint]=\"value\"\n [zoom]=\"zoom\"\n [readonly]=\"readonly === true || disabled === true ? true : false\"\n ></lux-map>\n </div>\n </div>\n <div class=\"lux-modal-footer\">\n <button\n *ngIf=\"disabled || readonly\"\n type=\"button\"\n class=\"btn btn-cancel\"\n (click)=\"modal.close('cancel')\"\n >\n {{ i18n[lang].closeAction }}\n </button>\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-cancel\"\n (click)=\"modal.close('cancel')\"\n >\n {{ i18n[lang].cancelAction }}\n </button>\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-select\"\n (click)=\"modal.close(map.markerPoint.coordinates)\"\n >\n {{ i18n[lang].selectAction }}\n </button>\n </div>\n</ng-template>\n","import { Injectable } from '@angular/core';\n\n/**\n * A service that holds the functionality for advanced handling of regular expressions\n */\n@Injectable({ providedIn: 'root' })\nexport class RegexpService {\n constructor() {}\n\n private removeOuterRoundBrackets(regularExpressionString: string): string {\n while (\n regularExpressionString[0] === '(' &&\n regularExpressionString[regularExpressionString.length - 1] === ')'\n ) {\n regularExpressionString = regularExpressionString.slice(\n 1,\n regularExpressionString.length - 1\n );\n }\n return regularExpressionString;\n }\n\n private isQuantifier(quantifier: string): boolean {\n switch (quantifier) {\n case '{':\n case '?':\n case '+':\n case '*':\n return true;\n }\n return false;\n }\n\n private parseMinimalAmountOfQuantifier(quantifier: string): number {\n switch (quantifier[0]) {\n case '?':\n case '*':\n return 0;\n case '+':\n return 1;\n case '{':\n for (let index = 1; index < quantifier.length; ++index) {\n if (quantifier[index] < '0' || quantifier[index] > '9') {\n return Number(quantifier.slice(1, index));\n }\n }\n }\n return 0;\n }\n\n private sliceRegexByOr(regularExpressionString: string): string[] {\n const result = [];\n let slicedRegex = '';\n let lastSliceIndex = 0;\n let roundBracketCount = 0;\n let squareBracketCount = 0;\n let curlyBracketCount = 0;\n let index = 0;\n for (; index < regularExpressionString.length; ++index) {\n switch (regularExpressionString[index]) {\n case '\\\\':\n // escape sequence; skip the next character\n ++index;\n break;\n case '(':\n roundBracketCount += 1;\n break;\n case ')':\n roundBracketCount -= 1;\n break;\n case '[':\n squareBracketCount += 1;\n break;\n case ']':\n squareBracketCount -= 1;\n break;\n case '{':\n curlyBracketCount += 1;\n break;\n case '}':\n curlyBracketCount -= 1;\n break;\n case '|':\n if (\n roundBracketCount === 0 &&\n squareBracketCount === 0 &&\n curlyBracketCount === 0\n ) {\n slicedRegex = this.removeOuterRoundBrackets(\n regularExpressionString.slice(lastSliceIndex, index)\n );\n result.push(slicedRegex);\n lastSliceIndex = index + 1;\n }\n break;\n }\n }\n slicedRegex = this.removeOuterRoundBrackets(\n regularExpressionString.slice(lastSliceIndex, index)\n );\n result.push(slicedRegex);\n return result;\n }\n\n private sliceRegexByThen(regularExpressionString: string): string[][] {\n // the actual result\n const resultStart = [];\n // the remainder of the regex in each case\n const resultRemainder = [];\n let roundBracketCount = 0;\n let squareBracketCount = 0;\n let curlyBracketCount = 0;\n for (let index = 0; index < regularExpressionString.length; ++index) {\n switch (regularExpressionString[index]) {\n case '\\\\':\n // escape sequence; skip the next character\n ++index;\n break;\n case '(':\n roundBracketCount += 1;\n break;\n case ')':\n roundBracketCount -= 1;\n break;\n case '[':\n squareBracketCount += 1;\n break;\n case ']':\n squareBracketCount -= 1;\n break;\n case '{':\n curlyBracketCount += 1;\n break;\n case '}':\n curlyBracketCount -= 1;\n break;\n }\n if (\n roundBracketCount === 0 &&\n squareBracketCount === 0 &&\n curlyBracketCount === 0\n ) {\n if (!this.isQuantifier(regularExpressionString[index + 1])) {\n resultStart.push(regularExpressionString.slice(0, index + 1));\n resultRemainder.push(regularExpressionString.slice(index + 1));\n } else {\n // let minimalAmountOfRepeats = parseMinimalAmountOfQuantifier(regularExpressionString.slice(index + 1));\n // TODO\n }\n }\n }\n return [resultStart, resultRemainder];\n }\n\n suggestion(beginning: string, regularExpressionString: string): string {\n if (new RegExp(regularExpressionString).test(beginning)) {\n // TODO: RETURN AN EMPTY STRING\n return 'YA ES IGUAL, NO HAY MÁS QUE SUGERIR';\n }\n const regexOptions = this.sliceRegexByOr(regularExpressionString);\n if (regexOptions.length > 1) {\n for (\n let regexOptionIndex = 0;\n regexOptionIndex < regexOptions.length;\n ++regexOptionIndex\n ) {\n const regexParts = this.sliceRegexByThen(\n regexOptions[regexOptionIndex]\n );\n const regexPartsStarts = regexParts[0];\n const regexPartsRemainders = regexParts[1];\n // for each option, test if the first part of the regex matches\n // if it doesn't, continue\n // if it does, keep checking until what part it matches\n if (!new RegExp(regexPartsStarts[0]).test(beginning)) {\n // if there are no more options\n if (regexOptionIndex === regexOptions.length - 1) {\n // we return the first option, but we could return any option\n\n // TODO: RETURN ANY TEXT THAT MATCHES regexOptions[0]\n return regexOptions[0];\n }\n } else {\n for (\n let regexPartIndex = 1;\n regexPartIndex < regexPartsStarts.length;\n ++regexPartIndex\n ) {\n if (!new RegExp(regexPartsStarts[regexPartIndex]).test(beginning)) {\n // TODO: RETURN ANY TEXT THAT MATCHES regexPartsRemainders[regexPartIndex - 1]\n return regexPartsRemainders[regexPartIndex - 1];\n }\n }\n }\n }\n } else if (regexOptions.length === 1) {\n const regexParts = this.sliceRegexByThen(regexOptions[0]);\n const regexPartsStarts = regexParts[0];\n const regexPartsRemainders = regexParts[1];\n if (!new RegExp(regexPartsStarts[0]).test(beginning)) {\n // TODO: RETURN ANY TEXT THAT MATCHES regularExpressionString\n return regularExpressionString;\n } else {\n for (\n let regexPartIndex = 1;\n regexPartIndex < regexPartsStarts.length;\n ++regexPartIndex\n ) {\n if (!new RegExp(regexPartsStarts[regexPartIndex]).test(beginning)) {\n // TODO: RETURN ANY TEXT THAT MATCHES regexPartsRemainders[regexPartIndex - 1]\n return regexPartsRemainders[regexPartIndex - 1];\n }\n }\n }\n }\n // TODO: RETURN AN EMPTY STRING\n return 'NO DEBERÍA SER POSIBLE';\n }\n}\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n ElementRef,\r\n ViewChild,\r\n forwardRef\r\n} from '@angular/core';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n AbstractControl,\r\n ValidationErrors,\r\n Validator,\r\n NG_VALIDATORS\r\n} from '@angular/forms';\r\nimport {\r\n hasValue,\r\n isInitialAndEmpty,\r\n isValidEmail,\r\n isValidNumber,\r\n isValidRelativeUrl,\r\n isValidColor,\r\n normalizeDate\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\nimport { RegexpService } from './regexp.service';\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => InputComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => InputComponent)\r\n }\r\n ]\r\n})\r\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\r\n static idCounter = 0;\r\n\r\n @ViewChild('input', { static: false }) input: ElementRef;\r\n @ViewChild('textarea', { static: false }) textarea: ElementRef;\r\n @ViewChild('colorpicker', { static: false }) colorpicker: ElementRef;\r\n\r\n touched = false;\r\n dirty = false;\r\n lastErrors: ValidationErrors | null = null;\r\n\r\n private _disabled: string | boolean;\r\n private _value: any = '';\r\n private _type: string;\r\n private _placeholder: string;\r\n private _pattern?: string = undefined;\r\n private _regexp?: RegExp = undefined;\r\n private _currency: string;\r\n private _required: boolean;\r\n\r\n public userErrors = {\r\n en: {\r\n required: 'Required field.',\r\n min: 'Minimum value is $min.',\r\n max: 'Maximum value is $max.',\r\n email: 'Format should match example@example.com.',\r\n url: 'Format should match https://example.com.',\r\n color: 'Format should match #XXXXXX.'\r\n },\r\n es: {\r\n required: 'El campo es obligatorio.',\r\n min: 'El valor mínimo es $min.',\r\n max: 'El valor máximo es $max.',\r\n email: 'El campo debe tener un formato como ejemplo@ejemplo.com.',\r\n url: 'El campo debe tener un formato como https://ejemplo.com.',\r\n color: 'El campo debe tener un formato como #XXXXXX.'\r\n }\r\n };\r\n\r\n public domain: string;\r\n @Input()\r\n public rows?: number | string;\r\n @Input()\r\n public cols?: number | string;\r\n @Input()\r\n public step?: number;\r\n @Input()\r\n public min?: number | string;\r\n @Input()\r\n public max?: number | string;\r\n\r\n get className(): string {\r\n return this.checkClassName();\r\n }\r\n\r\n get color(): string {\r\n return this.checkColor();\r\n }\r\n\r\n @Input() lang = languageDetector();\r\n @Input() public inlineErrors = false;\r\n @Input() public inputId: string;\r\n @Input('aria-label') public ariaLabel: string;\r\n @Input() public readonly: boolean | null = null;\r\n\r\n @Input()\r\n set disabled(v: string | boolean) {\r\n v = typeof v === 'string' ? true : v;\r\n this._disabled = v;\r\n }\r\n get disabled(): string | boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set pattern(p: string | undefined) {\r\n this._pattern = p;\r\n if (p === undefined) {\r\n this._regexp = undefined;\r\n } else {\r\n try {\r\n this._regexp = new RegExp(p);\r\n } catch (e) {\r\n this._pattern = undefined;\r\n this._regexp = undefined;\r\n }\r\n }\r\n }\r\n get pattern(): string | undefined {\r\n return this._pattern;\r\n }\r\n\r\n @Input()\r\n set currency(v: string) {\r\n this._currency = v.toUpperCase();\r\n }\r\n get currency(): string {\r\n return this._currency;\r\n }\r\n\r\n @Input()\r\n set placeholder(v: string) {\r\n this._placeholder = v;\r\n }\r\n get placeholder(): string {\r\n return this._placeholder ? this._placeholder : '';\r\n }\r\n\r\n @Input()\r\n set required(v: boolean) {\r\n this._required = v;\r\n }\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n @Input()\r\n set type(v: string) {\r\n this._type = v.toLowerCase();\r\n this.domain = v.toLowerCase();\r\n this.checkType(v);\r\n }\r\n get type(): string {\r\n return this._type ? this._type : 'text';\r\n }\r\n\r\n @Input()\r\n set value(v: any) {\r\n v = v === undefined ? null : v;\r\n if (v === this._value) {\r\n return; // prevent events when there is no changes\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n if (this.type === 'date') {\r\n v = normalizeDate(v);\r\n }\r\n\r\n this._value = v;\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n get value(): any {\r\n if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\r\n const numVal = parseFloat(this._value);\r\n if (!Number.isNaN(numVal)) {\r\n return numVal;\r\n }\r\n }\r\n return this._value;\r\n }\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n\r\n constructor(public regexpService: RegexpService) {}\r\n\r\n // ControlValueAccessor Interface implementation\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.setValueInControl(value);\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End of ControlValueAccessor Interface implementation\r\n\r\n private setValueInControl(v: any): void {\r\n if (this.domain === 'date') {\r\n v = normalizeDate(v);\r\n }\r\n if (this.input) {\r\n this.input.nativeElement.value = v;\r\n }\r\n if (this.textarea) {\r\n this.textarea.nativeElement.value = v;\r\n }\r\n }\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n let result: ValidationErrors | null = null;\r\n\r\n if (this.required && !hasValue(value)) {\r\n result = result || {};\r\n result.required = { value, reason: 'Required field.' };\r\n }\r\n if (this._regexp && hasValue(value) && !this._regexp.test(value)) {\r\n result = result || {};\r\n result.pattern = {\r\n value,\r\n reason: `Value must follow the pattern: ${this._pattern}`\r\n };\r\n }\r\n if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\r\n result = result || {};\r\n result.email = { value, reason: 'Invalid email.' };\r\n }\r\n if (this.type === 'url' && hasValue(value) && !isValidRelativeUrl(value)) {\r\n result = result || {};\r\n result.url = { value, reason: 'Invalid URL.' };\r\n }\r\n if (this.type === 'color' && hasValue(value) && !isValidColor(value)) {\r\n result = result || {};\r\n result.color = { value, reason: 'Invalid color.' };\r\n }\r\n if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\r\n result = result || {};\r\n result.numeric = { value, reason: 'Invalid number.' };\r\n }\r\n if (\r\n this.type === 'date' ||\r\n this.type === 'time' ||\r\n this.type === 'timestamp'\r\n ) {\r\n if (\r\n typeof this.min === 'string' &&\r\n hasValue(value) &&\r\n String(value).localeCompare(this.min) === -1\r\n ) {\r\n result = result || {};\r\n result.min = {\r\n value,\r\n min: this.min,\r\n reason: `Value is lower than minimum value: ${this.min}.`\r\n };\r\n }\r\n if (\r\n typeof this.max === 'string' &&\r\n hasValue(value) &&\r\n String(value).localeCompare(this.max) !== -1\r\n ) {\r\n result = result || {};\r\n result.max = {\r\n value,\r\n max: this.max,\r\n reason: `Value is greater than than maximum value: ${this.max}.`\r\n };\r\n }\r\n }\r\n\r\n if (\r\n this.type === 'percentage' ||\r\n this.type === 'permillage' ||\r\n this.type === 'number' ||\r\n this.type === 'currency'\r\n ) {\r\n if (hasValue(this.min) && hasValue(value) && value < +this.min) {\r\n result = result || {};\r\n result.min = {\r\n value,\r\n min: this.min,\r\n reason: `Value is lower than minimum value: ${this.min}.`\r\n };\r\n }\r\n if (hasValue(this.max) && hasValue(value) && value > +this.max) {\r\n result = result || {};\r\n result.max = {\r\n value,\r\n max: this.max,\r\n reason: `Value is greater than than maximum value: ${this.max}.`\r\n };\r\n }\r\n }\r\n this.lastErrors = result;\r\n return result;\r\n }\r\n // End of Validator interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `${this.type}$${InputComponent.idCounter++}`;\r\n }\r\n onLostFocus(): void {\r\n this.markAsTouched();\r\n }\r\n onKeyUp(newValue: string): void {\r\n this.value = newValue;\r\n }\r\n onChangeValue(newValue: string): void {\r\n this.value = newValue;\r\n if (this.isColor()) {\r\n this.colorpicker.nativeElement.value = undefined;\r\n }\r\n this.markAsTouched();\r\n }\r\n onKeyPress(event: KeyboardEvent): void {\r\n this.keyPress.emit(event);\r\n }\r\n onColorPicked(newValue: string): void {\r\n this.onChangeValue(newValue);\r\n this.setValueInControl(newValue);\r\n }\r\n\r\n isUrl(): boolean {\r\n return this.type === 'url';\r\n }\r\n isColor(): boolean {\r\n return this.type === 'color';\r\n }\r\n isNumber(): boolean {\r\n return this.type === 'number';\r\n }\r\n isPercentage(): boolean {\r\n return this.type === 'percentage';\r\n }\r\n isPermillage(): boolean {\r\n return this.type === 'permillage';\r\n }\r\n hasPrefix(): boolean {\r\n return this.currency === 'USD';\r\n }\r\n hasPostfix(): boolean {\r\n return (\r\n this.currency === 'EUR' ||\r\n this.isPercentage() ||\r\n this.isPermillage() ||\r\n (this.isUrl() && !!this.value) ||\r\n this.isColor()\r\n );\r\n }\r\n\r\n checkClassName(): string {\r\n return this.disabled\r\n ? this.readonly\r\n ? 'disabled readonly'\r\n : 'disabled'\r\n : this.readonly\r\n ? 'readonly'\r\n : '';\r\n }\r\n\r\n checkColor(): string {\r\n return this.type === 'color' && isValidColor(this.value)\r\n ? this.value\r\n : 'initial';\r\n }\r\n\r\n checkType(type: string): void {\r\n switch (type) {\r\n case 'email':\r\n this.setEmailPatterns();\r\n break;\r\n case 'url':\r\n this.setUrlPatterns();\r\n break;\r\n case 'color':\r\n this.setColorPatterns();\r\n break;\r\n case 'date':\r\n this.setDatePatterns();\r\n break;\r\n case 'time':\r\n this.setTimePatterns();\r\n break;\r\n case 'password':\r\n this.setPasswordPatterns();\r\n break;\r\n case 'number':\r\n this.setNumberPatterns();\r\n break;\r\n case 'currency':\r\n this.setCurrencyPatterns();\r\n break;\r\n case 'percentage':\r\n this.setPercentagePatterns();\r\n break;\r\n case 'permillage':\r\n this.setPermillagePatterns();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n setEmailPatterns(): void {}\r\n\r\n setUrlPatterns(): void {}\r\n\r\n setColorPatterns(): void {\r\n this.domain = 'text';\r\n }\r\n\r\n setDatePatterns(): void {\r\n this.min = this.min || '1900-01-01';\r\n this.max = this.max || '2100-01-01';\r\n }\r\n\r\n setTimePatterns(): void {}\r\n\r\n setPasswordPatterns(): void {}\r\n\r\n setNumberPatterns(): void {\r\n this.domain = 'number';\r\n this.placeholder = '0';\r\n }\r\n\r\n setCurrencyPatterns(): void {\r\n this.domain = 'number';\r\n this.step = this.step || 0.1;\r\n this.min = this.min || 0.0;\r\n this.max = this.max || 10000.0;\r\n this.value = 0.0;\r\n }\r\n\r\n setPercentagePatterns(): void {\r\n this.domain = 'number';\r\n this.step = this.step || 0.01;\r\n this.min = this.min || 0.0;\r\n this.max = this.max || 100.0;\r\n this.placeholder = '0.00';\r\n }\r\n\r\n setPermillagePatterns(): void {\r\n this.domain = 'number';\r\n this.step = this.step || 0.01;\r\n this.min = this.min || 0.0;\r\n this.max = this.max || 1000.0;\r\n this.placeholder = '0.00';\r\n }\r\n}\r\n","<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix rounded-left symbol\" [ngClass]=\"className\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n [class]=\"hasPrefix() ? (hasPostfix() ? 'infix' : 'postfix rounded-right') : (hasPostfix() ? 'prefix rounded-left' : 'rounded')\"\n [ngClass]=\"className\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n class=\"rounded\"\n [ngClass]=\"className\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\n <span>€</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\n <span>‰</span>\n</div>\n<div *ngIf=\"isUrl() && !!value\" class=\"postfix rounded-right symbol clickable\" [ngClass]=\"className\">\n <a href=\"{{ value }}\" target=\"_blank\">\n <span class=\"icon-external\"></span>\n </a>\n</div>\n<div *ngIf=\"isColor()\" class=\"postfix rounded-right bordered transparency\" [ngClass]=\"className\">\n <div class=\"rounded-right full-space\" [ngStyle]=\"{'background-color': color}\">\n <input\n #colorpicker\n class=\"minimal-space clickable invisible rounded-right full-space\"\n [id]=\"inputId + '$colorpicker'\"\n type=\"color\"\n [attr.value]=\"value\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n (change)=\"onColorPicked(colorpicker.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n />\n </div>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.url\">{{ userErrors[this.lang].url }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n","export enum Placement {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\nexport type PlacementValue = 'left' | 'right' | 'top' | 'bottom';\n","import { Component, Input } from '@angular/core';\r\nimport { LuxTooltipContext } from './tooltip-context';\r\n\r\n/**\r\n * Default Tooltip Component\r\n */\r\n@Component({\r\n standalone: false,\r\n template: `\r\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{\r\n context.message\r\n }}</span>\r\n `\r\n})\r\nexport class TooltipComponent {\r\n @Input() context: LuxTooltipContext;\r\n\r\n constructor() {}\r\n}\r\n","import { ViewRef, ComponentRef } from '@angular/core';\n\nexport class TooltipContentRef {\n constructor(public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n ComponentFactoryResolver,\n ApplicationRef,\n EmbeddedViewRef,\n ElementRef,\n TemplateRef\n} from '@angular/core';\n\nimport { PlacementValue, Placement } from './placement';\nimport { LuxTooltipContext } from './tooltip-context';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipContentRef } from './tooltop-content';\n\n@Injectable()\nexport class TooltipService {\n constructor(\n private _injector: Injector,\n private _crf: ComponentFactoryResolver,\n private _applicationRef: ApplicationRef\n ) {}\n\n appendComponentToBody(\n content: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n const tooltipContentRef = this.getTooltipContentRef(content);\n if (tooltipContentRef) {\n let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\n .rootNodes[0];\n document.body.appendChild(domElem);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\n }\n domElem = this.setStyle(domElem, placement);\n domElem = this.setPosition(domElem, elHost, placement);\n return tooltipContentRef;\n }\n return null;\n }\n\n removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\n this._applicationRef.detachView(tooltipContentRef.viewRef);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.destroy();\n }\n }\n\n private getTooltipContentRef(content: any): TooltipContentRef {\n if (!content) {\n // nothing to show\n } else if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content);\n } else if (typeof content === 'string') {\n return this.createFromComponent(TooltipComponent, { message: content });\n } else {\n return this.createFromComponent(content);\n }\n }\n\n private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new TooltipContentRef(viewRef);\n }\n\n private createFromComponent(\n component: any,\n context?: LuxTooltipContext\n ): TooltipContentRef {\n const componentRef: ComponentRef<any> = this._crf\n .resolveComponentFactory(component)\n .create(this._injector);\n if (context) {\n componentRef.instance.context = context;\n }\n this._applicationRef.attachView(componentRef.hostView);\n return new TooltipContentRef(componentRef.hostView, componentRef);\n }\n\n private setStyle(\n domElem: HTMLElement,\n placement: PlacementValue\n ): HTMLElement {\n domElem.style.position = 'absolute';\n domElem.style.minWidth = 'min-content';\n domElem.style.minHeight = 'min-content';\n const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\n placement =\n placement !== undefined\n ? (placement.toLocaleLowerCase() as PlacementValue)\n : 'top'; // 'Top' is the default value of placement\n tooltipElement.classList.add(`lux-tooltip-${placement}`);\n tooltipElement.classList.add('lux-tooltip-show');\n return domElem;\n }\n\n private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\n const elementsArray = Array.from(domElem.classList).filter(\n (className) => className === 'lux-tooltip'\n );\n if (elementsArray.length !== 0) {\n return domElem;\n } else if (domElem.hasChildNodes()) {\n const childrenArray = Array.from(domElem.children).filter(\n (child) =>\n this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\n );\n if (childrenArray.length !== 0) {\n return this.getTooltipElementFromHTMLElemnt(\n childrenArray[0] as HTMLElement\n );\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n private setPosition(\n domElem: HTMLElement,\n elHost: ElementRef,\n placement: PlacementValue\n ): HTMLElement {\n const hostPos = elHost.nativeElement.getBoundingClientRect();\n const tooltipPos = domElem.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n let top = 0;\n let left = 0;\n const offset = 10;\n\n switch (placement) {\n case Placement.Bottom:\n top = hostPos.bottom + offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n case Placement.Left:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - offset;\n break;\n case Placement.Right:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + offset;\n break;\n case Placement.Top:\n default:\n top = hostPos.top - tooltipPos.height - offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n domElem.style.top = `${top + scrollPos}px`;\n domElem.style.left = `${left}px`;\n return domElem;\n }\n}\n","import { HostListener, Input, Directive, ElementRef } from '@angular/core';\r\n\r\nimport { TooltipService } from './tooltip.service';\r\nimport { PlacementValue } from './placement';\r\nimport { TooltipContentRef } from './tooltop-content';\r\n\r\n/**\r\n * Tooltip directive\r\n */\r\n@Directive({\r\n standalone: false,\r\n selector: '[luxTooltip]'\r\n})\r\nexport class LuxTooltipDirective {\r\n /** Tooltip title */\r\n @Input() luxTooltip: any;\r\n\r\n /** Component, TemplateRef or String */\r\n @Input() content: any;\r\n\r\n /** Placement */\r\n @Input() placement: PlacementValue;\r\n\r\n tooltipRef: TooltipContentRef;\r\n\r\n constructor(\r\n private elHost: ElementRef,\r\n private tooltipService: TooltipService\r\n ) {}\r\n\r\n @HostListener('mouseenter') onMouseEnter(): void {\r\n if (!this.tooltipRef) {\r\n this.tooltipRef = this.show(this.content, this.elHost, this.placement);\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave(): void {\r\n if (this.tooltipRef) {\r\n this.remove(this.tooltipRef);\r\n this.tooltipRef = null;\r\n }\r\n }\r\n\r\n @HostListener('click') onClick(): void {\r\n if (this.tooltipRef) {\r\n this.remove(this.tooltipRef);\r\n this.tooltipRef = null;\r\n }\r\n }\r\n\r\n show(\r\n component: any,\r\n elHost: ElementRef,\r\n placement: PlacementValue\r\n ): TooltipContentRef {\r\n return this.tooltipService.appendComponentToBody(\r\n component,\r\n elHost,\r\n placement\r\n );\r\n }\r\n\r\n remove(tooltipRef: TooltipContentRef): void {\r\n this.tooltipService.removeComponentFromBody(tooltipRef);\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { languageDetector } from '../lang';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n literals = {\r\n en: {\r\n first: 'First',\r\n previous: 'Previous',\r\n next: 'Next',\r\n last: 'Last'\r\n },\r\n es: {\r\n first: 'Primero',\r\n previous: 'Anterior',\r\n next: 'Siguiente',\r\n last: 'Último'\r\n }\r\n };\r\n\r\n public first: string;\r\n public previous: string;\r\n public next: string;\r\n public last: string;\r\n\r\n public showPagination = false;\r\n public hidePrevious = false;\r\n public lastPage = false;\r\n public totalPages = 0;\r\n public displayNextEllipsis = false;\r\n public displayPreviousEllipsis = false;\r\n\r\n public pages: number[] = [];\r\n\r\n @Output() goToPage = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n /** Current page, total items and items to show per page */\r\n private paginationInfoValue: PaginationInfo;\r\n\r\n private _lang: string;\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n this.loadLanguage();\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n\r\n @Input()\r\n set paginationInfo(value: PaginationInfo) {\r\n this.paginationInfoValue = value;\r\n this.syncState();\r\n }\r\n get paginationInfo(): PaginationInfo {\r\n return this.paginationInfoValue;\r\n }\r\n\r\n constructor() {\r\n this.lang = languageDetector();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged(pageSize: number): void {\r\n this.paginationInfo.pageSize = pageSize;\r\n this.syncState();\r\n this.pageSizeChange.emit(pageSize);\r\n }\r\n\r\n onPage(n: number): void {\r\n this.goToPage.emit(n);\r\n }\r\n\r\n onFirst(): void {\r\n this.goToPage.emit(0);\r\n }\r\n\r\n onLast(): void {\r\n this.goToPage.emit(this.totalPages - 1);\r\n }\r\n onNext(): void {\r\n const page = (this.paginationInfo.page || 0) + 1;\r\n this.goToPage.emit(page);\r\n }\r\n onPrevious(): void {\r\n const page = (this.paginationInfo.page || 0) - 1;\r\n this.goToPage.emit(page);\r\n }\r\n\r\n private syncState(): void {\r\n this.pages = this.calculatePages();\r\n\r\n this.showPagination =\r\n this.paginationInfo.total > this.paginationInfo.pageSize;\r\n this.hidePrevious = this.paginationInfo.page === 0;\r\n this.lastPage =\r\n this.paginationInfo.pageSize * (this.paginationInfo.page + 1) >=\r\n this.paginationInfo.total;\r\n this.totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) || 0;\r\n this.displayNextEllipsis = !this.pages.includes(this.totalPages - 1);\r\n this.displayPreviousEllipsis = !this.pages.includes(0);\r\n }\r\n\r\n private calculatePages(): number[] {\r\n const totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) - 1; // 0-index\r\n const p = this.paginationInfo.page || 0;\r\n const pagesToShow = this.paginationInfo.pagesToShow;\r\n const pages: number[] = [];\r\n pages.push(p);\r\n const times = pagesToShow - 1;\r\n for (let i = 0; i < times; i++) {\r\n if (pages.length < pagesToShow) {\r\n if (Math.min(...pages) > 0) {\r\n pages.unshift(Math.min(...pages) - 1);\r\n }\r\n }\r\n if (pages.length < pagesToShow) {\r\n if (Math.max(...pages) < totalPages) {\r\n pages.push(Math.max(...pages) + 1);\r\n }\r\n }\r\n }\r\n pages.sort((a, b) => a - b);\r\n return pages;\r\n }\r\n\r\n private loadLanguage(): void {\r\n const l = this.literals[this.lang];\r\n this.first = l.first;\r\n this.previous = l.previous;\r\n this.next = l.next;\r\n this.last = l.last;\r\n }\r\n}\r\n","<div class=\"lux-pagination\" *ngIf=\"showPagination\">\n <ng-container *ngIf=\"!hidePrevious\">\n <a\n luxTooltip\n [content]=\"first\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onFirst()\"\n [ngClass]=\"{\n enabledFirstLast: !hidePrevious\n }\"\n class=\"button-pagination icon arrow-left-end\"\n ></a>\n <a\n luxTooltip\n [content]=\"previous\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onPrevious()\"\n [ngClass]=\"{\n enabledFirstLast: !hidePrevious\n }\"\n class=\"button-pagination icon arrow-left\"\n ></a>\n </ng-container>\n\n <span class=\"ellipsis\" *ngIf=\"displayPreviousEllipsis\">...</span>\n\n <ng-container *ngFor=\"let pageNum of pages\">\n <a\n placement=\"top\"\n delay=\"500\"\n [ngClass]=\"{\n disabled: pageNum === paginationInfo.page,\n enabled: pageNum !== paginationInfo.page\n }\"\n class=\"button-pagination\"\n (click)=\"onPage(pageNum)\"\n >{{ pageNum + 1 }}</a\n >\n </ng-container>\n\n <span class=\"ellipsis\" *ngIf=\"displayNextEllipsis\">...</span>\n\n <ng-container *ngIf=\"!lastPage\">\n <a\n luxTooltip\n [content]=\"next\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onNext()\"\n [ngClass]=\"{\n enabledFirstLast: !lastPage\n }\"\n class=\"button-pagination icon arrow-right\"\n ></a>\n <a\n luxTooltip\n [content]=\"last\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onLast()\"\n [ngClass]=\"{\n enabledFirstLast: !lastPage\n }\"\n class=\"button-pagination icon arrow-right-end\"\n ></a>\n </ng-container>\n</div>\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\n\r\nexport interface RadioItem {\r\n name?: string;\r\n label: string;\r\n value: any;\r\n}\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-radiogroup',\r\n templateUrl: './radiogroup.component.html',\r\n styleUrls: ['./radiogroup.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => RadiogroupComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => RadiogroupComponent)\r\n }\r\n ]\r\n})\r\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\r\n private touched = false;\r\n\r\n @Input() name = 'radiogroup1';\r\n @Input() public disabled: boolean | null = false;\r\n @Input() public readonly: boolean | null = false;\r\n @Input() public required: boolean | null = false;\r\n\r\n @Input()\r\n set items(col: RadioItem[]) {\r\n this._items = (col || []).map((it, index) =>\r\n this.ensureHasUniqueName(it, index)\r\n );\r\n this.itemsChange.emit(col);\r\n }\r\n get items(): RadioItem[] {\r\n return this._items;\r\n }\r\n @Output() itemsChange = new EventEmitter<RadioItem[]>();\r\n\r\n @Input()\r\n set value(v: any) {\r\n if (v === this._value) {\r\n return;\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n this._value = v;\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n get value(): any {\r\n return this._value;\r\n }\r\n @Output() valueChange = new EventEmitter<any>();\r\n\r\n private _value: any = undefined;\r\n private _items: RadioItem[] = [];\r\n\r\n constructor() {}\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (\r\n this.required &&\r\n (value === '' || value === null || value === undefined)\r\n ) {\r\n return { required: { value, reason: 'Required field.' } };\r\n }\r\n return null;\r\n }\r\n // End of Validator interface\r\n\r\n setValue(event: MouseEvent, item: RadioItem): void {\r\n if (!this.disabled && !this.readonly) {\r\n this.value = item.value;\r\n this.markAsTouched();\r\n }\r\n event.preventDefault();\r\n }\r\n ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\r\n if (!item.name) {\r\n item.name = `${this.name}_${index}`;\r\n }\r\n return item;\r\n }\r\n}\r\n","<div class=\"radiogroup\"\n [class.disabled]=\"disabled || readonly\"\n >\n <ng-container *ngFor=\"let item of items; let first=first; let last=last\">\n <div [class.radio-start]=\"first\"\n [class.radio-end]=\"last\"\n class=\"radio-item\"\n [class.selected]=\"item.value === value\"\n (click)=\"setValue($event, item)\"\n >\n <input [id]=\"item.name\"\n type=\"radio\"\n [name]=\"name\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n [value]=\"item.value\">\n <label [for]=\"item.name\"\n class=\"unselectable\"\n >{{ item.label }}</label>\n </div>\n</ng-container>\n</div>\n","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n forwardRef\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\n\r\nlet sequencer = 0;\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'lux-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => SelectComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => SelectComponent)\r\n }\r\n ]\r\n})\r\nexport class SelectComponent implements ControlValueAccessor, Validator {\r\n @Input() id = 'stringList' + sequencer++;\r\n @Input() disabled = false;\r\n @Input() required = false;\r\n /** Allow multiple elements */\r\n @Input() multiple = true;\r\n @Input() value: string[] = [];\r\n @Output() valueChange = new EventEmitter<string[]>();\r\n @Input() placeholder = 'Add new';\r\n /** If set, check there is no duplicates in the data. */\r\n @Input() unique = true;\r\n /** Validation function for new items. Returns error or null if valid */\r\n @Input() validateItem: (item: string) => string = (_) => null;\r\n\r\n newEntry = '';\r\n error = null;\r\n isValidNewEntry = false;\r\n\r\n private touched = false;\r\n\r\n constructor() {}\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (\r\n this.required &&\r\n (value === '' || value === null || value === undefined)\r\n ) {\r\n return { required: { value, reason: 'Required field.' } };\r\n }\r\n return null;\r\n }\r\n // End of Validator interface\r\n\r\n get canAdd(): boolean {\r\n return this.multiple || this.value.length === 0;\r\n }\r\n add(val: string): void {\r\n this.value.push(val);\r\n this.newEntry = '';\r\n this.markAsTouched();\r\n this.valueChange.emit(this.value);\r\n }\r\n remove(index: number): void {\r\n if (this.value.length > index) {\r\n this.value.splice(index, 1);\r\n this.markAsTouched();\r\n this.valueChange.emit(this.value);\r\n }\r\n }\r\n onKeyPress(event: KeyboardEvent): void {\r\n if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\r\n // Add on pressing Enter/Return\r\n this.markAsTouched();\r\n this.add(this.newEntry);\r\n }\r\n }\r\n onChangeNewEntry(newValue: string): void {\r\n this.markAsTouched();\r\n if (!newValue) {\r\n this.isValidNewEntry = false;\r\n this.error = null;\r\n return;\r\n }\r\n if (this.unique) {\r\n const found = (this.value || []).find((it) => it === newValue);\r\n this.isValidNewEntry = !found;\r\n this.error = found\r\n ? `Value '${newValue}' is already in. Cannot add duplicates.`\r\n : null;\r\n if (!this.isValidNewEntry) {\r\n return;\r\n }\r\n }\r\n this.error = this.validateItem(newValue);\r\n this.isValidNewEntry = !this.error;\r\n }\r\n}\r\n","<div class=\"lux-select\">\n <ul class=\"list\">\n <li *ngFor=\"let item of value; let i = index\">\n <span>{{ item }}</span>\n <button *ngIf=\"!disabled\"\n class=\"remove\"\n type=\"button\"\n (click)=\"remove(i)\"\n [attr.aria-label]=\"'Remove ' + item\"\n >Remove</button>\n </li>\n </ul>\n <div class=\"add-new-item\" *ngIf=\"!disabled\">\n <lux-input\n id=\"{{ id + 'addNew' }}\"\n type=\"string\"\n [placeholder]=\"placeholder\"\n [attr.aria-label]=\"placeholder\"\n [disabled]=\"disabled\"\n [(value)]=\"newEntry\"\n (keyPress)=\"onKeyPress($event)\"\n (valueChange)=\"onChangeNewEntry($event)\"\n >\n </lux-input>\n <div *ngIf=\"canAdd\">\n <button *ngIf=\"isValidNewEntry\" type=\"button\" (click)=\"add(newEntry)\">Add</button>\n </div>\n <div class=\"error\">\n {{ error }}\n </div>\n </div>\n</div>\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[luxVoiceRecognition]'\r\n})\r\nexport class VoiceRecognitionDirective implements OnInit {\r\n @Input() language: string;\r\n // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\r\n private recognition: any;\r\n private isRecognizing = false;\r\n private mic: any;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n const speechRecognition = (window as any).webkitSpeechRecognition;\r\n if (speechRecognition) {\r\n this.recognition = new speechRecognition();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.recognition) {\r\n // API is available\r\n this.recognition.lang = this.language || window.navigator.language;\r\n this.recognition.interimResults = false;\r\n this.recognition.maxAlternatives = 1;\r\n\r\n // Add mic icon\r\n this.mic = document.createElement('div');\r\n this.mic.setAttribute('class', 'lux-microphone');\r\n\r\n const parent = this.el.nativeElement.parentElement;\r\n parent.appendChild(this.mic);\r\n\r\n // Add event handlers\r\n this.mic.onclick = (): void => this.microphoneClick();\r\n this.recognition.onresult = (event): void => this.onRecognized(event);\r\n }\r\n }\r\n\r\n microphoneClick(): void {\r\n if (this.isRecognizing) {\r\n // stop\r\n this.isRecognizing = false;\r\n this.renderer.removeClass(this.mic, 'lux-recording');\r\n this.recognition.abort();\r\n } else {\r\n // start\r\n this.el.nativeElement.value = getRecordingMessage(this.language);\r\n this.isRecognizing = true;\r\n this.renderer.addClass(this.mic, 'lux-recording');\r\n this.recognition.start();\r\n }\r\n }\r\n onRecognized(event: any): void {\r\n const recognizedText = event.results[0][0].transcript;\r\n this.isRecognizing = false;\r\n this.el.nativeElement.value = recognizedText;\r\n this.renderer.removeClass(this.mic, 'lux-recording');\r\n }\r\n}\r\n\r\nconst getRecordingMessage = (lang: string): string => {\r\n switch (lang.toLowerCase()) {\r\n case 'es':\r\n case 'es-es':\r\n return 'Grabando...';\r\n case 'en':\r\n case 'en-uk':\r\n case 'en-us':\r\n default:\r\n return 'Recording...';\r\n }\r\n};\r\n","import { isPlatformBrowser } from '@angular/common';\r\n\r\nimport {\r\n ClassProvider,\r\n FactoryProvider,\r\n InjectionToken,\r\n PLATFORM_ID\r\n} from '@angular/core';\r\n\r\n/* Create a new injection token for injecting the window into a component. */\r\nexport const WINDOW = new InjectionToken('WindowToken');\r\n\r\n/* Define abstract class for obtaining reference to the global window object. */\r\nexport abstract class WindowRef {\r\n get nativeWindow(): Window | object {\r\n throw new Error('Not implemented.');\r\n }\r\n}\r\n\r\n/* Define class that implements the abstract class and returns the native window object. */\r\nexport class BrowserWindowRef extends WindowRef {\r\n constructor() {\r\n super();\r\n }\r\n\r\n get nativeWindow(): Window | object {\r\n return window;\r\n }\r\n}\r\n\r\n/* Create an factory function that returns the native window object. */\r\nexport const windowFactory = (\r\n browserWindowRef: BrowserWindowRef,\r\n platformId: object\r\n): Window | object => {\r\n if (isPlatformBrowser(platformId)) {\r\n return browserWindowRef.nativeWindow;\r\n }\r\n return new Object();\r\n};\r\n\r\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\r\nconst browserWindowProvider: ClassProvider = {\r\n provide: WindowRef,\r\n useClass: BrowserWindowRef\r\n};\r\n\r\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\r\nconst windowProvider: FactoryProvider = {\r\n provide: WINDOW,\r\n useFactory: windowFactory,\r\n deps: [WindowRef, PLATFORM_ID]\r\n};\r\n\r\n/* Create an array of providers. */\r\nexport const WINDOW_PROVIDERS = [browserWindowProvider, windowProvider];\r\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { DatetimeComponent } from './datetime/datetime.component';\nimport { FilterComponent } from './filter/filter.component';\nimport { GeolocationComponent } from './geolocation/geolocation.component';\nimport { InputComponent } from './input/input.component';\nimport { MapComponent } from './map/map.component';\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\nimport { LuxModalWindowComponent } from './modal/modal-window';\nimport { ModalService } from './modal/modal.service';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\nimport { SelectComponent } from './select/select.component';\nimport { TooltipComponent } from './tooltip/tooltip.component';\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\nimport { TooltipService } from './tooltip/tooltip.service';\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\nimport { WINDOW_PROVIDERS } from './window/window.service';\n\n@NgModule({\n declarations: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n DatetimeComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n TooltipComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ],\n providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\n imports: [\n FormsModule,\n HttpClientModule,\n ReactiveFormsModule,\n RouterModule,\n CommonModule\n ],\n exports: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n DatetimeComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxBreadcrumbComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ]\n})\nexport class LuxModule {}\n","/*\n * Public API Surface of lux\n */\n\nexport { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport {\n BreadcrumbItem,\n LuxBreadcrumbComponent\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from './lib/datasource';\nexport { DatetimeComponent } from './lib/datetime/datetime.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { GeolocationComponent } from './lib/geolocation/geolocation.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { LuxModule } from './lib/lux.module';\nexport { MapComponent } from './lib/map/map.component';\nexport { ModalRef } from './lib/modal/modal-ref';\nexport { ModalService } from './lib/modal/modal.service';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport {\n RadiogroupComponent,\n RadioItem\n} from './lib/radiogroup/radiogroup.component';\nexport { SelectComponent } from './lib/select/select.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { VoiceRecognitionDirective } from './lib/voice-recognition/voice-recognition.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0_1","i2","i1","i2.AutocompleteComponent","i1.LuxModalConfig","i1.ModalStack","i1.OpenLayerLoaderService","i1.ModalService","i2.GeolocationService","i3","i4","i5.AutocompleteComponent","i6.MapComponent","i1.RegexpService","i1.TooltipService","i2.LuxTooltipDirective","i2.InputComponent"],"mappings":"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"}
1
+ {"version":3,"file":"metadev-lux.mjs","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.html","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.html","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.html","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.html","../../../projects/lux/src/lib/datetime/datetime.component.ts","../../../projects/lux/src/lib/datetime/datetime.component.html","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/filter/filter.component.html","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/map/map.component.html","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.ts","../../../projects/lux/src/lib/modal/modal-ref.ts","../../../projects/lux/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/util.ts","../../../projects/lux/src/lib/modal/modal-window.ts","../../../projects/lux/src/lib/modal/modal-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.html","../../../projects/lux/src/lib/input/regexp.service.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/input/input.component.html","../../../projects/lux/src/lib/tooltip/placement.ts","../../../projects/lux/src/lib/tooltip/tooltip.component.ts","../../../projects/lux/src/lib/tooltip/tooltop-content.ts","../../../projects/lux/src/lib/tooltip/tooltip.service.ts","../../../projects/lux/src/lib/tooltip/tooltip.directive.ts","../../../projects/lux/src/lib/pagination/pagination.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.html","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.html","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/select/select.component.html","../../../projects/lux/src/lib/voice-recognition/voice-recognition.directive.ts","../../../projects/lux/src/lib/window/window.service.ts","../../../projects/lux/src/lib/lux.module.ts","../../../projects/lux/src/public-api.ts","../../../projects/lux/src/metadev-lux.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\r\n// undefined and null functions\r\n\r\nexport const exists = (value: any): boolean =>\r\n value !== null && value !== undefined;\r\n\r\nexport const hasValue = (value: any): boolean =>\r\n exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);\r\n\r\n// string functions\r\n\r\nexport const isEmptyString = (value: string): boolean => value.trim() === '';\r\n\r\nexport const isValidEmail = (value: string): boolean => {\r\n const re =\r\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;\r\n return re.test(String(value).toLowerCase().trim());\r\n};\r\n\r\nexport const isValidUrl = (value: string): boolean => {\r\n const pattern =\r\n // eslint-disable-next-line max-len\r\n /^((([a-z]+?:\\/\\/)?(((([a-z0-9]([a-z0-9-]*[a-z0-9])*)\\.)+[a-z]{2,})|((([0-9]{1,3}\\.){3}[0-9]{1,3}))|(localhost))(\\:[0-9]+)?))?((\\/[a-zA-Z0-9\\-_+=~.,:;%]+)*\\/?)((\\?|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+(((&|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+)*))?(#[a-zA-Z0-9\\-_+~.,:;%]+(=[a-zA-Z0-9\\*\\-_+~.,:;%]+)?)?$/;\r\n return pattern.test(value);\r\n};\r\n\r\nexport const isValidRelativeUrl = (value: string): boolean => {\r\n const pattern =\r\n // eslint-disable-next-line max-len\r\n /^((([a-z]+?:\\/\\/)?(((([a-z0-9]([a-z0-9-]*[a-z0-9])*)\\.)+[a-z]{2,})|((([0-9]{1,3}\\.){3}[0-9]{1,3}))|(localhost))(\\:[0-9]+)?)|([a-zA-Z0-9\\-_+=~.,:;%]+))?((\\/[a-zA-Z0-9\\-_+=~.,:;%]+)*\\/?)((\\?|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+(((&|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+)*))?(#[a-zA-Z0-9\\-_+~.,:;%]+(=[a-zA-Z0-9\\*\\-_+~.,:;%]+)?)?$/;\r\n return pattern.test(value);\r\n};\r\n\r\nexport const isValidColor = (value: string): boolean => {\r\n value = String(value).toLowerCase();\r\n // valid values for CSS color property, yet not valid colors by themselves\r\n if (\r\n value === 'currentcolor' ||\r\n value === 'inherit' ||\r\n value === 'initial' ||\r\n value === 'revert' ||\r\n value === 'unset'\r\n ) {\r\n return false;\r\n }\r\n return CSS.supports('color', value);\r\n};\r\n\r\n// date functions\r\n\r\nexport const isValidDate = (date: Date): boolean =>\r\n exists(date) ? !isNaN(date.getTime()) : false;\r\n\r\nexport const normalizeDate = (value: any): string => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substr(0, 10);\r\n }\r\n return value ? value.toString() : null;\r\n};\r\n\r\nexport const addTimezoneOffset = (date: Date): Date => {\r\n if (!isValidDate(date)) {\r\n return date;\r\n } else {\r\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000);\r\n }\r\n};\r\n\r\n// number functions\r\n\r\nexport const isValidNumber = (\r\n value: string | number | undefined | null\r\n): boolean => (hasValue(value) ? !Number.isNaN(Number(value)) : false);\r\n\r\nexport const numberOfDecimalDigits = (\r\n x: number | string\r\n): number | undefined => {\r\n if (isValidNumber(x)) {\r\n const xString = String(Number(x));\r\n if (xString === 'Infinity') {\r\n return 0;\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return 0;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return 0;\r\n } else {\r\n return xString.length - indexOfDecimalPoint - 1;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const numberOfWholeDigits = (x: number | string): number | undefined => {\r\n if (isValidNumber(x)) {\r\n let xString = String(Number(x));\r\n if (xString.indexOf('-') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n if (xString === 'Infinity') {\r\n return Infinity;\r\n }\r\n if (xString.indexOf('0') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return Number(xString.slice(indexOfE + 1, xString.length)) + 1;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return xString.length;\r\n } else {\r\n return indexOfDecimalPoint;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const roundToMultipleOf = (x: number, modulo: number): number => {\r\n const moduloString = String(modulo);\r\n // approximates the result\r\n // prone to inexactitude because of floating point arithmetic\r\n const approximation = Math.round(x / modulo) * modulo;\r\n const approximationString = String(approximation);\r\n // remove useless decimals\r\n const uselessDecimalsInApproximation =\r\n numberOfDecimalDigits(approximationString) -\r\n numberOfDecimalDigits(moduloString);\r\n const resultString = approximationString.slice(\r\n 0,\r\n approximationString.length - uselessDecimalsInApproximation\r\n );\r\n return Number(resultString);\r\n};\r\n\r\n// other functions\r\n\r\nexport const isInitialAndEmpty = (\r\n previousValue: any,\r\n newValue: any\r\n): boolean => {\r\n const isPrevArray = Array.isArray(previousValue);\r\n const isNewArray = Array.isArray(newValue);\r\n return !(\r\n (isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||\r\n (isNewArray ? newValue.length !== 0 : Boolean(newValue))\r\n );\r\n};\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { debounceTime, first, map } from 'rxjs/operators';\r\nimport {\r\n DataSource,\r\n DataSourceItem,\r\n DecoratedDataSource,\r\n DecoratedDataSourceItem\r\n} from '../datasource';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\n\r\nexport const LOST_FOCUS_TIME_WINDOW_MS = 200; // ms\r\n@Component({\r\n selector: 'lux-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n imports: [FormsModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => AutocompleteComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => AutocompleteComponent)\r\n }\r\n ]\r\n})\r\nexport class AutocompleteComponent\r\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy\r\n{\r\n private cd = inject(ChangeDetectorRef);\r\n private document = inject(DOCUMENT);\r\n private appendToContainer: HTMLElement | null = null;\r\n\r\n static idCounter = 0;\r\n\r\n @ViewChild('i0', { static: true }) i0: ElementRef;\r\n @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\r\n\r\n private _dataSource: DataSource<any, string>;\r\n private _placeholder: string;\r\n private _value: any;\r\n private lostFocusHandled = true;\r\n private t0 = 0;\r\n\r\n showSpinner = false;\r\n touched = false;\r\n completionList: DecoratedDataSource = [];\r\n showCompletion = false;\r\n focusItem: DataSourceItem<any, string>;\r\n\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\r\n\r\n @Input() public inputId: string;\r\n @Input() public disabled: boolean | null = null;\r\n @Input() public readonly: boolean | null = null;\r\n @Input() label = '';\r\n /** If canAddNewValues, user can type items not present in the data-source. */\r\n @Input() canAddNewValues = false;\r\n /** After cleaning the selection should the completion list remain open or closed:\r\n * false: (default) close on filters, to clean a filter and select all.\r\n * true: keep open (when the action most likely is to pick another one).\r\n */\r\n @Input() keepOpenAfterDelete = false;\r\n /** Append dropdown to body or custom selector. Uses position absolute. */\r\n @Input() appendTo?: string;\r\n\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(v: any) {\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n this._value = v;\r\n this.onChange(v);\r\n this.completeLabel();\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n @Input()\r\n get dataSource(): DataSource<any, string> {\r\n return this._dataSource;\r\n }\r\n set dataSource(v: DataSource<any, string>) {\r\n this._dataSource = v;\r\n this.dataSourceChange.emit(v);\r\n }\r\n @Input() required = false;\r\n\r\n @Input()\r\n set placeholder(v: string) {\r\n this._placeholder = v;\r\n }\r\n get placeholder(): string {\r\n return this._placeholder ? this._placeholder : '';\r\n }\r\n\r\n @Input() resolveLabelsFunction?: (\r\n instance: any,\r\n keys: any[]\r\n ) => Observable<DataSource<any, string>> = undefined;\r\n @Input() populateFunction?: (\r\n instance: any,\r\n search: string\r\n ) => Observable<DataSource<any, string>> = undefined;\r\n @Input() instance: any;\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched && !this.disabled) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (\r\n this.required &&\r\n (value === '' || value === null || value === undefined)\r\n ) {\r\n return { required: { value, reason: 'Required field.' } };\r\n }\r\n return null;\r\n }\r\n // End of Validator interface\r\n\r\n clear(): void {\r\n this.value = null;\r\n this.toggleCompletion(this.keepOpenAfterDelete, '');\r\n }\r\n\r\n private completeLabel(): void {\r\n if (this.value) {\r\n if (this.dataSource) {\r\n this.label = findLabelForId(this.dataSource, this.value) || '';\r\n } else if (this.instance && this.resolveLabelsFunction) {\r\n this.resolveLabelsFunction(this.instance, [this.value])\r\n .pipe(debounceTime(1), first())\r\n .subscribe((data) => {\r\n this.label = findLabelForId(data, this.value) || '';\r\n });\r\n }\r\n } else {\r\n this.label = '';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `autocompletelist${AutocompleteComponent.idCounter++}`;\r\n this.completeLabel();\r\n }\r\n ngAfterViewInit(): void {\r\n this.setSameWidth();\r\n this.handleAppendTo();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeDropdownFromContainer();\r\n }\r\n\r\n private handleAppendTo(): void {\r\n if (!this.appendTo) {\r\n return;\r\n }\r\n\r\n const container =\r\n this.appendTo === 'body'\r\n ? this.document.body\r\n : this.document.querySelector(this.appendTo);\r\n\r\n if (container) {\r\n this.appendToContainer = container as HTMLElement;\r\n this.appendToContainer.appendChild(this.completeDiv.nativeElement);\r\n }\r\n }\r\n\r\n private removeDropdownFromContainer(): void {\r\n if (this.appendToContainer && this.completeDiv) {\r\n const dropdown = this.completeDiv.nativeElement;\r\n if (dropdown.parentElement === this.appendToContainer) {\r\n this.appendToContainer.removeChild(dropdown);\r\n }\r\n }\r\n }\r\n\r\n private updateDropdownPosition(): void {\r\n if (!this.appendTo || !this.appendToContainer) {\r\n return;\r\n }\r\n\r\n const inputRect = this.i0.nativeElement.getBoundingClientRect();\r\n const dropdown = this.completeDiv.nativeElement;\r\n\r\n let top: number;\r\n let left: number;\r\n\r\n if (this.appendToContainer === this.document.body) {\r\n // For body, use viewport coordinates + scroll\r\n top = inputRect.bottom + window.scrollY;\r\n left = inputRect.left + window.scrollX;\r\n } else {\r\n // For custom containers, calculate relative position\r\n const containerRect = this.appendToContainer.getBoundingClientRect();\r\n top =\r\n inputRect.bottom -\r\n containerRect.top +\r\n this.appendToContainer.scrollTop;\r\n left =\r\n inputRect.left - containerRect.left + this.appendToContainer.scrollLeft;\r\n }\r\n\r\n dropdown.style.top = `${top}px`;\r\n dropdown.style.left = `${left}px`;\r\n dropdown.style.width = `${inputRect.width}px`;\r\n }\r\n onInputResized(): void {\r\n this.setSameWidth();\r\n }\r\n private setSameWidth(): void {\r\n if (this.appendTo) {\r\n this.updateDropdownPosition();\r\n } else {\r\n const width = this.i0.nativeElement.getBoundingClientRect().width;\r\n this.completeDiv.nativeElement.style.width = `${width}px`;\r\n }\r\n }\r\n\r\n onKeydown(event: KeyboardEvent, label: string): void {\r\n switch (event.key) {\r\n case 'Tab':\r\n if (label) {\r\n this.pickSelectionOrFirstMatch(label);\r\n }\r\n this.showCompletion = false;\r\n break;\r\n }\r\n this.markAsTouched();\r\n }\r\n onKeypress(event: KeyboardEvent, label: string): void {\r\n switch (event.key) {\r\n case 'Intro':\r\n case 'Enter':\r\n this.pickSelectionOrFirstMatch(label);\r\n event.preventDefault();\r\n break;\r\n }\r\n this.markAsTouched();\r\n }\r\n onKeyup(event: KeyboardEvent, label: string): void {\r\n switch (event.key) {\r\n case 'PageDown':\r\n this.focusOnNext(5);\r\n event.preventDefault();\r\n break;\r\n case 'ArrowDown':\r\n this.focusOnNext(1);\r\n event.preventDefault();\r\n break;\r\n case 'PageUp':\r\n this.focusOnPrevious(5);\r\n event.preventDefault();\r\n break;\r\n case 'ArrowUp':\r\n this.focusOnPrevious(1);\r\n event.preventDefault();\r\n break;\r\n case 'Escape':\r\n this.complete(null);\r\n event.preventDefault();\r\n break;\r\n case 'Intro':\r\n case 'Enter':\r\n event.preventDefault();\r\n break;\r\n default:\r\n this.showCompletionList(label);\r\n // event.preventDefault();\r\n }\r\n this.markAsTouched();\r\n }\r\n private focusOnNext(offset: number): void {\r\n const list = this.completionList || [];\r\n const index = list.findIndex(\r\n (it) => this.focusItem && it.key === this.focusItem.key\r\n );\r\n const indexNext =\r\n index !== -1 && list.length > index + offset\r\n ? index + offset\r\n : list.length - 1;\r\n const next = list[indexNext];\r\n this.focusItem = next;\r\n this.ensureItemVisible(index);\r\n }\r\n private focusOnPrevious(offset: number): void {\r\n const list = this.completionList || [];\r\n const index = list.findIndex(\r\n (it) => this.focusItem && it.key === this.focusItem.key\r\n );\r\n const indexPrevious = index !== -1 && index > offset ? index - offset : 0;\r\n const next = list[indexPrevious];\r\n this.focusItem = next;\r\n this.ensureItemVisible(index);\r\n }\r\n onLostFocus(label: string): void {\r\n this.lostFocusHandled = false;\r\n this.t0 = performance.now();\r\n // console.log('Init LostFocus');\r\n setTimeout(() => {\r\n // needs to postpone actions some milliseconds to verify if\r\n // lost focus was followed by a list selection -> then cancel\r\n // if not -> make side effect\r\n if (!this.lostFocusHandled) {\r\n // console.log(\r\n // 'Lost focus 2',\r\n // this.lostFocusHandled,\r\n // 'SIDE EFFECT',\r\n // performance.now() - this.t0,\r\n // 'label:',\r\n // label\r\n // );\r\n if (label && this.label !== label) {\r\n this.pickSelectionOrFirstMatch(label);\r\n } else {\r\n this.lostFocusHandled = true;\r\n }\r\n this.toggleCompletion(false, label);\r\n } else {\r\n // do nothing (list selection took place)\r\n // console.log(\r\n // 'onlost focus 2',\r\n // this.lostFocusHandled,\r\n // 'nothing',\r\n // performance.now() - this.t0\r\n // );\r\n }\r\n }, LOST_FOCUS_TIME_WINDOW_MS);\r\n }\r\n complete(item: DataSourceItem<Record<string, unknown>, string>): void {\r\n if (!this.lostFocusHandled) {\r\n this.lostFocusHandled = true; // prevent a previous lostFocus to trigger a side effect\r\n const ellapsed = performance.now() - this.t0;\r\n if (ellapsed > LOST_FOCUS_TIME_WINDOW_MS) {\r\n console.warn(\r\n 'complete. lostfocus->click timeout of ',\r\n LOST_FOCUS_TIME_WINDOW_MS,\r\n 'ms exceed: ',\r\n performance.now() - this.t0,\r\n ' ms'\r\n );\r\n }\r\n // console.log(\r\n // 'complete. set to true. CANCELED side effect',\r\n // performance.now() - this.t0\r\n // );\r\n }\r\n if (item !== null) {\r\n this.value = item.key;\r\n this.label = item.label;\r\n } else {\r\n this.value = null;\r\n this.label = '';\r\n }\r\n this.toggleCompletion(false, null);\r\n this.markAsTouched();\r\n }\r\n toggleCompletion(show: boolean, label: string): void {\r\n if (show && !this.disabled) {\r\n this.i0.nativeElement.focus();\r\n if (this.appendTo) {\r\n this.updateDropdownPosition();\r\n }\r\n this.showCompletionList(label);\r\n } else {\r\n this.showCompletion = false;\r\n if (this.canAddNewValues) {\r\n this.syncCustomValue(this.label);\r\n return;\r\n }\r\n }\r\n this.cd.markForCheck();\r\n }\r\n\r\n get selectedOption(): string {\r\n const index = this.completionList.findIndex(\r\n (i) => i.key === this.focusItem.key\r\n );\r\n if (index === -1 || !this.focusItem) {\r\n return null;\r\n }\r\n return `${this.inputId}_${index}`;\r\n }\r\n\r\n private ensureItemVisible(index: number): void {\r\n const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\r\n if (target) {\r\n target.scrollIntoView({ block: 'center' });\r\n }\r\n }\r\n private syncCustomValue(text: string): void {\r\n this.value = text;\r\n this.label = text;\r\n }\r\n /** Pick selection based on text filtering (ingnores drowdown state) */\r\n private pickSelectionOrFirstMatch(text: string): void {\r\n if (this.canAddNewValues) {\r\n this.syncCustomValue(text);\r\n return;\r\n }\r\n const focusIndex = this.completionList.findIndex(\r\n (it) => this.focusItem && it.key === this.focusItem.key\r\n );\r\n if (\r\n this.showCompletion &&\r\n focusIndex > 0 &&\r\n this.focusItem &&\r\n this.focusItem.label\r\n ) {\r\n if (text === this.focusItem.label && this.focusItem.key === this.value) {\r\n // do nothing if value does not change & close dropdow\r\n this.showCompletion = false;\r\n return;\r\n }\r\n // complete selected using selected item on drowdown\r\n this.complete(this.focusItem);\r\n return;\r\n }\r\n const source = (text || '').trim();\r\n if (!source) {\r\n this.showCompletion = false;\r\n // select null value\r\n if (this.value !== null) {\r\n this.value = null;\r\n }\r\n return;\r\n }\r\n this.completionList = [];\r\n this.computeCompletionList(source).subscribe((suggestions) => {\r\n const candidate =\r\n suggestions && suggestions.length > 0 ? suggestions[0] : null;\r\n this.complete(candidate);\r\n });\r\n }\r\n public showCompletionList(text: string): void {\r\n this.setSameWidth();\r\n const useSpinner = this.hasExternalDataSource();\r\n this.spinnerVisibility(useSpinner, true);\r\n setTimeout(() => {\r\n // for spinner to be shown\r\n this.computeCompletionList(text).subscribe({\r\n next: (cl) => {\r\n this.completionList = cl;\r\n this.focusItem = selectElement(this.completionList, text);\r\n this.showCompletion = true;\r\n this.spinnerVisibility(useSpinner, false);\r\n },\r\n error: () => {\r\n this.spinnerVisibility(useSpinner, false);\r\n },\r\n complete: () => {\r\n this.spinnerVisibility(useSpinner, false);\r\n }\r\n });\r\n }, 1);\r\n }\r\n\r\n private spinnerVisibility(useSpinner: boolean, value: boolean): void {\r\n if (useSpinner) {\r\n this.showSpinner = value;\r\n }\r\n }\r\n private hasExternalDataSource(): boolean {\r\n return !this.dataSource && !!this.instance && !!this.populateFunction;\r\n }\r\n private computeCompletionList(text: string): Observable<DecoratedDataSource> {\r\n const searchText = (text || '').toLowerCase();\r\n if (this.dataSource) {\r\n const ds = (this.dataSource || [])\r\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n return of(decorateDataSource(ds, searchText));\r\n } else if (this.instance && this.populateFunction) {\r\n return this.populateFunction(this.instance, searchText).pipe(\r\n debounceTime(1),\r\n first(),\r\n map((ds) => {\r\n const dsFiltered = ds\r\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n return decorateDataSource(dsFiltered, searchText);\r\n })\r\n );\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n}\r\n\r\n/** Returns true if text includes substring. No accents considered. Ignorecase */\r\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\r\n text = normalizedString(text).toLowerCase();\r\n substring = normalizedString(substring).toLowerCase();\r\n return text.includes(substring);\r\n};\r\n\r\n/** Returns a normalized string with no accents: used for comparison */\r\nconst normalizedString = (a: string): string =>\r\n (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n\r\nconst decorateDataSource = (\r\n dataSource: DataSource<any, string>,\r\n subString: string\r\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\r\n\r\nconst decorateItem = (\r\n item: DataSourceItem<any, string>,\r\n tx: string\r\n): DecoratedDataSourceItem => {\r\n const index = normalizedString(item.label)\r\n .toLowerCase()\r\n .indexOf(normalizedString(tx).toLowerCase());\r\n const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\r\n const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\r\n const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\r\n const newItem: DecoratedDataSourceItem = {\r\n ...item,\r\n labelPrefix,\r\n labelMatch,\r\n labelPostfix\r\n };\r\n return newItem;\r\n};\r\n\r\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\r\n const found = data.find((it) => it.key === id);\r\n return found ? found.label : null;\r\n};\r\n\r\nexport const selectElement = (\r\n completionList: DecoratedDataSource,\r\n label: string\r\n): DataSourceItem<any, string> => {\r\n label = (label || '').toLowerCase();\r\n if (!completionList || completionList.length === 0) {\r\n return null;\r\n }\r\n if (completionList.length === 1) {\r\n return completionList[0];\r\n }\r\n const found = completionList.find((it) => it.label.toLowerCase() === label);\r\n return found || completionList[0];\r\n};\r\n","<div class=\"lux-autocomplete\" (blur)=\"toggleCompletion(false, i0.value)\">\r\n <div class=\"lux-autocomplete-box\">\r\n <input\r\n #i0\r\n [id]=\"inputId\"\r\n [(ngModel)]=\"label\"\r\n [placeholder]=\"placeholder\"\r\n [attr.disabled]=\"disabled || null\"\r\n [attr.readonly]=\"readonly || null\"\r\n (keydown)=\"onKeydown($event, i0.value)\"\r\n (keypress)=\"onKeypress($event, i0.value)\"\r\n (keyup)=\"onKeyup($event, i0.value)\"\r\n (blur)=\"onLostFocus(i0.value)\"\r\n (focus)=\"toggleCompletion(true, i0.value)\"\r\n (click)=\"toggleCompletion(true, i0.value)\"\r\n (resized)=\"onInputResized()\"\r\n (window:resize)=\"onInputResized()\"\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-expanded]=\"showCompletion\"\r\n aria-haspopup=\"true\"\r\n attr.aria-owns=\"{{ inputId + '_list' }}\"\r\n [attr.aria-activedescendant]=\"selectedOption\"\r\n />\r\n @if (canAddNewValues) {\r\n <div class=\"icon-suggestions\"></div>\r\n } @if (showSpinner) {\r\n <div class=\"icon-spinner\"></div>\r\n } @if (!disabled && i0.value && !showCompletion) {\r\n <button\r\n type=\"button\"\r\n class=\"icon-clear\"\r\n aria-label=\"Clear\"\r\n (click)=\"clear()\"\r\n ></button>\r\n } @else {\r\n <div\r\n class=\"icon-dropdown\"\r\n (click)=\"toggleCompletion(!showCompletion, i0.value)\"\r\n ></div>\r\n }\r\n </div>\r\n <div\r\n #completeDiv\r\n [class.showCompletion]=\"showCompletion\"\r\n [class.lux-completion-list-appended]=\"appendTo\"\r\n class=\"lux-completion-list\"\r\n id=\"{{ inputId + '_list' }}\"\r\n >\r\n <ul>\r\n @for (item of completionList; track item.key; let index = $index) {\r\n <li\r\n id=\"{{ inputId + '_' + index }}\"\r\n class=\"lux-completion-item\"\r\n [class.selected]=\"focusItem && item.key === focusItem.key\"\r\n (click)=\"complete(item)\"\r\n [attr.aria-label]=\"item.label\"\r\n >\r\n <span class=\"preserve-white-space\">{{ item.labelPrefix }}</span>\r\n <span class=\"preserve-white-space bold\">{{ item.labelMatch }}</span>\r\n <span class=\"preserve-white-space\">{{ item.labelPostfix }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</div>\r\n","/** Language detector based on Navigator preferences */\nexport const languageDetector = (): string => {\n const lang = navigator.language.split('-')[0];\n if (lang === 'es' || lang === 'en') {\n return lang;\n }\n return 'en'; // default\n};\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { first } from 'rxjs/operators';\r\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\r\nimport { DataSource } from '../datasource';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n\r\n@Component({\r\n selector: 'lux-autocomplete-list',\r\n templateUrl: './autocomplete-list.component.html',\r\n styleUrls: ['./autocomplete-list.component.scss'],\r\n imports: [AutocompleteComponent],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => AutocompleteListComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => AutocompleteListComponent)\r\n }\r\n ]\r\n})\r\nexport class AutocompleteListComponent\r\n implements ControlValueAccessor, Validator, OnInit\r\n{\r\n static idCounter = 0;\r\n\r\n @ViewChild('auto') auto!: AutocompleteListComponent;\r\n\r\n literals = {\r\n en: {\r\n placeholder: 'new item',\r\n deleteLabelTemplate: 'Delete <<label>>',\r\n addMessage: 'Add'\r\n },\r\n es: {\r\n placeholder: 'nuevo elemento',\r\n deleteLabelTemplate: 'Eliminar <<label>>',\r\n addMessage: 'Añadir'\r\n }\r\n };\r\n\r\n public internalDataSource: DataSource<any, string> = [];\r\n private autoPopulate = false;\r\n\r\n private _value: any[] = [];\r\n @Input()\r\n set value(val: any[]) {\r\n if (val === this._value) {\r\n return;\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, val);\r\n this._value = val;\r\n this.ensureLabelsForIds();\r\n this.populateWith('');\r\n this.onChange(this._value);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(this._value);\r\n }\r\n }\r\n get value(): any[] {\r\n return this._value;\r\n }\r\n labels: string[] = [];\r\n newEntry: any;\r\n canAdd = false;\r\n touched = false;\r\n\r\n private _lang = languageDetector();\r\n @Input()\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n }\r\n\r\n @Input() inputId: string;\r\n @Input() dataSource: DataSource<any, any> = [];\r\n @Input() placeholder?: string;\r\n @Input() disabled = false;\r\n @Input() deleteLabelTemplate?: string;\r\n @Input() addMessage?: string;\r\n @Input() required = false;\r\n\r\n @Input() resolveLabelsFunction?: (\r\n instance: any,\r\n ids: any[]\r\n ) => Observable<DataSource<any, string>> = undefined;\r\n @Input() populateFunction?: (\r\n instance: any,\r\n search: string\r\n ) => Observable<DataSource<any, string>> = undefined;\r\n @Input() instance: any;\r\n\r\n @Output() valueChange = new EventEmitter<any[]>();\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched && !this.disabled) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (\r\n this.required &&\r\n (value === '' || value === null || value === undefined)\r\n ) {\r\n return { required: { value, reason: 'Required field.' } };\r\n }\r\n return null;\r\n }\r\n // End of Validator interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `autocompletelist${AutocompleteListComponent.idCounter++}`;\r\n this.autoPopulate =\r\n !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\r\n this.ensureLabelsForIds();\r\n }\r\n ensureLabelsForIds(): void {\r\n if (this.autoPopulate && this.resolveLabelsFunction) {\r\n this.resolveLabelsFunction(this.instance, this._value)\r\n .pipe(first())\r\n .subscribe((data) => {\r\n const res: string[] = [];\r\n (this._value || []).map((id) => {\r\n const found = data.find((it) => it.key === id);\r\n if (found) {\r\n res.push(found.label);\r\n } else {\r\n res.push('(unset)');\r\n }\r\n });\r\n this.labels = res;\r\n });\r\n } else if (this.dataSource) {\r\n const res: string[] = [];\r\n (this._value || []).map((id) => {\r\n const found = this.dataSource.find((it) => it.key === id);\r\n if (found) {\r\n res.push(found.label);\r\n } else {\r\n res.push('(unset)');\r\n }\r\n });\r\n this.labels = res;\r\n } else {\r\n this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\r\n }\r\n }\r\n removeAt(index: number): void {\r\n if (this._value.length > index) {\r\n const key = this._value.splice(index, 1)[0];\r\n const label = this.labels.splice(index, 1)[0];\r\n this.internalDataSource.push({ key, label });\r\n }\r\n this.markAsTouched();\r\n }\r\n onValueChange(): void {\r\n this.updateCanAdd();\r\n }\r\n onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\r\n if (event.key === 'Enter' && !!auto.value) {\r\n this.addNew(auto);\r\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\r\n // todo\r\n } else {\r\n this.populateWith(auto.label + event.key);\r\n }\r\n this.updateCanAdd();\r\n }\r\n populateWith(searchText: string): void {\r\n if (this.autoPopulate && this.populateFunction && this.instance) {\r\n this.populateFunction(this.instance, searchText)\r\n .pipe(first())\r\n .subscribe((data) => {\r\n this.internalDataSource = data.filter(\r\n (it) => !(this._value || []).includes(it.key)\r\n );\r\n });\r\n } else if (this.dataSource) {\r\n this.internalDataSource = this.dataSource.filter(\r\n (it) => !(this._value || []).includes(it.key)\r\n );\r\n }\r\n }\r\n updateCanAdd(): void {\r\n this.canAdd =\r\n !this.disabled &&\r\n this.auto &&\r\n !!this.auto.value && // has value\r\n !this.value.find((it) => it === this.auto.value); // not already in\r\n }\r\n\r\n addNew(auto: AutocompleteComponent): void {\r\n this.value.push(auto.value);\r\n this.ensureLabelsForIds();\r\n this.newEntry = '';\r\n this.internalDataSource = this.internalDataSource.filter(\r\n (it) => !this._value.includes(it.key)\r\n );\r\n this.markAsTouched();\r\n }\r\n\r\n getDeleteMessage(label: string): string {\r\n return (\r\n this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\r\n ).replace('<<label>>', label);\r\n }\r\n}\r\n","<div [id]=\"inputId\">\r\n <ul>\r\n @for (label of labels; track label; let index = $index) {\r\n <li>\r\n <span>{{ label }}</span>\r\n @if (!disabled) {\r\n <button\r\n class=\"remove-item\"\r\n (click)=\"removeAt(index)\"\r\n attr.aria-label=\"{{ getDeleteMessage(label) }}\"\r\n ></button>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n @if (!disabled) {\r\n <div class=\"new-entry\">\r\n <lux-autocomplete\r\n #auto\r\n [dataSource]=\"internalDataSource\"\r\n [placeholder]=\"placeholder ?? literals[lang].placeholder\"\r\n [(value)]=\"newEntry\"\r\n (valueChange)=\"onValueChange()\"\r\n (keypress)=\"onNewEntryChange($event, auto)\"\r\n >\r\n </lux-autocomplete>\r\n @if (canAdd) {\r\n <button\r\n type=\"button\"\r\n class=\"add-item\"\r\n aria-label=\"addMessage ?? literals[lang].addMessage\"\r\n (click)=\"addNew(auto)\"\r\n ></button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n NavigationEnd,\r\n Router,\r\n RouterModule\r\n} from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nexport interface BreadcrumbItem {\r\n label: string;\r\n url: string;\r\n}\r\n@Component({\r\n selector: 'lux-breadcrumb',\r\n imports: [CommonModule, RouterModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrls: ['./breadcrumb.component.scss']\r\n})\r\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\r\n private route = inject(Router);\r\n private activedRoute = inject(ActivatedRoute);\r\n\r\n public breadcrumbs: BreadcrumbItem[];\r\n private subs: Subscription[] = [];\r\n public imagePath = '../assets/img/arrow-forward.svg';\r\n\r\n ngOnInit(): void {\r\n this.subs.push(\r\n this.route.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe((_) => {\r\n this.breadcrumbs = [];\r\n this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach((s) => s.unsubscribe());\r\n this.subs = [];\r\n }\r\n\r\n private addBreadcrumbs(\r\n activedRouteSnapshot: ActivatedRouteSnapshot,\r\n isRoot: boolean,\r\n urlPrefix: string\r\n ): void {\r\n const routeConfig = activedRouteSnapshot.routeConfig;\r\n let url = urlPrefix || '';\r\n url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\r\n const label = routeConfig\r\n ? this.getLabel(activedRouteSnapshot)\r\n : isRoot\r\n ? 'Home'\r\n : '';\r\n if (label && url !== '/') {\r\n const breadcrumb = { label, url };\r\n this.breadcrumbs.push(breadcrumb);\r\n }\r\n if (activedRouteSnapshot.children.length) {\r\n this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\r\n }\r\n }\r\n\r\n private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\r\n if (!activedRouteSnapshot.url[0]) {\r\n return '';\r\n }\r\n const id = activedRouteSnapshot.params.id;\r\n return id\r\n ? `${activedRouteSnapshot.url[0]}/${id}`\r\n : activedRouteSnapshot.routeConfig.path || '';\r\n }\r\n\r\n private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\r\n const routeConfig = activedRouteSnapshot.routeConfig;\r\n if (!routeConfig) {\r\n return null;\r\n }\r\n if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\r\n const data = activedRouteSnapshot.data;\r\n if (data.objectTitle) {\r\n return `${data.title} ${data.objectTitle}`;\r\n } else {\r\n return data.title;\r\n }\r\n }\r\n return activedRouteSnapshot.params.id || routeConfig.path;\r\n }\r\n}\r\n","<ul class=\"lux-breadcrumb\">\r\n @for (breadcrumb of breadcrumbs; track breadcrumb.url; let isLast = $last; let\r\n isFirst = $first) {\r\n <li class=\"lux-breadcrumb-item\">\r\n <a [class.first]=\"isFirst\" routerLink=\"{{ breadcrumb.url }}\">{{\r\n breadcrumb.label\r\n }}</a>\r\n @if (!isLast) {\r\n <div class=\"lux-breadcrumb-separator\"></div>\r\n }\r\n </li>\r\n }\r\n</ul>\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n\r\nconst KEY_SPACE = ' ';\r\n\r\n@Component({\r\n selector: 'lux-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n imports: [],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => CheckboxComponent)\r\n }\r\n ]\r\n})\r\nexport class CheckboxComponent\r\n implements ControlValueAccessor, OnInit, AfterViewInit\r\n{\r\n static idCounter = 0;\r\n\r\n @ViewChild('ck', { static: false }) ck: ElementRef;\r\n\r\n private _lang = languageDetector();\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n private internalValue: boolean;\r\n @Input()\r\n get value(): boolean {\r\n return this.internalValue;\r\n }\r\n set value(v: boolean) {\r\n if (this.internalValue === v) {\r\n return;\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\r\n this.internalValue = v;\r\n this.syncModel();\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n\r\n get tabindexValue(): string {\r\n return this.disabled ? null : '0';\r\n }\r\n\r\n @Input() label: string = null;\r\n @Input() name: string = null;\r\n private _disabled = false;\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(v: boolean) {\r\n if (v === this._disabled) {\r\n return;\r\n }\r\n this._disabled = v;\r\n this.syncModel();\r\n }\r\n @Input() inputId: string;\r\n\r\n literals = {\r\n en: {\r\n yesLabel: 'Yes',\r\n noLabel: 'No'\r\n },\r\n es: {\r\n yesLabel: 'Sí',\r\n noLabel: 'No'\r\n }\r\n };\r\n touched = false;\r\n\r\n @Output() valueChange = new EventEmitter<boolean>();\r\n\r\n constructor() {}\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n writeValue(value: any): void {\r\n this.value = !!value;\r\n }\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\r\n }\r\n ngAfterViewInit(): void {\r\n this.syncModel();\r\n }\r\n\r\n clicked(): void {\r\n if (!this.disabled) {\r\n this.value = !this.internalValue;\r\n this.markAsTouched();\r\n }\r\n }\r\n onKey(event: KeyboardEvent): void {\r\n if (event.key === KEY_SPACE && !this.disabled) {\r\n this.value = !this.internalValue;\r\n this.markAsTouched();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private syncModel(): void {\r\n if (this.ck) {\r\n this.ck.nativeElement.checked = this.internalValue;\r\n }\r\n }\r\n}\r\n","<div class=\"switch\">\r\n <div>\r\n @if (label) {\r\n <label [for]=\"inputId\">{{ label }}</label>\r\n }\r\n </div>\r\n @if (!disabled) {\r\n <div class=\"switch-item\" (click)=\"clicked()\">\r\n <input #ck [name]=\"name\" type=\"checkbox\" [id]=\"inputId\" />\r\n <div\r\n class=\"slider round\"\r\n [class.on]=\"value\"\r\n [class.disabled]=\"disabled\"\r\n [tabindex]=\"tabindexValue\"\r\n (keyup)=\"onKey($event)\"\r\n ></div>\r\n </div>\r\n }\r\n <div>\r\n @if (value) {\r\n <span class=\"checkbox-label\">{{ literals[lang].yesLabel }}</span>\r\n } @if (!value) {\r\n <span class=\"checkbox-label\">{{ literals[lang].noLabel }}</span>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n forwardRef\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport {\r\n addTimezoneOffset,\r\n hasValue,\r\n isInitialAndEmpty,\r\n isValidDate\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n@Component({\r\n selector: 'lux-datetime',\r\n templateUrl: './datetime.component.html',\r\n styleUrls: ['./datetime.component.scss'],\r\n imports: [FormsModule, CommonModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => DatetimeComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => DatetimeComponent)\r\n }\r\n ]\r\n})\r\nexport class DatetimeComponent\r\n implements OnInit, ControlValueAccessor, Validator\r\n{\r\n static idCounter = 0;\r\n\r\n @ViewChild('dateInput', { static: true }) dateInput: ElementRef;\r\n @ViewChild('timeInput', { static: true }) timeInput: ElementRef;\r\n\r\n touched = false;\r\n dirty = false;\r\n lastErrors: ValidationErrors | null = null;\r\n\r\n private _disabled: string | boolean;\r\n private _required: boolean;\r\n private _value: string;\r\n\r\n public dateValue?: string = undefined;\r\n public timeValue?: string = undefined;\r\n\r\n public userErrors = {\r\n en: {\r\n required: 'Required field.',\r\n min: 'Minimum value is $min.',\r\n max: 'Maximum value is $max.'\r\n },\r\n es: {\r\n required: 'El campo es obligatorio.',\r\n min: 'El valor mínimo es $min.',\r\n max: 'El valor máximo es $max.'\r\n }\r\n };\r\n\r\n @Input()\r\n public min?: string = '1900-01-01T00:00:00Z';\r\n @Input()\r\n public max?: string = '2100-01-01T00:00:00Z';\r\n @Input()\r\n public includeSeconds: boolean = true;\r\n @Input()\r\n public localTime: boolean = true;\r\n\r\n get className(): string {\r\n return this.checkClassName();\r\n }\r\n\r\n @Input() lang = languageDetector();\r\n @Input() public inlineErrors = false;\r\n @Input() public inputId: string;\r\n @Input('aria-label') public ariaLabel: string;\r\n @Input() public readonly: boolean | null = null;\r\n\r\n @Input()\r\n set disabled(v: string | boolean) {\r\n v = typeof v === 'string' && v !== 'false' ? true : v;\r\n this._disabled = v;\r\n }\r\n get disabled(): string | boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set required(v: boolean) {\r\n this._required = v;\r\n }\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n @Input()\r\n set value(v: string) {\r\n if (v === this._value) {\r\n return; // prevent events when there is no changes\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n const datetime = new Date(v);\r\n if (!v) {\r\n this._value = null;\r\n this.setDateInControl(null);\r\n this.setTimeInControl(null);\r\n } else if (!isValidDate(datetime)) {\r\n this._value = v;\r\n // we don't set value in control if the value is not valid\r\n // if we do, the content of the control changes and can erase what the user is typing\r\n } else {\r\n this._value = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n this.setValueInControl(datetime);\r\n }\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n onChange = (_value): void => {};\r\n onTouched = (): void => {};\r\n\r\n constructor() {}\r\n\r\n // ControlValueAccessor Interface implementation\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End of ControlValueAccessor Interface implementation\r\n\r\n private setDateInControl(date: string): void {\r\n // this.dateInput.nativeElement.value = date;\r\n this.dateValue = date;\r\n }\r\n private setTimeInControl(time: string): void {\r\n // this.timeInput.nativeElement.value = time;\r\n this.timeValue = time;\r\n }\r\n private setValueInControl(datetime: Date): void {\r\n const offsetDatetime = this.localTime\r\n ? addTimezoneOffset(datetime)\r\n : datetime;\r\n const offsetDatetimeString = offsetDatetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n this.setDateInControl(offsetDatetimeString.slice(0, 10)); // YYYY-MM-DD\r\n if (this.includeSeconds) {\r\n this.setTimeInControl(offsetDatetimeString.slice(11, 19)); // hh:mm:ss\r\n } else {\r\n this.setTimeInControl(offsetDatetimeString.slice(11, 16)); // hh:mm\r\n }\r\n }\r\n clear(): void {\r\n this.setDateInControl(null);\r\n this.setTimeInControl(null);\r\n this.value = null;\r\n }\r\n isClearable(): boolean {\r\n return hasValue(this.value);\r\n }\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n let result: ValidationErrors | null = null;\r\n\r\n if (\r\n this.required &&\r\n !hasValue(value) &&\r\n !hasValue(this.dateValue) &&\r\n !hasValue(this.timeValue)\r\n ) {\r\n result = result || {};\r\n result.required = { value, reason: 'Required field.' };\r\n }\r\n if (!hasValue(this.dateValue) && hasValue(this.timeValue)) {\r\n result = result || {};\r\n result.existsDate = {\r\n value,\r\n reason: 'Date not specified.'\r\n };\r\n }\r\n if (hasValue(this.dateValue) && !hasValue(this.timeValue)) {\r\n result = result || {};\r\n result.existsTime = {\r\n value,\r\n reason: 'Time not specified.'\r\n };\r\n }\r\n if (\r\n hasValue(this.min) &&\r\n hasValue(value) &&\r\n hasValue(this.dateValue) &&\r\n hasValue(this.timeValue) &&\r\n String(value).localeCompare(this.min) === -1\r\n ) {\r\n result = result || {};\r\n result.min = {\r\n value,\r\n min: this.min,\r\n reason: `Value is lower than minimum value: ${this.min}.`\r\n };\r\n }\r\n if (\r\n hasValue(this.max) &&\r\n hasValue(value) &&\r\n hasValue(this.dateValue) &&\r\n hasValue(this.timeValue) &&\r\n String(value).localeCompare(this.max) !== -1\r\n ) {\r\n result = result || {};\r\n result.max = {\r\n value,\r\n max: this.max,\r\n reason: `Value is greater than than maximum value: ${this.max}.`\r\n };\r\n }\r\n this.lastErrors = result;\r\n return result;\r\n }\r\n // End of Validator interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `datetime$${DatetimeComponent.idCounter++}`;\r\n this.setPatterns();\r\n }\r\n\r\n onLostFocus(): void {\r\n this.markAsTouched();\r\n }\r\n onKeyPress(event: KeyboardEvent): void {\r\n this.keyPress.emit(event);\r\n }\r\n\r\n onEventDatetime(newDate: string, newTime: string): void {\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n if (!newDate || !newTime) {\r\n this.value = null;\r\n } else {\r\n const newValue = `${newDate}T${newTime}`;\r\n const datetime = new Date(newValue);\r\n if (isValidDate(datetime)) {\r\n let datetimeString;\r\n if (this.localTime) {\r\n datetimeString = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n } else {\r\n datetimeString = addTimezoneOffset(datetime).toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n }\r\n if (this.includeSeconds) {\r\n this.value = datetimeString.slice(0, 19) + 'Z'; // YYYY-MM-DDThh:mm:ssZ\r\n } else {\r\n this.value = datetimeString.slice(0, 16) + 'Z'; // YYYY-MM-DDThh:mmZ\r\n }\r\n } else {\r\n this.value = newValue;\r\n }\r\n }\r\n }\r\n\r\n checkClassName(): string {\r\n return this.disabled\r\n ? this.readonly\r\n ? 'disabled readonly'\r\n : 'disabled'\r\n : this.readonly\r\n ? 'readonly'\r\n : '';\r\n }\r\n\r\n setPatterns(): void {\r\n this.min = this.min || '1900-01-01';\r\n this.max = this.max || '2100-01-01';\r\n }\r\n}\r\n","<input\r\n #dateInput\r\n class=\"rounded-left prefix\"\r\n [ngClass]=\"className\"\r\n type=\"date\"\r\n [id]=\"inputId + '$date'\"\r\n [(ngModel)]=\"dateValue\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n [placeholder]=\"\"\r\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\r\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (blur)=\"onLostFocus()\"\r\n/>\r\n<input\r\n #timeInput\r\n [class]=\"\r\n (disabled || readonly || !isClearable()) && localTime ? 'rounded-right' : ''\r\n \"\r\n [ngClass]=\"className\"\r\n type=\"time\"\r\n [id]=\"inputId + '$time'\"\r\n [(ngModel)]=\"timeValue\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n [placeholder]=\"\"\r\n [step]=\"includeSeconds ? 1 : 60\"\r\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\r\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (blur)=\"onLostFocus()\"\r\n/>\r\n@if (!localTime) {\r\n<div\r\n [class]=\"\r\n disabled || readonly || !isClearable()\r\n ? 'rounded-right postfix symbol'\r\n : 'postfix symbol'\r\n \"\r\n [ngClass]=\"className\"\r\n>\r\n <span>{{ localTime ? '' : 'UTC' }}</span>\r\n</div>\r\n} @if (!disabled && !readonly && isClearable()) {\r\n<button\r\n #clearButton\r\n type=\"button\"\r\n class=\"rounded-right postfix bordered icon-clear\"\r\n [id]=\"inputId + '$clear'\"\r\n (click)=\"clear()\"\r\n aria-label=\"clear\"\r\n></button>\r\n} @if (inlineErrors && lastErrors && (dirty || touched)) {\r\n<div class=\"alert\">\r\n @if (lastErrors.required) {\r\n <div>{{ userErrors[lang].required }}</div>\r\n } @if (lastErrors.min) {\r\n <div>{{ userErrors[lang].min.replace('$min', lastErrors.min.min) }}</div>\r\n } @if (lastErrors.max) {\r\n <div>{{ userErrors[lang].max.replace('$max', lastErrors.max.max) }}</div>\r\n }\r\n</div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n forwardRef\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR\r\n} from '@angular/forms';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n/** Filter component to query for objects. */\r\n@Component({\r\n selector: 'lux-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n imports: [CommonModule, FormsModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => FilterComponent)\r\n }\r\n ]\r\n})\r\nexport class FilterComponent\r\n implements ControlValueAccessor, OnInit, OnDestroy\r\n{\r\n static idCounter = 0;\r\n\r\n private touched = false;\r\n private _searchValue = '';\r\n\r\n @Input() disabled = false;\r\n /** id for the input. If left blank, it is autogenerated */\r\n @Input() inputId: string;\r\n /** Placeholder default text. */\r\n @Input() placeholder = '';\r\n /** Search value introduced by the user. */\r\n @Input()\r\n get searchValue(): string {\r\n return this._searchValue;\r\n }\r\n set searchValue(v: string) {\r\n v = (v || '').toString();\r\n if (v === this._searchValue) {\r\n return;\r\n }\r\n this.onChange(v);\r\n this._searchValue = v;\r\n }\r\n /** Search on type: (default true) Auto-search when user types in. */\r\n @Input() searchOnType = true;\r\n /** Custom aria label in case of not using a label */\r\n @Input('aria-label') ariaLabel: string;\r\n\r\n private debounceValue = 300; // 300 ms\r\n /** Debounce time in milliseconds. (defaults to 300 ms) */\r\n @Input()\r\n set debounce(val: number) {\r\n this.debounceValue = val;\r\n this.recreateObservable();\r\n }\r\n get debounce(): number {\r\n return this.debounceValue;\r\n }\r\n\r\n /** Search value changed by user. */\r\n @Output() searchValueChange = new EventEmitter<string>();\r\n\r\n searchValue$: Observable<string>;\r\n\r\n private subject = new Subject<string>();\r\n private sub: Subscription;\r\n\r\n constructor() {\r\n this.recreateObservable();\r\n }\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n writeValue(value: any): void {\r\n this.searchValue = (value || '').toString();\r\n }\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `filter$${FilterComponent.idCounter++}`;\r\n }\r\n ngOnDestroy(): void {\r\n this.freeSubscriptions();\r\n }\r\n clear(): void {\r\n this.searchValue = '';\r\n this.search();\r\n }\r\n search(): void {\r\n this.searchValueChange.emit(this.searchValue);\r\n }\r\n keyup(event: KeyboardEvent, newValue: string): void {\r\n this.markAsTouched();\r\n this.searchValue = newValue;\r\n if (event.key === 'Enter') {\r\n this.searchNow(this.searchValue);\r\n }\r\n if (this.searchOnType) {\r\n this.addEvent();\r\n }\r\n }\r\n onInputValueChange(newValue: string): void {\r\n this.markAsTouched();\r\n this.searchValue = newValue;\r\n }\r\n\r\n private recreateObservable(): void {\r\n this.searchValue$ = this.subject\r\n .asObservable()\r\n .pipe(debounceTime(this.debounce));\r\n\r\n this.freeSubscriptions();\r\n this.sub = this.searchValue$.subscribe((value) => {\r\n this.searchValueChange.emit(value);\r\n });\r\n }\r\n private freeSubscriptions(): void {\r\n if (this.sub) {\r\n this.sub.unsubscribe();\r\n this.sub = null;\r\n }\r\n }\r\n private searchNow(value: string): void {\r\n this.searchValueChange.emit(value);\r\n }\r\n private addEvent(): void {\r\n this.subject.next(this.searchValue);\r\n }\r\n}\r\n","<div class=\"filter\">\r\n <input\r\n #i0\r\n type=\"text\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [placeholder]=\"placeholder\"\r\n [id]=\"inputId\"\r\n [disabled]=\"disabled\"\r\n [value]=\"searchValue\"\r\n (valueChange)=\"onInputValueChange(i0.value)\"\r\n (keyup)=\"keyup($event, i0.value)\"\r\n />\r\n\r\n <button\r\n [class.hide]=\"!searchValue\"\r\n aria-label=\"Clear\"\r\n class=\"clear-indicator icon icon-clear\"\r\n type=\"button\"\r\n (click)=\"clear()\"\r\n ></button>\r\n @if (searchOnType) {\r\n <i class=\"search-indicator icon icon-search\"></i>\r\n } @if (!searchOnType) {\r\n <button\r\n class=\"btn-search\"\r\n type=\"button\"\r\n [disabled]=\"disabled\"\r\n (click)=\"search()\"\r\n >\r\n Search\r\n </button>\r\n }\r\n</div>\r\n","import { Injectable } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\n\nlet openLayersIsInstalled = false;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenLayerLoaderService {\n load(): Observable<boolean> {\n if ((window as any).ol) {\n return of(true);\n }\n\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\n\n if (!openLayersIsInstalled) {\n openLayersIsInstalled = true; // only try to install it once\n loadCss(openLayerCssUrl, () => {});\n return from(\n new Promise<boolean>((resolve, _) => {\n loadScript(openLayerJsUrl, () => resolve(true));\n })\n );\n }\n return of(true);\n }\n}\n\n/** Dynamically load a script from url and return a callback */\nconst loadScript = (url: string, callback: () => void): void => {\n const script: any = document.createElement('script');\n script.type = 'text/javascript';\n\n if (script.readyState) {\n // for old IE\n script.onreadystatechange = (): void => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // Others browsers\n script.onload = (): void => {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n};\n\n/** Dynamically load css from url and return a callback */\nconst loadCss = (url: string, callback: () => void): void => {\n const link: any = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.type = 'text/javascript';\n link.href = url;\n link.onload = (): void => {\n callback();\n };\n document.getElementsByTagName('head')[0].appendChild(link);\n};\n","/* eslint-disable no-self-assign */\r\n\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n inject\r\n} from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { GeoPoint } from './geopoint';\r\n\r\n// @dynamic\r\ndeclare const ol: any;\r\n\r\n@Component({\r\n selector: 'lux-map',\r\n templateUrl: './map.component.html',\r\n styleUrls: ['./map.component.scss'],\r\n imports: [CommonModule]\r\n})\r\nexport class MapComponent implements OnInit, AfterViewInit {\r\n static idCounter = 0;\r\n\r\n private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n private _map: any;\r\n\r\n @Input() mapId;\r\n\r\n _zoom: number;\r\n @Input()\r\n set zoom(zoom: number) {\r\n if (!isNaN(zoom)) {\r\n this._zoom = zoom;\r\n if (this._map) {\r\n this._map.getView().setZoom(zoom);\r\n }\r\n }\r\n }\r\n get zoom(): number {\r\n return this._zoom;\r\n }\r\n\r\n _center: GeoPoint;\r\n @Input()\r\n set center(center: GeoPoint) {\r\n if (center && center.coordinates && center.coordinates.length === 2) {\r\n this._center = center;\r\n if (this._map) {\r\n this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\r\n }\r\n }\r\n }\r\n get center(): GeoPoint {\r\n return this._center;\r\n }\r\n\r\n _readonly: boolean;\r\n @Input()\r\n set readonly(readonly: boolean) {\r\n if (!readonly) {\r\n if (this._map) {\r\n this._map.on('click', (args: any) => {\r\n // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\r\n const coordinates = ol.proj.toLonLat(args.coordinate);\r\n // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\r\n this.addMarkerAtCoordinates(coordinates);\r\n });\r\n this._map.on('pointermove', (event: any) => {\r\n const pixel = this._map.getEventPixel(event.originalEvent);\r\n const hit = this._map.hasFeatureAtPixel(pixel);\r\n this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\r\n });\r\n }\r\n } else {\r\n if (this._map) {\r\n this._map.on('click', (args: any) => {});\r\n this._map.on('pointermove', (event: any) => {});\r\n this._map.getViewport().style.cursor = 'grab';\r\n }\r\n }\r\n this._readonly = readonly;\r\n // reset marker coordinates so marker interactions can be created or recreated accordingly\r\n // to the changes to readonly\r\n this.markerCoordinates = this.markerCoordinates;\r\n }\r\n get readonly(): boolean {\r\n return this._readonly;\r\n }\r\n\r\n private _marker: any;\r\n private _markerInteraction: any;\r\n private _markerCoordinates: number[];\r\n @Input()\r\n private set markerCoordinates(markerCoordinates: number[]) {\r\n if (markerCoordinates && markerCoordinates.length === 2) {\r\n this._markerCoordinates = markerCoordinates;\r\n if (this._map) {\r\n this.addMarkerAtCoordinates(markerCoordinates);\r\n }\r\n } else {\r\n this._markerCoordinates = undefined;\r\n if (this._map) {\r\n this.removeMarker();\r\n }\r\n }\r\n }\r\n private get markerCoordinates(): number[] {\r\n return this._markerCoordinates;\r\n }\r\n @Input()\r\n set markerPoint(markerPoint: GeoPoint) {\r\n if (\r\n !markerPoint ||\r\n !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\r\n ) {\r\n this.markerCoordinates = undefined;\r\n } else {\r\n this.markerCoordinates = [\r\n +markerPoint.coordinates[0],\r\n +markerPoint.coordinates[1]\r\n ];\r\n }\r\n this.valueChange.emit(markerPoint);\r\n }\r\n get markerPoint(): GeoPoint {\r\n return {\r\n type: 'Point',\r\n coordinates: this.markerCoordinates\r\n };\r\n }\r\n @Output() valueChange = new EventEmitter<GeoPoint>();\r\n\r\n private _markerSource: any;\r\n private _markerStyle: any;\r\n\r\n constructor() {\r\n const olLoader = inject(OpenLayerLoaderService);\r\n\r\n olLoader.load().subscribe((_) => {\r\n // Initialize\r\n this._markerSource = new ol.source.Vector();\r\n this._markerStyle = new ol.style.Style({\r\n image: new ol.style.Icon({\r\n anchor: [0.5, 1],\r\n scale: 0.25,\r\n src: '/assets/img/marker.png'\r\n })\r\n });\r\n this.loaded$.next(true);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.loaded$.subscribe((loaded) => {\r\n if (loaded) {\r\n this.initMap();\r\n }\r\n });\r\n }\r\n private initMap(): void {\r\n this._map = new ol.Map({\r\n target: this.mapId,\r\n controls: ol.control.defaults({ attribution: false }),\r\n layers: [\r\n new ol.layer.Tile({\r\n source: new ol.source.OSM()\r\n }),\r\n new ol.layer.Vector({\r\n source: this._markerSource,\r\n style: this._markerStyle\r\n })\r\n ],\r\n view: new ol.View({\r\n center: ol.proj.fromLonLat(\r\n this.center !== undefined ? this.center.coordinates : [0, 0]\r\n ),\r\n zoom: this.zoom\r\n })\r\n });\r\n\r\n if (this.center === undefined || this.center === null) {\r\n // if the center is not set, we set its default value\r\n if ('geolocation' in navigator) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n this.center = {\r\n type: 'Point',\r\n coordinates: [position.coords.longitude, position.coords.latitude]\r\n };\r\n },\r\n (error) => {\r\n this.center = {\r\n type: 'Point',\r\n coordinates: [0, 0]\r\n };\r\n }\r\n );\r\n } else {\r\n this.center = {\r\n type: 'Point',\r\n coordinates: [0, 0]\r\n };\r\n }\r\n } else {\r\n // the center needs the map to be properly set, so if it was set before the map was initialized,\r\n // we set the center again to perform necessary adjustements\r\n this.center = this.center;\r\n }\r\n\r\n if (this.zoom === undefined || this.zoom === null) {\r\n // if the zoom is not set, we set its default value\r\n this.zoom = 18;\r\n } else {\r\n // the zoom needs the map to be properly set, so if it was set before the map was initialized,\r\n // we set the zoom again to perform necessary adjustements\r\n this.zoom = this.zoom;\r\n }\r\n\r\n if (this.readonly === undefined || this.readonly === null) {\r\n // if readonly is not set, we set its default value\r\n this.readonly = false;\r\n } else {\r\n // readonly needs the map to be properly set, so if it was set before the map was initialized,\r\n // we set readonly again to perform necessary adjustements\r\n this.readonly = this.readonly;\r\n }\r\n\r\n if (\r\n this.markerCoordinates !== undefined &&\r\n this.markerCoordinates !== null\r\n ) {\r\n // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\r\n // we set the marker coordinates again to perform necessary adjustements\r\n this.markerCoordinates = this.markerCoordinates;\r\n }\r\n }\r\n\r\n private addMarkerAtCoordinates(coordinates: number[]): void {\r\n if (coordinates && coordinates.length === 2) {\r\n if (this._marker !== undefined) {\r\n this.removeMarker();\r\n }\r\n this._marker = new ol.Feature({\r\n geometry: new ol.geom.Point(\r\n // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\r\n ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\r\n )\r\n });\r\n this._markerSource.addFeature(this._marker);\r\n this._markerCoordinates = this.getMarkerCoordinates();\r\n\r\n if (!this.readonly) {\r\n const dragInteraction = new ol.interaction.Modify({\r\n features: new ol.Collection([this._marker]),\r\n style: this._markerStyle,\r\n pixelTolerance: 50,\r\n hitDetection: true\r\n });\r\n this._markerInteraction = dragInteraction;\r\n this._map.addInteraction(dragInteraction);\r\n }\r\n\r\n this._marker.on(\r\n 'change',\r\n () => {\r\n this._markerCoordinates = this.getMarkerCoordinates();\r\n },\r\n this._marker\r\n );\r\n }\r\n }\r\n\r\n private removeMarker(): void {\r\n if (this._marker !== undefined) {\r\n this._markerSource.removeFeature(this._marker);\r\n this._marker = undefined;\r\n }\r\n if (this._markerInteraction !== undefined) {\r\n this._map.getInteractions().pop();\r\n this._markerInteraction = undefined;\r\n }\r\n }\r\n\r\n private getMarkerCoordinates(): number[] | null {\r\n if (this._marker === undefined || this._marker == null) {\r\n return this._marker;\r\n }\r\n const coordinates = this._marker.getGeometry().getCoordinates();\r\n // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\r\n return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\r\n }\r\n\r\n onResize(): void {\r\n if (this._map) {\r\n this._map.updateSize();\r\n }\r\n }\r\n}\r\n","<div [id]=\"mapId\" class=\"map\" (resized)=\"onResize()\"></div>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'lux-modal-backdrop',\r\n template: ''\r\n})\r\nexport class LuxModalBackdropComponent {\r\n @Input() backdropClass: string;\r\n\r\n @HostBinding('class') class = 'modal-backdrop fade show';\r\n @HostBinding('style') style = 'z-index: 1050';\r\n}\r\n","import { Injectable } from '@angular/core';\n\nexport interface LuxModalOptions {\n ariaDescribedBy?: string;\n ariaLabelledBy?: string;\n backdrop?: boolean;\n keyboard?: boolean;\n windowClass?: string;\n backdropClass?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LuxModalConfig implements LuxModalOptions {\n backdrop = true;\n}\n","import { ComponentRef } from '@angular/core';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef } from './util';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\n\nexport class ActiveModal {\n close(result?: any): void {}\n dismiss(reason?: any): void {}\n}\n\nexport class ModalRef {\n private _resolve: (result?: any) => void;\n private _reject: (reason?: any) => void;\n\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get componentInstance(): any {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n */\n result: Promise<any>;\n\n constructor(\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\n private _contentRef: ContentRef,\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\n private _beforeDismiss?: () => any\n ) {\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n this.dismiss(reason);\n });\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result?: any): void {\n if (this._windowCmptRef) {\n if (this._resolve) {\n this._resolve(result);\n }\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n if (this._reject) {\n this._reject(reason);\n }\n this._removeModalElements();\n }\n\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(\n (result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n () => {}\n );\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc\n}\n","import { ComponentRef, ViewRef } from '@angular/core';\nimport { Observable, fromEvent } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nexport const FOCUS = 'focus';\n\nexport enum Key {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40\n}\n\nexport const isDefined = (value: any): boolean =>\n value !== undefined && value !== null;\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>\n ) {}\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport const getFocusableBoundaryElements = (\n element: HTMLElement\n): HTMLElement[] => {\n const list: HTMLElement[] = Array.from(\n element.querySelectorAll(\n FOCUSABLE_ELEMENTS_SELECTOR\n ) as NodeListOf<HTMLElement>\n ).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n};\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const focusTrap = (\n element: HTMLElement,\n stopFocusTrap$: Observable<any>,\n refocusOnClick = false\n): void => {\n // last focused element\n const lastFocusedElement$ = fromEvent<FocusEvent>(element, 'focusin').pipe(\n takeUntil(stopFocusTrap$),\n map((e) => e.target)\n );\n\n // 'tab' / 'shift+tab' stream\n fromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n takeUntil(stopFocusTrap$),\n\n filter((e) => e.which === Key.Tab),\n\n withLatestFrom(lastFocusedElement$)\n )\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n\n if (\n (focusedElement === first || focusedElement === element) &&\n tabEvent.shiftKey\n ) {\n last.focus();\n tabEvent.preventDefault();\n }\n\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(\n takeUntil(stopFocusTrap$),\n withLatestFrom(lastFocusedElement$),\n map((arr) => arr[1] as HTMLElement)\n )\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n};\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n inject\r\n} from '@angular/core';\r\n\r\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\r\nimport { FOCUS, getFocusableBoundaryElements } from './util';\r\n\r\n@Component({\r\n selector: 'lux-modal-window',\r\n imports: [CommonModule],\r\n template: `\r\n <div class=\"modal-dialog\" role=\"document\">\r\n <div class=\"modal-content\"><ng-content></ng-content></div>\r\n </div>\r\n `\r\n})\r\nexport class LuxModalWindowComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n private _document = inject(DOCUMENT);\r\n private _elRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n private _elWithFocus: Element; // element that is focused prior to modal opening\r\n\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() backdrop: boolean | string = false;\r\n @Input() keyboard = true;\r\n @Input() windowClass: string;\r\n\r\n @Output() dismissEvent = new EventEmitter();\r\n\r\n @HostBinding('class') get class(): string {\r\n return `modal ${this.windowClass || ''}`;\r\n }\r\n @HostBinding('attr.role') role = 'dialog';\r\n @HostBinding('tabindex') tabindex = '-1';\r\n @HostBinding('attr.aria-modal') ariamodal = true;\r\n @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\r\n return this.ariaLabelledBy;\r\n }\r\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\r\n return this.ariaDescribedBy;\r\n }\r\n @HostListener('click', ['$event.target']) backdropClick(\r\n btn: HTMLElement\r\n ): void {\r\n if (this.backdrop === true && this._elRef.nativeElement === btn) {\r\n this.dismiss(ModalDismissReasons.BackdropClick);\r\n }\r\n }\r\n @HostListener('keyup.esc', ['$event']) escKey(event): void {\r\n if (this.keyboard && !event.defaultPrevented) {\r\n this.dismiss(ModalDismissReasons.Esc);\r\n }\r\n }\r\n\r\n dismiss(reason): void {\r\n this.dismissEvent.emit(reason);\r\n }\r\n\r\n ngOnInit(): void {\r\n this._elWithFocus = this._document.activeElement;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\r\n const firstFocusable = getFocusableBoundaryElements(\r\n this._elRef.nativeElement\r\n )[0];\r\n\r\n const elementToFocus = firstFocusable || this._elRef.nativeElement;\r\n elementToFocus.focus();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n const body = this._document.body;\r\n const elWithFocus = this._elWithFocus;\r\n\r\n let elementToFocus;\r\n if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\r\n elementToFocus = elWithFocus;\r\n } else {\r\n elementToFocus = body;\r\n }\r\n elementToFocus.focus();\r\n this._elWithFocus = null;\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Injectable,\r\n Injector,\r\n RendererFactory2,\r\n TemplateRef,\r\n inject\r\n} from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { LuxModalBackdropComponent } from './modal-backdrop';\r\nimport { LuxModalConfig, LuxModalOptions } from './modal-config';\r\nimport { ActiveModal, ModalRef } from './modal-ref';\r\nimport { LuxModalWindowComponent } from './modal-window';\r\nimport { ContentRef, focusTrap, isDefined } from './util';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ModalStack {\r\n private _applicationRef = inject(ApplicationRef);\r\n private _document = inject(DOCUMENT);\r\n private _injector = inject(Injector);\r\n private _rendererFactory = inject(RendererFactory2);\r\n private modalConfig = inject(LuxModalConfig);\r\n\r\n private _activeWindowCmptHasChanged = new Subject();\r\n private _modalRefs: ModalRef[] = [];\r\n private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\r\n private _ariaHiddenValues: Map<Element, string> = new Map();\r\n private _backdropAttributes = ['backdropClass'];\r\n private _windowAttributes = [\r\n 'ariaLabelledBy',\r\n 'backdrop',\r\n 'centered',\r\n 'keyboard',\r\n 'scrollable',\r\n 'size',\r\n 'windowClass'\r\n ];\r\n\r\n constructor() {\r\n this._activeWindowCmptHasChanged.subscribe(() => {\r\n if (this._windowCmpts.length) {\r\n const activeWindowCmpt =\r\n this._windowCmpts[this._windowCmpts.length - 1];\r\n focusTrap(\r\n activeWindowCmpt.location.nativeElement,\r\n this._activeWindowCmptHasChanged\r\n );\r\n this._revertAriaHidden();\r\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\r\n }\r\n });\r\n }\r\n\r\n open(\r\n moduleCFR: ComponentFactoryResolver,\r\n content: any,\r\n options: LuxModalOptions\r\n ): ModalRef {\r\n const config = Object.assign({}, this.modalConfig, options);\r\n const containerEl = this._document.body;\r\n const renderer = this._rendererFactory.createRenderer(null, null);\r\n const removeBodyClass = (): void => {\r\n if (!this._modalRefs.length) {\r\n renderer.removeClass(this._document.body, 'modal-open');\r\n this._revertAriaHidden();\r\n }\r\n };\r\n const activeModal = new ActiveModal();\r\n const contentRef = this.getContentRef(moduleCFR, content, activeModal);\r\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\r\n config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\r\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\r\n this._attachWindowComponent(moduleCFR, containerEl, contentRef);\r\n const modalRef: ModalRef = new ModalRef(\r\n windowCmptRef,\r\n contentRef,\r\n backdropCmptRef\r\n );\r\n this._registerModalRef(modalRef);\r\n this._registerWindowCmpt(windowCmptRef);\r\n modalRef.result.then(removeBodyClass, removeBodyClass);\r\n activeModal.close = (result: any): void => {\r\n modalRef.close(result);\r\n };\r\n activeModal.dismiss = (reason: any): void => {\r\n modalRef.dismiss(reason);\r\n };\r\n\r\n this._applyWindowOptions(windowCmptRef.instance, config);\r\n if (this._modalRefs.length === 1) {\r\n renderer.addClass(this._document.body, 'modal-open');\r\n }\r\n if (backdropCmptRef && backdropCmptRef.instance) {\r\n this._applyBackgroundOptions(backdropCmptRef.instance, config);\r\n backdropCmptRef.changeDetectorRef.detectChanges();\r\n }\r\n windowCmptRef.changeDetectorRef.detectChanges();\r\n\r\n return modalRef;\r\n }\r\n\r\n private _applyWindowOptions(\r\n windowInstance: LuxModalWindowComponent,\r\n config: LuxModalOptions\r\n ): void {\r\n this._windowAttributes.forEach((optionName: string) => {\r\n if (isDefined(config[optionName])) {\r\n windowInstance[optionName] = config[optionName];\r\n }\r\n });\r\n }\r\n\r\n private _applyBackgroundOptions(\r\n backgroudInstance: LuxModalBackdropComponent,\r\n config: LuxModalOptions\r\n ): void {\r\n this._backdropAttributes.forEach((optionName: string) => {\r\n if (isDefined(config[optionName])) {\r\n backgroudInstance[optionName] = config[optionName];\r\n }\r\n });\r\n }\r\n\r\n private _revertAriaHidden(): void {\r\n this._ariaHiddenValues.forEach((value, element) => {\r\n if (value) {\r\n element.setAttribute('aria-hidden', value);\r\n } else {\r\n element.removeAttribute('aria-hidden');\r\n }\r\n });\r\n this._ariaHiddenValues.clear();\r\n }\r\n\r\n private getContentRef(\r\n moduleCFR: ComponentFactoryResolver,\r\n content: any,\r\n activeModal: ActiveModal\r\n ): ContentRef {\r\n if (content instanceof TemplateRef) {\r\n return this.createFromTemplateRef(content, activeModal);\r\n }\r\n }\r\n\r\n private createFromTemplateRef(\r\n content: TemplateRef<any>,\r\n activeModal: ActiveModal\r\n ): ContentRef {\r\n const context = {\r\n $implicit: activeModal,\r\n\r\n close(result): void {\r\n activeModal.close(result);\r\n },\r\n\r\n dismiss(reason): void {\r\n activeModal.dismiss(reason);\r\n }\r\n };\r\n const viewRef = content.createEmbeddedView(context);\r\n this._applicationRef.attachView(viewRef);\r\n return new ContentRef([viewRef.rootNodes], viewRef);\r\n }\r\n\r\n private _attachBackdrop(\r\n moduleCFR: ComponentFactoryResolver,\r\n containerEl: any\r\n ): ComponentRef<LuxModalBackdropComponent> {\r\n const backdropFactory = moduleCFR.resolveComponentFactory(\r\n LuxModalBackdropComponent\r\n );\r\n const backdropCmptRef = backdropFactory.create(this._injector);\r\n this._applicationRef.attachView(backdropCmptRef.hostView);\r\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\r\n return backdropCmptRef;\r\n }\r\n\r\n private _attachWindowComponent(\r\n moduleCFR: ComponentFactoryResolver,\r\n containerEl: any,\r\n contentRef: any\r\n ): ComponentRef<LuxModalWindowComponent> {\r\n const windowFactory = moduleCFR.resolveComponentFactory(\r\n LuxModalWindowComponent\r\n );\r\n const windowCmptRef = windowFactory.create(\r\n this._injector,\r\n contentRef.nodes\r\n );\r\n this._applicationRef.attachView(windowCmptRef.hostView);\r\n containerEl.appendChild(windowCmptRef.location.nativeElement);\r\n return windowCmptRef;\r\n }\r\n\r\n private _registerModalRef(modalRef: ModalRef): void {\r\n const unregisterModalRef = (): void => {\r\n const index = this._modalRefs.indexOf(modalRef);\r\n if (index > -1) {\r\n this._modalRefs.splice(index, 1);\r\n }\r\n };\r\n this._modalRefs.push(modalRef);\r\n modalRef.result.then(unregisterModalRef, unregisterModalRef);\r\n }\r\n\r\n private _registerWindowCmpt(\r\n windowCmpt: ComponentRef<LuxModalWindowComponent>\r\n ): void {\r\n this._windowCmpts.push(windowCmpt);\r\n this._activeWindowCmptHasChanged.next(null);\r\n\r\n windowCmpt.onDestroy(() => {\r\n const index = this._windowCmpts.indexOf(windowCmpt);\r\n if (index > -1) {\r\n this._windowCmpts.splice(index, 1);\r\n this._activeWindowCmptHasChanged.next(null);\r\n }\r\n });\r\n }\r\n\r\n private _setAriaHidden(element: Element): void {\r\n const parent = element.parentElement;\r\n if (parent && element !== this._document.body) {\r\n Array.from(parent.children).forEach((sibling) => {\r\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\r\n this._ariaHiddenValues.set(\r\n sibling,\r\n sibling.getAttribute('aria-hidden')\r\n );\r\n sibling.setAttribute('aria-hidden', 'true');\r\n }\r\n });\r\n this._setAriaHidden(parent);\r\n }\r\n }\r\n}\r\n","import {\r\n ComponentFactoryResolver,\r\n Injectable,\r\n TemplateRef,\r\n inject\r\n} from '@angular/core';\r\nimport { LuxModalOptions } from './modal-config';\r\nimport { ModalRef } from './modal-ref';\r\nimport { ModalStack } from './modal-stack';\r\n\r\n/**\r\n * A service that it allow open an close modal components\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class ModalService {\r\n private modalStack = inject(ModalStack);\r\n private moduleCFR = inject(ComponentFactoryResolver);\r\n\r\n /**Open a modal component\r\n * @param content TemplateRef\r\n */\r\n open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\r\n return this.modalStack.open(this.moduleCFR, content, options);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n map,\r\n switchMap\r\n} from 'rxjs/operators';\r\nimport { DataSource } from '../datasource';\r\nimport { GeoPoint } from '../map/geopoint';\r\n\r\ninterface SearchResult {\r\n place_id: number;\r\n lat: number;\r\n lon: number;\r\n display_name: string;\r\n icon: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GeolocationService {\r\n private http = inject(HttpClient);\r\n\r\n private debouncePeriodMs = 300; // ms\r\n private cacheSize = 20;\r\n private lastQueriesWithResults = new Map<string, SearchResult[]>();\r\n private lastQueriesLru: string[] = [];\r\n private currentSearch$: Subject<string>;\r\n private currentQuery$: Observable<SearchResult[]>;\r\n\r\n constructor() {\r\n this.currentSearch$ = new Subject<string>();\r\n\r\n const typed$ = this.currentSearch$\r\n .asObservable()\r\n .pipe(distinctUntilChanged());\r\n\r\n this.currentQuery$ = typed$.pipe(\r\n debounceTime(this.debouncePeriodMs),\r\n\r\n switchMap((currentQuery) => {\r\n const data = this.getFromCache(currentQuery);\r\n if (data !== undefined) {\r\n return of(data);\r\n }\r\n // Nominatim search documentation:\r\n // https://nominatim.org/release-docs/develop/api/Search/\r\n const url =\r\n 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\r\n encodeURIComponent(currentQuery);\r\n const headers = {\r\n 'Content-Type': 'application/json'\r\n };\r\n this.addToCache(currentQuery, []);\r\n\r\n return this.http.get(url, { headers }).pipe(\r\n map((response) => {\r\n const searchResults = response as unknown as SearchResult[];\r\n const uniqueResults = distinct(searchResults);\r\n return this.addToCache(currentQuery, uniqueResults);\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n searchGeolocation(query: string): Observable<SearchResult[]> {\r\n this.currentSearch$.next(query);\r\n return this.currentQuery$;\r\n }\r\n\r\n getLabels(\r\n instance: GeolocationService,\r\n keys: GeoPoint[]\r\n ): Observable<DataSource<GeoPoint, string>> {\r\n const searchResults = instance.lastQueriesWithResults\r\n .get(instance.getLatestQuery())\r\n .filter((searchResult) => samePosition(searchResult, keys));\r\n return of(\r\n searchResults.map((searchResult) => {\r\n const key: GeoPoint = {\r\n type: 'Point',\r\n coordinates: [searchResult.lon, searchResult.lat]\r\n };\r\n return {\r\n key,\r\n label: searchResult.display_name\r\n };\r\n })\r\n );\r\n }\r\n\r\n getData(\r\n instance: GeolocationService,\r\n search: string\r\n ): Observable<DataSource<GeoPoint, string>> {\r\n return instance.searchGeolocation(search).pipe(\r\n map((searchResults) =>\r\n searchResults.map((searchResult) => {\r\n const key: GeoPoint = {\r\n type: 'Point',\r\n coordinates: [searchResult.lon, searchResult.lat]\r\n };\r\n const label = searchResult.display_name;\r\n return { key, label };\r\n })\r\n )\r\n );\r\n }\r\n\r\n // Cache implemementation ---\r\n private getFromCache(query: string): SearchResult[] {\r\n if (this.lastQueriesWithResults.has(query)) {\r\n return this.lastQueriesWithResults.get(query);\r\n }\r\n return undefined;\r\n }\r\n private addToCache(query: string, data: SearchResult[]): SearchResult[] {\r\n if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\r\n const deletedQuery = this.lastQueriesLru[0];\r\n this.revomeFromCache(deletedQuery);\r\n }\r\n this.lastQueriesWithResults.set(query, data);\r\n this.lastQueriesLru.push(query);\r\n return data;\r\n }\r\n private revomeFromCache(query: string): void {\r\n this.lastQueriesWithResults.delete(query);\r\n const index = this.lastQueriesLru.findIndex((it) => it === query);\r\n this.lastQueriesLru.splice(index, 1);\r\n }\r\n private getLatestQuery(): string | null {\r\n return this.lastQueriesLru.length\r\n ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\r\n : null;\r\n }\r\n // End cache implemementation ---\r\n}\r\n\r\nconst samePosition = (\r\n searchResult: SearchResult,\r\n keys: GeoPoint[]\r\n): boolean => {\r\n let found = false;\r\n keys.forEach((item) => {\r\n if (\r\n searchResult.lon === item.coordinates[0] &&\r\n searchResult.lat === item.coordinates[1]\r\n ) {\r\n found = true;\r\n }\r\n });\r\n return found;\r\n};\r\n\r\nconst distinct = (data: SearchResult[]): SearchResult[] => {\r\n const unique: { [key: string]: number } = {};\r\n return data.filter((r) => {\r\n if (unique[r.display_name]) {\r\n return false;\r\n }\r\n unique[r.display_name] = 1;\r\n return true;\r\n });\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ReactiveFormsModule,\r\n ValidationErrors\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\r\nimport { DataSource } from '../datasource';\r\nimport {\r\n exists,\r\n hasValue,\r\n isInitialAndEmpty,\r\n isValidNumber,\r\n roundToMultipleOf\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\nimport { GeoPoint } from '../map/geopoint';\r\nimport { MapComponent } from '../map/map.component';\r\nimport { ModalService } from '../modal/modal.service';\r\nimport { GeolocationService } from './geolocation.service';\r\n\r\n@Component({\r\n selector: 'lux-geolocation',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AutocompleteComponent,\r\n MapComponent\r\n ],\r\n templateUrl: './geolocation.component.html',\r\n styleUrls: ['./geolocation.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => GeolocationComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => GeolocationComponent)\r\n }\r\n ]\r\n})\r\nexport class GeolocationComponent implements OnInit {\r\n private modalService = inject(ModalService);\r\n locationService = inject(GeolocationService);\r\n\r\n static idCounter = 0;\r\n\r\n @ViewChild('latitude', { static: true }) latitude: ElementRef;\r\n @ViewChild('longitude', { static: true }) longitude: ElementRef;\r\n @ViewChild('map', { static: false }) map?: ElementRef;\r\n\r\n touched = false;\r\n dirty = false;\r\n lastErrors: ValidationErrors | null = null;\r\n\r\n private _disabled: string | boolean;\r\n private _required: boolean;\r\n private _value: any;\r\n\r\n latitudeValue?: number = undefined;\r\n longitudeValue?: number = undefined;\r\n\r\n isValidNumber = isValidNumber;\r\n\r\n i18n = {\r\n en: {\r\n lat: 'latitude',\r\n lon: 'longitude',\r\n selectLocation: 'Select location',\r\n location: 'Location',\r\n selectAction: 'Select',\r\n cancelAction: 'Cancel',\r\n closeAction: 'Close',\r\n typeToSearch: 'type to search',\r\n cardinalPoints: {\r\n north: 'N',\r\n south: 'S',\r\n east: 'E',\r\n west: 'W'\r\n },\r\n userErrors: {\r\n required: 'Required field.',\r\n minLatitude: 'Minimum latitude is $minLatitude.',\r\n maxLatitude: 'Maximum latitude is $maxLatitude.',\r\n minLongitude: 'Minimum longitude is $minLongitude.',\r\n maxLongitude: 'Maximum longitude is $maxLongitude.'\r\n }\r\n },\r\n es: {\r\n lat: 'latitud',\r\n lon: 'longitud',\r\n selectLocation: 'Seleccione ubicación',\r\n location: 'Ubicación',\r\n selectAction: 'Seleccionar',\r\n cancelAction: 'Cancelar',\r\n closeAction: 'Cerrar',\r\n typeToSearch: 'escribe para buscar',\r\n cardinalPoints: {\r\n north: 'N',\r\n south: 'S',\r\n east: 'E',\r\n west: 'O'\r\n },\r\n userErrors: {\r\n required: 'El campo es obligatorio.',\r\n minLatitude: 'La latitud mínima es $minLatitude.',\r\n maxLatitude: 'La latitud máxima es $maxLatitude.',\r\n minLongitude: 'La longitud mínima es $minLongitude.',\r\n maxLongitude: 'La longitud máxima es $maxLongitude.'\r\n }\r\n }\r\n };\r\n\r\n @Input()\r\n public minLatitude: number;\r\n @Input()\r\n public maxLatitude: number;\r\n @Input()\r\n public minLongitude: number;\r\n @Input()\r\n public maxLongitude: number;\r\n @Input()\r\n public step: number;\r\n @Input()\r\n public zoom: number;\r\n\r\n get className(): string {\r\n return this.checkClassName();\r\n }\r\n\r\n @Input() lang = languageDetector();\r\n @Input() public inlineErrors = false;\r\n @Input() public inputId: string;\r\n @Input('aria-label') public ariaLabel: string;\r\n @Input() public readonly: boolean | null = null;\r\n\r\n @Input()\r\n set disabled(v: string | boolean) {\r\n v = typeof v === 'string' && v !== 'false' ? true : v;\r\n this._disabled = v;\r\n }\r\n get disabled(): string | boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set required(v: boolean) {\r\n this._required = v;\r\n }\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n @Input()\r\n set value(v: GeoPoint) {\r\n if (v === this._value) {\r\n return; // prevent events when there is no changes\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n if (\r\n v &&\r\n v.coordinates &&\r\n v.coordinates.length === 2 &&\r\n exists(v.coordinates[0] && exists(v.coordinates[1]))\r\n ) {\r\n this._value = v;\r\n this.setLatitudeInControl(v.coordinates[1]);\r\n this.setLongitudeInControl(v.coordinates[0]);\r\n } else if (!v) {\r\n this._value = null;\r\n this.setLatitudeInControl(null);\r\n this.setLongitudeInControl(null);\r\n } else {\r\n this._value = v;\r\n // we don't set value in control if the value is not valid\r\n // if we do, the content of the control changes and can erase what the user is typing\r\n }\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n get value(): GeoPoint {\r\n return this._value;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<GeoPoint>();\r\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n onChange = (value: any): void => {};\r\n onTouched = (): void => {};\r\n\r\n // ControlValueAccessor Interface implementation\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End of ControlValueAccessor Interface implementation\r\n\r\n private setLatitudeInControl(latitude: number): void {\r\n // this.latitude.nativeElement.value = latitude;\r\n this.latitudeValue = latitude;\r\n }\r\n private setLongitudeInControl(longitude: number): void {\r\n // this.longitude.nativeElement.value = longitude;\r\n this.longitudeValue = longitude;\r\n }\r\n clear(): void {\r\n this.setLatitudeInControl(null);\r\n this.setLongitudeInControl(null);\r\n this.value = null;\r\n }\r\n isClearable(): boolean {\r\n return (\r\n isValidNumber(this.latitudeValue) || isValidNumber(this.longitudeValue)\r\n );\r\n }\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n let result: ValidationErrors | null = null;\r\n\r\n if (\r\n this.required &&\r\n !hasValue(value) &&\r\n !exists(this.latitudeValue) &&\r\n !exists(this.longitudeValue)\r\n ) {\r\n result = result || {};\r\n result.required = { value, reason: 'Required field.' };\r\n }\r\n if (!exists(this.latitudeValue) && exists(this.longitudeValue)) {\r\n result = result || {};\r\n result.existsLatitude = {\r\n value,\r\n reason: 'Latitude not specified.'\r\n };\r\n }\r\n if (exists(this.latitudeValue) && !exists(this.longitudeValue)) {\r\n result = result || {};\r\n result.existsLongitude = {\r\n value,\r\n reason: 'Longitude not specified.'\r\n };\r\n }\r\n if (exists(this.minLatitude) && this.latitudeValue < this.minLatitude) {\r\n result = result || {};\r\n result.minLatitude = {\r\n value,\r\n min: this.minLatitude,\r\n reason: `Latitude is lower than minimum value: ${this.minLatitude}.`\r\n };\r\n }\r\n if (exists(this.maxLatitude) && this.latitudeValue > this.maxLatitude) {\r\n result = result || {};\r\n result.maxLatitude = {\r\n value,\r\n max: this.maxLatitude,\r\n reason: `Latitude is higher than maximum value: ${this.maxLatitude}.`\r\n };\r\n }\r\n if (exists(this.minLongitude) && this.longitudeValue < this.minLongitude) {\r\n result = result || {};\r\n result.minLongitude = {\r\n value,\r\n min: this.minLongitude,\r\n reason: `Longitude is lower than minimum value: ${this.minLongitude}.`\r\n };\r\n }\r\n if (exists(this.maxLongitude) && this.longitudeValue > this.maxLongitude) {\r\n result = result || {};\r\n result.maxLongitude = {\r\n value,\r\n max: this.maxLongitude,\r\n reason: `Longitude is higher than maximum value: ${this.maxLongitude}.`\r\n };\r\n }\r\n this.lastErrors = result;\r\n return result;\r\n }\r\n // End of Validator interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `geolocation$${GeolocationComponent.idCounter++}`;\r\n this.setPatterns();\r\n }\r\n\r\n roundToStepAndUpdateLatitudeAndLongitude(\r\n newLatitudeAndLongitude: number[]\r\n ): void {\r\n const newLatitude = roundToMultipleOf(\r\n newLatitudeAndLongitude[1],\r\n this.step\r\n );\r\n const newLongitude = roundToMultipleOf(\r\n newLatitudeAndLongitude[0],\r\n this.step\r\n );\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n if (!exists(newLatitudeAndLongitude)) {\r\n this.value = null;\r\n }\r\n this.value = {\r\n type: 'Point',\r\n coordinates: [newLongitude, newLatitude]\r\n };\r\n }\r\n\r\n onLostFocus(): void {\r\n this.markAsTouched();\r\n }\r\n onEventLatitude(newLatitude: string): void {\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n const newLatitudeValue = isValidNumber(newLatitude) ? +newLatitude : null;\r\n if (\r\n !(exists(this.value) && exists(this.value.coordinates[0])) &&\r\n !exists(newLatitudeValue)\r\n ) {\r\n this.value = null;\r\n } else {\r\n this.value = {\r\n type: 'Point',\r\n coordinates: [\r\n this.value ? this.value.coordinates[0] : undefined,\r\n newLatitudeValue\r\n ]\r\n };\r\n }\r\n this.markAsTouched();\r\n }\r\n onEventLongitude(newLongitude: string): void {\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n const newLongitudeValue = isValidNumber(newLongitude)\r\n ? +newLongitude\r\n : null;\r\n if (\r\n !exists(newLongitudeValue) &&\r\n !(exists(this.value) && exists(this._value.coordinates[1]))\r\n ) {\r\n this.value = null;\r\n } else {\r\n this.value = {\r\n type: 'Point',\r\n coordinates: [\r\n newLongitudeValue,\r\n this.value ? this.value.coordinates[1] : undefined\r\n ]\r\n };\r\n }\r\n this.markAsTouched();\r\n }\r\n onKeyPress(event: KeyboardEvent): void {\r\n this.keyPress.emit(event);\r\n }\r\n\r\n checkClassName(): string {\r\n return this.disabled\r\n ? this.readonly\r\n ? 'disabled readonly'\r\n : 'disabled'\r\n : this.readonly\r\n ? 'readonly'\r\n : '';\r\n }\r\n\r\n openModalMap(modal: TemplateRef<any>): void {\r\n this.modalService.open(modal).result.then(\r\n (result) => {\r\n if (result !== 'cancel') {\r\n this.roundToStepAndUpdateLatitudeAndLongitude(result);\r\n }\r\n },\r\n (_) => {}\r\n );\r\n }\r\n\r\n onSearchLocationChanged(newValue: GeoPoint, map: any): void {\r\n map.markerPoint = newValue;\r\n map.center = map.markerPoint;\r\n }\r\n\r\n get mapTitle(): string {\r\n return this._disabled || !!this.readonly\r\n ? this.i18n[this.lang].location\r\n : this.i18n[this.lang].selectLocation;\r\n }\r\n\r\n get self(): GeolocationComponent {\r\n return this;\r\n }\r\n\r\n getLabels(\r\n instance: GeolocationComponent,\r\n keys: GeoPoint[]\r\n ): Observable<DataSource<GeoPoint, string>> {\r\n return instance.locationService.getLabels(instance.locationService, keys);\r\n }\r\n\r\n getData(\r\n instance: GeolocationComponent,\r\n search: string\r\n ): Observable<DataSource<GeoPoint, string>> {\r\n return instance.locationService.getData(instance.locationService, search);\r\n }\r\n\r\n setPatterns(): void {\r\n this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\r\n this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\r\n this.minLatitude = this.minLatitude || -90;\r\n this.maxLatitude = this.maxLatitude || +90;\r\n this.minLongitude = this.minLongitude || -180;\r\n this.maxLongitude = this.maxLongitude || +180;\r\n }\r\n}\r\n","<input\r\n #latitude\r\n class=\"rounded-left prefix\"\r\n [ngClass]=\"className\"\r\n type=\"number\"\r\n [id]=\"inputId + '$latitude'\"\r\n [(ngModel)]=\"latitudeValue\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n [attr.min]=\"\r\n minLatitude !== undefined && minLatitude !== null\r\n ? minLatitude.toString()\r\n : undefined\r\n \"\r\n [attr.max]=\"\r\n maxLatitude !== undefined && maxLatitude !== null\r\n ? maxLatitude.toString()\r\n : undefined\r\n \"\r\n [attr.step]=\"\r\n step !== undefined && step !== null ? step.toString() : undefined\r\n \"\r\n [placeholder]=\"i18n[lang].lat\"\r\n (keyup)=\"onEventLatitude(latitude.value)\"\r\n (change)=\"onEventLatitude(latitude.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (blur)=\"onLostFocus()\"\r\n/>\r\n<div\r\n class=\"infix symbol monospace clickable\"\r\n [ngClass]=\"className\"\r\n (click)=\"openModalMap(modalMap)\"\r\n>\r\n @if (isValidNumber(latitudeValue) && latitudeValue >= 0) {\r\n <span>{{ i18n[lang].cardinalPoints.north }}</span>\r\n } @if (isValidNumber(latitudeValue) && latitudeValue < 0) {\r\n <span>{{ i18n[lang].cardinalPoints.south }}</span>\r\n } @if (!isValidNumber(latitudeValue)) {\r\n <span>-</span>\r\n }\r\n</div>\r\n<input\r\n #longitude\r\n class=\"prefix\"\r\n [ngClass]=\"className\"\r\n type=\"number\"\r\n [id]=\"inputId + '$longitude'\"\r\n [(ngModel)]=\"longitudeValue\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n [attr.min]=\"\r\n minLongitude !== undefined && minLongitude !== null\r\n ? minLongitude.toString()\r\n : undefined\r\n \"\r\n [attr.max]=\"\r\n maxLongitude !== undefined && maxLongitude !== null\r\n ? maxLongitude.toString()\r\n : undefined\r\n \"\r\n [attr.step]=\"\r\n step !== undefined && step !== null ? step.toString() : undefined\r\n \"\r\n [placeholder]=\"i18n[lang].lon\"\r\n (keyup)=\"onEventLongitude(longitude.value)\"\r\n (change)=\"onEventLongitude(longitude.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (blur)=\"onLostFocus()\"\r\n/>\r\n<div\r\n class=\"infix symbol monospace clickable\"\r\n [ngClass]=\"className\"\r\n (click)=\"openModalMap(modalMap)\"\r\n>\r\n @if (isValidNumber(longitudeValue) && longitudeValue >= 0) {\r\n <span>{{ i18n[lang].cardinalPoints.east }}</span>\r\n } @if (isValidNumber(longitudeValue) && longitudeValue < 0) {\r\n <span>{{ i18n[lang].cardinalPoints.west }}</span>\r\n } @if (!isValidNumber(longitudeValue)) {\r\n <span>-</span>\r\n }\r\n</div>\r\n<div\r\n [class]=\"\r\n disabled || readonly || !isClearable()\r\n ? 'clickable rounded-right postfix symbol'\r\n : 'clickable postfix symbol'\r\n \"\r\n [ngClass]=\"className\"\r\n (click)=\"openModalMap(modalMap)\"\r\n>\r\n <span class=\"icon-globe\"></span>\r\n</div>\r\n@if (!disabled && !readonly && isClearable()) {\r\n<button\r\n #clearButton\r\n class=\"rounded-right postfix bordered icon icon-clear\"\r\n [id]=\"inputId + '$clear'\"\r\n type=\"button\"\r\n (click)=\"clear()\"\r\n aria-label=\"clear\"\r\n></button>\r\n} @if (inlineErrors && lastErrors && (dirty || touched)) {\r\n<div class=\"alert\">\r\n @if (lastErrors.required) {\r\n <div>\r\n {{ i18n[lang].userErrors.required }}\r\n </div>\r\n } @if (lastErrors.minLatitude) {\r\n <div>\r\n {{\r\n i18n[lang].userErrors.minLatitude.replace(\r\n '$minLatitude',\r\n lastErrors.minLatitude.min\r\n )\r\n }}\r\n </div>\r\n } @if (lastErrors.maxLatitude) {\r\n <div>\r\n {{\r\n i18n[lang].userErrors.maxLatitude.replace(\r\n '$maxLatitude',\r\n lastErrors.maxLatitude.max\r\n )\r\n }}\r\n </div>\r\n } @if (lastErrors.minLongitude) {\r\n <div>\r\n {{\r\n i18n[lang].userErrors.minLongitude.replace(\r\n '$minLongitude',\r\n lastErrors.minLongitude.min\r\n )\r\n }}\r\n </div>\r\n } @if (lastErrors.maxLongitude) {\r\n <div>\r\n {{\r\n i18n[lang].userErrors.maxLongitude.replace(\r\n '$maxLongitude',\r\n lastErrors.maxLongitude.max\r\n )\r\n }}\r\n </div>\r\n }\r\n</div>\r\n}\r\n\r\n<ng-template #modalMap let-modal>\r\n <div class=\"lux-modal-header\">\r\n <h4 class=\"modal-title default-font\" id=\"modal-basic-title\">\r\n {{ mapTitle }}\r\n </h4>\r\n <button\r\n type=\"button\"\r\n class=\"close\"\r\n aria-label=\"Close\"\r\n (click)=\"modal.dismiss('Cross click')\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"lux-modal-body content\">\r\n @if (!disabled && !readonly) {\r\n <lux-autocomplete\r\n #searchBar\r\n [attr.aria-label]=\"i18n[lang].typeToSearch\"\r\n [placeholder]=\"i18n[lang].typeToSearch\"\r\n [instance]=\"self\"\r\n [resolveLabelsFunction]=\"getLabels\"\r\n [populateFunction]=\"getData\"\r\n (valueChange)=\"onSearchLocationChanged(searchBar.value, map)\"\r\n ></lux-autocomplete>\r\n }\r\n <div class=\"map-container\">\r\n <lux-map\r\n #map\r\n [center]=\"value\"\r\n [markerPoint]=\"value\"\r\n [zoom]=\"zoom\"\r\n [readonly]=\"readonly === true || disabled === true ? true : false\"\r\n ></lux-map>\r\n </div>\r\n </div>\r\n <div class=\"lux-modal-footer\">\r\n @if (disabled || readonly) {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-cancel\"\r\n (click)=\"modal.close('cancel')\"\r\n >\r\n {{ i18n[lang].closeAction }}\r\n </button>\r\n } @if (!disabled && !readonly) {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-cancel\"\r\n (click)=\"modal.close('cancel')\"\r\n >\r\n {{ i18n[lang].cancelAction }}\r\n </button>\r\n } @if (!disabled && !readonly) {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-select\"\r\n (click)=\"modal.close(map.markerPoint.coordinates)\"\r\n >\r\n {{ i18n[lang].selectAction }}\r\n </button>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { Injectable } from '@angular/core';\n\n/**\n * A service that holds the functionality for advanced handling of regular expressions\n */\n@Injectable({ providedIn: 'root' })\nexport class RegexpService {\n constructor() {}\n\n private removeOuterRoundBrackets(regularExpressionString: string): string {\n while (\n regularExpressionString[0] === '(' &&\n regularExpressionString[regularExpressionString.length - 1] === ')'\n ) {\n regularExpressionString = regularExpressionString.slice(\n 1,\n regularExpressionString.length - 1\n );\n }\n return regularExpressionString;\n }\n\n private isQuantifier(quantifier: string): boolean {\n switch (quantifier) {\n case '{':\n case '?':\n case '+':\n case '*':\n return true;\n }\n return false;\n }\n\n private parseMinimalAmountOfQuantifier(quantifier: string): number {\n switch (quantifier[0]) {\n case '?':\n case '*':\n return 0;\n case '+':\n return 1;\n case '{':\n for (let index = 1; index < quantifier.length; ++index) {\n if (quantifier[index] < '0' || quantifier[index] > '9') {\n return Number(quantifier.slice(1, index));\n }\n }\n }\n return 0;\n }\n\n private sliceRegexByOr(regularExpressionString: string): string[] {\n const result = [];\n let slicedRegex = '';\n let lastSliceIndex = 0;\n let roundBracketCount = 0;\n let squareBracketCount = 0;\n let curlyBracketCount = 0;\n let index = 0;\n for (; index < regularExpressionString.length; ++index) {\n switch (regularExpressionString[index]) {\n case '\\\\':\n // escape sequence; skip the next character\n ++index;\n break;\n case '(':\n roundBracketCount += 1;\n break;\n case ')':\n roundBracketCount -= 1;\n break;\n case '[':\n squareBracketCount += 1;\n break;\n case ']':\n squareBracketCount -= 1;\n break;\n case '{':\n curlyBracketCount += 1;\n break;\n case '}':\n curlyBracketCount -= 1;\n break;\n case '|':\n if (\n roundBracketCount === 0 &&\n squareBracketCount === 0 &&\n curlyBracketCount === 0\n ) {\n slicedRegex = this.removeOuterRoundBrackets(\n regularExpressionString.slice(lastSliceIndex, index)\n );\n result.push(slicedRegex);\n lastSliceIndex = index + 1;\n }\n break;\n }\n }\n slicedRegex = this.removeOuterRoundBrackets(\n regularExpressionString.slice(lastSliceIndex, index)\n );\n result.push(slicedRegex);\n return result;\n }\n\n private sliceRegexByThen(regularExpressionString: string): string[][] {\n // the actual result\n const resultStart = [];\n // the remainder of the regex in each case\n const resultRemainder = [];\n let roundBracketCount = 0;\n let squareBracketCount = 0;\n let curlyBracketCount = 0;\n for (let index = 0; index < regularExpressionString.length; ++index) {\n switch (regularExpressionString[index]) {\n case '\\\\':\n // escape sequence; skip the next character\n ++index;\n break;\n case '(':\n roundBracketCount += 1;\n break;\n case ')':\n roundBracketCount -= 1;\n break;\n case '[':\n squareBracketCount += 1;\n break;\n case ']':\n squareBracketCount -= 1;\n break;\n case '{':\n curlyBracketCount += 1;\n break;\n case '}':\n curlyBracketCount -= 1;\n break;\n }\n if (\n roundBracketCount === 0 &&\n squareBracketCount === 0 &&\n curlyBracketCount === 0\n ) {\n if (!this.isQuantifier(regularExpressionString[index + 1])) {\n resultStart.push(regularExpressionString.slice(0, index + 1));\n resultRemainder.push(regularExpressionString.slice(index + 1));\n } else {\n // let minimalAmountOfRepeats = parseMinimalAmountOfQuantifier(regularExpressionString.slice(index + 1));\n // TODO\n }\n }\n }\n return [resultStart, resultRemainder];\n }\n\n suggestion(beginning: string, regularExpressionString: string): string {\n if (new RegExp(regularExpressionString).test(beginning)) {\n // TODO: RETURN AN EMPTY STRING\n return 'YA ES IGUAL, NO HAY MÁS QUE SUGERIR';\n }\n const regexOptions = this.sliceRegexByOr(regularExpressionString);\n if (regexOptions.length > 1) {\n for (\n let regexOptionIndex = 0;\n regexOptionIndex < regexOptions.length;\n ++regexOptionIndex\n ) {\n const regexParts = this.sliceRegexByThen(\n regexOptions[regexOptionIndex]\n );\n const regexPartsStarts = regexParts[0];\n const regexPartsRemainders = regexParts[1];\n // for each option, test if the first part of the regex matches\n // if it doesn't, continue\n // if it does, keep checking until what part it matches\n if (!new RegExp(regexPartsStarts[0]).test(beginning)) {\n // if there are no more options\n if (regexOptionIndex === regexOptions.length - 1) {\n // we return the first option, but we could return any option\n\n // TODO: RETURN ANY TEXT THAT MATCHES regexOptions[0]\n return regexOptions[0];\n }\n } else {\n for (\n let regexPartIndex = 1;\n regexPartIndex < regexPartsStarts.length;\n ++regexPartIndex\n ) {\n if (!new RegExp(regexPartsStarts[regexPartIndex]).test(beginning)) {\n // TODO: RETURN ANY TEXT THAT MATCHES regexPartsRemainders[regexPartIndex - 1]\n return regexPartsRemainders[regexPartIndex - 1];\n }\n }\n }\n }\n } else if (regexOptions.length === 1) {\n const regexParts = this.sliceRegexByThen(regexOptions[0]);\n const regexPartsStarts = regexParts[0];\n const regexPartsRemainders = regexParts[1];\n if (!new RegExp(regexPartsStarts[0]).test(beginning)) {\n // TODO: RETURN ANY TEXT THAT MATCHES regularExpressionString\n return regularExpressionString;\n } else {\n for (\n let regexPartIndex = 1;\n regexPartIndex < regexPartsStarts.length;\n ++regexPartIndex\n ) {\n if (!new RegExp(regexPartsStarts[regexPartIndex]).test(beginning)) {\n // TODO: RETURN ANY TEXT THAT MATCHES regexPartsRemainders[regexPartIndex - 1]\n return regexPartsRemainders[regexPartIndex - 1];\n }\n }\n }\n }\n // TODO: RETURN AN EMPTY STRING\n return 'NO DEBERÍA SER POSIBLE';\n }\n}\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n inject\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport {\r\n hasValue,\r\n isInitialAndEmpty,\r\n isValidColor,\r\n isValidEmail,\r\n isValidNumber,\r\n isValidRelativeUrl,\r\n normalizeDate\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\nimport { RegexpService } from './regexp.service';\r\n@Component({\r\n selector: 'lux-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n imports: [CommonModule, FormsModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => InputComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => InputComponent)\r\n }\r\n ]\r\n})\r\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\r\n regexpService = inject(RegexpService);\r\n\r\n static idCounter = 0;\r\n\r\n @ViewChild('input', { static: false }) input: ElementRef;\r\n @ViewChild('textarea', { static: false }) textarea: ElementRef;\r\n @ViewChild('colorpicker', { static: false }) colorpicker: ElementRef;\r\n\r\n touched = false;\r\n dirty = false;\r\n lastErrors: ValidationErrors | null = null;\r\n\r\n private _disabled: string | boolean;\r\n private _value: any = '';\r\n private _type: string;\r\n private _placeholder: string;\r\n private _pattern?: string = undefined;\r\n private _regexp?: RegExp = undefined;\r\n private _currency: string;\r\n private _required: boolean;\r\n\r\n public userErrors = {\r\n en: {\r\n required: 'Required field.',\r\n min: 'Minimum value is $min.',\r\n max: 'Maximum value is $max.',\r\n email: 'Format should match example@example.com.',\r\n url: 'Format should match https://example.com.',\r\n color: 'Format should match #XXXXXX.'\r\n },\r\n es: {\r\n required: 'El campo es obligatorio.',\r\n min: 'El valor mínimo es $min.',\r\n max: 'El valor máximo es $max.',\r\n email: 'El campo debe tener un formato como ejemplo@ejemplo.com.',\r\n url: 'El campo debe tener un formato como https://ejemplo.com.',\r\n color: 'El campo debe tener un formato como #XXXXXX.'\r\n }\r\n };\r\n\r\n public domain: string;\r\n @Input()\r\n public rows?: number | string;\r\n @Input()\r\n public cols?: number | string;\r\n @Input()\r\n public step?: number;\r\n @Input()\r\n public min?: number | string;\r\n @Input()\r\n public max?: number | string;\r\n\r\n get className(): string {\r\n return this.checkClassName();\r\n }\r\n\r\n get color(): string {\r\n return this.checkColor();\r\n }\r\n\r\n @Input() lang = languageDetector();\r\n @Input() public inlineErrors = false;\r\n @Input() public inputId: string;\r\n @Input('aria-label') public ariaLabel: string;\r\n @Input() public readonly: boolean | null = null;\r\n\r\n @Input()\r\n set disabled(v: string | boolean) {\r\n v = typeof v === 'string' ? true : v;\r\n this._disabled = v;\r\n }\r\n get disabled(): string | boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n set pattern(p: string | undefined) {\r\n this._pattern = p;\r\n if (p === undefined) {\r\n this._regexp = undefined;\r\n } else {\r\n try {\r\n this._regexp = new RegExp(p);\r\n } catch (e) {\r\n this._pattern = undefined;\r\n this._regexp = undefined;\r\n }\r\n }\r\n }\r\n get pattern(): string | undefined {\r\n return this._pattern;\r\n }\r\n\r\n @Input()\r\n set currency(v: string) {\r\n this._currency = v.toUpperCase();\r\n }\r\n get currency(): string {\r\n return this._currency;\r\n }\r\n\r\n @Input()\r\n set placeholder(v: string) {\r\n this._placeholder = v;\r\n }\r\n get placeholder(): string {\r\n return this._placeholder ? this._placeholder : '';\r\n }\r\n\r\n @Input()\r\n set required(v: boolean) {\r\n this._required = v;\r\n }\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n @Input()\r\n set type(v: string) {\r\n this._type = v.toLowerCase();\r\n this.domain = v.toLowerCase();\r\n this.checkType(v);\r\n }\r\n get type(): string {\r\n return this._type ? this._type : 'text';\r\n }\r\n\r\n @Input()\r\n set value(v: any) {\r\n v = v === undefined ? null : v;\r\n if (v === this._value) {\r\n return; // prevent events when there is no changes\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n if (this.type === 'date') {\r\n v = normalizeDate(v);\r\n }\r\n\r\n this._value = v;\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n get value(): any {\r\n if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\r\n const numVal = parseFloat(this._value);\r\n if (!Number.isNaN(numVal)) {\r\n return numVal;\r\n }\r\n }\r\n return this._value;\r\n }\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n\r\n // ControlValueAccessor Interface implementation\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.setValueInControl(value);\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End of ControlValueAccessor Interface implementation\r\n\r\n private setValueInControl(v: any): void {\r\n if (this.domain === 'date') {\r\n v = normalizeDate(v);\r\n }\r\n if (this.input) {\r\n this.input.nativeElement.value = v;\r\n }\r\n if (this.textarea) {\r\n this.textarea.nativeElement.value = v;\r\n }\r\n }\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n let result: ValidationErrors | null = null;\r\n\r\n if (this.required && !hasValue(value)) {\r\n result = result || {};\r\n result.required = { value, reason: 'Required field.' };\r\n }\r\n if (this._regexp && hasValue(value) && !this._regexp.test(value)) {\r\n result = result || {};\r\n result.pattern = {\r\n value,\r\n reason: `Value must follow the pattern: ${this._pattern}`\r\n };\r\n }\r\n if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\r\n result = result || {};\r\n result.email = { value, reason: 'Invalid email.' };\r\n }\r\n if (this.type === 'url' && hasValue(value) && !isValidRelativeUrl(value)) {\r\n result = result || {};\r\n result.url = { value, reason: 'Invalid URL.' };\r\n }\r\n if (this.type === 'color' && hasValue(value) && !isValidColor(value)) {\r\n result = result || {};\r\n result.color = { value, reason: 'Invalid color.' };\r\n }\r\n if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\r\n result = result || {};\r\n result.numeric = { value, reason: 'Invalid number.' };\r\n }\r\n if (\r\n this.type === 'date' ||\r\n this.type === 'time' ||\r\n this.type === 'timestamp'\r\n ) {\r\n if (\r\n typeof this.min === 'string' &&\r\n hasValue(value) &&\r\n String(value).localeCompare(this.min) === -1\r\n ) {\r\n result = result || {};\r\n result.min = {\r\n value,\r\n min: this.min,\r\n reason: `Value is lower than minimum value: ${this.min}.`\r\n };\r\n }\r\n if (\r\n typeof this.max === 'string' &&\r\n hasValue(value) &&\r\n String(value).localeCompare(this.max) !== -1\r\n ) {\r\n result = result || {};\r\n result.max = {\r\n value,\r\n max: this.max,\r\n reason: `Value is greater than than maximum value: ${this.max}.`\r\n };\r\n }\r\n }\r\n\r\n if (\r\n this.type === 'percentage' ||\r\n this.type === 'permillage' ||\r\n this.type === 'number' ||\r\n this.type === 'currency'\r\n ) {\r\n if (hasValue(this.min) && hasValue(value) && value < +this.min) {\r\n result = result || {};\r\n result.min = {\r\n value,\r\n min: this.min,\r\n reason: `Value is lower than minimum value: ${this.min}.`\r\n };\r\n }\r\n if (hasValue(this.max) && hasValue(value) && value > +this.max) {\r\n result = result || {};\r\n result.max = {\r\n value,\r\n max: this.max,\r\n reason: `Value is greater than than maximum value: ${this.max}.`\r\n };\r\n }\r\n }\r\n this.lastErrors = result;\r\n return result;\r\n }\r\n // End of Validator interface\r\n\r\n ngOnInit(): void {\r\n this.inputId = this.inputId\r\n ? this.inputId\r\n : `${this.type}$${InputComponent.idCounter++}`;\r\n }\r\n onLostFocus(): void {\r\n this.markAsTouched();\r\n }\r\n onKeyUp(newValue: string): void {\r\n this.value = newValue;\r\n }\r\n onChangeValue(newValue: string): void {\r\n this.value = newValue;\r\n if (this.isColor()) {\r\n this.colorpicker.nativeElement.value = undefined;\r\n }\r\n this.markAsTouched();\r\n }\r\n onKeyPress(event: KeyboardEvent): void {\r\n this.keyPress.emit(event);\r\n }\r\n onColorPicked(newValue: string): void {\r\n this.onChangeValue(newValue);\r\n this.setValueInControl(newValue);\r\n }\r\n\r\n isUrl(): boolean {\r\n return this.type === 'url';\r\n }\r\n isColor(): boolean {\r\n return this.type === 'color';\r\n }\r\n isNumber(): boolean {\r\n return this.type === 'number';\r\n }\r\n isPercentage(): boolean {\r\n return this.type === 'percentage';\r\n }\r\n isPermillage(): boolean {\r\n return this.type === 'permillage';\r\n }\r\n hasPrefix(): boolean {\r\n return this.currency === 'USD';\r\n }\r\n hasPostfix(): boolean {\r\n return (\r\n this.currency === 'EUR' ||\r\n this.isPercentage() ||\r\n this.isPermillage() ||\r\n (this.isUrl() && !!this.value) ||\r\n this.isColor()\r\n );\r\n }\r\n\r\n checkClassName(): string {\r\n return this.disabled\r\n ? this.readonly\r\n ? 'disabled readonly'\r\n : 'disabled'\r\n : this.readonly\r\n ? 'readonly'\r\n : '';\r\n }\r\n\r\n checkColor(): string {\r\n return this.type === 'color' && isValidColor(this.value)\r\n ? this.value\r\n : 'initial';\r\n }\r\n\r\n checkType(type: string): void {\r\n switch (type) {\r\n case 'email':\r\n this.setEmailPatterns();\r\n break;\r\n case 'url':\r\n this.setUrlPatterns();\r\n break;\r\n case 'color':\r\n this.setColorPatterns();\r\n break;\r\n case 'date':\r\n this.setDatePatterns();\r\n break;\r\n case 'time':\r\n this.setTimePatterns();\r\n break;\r\n case 'password':\r\n this.setPasswordPatterns();\r\n break;\r\n case 'number':\r\n this.setNumberPatterns();\r\n break;\r\n case 'currency':\r\n this.setCurrencyPatterns();\r\n break;\r\n case 'percentage':\r\n this.setPercentagePatterns();\r\n break;\r\n case 'permillage':\r\n this.setPermillagePatterns();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n setEmailPatterns(): void {}\r\n\r\n setUrlPatterns(): void {}\r\n\r\n setColorPatterns(): void {\r\n this.domain = 'text';\r\n }\r\n\r\n setDatePatterns(): void {\r\n this.min = this.min || '1900-01-01';\r\n this.max = this.max || '2100-01-01';\r\n }\r\n\r\n setTimePatterns(): void {}\r\n\r\n setPasswordPatterns(): void {}\r\n\r\n setNumberPatterns(): void {\r\n this.domain = 'number';\r\n this.placeholder = '0';\r\n }\r\n\r\n setCurrencyPatterns(): void {\r\n this.domain = 'number';\r\n this.step = this.step || 0.1;\r\n this.min = this.min || 0.0;\r\n this.max = this.max || 10000.0;\r\n this.value = 0.0;\r\n }\r\n\r\n setPercentagePatterns(): void {\r\n this.domain = 'number';\r\n this.step = this.step || 0.01;\r\n this.min = this.min || 0.0;\r\n this.max = this.max || 100.0;\r\n this.placeholder = '0.00';\r\n }\r\n\r\n setPermillagePatterns(): void {\r\n this.domain = 'number';\r\n this.step = this.step || 0.01;\r\n this.min = this.min || 0.0;\r\n this.max = this.max || 1000.0;\r\n this.placeholder = '0.00';\r\n }\r\n}\r\n","@if (currency && currency === 'USD') {\r\n<div class=\"prefix rounded-left symbol\" [ngClass]=\"className\">\r\n <span>$</span>\r\n</div>\r\n} @if (type !== 'textarea') {\r\n<input\r\n #input\r\n [class]=\"\r\n hasPrefix()\r\n ? hasPostfix()\r\n ? 'infix'\r\n : 'postfix rounded-right'\r\n : hasPostfix()\r\n ? 'prefix rounded-left'\r\n : 'rounded'\r\n \"\r\n [ngClass]=\"className\"\r\n placement=\"top\"\r\n [id]=\"inputId\"\r\n [type]=\"domain\"\r\n [attr.value]=\"value\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n [attr.min]=\"min?.toString() || undefined\"\r\n [attr.max]=\"max?.toString() || undefined\"\r\n [attr.step]=\"step?.toString() || undefined\"\r\n [attr.pattern]=\"pattern || undefined\"\r\n [placeholder]=\"placeholder\"\r\n (keyup)=\"onKeyUp(input.value)\"\r\n (change)=\"onChangeValue(input.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (blur)=\"onLostFocus()\"\r\n/>\r\n} @if (type === 'textarea') {\r\n<textarea\r\n #textarea\r\n class=\"rounded\"\r\n [ngClass]=\"className\"\r\n placement=\"top\"\r\n [id]=\"inputId\"\r\n [attr.value]=\"value\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n [attr.cols]=\"cols?.toString() || undefined\"\r\n [attr.rows]=\"rows?.toString() || undefined\"\r\n [placeholder]=\"placeholder\"\r\n (keyup)=\"onKeyUp(textarea.value)\"\r\n (change)=\"onChangeValue(textarea.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (blur)=\"onLostFocus()\"\r\n></textarea>\r\n} @if (currency && currency === 'EUR') {\r\n<div class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\r\n <span>€</span>\r\n</div>\r\n} @if (isPercentage()) {\r\n<div class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\r\n <span>%</span>\r\n</div>\r\n} @if (isPermillage()) {\r\n<div class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\r\n <span>‰</span>\r\n</div>\r\n} @if (isUrl() && !!value) {\r\n<div class=\"postfix rounded-right symbol clickable\" [ngClass]=\"className\">\r\n <a href=\"{{ value }}\" target=\"_blank\">\r\n <span class=\"icon-external\"></span>\r\n </a>\r\n</div>\r\n} @if (isColor()) {\r\n<div class=\"postfix rounded-right bordered transparency\" [ngClass]=\"className\">\r\n <div\r\n class=\"rounded-right full-space\"\r\n [ngStyle]=\"{ 'background-color': color }\"\r\n >\r\n <input\r\n #colorpicker\r\n class=\"minimal-space clickable invisible rounded-right full-space\"\r\n [id]=\"inputId + '$colorpicker'\"\r\n type=\"color\"\r\n [attr.value]=\"value\"\r\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n (change)=\"onColorPicked(colorpicker.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (blur)=\"onLostFocus()\"\r\n />\r\n </div>\r\n</div>\r\n} @if (inlineErrors && lastErrors && (dirty || touched)) {\r\n<div class=\"alert\">\r\n @if (lastErrors.required) {\r\n <div>\r\n {{ userErrors[this.lang].required }}\r\n </div>\r\n } @if (lastErrors.email) {\r\n <div>{{ userErrors[this.lang].email }}</div>\r\n } @if (lastErrors.url) {\r\n <div>{{ userErrors[this.lang].url }}</div>\r\n } @if (lastErrors.min) {\r\n <div>\r\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\r\n </div>\r\n } @if (lastErrors.max) {\r\n <div>\r\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\r\n </div>\r\n }\r\n</div>\r\n}\r\n","export enum Placement {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\nexport type PlacementValue = 'left' | 'right' | 'top' | 'bottom';\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { LuxTooltipContext } from './tooltip-context';\r\n\r\n/**\r\n * Default Tooltip Component\r\n */\r\n@Component({\r\n selector: 'lux-tooltip',\r\n imports: [CommonModule],\r\n template: `\r\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{\r\n context.message\r\n }}</span>\r\n `\r\n})\r\nexport class TooltipComponent {\r\n @Input() context: LuxTooltipContext;\r\n\r\n constructor() {}\r\n}\r\n","import { ViewRef, ComponentRef } from '@angular/core';\n\nexport class TooltipContentRef {\n constructor(public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n Injectable,\r\n Injector,\r\n TemplateRef,\r\n inject\r\n} from '@angular/core';\r\n\r\nimport { Placement, PlacementValue } from './placement';\r\nimport { LuxTooltipContext } from './tooltip-context';\r\nimport { TooltipComponent } from './tooltip.component';\r\nimport { TooltipContentRef } from './tooltop-content';\r\n\r\n@Injectable()\r\nexport class TooltipService {\r\n private _injector = inject(Injector);\r\n private _crf = inject(ComponentFactoryResolver);\r\n private _applicationRef = inject(ApplicationRef);\r\n\r\n appendComponentToBody(\r\n content: any,\r\n elHost: ElementRef,\r\n placement: PlacementValue\r\n ): TooltipContentRef {\r\n const tooltipContentRef = this.getTooltipContentRef(content);\r\n if (tooltipContentRef) {\r\n let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\r\n .rootNodes[0];\r\n document.body.appendChild(domElem);\r\n if (tooltipContentRef.componentRef) {\r\n tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\r\n }\r\n domElem = this.setStyle(domElem, placement);\r\n domElem = this.setPosition(domElem, elHost, placement);\r\n return tooltipContentRef;\r\n }\r\n return null;\r\n }\r\n\r\n removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\r\n this._applicationRef.detachView(tooltipContentRef.viewRef);\r\n if (tooltipContentRef.componentRef) {\r\n tooltipContentRef.componentRef.destroy();\r\n }\r\n }\r\n\r\n private getTooltipContentRef(content: any): TooltipContentRef {\r\n if (!content) {\r\n // nothing to show\r\n } else if (content instanceof TemplateRef) {\r\n return this.createFromTemplateRef(content);\r\n } else if (typeof content === 'string') {\r\n return this.createFromComponent(TooltipComponent, { message: content });\r\n } else {\r\n return this.createFromComponent(content);\r\n }\r\n }\r\n\r\n private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\r\n const viewRef = content.createEmbeddedView({});\r\n this._applicationRef.attachView(viewRef);\r\n return new TooltipContentRef(viewRef);\r\n }\r\n\r\n private createFromComponent(\r\n component: any,\r\n context?: LuxTooltipContext\r\n ): TooltipContentRef {\r\n const componentRef: ComponentRef<any> = this._crf\r\n .resolveComponentFactory(component)\r\n .create(this._injector);\r\n if (context) {\r\n componentRef.instance.context = context;\r\n }\r\n this._applicationRef.attachView(componentRef.hostView);\r\n return new TooltipContentRef(componentRef.hostView, componentRef);\r\n }\r\n\r\n private setStyle(\r\n domElem: HTMLElement,\r\n placement: PlacementValue\r\n ): HTMLElement {\r\n domElem.style.position = 'absolute';\r\n domElem.style.minWidth = 'min-content';\r\n domElem.style.minHeight = 'min-content';\r\n const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\r\n placement =\r\n placement !== undefined\r\n ? (placement.toLocaleLowerCase() as PlacementValue)\r\n : 'top'; // 'Top' is the default value of placement\r\n tooltipElement.classList.add(`lux-tooltip-${placement}`);\r\n tooltipElement.classList.add('lux-tooltip-show');\r\n return domElem;\r\n }\r\n\r\n private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\r\n const elementsArray = Array.from(domElem.classList).filter(\r\n (className) => className === 'lux-tooltip'\r\n );\r\n if (elementsArray.length !== 0) {\r\n return domElem;\r\n } else if (domElem.hasChildNodes()) {\r\n const childrenArray = Array.from(domElem.children).filter(\r\n (child) =>\r\n this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\r\n );\r\n if (childrenArray.length !== 0) {\r\n return this.getTooltipElementFromHTMLElemnt(\r\n childrenArray[0] as HTMLElement\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private setPosition(\r\n domElem: HTMLElement,\r\n elHost: ElementRef,\r\n placement: PlacementValue\r\n ): HTMLElement {\r\n const hostPos = elHost.nativeElement.getBoundingClientRect();\r\n const tooltipPos = domElem.getBoundingClientRect();\r\n const scrollPos =\r\n window.pageYOffset ||\r\n document.documentElement.scrollTop ||\r\n document.body.scrollTop ||\r\n 0;\r\n let top = 0;\r\n let left = 0;\r\n const offset = 10;\r\n\r\n switch (placement) {\r\n case Placement.Bottom:\r\n top = hostPos.bottom + offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n break;\r\n case Placement.Left:\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.left - tooltipPos.width - offset;\r\n break;\r\n case Placement.Right:\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.right + offset;\r\n break;\r\n case Placement.Top:\r\n default:\r\n top = hostPos.top - tooltipPos.height - offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n break;\r\n }\r\n top = Math.max(0, top);\r\n left = Math.max(0, left);\r\n domElem.style.top = `${top + scrollPos}px`;\r\n domElem.style.left = `${left}px`;\r\n return domElem;\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n inject\r\n} from '@angular/core';\r\n\r\nimport { PlacementValue } from './placement';\r\nimport { TooltipService } from './tooltip.service';\r\nimport { TooltipContentRef } from './tooltop-content';\r\n\r\n/**\r\n * Tooltip directive\r\n */\r\n@Directive({\r\n selector: '[luxTooltip]',\r\n standalone: true,\r\n providers: [TooltipService]\r\n})\r\nexport class LuxTooltipDirective {\r\n private elHost = inject(ElementRef);\r\n private tooltipService = inject(TooltipService);\r\n\r\n /** Tooltip title */\r\n @Input() luxTooltip: any;\r\n\r\n /** Component, TemplateRef or String */\r\n @Input() content: any;\r\n\r\n /** Placement */\r\n @Input() placement: PlacementValue;\r\n\r\n tooltipRef: TooltipContentRef;\r\n\r\n @HostListener('mouseenter') onMouseEnter(): void {\r\n if (!this.tooltipRef) {\r\n // Use luxTooltip if provided, otherwise use content\r\n const tooltipContent = this.luxTooltip || this.content;\r\n if (tooltipContent) {\r\n this.tooltipRef = this.show(\r\n tooltipContent,\r\n this.elHost,\r\n this.placement\r\n );\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave(): void {\r\n if (this.tooltipRef) {\r\n this.remove(this.tooltipRef);\r\n this.tooltipRef = null;\r\n }\r\n }\r\n\r\n @HostListener('click') onClick(): void {\r\n if (this.tooltipRef) {\r\n this.remove(this.tooltipRef);\r\n this.tooltipRef = null;\r\n }\r\n }\r\n\r\n show(\r\n component: any,\r\n elHost: ElementRef,\r\n placement: PlacementValue\r\n ): TooltipContentRef {\r\n return this.tooltipService.appendComponentToBody(\r\n component,\r\n elHost,\r\n placement\r\n );\r\n }\r\n\r\n remove(tooltipRef: TooltipContentRef): void {\r\n this.tooltipService.removeComponentFromBody(tooltipRef);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { languageDetector } from '../lang';\r\nimport { LuxTooltipDirective } from '../tooltip/tooltip.directive';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n selector: 'lux-pagination',\r\n imports: [CommonModule, FormsModule, LuxTooltipDirective],\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n literals = {\r\n en: {\r\n first: 'First',\r\n previous: 'Previous',\r\n next: 'Next',\r\n last: 'Last'\r\n },\r\n es: {\r\n first: 'Primero',\r\n previous: 'Anterior',\r\n next: 'Siguiente',\r\n last: 'Último'\r\n }\r\n };\r\n\r\n public first: string;\r\n public previous: string;\r\n public next: string;\r\n public last: string;\r\n\r\n public showPagination = false;\r\n public hidePrevious = false;\r\n public lastPage = false;\r\n public totalPages = 0;\r\n public displayNextEllipsis = false;\r\n public displayPreviousEllipsis = false;\r\n\r\n public pages: number[] = [];\r\n\r\n @Output() goToPage = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n /** Current page, total items and items to show per page */\r\n private paginationInfoValue: PaginationInfo;\r\n\r\n private _lang: string;\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n this.loadLanguage();\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n\r\n @Input()\r\n set paginationInfo(value: PaginationInfo) {\r\n this.paginationInfoValue = value;\r\n this.syncState();\r\n }\r\n get paginationInfo(): PaginationInfo {\r\n return this.paginationInfoValue;\r\n }\r\n\r\n constructor() {\r\n this.lang = languageDetector();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged(pageSize: number): void {\r\n this.paginationInfo.pageSize = pageSize;\r\n this.syncState();\r\n this.pageSizeChange.emit(pageSize);\r\n }\r\n\r\n onPage(n: number): void {\r\n this.goToPage.emit(n);\r\n }\r\n\r\n onFirst(): void {\r\n this.goToPage.emit(0);\r\n }\r\n\r\n onLast(): void {\r\n this.goToPage.emit(this.totalPages - 1);\r\n }\r\n onNext(): void {\r\n const page = (this.paginationInfo.page || 0) + 1;\r\n this.goToPage.emit(page);\r\n }\r\n onPrevious(): void {\r\n const page = (this.paginationInfo.page || 0) - 1;\r\n this.goToPage.emit(page);\r\n }\r\n\r\n private syncState(): void {\r\n this.pages = this.calculatePages();\r\n\r\n this.showPagination =\r\n this.paginationInfo.total > this.paginationInfo.pageSize;\r\n this.hidePrevious = this.paginationInfo.page === 0;\r\n this.lastPage =\r\n this.paginationInfo.pageSize * (this.paginationInfo.page + 1) >=\r\n this.paginationInfo.total;\r\n this.totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) || 0;\r\n this.displayNextEllipsis = !this.pages.includes(this.totalPages - 1);\r\n this.displayPreviousEllipsis = !this.pages.includes(0);\r\n }\r\n\r\n private calculatePages(): number[] {\r\n const totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) - 1; // 0-index\r\n const p = this.paginationInfo.page || 0;\r\n const pagesToShow = this.paginationInfo.pagesToShow;\r\n const pages: number[] = [];\r\n pages.push(p);\r\n const times = pagesToShow - 1;\r\n for (let i = 0; i < times; i++) {\r\n if (pages.length < pagesToShow) {\r\n if (Math.min(...pages) > 0) {\r\n pages.unshift(Math.min(...pages) - 1);\r\n }\r\n }\r\n if (pages.length < pagesToShow) {\r\n if (Math.max(...pages) < totalPages) {\r\n pages.push(Math.max(...pages) + 1);\r\n }\r\n }\r\n }\r\n pages.sort((a, b) => a - b);\r\n return pages;\r\n }\r\n\r\n private loadLanguage(): void {\r\n const l = this.literals[this.lang];\r\n this.first = l.first;\r\n this.previous = l.previous;\r\n this.next = l.next;\r\n this.last = l.last;\r\n }\r\n}\r\n","@if (showPagination) {\r\n<div class=\"lux-pagination\">\r\n @if (!hidePrevious) {\r\n <a\r\n luxTooltip\r\n [content]=\"first\"\r\n placement=\"top\"\r\n delay=\"500\"\r\n (click)=\"onFirst()\"\r\n [ngClass]=\"{\r\n enabledFirstLast: !hidePrevious\r\n }\"\r\n class=\"button-pagination icon arrow-left-end\"\r\n ></a>\r\n <a\r\n luxTooltip\r\n [content]=\"previous\"\r\n placement=\"top\"\r\n delay=\"500\"\r\n (click)=\"onPrevious()\"\r\n [ngClass]=\"{\r\n enabledFirstLast: !hidePrevious\r\n }\"\r\n class=\"button-pagination icon arrow-left\"\r\n ></a>\r\n } @if (displayPreviousEllipsis) {\r\n <span class=\"ellipsis\">...</span>\r\n } @for (pageNum of pages; track pageNum) {\r\n <a\r\n placement=\"top\"\r\n delay=\"500\"\r\n [ngClass]=\"{\r\n disabled: pageNum === paginationInfo.page,\r\n enabled: pageNum !== paginationInfo.page\r\n }\"\r\n class=\"button-pagination\"\r\n (click)=\"onPage(pageNum)\"\r\n >{{ pageNum + 1 }}</a\r\n >\r\n } @if (displayNextEllipsis) {\r\n <span class=\"ellipsis\">...</span>\r\n } @if (!lastPage) {\r\n <a\r\n luxTooltip\r\n [content]=\"next\"\r\n placement=\"top\"\r\n delay=\"500\"\r\n (click)=\"onNext()\"\r\n [ngClass]=\"{\r\n enabledFirstLast: !lastPage\r\n }\"\r\n class=\"button-pagination icon arrow-right\"\r\n ></a>\r\n <a\r\n luxTooltip\r\n [content]=\"last\"\r\n placement=\"top\"\r\n delay=\"500\"\r\n (click)=\"onLast()\"\r\n [ngClass]=\"{\r\n enabledFirstLast: !lastPage\r\n }\"\r\n class=\"button-pagination icon arrow-right-end\"\r\n ></a>\r\n }\r\n</div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\n\r\nexport interface RadioItem {\r\n name?: string;\r\n label: string;\r\n value: any;\r\n}\r\n\r\n@Component({\r\n selector: 'lux-radiogroup',\r\n imports: [CommonModule],\r\n templateUrl: './radiogroup.component.html',\r\n styleUrls: ['./radiogroup.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => RadiogroupComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => RadiogroupComponent)\r\n }\r\n ]\r\n})\r\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\r\n private touched = false;\r\n\r\n @Input() name = 'radiogroup1';\r\n @Input() public disabled: boolean | null = false;\r\n @Input() public readonly: boolean | null = false;\r\n @Input() public required: boolean | null = false;\r\n\r\n @Input()\r\n set items(col: RadioItem[]) {\r\n this._items = (col || []).map((it, index) =>\r\n this.ensureHasUniqueName(it, index)\r\n );\r\n this.itemsChange.emit(col);\r\n }\r\n get items(): RadioItem[] {\r\n return this._items;\r\n }\r\n @Output() itemsChange = new EventEmitter<RadioItem[]>();\r\n\r\n @Input()\r\n set value(v: any) {\r\n if (v === this._value) {\r\n return;\r\n }\r\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n this._value = v;\r\n this.onChange(v);\r\n if (!initialAndEmpty) {\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n get value(): any {\r\n return this._value;\r\n }\r\n @Output() valueChange = new EventEmitter<any>();\r\n\r\n private _value: any = undefined;\r\n private _items: RadioItem[] = [];\r\n\r\n constructor() {}\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (\r\n this.required &&\r\n (value === '' || value === null || value === undefined)\r\n ) {\r\n return { required: { value, reason: 'Required field.' } };\r\n }\r\n return null;\r\n }\r\n // End of Validator interface\r\n\r\n setValue(event: MouseEvent, item: RadioItem): void {\r\n if (!this.disabled && !this.readonly) {\r\n this.value = item.value;\r\n this.markAsTouched();\r\n }\r\n event.preventDefault();\r\n }\r\n ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\r\n if (!item.name) {\r\n item.name = `${this.name}_${index}`;\r\n }\r\n return item;\r\n }\r\n}\r\n","<div class=\"radiogroup\" [class.disabled]=\"disabled || readonly\">\r\n @for (item of items; track item.value; let first = $first; let last = $last) {\r\n <div\r\n [class.radio-start]=\"first\"\r\n [class.radio-end]=\"last\"\r\n class=\"radio-item\"\r\n [class.selected]=\"item.value === value\"\r\n (click)=\"setValue($event, item)\"\r\n >\r\n <input\r\n [id]=\"item.name\"\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [attr.disabled]=\"disabled || null\"\r\n [attr.readonly]=\"readonly || null\"\r\n [value]=\"item.value\"\r\n />\r\n <label [for]=\"item.name\" class=\"unselectable\">{{ item.label }}</label>\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n forwardRef\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { InputComponent } from '../input/input.component';\r\n\r\nlet sequencer = 0;\r\n\r\n@Component({\r\n selector: 'lux-select',\r\n imports: [CommonModule, InputComponent],\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => SelectComponent)\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: forwardRef(() => SelectComponent)\r\n }\r\n ]\r\n})\r\nexport class SelectComponent implements ControlValueAccessor, Validator {\r\n @Input() id = 'stringList' + sequencer++;\r\n @Input() disabled = false;\r\n @Input() required = false;\r\n /** Allow multiple elements */\r\n @Input() multiple = true;\r\n @Input() value: string[] = [];\r\n @Output() valueChange = new EventEmitter<string[]>();\r\n @Input() placeholder = 'Add new';\r\n /** If set, check there is no duplicates in the data. */\r\n @Input() unique = true;\r\n /** Validation function for new items. Returns error or null if valid */\r\n @Input() validateItem: (item: string) => string = (_) => null;\r\n\r\n newEntry = '';\r\n error = null;\r\n isValidNewEntry = false;\r\n\r\n private touched = false;\r\n\r\n constructor() {}\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value): void => {};\r\n onTouched = (): void => {};\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n // End ControlValueAccessor Interface\r\n\r\n // Validator interface\r\n registerOnValidatorChange(): void {}\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (\r\n this.required &&\r\n (value === '' || value === null || value === undefined)\r\n ) {\r\n return { required: { value, reason: 'Required field.' } };\r\n }\r\n return null;\r\n }\r\n // End of Validator interface\r\n\r\n get canAdd(): boolean {\r\n return this.multiple || this.value.length === 0;\r\n }\r\n add(val: string): void {\r\n this.value.push(val);\r\n this.newEntry = '';\r\n this.markAsTouched();\r\n this.valueChange.emit(this.value);\r\n }\r\n remove(index: number): void {\r\n if (this.value.length > index) {\r\n this.value.splice(index, 1);\r\n this.markAsTouched();\r\n this.valueChange.emit(this.value);\r\n }\r\n }\r\n onKeyPress(event: KeyboardEvent): void {\r\n if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\r\n // Add on pressing Enter/Return\r\n this.markAsTouched();\r\n this.add(this.newEntry);\r\n }\r\n }\r\n onChangeNewEntry(newValue: string): void {\r\n this.markAsTouched();\r\n if (!newValue) {\r\n this.isValidNewEntry = false;\r\n this.error = null;\r\n return;\r\n }\r\n if (this.unique) {\r\n const found = (this.value || []).find((it) => it === newValue);\r\n this.isValidNewEntry = !found;\r\n this.error = found\r\n ? `Value '${newValue}' is already in. Cannot add duplicates.`\r\n : null;\r\n if (!this.isValidNewEntry) {\r\n return;\r\n }\r\n }\r\n this.error = this.validateItem(newValue);\r\n this.isValidNewEntry = !this.error;\r\n }\r\n}\r\n","<div class=\"lux-select\">\r\n <ul class=\"list\">\r\n @for (item of value; track i; let i = $index) {\r\n <li>\r\n <span>{{ item }}</span>\r\n @if (!disabled) {\r\n <button\r\n class=\"remove\"\r\n type=\"button\"\r\n (click)=\"remove(i)\"\r\n [attr.aria-label]=\"'Remove ' + item\"\r\n >\r\n Remove\r\n </button>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n @if (!disabled) {\r\n <div class=\"add-new-item\">\r\n <lux-input\r\n id=\"{{ id + 'addNew' }}\"\r\n type=\"string\"\r\n [placeholder]=\"placeholder\"\r\n [attr.aria-label]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [(value)]=\"newEntry\"\r\n (keyPress)=\"onKeyPress($event)\"\r\n (valueChange)=\"onChangeNewEntry($event)\"\r\n >\r\n </lux-input>\r\n @if (canAdd) {\r\n <div>\r\n @if (isValidNewEntry) {\r\n <button type=\"button\" (click)=\"add(newEntry)\">Add</button>\r\n }\r\n </div>\r\n }\r\n <div class=\"error\">\r\n {{ error }}\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Renderer2,\r\n inject\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[luxVoiceRecognition]'\r\n})\r\nexport class VoiceRecognitionDirective implements OnInit {\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n @Input() language: string;\r\n // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\r\n private recognition: any;\r\n private isRecognizing = false;\r\n private mic: any;\r\n\r\n constructor() {\r\n const speechRecognition = (window as any).webkitSpeechRecognition;\r\n if (speechRecognition) {\r\n this.recognition = new speechRecognition();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.recognition) {\r\n // API is available\r\n this.recognition.lang = this.language || window.navigator.language;\r\n this.recognition.interimResults = false;\r\n this.recognition.maxAlternatives = 1;\r\n\r\n // Add mic icon\r\n this.mic = document.createElement('div');\r\n this.mic.setAttribute('class', 'lux-microphone');\r\n\r\n const parent = this.el.nativeElement.parentElement;\r\n parent.appendChild(this.mic);\r\n\r\n // Add event handlers\r\n this.mic.onclick = (): void => this.microphoneClick();\r\n this.recognition.onresult = (event): void => this.onRecognized(event);\r\n }\r\n }\r\n\r\n microphoneClick(): void {\r\n if (this.isRecognizing) {\r\n // stop\r\n this.isRecognizing = false;\r\n this.renderer.removeClass(this.mic, 'lux-recording');\r\n this.recognition.abort();\r\n } else {\r\n // start\r\n this.el.nativeElement.value = getRecordingMessage(this.language);\r\n this.isRecognizing = true;\r\n this.renderer.addClass(this.mic, 'lux-recording');\r\n this.recognition.start();\r\n }\r\n }\r\n onRecognized(event: any): void {\r\n const recognizedText = event.results[0][0].transcript;\r\n this.isRecognizing = false;\r\n this.el.nativeElement.value = recognizedText;\r\n this.renderer.removeClass(this.mic, 'lux-recording');\r\n }\r\n}\r\n\r\nconst getRecordingMessage = (lang: string): string => {\r\n switch (lang.toLowerCase()) {\r\n case 'es':\r\n case 'es-es':\r\n return 'Grabando...';\r\n case 'en':\r\n case 'en-uk':\r\n case 'en-us':\r\n default:\r\n return 'Recording...';\r\n }\r\n};\r\n","import { isPlatformBrowser } from '@angular/common';\r\n\r\nimport {\r\n ClassProvider,\r\n FactoryProvider,\r\n InjectionToken,\r\n PLATFORM_ID\r\n} from '@angular/core';\r\n\r\n/* Create a new injection token for injecting the window into a component. */\r\nexport const WINDOW = new InjectionToken('WindowToken');\r\n\r\n/* Define abstract class for obtaining reference to the global window object. */\r\nexport abstract class WindowRef {\r\n get nativeWindow(): Window | object {\r\n throw new Error('Not implemented.');\r\n }\r\n}\r\n\r\n/* Define class that implements the abstract class and returns the native window object. */\r\nexport class BrowserWindowRef extends WindowRef {\r\n constructor() {\r\n super();\r\n }\r\n\r\n get nativeWindow(): Window | object {\r\n return window;\r\n }\r\n}\r\n\r\n/* Create an factory function that returns the native window object. */\r\nexport const windowFactory = (\r\n browserWindowRef: BrowserWindowRef,\r\n platformId: object\r\n): Window | object => {\r\n if (isPlatformBrowser(platformId)) {\r\n return browserWindowRef.nativeWindow;\r\n }\r\n return new Object();\r\n};\r\n\r\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\r\nconst browserWindowProvider: ClassProvider = {\r\n provide: WindowRef,\r\n useClass: BrowserWindowRef\r\n};\r\n\r\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\r\nconst windowProvider: FactoryProvider = {\r\n provide: WINDOW,\r\n useFactory: windowFactory,\r\n deps: [WindowRef, PLATFORM_ID]\r\n};\r\n\r\n/* Create an array of providers. */\r\nexport const WINDOW_PROVIDERS = [browserWindowProvider, windowProvider];\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\r\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\r\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { CheckboxComponent } from './checkbox/checkbox.component';\r\nimport { DatetimeComponent } from './datetime/datetime.component';\r\nimport { FilterComponent } from './filter/filter.component';\r\nimport { GeolocationComponent } from './geolocation/geolocation.component';\r\nimport { InputComponent } from './input/input.component';\r\nimport { MapComponent } from './map/map.component';\r\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\r\nimport { LuxModalWindowComponent } from './modal/modal-window';\r\nimport { ModalService } from './modal/modal.service';\r\nimport { PaginationComponent } from './pagination/pagination.component';\r\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\r\nimport { SelectComponent } from './select/select.component';\r\nimport { TooltipComponent } from './tooltip/tooltip.component';\r\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\r\nimport { TooltipService } from './tooltip/tooltip.service';\r\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\r\nimport { WINDOW_PROVIDERS } from './window/window.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\r\n imports: [\r\n FormsModule,\r\n FilterComponent,\r\n GeolocationComponent,\r\n InputComponent,\r\n AutocompleteListComponent,\r\n AutocompleteComponent,\r\n CheckboxComponent,\r\n DatetimeComponent,\r\n LuxBreadcrumbComponent,\r\n LuxTooltipDirective,\r\n LuxModalWindowComponent,\r\n LuxModalBackdropComponent,\r\n MapComponent,\r\n PaginationComponent,\r\n RadiogroupComponent,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n SelectComponent,\r\n CommonModule,\r\n TooltipComponent,\r\n VoiceRecognitionDirective\r\n ],\r\n exports: [\r\n AutocompleteComponent,\r\n AutocompleteListComponent,\r\n FilterComponent,\r\n CheckboxComponent,\r\n DatetimeComponent,\r\n InputComponent,\r\n GeolocationComponent,\r\n LuxTooltipDirective,\r\n MapComponent,\r\n SelectComponent,\r\n PaginationComponent,\r\n RadiogroupComponent,\r\n VoiceRecognitionDirective\r\n ]\r\n})\r\nexport class LuxModule {}\r\n","/*\n * Public API Surface of lux\n */\n\nexport { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport {\n BreadcrumbItem,\n LuxBreadcrumbComponent\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from './lib/datasource';\nexport { DatetimeComponent } from './lib/datetime/datetime.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { GeolocationComponent } from './lib/geolocation/geolocation.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { LuxModule } from './lib/lux.module';\nexport { MapComponent } from './lib/map/map.component';\nexport { ModalRef } from './lib/modal/modal-ref';\nexport { ModalService } from './lib/modal/modal.service';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport {\n RadiogroupComponent,\n RadioItem\n} from './lib/radiogroup/radiogroup.component';\nexport { SelectComponent } from './lib/select/select.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { VoiceRecognitionDirective } from './lib/voice-recognition/voice-recognition.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0_1","i1","i2"],"mappings":"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"}