@apexara/ng-components 1.0.0 → 1.0.2-test.1
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/README.md +395 -395
- package/fesm2022/apexara-ng-components-button.mjs +9 -9
- package/fesm2022/apexara-ng-components-button.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-carousel.mjs +6 -6
- package/fesm2022/apexara-ng-components-carousel.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-checkbox.mjs +9 -9
- package/fesm2022/apexara-ng-components-checkbox.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-chip.mjs +6 -6
- package/fesm2022/apexara-ng-components-chip.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-datepicker.mjs +51 -51
- package/fesm2022/apexara-ng-components-datepicker.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-dialog.mjs +7 -7
- package/fesm2022/apexara-ng-components-dialog.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-drawer.mjs +7 -7
- package/fesm2022/apexara-ng-components-drawer.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-expander.mjs +7 -7
- package/fesm2022/apexara-ng-components-expander.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-image.mjs +11 -11
- package/fesm2022/apexara-ng-components-image.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-input.mjs +12 -12
- package/fesm2022/apexara-ng-components-input.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-listbox.mjs +9 -9
- package/fesm2022/apexara-ng-components-listbox.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-radiobutton.mjs +9 -9
- package/fesm2022/apexara-ng-components-radiobutton.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-select.mjs +15 -15
- package/fesm2022/apexara-ng-components-select.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-services.mjs +7 -7
- package/fesm2022/apexara-ng-components-services.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-snackbar.mjs +20 -20
- package/fesm2022/apexara-ng-components-snackbar.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-table.mjs +68 -41
- package/fesm2022/apexara-ng-components-table.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-textarea.mjs +9 -9
- package/fesm2022/apexara-ng-components-textarea.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-tooltip.mjs +9 -9
- package/fesm2022/apexara-ng-components-tooltip.mjs.map +1 -1
- package/package.json +1 -1
- package/types/apexara-ng-components-button.d.ts +7 -7
- package/types/apexara-ng-components-carousel.d.ts +4 -4
- package/types/apexara-ng-components-checkbox.d.ts +7 -7
- package/types/apexara-ng-components-chip.d.ts +4 -4
- package/types/apexara-ng-components-datepicker.d.ts +12 -12
- package/types/apexara-ng-components-dialog.d.ts +4 -4
- package/types/apexara-ng-components-drawer.d.ts +4 -4
- package/types/apexara-ng-components-expander.d.ts +4 -4
- package/types/apexara-ng-components-image.d.ts +8 -8
- package/types/apexara-ng-components-input.d.ts +9 -9
- package/types/apexara-ng-components-listbox.d.ts +12 -12
- package/types/apexara-ng-components-radiobutton.d.ts +11 -11
- package/types/apexara-ng-components-select.d.ts +13 -13
- package/types/apexara-ng-components-services.d.ts +4 -4
- package/types/apexara-ng-components-snackbar.d.ts +12 -12
- package/types/apexara-ng-components-table.d.ts +30 -26
- package/types/apexara-ng-components-textarea.d.ts +9 -9
- package/types/apexara-ng-components-tooltip.d.ts +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apexara-ng-components-select.mjs","sources":["../../../../projects/apexara/ng-components/select/src/select.component.ts","../../../../projects/apexara/ng-components/select/src/select.component.html","../../../../projects/apexara/ng-components/select/apexara-ng-components-select.ts"],"sourcesContent":["import { \n Component, OnInit, ViewChild, Input,\n Output, inject, PLATFORM_ID, ElementRef,\n ChangeDetectorRef, HostListener, EventEmitter, IterableDiffers,\n OnDestroy, AfterViewInit, SimpleChanges, IterableDiffer} from '@angular/core';\nimport { NgClass, isPlatformServer } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule, AbstractControl } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\n\nimport { Subscription, debounceTime, fromEvent, tap } from 'rxjs';\n\nimport { IpiChipComponent } from '@apexara/ng-components/chip';\nimport { IpiImageComponent } from '@apexara/ng-components/image';\nimport { IpiCheckboxComponent } from '@apexara/ng-components/checkbox';\n\nimport { OSService, MobileOS } from '@apexara/ng-components/services';\n\nimport { IpiTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface IpiSelectOptions {\n label: string;\n tooltip?: string;\n data: IpiSelectData[];\n multiple?: boolean;\n counterAsValue?: boolean;\n placeholder?: string;\n helperText?: string;\n helperRoute?: string;\n prefixImg?: string;\n suffixImg?: string;\n formGroup?: FormGroup;\n searchable?: boolean;\n formControlName?: string;\n errors?: ControlErrors;\n maxDropdownHeightPx?: number; // optional hard max height in px\n}\n\nexport interface IpiSelectData {\n label: string;\n value: any;\n description?: string;\n isHover?: boolean;\n}\n\nexport interface ControlErrors {\n [x: string]: string;\n}\n\n@Component({\n selector: 'ipi-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n imports: [\n NgClass,\n RouterLink,\n FormsModule,\n ScrollingModule,\n IpiChipComponent,\n IpiImageComponent,\n IpiTooltipDirective,\n ReactiveFormsModule,\n IpiCheckboxComponent,\n ]\n})\n\nexport class IpiSelectComponent implements OnInit, AfterViewInit, OnDestroy {\n\n @ViewChild('input') input: ElementRef<HTMLInputElement> | null = null;\n\n @ViewChild('label') label: ElementRef<HTMLLabelElement> | null = null;\n @ViewChild('dropdown') dropdown: CdkVirtualScrollViewport | null = null;\n @ViewChild('inputWrapper') inputWrapper: ElementRef<HTMLInputElement> | null = null;\n\n @Input() options!: IpiSelectOptions;\n\n\n @Output() selectChange = new EventEmitter<IpiSelectData>();\n @Output() helperTextChange = new EventEmitter<void>();\n\n constructor(\n private osService: OSService,\n private elementRef: ElementRef,\n private iterableDiffers: IterableDiffers,\n private changeDetectorRef: ChangeDetectorRef) {\n\n this.changeDetectorRef.detach();\n\n this.dataDiffer = this.iterableDiffers.find([]).create<IpiSelectData>();\n\n this.handleEvents();\n }\n\n public firstDropdown = 0;\n public isDropdown = false;\n public control!: AbstractControl;\n\n public tooltipPosition = TooltipPosition;\n\n private platformId = inject(PLATFORM_ID);\n\n private isDropdownReversed = false;\n\n private shouldPreventEvents = false;\n\n private documentKeyupValue = '';\n private documentKeyupValueResetTime = 1000;\n private documentKeyUpSubscription: Subscription | null = null;\n\n private dataDiffer!: IterableDiffer<IpiSelectData>;\n\n private controlSubscription: Subscription | null = null;\n\n public filteredData: IpiSelectData[] = [];\n\n private lastSearch = '';\n\n private keyListener = (event: KeyboardEvent) => this.blockArrowScroll(event);\n private wheelListener = (event: WheelEvent | TouchEvent) => this.blockScroll(event);\n\n private scrollBlockersAttached = false;\n\n // Virtual scroll config for options list\n public optionItemSizePx = 48; // must match .dropdown .option height in CSS\n public maxVisibleOptions = 8;\n public dropdownHeightPx = this.optionItemSizePx;\n\n public ngOnInit(): void {\n this.control = this.getControl()!;\n\n this.changeDetectorRef.detectChanges();\n\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.documentKeyUpSubscription = fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(\n tap(event => { this.keyup(event) }),\n debounceTime(this.documentKeyupValueResetTime),\n )\n .subscribe(() => { this.documentKeyupValue = '' });\n }\n\n public ngDoCheck(): void {\n const data = this.options?.data || [];\n const diff = this.dataDiffer.diff(data);\n\n if (!diff) {\n return;\n }\n\n this.filteredData = [...data];\n this.changeDetectorRef.detectChanges();\n }\n\n public ngAfterViewInit(): void {\n this.filteredData = [...this.options.data];\n\n setTimeout(() => {\n if (this.options.formGroup && this.options.formControlName) { \n this.setVisibleValue(this.options.formGroup.controls[this.options.formControlName].value);\n }\n })\n\n if (this.options.searchable) {\n this.controlSubscription = this.control.valueChanges.subscribe((value) => {\n this.setVisibleValue(value);\n\n setTimeout(() => {\n this.changeDetectorRef.detectChanges();\n })\n })\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (!changes['options'] || changes['options'].firstChange) {\n return;\n }\n\n this.updateDropdownHeight();\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.detachGlobalScrollBlockers();\n window.removeEventListener('keydown', this.keyListener);\n\n if (this.documentKeyUpSubscription) {\n this.documentKeyUpSubscription.unsubscribe();\n }\n\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n public onHelperText(): void {\n this.helperTextChange.emit();\n }\n\n public setValue(value: any): void {\n this.changeDetectorRef.detectChanges();\n\n if (!this.options.multiple) {\n value = this.removeProperty(value, 'isHover');\n }\n\n this.control.setValue(value);\n this.input!.nativeElement.value = value.label ? value.label : '';\n\n this.selectChange.emit(value);\n\n if (value.value == null) {\n return;\n }\n\n setTimeout(() => {\n this.removeDropdown();\n\n if (!this.options.multiple) {\n this.lastSearch = '';\n }\n })\n }\n\n public setMultipleValue(data: any, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n const newValue = this.control.value;\n let indexOfValue = -1;\n\n for (let i = 0; i < newValue.length; i++) {\n if (newValue[i].value === data.value) {\n indexOfValue = i;\n }\n\n if (JSON.stringify(newValue[i].value) === JSON.stringify(data.value)) {\n indexOfValue = i;\n }\n }\n\n if (indexOfValue === -1) {\n newValue.push({ label: data.label, value: data.value });\n } else {\n newValue.splice(indexOfValue, 1);\n }\n\n this.lastSearch = '';\n this.input!.nativeElement.value = '';\n this.filteredData = this.options.data;\n\n this.control.setValue(newValue);\n this.selectChange.emit(newValue);\n }\n\n public setVisibleValue(newValue: any | any[]): void {\n if (newValue === null) {\n this.input!.nativeElement.value = '';\n\n return;\n }\n\n if (this.options.counterAsValue) {\n if (this.options.searchable) {\n return;\n }\n\n if (this.showMultipleCount() > 0) {\n this.input!.nativeElement.value = this.showMultipleCount() + ' selected';\n }\n\n return;\n }\n\n let visibleValue = '';\n\n for (let data of this.filteredData) { \n // when newValue is object and not array\n if (data.value === newValue.value) {\n visibleValue = data.label;\n\n break;\n }\n\n if (this.options.multiple && !this.options.searchable) {\n // when newValue is array\n for (let item of newValue) {\n if (data.value === item.value) {\n visibleValue += item.label + ', ';\n\n break;\n }\n }\n }\n\n if (newValue.value) {\n // Edge case for when we use { label, value } pattern as value\n if (newValue.value.value && this.getControl()?.value.value.value === newValue.value.value) {\n visibleValue = data.label;\n\n break;\n }\n }\n }\n\n this.input!.nativeElement.value = visibleValue;\n\n this.changeDetectorRef.detectChanges();\n }\n\n private updateDropdownHeight(): void {\n if (!this.isDropdown) {\n return;\n }\n\n setTimeout(() => {\n const count = this.filteredData.length;\n const maxRows = this.maxVisibleOptions;\n\n let next = this.optionItemSizePx;\n\n if (count > 0 && count <= maxRows && this.dropdown) {\n const options = this.dropdown.elementRef.nativeElement.querySelectorAll('.option');\n \n let total = 0;\n\n options.forEach((option: any) => {\n const height = option.getBoundingClientRect().height;\n total += isFinite(height) ? height : 0;\n });\n\n next = total;\n } else {\n const rows = Math.min(count, maxRows);\n \n next = Math.max(rows * this.optionItemSizePx, this.optionItemSizePx);\n }\n\n const maxHeight = this.options.maxDropdownHeightPx;\n \n if (maxHeight) {\n next = Math.min(next, Math.max(this.optionItemSizePx, maxHeight));\n }\n\n this.dropdownHeightPx = next;\n this.changeDetectorRef.detectChanges();\n\n setTimeout(() => {\n this.dropdown?.checkViewportSize();\n }, 100)\n\n });\n }\n\n public showMultipleCount(): number {\n if (!this.control.value.length) {\n return 0;\n }\n\n return this.control.value.length;\n }\n\n public isValueSelected(value: IpiSelectData): boolean {\n if (value.value == null || this.control.value == null) {\n return false;\n }\n\n return value.value === this.control.value.value;\n }\n\n public isMultipleSelected(value: IpiSelectData): boolean {\n for (let i = 0; i < this.control.value.length; i++) {\n if (value.value === this.control.value[i]) {\n return true;\n }\n\n if (this.control.value[i].value === value.value) {\n return true;\n }\n\n if (JSON.stringify(this.control.value[i].value) === JSON.stringify(value.value)) {\n return true;\n }\n }\n\n return false;\n }\n\n public activateDropdown(): void {\n if (this.checkIfControlDisabled()) {\n return;\n }\n\n this.isDropdown = true;\n this.input!.nativeElement.focus();\n\n if (this.firstDropdown === 0) {\n this.firstDropdown += 1;\n\n setTimeout(() => this.generateDropdownPosition(true));\n\n // Reattaching is needed to properly update the hovered options by KeyboardEvents\n this.changeDetectorRef.reattach();\n }\n\n this.attachGlobalScrollBlockers();\n this.onSearch(this.lastSearch, false);\n }\n\n @HostListener('document:click', ['$event'])\n public deactivateControl(event: MouseEvent | KeyboardEvent): void {\n if (event instanceof KeyboardEvent) {\n this.removeDropdown();\n\n return;\n }\n\n if (!this.dropdown || !this.inputWrapper) {\n return;\n }\n \n const dropdownRect = this.dropdown.elementRef.nativeElement.getBoundingClientRect();\n const inputWrapperRect = this.inputWrapper.nativeElement.getBoundingClientRect();\n\n const isClickInsideDropdown = this.isWithinBounds(event, dropdownRect);\n const isClickInsideInputWrapper = this.isWithinBounds(event, inputWrapperRect);\n\n if (isClickInsideDropdown || isClickInsideInputWrapper) {\n return;\n }\n \n this.removeDropdown();\n }\n\n public onFocusIn(): void {\n this.shouldPreventEvents = true;\n\n this.activateDropdown();\n\n setTimeout(() => {\n this.shouldPreventEvents = false;\n }, 200);\n }\n\n public onFocusOut(): void {\n this.shouldPreventEvents = true;\n\n setTimeout(() => {\n this.shouldPreventEvents = false;\n }, 200);\n\n this.removeDropdown();\n }\n\n public toggleDropdown(): void {\n if (this.shouldPreventEvents) {\n return;\n }\n\n if (this.isDropdown) {\n this.removeDropdown();\n } else {\n this.activateDropdown();\n }\n }\n\n private generateDropdownPosition(checkRevserse: boolean = false): void {\n if (!this.dropdown) {\n // method will keep executing until dropdown is rendered\n setTimeout(() => this.generateDropdownPosition(true));\n\n return;\n }\n\n const dropdownEl = this.dropdown.elementRef.nativeElement;\n const elementRefRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n elementRefRect.y += window.visualViewport!.offsetTop;\n elementRefRect.x += window.visualViewport!.offsetLeft;\n }\n\n dropdownEl.style.left = elementRefRect.x + 'px';\n dropdownEl.style.width = elementRefRect.width + 'px';\n dropdownEl.style.top = elementRefRect.y + elementRefRect.height + 'px';\n\n if (checkRevserse) {\n if (window.innerHeight < dropdownEl.getBoundingClientRect().bottom) {\n dropdownEl.style.top = 'unset';\n dropdownEl.style.bottom = window.innerHeight - elementRefRect.y + 10 + 'px';\n \n this.isDropdownReversed = true;\n }\n }\n\n if (this.isDropdownReversed) {\n dropdownEl.style.top = 'unset';\n dropdownEl.style.bottom = window.innerHeight - elementRefRect.y + 10 + 'px';\n }\n\n setTimeout(() => {\n this.updateDropdownHeight();\n }, 100);\n\n this.changeDetectorRef.detectChanges();\n }\n\n public removeDropdown(): void {\n this.isDropdown = false;\n this.isDropdownReversed = false;\n this.firstDropdown = 0;\n this.changeDetectorRef.detectChanges();\n\n this.input!.nativeElement.blur();\n\n this.detachGlobalScrollBlockers();\n this.changeDetectorRef.detach();\n }\n\n public handleKeydown(event: any): void {\n if (event.code === 'Backspace') {\n this.onSearch('', true);\n }\n }\n\n public preventFocusChange(event: MouseEvent): void {\n if (this.input?.nativeElement === document.activeElement) {\n event.preventDefault();\n\n return;\n }\n }\n\n public onSearch(value: string, shouldResetHover?: boolean): void {\n this.lastSearch = value;\n\n if (!value) {\n // Reset to original data if input is empty\n this.filteredData = [...this.options.data];\n\n this.updateDropdownHeight();\n\n return;\n }\n \n const searchTerm = value.toLowerCase();\n\n this.filteredData = this.options.data.filter(item =>\n item.label.toLowerCase().includes(searchTerm)\n );\n\n if (this.filteredData.length && shouldResetHover) {\n for (let i = 0; i < this.filteredData.length; i++) {\n this.filteredData[i].isHover = false;\n }\n\n this.filteredData[0].isHover = true;\n }\n\n this.updateDropdownHeight();\n }\n\n public getPlaceholder(): string {\n const options = this.options!;\n const formGroup = options.formGroup;\n const formControlName = options.formControlName;\n\n let placeholder = '';\n\n if (options.placeholder) {\n placeholder = options.placeholder;\n }\n\n if (formGroup && formControlName && options.errors && this.checkIfControlInvalid()) {\n for (const error in options.errors) {\n if (formGroup.controls[formControlName].hasError(error)) {\n placeholder = options.errors[error];\n }\n }\n }\n\n if ((this.control.value instanceof Array && this.control.value.length) || (this.control.value && !(this.control.value instanceof Array))) {\n return '';\n }\n\n return placeholder;\n }\n\n public checkIfControlInvalid(): boolean {\n return this.control.touched && this.control.invalid;\n }\n\n public checkIfControlDisabled(): boolean {\n return this.control.disabled;\n }\n\n private getControl(): AbstractControl | null {\n if (this.options && this.options.formGroup && this.options.formControlName) {\n return this.options.formGroup.controls[this.options.formControlName];\n }\n\n return null;\n }\n\n private isWithinBounds(event: MouseEvent, rect: DOMRect): boolean {\n return (\n event.clientX >= rect.left &&\n event.clientX <= rect.right &&\n event.clientY >= rect.top &&\n event.clientY <= rect.bottom\n );\n }\n\n private handleEvents(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n \n window.addEventListener('keydown', this.keyListener);\n }\n\n private keyup(event: KeyboardEvent): void {\n if (document.activeElement !== this.input?.nativeElement) {\n this.deactivateControl(event);\n\n return;\n }\n\n if (document.activeElement === this.input?.nativeElement) {\n if (document.activeElement !== this.input?.nativeElement) {\n return; \n }\n\n switch (event.code) {\n case 'Enter':\n this.documentEnterKeyup(event);\n\n return;\n case 'Space':\n if (!this.options.searchable) {\n this.documentEnterKeyup(event);\n }\n\n return;\n case 'Backspace':\n if (!this.options.multiple && this.options.searchable && this.control.value.value != null) {\n this.onSearch('', false);\n\n this.setValue('');\n }\n\n return;\n case 'Escape':\n this.deactivateControl(event);\n\n return;\n case 'ArrowDown':\n this.documentArrowsKeyup(true);\n \n return;\n case 'ArrowUp':\n this.documentArrowsKeyup(false);\n\n return;\n }\n\n this.documentKeyup(event);\n }\n }\n\n private documentEnterKeyup(event: KeyboardEvent): void {\n for (let i = 0; i < this.filteredData.length; i++) {\n if (this.filteredData[i].isHover) {\n switch(this.options.multiple) {\n case true:\n this.setMultipleValue(this.filteredData[i], event);\n\n this.updateDropdownHeight();\n this.changeDetectorRef.detectChanges();\n\n return;\n default:\n this.setValue(this.filteredData[i]);\n\n this.removeDropdown();\n }\n }\n }\n }\n\n private documentArrowsKeyup(isDownArrow: boolean): void {\n if (!this.dropdown || !this.filteredData.length) {\n return;\n }\n\n const dataLength = this.filteredData.length;\n const controlValue = this.control.getRawValue();\n const isControlValue = controlValue && controlValue !== '';\n\n let hoverIndex: number | null = null;\n let valueIndex: number | null = null;\n\n for (let i = 0; i < dataLength; i++) {\n if (this.filteredData[i].isHover) { \n hoverIndex = i;\n }\n\n if (isControlValue && this.filteredData[i].value === controlValue) { \n valueIndex = i;\n }\n\n this.filteredData[i].isHover = false;\n }\n\n const currentIndex = hoverIndex ? hoverIndex : valueIndex ? valueIndex : 0;\n let newIndex = isDownArrow ? currentIndex + 1 : currentIndex - 1;\n\n newIndex = newIndex < 0 ? 0 : newIndex;\n newIndex = newIndex >= dataLength ? dataLength - 1 : newIndex;\n\n this.filteredData[newIndex].isHover = true;\n\n this.dropdown?.scrollToIndex(newIndex, 'auto');\n }\n\n private documentKeyup(event: KeyboardEvent): void {\n if (!this.isDropdown || this.options.searchable) {\n return;\n }\n\n for (let i = 0; i < this.filteredData.length; i++) {\n this.filteredData[i].isHover = false;\n }\n\n this.documentKeyupValue = this.documentKeyupValue + event.key.toLowerCase();\n\n let newIndex: number | null = null;\n\n for (let i = 0; i < this.filteredData.length; i++) {\n const subLabel = this.filteredData[i].label.substring(0, this.documentKeyupValue.length).toLowerCase();\n\n if (subLabel === this.documentKeyupValue) {\n newIndex = i;\n\n break;\n }\n\n this.filteredData[i].isHover = false;\n }\n\n if (newIndex !== null) {\n this.filteredData[newIndex].isHover = true;\n\n this.dropdown?.scrollToIndex(newIndex, 'auto');\n }\n }\n\n private removeProperty(obj: IpiSelectData, propertyName: keyof IpiSelectData): Partial<IpiSelectData> {\n let { [propertyName]: removedProperty, ...data } = obj;\n return data;\n }\n\n private blockArrowScroll(event: any) {\n if (!this.dropdown) {\n return;\n }\n\n if (event.key ==='ArrowDown' || event.key ==='ArrowUp') {\n event.preventDefault();\n }\n }\n\n private blockScroll(event: WheelEvent | TouchEvent): void {\n if (!this.dropdown) {\n return;\n }\n \n const dropdownEl = this.dropdown.elementRef.nativeElement;\n const isInsideDropdown = this.isDescendant(dropdownEl, event.target as HTMLElement);\n\n if (isInsideDropdown) {\n const canScroll = dropdownEl.scrollHeight > dropdownEl.clientHeight;\n\n if (!canScroll) {\n event.preventDefault();\n }\n\n return;\n }\n\n event.preventDefault();\n }\n \n private isDescendant(parent: HTMLElement, child: HTMLElement | null): boolean {\n while (child !== null) {\n if (child === parent) {\n return true;\n }\n child = child.parentElement;\n }\n\n return false;\n }\n\n private attachGlobalScrollBlockers(): void {\n if (this.scrollBlockersAttached) {\n return;\n }\n\n window.addEventListener('wheel', this.wheelListener, { passive: false });\n window.addEventListener('touchmove', this.wheelListener, { passive: false });\n\n this.scrollBlockersAttached = true;\n }\n\n private detachGlobalScrollBlockers(): void {\n if (!this.scrollBlockersAttached) {\n return;\n }\n\n window.removeEventListener('wheel', this.wheelListener as EventListener);\n window.removeEventListener('touchmove', this.wheelListener as EventListener);\n\n this.scrollBlockersAttached = false;\n }\n\n}\n","@if (options) {\n @if (options.formGroup && options.formControlName) {\n <div class=\"container\" (mousedown)=\"preventFocusChange($event)\">\n @if (options.label !== '') {\n <div class=\"header\">\n <div class=\"label-wrapper\">\n <label>{{ options.label }}</label>\n \n @if (options.tooltip) {\n <svg class=\"tooltip-icon\" [ipiTooltip]=\"options.tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n }\n </div>\n \n @if (options.helperText) {\n <div class=\"header-helper\" (click)=\"onHelperText()\" [routerLink]=\"options.helperRoute\">{{ options.helperText }}</div>\n }\n </div>\n }\n\n <div #inputWrapper class=\"input-field-wrapper\" (click)=\"toggleDropdown()\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': checkIfControlInvalid(), 'disabled': checkIfControlDisabled() }\">\n @if (options.prefixImg) {\n <ipi-img class=\"prefix\" [src]=\"'assets/img/' + this.options.prefixImg\" [ariaLabel]=\"'Select prefix icon'\"></ipi-img>\n }\n\n @if (options.searchable && options.multiple && this.showMultipleCount() > 0) {\n @if (options.counterAsValue) {\n <span class=\"multiple-count\">\n {{ this.showMultipleCount() }} selected\n </span>\n } @else {\n <div class=\"chips\">\n @for (data of options.data; track $index) {\n @if (isMultipleSelected(data)) {\n <ipi-chip [closeIcon]=\"true\" (closeChange)=\"setMultipleValue(data)\">{{ data.label }}</ipi-chip>\n }\n }\n </div>\n }\n }\n\n @if (options.searchable) {\n <!-- used for formControl data binding and reactivness -->\n <input #hiddenInput\n class=\"hidden\"\n [formControlName]=\"options.formControlName\">\n\n <!-- used for searching and data displaying -->\n <input #input\n [placeholder]=\"getPlaceholder()\"\n [readOnly]=\"!options.searchable\"\n [ngClass]=\"{ 'no-icon': !options.prefixImg }\"\n [disabled]=\"checkIfControlDisabled()\"\n (keydown)=\"handleKeydown($event)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (input)=\"onSearch(input.value, true)\"\n autocorrect=\"off\"\n spellcheck=\"false\">\n } @else {\n <input #input\n readonly\n [disabled]=\"checkIfControlDisabled()\"\n [placeholder]=\"getPlaceholder()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n [formControlName]=\"options.formControlName\"\n [ngClass]=\"{ 'no-icon': !options.prefixImg }\"\n (ngModelChange)=\"setVisibleValue($event)\"/>\n }\n \n <div class=\"arrow-wrapper\">\n <div class=\"arrow\" [class]=\"{ checked: this.isDropdown }\"></div>\n </div>\n </div>\n\n @if (isDropdown) {\n <cdk-virtual-scroll-viewport [itemSize]=\"optionItemSizePx\" [style.height.px]=\"dropdownHeightPx\" class=\"dropdown\" #dropdown>\n <div class=\"option\"\n *cdkVirtualFor=\"let data of filteredData;\"\n [ngClass]=\"{ selected: !options.multiple ? isValueSelected(data) : false, preselected: data.isHover, checkbox: options.multiple }\"\n (click)=\"options.multiple ? setMultipleValue(data, $event) : setValue(data)\">\n @if (options.multiple) {\n <ipi-checkbox [checked]=\"isMultipleSelected(data)\">\n <div class=\"multiple-checkbox-container\">\n <span>{{ data.label }}</span>\n @if (data.description) { <span>{{ data.description }}</span> }\n </div>\n </ipi-checkbox>\n } @else {\n {{ data.label }}\n }\n </div>\n @if (filteredData.length === 0) {\n <div class=\"option disabled\">No options to select from.</div>\n }\n </cdk-virtual-scroll-viewport>\n }\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apexara-ng-components-select.mjs","sources":["../../../../projects/apexara/ng-components/select/src/select.component.ts","../../../../projects/apexara/ng-components/select/src/select.component.html","../../../../projects/apexara/ng-components/select/apexara-ng-components-select.ts"],"sourcesContent":["import { \n Component, OnInit, ViewChild, Input,\n Output, inject, PLATFORM_ID, ElementRef,\n ChangeDetectorRef, HostListener, EventEmitter, IterableDiffers,\n OnDestroy, AfterViewInit, SimpleChanges, IterableDiffer} from '@angular/core';\nimport { NgClass, isPlatformServer } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule, AbstractControl } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\n\nimport { Subscription, debounceTime, fromEvent, tap } from 'rxjs';\n\nimport { ApexChipComponent } from '@apexara/ng-components/chip';\nimport { ApexImageComponent } from '@apexara/ng-components/image';\nimport { ApexCheckboxComponent } from '@apexara/ng-components/checkbox';\n\nimport { OSService, MobileOS } from '@apexara/ng-components/services';\n\nimport { ApexTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface ApexSelectOptions {\n label: string;\n tooltip?: string;\n data: ApexSelectData[];\n multiple?: boolean;\n counterAsValue?: boolean;\n placeholder?: string;\n helperText?: string;\n helperRoute?: string;\n prefixImg?: string;\n suffixImg?: string;\n formGroup?: FormGroup;\n searchable?: boolean;\n formControlName?: string;\n errors?: ControlErrors;\n maxDropdownHeightPx?: number; // optional hard max height in px\n}\n\nexport interface ApexSelectData {\n label: string;\n value: any;\n description?: string;\n isHover?: boolean;\n}\n\nexport interface ControlErrors {\n [x: string]: string;\n}\n\n@Component({\n selector: 'apex-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n imports: [\n NgClass,\n RouterLink,\n FormsModule,\n ScrollingModule,\n ApexChipComponent,\n ApexImageComponent,\n ApexTooltipDirective,\n ReactiveFormsModule,\n ApexCheckboxComponent,\n ]\n})\n\nexport class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {\n\n @ViewChild('input') input: ElementRef<HTMLInputElement> | null = null;\n\n @ViewChild('label') label: ElementRef<HTMLLabelElement> | null = null;\n @ViewChild('dropdown') dropdown: CdkVirtualScrollViewport | null = null;\n @ViewChild('inputWrapper') inputWrapper: ElementRef<HTMLInputElement> | null = null;\n\n @Input() options!: ApexSelectOptions;\n\n\n @Output() selectChange = new EventEmitter<ApexSelectData>();\n @Output() helperTextChange = new EventEmitter<void>();\n\n constructor(\n private osService: OSService,\n private elementRef: ElementRef,\n private iterableDiffers: IterableDiffers,\n private changeDetectorRef: ChangeDetectorRef) {\n\n this.changeDetectorRef.detach();\n\n this.dataDiffer = this.iterableDiffers.find([]).create<ApexSelectData>();\n\n this.handleEvents();\n }\n\n public firstDropdown = 0;\n public isDropdown = false;\n public control!: AbstractControl;\n\n public tooltipPosition = TooltipPosition;\n\n private platformId = inject(PLATFORM_ID);\n\n private isDropdownReversed = false;\n\n private shouldPreventEvents = false;\n\n private documentKeyupValue = '';\n private documentKeyupValueResetTime = 1000;\n private documentKeyUpSubscription: Subscription | null = null;\n\n private dataDiffer!: IterableDiffer<ApexSelectData>;\n\n private controlSubscription: Subscription | null = null;\n\n public filteredData: ApexSelectData[] = [];\n\n private lastSearch = '';\n\n private keyListener = (event: KeyboardEvent) => this.blockArrowScroll(event);\n private wheelListener = (event: WheelEvent | TouchEvent) => this.blockScroll(event);\n\n private scrollBlockersAttached = false;\n\n // Virtual scroll config for options list\n public optionItemSizePx = 48; // must match .dropdown .option height in CSS\n public maxVisibleOptions = 8;\n public dropdownHeightPx = this.optionItemSizePx;\n\n public ngOnInit(): void {\n this.control = this.getControl()!;\n\n this.changeDetectorRef.detectChanges();\n\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.documentKeyUpSubscription = fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(\n tap(event => { this.keyup(event) }),\n debounceTime(this.documentKeyupValueResetTime),\n )\n .subscribe(() => { this.documentKeyupValue = '' });\n }\n\n public ngDoCheck(): void {\n const data = this.options?.data || [];\n const diff = this.dataDiffer.diff(data);\n\n if (!diff) {\n return;\n }\n\n this.filteredData = [...data];\n this.changeDetectorRef.detectChanges();\n }\n\n public ngAfterViewInit(): void {\n this.filteredData = [...this.options.data];\n\n setTimeout(() => {\n if (this.options.formGroup && this.options.formControlName) { \n this.setVisibleValue(this.options.formGroup.controls[this.options.formControlName].value);\n }\n })\n\n if (this.options.searchable) {\n this.controlSubscription = this.control.valueChanges.subscribe((value) => {\n this.setVisibleValue(value);\n\n setTimeout(() => {\n this.changeDetectorRef.detectChanges();\n })\n })\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (!changes['options'] || changes['options'].firstChange) {\n return;\n }\n\n this.updateDropdownHeight();\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.detachGlobalScrollBlockers();\n window.removeEventListener('keydown', this.keyListener);\n\n if (this.documentKeyUpSubscription) {\n this.documentKeyUpSubscription.unsubscribe();\n }\n\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n public onHelperText(): void {\n this.helperTextChange.emit();\n }\n\n public setValue(value: any): void {\n this.changeDetectorRef.detectChanges();\n\n if (!this.options.multiple) {\n value = this.removeProperty(value, 'isHover');\n }\n\n this.control.setValue(value);\n this.input!.nativeElement.value = value.label ? value.label : '';\n\n this.selectChange.emit(value);\n\n if (value.value == null) {\n return;\n }\n\n setTimeout(() => {\n this.removeDropdown();\n\n if (!this.options.multiple) {\n this.lastSearch = '';\n }\n })\n }\n\n public setMultipleValue(data: any, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n const newValue = this.control.value;\n let indexOfValue = -1;\n\n for (let i = 0; i < newValue.length; i++) {\n if (newValue[i].value === data.value) {\n indexOfValue = i;\n }\n\n if (JSON.stringify(newValue[i].value) === JSON.stringify(data.value)) {\n indexOfValue = i;\n }\n }\n\n if (indexOfValue === -1) {\n newValue.push({ label: data.label, value: data.value });\n } else {\n newValue.splice(indexOfValue, 1);\n }\n\n this.lastSearch = '';\n this.input!.nativeElement.value = '';\n this.filteredData = this.options.data;\n\n this.control.setValue(newValue);\n this.selectChange.emit(newValue);\n }\n\n public setVisibleValue(newValue: any | any[]): void {\n if (newValue === null) {\n this.input!.nativeElement.value = '';\n\n return;\n }\n\n if (this.options.counterAsValue) {\n if (this.options.searchable) {\n return;\n }\n\n if (this.showMultipleCount() > 0) {\n this.input!.nativeElement.value = this.showMultipleCount() + ' selected';\n }\n\n return;\n }\n\n let visibleValue = '';\n\n for (let data of this.filteredData) { \n // when newValue is object and not array\n if (data.value === newValue.value) {\n visibleValue = data.label;\n\n break;\n }\n\n if (this.options.multiple && !this.options.searchable) {\n // when newValue is array\n for (let item of newValue) {\n if (data.value === item.value) {\n visibleValue += item.label + ', ';\n\n break;\n }\n }\n }\n\n if (newValue.value) {\n // Edge case for when we use { label, value } pattern as value\n if (newValue.value.value && this.getControl()?.value.value.value === newValue.value.value) {\n visibleValue = data.label;\n\n break;\n }\n }\n }\n\n this.input!.nativeElement.value = visibleValue;\n\n this.changeDetectorRef.detectChanges();\n }\n\n private updateDropdownHeight(): void {\n if (!this.isDropdown) {\n return;\n }\n\n setTimeout(() => {\n const count = this.filteredData.length;\n const maxRows = this.maxVisibleOptions;\n\n let next = this.optionItemSizePx;\n\n if (count > 0 && count <= maxRows && this.dropdown) {\n const options = this.dropdown.elementRef.nativeElement.querySelectorAll('.option');\n \n let total = 0;\n\n options.forEach((option: any) => {\n const height = option.getBoundingClientRect().height;\n total += isFinite(height) ? height : 0;\n });\n\n next = total;\n } else {\n const rows = Math.min(count, maxRows);\n \n next = Math.max(rows * this.optionItemSizePx, this.optionItemSizePx);\n }\n\n const maxHeight = this.options.maxDropdownHeightPx;\n \n if (maxHeight) {\n next = Math.min(next, Math.max(this.optionItemSizePx, maxHeight));\n }\n\n this.dropdownHeightPx = next;\n this.changeDetectorRef.detectChanges();\n\n setTimeout(() => {\n this.dropdown?.checkViewportSize();\n }, 100)\n\n });\n }\n\n public showMultipleCount(): number {\n if (!this.control.value.length) {\n return 0;\n }\n\n return this.control.value.length;\n }\n\n public isValueSelected(value: ApexSelectData): boolean {\n if (value.value == null || this.control.value == null) {\n return false;\n }\n\n return value.value === this.control.value.value;\n }\n\n public isMultipleSelected(value: ApexSelectData): boolean {\n for (let i = 0; i < this.control.value.length; i++) {\n if (value.value === this.control.value[i]) {\n return true;\n }\n\n if (this.control.value[i].value === value.value) {\n return true;\n }\n\n if (JSON.stringify(this.control.value[i].value) === JSON.stringify(value.value)) {\n return true;\n }\n }\n\n return false;\n }\n\n public activateDropdown(): void {\n if (this.checkIfControlDisabled()) {\n return;\n }\n\n this.isDropdown = true;\n this.input!.nativeElement.focus();\n\n if (this.firstDropdown === 0) {\n this.firstDropdown += 1;\n\n setTimeout(() => this.generateDropdownPosition(true));\n\n // Reattaching is needed to properly update the hovered options by KeyboardEvents\n this.changeDetectorRef.reattach();\n }\n\n this.attachGlobalScrollBlockers();\n this.onSearch(this.lastSearch, false);\n }\n\n @HostListener('document:click', ['$event'])\n public deactivateControl(event: MouseEvent | KeyboardEvent): void {\n if (event instanceof KeyboardEvent) {\n this.removeDropdown();\n\n return;\n }\n\n if (!this.dropdown || !this.inputWrapper) {\n return;\n }\n \n const dropdownRect = this.dropdown.elementRef.nativeElement.getBoundingClientRect();\n const inputWrapperRect = this.inputWrapper.nativeElement.getBoundingClientRect();\n\n const isClickInsideDropdown = this.isWithinBounds(event, dropdownRect);\n const isClickInsideInputWrapper = this.isWithinBounds(event, inputWrapperRect);\n\n if (isClickInsideDropdown || isClickInsideInputWrapper) {\n return;\n }\n \n this.removeDropdown();\n }\n\n public onFocusIn(): void {\n this.shouldPreventEvents = true;\n\n this.activateDropdown();\n\n setTimeout(() => {\n this.shouldPreventEvents = false;\n }, 200);\n }\n\n public onFocusOut(): void {\n this.shouldPreventEvents = true;\n\n setTimeout(() => {\n this.shouldPreventEvents = false;\n }, 200);\n\n this.removeDropdown();\n }\n\n public toggleDropdown(): void {\n if (this.shouldPreventEvents) {\n return;\n }\n\n if (this.isDropdown) {\n this.removeDropdown();\n } else {\n this.activateDropdown();\n }\n }\n\n private generateDropdownPosition(checkRevserse: boolean = false): void {\n if (!this.dropdown) {\n // method will keep executing until dropdown is rendered\n setTimeout(() => this.generateDropdownPosition(true));\n\n return;\n }\n\n const dropdownEl = this.dropdown.elementRef.nativeElement;\n const elementRefRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n elementRefRect.y += window.visualViewport!.offsetTop;\n elementRefRect.x += window.visualViewport!.offsetLeft;\n }\n\n dropdownEl.style.left = elementRefRect.x + 'px';\n dropdownEl.style.width = elementRefRect.width + 'px';\n dropdownEl.style.top = elementRefRect.y + elementRefRect.height + 'px';\n\n if (checkRevserse) {\n if (window.innerHeight < dropdownEl.getBoundingClientRect().bottom) {\n dropdownEl.style.top = 'unset';\n dropdownEl.style.bottom = window.innerHeight - elementRefRect.y + 10 + 'px';\n \n this.isDropdownReversed = true;\n }\n }\n\n if (this.isDropdownReversed) {\n dropdownEl.style.top = 'unset';\n dropdownEl.style.bottom = window.innerHeight - elementRefRect.y + 10 + 'px';\n }\n\n setTimeout(() => {\n this.updateDropdownHeight();\n }, 100);\n\n this.changeDetectorRef.detectChanges();\n }\n\n public removeDropdown(): void {\n this.isDropdown = false;\n this.isDropdownReversed = false;\n this.firstDropdown = 0;\n this.changeDetectorRef.detectChanges();\n\n this.input!.nativeElement.blur();\n\n this.detachGlobalScrollBlockers();\n this.changeDetectorRef.detach();\n }\n\n public handleKeydown(event: any): void {\n if (event.code === 'Backspace') {\n this.onSearch('', true);\n }\n }\n\n public preventFocusChange(event: MouseEvent): void {\n if (this.input?.nativeElement === document.activeElement) {\n event.preventDefault();\n\n return;\n }\n }\n\n public onSearch(value: string, shouldResetHover?: boolean): void {\n this.lastSearch = value;\n\n if (!value) {\n // Reset to original data if input is empty\n this.filteredData = [...this.options.data];\n\n this.updateDropdownHeight();\n\n return;\n }\n \n const searchTerm = value.toLowerCase();\n\n this.filteredData = this.options.data.filter(item =>\n item.label.toLowerCase().includes(searchTerm)\n );\n\n if (this.filteredData.length && shouldResetHover) {\n for (let i = 0; i < this.filteredData.length; i++) {\n this.filteredData[i].isHover = false;\n }\n\n this.filteredData[0].isHover = true;\n }\n\n this.updateDropdownHeight();\n }\n\n public getPlaceholder(): string {\n const options = this.options!;\n const formGroup = options.formGroup;\n const formControlName = options.formControlName;\n\n let placeholder = '';\n\n if (options.placeholder) {\n placeholder = options.placeholder;\n }\n\n if (formGroup && formControlName && options.errors && this.checkIfControlInvalid()) {\n for (const error in options.errors) {\n if (formGroup.controls[formControlName].hasError(error)) {\n placeholder = options.errors[error];\n }\n }\n }\n\n if ((this.control.value instanceof Array && this.control.value.length) || (this.control.value && !(this.control.value instanceof Array))) {\n return '';\n }\n\n return placeholder;\n }\n\n public checkIfControlInvalid(): boolean {\n return this.control.touched && this.control.invalid;\n }\n\n public checkIfControlDisabled(): boolean {\n return this.control.disabled;\n }\n\n private getControl(): AbstractControl | null {\n if (this.options && this.options.formGroup && this.options.formControlName) {\n return this.options.formGroup.controls[this.options.formControlName];\n }\n\n return null;\n }\n\n private isWithinBounds(event: MouseEvent, rect: DOMRect): boolean {\n return (\n event.clientX >= rect.left &&\n event.clientX <= rect.right &&\n event.clientY >= rect.top &&\n event.clientY <= rect.bottom\n );\n }\n\n private handleEvents(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n \n window.addEventListener('keydown', this.keyListener);\n }\n\n private keyup(event: KeyboardEvent): void {\n if (document.activeElement !== this.input?.nativeElement) {\n this.deactivateControl(event);\n\n return;\n }\n\n if (document.activeElement === this.input?.nativeElement) {\n if (document.activeElement !== this.input?.nativeElement) {\n return; \n }\n\n switch (event.code) {\n case 'Enter':\n this.documentEnterKeyup(event);\n\n return;\n case 'Space':\n if (!this.options.searchable) {\n this.documentEnterKeyup(event);\n }\n\n return;\n case 'Backspace':\n if (!this.options.multiple && this.options.searchable && this.control.value.value != null) {\n this.onSearch('', false);\n\n this.setValue('');\n }\n\n return;\n case 'Escape':\n this.deactivateControl(event);\n\n return;\n case 'ArrowDown':\n this.documentArrowsKeyup(true);\n \n return;\n case 'ArrowUp':\n this.documentArrowsKeyup(false);\n\n return;\n }\n\n this.documentKeyup(event);\n }\n }\n\n private documentEnterKeyup(event: KeyboardEvent): void {\n for (let i = 0; i < this.filteredData.length; i++) {\n if (this.filteredData[i].isHover) {\n switch(this.options.multiple) {\n case true:\n this.setMultipleValue(this.filteredData[i], event);\n\n this.updateDropdownHeight();\n this.changeDetectorRef.detectChanges();\n\n return;\n default:\n this.setValue(this.filteredData[i]);\n\n this.removeDropdown();\n }\n }\n }\n }\n\n private documentArrowsKeyup(isDownArrow: boolean): void {\n if (!this.dropdown || !this.filteredData.length) {\n return;\n }\n\n const dataLength = this.filteredData.length;\n const controlValue = this.control.getRawValue();\n const isControlValue = controlValue && controlValue !== '';\n\n let hoverIndex: number | null = null;\n let valueIndex: number | null = null;\n\n for (let i = 0; i < dataLength; i++) {\n if (this.filteredData[i].isHover) { \n hoverIndex = i;\n }\n\n if (isControlValue && this.filteredData[i].value === controlValue) { \n valueIndex = i;\n }\n\n this.filteredData[i].isHover = false;\n }\n\n const currentIndex = hoverIndex ? hoverIndex : valueIndex ? valueIndex : 0;\n let newIndex = isDownArrow ? currentIndex + 1 : currentIndex - 1;\n\n newIndex = newIndex < 0 ? 0 : newIndex;\n newIndex = newIndex >= dataLength ? dataLength - 1 : newIndex;\n\n this.filteredData[newIndex].isHover = true;\n\n this.dropdown?.scrollToIndex(newIndex, 'auto');\n }\n\n private documentKeyup(event: KeyboardEvent): void {\n if (!this.isDropdown || this.options.searchable) {\n return;\n }\n\n for (let i = 0; i < this.filteredData.length; i++) {\n this.filteredData[i].isHover = false;\n }\n\n this.documentKeyupValue = this.documentKeyupValue + event.key.toLowerCase();\n\n let newIndex: number | null = null;\n\n for (let i = 0; i < this.filteredData.length; i++) {\n const subLabel = this.filteredData[i].label.substring(0, this.documentKeyupValue.length).toLowerCase();\n\n if (subLabel === this.documentKeyupValue) {\n newIndex = i;\n\n break;\n }\n\n this.filteredData[i].isHover = false;\n }\n\n if (newIndex !== null) {\n this.filteredData[newIndex].isHover = true;\n\n this.dropdown?.scrollToIndex(newIndex, 'auto');\n }\n }\n\n private removeProperty(obj: ApexSelectData, propertyName: keyof ApexSelectData): Partial<ApexSelectData> {\n let { [propertyName]: removedProperty, ...data } = obj;\n return data;\n }\n\n private blockArrowScroll(event: any) {\n if (!this.dropdown) {\n return;\n }\n\n if (event.key ==='ArrowDown' || event.key ==='ArrowUp') {\n event.preventDefault();\n }\n }\n\n private blockScroll(event: WheelEvent | TouchEvent): void {\n if (!this.dropdown) {\n return;\n }\n \n const dropdownEl = this.dropdown.elementRef.nativeElement;\n const isInsideDropdown = this.isDescendant(dropdownEl, event.target as HTMLElement);\n\n if (isInsideDropdown) {\n const canScroll = dropdownEl.scrollHeight > dropdownEl.clientHeight;\n\n if (!canScroll) {\n event.preventDefault();\n }\n\n return;\n }\n\n event.preventDefault();\n }\n \n private isDescendant(parent: HTMLElement, child: HTMLElement | null): boolean {\n while (child !== null) {\n if (child === parent) {\n return true;\n }\n child = child.parentElement;\n }\n\n return false;\n }\n\n private attachGlobalScrollBlockers(): void {\n if (this.scrollBlockersAttached) {\n return;\n }\n\n window.addEventListener('wheel', this.wheelListener, { passive: false });\n window.addEventListener('touchmove', this.wheelListener, { passive: false });\n\n this.scrollBlockersAttached = true;\n }\n\n private detachGlobalScrollBlockers(): void {\n if (!this.scrollBlockersAttached) {\n return;\n }\n\n window.removeEventListener('wheel', this.wheelListener as EventListener);\n window.removeEventListener('touchmove', this.wheelListener as EventListener);\n\n this.scrollBlockersAttached = false;\n }\n\n}\n","@if (options) {\n @if (options.formGroup && options.formControlName) {\n <div class=\"container\" (mousedown)=\"preventFocusChange($event)\">\n @if (options.label !== '') {\n <div class=\"header\">\n <div class=\"label-wrapper\">\n <label>{{ options.label }}</label>\n \n @if (options.tooltip) {\n <svg class=\"tooltip-icon\" [apexTooltip]=\"options.tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n }\n </div>\n \n @if (options.helperText) {\n <div class=\"header-helper\" (click)=\"onHelperText()\" [routerLink]=\"options.helperRoute\">{{ options.helperText }}</div>\n }\n </div>\n }\n\n <div #inputWrapper class=\"input-field-wrapper\" (click)=\"toggleDropdown()\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': checkIfControlInvalid(), 'disabled': checkIfControlDisabled() }\">\n @if (options.prefixImg) {\n <apex-img class=\"prefix\" [src]=\"'assets/img/' + this.options.prefixImg\" [ariaLabel]=\"'Select prefix icon'\"></apex-img>\n }\n\n @if (options.searchable && options.multiple && this.showMultipleCount() > 0) {\n @if (options.counterAsValue) {\n <span class=\"multiple-count\">\n {{ this.showMultipleCount() }} selected\n </span>\n } @else {\n <div class=\"chips\">\n @for (data of options.data; track $index) {\n @if (isMultipleSelected(data)) {\n <apex-chip [closeIcon]=\"true\" (closeChange)=\"setMultipleValue(data)\">{{ data.label }}</apex-chip>\n }\n }\n </div>\n }\n }\n\n @if (options.searchable) {\n <!-- used for formControl data binding and reactivness -->\n <input #hiddenInput\n class=\"hidden\"\n [formControlName]=\"options.formControlName\">\n\n <!-- used for searching and data displaying -->\n <input #input\n [placeholder]=\"getPlaceholder()\"\n [readOnly]=\"!options.searchable\"\n [ngClass]=\"{ 'no-icon': !options.prefixImg }\"\n [disabled]=\"checkIfControlDisabled()\"\n (keydown)=\"handleKeydown($event)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (input)=\"onSearch(input.value, true)\"\n autocorrect=\"off\"\n spellcheck=\"false\">\n } @else {\n <input #input\n readonly\n [disabled]=\"checkIfControlDisabled()\"\n [placeholder]=\"getPlaceholder()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n [formControlName]=\"options.formControlName\"\n [ngClass]=\"{ 'no-icon': !options.prefixImg }\"\n (ngModelChange)=\"setVisibleValue($event)\"/>\n }\n \n <div class=\"arrow-wrapper\">\n <div class=\"arrow\" [class]=\"{ checked: this.isDropdown }\"></div>\n </div>\n </div>\n\n @if (isDropdown) {\n <cdk-virtual-scroll-viewport [itemSize]=\"optionItemSizePx\" [style.height.px]=\"dropdownHeightPx\" class=\"dropdown\" #dropdown>\n <div class=\"option\"\n *cdkVirtualFor=\"let data of filteredData;\"\n [ngClass]=\"{ selected: !options.multiple ? isValueSelected(data) : false, preselected: data.isHover, checkbox: options.multiple }\"\n (click)=\"options.multiple ? setMultipleValue(data, $event) : setValue(data)\">\n @if (options.multiple) {\n <apex-checkbox [checked]=\"isMultipleSelected(data)\">\n <div class=\"multiple-checkbox-container\">\n <span>{{ data.label }}</span>\n @if (data.description) { <span>{{ data.description }}</span> }\n </div>\n </apex-checkbox>\n } @else {\n {{ data.label }}\n }\n </div>\n @if (filteredData.length === 0) {\n <div class=\"option disabled\">No options to select from.</div>\n }\n </cdk-virtual-scroll-viewport>\n }\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -222,13 +222,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
222
222
|
args: [DOCUMENT]
|
|
223
223
|
}] }] });
|
|
224
224
|
|
|
225
|
-
class
|
|
226
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type:
|
|
227
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type:
|
|
225
|
+
class ApexLoaderComponent {
|
|
226
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
227
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: ApexLoaderComponent, isStandalone: true, selector: "apex-loader", ngImport: i0, template: "<div class=\"backdrop\"></div>\n\n<div class=\"container\">\n <div class=\"spinner\">\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n </div>\n</div>\n", styles: [".backdrop{width:100vw;height:100vh;position:fixed;top:0;left:0;background-color:var(--apex-loader-backdrop-background, #0B1222);opacity:.1;pointer-events:all;z-index:999}.container{z-index:911;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:99}.spinner{position:relative;bottom:66px;right:44px;transform-style:preserve-3d}.spinner span{display:block;position:absolute;transform-origin:50% 100%}.spinner span:after{display:block;content:\"\";border-style:solid;border-color:transparent;border-width:67px 39px 0;backface-visibility:hidden}.spinner span:nth-child(1){transform:rotate3d(0,0,1,90deg)}.spinner span:nth-child(2){transform:rotate3d(0,0,1,150deg)}.spinner span:nth-child(3){transform:rotate3d(0,0,1,210deg)}.spinner span:nth-child(4){transform:rotate3d(0,0,1,270deg)}.spinner span:nth-child(5){transform:rotate3d(0,0,1,330deg)}.spinner span:nth-child(6){transform:rotate3d(0,0,1,390deg)}.spinner span:nth-child(1):after{border-top-color:rgb(var(--apex-loader-color),.3);transform:rotate3d(.5,1,0,180deg);animation:split 2s .1111111111s ease infinite}.spinner span:nth-child(2):after{border-top-color:rgb(var(--apex-loader-color),.4);transform:rotate3d(.5,1,0,180deg);animation:split 2s .2222222222s ease infinite}.spinner span:nth-child(3):after{border-top-color:rgb(var(--apex-loader-color),.5);transform:rotate3d(.5,1,0,180deg);animation:split 2s .3333333333s ease infinite}.spinner span:nth-child(4):after{border-top-color:rgb(var(--apex-loader-color),.6);transform:rotate3d(.5,1,0,180deg);animation:split 2s .4444444444s ease infinite}.spinner span:nth-child(5):after{border-top-color:rgb(var(--apex-loader-color),.7);transform:rotate3d(.5,1,0,180deg);animation:split 2s .5555555556s ease infinite}.spinner span:nth-child(6):after{border-top-color:rgb(var(--apex-loader-color),.8);transform:rotate3d(.5,1,0,180deg);animation:split 2s .6666666667s ease infinite}@keyframes split{0%{transform-origin:50% 100%;transform:rotate3d(.5,1,0,180deg)}25%{transform-origin:50% 100%;transform:rotateY(360deg)}50%{opacity:1;transform-origin:100% 0%;transform:rotateY(360deg)}75%{opacity:0;transform:rotate3d(.5,1,0,180deg)}to{opacity:1;transform:rotate3d(.5,1,0,180deg)}}\n"] }); }
|
|
228
228
|
}
|
|
229
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type:
|
|
229
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexLoaderComponent, decorators: [{
|
|
230
230
|
type: Component,
|
|
231
|
-
args: [{ selector: '
|
|
231
|
+
args: [{ selector: 'apex-loader', template: "<div class=\"backdrop\"></div>\n\n<div class=\"container\">\n <div class=\"spinner\">\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n </div>\n</div>\n", styles: [".backdrop{width:100vw;height:100vh;position:fixed;top:0;left:0;background-color:var(--apex-loader-backdrop-background, #0B1222);opacity:.1;pointer-events:all;z-index:999}.container{z-index:911;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:99}.spinner{position:relative;bottom:66px;right:44px;transform-style:preserve-3d}.spinner span{display:block;position:absolute;transform-origin:50% 100%}.spinner span:after{display:block;content:\"\";border-style:solid;border-color:transparent;border-width:67px 39px 0;backface-visibility:hidden}.spinner span:nth-child(1){transform:rotate3d(0,0,1,90deg)}.spinner span:nth-child(2){transform:rotate3d(0,0,1,150deg)}.spinner span:nth-child(3){transform:rotate3d(0,0,1,210deg)}.spinner span:nth-child(4){transform:rotate3d(0,0,1,270deg)}.spinner span:nth-child(5){transform:rotate3d(0,0,1,330deg)}.spinner span:nth-child(6){transform:rotate3d(0,0,1,390deg)}.spinner span:nth-child(1):after{border-top-color:rgb(var(--apex-loader-color),.3);transform:rotate3d(.5,1,0,180deg);animation:split 2s .1111111111s ease infinite}.spinner span:nth-child(2):after{border-top-color:rgb(var(--apex-loader-color),.4);transform:rotate3d(.5,1,0,180deg);animation:split 2s .2222222222s ease infinite}.spinner span:nth-child(3):after{border-top-color:rgb(var(--apex-loader-color),.5);transform:rotate3d(.5,1,0,180deg);animation:split 2s .3333333333s ease infinite}.spinner span:nth-child(4):after{border-top-color:rgb(var(--apex-loader-color),.6);transform:rotate3d(.5,1,0,180deg);animation:split 2s .4444444444s ease infinite}.spinner span:nth-child(5):after{border-top-color:rgb(var(--apex-loader-color),.7);transform:rotate3d(.5,1,0,180deg);animation:split 2s .5555555556s ease infinite}.spinner span:nth-child(6):after{border-top-color:rgb(var(--apex-loader-color),.8);transform:rotate3d(.5,1,0,180deg);animation:split 2s .6666666667s ease infinite}@keyframes split{0%{transform-origin:50% 100%;transform:rotate3d(.5,1,0,180deg)}25%{transform-origin:50% 100%;transform:rotateY(360deg)}50%{opacity:1;transform-origin:100% 0%;transform:rotateY(360deg)}75%{opacity:0;transform:rotate3d(.5,1,0,180deg)}to{opacity:1;transform:rotate3d(.5,1,0,180deg)}}\n"] }]
|
|
232
232
|
}] });
|
|
233
233
|
|
|
234
234
|
class LoaderService {
|
|
@@ -254,7 +254,7 @@ class LoaderService {
|
|
|
254
254
|
if (this.loaderRef) {
|
|
255
255
|
return;
|
|
256
256
|
}
|
|
257
|
-
this.loaderRef = this.viewContainerRef.createComponent(
|
|
257
|
+
this.loaderRef = this.viewContainerRef.createComponent(ApexLoaderComponent);
|
|
258
258
|
this.setAppContainerOpacity('0.4');
|
|
259
259
|
this.overlayService.appendToOverlay(this.loaderRef.location.nativeElement, true);
|
|
260
260
|
}
|
|
@@ -286,5 +286,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
286
286
|
* Generated bundle index. Do not edit.
|
|
287
287
|
*/
|
|
288
288
|
|
|
289
|
-
export {
|
|
289
|
+
export { ApexLoaderComponent, LoaderService, MobileOS, OSService, OverlayService, ScrollBlockService, Theme, ThemeService };
|
|
290
290
|
//# sourceMappingURL=apexara-ng-components-services.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apexara-ng-components-services.mjs","sources":["../../../../projects/apexara/ng-components/services/src/user-agent.service.ts","../../../../projects/apexara/ng-components/services/src/os.service.ts","../../../../projects/apexara/ng-components/services/src/theme.service.ts","../../../../projects/apexara/ng-components/services/src/scroll-block.service.ts","../../../../projects/apexara/ng-components/services/src/overlay.service.ts","../../../../projects/apexara/ng-components/services/src/loader/loader.component.ts","../../../../projects/apexara/ng-components/services/src/loader/loader.component.html","../../../../projects/apexara/ng-components/services/src/loader/loader.service.ts","../../../../projects/apexara/ng-components/services/apexara-ng-components-services.ts"],"sourcesContent":["import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserAgentService {\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n this.init();\n }\n\n private userAgent: string | undefined;\n\n public getUserAgent(): string | undefined {\n return this.userAgent;\n }\n\n private init(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.userAgent = navigator.userAgent;\n } else {\n this.userAgent = undefined;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { UserAgentService } from './user-agent.service';\n\nexport enum MobileOS {\n iOS,\n Android,\n WindowsPhone,\n Other,\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class OSService {\n\n constructor(private userAgentService: UserAgentService) { }\n\n public mobileOS = this.getMobileOS();\n\n private getMobileOS(): MobileOS {\n const userAgent = this.userAgentService.getUserAgent();\n\n if (!userAgent) {\n return MobileOS.Other;\n }\n \n switch (true) {\n case /windows phone/i.test(userAgent):\n return MobileOS.WindowsPhone;\n case /android/i.test(userAgent): \n return MobileOS.Android;\n case /iPad|iPhone|iPod/.test(userAgent): \n return MobileOS.iOS;\n default: \n return MobileOS.Other;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nexport enum Theme {\n First,\n Second,\n Third\n}\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class ThemeService {\n\n private currentTheme = Theme.First;\n\n public setTheme(theme: Theme): void {\n this.currentTheme = theme;\n }\n\n public getTheme(): Theme {\n return this.currentTheme;\n }\n\n}\n","import { Injectable } from '@angular/core';\n\ninterface scrollBlockingStyles {\n top: string,\n height: string,\n position: string,\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class ScrollBlockService {\n\n private isActivated = false;\n\n private previousStyles: scrollBlockingStyles = {\n position: '',\n top: '',\n height: '',\n }\n\n public activate(): void {\n if (this.isActivated) {\n return;\n }\n\n this.isActivated = true;\n\n this.previousStyles = this.getPreviousStyles();\n\n const yOffset = window.scrollY;\n\n document.body.style.position = 'fixed';\n document.body.style.top = '-' + yOffset + 'px';\n document.body.style.height = 'calc(100% + ' + yOffset + 'px)';\n }\n\n public deactivate(): void {\n if (!this.isActivated) {\n return;\n }\n\n this.isActivated = false;\n\n const top = Math.abs(parseInt(document.body.style.top));\n\n document.body.style.position = this.previousStyles.position;\n document.body.style.top = this.previousStyles.top;\n document.body.style.height = this.previousStyles.height;\n\n window.scrollTo(0, top);\n }\n\n private getPreviousStyles(): scrollBlockingStyles {\n return { \n position: document.body.style.position,\n top: document.body.style.top,\n height: document.body.style.height\n };\n }\n\n}\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\n\nimport { ScrollBlockService } from './scroll-block.service';\n\ninterface OverlayChildElement {\n element: HTMLElement;\n /* If atleast one element has the blockable property the overlay scrolling will be prevented */\n blockable: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class OverlayService {\n\n constructor(\n private injector: Injector,\n private focusTrapFactory: FocusTrapFactory,\n private scrollBlockService: ScrollBlockService,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n private focusTrap!: FocusTrap;\n\n private blockActivated = false;\n\n private overlayElement!: HTMLElement | null;\n private overlayChildren: OverlayChildElement[] = [];\n\n public get overlay(): HTMLElement | null {\n return this.overlayElement;\n }\n\n public appendToOverlay(content: HTMLElement, blockable = false): void {\n if (!this.overlayElement) {\n this.createOverlay();\n }\n \n const overlayChild: OverlayChildElement = {\n element: content,\n blockable\n };\n\n this.overlayElement!.appendChild(overlayChild.element);\n this.overlayChildren.push(overlayChild);\n\n if (overlayChild.blockable && !this.blockActivated) {\n this.scrollBlockService.activate();\n this.blockActivated = true;\n }\n }\n\n public removeFromOverlay(content: HTMLElement): void {\n if (!this.overlayElement || !content) {\n return;\n }\n\n const componentIndex = this.overlayChildren.findIndex(comp => comp.element === content);\n\n if (componentIndex > -1) {\n this.overlayChildren.splice(componentIndex, 1);\n }\n\n if (content.parentNode === this.overlayElement) {\n this.overlayElement.removeChild(content);\n }\n\n if (!this.overlayChildren.some(comp => comp.blockable) && this.blockActivated) {\n this.blockActivated = false;\n\n this.scrollBlockService.deactivate();\n }\n\n if (this.overlayElement.childElementCount === 0) {\n this.removeOverlay(this.overlayElement);\n }\n }\n\n private createOverlay(): void {\n const overlayDiv = this.document.createElement('div');\n\n overlayDiv.style.top = '0';\n overlayDiv.style.left = '0';\n overlayDiv.style.width = '100vw';\n overlayDiv.style.height = '100vh';\n overlayDiv.style.zIndex = '900';\n overlayDiv.style.position = 'fixed';\n overlayDiv.style.pointerEvents = 'none';\n\n this.overlayElement = overlayDiv;\n document.body.appendChild(overlayDiv);\n\n this.focusTrap = this.focusTrapFactory.create(this.overlayElement);\n this.focusTrap.focusInitialElementWhenReady();\n }\n\n private removeOverlay(overlayElement: HTMLElement): void {\n this.focusTrap.destroy();\n \n overlayElement.remove();\n this.overlayElement = null;\n }\n\n}\n","import { Component, ElementRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'ipi-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.css'],\n})\n\nexport class IpiLoaderComponent {\n\n}\n","<div class=\"backdrop\"></div>\n\n<div class=\"container\">\n <div class=\"spinner\">\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n </div>\n</div>\n","import { ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\n\nimport { OverlayService } from '../overlay.service';\n\nimport { IpiLoaderComponent } from './loader.component';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class LoaderService {\n\n constructor(\n private overlayService: OverlayService) { }\n\n private viewContainerRef: ViewContainerRef | null = null;\n private appContainerElement: HTMLDivElement | null = null;\n\n private loaderRef: ComponentRef<IpiLoaderComponent> | null = null;\n\n /**\n * Call this method globally in order to set a more global ViewContainerRef\n * @param viewContainerRef - the Host Container Ref where we want the Loader to be attached. i.e the App Component or Layout Component\n * @param appContainerElement - An optional app container selector. When provided it will set opacity 0.4 to that container when Loader is shown. Example - '.app-container'\n */\n public init(viewContainerRef: ViewContainerRef, appContainerElement?: string) {\n this.viewContainerRef = viewContainerRef;\n\n if (appContainerElement) {\n this.appContainerElement = document.querySelector(appContainerElement) as HTMLDivElement;\n }\n }\n\n public show(): void {\n if (this.viewContainerRef) {\n if (this.loaderRef) {\n return;\n }\n\n this.loaderRef = this.viewContainerRef.createComponent(IpiLoaderComponent);\n this.setAppContainerOpacity('0.4');\n\n this.overlayService.appendToOverlay(this.loaderRef.location.nativeElement, true);\n }\n }\n\n public hide(): void {\n if (this.loaderRef) {\n this.loaderRef.destroy();\n this.setAppContainerOpacity('1');\n\n this.overlayService.removeFromOverlay(this.loaderRef.location.nativeElement);\n\n this.loaderRef = null;\n }\n }\n\n private setAppContainerOpacity(opacity: string): void {\n if (this.appContainerElement) {\n this.appContainerElement.style.opacity = opacity;\n }\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UserAgentService","i1.OverlayService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apexara-ng-components-services.mjs","sources":["../../../../projects/apexara/ng-components/services/src/user-agent.service.ts","../../../../projects/apexara/ng-components/services/src/os.service.ts","../../../../projects/apexara/ng-components/services/src/theme.service.ts","../../../../projects/apexara/ng-components/services/src/scroll-block.service.ts","../../../../projects/apexara/ng-components/services/src/overlay.service.ts","../../../../projects/apexara/ng-components/services/src/loader/loader.component.ts","../../../../projects/apexara/ng-components/services/src/loader/loader.component.html","../../../../projects/apexara/ng-components/services/src/loader/loader.service.ts","../../../../projects/apexara/ng-components/services/apexara-ng-components-services.ts"],"sourcesContent":["import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserAgentService {\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n this.init();\n }\n\n private userAgent: string | undefined;\n\n public getUserAgent(): string | undefined {\n return this.userAgent;\n }\n\n private init(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.userAgent = navigator.userAgent;\n } else {\n this.userAgent = undefined;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { UserAgentService } from './user-agent.service';\n\nexport enum MobileOS {\n iOS,\n Android,\n WindowsPhone,\n Other,\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class OSService {\n\n constructor(private userAgentService: UserAgentService) { }\n\n public mobileOS = this.getMobileOS();\n\n private getMobileOS(): MobileOS {\n const userAgent = this.userAgentService.getUserAgent();\n\n if (!userAgent) {\n return MobileOS.Other;\n }\n \n switch (true) {\n case /windows phone/i.test(userAgent):\n return MobileOS.WindowsPhone;\n case /android/i.test(userAgent): \n return MobileOS.Android;\n case /iPad|iPhone|iPod/.test(userAgent): \n return MobileOS.iOS;\n default: \n return MobileOS.Other;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nexport enum Theme {\n First,\n Second,\n Third\n}\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class ThemeService {\n\n private currentTheme = Theme.First;\n\n public setTheme(theme: Theme): void {\n this.currentTheme = theme;\n }\n\n public getTheme(): Theme {\n return this.currentTheme;\n }\n\n}\n","import { Injectable } from '@angular/core';\n\ninterface scrollBlockingStyles {\n top: string,\n height: string,\n position: string,\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class ScrollBlockService {\n\n private isActivated = false;\n\n private previousStyles: scrollBlockingStyles = {\n position: '',\n top: '',\n height: '',\n }\n\n public activate(): void {\n if (this.isActivated) {\n return;\n }\n\n this.isActivated = true;\n\n this.previousStyles = this.getPreviousStyles();\n\n const yOffset = window.scrollY;\n\n document.body.style.position = 'fixed';\n document.body.style.top = '-' + yOffset + 'px';\n document.body.style.height = 'calc(100% + ' + yOffset + 'px)';\n }\n\n public deactivate(): void {\n if (!this.isActivated) {\n return;\n }\n\n this.isActivated = false;\n\n const top = Math.abs(parseInt(document.body.style.top));\n\n document.body.style.position = this.previousStyles.position;\n document.body.style.top = this.previousStyles.top;\n document.body.style.height = this.previousStyles.height;\n\n window.scrollTo(0, top);\n }\n\n private getPreviousStyles(): scrollBlockingStyles {\n return { \n position: document.body.style.position,\n top: document.body.style.top,\n height: document.body.style.height\n };\n }\n\n}\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\n\nimport { ScrollBlockService } from './scroll-block.service';\n\ninterface OverlayChildElement {\n element: HTMLElement;\n /* If atleast one element has the blockable property the overlay scrolling will be prevented */\n blockable: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class OverlayService {\n\n constructor(\n private injector: Injector,\n private focusTrapFactory: FocusTrapFactory,\n private scrollBlockService: ScrollBlockService,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n private focusTrap!: FocusTrap;\n\n private blockActivated = false;\n\n private overlayElement!: HTMLElement | null;\n private overlayChildren: OverlayChildElement[] = [];\n\n public get overlay(): HTMLElement | null {\n return this.overlayElement;\n }\n\n public appendToOverlay(content: HTMLElement, blockable = false): void {\n if (!this.overlayElement) {\n this.createOverlay();\n }\n \n const overlayChild: OverlayChildElement = {\n element: content,\n blockable\n };\n\n this.overlayElement!.appendChild(overlayChild.element);\n this.overlayChildren.push(overlayChild);\n\n if (overlayChild.blockable && !this.blockActivated) {\n this.scrollBlockService.activate();\n this.blockActivated = true;\n }\n }\n\n public removeFromOverlay(content: HTMLElement): void {\n if (!this.overlayElement || !content) {\n return;\n }\n\n const componentIndex = this.overlayChildren.findIndex(comp => comp.element === content);\n\n if (componentIndex > -1) {\n this.overlayChildren.splice(componentIndex, 1);\n }\n\n if (content.parentNode === this.overlayElement) {\n this.overlayElement.removeChild(content);\n }\n\n if (!this.overlayChildren.some(comp => comp.blockable) && this.blockActivated) {\n this.blockActivated = false;\n\n this.scrollBlockService.deactivate();\n }\n\n if (this.overlayElement.childElementCount === 0) {\n this.removeOverlay(this.overlayElement);\n }\n }\n\n private createOverlay(): void {\n const overlayDiv = this.document.createElement('div');\n\n overlayDiv.style.top = '0';\n overlayDiv.style.left = '0';\n overlayDiv.style.width = '100vw';\n overlayDiv.style.height = '100vh';\n overlayDiv.style.zIndex = '900';\n overlayDiv.style.position = 'fixed';\n overlayDiv.style.pointerEvents = 'none';\n\n this.overlayElement = overlayDiv;\n document.body.appendChild(overlayDiv);\n\n this.focusTrap = this.focusTrapFactory.create(this.overlayElement);\n this.focusTrap.focusInitialElementWhenReady();\n }\n\n private removeOverlay(overlayElement: HTMLElement): void {\n this.focusTrap.destroy();\n \n overlayElement.remove();\n this.overlayElement = null;\n }\n\n}\n","import { Component, ElementRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'apex-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.css'],\n})\n\nexport class ApexLoaderComponent {\n\n}\n","<div class=\"backdrop\"></div>\n\n<div class=\"container\">\n <div class=\"spinner\">\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n </div>\n</div>\n","import { ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\n\nimport { OverlayService } from '../overlay.service';\n\nimport { ApexLoaderComponent } from './loader.component';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class LoaderService {\n\n constructor(\n private overlayService: OverlayService) { }\n\n private viewContainerRef: ViewContainerRef | null = null;\n private appContainerElement: HTMLDivElement | null = null;\n\n private loaderRef: ComponentRef<ApexLoaderComponent> | null = null;\n\n /**\n * Call this method globally in order to set a more global ViewContainerRef\n * @param viewContainerRef - the Host Container Ref where we want the Loader to be attached. i.e the App Component or Layout Component\n * @param appContainerElement - An optional app container selector. When provided it will set opacity 0.4 to that container when Loader is shown. Example - '.app-container'\n */\n public init(viewContainerRef: ViewContainerRef, appContainerElement?: string) {\n this.viewContainerRef = viewContainerRef;\n\n if (appContainerElement) {\n this.appContainerElement = document.querySelector(appContainerElement) as HTMLDivElement;\n }\n }\n\n public show(): void {\n if (this.viewContainerRef) {\n if (this.loaderRef) {\n return;\n }\n\n this.loaderRef = this.viewContainerRef.createComponent(ApexLoaderComponent);\n this.setAppContainerOpacity('0.4');\n\n this.overlayService.appendToOverlay(this.loaderRef.location.nativeElement, true);\n }\n }\n\n public hide(): void {\n if (this.loaderRef) {\n this.loaderRef.destroy();\n this.setAppContainerOpacity('1');\n\n this.overlayService.removeFromOverlay(this.loaderRef.location.nativeElement);\n\n this.loaderRef = null;\n }\n }\n\n private setAppContainerOpacity(opacity: string): void {\n if (this.appContainerElement) {\n this.appContainerElement.style.opacity = opacity;\n }\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UserAgentService","i1.OverlayService"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
|
|
|
2
2
|
import { NgClass } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { EventEmitter, Output, Input, ViewChild, Component, createComponent, Injectable } from '@angular/core';
|
|
5
|
-
import {
|
|
5
|
+
import { ApexImageComponent } from '@apexara/ng-components/image';
|
|
6
6
|
import * as i1 from '@apexara/ng-components/services';
|
|
7
7
|
|
|
8
8
|
var VerticalPosition;
|
|
@@ -16,7 +16,7 @@ var HorizontalPosition;
|
|
|
16
16
|
HorizontalPosition[HorizontalPosition["Center"] = 1] = "Center";
|
|
17
17
|
HorizontalPosition[HorizontalPosition["Right"] = 2] = "Right";
|
|
18
18
|
})(HorizontalPosition || (HorizontalPosition = {}));
|
|
19
|
-
class
|
|
19
|
+
class ApexSnackbarComponent {
|
|
20
20
|
constructor() {
|
|
21
21
|
this.closing = false;
|
|
22
22
|
this.closed = new EventEmitter();
|
|
@@ -30,8 +30,8 @@ class IpiSnackbarComponent {
|
|
|
30
30
|
getAnimationParams() {
|
|
31
31
|
return { duration: this.options?.animationDuration ? this.options.animationDuration / 3 : 1 };
|
|
32
32
|
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type:
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type:
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexSnackbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: ApexSnackbarComponent, isStandalone: true, selector: "apex-snackbar", inputs: { message: "message", options: "options", positionOptions: "positionOptions", closing: "closing" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"custom-snackbar\"\n [class.error]=\"options.error\"\n [style.apex-snackbar-animation-duration]=\"options.animationDuration + 's'\"\n [@snackbarState]=\"{ value: closing ? 'closing' : 'open', params: getAnimationParams() }\">\n\n <div class=\"placeholder-wrapper\">\n @if (options.icon) {\n <apex-img [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'Snackbar prefix icon'\"></apex-img>\n }\n\n <div class=\"placeholder\">{{ options.title ?? (options.error ? 'Error' : 'Success') }}</div>\n\n <div class=\"x-icon\" (click)=\"closed.emit()\"></div>\n </div>\n\n <div class=\"message-wrapper\" [ngClass]=\"{ 'no-padding' : !options.icon }\">\n <div class=\"message\">{{ message }}</div>\n </div>\n\n @if (options.shouldClose) {\n <div class=\"progress\" [style.animation-duration]=\"(options.duration + 2 * options.animationDuration) + 's'\"></div>\n }\n</div>\n", styles: [":host{--apex-snackbar-animation-duration: 10s;--apex-snackbar-background-color: #14BD6C;--apex-snackbar-placeholder-text-color: #FFFFFF;--apex-snackbar-message-text-color: #FFFFFF;--apex-snackbar-error-background-color: #F96138;--apex-snackbar-progress-color: #FFFFFF;--apex-snackbar-x-icon-color: #FFFFFF;pointer-events:all;touch-action:manipulation}.placeholder-wrapper{height:24px;display:flex;align-items:center;align-self:stretch;gap:4px}.custom-snackbar{width:360px;height:fit-content;display:flex;position:relative;flex-direction:column;justify-content:center;align-items:flex-start;border-radius:4px;overflow:hidden;box-sizing:border-box;opacity:0;background:var(--apex-snackbar-background-color);padding:12px 16px 16px;margin-bottom:6px}apex-img{width:20px;height:20px}.placeholder{flex:1 0 0;color:var(--apex-snackbar-placeholder-text-color);font-size:18px;font-style:normal;font-weight:600;line-height:22px}.message-wrapper{display:flex;align-items:flex-start;align-self:stretch;gap:10px;padding-left:24px}.message-wrapper.no-padding{padding:0}.message{flex:1 0 0;color:var(--apex-snackbar-message-text-color);font-size:16px;font-style:normal;font-weight:400;line-height:20px}.error{background-color:var(--apex-snackbar-error-background-color)}.vertical-1{top:.5em}.vertical-0{bottom:.5em}.horizontal-0{animation:LeftPopUp var(--apex-snackbar-animation-duration) ease-in-out forwards}.horizontal-1{animation:CenterPopUp var(--apex-snackbar-animation-duration) ease-in-out forwards}.horizontal-2{animation:RightPopUp var(--apex-snackbar-animation-duration) ease-in-out forwards}.progress{max-width:392px;height:4px;position:absolute;bottom:0;opacity:.5;background:var(--apex-snackbar-progress-color);transform:translate(-16px);animation:shrinkProgress var(--apex-snackbar-animation-duration) ease-in-out}.x-icon{width:20px;cursor:pointer;transition:transform .3s ease;opacity:.7;padding-top:8px}.x-icon:after{font-size:36px;color:var(--apex-snackbar-x-icon-color);content:\"\\d7\"}.x-icon:hover{animation:rotate .3s linear}@media(max-width:460px){.custom-snackbar{width:300px}}@keyframes rotate{0%{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}to{transform:rotate(0)}}@keyframes shrinkProgress{0%{width:100%}to{width:0%}}@keyframes LeftPopUp{0%{left:-2em;opacity:0}to{left:.5em;opacity:1}}@keyframes CenterPopUp{0%{opacity:0}to{opacity:1}}@keyframes RightPopUp{0%{right:-2em;opacity:0}to{right:.5em;opacity:1}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ApexImageComponent, selector: "apex-img", inputs: ["src", "ariaLabel"] }], animations: [
|
|
35
35
|
trigger('snackbarState', [
|
|
36
36
|
state('open', style({
|
|
37
37
|
opacity: 1,
|
|
@@ -52,11 +52,11 @@ class IpiSnackbarComponent {
|
|
|
52
52
|
]),
|
|
53
53
|
] }); }
|
|
54
54
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type:
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexSnackbarComponent, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
|
-
args: [{ selector: '
|
|
57
|
+
args: [{ selector: 'apex-snackbar', imports: [
|
|
58
58
|
NgClass,
|
|
59
|
-
|
|
59
|
+
ApexImageComponent,
|
|
60
60
|
], animations: [
|
|
61
61
|
trigger('snackbarState', [
|
|
62
62
|
state('open', style({
|
|
@@ -76,7 +76,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
76
76
|
animate('{{duration}}s ease-in', style({ height: '0px', margin: 0, padding: 0 })),
|
|
77
77
|
]),
|
|
78
78
|
]),
|
|
79
|
-
], template: "<div\n #container\n class=\"custom-snackbar\"\n [class.error]=\"options.error\"\n [style.
|
|
79
|
+
], template: "<div\n #container\n class=\"custom-snackbar\"\n [class.error]=\"options.error\"\n [style.apex-snackbar-animation-duration]=\"options.animationDuration + 's'\"\n [@snackbarState]=\"{ value: closing ? 'closing' : 'open', params: getAnimationParams() }\">\n\n <div class=\"placeholder-wrapper\">\n @if (options.icon) {\n <apex-img [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'Snackbar prefix icon'\"></apex-img>\n }\n\n <div class=\"placeholder\">{{ options.title ?? (options.error ? 'Error' : 'Success') }}</div>\n\n <div class=\"x-icon\" (click)=\"closed.emit()\"></div>\n </div>\n\n <div class=\"message-wrapper\" [ngClass]=\"{ 'no-padding' : !options.icon }\">\n <div class=\"message\">{{ message }}</div>\n </div>\n\n @if (options.shouldClose) {\n <div class=\"progress\" [style.animation-duration]=\"(options.duration + 2 * options.animationDuration) + 's'\"></div>\n }\n</div>\n", styles: [":host{--apex-snackbar-animation-duration: 10s;--apex-snackbar-background-color: #14BD6C;--apex-snackbar-placeholder-text-color: #FFFFFF;--apex-snackbar-message-text-color: #FFFFFF;--apex-snackbar-error-background-color: #F96138;--apex-snackbar-progress-color: #FFFFFF;--apex-snackbar-x-icon-color: #FFFFFF;pointer-events:all;touch-action:manipulation}.placeholder-wrapper{height:24px;display:flex;align-items:center;align-self:stretch;gap:4px}.custom-snackbar{width:360px;height:fit-content;display:flex;position:relative;flex-direction:column;justify-content:center;align-items:flex-start;border-radius:4px;overflow:hidden;box-sizing:border-box;opacity:0;background:var(--apex-snackbar-background-color);padding:12px 16px 16px;margin-bottom:6px}apex-img{width:20px;height:20px}.placeholder{flex:1 0 0;color:var(--apex-snackbar-placeholder-text-color);font-size:18px;font-style:normal;font-weight:600;line-height:22px}.message-wrapper{display:flex;align-items:flex-start;align-self:stretch;gap:10px;padding-left:24px}.message-wrapper.no-padding{padding:0}.message{flex:1 0 0;color:var(--apex-snackbar-message-text-color);font-size:16px;font-style:normal;font-weight:400;line-height:20px}.error{background-color:var(--apex-snackbar-error-background-color)}.vertical-1{top:.5em}.vertical-0{bottom:.5em}.horizontal-0{animation:LeftPopUp var(--apex-snackbar-animation-duration) ease-in-out forwards}.horizontal-1{animation:CenterPopUp var(--apex-snackbar-animation-duration) ease-in-out forwards}.horizontal-2{animation:RightPopUp var(--apex-snackbar-animation-duration) ease-in-out forwards}.progress{max-width:392px;height:4px;position:absolute;bottom:0;opacity:.5;background:var(--apex-snackbar-progress-color);transform:translate(-16px);animation:shrinkProgress var(--apex-snackbar-animation-duration) ease-in-out}.x-icon{width:20px;cursor:pointer;transition:transform .3s ease;opacity:.7;padding-top:8px}.x-icon:after{font-size:36px;color:var(--apex-snackbar-x-icon-color);content:\"\\d7\"}.x-icon:hover{animation:rotate .3s linear}@media(max-width:460px){.custom-snackbar{width:300px}}@keyframes rotate{0%{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}to{transform:rotate(0)}}@keyframes shrinkProgress{0%{width:100%}to{width:0%}}@keyframes LeftPopUp{0%{left:-2em;opacity:0}to{left:.5em;opacity:1}}@keyframes CenterPopUp{0%{opacity:0}to{opacity:1}}@keyframes RightPopUp{0%{right:-2em;opacity:0}to{right:.5em;opacity:1}}\n"] }]
|
|
80
80
|
}], propDecorators: { container: [{
|
|
81
81
|
type: ViewChild,
|
|
82
82
|
args: ['container']
|
|
@@ -92,7 +92,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
92
92
|
type: Output
|
|
93
93
|
}] } });
|
|
94
94
|
|
|
95
|
-
class
|
|
95
|
+
class ApexSnackbarService {
|
|
96
96
|
constructor(appRef, overlayService) {
|
|
97
97
|
this.appRef = appRef;
|
|
98
98
|
this.overlayService = overlayService;
|
|
@@ -122,7 +122,7 @@ class IpiSnackbarService {
|
|
|
122
122
|
...options,
|
|
123
123
|
};
|
|
124
124
|
const snackbarContainerRef = this.createSnackbarContainer(snackbarOptions.position);
|
|
125
|
-
const snackbarRef = this.createComponent(component ? component :
|
|
125
|
+
const snackbarRef = this.createComponent(component ? component : ApexSnackbarComponent, snackbarOptions, snackbarContainerRef, component ? data : undefined);
|
|
126
126
|
if (!snackbarRef) {
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
@@ -177,12 +177,12 @@ class IpiSnackbarService {
|
|
|
177
177
|
}
|
|
178
178
|
applySnackbarStyles(snackbarElement, options) {
|
|
179
179
|
const styles = {
|
|
180
|
-
'--
|
|
181
|
-
'--
|
|
182
|
-
'--
|
|
183
|
-
'--
|
|
184
|
-
'--
|
|
185
|
-
'--
|
|
180
|
+
'--apex-snackbar-background-color': options.backgroundColor,
|
|
181
|
+
'--apex-snackbar-placeholder-text-color': options.placeholderTextColor,
|
|
182
|
+
'--apex-snackbar-message-text-color': options.messageTextColor,
|
|
183
|
+
'--apex-snackbar-progress-color': options.progressColor,
|
|
184
|
+
'--apex-snackbar-x-icon-color': options.xIconColor,
|
|
185
|
+
'--apex-snackbar-animation-duration': options.animationDuration ? `${options.animationDuration}s` : undefined
|
|
186
186
|
};
|
|
187
187
|
for (const [cssVar, value] of Object.entries(styles)) {
|
|
188
188
|
if (value) {
|
|
@@ -261,10 +261,10 @@ class IpiSnackbarService {
|
|
|
261
261
|
findSnackbarElementIndexFromRef(ref) {
|
|
262
262
|
return this.snackbarsArray.findIndex(snackbar => snackbar.ref === ref);
|
|
263
263
|
}
|
|
264
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type:
|
|
265
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type:
|
|
264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexSnackbarService, deps: [{ token: i0.ApplicationRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
265
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexSnackbarService, providedIn: 'root' }); }
|
|
266
266
|
}
|
|
267
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type:
|
|
267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexSnackbarService, decorators: [{
|
|
268
268
|
type: Injectable,
|
|
269
269
|
args: [{
|
|
270
270
|
providedIn: 'root',
|
|
@@ -275,5 +275,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
275
275
|
* Generated bundle index. Do not edit.
|
|
276
276
|
*/
|
|
277
277
|
|
|
278
|
-
export {
|
|
278
|
+
export { ApexSnackbarComponent, ApexSnackbarService, HorizontalPosition, VerticalPosition };
|
|
279
279
|
//# sourceMappingURL=apexara-ng-components-snackbar.mjs.map
|