@metadev/lux 21.0.0 → 22.0.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.
- package/fesm2022/metadev-lux.mjs +207 -187
- package/fesm2022/metadev-lux.mjs.map +1 -1
- package/package.json +7 -6
- package/{index.d.ts → types/metadev-lux.d.ts} +122 -167
|
@@ -1 +1 @@
|
|
|
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","\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: [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 ChangeDetectorRef,\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 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 = false;\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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\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 private cdr = inject(ChangeDetectorRef);\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 setTimeout(() => {\r\n this.syncModel();\r\n });\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","\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: [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\n\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: []\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","\r\nimport { Component, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n imports: [],\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 { 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: [],\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']) backdropClick(event): void {\r\n const btn: HTMLElement = event.target;\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 ChangeDetectorRef,\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 private cdr = inject(ChangeDetectorRef);\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 = false;\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 this.cdr.markForCheck();\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 [disabled]=\"disabled === true\"\r\n [readonly]=\"readonly === true\"\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 [disabled]=\"disabled === true\"\r\n [readonly]=\"readonly === true\"\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","\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: [],\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","\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: [],\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","\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: [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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"}
|
|
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 | null | undefined): 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 | null => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substring(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) ?? 1) -\r\n (numberOfDecimalDigits(moduloString) ?? 0);\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> | null = null;\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: any): 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 - containerRect.top + 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> | null): 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 | null): 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 | null {\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 const selected = selectElement(this.completionList, text);\r\n this.focusItem = selected;\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 = (\r\n data: DataSource<any, string>,\r\n id: any\r\n): string | null => {\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> | null => {\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\nexport interface AutocompleteTranslations {\r\n placeholder: string;\r\n deleteLabelTemplate: string;\r\n addMessage: string;\r\n}\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: { [lang: string]: AutocompleteTranslations } = {\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 | undefined;\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: unknown): 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 const i18n = (this.literals as any)[this.lang];\r\n return (this.deleteLabelTemplate ?? i18n.deleteLabelTemplate).replace(\r\n '<<label>>',\r\n label\r\n );\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 { 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: [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 | null\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(\r\n activedRouteSnapshot: ActivatedRouteSnapshot\r\n ): string | null {\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 ChangeDetectorRef,\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 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\nexport interface CheckboxTranslations {\r\n yesLabel: string;\r\n noLabel: string;\r\n}\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 = false;\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 this.cdr.markForCheck();\r\n }\r\n\r\n get tabindexValue(): string | undefined {\r\n return this.disabled ? undefined : '0';\r\n }\r\n\r\n @Input() label: string | undefined = undefined;\r\n @Input() name: string | undefined = undefined;\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 this.cdr.markForCheck();\r\n }\r\n @Input() inputId: string | undefined;\r\n\r\n literals: { [lang: string]: CheckboxTranslations } = {\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 private cdr = inject(ChangeDetectorRef);\r\n\r\n // ControlValueAccessor Interface\r\n onChange = (value: any): 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 setTimeout(() => {\r\n this.syncModel();\r\n });\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\r\nexport interface DatetimeTranslations {\r\n required: string;\r\n min: string;\r\n max: string;\r\n}\r\n\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 | undefined = undefined;\r\n private _required: boolean | undefined = undefined;\r\n private _value: string | undefined = undefined;\r\n\r\n public dateValue?: string = undefined;\r\n public timeValue?: string = undefined;\r\n\r\n public userErrors: { [lang: string]: DatetimeTranslations } = {\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 | undefined;\r\n @Input('aria-label') public ariaLabel: string | undefined;\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(): 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 | undefined) {\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 = undefined;\r\n this.setDateInControl(undefined);\r\n this.setTimeInControl(undefined);\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 | undefined {\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: any): 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 | undefined): void {\r\n // this.dateInput.nativeElement.value = date;\r\n this.dateValue = date;\r\n }\r\n private setTimeInControl(time: string | undefined): 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(undefined);\r\n this.setTimeInControl(undefined);\r\n this.value = undefined;\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 = undefined;\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 {\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: [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 | undefined;\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 | undefined;\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: any): 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 = undefined;\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';\r\nimport { from, Observable, of, shareReplay } from 'rxjs';\r\n\r\nlet loading$: Observable<boolean> | null = null;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OpenLayerLoaderService {\r\n load(): Observable<boolean> {\r\n if ((window as any).ol) {\r\n return of(true);\r\n }\r\n\r\n if (!loading$) {\r\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\r\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\r\n loadCss(openLayerCssUrl, () => {});\r\n loading$ = from(\r\n new Promise<boolean>((resolve, _) => {\r\n loadScript(openLayerJsUrl, () => resolve(true));\r\n })\r\n ).pipe(shareReplay(1));\r\n }\r\n return loading$;\r\n }\r\n}\r\n\r\n/** Dynamically load a script from url and return a callback */\r\nconst loadScript = (url: string, callback: () => void): void => {\r\n const script: any = document.createElement('script');\r\n script.type = 'text/javascript';\r\n\r\n if (script.readyState) {\r\n // for old IE\r\n script.onreadystatechange = (): void => {\r\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\r\n script.onreadystatechange = null;\r\n callback();\r\n }\r\n };\r\n } else {\r\n // Others browsers\r\n script.onload = (): void => {\r\n callback();\r\n };\r\n }\r\n script.src = url;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n};\r\n\r\n/** Dynamically load css from url and return a callback */\r\nconst loadCss = (url: string, callback: () => void): void => {\r\n const link: any = document.createElement('link');\r\n link.type = 'text/css';\r\n link.rel = 'stylesheet';\r\n link.type = 'text/javascript';\r\n link.href = url;\r\n link.onload = (): void => {\r\n callback();\r\n };\r\n document.getElementsByTagName('head')[0].appendChild(link);\r\n};\r\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 { 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: []\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: string | undefined;\r\n\r\n _zoom: number | undefined;\r\n @Input()\r\n set zoom(zoom: number | undefined) {\r\n if (zoom != null && !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 | undefined {\r\n return this._zoom;\r\n }\r\n\r\n _center: GeoPoint | undefined;\r\n @Input()\r\n set center(center: GeoPoint | undefined) {\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 | undefined {\r\n return this._center;\r\n }\r\n\r\n _readonly: boolean | undefined;\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[] | undefined;\r\n @Input()\r\n private set markerCoordinates(markerCoordinates: number[] | undefined) {\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[] | undefined {\r\n return this._markerCoordinates;\r\n }\r\n @Input()\r\n set markerPoint(markerPoint: GeoPoint | undefined) {\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 ?? [0, 0]\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() ?? undefined;\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[] | undefined {\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 { Component, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n imports: [],\r\n selector: 'lux-modal-backdrop',\r\n template: ''\r\n})\r\nexport class LuxModalBackdropComponent {\r\n @Input() backdropClass: string | undefined;\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';\r\nimport { LuxModalWindowComponent } from './modal-window';\r\nimport { ContentRef } from './util';\r\nimport { LuxModalBackdropComponent } from './modal-backdrop';\r\n\r\nexport class ActiveModal {\r\n close(result?: any): void {}\r\n dismiss(reason?: any): void {}\r\n}\r\n\r\nexport class ModalRef {\r\n private _resolve: ((result?: any) => void) | undefined = undefined;\r\n private _reject: ((reason?: any) => void) | undefined = undefined;\r\n\r\n /**\r\n * The instance of a component used for the modal content.\r\n *\r\n * When a `TemplateRef` is used as the content, will return `undefined`.\r\n */\r\n get componentInstance(): any {\r\n if (this._contentRef.componentRef) {\r\n return this._contentRef.componentRef.instance;\r\n }\r\n }\r\n\r\n /**\r\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\r\n */\r\n result: Promise<any>;\r\n\r\n constructor(\r\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\r\n private _contentRef: ContentRef,\r\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\r\n private _beforeDismiss?: () => any\r\n ) {\r\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\r\n this.dismiss(reason);\r\n });\r\n\r\n this.result = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n });\r\n this.result.then(null, () => {});\r\n }\r\n\r\n /**\r\n * Closes the modal with an optional `result` value.\r\n *\r\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\r\n */\r\n close(result?: any): void {\r\n if (this._windowCmptRef) {\r\n if (this._resolve) {\r\n this._resolve(result);\r\n }\r\n this._removeModalElements();\r\n }\r\n }\r\n\r\n private _dismiss(reason?: any): void {\r\n if (this._reject) {\r\n this._reject(reason);\r\n }\r\n this._removeModalElements();\r\n }\r\n\r\n /**\r\n * Dismisses the modal with an optional `reason` value.\r\n *\r\n * The `NgbModalRef.result` promise will be rejected with the provided value.\r\n */\r\n dismiss(reason?: any): void {\r\n if (this._windowCmptRef) {\r\n if (!this._beforeDismiss) {\r\n this._dismiss(reason);\r\n } else {\r\n const dismiss = this._beforeDismiss();\r\n if (dismiss && dismiss.then) {\r\n dismiss.then(\r\n (result: unknown) => {\r\n if (result !== false) {\r\n this._dismiss(reason);\r\n }\r\n },\r\n () => {}\r\n );\r\n } else if (dismiss !== false) {\r\n this._dismiss(reason);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _removeModalElements(): void {\r\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\r\n windowNativeEl.parentNode.removeChild(windowNativeEl);\r\n this._windowCmptRef.destroy();\r\n\r\n if (this._backdropCmptRef) {\r\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\r\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\r\n this._backdropCmptRef.destroy();\r\n }\r\n\r\n if (this._contentRef && this._contentRef.viewRef) {\r\n this._contentRef.viewRef.destroy();\r\n }\r\n\r\n (this._windowCmptRef as any) = undefined;\r\n (this._backdropCmptRef as any) = undefined;\r\n (this._contentRef as any) = undefined;\r\n }\r\n}\r\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 { 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: [],\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 | null | undefined; // element that is focused prior to modal opening\r\n\r\n @Input() ariaDescribedBy: string | undefined;\r\n @Input() ariaLabelledBy: string | undefined;\r\n @Input() backdrop: boolean | string = false;\r\n @Input() keyboard = true;\r\n @Input() windowClass: string | undefined;\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():\r\n | string\r\n | undefined {\r\n return this.ariaLabelledBy;\r\n }\r\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy():\r\n | string\r\n | undefined {\r\n return this.ariaDescribedBy;\r\n }\r\n @HostListener('click', ['$event']) backdropClick(event: any): void {\r\n const btn: HTMLElement = event.target;\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: any): void {\r\n if (this.keyboard && !event.defaultPrevented) {\r\n this.dismiss(ModalDismissReasons.Esc);\r\n }\r\n }\r\n\r\n dismiss(reason: any): 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: any;\r\n if (\r\n elWithFocus &&\r\n (elWithFocus as any)[FOCUS] &&\r\n body.contains(elWithFocus)\r\n ) {\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 ComponentRef,\r\n EnvironmentInjector,\r\n Injectable,\r\n Injector,\r\n RendererFactory2,\r\n TemplateRef,\r\n createComponent,\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 _environmentInjector = inject(EnvironmentInjector);\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(content: any, options: LuxModalOptions): 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(content, activeModal)!;\r\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> | null =\r\n config.backdrop ? this._attachBackdrop(containerEl) : null;\r\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\r\n this._attachWindowComponent(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 as any)[optionName])) {\r\n (windowInstance as any)[optionName] = (config as any)[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 as any)[optionName])) {\r\n (backgroudInstance as any)[optionName] = (config as any)[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 content: any,\r\n activeModal: ActiveModal\r\n ): ContentRef | undefined {\r\n if (content instanceof TemplateRef) {\r\n return this.createFromTemplateRef(content, activeModal);\r\n }\r\n return undefined;\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: unknown): void {\r\n activeModal.close(result);\r\n },\r\n\r\n dismiss(reason: unknown): 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 containerEl: any\r\n ): ComponentRef<LuxModalBackdropComponent> {\r\n const backdropCmptRef = createComponent(LuxModalBackdropComponent, {\r\n environmentInjector: this._environmentInjector,\r\n elementInjector: this._injector\r\n });\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 containerEl: any,\r\n contentRef: any\r\n ): ComponentRef<LuxModalWindowComponent> {\r\n const windowCmptRef = createComponent(LuxModalWindowComponent, {\r\n environmentInjector: this._environmentInjector,\r\n elementInjector: this._injector,\r\n projectableNodes: 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 { Injectable, TemplateRef, inject } 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\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(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 = (\r\n instance.lastQueriesWithResults.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[] | undefined {\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\nexport interface GeoTranslations {\r\n lat: string;\r\n lon: string;\r\n selectLocation: string;\r\n location: string;\r\n selectAction: string;\r\n cancelAction: string;\r\n closeAction: string;\r\n typeToSearch: string;\r\n cardinalPoints: {\r\n north: string;\r\n south: string;\r\n east: string;\r\n west: string;\r\n };\r\n userErrors: {\r\n required: string;\r\n minLatitude: string;\r\n maxLatitude: string;\r\n minLongitude: string;\r\n maxLongitude: string;\r\n };\r\n}\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 = false;\r\n private _required = false;\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: { [key: string]: GeoTranslations } = {\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 | undefined;\r\n @Input()\r\n public maxLatitude: number | undefined;\r\n @Input()\r\n public minLongitude: number | undefined;\r\n @Input()\r\n public maxLongitude: number | undefined;\r\n @Input()\r\n public step: number | undefined;\r\n @Input()\r\n public zoom: number | undefined;\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 | undefined;\r\n @Input('aria-label') public ariaLabel: string | undefined;\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 | undefined) {\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 = undefined;\r\n this.setLatitudeInControl(undefined);\r\n this.setLongitudeInControl(undefined);\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 | undefined {\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 | undefined): void {\r\n // this.latitude.nativeElement.value = latitude;\r\n this.latitudeValue = latitude;\r\n }\r\n private setLongitudeInControl(longitude: number | undefined): void {\r\n // this.longitude.nativeElement.value = longitude;\r\n this.longitudeValue = longitude;\r\n }\r\n clear(): void {\r\n this.setLatitudeInControl(undefined);\r\n this.setLongitudeInControl(undefined);\r\n this.value = undefined;\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 (\r\n exists(this.minLongitude) &&\r\n this.longitudeValue! < this.minLongitude!\r\n ) {\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 (\r\n exists(this.maxLongitude) &&\r\n this.longitudeValue! > this.maxLongitude!\r\n ) {\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 ?? 1 // review value 1??\r\n );\r\n const newLongitude = roundToMultipleOf(\r\n newLatitudeAndLongitude[0],\r\n this.step ?? 1 // review value 1??\r\n );\r\n if (this.disabled || this.readonly) {\r\n return;\r\n }\r\n if (!exists(newLatitudeAndLongitude)) {\r\n this.value = undefined;\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 = undefined;\r\n } else {\r\n this.value = {\r\n type: 'Point',\r\n coordinates: [\r\n this.value ? this.value?.coordinates[0] : 0,\r\n newLatitudeValue ?? 0\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 = undefined;\r\n } else {\r\n this.value = {\r\n type: 'Point',\r\n coordinates: [\r\n newLongitudeValue ?? 0,\r\n this.value ? this.value.coordinates[1] : 0\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 const i18n = (this.i18n as any)[this.lang];\r\n return this._disabled || !!this.readonly\r\n ? i18n.location\r\n : i18n.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 }\r\n @if (isValidNumber(latitudeValue) && latitudeValue! < 0) {\r\n <span>{{ i18n[lang].cardinalPoints.south }}</span>\r\n }\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 }\r\n @if (isValidNumber(longitudeValue) && longitudeValue! < 0) {\r\n <span>{{ i18n[lang].cardinalPoints.west }}</span>\r\n }\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}\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 }\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 }\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 }\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 }\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 }\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 }\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';\r\n\r\n/**\r\n * A service that holds the functionality for advanced handling of regular expressions\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class RegexpService {\r\n constructor() {}\r\n\r\n private removeOuterRoundBrackets(regularExpressionString: string): string {\r\n while (\r\n regularExpressionString[0] === '(' &&\r\n regularExpressionString[regularExpressionString.length - 1] === ')'\r\n ) {\r\n regularExpressionString = regularExpressionString.slice(\r\n 1,\r\n regularExpressionString.length - 1\r\n );\r\n }\r\n return regularExpressionString;\r\n }\r\n\r\n private isQuantifier(quantifier: string): boolean {\r\n switch (quantifier) {\r\n case '{':\r\n case '?':\r\n case '+':\r\n case '*':\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private parseMinimalAmountOfQuantifier(quantifier: string): number {\r\n switch (quantifier[0]) {\r\n case '?':\r\n case '*':\r\n return 0;\r\n case '+':\r\n return 1;\r\n case '{':\r\n for (let index = 1; index < quantifier.length; ++index) {\r\n if (quantifier[index] < '0' || quantifier[index] > '9') {\r\n return Number(quantifier.slice(1, index));\r\n }\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n private sliceRegexByOr(regularExpressionString: string): string[] {\r\n const result = [];\r\n let slicedRegex: string;\r\n let lastSliceIndex = 0;\r\n let roundBracketCount = 0;\r\n let squareBracketCount = 0;\r\n let curlyBracketCount = 0;\r\n let index = 0;\r\n for (; index < regularExpressionString.length; ++index) {\r\n switch (regularExpressionString[index]) {\r\n case '\\\\':\r\n // escape sequence; skip the next character\r\n ++index;\r\n break;\r\n case '(':\r\n roundBracketCount += 1;\r\n break;\r\n case ')':\r\n roundBracketCount -= 1;\r\n break;\r\n case '[':\r\n squareBracketCount += 1;\r\n break;\r\n case ']':\r\n squareBracketCount -= 1;\r\n break;\r\n case '{':\r\n curlyBracketCount += 1;\r\n break;\r\n case '}':\r\n curlyBracketCount -= 1;\r\n break;\r\n case '|':\r\n if (\r\n roundBracketCount === 0 &&\r\n squareBracketCount === 0 &&\r\n curlyBracketCount === 0\r\n ) {\r\n slicedRegex = this.removeOuterRoundBrackets(\r\n regularExpressionString.slice(lastSliceIndex, index)\r\n );\r\n result.push(slicedRegex);\r\n lastSliceIndex = index + 1;\r\n }\r\n break;\r\n }\r\n }\r\n slicedRegex = this.removeOuterRoundBrackets(\r\n regularExpressionString.slice(lastSliceIndex, index)\r\n );\r\n result.push(slicedRegex);\r\n return result;\r\n }\r\n\r\n private sliceRegexByThen(regularExpressionString: string): string[][] {\r\n // the actual result\r\n const resultStart = [];\r\n // the remainder of the regex in each case\r\n const resultRemainder = [];\r\n let roundBracketCount = 0;\r\n let squareBracketCount = 0;\r\n let curlyBracketCount = 0;\r\n for (let index = 0; index < regularExpressionString.length; ++index) {\r\n switch (regularExpressionString[index]) {\r\n case '\\\\':\r\n // escape sequence; skip the next character\r\n ++index;\r\n break;\r\n case '(':\r\n roundBracketCount += 1;\r\n break;\r\n case ')':\r\n roundBracketCount -= 1;\r\n break;\r\n case '[':\r\n squareBracketCount += 1;\r\n break;\r\n case ']':\r\n squareBracketCount -= 1;\r\n break;\r\n case '{':\r\n curlyBracketCount += 1;\r\n break;\r\n case '}':\r\n curlyBracketCount -= 1;\r\n break;\r\n }\r\n if (\r\n roundBracketCount === 0 &&\r\n squareBracketCount === 0 &&\r\n curlyBracketCount === 0\r\n ) {\r\n if (!this.isQuantifier(regularExpressionString[index + 1])) {\r\n resultStart.push(regularExpressionString.slice(0, index + 1));\r\n resultRemainder.push(regularExpressionString.slice(index + 1));\r\n } else {\r\n // let minimalAmountOfRepeats = parseMinimalAmountOfQuantifier(regularExpressionString.slice(index + 1));\r\n // TODO\r\n }\r\n }\r\n }\r\n return [resultStart, resultRemainder];\r\n }\r\n\r\n suggestion(beginning: string, regularExpressionString: string): string {\r\n if (new RegExp(regularExpressionString).test(beginning)) {\r\n // TODO: RETURN AN EMPTY STRING\r\n return 'YA ES IGUAL, NO HAY MÁS QUE SUGERIR';\r\n }\r\n const regexOptions = this.sliceRegexByOr(regularExpressionString);\r\n if (regexOptions.length > 1) {\r\n for (\r\n let regexOptionIndex = 0;\r\n regexOptionIndex < regexOptions.length;\r\n ++regexOptionIndex\r\n ) {\r\n const regexParts = this.sliceRegexByThen(\r\n regexOptions[regexOptionIndex]\r\n );\r\n const regexPartsStarts = regexParts[0];\r\n const regexPartsRemainders = regexParts[1];\r\n // for each option, test if the first part of the regex matches\r\n // if it doesn't, continue\r\n // if it does, keep checking until what part it matches\r\n if (!new RegExp(regexPartsStarts[0]).test(beginning)) {\r\n // if there are no more options\r\n if (regexOptionIndex === regexOptions.length - 1) {\r\n // we return the first option, but we could return any option\r\n\r\n // TODO: RETURN ANY TEXT THAT MATCHES regexOptions[0]\r\n return regexOptions[0];\r\n }\r\n } else {\r\n for (\r\n let regexPartIndex = 1;\r\n regexPartIndex < regexPartsStarts.length;\r\n ++regexPartIndex\r\n ) {\r\n if (!new RegExp(regexPartsStarts[regexPartIndex]).test(beginning)) {\r\n // TODO: RETURN ANY TEXT THAT MATCHES regexPartsRemainders[regexPartIndex - 1]\r\n return regexPartsRemainders[regexPartIndex - 1];\r\n }\r\n }\r\n }\r\n }\r\n } else if (regexOptions.length === 1) {\r\n const regexParts = this.sliceRegexByThen(regexOptions[0]);\r\n const regexPartsStarts = regexParts[0];\r\n const regexPartsRemainders = regexParts[1];\r\n if (!new RegExp(regexPartsStarts[0]).test(beginning)) {\r\n // TODO: RETURN ANY TEXT THAT MATCHES regularExpressionString\r\n return regularExpressionString;\r\n } else {\r\n for (\r\n let regexPartIndex = 1;\r\n regexPartIndex < regexPartsStarts.length;\r\n ++regexPartIndex\r\n ) {\r\n if (!new RegExp(regexPartsStarts[regexPartIndex]).test(beginning)) {\r\n // TODO: RETURN ANY TEXT THAT MATCHES regexPartsRemainders[regexPartIndex - 1]\r\n return regexPartsRemainders[regexPartIndex - 1];\r\n }\r\n }\r\n }\r\n }\r\n // TODO: RETURN AN EMPTY STRING\r\n return 'NO DEBERÍA SER POSIBLE';\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\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\r\ninterface UserErrorLiteral {\r\n required: string;\r\n min: string;\r\n max: string;\r\n email: string;\r\n url: string;\r\n color: string;\r\n}\r\n\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 private cdr = inject(ChangeDetectorRef);\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 = false;\r\n private _value: any = '';\r\n private _type: string | undefined;\r\n private _placeholder: string | undefined;\r\n private _pattern?: string = undefined;\r\n private _regexp?: RegExp = undefined;\r\n private _currency: string | undefined;\r\n private _required: boolean | undefined;\r\n\r\n public userErrors: { [key: string]: UserErrorLiteral } = {\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 | undefined;\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 | undefined;\r\n @Input('aria-label') public ariaLabel: string | undefined;\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 this.cdr.markForCheck();\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 | undefined {\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: 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 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}\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 [disabled]=\"disabled === true\"\r\n [readonly]=\"readonly === true\"\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}\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 [disabled]=\"disabled === true\"\r\n [readonly]=\"readonly === true\"\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}\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}\r\n@if (isPercentage()) {\r\n <div class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\r\n <span>%</span>\r\n </div>\r\n}\r\n@if (isPermillage()) {\r\n <div class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\r\n <span>‰</span>\r\n </div>\r\n}\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}\r\n@if (isColor()) {\r\n <div\r\n class=\"postfix rounded-right bordered transparency\"\r\n [ngClass]=\"className\"\r\n >\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}\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 }\r\n @if (lastErrors.email) {\r\n <div>{{ userErrors[this.lang].email }}</div>\r\n }\r\n @if (lastErrors.url) {\r\n <div>{{ userErrors[this.lang].url }}</div>\r\n }\r\n @if (lastErrors.min) {\r\n <div>\r\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\r\n </div>\r\n }\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 { 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: [],\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 | undefined;\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 ComponentRef,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n EnvironmentInjector,\r\n Injectable,\r\n Injector,\r\n TemplateRef,\r\n createComponent,\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 _environmentInjector = inject(EnvironmentInjector);\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 | null {\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 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 if (tooltipContentRef.viewRef) {\r\n this._applicationRef.detachView(tooltipContentRef.viewRef);\r\n }\r\n if (tooltipContentRef.componentRef) {\r\n tooltipContentRef.componentRef.destroy();\r\n }\r\n }\r\n\r\n private getTooltipContentRef(content: any): TooltipContentRef | null {\r\n if (!content) {\r\n // nothing to show\r\n return null;\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> = createComponent(component, {\r\n environmentInjector: this._environmentInjector,\r\n elementInjector: this._injector\r\n });\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: number;\r\n let left: number;\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 OnDestroy,\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 implements OnDestroy {\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 | null;\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 | null {\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 ngOnDestroy(): 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","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\ninterface PaginationLiterals {\r\n first: string;\r\n previous: string;\r\n next: string;\r\n last: string;\r\n}\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: { [key: string]: PaginationLiterals } = {\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 | undefined;\r\n public previous: string | undefined;\r\n public next: string | undefined;\r\n public last: string | undefined;\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 = 'en';\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 {\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: [],\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: any): 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 {\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: [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 = (_) => null;\r\n\r\n newEntry = '';\r\n error: string | null = 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: any): 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 = 'en-US';\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: any): void =>\r\n 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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"}
|