@apexara/ng-components 1.0.0 → 1.0.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.
Files changed (56) hide show
  1. package/README.md +395 -395
  2. package/fesm2022/apexara-ng-components-button.mjs +9 -9
  3. package/fesm2022/apexara-ng-components-button.mjs.map +1 -1
  4. package/fesm2022/apexara-ng-components-carousel.mjs +6 -6
  5. package/fesm2022/apexara-ng-components-carousel.mjs.map +1 -1
  6. package/fesm2022/apexara-ng-components-checkbox.mjs +9 -9
  7. package/fesm2022/apexara-ng-components-checkbox.mjs.map +1 -1
  8. package/fesm2022/apexara-ng-components-chip.mjs +6 -6
  9. package/fesm2022/apexara-ng-components-chip.mjs.map +1 -1
  10. package/fesm2022/apexara-ng-components-datepicker.mjs +51 -51
  11. package/fesm2022/apexara-ng-components-datepicker.mjs.map +1 -1
  12. package/fesm2022/apexara-ng-components-dialog.mjs +7 -7
  13. package/fesm2022/apexara-ng-components-dialog.mjs.map +1 -1
  14. package/fesm2022/apexara-ng-components-drawer.mjs +7 -7
  15. package/fesm2022/apexara-ng-components-drawer.mjs.map +1 -1
  16. package/fesm2022/apexara-ng-components-expander.mjs +7 -7
  17. package/fesm2022/apexara-ng-components-expander.mjs.map +1 -1
  18. package/fesm2022/apexara-ng-components-image.mjs +11 -11
  19. package/fesm2022/apexara-ng-components-image.mjs.map +1 -1
  20. package/fesm2022/apexara-ng-components-input.mjs +12 -12
  21. package/fesm2022/apexara-ng-components-input.mjs.map +1 -1
  22. package/fesm2022/apexara-ng-components-listbox.mjs +9 -9
  23. package/fesm2022/apexara-ng-components-listbox.mjs.map +1 -1
  24. package/fesm2022/apexara-ng-components-radiobutton.mjs +9 -9
  25. package/fesm2022/apexara-ng-components-radiobutton.mjs.map +1 -1
  26. package/fesm2022/apexara-ng-components-select.mjs +15 -15
  27. package/fesm2022/apexara-ng-components-select.mjs.map +1 -1
  28. package/fesm2022/apexara-ng-components-services.mjs +7 -7
  29. package/fesm2022/apexara-ng-components-services.mjs.map +1 -1
  30. package/fesm2022/apexara-ng-components-snackbar.mjs +20 -20
  31. package/fesm2022/apexara-ng-components-snackbar.mjs.map +1 -1
  32. package/fesm2022/apexara-ng-components-table.mjs +36 -36
  33. package/fesm2022/apexara-ng-components-table.mjs.map +1 -1
  34. package/fesm2022/apexara-ng-components-textarea.mjs +9 -9
  35. package/fesm2022/apexara-ng-components-textarea.mjs.map +1 -1
  36. package/fesm2022/apexara-ng-components-tooltip.mjs +9 -9
  37. package/fesm2022/apexara-ng-components-tooltip.mjs.map +1 -1
  38. package/package.json +1 -1
  39. package/types/apexara-ng-components-button.d.ts +7 -7
  40. package/types/apexara-ng-components-carousel.d.ts +4 -4
  41. package/types/apexara-ng-components-checkbox.d.ts +7 -7
  42. package/types/apexara-ng-components-chip.d.ts +4 -4
  43. package/types/apexara-ng-components-datepicker.d.ts +12 -12
  44. package/types/apexara-ng-components-dialog.d.ts +4 -4
  45. package/types/apexara-ng-components-drawer.d.ts +4 -4
  46. package/types/apexara-ng-components-expander.d.ts +4 -4
  47. package/types/apexara-ng-components-image.d.ts +8 -8
  48. package/types/apexara-ng-components-input.d.ts +9 -9
  49. package/types/apexara-ng-components-listbox.d.ts +12 -12
  50. package/types/apexara-ng-components-radiobutton.d.ts +11 -11
  51. package/types/apexara-ng-components-select.d.ts +13 -13
  52. package/types/apexara-ng-components-services.d.ts +4 -4
  53. package/types/apexara-ng-components-snackbar.d.ts +12 -12
  54. package/types/apexara-ng-components-table.d.ts +23 -23
  55. package/types/apexara-ng-components-textarea.d.ts +9 -9
  56. package/types/apexara-ng-components-tooltip.d.ts +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"apexara-ng-components-table.mjs","sources":["../../../../projects/apexara/ng-components/table/src/table.component.ts","../../../../projects/apexara/ng-components/table/src/table.component.html","../../../../projects/apexara/ng-components/table/apexara-ng-components-table.ts"],"sourcesContent":["import { Component, ViewChildren, QueryList, ViewChild, ElementRef, Input, Output, EventEmitter, ChangeDetectorRef, HostListener, SimpleChanges, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet, NgStyle, NgClass, DecimalPipe, formatDate } from '@angular/common';\nimport { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { IpiChipComponent } from '@apexara/ng-components/chip';\nimport { IpiImageComponent } from '@apexara/ng-components/image';\nimport { IpiCheckboxComponent } from '@apexara/ng-components/checkbox';\nimport { IpiSelectComponent, IpiSelectOptions } from '@apexara/ng-components/select';\n\nimport { OSService, MobileOS } from '@apexara/ng-components/services';\n\nimport { IpiTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface IpiTableColumn {\n label?: string;\n value?: string;\n type?: IpiTableColumnType;\n width?: string;\n editable?: boolean;\n prefix?: string;\n suffix?: string;\n singleActions?: Action[];\n multipleActions?: Action[];\n dateFormat?: IpiDateFormatOptions;\n chipLabel?: { [key: string]: string };\n class?: string | { [key: string]: string };\n}\n\nexport enum IpiTableColumnType {\n Text,\n Date,\n Currency,\n Chip,\n Number,\n NumberMath,\n Actions,\n Checkbox,\n}\n\nexport type ActionShowType = Array<{ property: string; values: any[]; exists?: boolean; }> \n\nexport interface Action {\n icon: string;\n label: string;\n class?: string;\n showOn?: ActionShowType;\n disabled?: boolean;\n execute?: (row: any) => void;\n}\n\nexport interface IpiTableChange {\n from: number;\n to: number;\n filter?: string;\n sort?: any;\n}\n\nexport interface IpiDateFormatOptions {\n format: string;\n locale: string;\n timezone?: string;\n}\n\ninterface PageFormControls {\n pageSize: FormControl<{ label: string, value: number }>;\n}\n\n@Component({\n standalone: true,\n selector: 'ipi-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n imports: [\n NgStyle,\n NgClass,\n DecimalPipe,\n NgTemplateOutlet,\n IpiChipComponent,\n IpiImageComponent,\n IpiSelectComponent,\n IpiTooltipDirective,\n IpiCheckboxComponent,\n ScrollingModule,\n ]\n})\n\nexport class IpiTableComponent {\n\n constructor(\n private osService: OSService,\n private formBuilder: FormBuilder,\n private changeDetectorRef: ChangeDetectorRef) {\n }\n\n @ViewChild('theadRef') theadRef?: ElementRef<HTMLElement>;\n @ViewChildren('moreActionsList') moreActionsList!: QueryList<ElementRef>;\n @ViewChild(CdkVirtualScrollViewport) cdkViewport?: CdkVirtualScrollViewport;\n @ViewChild('dropdownElement') DropdownElement: ElementRef<any> | null = null;\n\n // Cell templates (mapped by type)\n @ViewChild('textCell', { static: true }) textCellTpl!: TemplateRef<any>;\n @ViewChild('numberCell', { static: true }) numberCellTpl!: TemplateRef<any>;\n @ViewChild('currencyCell', { static: true }) currencyCellTpl!: TemplateRef<any>;\n @ViewChild('numberMathCell', { static: true }) numberMathCellTpl!: TemplateRef<any>;\n @ViewChild('dateCell', { static: true }) dateCellTpl!: TemplateRef<any>;\n @ViewChild('chipCell', { static: true }) chipCellTpl!: TemplateRef<any>;\n @ViewChild('checkboxCell', { static: true }) checkboxCellTpl!: TemplateRef<any>;\n @ViewChild('actionCell', { static: true }) actionCellTpl!: TemplateRef<any>;\n \n\n // Data configuration\n @Input() data!: any[];\n @Input() dataLength!: number;\n @Input() columns!: IpiTableColumn[];\n @Input() filter!: string;\n\n // Data source configuration (serverSide loaded or local data)\n @Input() serverSide!: boolean;\n @Input() isLoading!: boolean;\n\n // Sorting configuration\n @Input() sortIndex = 0;\n @Input() sortable = true;\n @Input() sortDirection: 'asc' | 'desc' = 'asc';\n\n // Pagination configuration\n @Input() pageSize = 10;\n @Input() currentPage = 0;\n @Input() pageable = false;\n @Input() pageSizeOptions = [ 10, 25, 50, 100, 1000 ];\n\n // Virtual scroll configuration (optimization for large datasets)\n @Input() virtualScroll: boolean = false; // For local data only\n @Input() tableMaxHeight: number = 800; \n\n @Output() tableChange = new EventEmitter<IpiTableChange>()\n\n public itemSize: number = 42; // Must match CSS table row height\n\n public tooltipPosition = TooltipPosition;\n\n public TableColumnType = IpiTableColumnType;\n\n public totalPages!: number;\n public visibleRange!: string;\n\n public filteredData!: any[];\n\n public pageSizeSelectOptions!: IpiSelectOptions;\n\n public currentActiveRow: any;\n public isDropdown: boolean = false;\n\n public formGroup!: FormGroup<PageFormControls>;\n\n private _dataLength!: number;\n\n @HostListener('document:click', ['$event'])\n public onClick(event: any): void {\n // TO DO: When two tables exists the dropdown from first table is not closed\n if (event.target !== this.DropdownElement?.nativeElement && event.target) {\n if (this.currentActiveRow) {\n this.currentActiveRow.isDropdown = false;\n }\n\n this.changeDetectorRef.detectChanges();\n }\n }\n\n @HostListener('document:scroll')\n public onScroll(): void {\n\n for (let item of this.moreActionsList) {\n if (item.nativeElement.classList.contains('opened') && this.DropdownElement) {\n let actionPos = item.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.y += window.visualViewport!.offsetTop;\n }\n\n this.DropdownElement.nativeElement.style.top = `${ actionPos.y + actionPos.height }px`;\n\n break;\n }\n }\n }\n\n @HostListener('window:resize')\n public onResize(): void {\n\n for (let item of this.moreActionsList) {\n if (item.nativeElement.classList.contains('opened') && this.DropdownElement) { \n let actionPos = item.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.x += window.visualViewport!.offsetLeft;\n }\n\n const dropdownWidth = this.DropdownElement.nativeElement.offsetWidth;\n\n const left = actionPos.x + dropdownWidth / 2 < window.innerWidth - 10 ? actionPos.x : window.innerWidth - 10 - dropdownWidth;\n \n this.DropdownElement.nativeElement.style.transform = left === actionPos.x ? 'translateX(-50%)' : '';\n this.DropdownElement.nativeElement.style.left = left + 'px';\n\n break;\n }\n }\n }\n\n public ngOnInit(): void {\n if (!this.virtualScroll) {\n this.changeDetectorRef.detach();\n }\n }\n\n public ngAfterViewInit(): void {\n const from = this.currentPage * this.pageSize;\n const to = from + this.pageSize;\n\n if (this.serverSide && !this.data) {\n this.tableChange.emit({ from, to, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n if (!this.serverSide) {\n this.buildPaginationSelectDependecies();\n }\n\n this.getVirtualViewportHeight();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['isLoading'] && changes['isLoading'].currentValue === false) {\n if (this.data) {\n this._dataLength = this.data.length;\n }\n }\n\n if (changes['data'] && changes['data'].currentValue) {\n if (this.serverSide) {\n this.filteredData = this.data;\n\n this.preprocessData();\n } else {\n this.filteredData = this.filter ? this.filterData() : this.data;\n\n this.preprocessData();\n\n setTimeout(() => {\n this.sortColumn(this.columns[this.sortIndex], false);\n })\n }\n\n this._dataLength = this.dataLength ? this.dataLength : this.filteredData.length;\n }\n\n if (changes['filter'] && !changes['filter'].firstChange) {\n // The two ways of filtering data -> local and serverSide\n if (!this.serverSide) {\n this.filteredData = this.filterData();\n this._dataLength = this.filteredData.length;\n\n setTimeout(() => {\n this.goToFirstPage();\n });\n\n } else {\n setTimeout(() => {\n this.currentPage = 0;\n\n this.tableChange.emit({ from: 0, to: 0 + this.pageSize, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n });\n }\n\n }\n\n if (changes['pageable'] && changes['pageable'].currentValue !== undefined) {\n this.buildPaginationSelectDependecies();\n }\n\n const from = this.currentPage * this.pageSize;\n const to = Math.min(this._dataLength, from + this.pageSize);\n \n this.calculateTotalPages();\n this.updateVisibleRange(from, to);\n this.refreshLayout();\n\n this.changeDetectorRef.detectChanges();\n }\n\n public getPageData(): any[] {\n if (!this.filteredData) {\n return [];\n }\n\n if (!this.pageable) {\n return this.filteredData;\n }\n\n if (!this.serverSide) {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n\n return this.filteredData.slice(start, end);\n }\n\n return this.filteredData;\n }\n\n public updateVisibleRange(start: number, end: number): void {\n this.visibleRange = `Showing ${ start + 1 } to ${end} of ${this._dataLength} results`;\n\n this.changeDetectorRef.detectChanges();\n }\n\n public calculateTotalPages(): void {\n this.totalPages = Math.ceil(this._dataLength / this.pageSize);\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public getVirtualViewportHeight(): number {\n const headerHeight = this.theadRef?.nativeElement?.getBoundingClientRect().height || 0;\n\n const renderedCount = this.serverSide\n ? (this.filteredData ? this.filteredData.length : 0)\n : (this.getPageData() ? this.getPageData().length : 0);\n\n if (renderedCount <= 0) {\n return headerHeight;\n }\n\n const maxTotal = this.tableMaxHeight;\n const bodyCapacity = Math.max(0, maxTotal - headerHeight);\n const rowsHeight = Math.min(bodyCapacity, this.itemSize * renderedCount);\n\n return Math.max(0, headerHeight + rowsHeight);\n }\n\n public shouldShowViewportScroll(): boolean {\n if (!this.virtualScroll) {\n return false;\n }\n\n const headerHeight = this.theadRef?.nativeElement?.getBoundingClientRect().height || 0;\n const availableBodyHeight = Math.max(0, this.tableMaxHeight - headerHeight);\n\n const renderedCount = this.serverSide\n ? (this.filteredData ? this.filteredData.length : 0)\n : this.getPageData().length;\n\n const rowsHeight = this.itemSize * renderedCount;\n\n return rowsHeight > availableBodyHeight;\n }\n\n public getCellTemplate(column: IpiTableColumn): TemplateRef<any> {\n switch (column.type) {\n case IpiTableColumnType.Number:\n return this.numberCellTpl;\n case IpiTableColumnType.Currency:\n return this.currencyCellTpl;\n case IpiTableColumnType.NumberMath:\n return this.numberMathCellTpl;\n case IpiTableColumnType.Date:\n return this.dateCellTpl;\n case IpiTableColumnType.Chip:\n return this.chipCellTpl;\n case IpiTableColumnType.Checkbox:\n return this.checkboxCellTpl;\n case IpiTableColumnType.Actions:\n return this.actionCellTpl;\n default:\n return this.textCellTpl;\n }\n }\n\n private refreshLayout(): void {\n this.cdkViewport?.checkViewportSize();\n this.changeDetectorRef.detectChanges();\n }\n\n public goToPage(page: number): void {\n this.currentPage = page;\n this.calculatePages();\n }\n\n public goToPreviousPage(): void {\n this.currentPage--;\n this.calculatePages();\n }\n\n public goToNextPage(): void {\n this.currentPage++;\n this.calculatePages();\n }\n\n public goToFirstPage(): void {\n this.currentPage = 0;\n this.calculatePages();\n }\n\n public goToLastPage(): void {\n this.currentPage = this.totalPages - 1;\n this.calculatePages();\n }\n\n public cellEdit(event: KeyboardEvent, column: string, currentPageRowIndex: number): void {\n const dataIndex = currentPageRowIndex + (this.currentPage * this.pageSize);\n\n if (column.indexOf('.') === -1) {\n this.filteredData[dataIndex][column] = (event.target as HTMLDivElement).innerText;\n } else { // Nested properties\n let data = this.filteredData[dataIndex];\n const fullPath = column.split('.');\n\n for (let i = 0; i < fullPath.length; i++) {\n if (i < fullPath.length - 1) {\n data = data[fullPath[i]];\n } else {\n data[fullPath[i]] = (event.target as HTMLDivElement).innerText;\n }\n }\n }\n }\n\n public formatDate(dateAsString: string | null | undefined, formatDateOptions: IpiDateFormatOptions = { format: 'shortDate', locale: 'en-US', timezone: undefined }): string {\n if (dateAsString === null || dateAsString === undefined || dateAsString === '') {\n return '';\n }\n\n return formatDate(dateAsString, formatDateOptions.format, formatDateOptions.locale, formatDateOptions.timezone);\n }\n\n public getClass(row: any, column: IpiTableColumn): { [key: string]: boolean } | string {\n if (!column.class) {\n return '';\n }\n\n if (typeof column.class === 'string') {\n return column.class;\n }\n\n return {\n [column.class[this.getDescendantProp(row, column)]]: true\n };\n }\n\n public getDescendantProp(row: any, column: IpiTableColumn): any {\n if (!column.value || column.value === null) {\n return column.label;\n }\n\n // Case only on preprocessing - returns any numbers that have been passed in the column.value string\n if (isFinite(Number(column.value))) {\n return parseFloat(column.value);\n }\n\n if (column.type === this.TableColumnType.NumberMath) {\n return row[column.value];\n }\n\n return column.value.split('.')\n .reduce((prev: any, curr: string) => {\n if (prev && curr in prev) {\n return prev[curr];\n } else {\n return undefined;\n }\n }, row);\n }\n\n public getChipLabel(row: any, column: IpiTableColumn): string {\n if (!column.chipLabel) {\n return column.label ? column.label : this.getDescendantProp(row, column);\n }\n\n return column.chipLabel[this.getDescendantProp(row, column)];\n }\n\n public getCheckboxState(row: any, column: IpiTableColumn): boolean {\n let state = this.getDescendantProp(row, column);\n\n if (typeof state !== 'boolean') {\n return false;\n }\n\n return state;\n }\n\n public handleActionShow(action: Action, row: any, column?: IpiTableColumn): boolean {\n if (!action.showOn || action.showOn.length === 0) {\n return true;\n }\n\n return action.showOn.every((condition) => {\n const rowValue = this.getDescendantProp(row, { value: condition.property });\n\n const ifValueExists = !!rowValue;\n \n if (condition.exists != null && condition.exists === ifValueExists) {\n return ifValueExists;\n }\n\n return condition.values.includes(rowValue);\n });\n }\n\n public sortColumn(column: any, changeSortDirection = true): void {\n if (!this.sortable) {\n return;\n }\n\n if (!column.value) {\n return;\n }\n\n if (changeSortDirection) {\n\n if (this.sortIndex == this.columns.indexOf(column)) {\n switch (this.sortDirection) {\n case 'asc':\n this.sortDirection = 'desc';\n break;\n case 'desc':\n this.sortDirection = 'asc';\n break;\n default:\n this.sortDirection = 'asc';\n break;\n }\n } else {\n this.sortDirection = 'asc';\n this.sortIndex = this.columns.indexOf(column);\n }\n\n }\n\n if (this.serverSide) {\n this.currentPage = 0;\n\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n } else {\n this.goToFirstPage();\n\n this.sortData(this.filteredData, column);\n }\n\n if (this.currentActiveRow) {\n this.currentActiveRow.isDropdown = false;\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public async toggleActionDropdown(row: any, event: any): Promise<void> {\n // Prevent the event to be processed by the Hostlistener\n event.stopPropagation();\n\n let actionPos!: DOMRect;\n\n if (this.currentActiveRow) {\n this.currentActiveRow.isDropdown = false;\n }\n\n row.isDropdown = !row.isDropdown;\n\n this.currentActiveRow = row;\n\n this.changeDetectorRef.detectChanges();\n\n for (let i of this.moreActionsList) {\n if (i.nativeElement.classList.contains('opened')) {\n actionPos = i.nativeElement.getBoundingClientRect();\n }\n }\n\n if (this.DropdownElement) {\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.y += window.visualViewport!.offsetTop;\n actionPos.x += window.visualViewport!.offsetLeft;\n }\n\n const dropdownWidth = this.DropdownElement.nativeElement.offsetWidth;\n\n const left = actionPos.x + dropdownWidth / 2 < window.innerWidth - 10 ? actionPos.x : window.innerWidth - 10 - dropdownWidth;\n\n this.DropdownElement.nativeElement.style.transform = left === actionPos.x ? 'translateX(-50%)' : '';\n this.DropdownElement.nativeElement.style.left = left + 'px';\n this.DropdownElement.nativeElement.style.top = `${ actionPos.y + actionPos.height }px`;\n }\n }\n\n public onViewportScroll(): void {\n // Reposition dropdown while body scrolls inside viewport\n this.onScroll();\n }\n\n private preprocessData(): void {\n if (!this.data || this.data.length === 0) {\n return;\n }\n\n this.columns.forEach(column => {\n if (!column.value || column.type !== this.TableColumnType.NumberMath) {\n return;\n }\n\n this.data.forEach(row => {\n const result = this.calculateNumberMathCell(row, column);\n row[column.value as any] = result;\n });\n });\n }\n\n private calculateNumberMathCell(row: any, column: any): any {\n const expression = column.value.replace(\n /([a-zA-Z_][a-zA-Z0-9_.]*|\\d*\\.?\\d+)/g,\n (match: any) => {\n let value = this.getDescendantProp(row, { value: match });\n\n return (typeof value === 'number') ? value : parseFloat(value) || 0;\n }\n );\n\n let fn = new Function(`return ${expression};`);\n let result = fn();\n\n if (Number.isFinite(result)) {\n return result;\n }\n\n return this.getDescendantProp(row, column);\n }\n\n private filterData(): any[] {\n if (!this.data || this.data.length === 0) {\n return [];\n }\n\n let arrayToReturn: any[] = [ ];\n\n for (let row of this.data) {\n for (let column of this.columns) {\n if (!column.value) { continue; }\n\n let access = row[column.value];\n\n if (column.value.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n access = this.getAccessIfColumnValueIsObject(row, column);\n }\n\n if (access === undefined) {\n break;\n }\n\n const rowPropAsString = JSON.stringify(access).toLowerCase();\n\n if (rowPropAsString.includes(this.filter.toLowerCase())) {\n arrayToReturn.push(row);\n\n break;\n }\n }\n }\n\n return arrayToReturn;\n }\n\n private sortData(data: any[], column: IpiTableColumn): any[] {\n if (!data || data.length === 0 || !Array.isArray(data)) {\n return [];\n }\n\n if (column) {\n this.sortByProperty(data, column);\n }\n\n return data;\n }\n\n private sortByProperty(arr: any, column: any): number | void {\n if (this.sortDirection === 'desc') {\n this.sortReverse(arr, column);\n return;\n }\n\n return arr.sort((a: any, b: any) => {\n let valueA = a[column.value];\n let valueB = b[column.value];\n\n let access = column.value;\n\n if (access.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n valueA = this.getAccessIfColumnValueIsObject(a, column);\n valueB = this.getAccessIfColumnValueIsObject(b, column);\n } else {\n if (typeof valueA === 'string' && valueB !== undefined) {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n }\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return valueA - valueB;\n }\n \n if (!valueA && valueB) return -1;\n if (valueA && !valueB) return 1;\n\n if (!valueA && !valueB) return 0;\n\n if (valueA < valueB) return -1;\n if (valueA > valueB) return 1;\n\n return 0;\n });\n }\n\n private sortReverse(arr: any, column: any) {\n return arr.sort((a: any, b: any) => {\n let valueA = a[column.value];\n let valueB = b[column.value];\n\n let access = column.value;\n\n if (access.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n valueA = this.getAccessIfColumnValueIsObject(a, column);\n valueB = this.getAccessIfColumnValueIsObject(b, column);\n } else {\n if (typeof valueA === 'string' && valueB !== undefined) {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n }\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return valueB - valueA;\n }\n\n if (!valueA && valueB) return 1;\n if (valueA && !valueB) return -1;\n\n if (!valueA && !valueB) return 0;\n\n if (valueA < valueB) return 1;\n if (valueA > valueB) return -1;\n\n return 0;\n });\n }\n\n private getAccessIfColumnValueIsObject(row: any, column: IpiTableColumn): any {\n if (!column.value || column.value === null) {\n return undefined;\n }\n\n const keys = column.value.split('.');\n\n let access = row[keys[0]];\n\n for (let i = 1; i < keys.length; i++) {\n if (access && keys[i] in access) {\n access = access[keys[i]];\n } else {\n return undefined;\n }\n }\n\n return access;\n }\n\n private buildPaginationSelectDependecies(): void {\n const formControls: PageFormControls = {\n pageSize: this.formBuilder.control({ label: this.pageSize.toString(), value: this.pageSize }, { nonNullable: true, validators: [ Validators.required ] })\n };\n\n this.formGroup = this.formBuilder.group(formControls);\n\n const selectData = this.pageSizeOptions.map(item => ({\n label: item.toString(),\n value: item\n }));\n\n this.pageSizeSelectOptions = {\n label: '',\n data: selectData,\n formGroup: this.formGroup,\n formControlName: 'pageSize'\n };\n\n this.subscribeToFormValueChanges();\n }\n\n private subscribeToFormValueChanges(): void {\n this.formGroup.controls.pageSize.valueChanges.subscribe((value) => {\n if (this.pageSize === value.value) {\n return;\n }\n\n const currentPageFirstRowIndex = this.currentPage * this.pageSize;\n this.pageSize = value.value;\n\n this.currentPage = Math.floor(currentPageFirstRowIndex / this.pageSize);\n\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n if (this.serverSide) {\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n this.calculateTotalPages();\n this.updateVisibleRange(start, end);\n this.cdkViewport?.checkViewportSize();\n });\n }\n\n private calculatePages(): void {\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n if (!this.serverSide) {\n this.updateVisibleRange(start, end);\n } else {\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n this.changeDetectorRef.detectChanges();\n }\n}\n","<div class=\"container\" [ngClass]=\"{ 'is-loading': isLoading }\">\n @if (virtualScroll) {\n <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\" class=\"cdk-table-viewport\" [ngStyle]=\"{ height: getVirtualViewportHeight() + 'px' }\" [style.overflow-y]=\"shouldShowViewportScroll() ? 'auto' : 'hidden'\" (scrolled)=\"onViewportScroll()\">\n <table>\n <thead #theadRef>\n <tr>\n @for (column of columns; track $index) {\n <th [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n <div class=\"cell\">\n <span>{{ column.label }}</span>\n\n @if (column.type !== TableColumnType.Actions && sortable) {\n <div class=\"arranger\" (click)=\"sortColumn(column)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M3.11445 5.50005H8.88795C9.31895 5.50005 9.54795 4.99005 9.26145 4.66755L6.37495 1.42005C6.32813 1.3672 6.27063 1.32489 6.20624 1.29591C6.14186 1.26694 6.07205 1.25195 6.00145 1.25195C5.93084 1.25195 5.86104 1.26694 5.79666 1.29591C5.73227 1.32489 5.67477 1.3672 5.62795 1.42005L2.74045 4.66755C2.45395 4.99005 2.68295 5.50005 3.11445 5.50005ZM5.62745 10.5795C5.67427 10.6324 5.73177 10.6747 5.79616 10.7037C5.86054 10.7327 5.93034 10.7476 6.00095 10.7476C6.07155 10.7476 6.14136 10.7327 6.20574 10.7037C6.27013 10.6747 6.32763 10.6324 6.37445 10.5795L9.26095 7.33205C9.54795 7.01005 9.31895 6.50005 8.88745 6.50005H3.11445C2.68345 6.50005 2.45445 7.01005 2.74095 7.33255L5.62745 10.5795Z\" fill=\"#C6C6C6\"/>\n </svg>\n </div>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n <tr *cdkVirtualFor=\"let row of getPageData(); trackBy: trackByIndex\">\n @for (column of columns; track $index) {\n <td tabindex=\"-1\">\n <ng-container [ngTemplateOutlet]=\"getCellTemplate(column)\"\n [ngTemplateOutletContext]=\"{ row: row, column: column, $index: $index }\">\n </ng-container>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <table>\n <thead>\n <tr>\n @for (column of columns; track $index) {\n <th [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n <div class=\"cell\">\n <span>{{ column.label }}</span>\n\n @if (column.type !== TableColumnType.Actions && sortable) {\n <div class=\"arranger\" (click)=\"sortColumn(column)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M3.11445 5.50005H8.88795C9.31895 5.50005 9.54795 4.99005 9.26145 4.66755L6.37495 1.42005C6.32813 1.3672 6.27063 1.32489 6.20624 1.29591C6.14186 1.26694 6.07205 1.25195 6.00145 1.25195C5.93084 1.25195 5.86104 1.26694 5.79666 1.29591C5.73227 1.32489 5.67477 1.3672 5.62795 1.42005L2.74045 4.66755C2.45395 4.99005 2.68295 5.50005 3.11445 5.50005ZM5.62745 10.5795C5.67427 10.6324 5.73177 10.6747 5.79616 10.7037C5.86054 10.7327 5.93034 10.7476 6.00095 10.7476C6.07155 10.7476 6.14136 10.7327 6.20574 10.7037C6.27013 10.6747 6.32763 10.6324 6.37445 10.5795L9.26095 7.33205C9.54795 7.01005 9.31895 6.50005 8.88745 6.50005H3.11445C2.68345 6.50005 2.45445 7.01005 2.74095 7.33255L5.62745 10.5795Z\" fill=\"#C6C6C6\"/>\n </svg>\n </div>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (row of getPageData(); track $index) { \n <tr>\n @for (column of columns; track $index) {\n <td tabindex=\"-1\">\n <ng-container [ngTemplateOutlet]=\"getCellTemplate(column)\"\n [ngTemplateOutletContext]=\"{ row: row, column: column, $index: $index }\">\n </ng-container>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n\n @if (filter && filteredData && filteredData.length === 0) {\n <div class=\"row no-data\">\n <span>No data matching the filter:</span>\n\n <span>\"{{ filter }}\"</span>\n </div>\n }\n\n @if (!filter && data && data.length === 0) {\n <div class=\"row no-data\">No data available.</div>\n }\n\n @if (pageable && getPageData().length !== 0) {\n <div class=\"paging\">\n <div class=\"visible-range\">{{ visibleRange }}</div>\n\n <ng-container *ngTemplateOutlet=\"pagePicker; context: { totalPages: totalPages }\"></ng-container>\n\n <div class=\"page-size-option-picker\">\n <span>Items per page:</span>\n\n <ipi-select class=\"table\" [options]=\"pageSizeSelectOptions\"></ipi-select>\n </div>\n </div>\n }\n</div>\n\n<ng-template #textCell let-row=\"row\" let-column=\"column\" let-index=\"$index\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) }}{{ column.suffix ? column.suffix : '' }}\n </div>\n</ng-template>\n\n<ng-template #dateCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\">\n {{ formatDate(getDescendantProp(row, column), column.dateFormat) }}\n </div>\n</ng-template>\n\n<ng-template #currencyCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\"\n [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n\n @if (getDescendantProp(row, column) !== undefined) {\n {{ column.prefix ? column.prefix : '' }}{{ (getDescendantProp(row, column) / 100) | number }}\n }\n </div>\n</ng-template>\n\n<ng-template #numberCell let-row=\"row\" let-column=\"column\" let-index=\"i\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) | number}}{{ column.suffix ? column.suffix : '' }}\n </div>\n</ng-template>\n\n<ng-template #numberMathCell let-row=\"row\" let-column=\"column\" let-index=\"i\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) | number}}{{ column.suffix ? column.suffix : '' }}\n </div>\n</ng-template>\n\n<ng-template #actionCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell actions\">\n\n @for (action of column.singleActions; track $index) {\n @if (handleActionShow(action, row, column)) {\n <div IpiTooltip (click)=\"action.execute && action.execute(row)\" [ipiTooltip]=\"action.label\" [tooltipPosition]=\"tooltipPosition.Above\" class=\"action-icon-wrapper\" [ngClass]=\"{ 'disabled': action.disabled }\">\n <ipi-img [src]=\" 'assets/img/' + action.icon\" [ngClass]=\"action.class\" [ariaLabel]=\"'Action icon for ' + action.label\"></ipi-img>\n </div>\n }\n }\n\n @if (column.multipleActions) {\n <div class=\"action-icon-wrapper\" #moreActionsList [ngClass]=\"{ 'opened': row.isDropdown }\" (click)=\"toggleActionDropdown(row, $event)\">\n <svg class=\"multiple-action-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\n <path d=\"M10.3047 8C10.3047 8.34612 10.2021 8.68446 10.0098 8.97225C9.81747 9.26004 9.54416 9.48434 9.22438 9.61679C8.90461 9.74924 8.55275 9.7839 8.21328 9.71638C7.87381 9.64885 7.56199 9.48218 7.31725 9.23744C7.07251 8.9927 6.90584 8.68088 6.83831 8.34141C6.77079 8.00194 6.80545 7.65008 6.9379 7.33031C7.07035 7.01053 7.29465 6.73722 7.58244 6.54493C7.87023 6.35264 8.20857 6.25 8.55469 6.25C9.01868 6.25046 9.46353 6.43498 9.79162 6.76307C10.1197 7.09116 10.3042 7.53601 10.3047 8ZM8.55469 4.75C8.90081 4.75 9.23915 4.64737 9.52694 4.45507C9.81472 4.26278 10.039 3.98947 10.1715 3.6697C10.3039 3.34993 10.3386 2.99806 10.2711 2.65859C10.2035 2.31913 10.0369 2.00731 9.79213 1.76256C9.54738 1.51782 9.23556 1.35115 8.8961 1.28363C8.55663 1.2161 8.20476 1.25076 7.88499 1.38321C7.56522 1.51566 7.29191 1.73997 7.09962 2.02775C6.90732 2.31554 6.80469 2.65388 6.80469 3C6.80515 3.46399 6.98967 3.90884 7.31776 4.23693C7.64585 4.56502 8.0907 4.74954 8.55469 4.75ZM8.55469 11.25C8.20857 11.25 7.87023 11.3526 7.58244 11.5449C7.29465 11.7372 7.07035 12.0105 6.9379 12.3303C6.80545 12.6501 6.77079 13.0019 6.83831 13.3414C6.90584 13.6809 7.07251 13.9927 7.31725 14.2374C7.56199 14.4822 7.87381 14.6489 8.21328 14.7164C8.55275 14.7839 8.90461 14.7492 9.22438 14.6168C9.54416 14.4843 9.81747 14.26 10.0098 13.9722C10.2021 13.6845 10.3047 13.3461 10.3047 13C10.3042 12.536 10.1197 12.0912 9.79162 11.7631C9.46353 11.435 9.01868 11.2505 8.55469 11.25Z\" fill=\"#5D6068\"/>\n </svg>\n </div>\n }\n\n </div>\n\n @if (row.isDropdown) {\n <ng-container class=\"dropdown-element\" *ngTemplateOutlet=\"multipleActionsDropdown; context: { row, column }\"></ng-container>\n }\n</ng-template>\n\n<ng-template #chipCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell chip\">\n @if (getChipLabel(row, column)) {\n <ipi-chip [ngClass]=\"getClass(row, column)\"> {{ getChipLabel(row, column) }}</ipi-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #checkboxCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell checkbox\">\n <ipi-checkbox [checked]=\"getCheckboxState(row, column)\" [disabled]=\"true\"></ipi-checkbox>\n </div>\n</ng-template>\n\n<ng-template #multipleActionsDropdown let-row=\"row\" let-column=\"column\">\n <div #multipleActionsDropdownElement #dropdownElement class=\"more-actions-dropdown\">\n @for (action of column.multipleActions; track $index) {\n\n @if (handleActionShow(action, row, column)) {\n <div class=\"dropdown-row\" (click)=\"action.execute && action.execute(row)\">\n <ipi-img [src]=\"'assets/img/' + action.icon\" [ngClass]=\"action.class\" [ariaLabel]=\"'Action icon for ' + action.label\"></ipi-img>\n\n <span>{{ action.label }}</span>\n </div>\n }\n\n }\n </div>\n</ng-template>\n\n<ng-template #pagePicker let-totalPages=\"totalPages\">\n <div class=\"page-picker\">\n <!-- If page one should be visible -->\n @if (currentPage + 1 >= 3) {\n <span (click)=\"goToPage(0)\">1</span>\n <span class=\"style-excluded\">...</span>\n }\n\n <!-- Middle part of the page-picker -->\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage - 1 } \"></ng-container>\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage, class: 'highlighted' } \"></ng-container>\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage + 1 } \"></ng-container>\n\n <!-- If last page should be visible -->\n @if (currentPage + 1 <= totalPages - 2) {\n <span class=\"style-excluded\">...</span>\n <span (click)=\"goToPage(totalPages - 1)\">{{ totalPages }}</span>\n }\n\n </div>\n</ng-template>\n\n<ng-template #page let-page=\"page\" let-class=\"class\">\n @if (page >= 0 && page < totalPages) {\n <span [ngClass]=\"class\" (click)=\"goToPage(page)\">{{ page + 1 }}</span>\n }\n</ng-template>\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-table.mjs","sources":["../../../../projects/apexara/ng-components/table/src/table.component.ts","../../../../projects/apexara/ng-components/table/src/table.component.html","../../../../projects/apexara/ng-components/table/apexara-ng-components-table.ts"],"sourcesContent":["import { Component, ViewChildren, QueryList, ViewChild, ElementRef, Input, Output, EventEmitter, ChangeDetectorRef, HostListener, SimpleChanges, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet, NgStyle, NgClass, DecimalPipe, formatDate } from '@angular/common';\nimport { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { ApexChipComponent } from '@apexara/ng-components/chip';\nimport { ApexImageComponent } from '@apexara/ng-components/image';\nimport { ApexCheckboxComponent } from '@apexara/ng-components/checkbox';\nimport { ApexSelectComponent, ApexSelectOptions } from '@apexara/ng-components/select';\n\nimport { OSService, MobileOS } from '@apexara/ng-components/services';\n\nimport { ApexTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface ApexTableColumn {\n label?: string;\n value?: string;\n type?: ApexTableColumnType;\n width?: string;\n editable?: boolean;\n prefix?: string;\n suffix?: string;\n singleActions?: Action[];\n multipleActions?: Action[];\n dateFormat?: ApexDateFormatOptions;\n chipLabel?: { [key: string]: string };\n class?: string | { [key: string]: string };\n}\n\nexport enum ApexTableColumnType {\n Text,\n Date,\n Currency,\n Chip,\n Number,\n NumberMath,\n Actions,\n Checkbox,\n}\n\nexport type ActionShowType = Array<{ property: string; values: any[]; exists?: boolean; }> \n\nexport interface Action {\n icon: string;\n label: string;\n class?: string;\n showOn?: ActionShowType;\n disabled?: boolean;\n execute?: (row: any) => void;\n}\n\nexport interface ApexTableChange {\n from: number;\n to: number;\n filter?: string;\n sort?: any;\n}\n\nexport interface ApexDateFormatOptions {\n format: string;\n locale: string;\n timezone?: string;\n}\n\ninterface PageFormControls {\n pageSize: FormControl<{ label: string, value: number }>;\n}\n\n@Component({\n standalone: true,\n selector: 'apex-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n imports: [\n NgStyle,\n NgClass,\n DecimalPipe,\n NgTemplateOutlet,\n ApexChipComponent,\n ApexImageComponent,\n ApexSelectComponent,\n ApexTooltipDirective,\n ApexCheckboxComponent,\n ScrollingModule,\n ]\n})\n\nexport class ApexTableComponent {\n\n constructor(\n private osService: OSService,\n private formBuilder: FormBuilder,\n private changeDetectorRef: ChangeDetectorRef) {\n }\n\n @ViewChild('theadRef') theadRef?: ElementRef<HTMLElement>;\n @ViewChildren('moreActionsList') moreActionsList!: QueryList<ElementRef>;\n @ViewChild(CdkVirtualScrollViewport) cdkViewport?: CdkVirtualScrollViewport;\n @ViewChild('dropdownElement') DropdownElement: ElementRef<any> | null = null;\n\n // Cell templates (mapped by type)\n @ViewChild('textCell', { static: true }) textCellTpl!: TemplateRef<any>;\n @ViewChild('numberCell', { static: true }) numberCellTpl!: TemplateRef<any>;\n @ViewChild('currencyCell', { static: true }) currencyCellTpl!: TemplateRef<any>;\n @ViewChild('numberMathCell', { static: true }) numberMathCellTpl!: TemplateRef<any>;\n @ViewChild('dateCell', { static: true }) dateCellTpl!: TemplateRef<any>;\n @ViewChild('chipCell', { static: true }) chipCellTpl!: TemplateRef<any>;\n @ViewChild('checkboxCell', { static: true }) checkboxCellTpl!: TemplateRef<any>;\n @ViewChild('actionCell', { static: true }) actionCellTpl!: TemplateRef<any>;\n \n\n // Data configuration\n @Input() data!: any[];\n @Input() dataLength!: number;\n @Input() columns!: ApexTableColumn[];\n @Input() filter!: string;\n\n // Data source configuration (serverSide loaded or local data)\n @Input() serverSide!: boolean;\n @Input() isLoading!: boolean;\n\n // Sorting configuration\n @Input() sortIndex = 0;\n @Input() sortable = true;\n @Input() sortDirection: 'asc' | 'desc' = 'asc';\n\n // Pagination configuration\n @Input() pageSize = 10;\n @Input() currentPage = 0;\n @Input() pageable = false;\n @Input() pageSizeOptions = [ 10, 25, 50, 100, 1000 ];\n\n // Virtual scroll configuration (optimization for large datasets)\n @Input() virtualScroll: boolean = false; // For local data only\n @Input() tableMaxHeight: number = 800; \n\n @Output() tableChange = new EventEmitter<ApexTableChange>()\n\n public itemSize: number = 42; // Must match CSS table row height\n\n public tooltipPosition = TooltipPosition;\n\n public TableColumnType = ApexTableColumnType;\n\n public totalPages!: number;\n public visibleRange!: string;\n\n public filteredData!: any[];\n\n public pageSizeSelectOptions!: ApexSelectOptions;\n\n public currentActiveRow: any;\n public isDropdown: boolean = false;\n\n public formGroup!: FormGroup<PageFormControls>;\n\n private _dataLength!: number;\n\n @HostListener('document:click', ['$event'])\n public onClick(event: any): void {\n // TO DO: When two tables exists the dropdown from first table is not closed\n if (event.target !== this.DropdownElement?.nativeElement && event.target) {\n if (this.currentActiveRow) {\n this.currentActiveRow.isDropdown = false;\n }\n\n this.changeDetectorRef.detectChanges();\n }\n }\n\n @HostListener('document:scroll')\n public onScroll(): void {\n\n for (let item of this.moreActionsList) {\n if (item.nativeElement.classList.contains('opened') && this.DropdownElement) {\n let actionPos = item.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.y += window.visualViewport!.offsetTop;\n }\n\n this.DropdownElement.nativeElement.style.top = `${ actionPos.y + actionPos.height }px`;\n\n break;\n }\n }\n }\n\n @HostListener('window:resize')\n public onResize(): void {\n\n for (let item of this.moreActionsList) {\n if (item.nativeElement.classList.contains('opened') && this.DropdownElement) { \n let actionPos = item.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.x += window.visualViewport!.offsetLeft;\n }\n\n const dropdownWidth = this.DropdownElement.nativeElement.offsetWidth;\n\n const left = actionPos.x + dropdownWidth / 2 < window.innerWidth - 10 ? actionPos.x : window.innerWidth - 10 - dropdownWidth;\n \n this.DropdownElement.nativeElement.style.transform = left === actionPos.x ? 'translateX(-50%)' : '';\n this.DropdownElement.nativeElement.style.left = left + 'px';\n\n break;\n }\n }\n }\n\n public ngOnInit(): void {\n if (!this.virtualScroll) {\n this.changeDetectorRef.detach();\n }\n }\n\n public ngAfterViewInit(): void {\n const from = this.currentPage * this.pageSize;\n const to = from + this.pageSize;\n\n if (this.serverSide && !this.data) {\n this.tableChange.emit({ from, to, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n if (!this.serverSide) {\n this.buildPaginationSelectDependecies();\n }\n\n this.getVirtualViewportHeight();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['isLoading'] && changes['isLoading'].currentValue === false) {\n if (this.data) {\n this._dataLength = this.data.length;\n }\n }\n\n if (changes['data'] && changes['data'].currentValue) {\n if (this.serverSide) {\n this.filteredData = this.data;\n\n this.preprocessData();\n } else {\n this.filteredData = this.filter ? this.filterData() : this.data;\n\n this.preprocessData();\n\n setTimeout(() => {\n this.sortColumn(this.columns[this.sortIndex], false);\n })\n }\n\n this._dataLength = this.dataLength ? this.dataLength : this.filteredData.length;\n }\n\n if (changes['filter'] && !changes['filter'].firstChange) {\n // The two ways of filtering data -> local and serverSide\n if (!this.serverSide) {\n this.filteredData = this.filterData();\n this._dataLength = this.filteredData.length;\n\n setTimeout(() => {\n this.goToFirstPage();\n });\n\n } else {\n setTimeout(() => {\n this.currentPage = 0;\n\n this.tableChange.emit({ from: 0, to: 0 + this.pageSize, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n });\n }\n\n }\n\n if (changes['pageable'] && changes['pageable'].currentValue !== undefined) {\n this.buildPaginationSelectDependecies();\n }\n\n const from = this.currentPage * this.pageSize;\n const to = Math.min(this._dataLength, from + this.pageSize);\n \n this.calculateTotalPages();\n this.updateVisibleRange(from, to);\n this.refreshLayout();\n\n this.changeDetectorRef.detectChanges();\n }\n\n public getPageData(): any[] {\n if (!this.filteredData) {\n return [];\n }\n\n if (!this.pageable) {\n return this.filteredData;\n }\n\n if (!this.serverSide) {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n\n return this.filteredData.slice(start, end);\n }\n\n return this.filteredData;\n }\n\n public updateVisibleRange(start: number, end: number): void {\n this.visibleRange = `Showing ${ start + 1 } to ${end} of ${this._dataLength} results`;\n\n this.changeDetectorRef.detectChanges();\n }\n\n public calculateTotalPages(): void {\n this.totalPages = Math.ceil(this._dataLength / this.pageSize);\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public getVirtualViewportHeight(): number {\n const headerHeight = this.theadRef?.nativeElement?.getBoundingClientRect().height || 0;\n\n const renderedCount = this.serverSide\n ? (this.filteredData ? this.filteredData.length : 0)\n : (this.getPageData() ? this.getPageData().length : 0);\n\n if (renderedCount <= 0) {\n return headerHeight;\n }\n\n const maxTotal = this.tableMaxHeight;\n const bodyCapacity = Math.max(0, maxTotal - headerHeight);\n const rowsHeight = Math.min(bodyCapacity, this.itemSize * renderedCount);\n\n return Math.max(0, headerHeight + rowsHeight);\n }\n\n public shouldShowViewportScroll(): boolean {\n if (!this.virtualScroll) {\n return false;\n }\n\n const headerHeight = this.theadRef?.nativeElement?.getBoundingClientRect().height || 0;\n const availableBodyHeight = Math.max(0, this.tableMaxHeight - headerHeight);\n\n const renderedCount = this.serverSide\n ? (this.filteredData ? this.filteredData.length : 0)\n : this.getPageData().length;\n\n const rowsHeight = this.itemSize * renderedCount;\n\n return rowsHeight > availableBodyHeight;\n }\n\n public getCellTemplate(column: ApexTableColumn): TemplateRef<any> {\n switch (column.type) {\n case ApexTableColumnType.Number:\n return this.numberCellTpl;\n case ApexTableColumnType.Currency:\n return this.currencyCellTpl;\n case ApexTableColumnType.NumberMath:\n return this.numberMathCellTpl;\n case ApexTableColumnType.Date:\n return this.dateCellTpl;\n case ApexTableColumnType.Chip:\n return this.chipCellTpl;\n case ApexTableColumnType.Checkbox:\n return this.checkboxCellTpl;\n case ApexTableColumnType.Actions:\n return this.actionCellTpl;\n default:\n return this.textCellTpl;\n }\n }\n\n private refreshLayout(): void {\n this.cdkViewport?.checkViewportSize();\n this.changeDetectorRef.detectChanges();\n }\n\n public goToPage(page: number): void {\n this.currentPage = page;\n this.calculatePages();\n }\n\n public goToPreviousPage(): void {\n this.currentPage--;\n this.calculatePages();\n }\n\n public goToNextPage(): void {\n this.currentPage++;\n this.calculatePages();\n }\n\n public goToFirstPage(): void {\n this.currentPage = 0;\n this.calculatePages();\n }\n\n public goToLastPage(): void {\n this.currentPage = this.totalPages - 1;\n this.calculatePages();\n }\n\n public cellEdit(event: KeyboardEvent, column: string, currentPageRowIndex: number): void {\n const dataIndex = currentPageRowIndex + (this.currentPage * this.pageSize);\n\n if (column.indexOf('.') === -1) {\n this.filteredData[dataIndex][column] = (event.target as HTMLDivElement).innerText;\n } else { // Nested properties\n let data = this.filteredData[dataIndex];\n const fullPath = column.split('.');\n\n for (let i = 0; i < fullPath.length; i++) {\n if (i < fullPath.length - 1) {\n data = data[fullPath[i]];\n } else {\n data[fullPath[i]] = (event.target as HTMLDivElement).innerText;\n }\n }\n }\n }\n\n public formatDate(dateAsString: string | null | undefined, formatDateOptions: ApexDateFormatOptions = { format: 'shortDate', locale: 'en-US', timezone: undefined }): string {\n if (dateAsString === null || dateAsString === undefined || dateAsString === '') {\n return '';\n }\n\n return formatDate(dateAsString, formatDateOptions.format, formatDateOptions.locale, formatDateOptions.timezone);\n }\n\n public getClass(row: any, column: ApexTableColumn): { [key: string]: boolean } | string {\n if (!column.class) {\n return '';\n }\n\n if (typeof column.class === 'string') {\n return column.class;\n }\n\n return {\n [column.class[this.getDescendantProp(row, column)]]: true\n };\n }\n\n public getDescendantProp(row: any, column: ApexTableColumn): any {\n if (!column.value || column.value === null) {\n return column.label;\n }\n\n // Case only on preprocessing - returns any numbers that have been passed in the column.value string\n if (isFinite(Number(column.value))) {\n return parseFloat(column.value);\n }\n\n if (column.type === this.TableColumnType.NumberMath) {\n return row[column.value];\n }\n\n return column.value.split('.')\n .reduce((prev: any, curr: string) => {\n if (prev && curr in prev) {\n return prev[curr];\n } else {\n return undefined;\n }\n }, row);\n }\n\n public getChipLabel(row: any, column: ApexTableColumn): string {\n if (!column.chipLabel) {\n return column.label ? column.label : this.getDescendantProp(row, column);\n }\n\n return column.chipLabel[this.getDescendantProp(row, column)];\n }\n\n public getCheckboxState(row: any, column: ApexTableColumn): boolean {\n let state = this.getDescendantProp(row, column);\n\n if (typeof state !== 'boolean') {\n return false;\n }\n\n return state;\n }\n\n public handleActionShow(action: Action, row: any, column?: ApexTableColumn): boolean {\n if (!action.showOn || action.showOn.length === 0) {\n return true;\n }\n\n return action.showOn.every((condition) => {\n const rowValue = this.getDescendantProp(row, { value: condition.property });\n\n const ifValueExists = !!rowValue;\n \n if (condition.exists != null && condition.exists === ifValueExists) {\n return ifValueExists;\n }\n\n return condition.values.includes(rowValue);\n });\n }\n\n public sortColumn(column: any, changeSortDirection = true): void {\n if (!this.sortable) {\n return;\n }\n\n if (!column.value) {\n return;\n }\n\n if (changeSortDirection) {\n\n if (this.sortIndex == this.columns.indexOf(column)) {\n switch (this.sortDirection) {\n case 'asc':\n this.sortDirection = 'desc';\n break;\n case 'desc':\n this.sortDirection = 'asc';\n break;\n default:\n this.sortDirection = 'asc';\n break;\n }\n } else {\n this.sortDirection = 'asc';\n this.sortIndex = this.columns.indexOf(column);\n }\n\n }\n\n if (this.serverSide) {\n this.currentPage = 0;\n\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n } else {\n this.goToFirstPage();\n\n this.sortData(this.filteredData, column);\n }\n\n if (this.currentActiveRow) {\n this.currentActiveRow.isDropdown = false;\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public async toggleActionDropdown(row: any, event: any): Promise<void> {\n // Prevent the event to be processed by the Hostlistener\n event.stopPropagation();\n\n let actionPos!: DOMRect;\n\n if (this.currentActiveRow) {\n this.currentActiveRow.isDropdown = false;\n }\n\n row.isDropdown = !row.isDropdown;\n\n this.currentActiveRow = row;\n\n this.changeDetectorRef.detectChanges();\n\n for (let i of this.moreActionsList) {\n if (i.nativeElement.classList.contains('opened')) {\n actionPos = i.nativeElement.getBoundingClientRect();\n }\n }\n\n if (this.DropdownElement) {\n if (this.osService.mobileOS === MobileOS.iOS) {\n actionPos.y += window.visualViewport!.offsetTop;\n actionPos.x += window.visualViewport!.offsetLeft;\n }\n\n const dropdownWidth = this.DropdownElement.nativeElement.offsetWidth;\n\n const left = actionPos.x + dropdownWidth / 2 < window.innerWidth - 10 ? actionPos.x : window.innerWidth - 10 - dropdownWidth;\n\n this.DropdownElement.nativeElement.style.transform = left === actionPos.x ? 'translateX(-50%)' : '';\n this.DropdownElement.nativeElement.style.left = left + 'px';\n this.DropdownElement.nativeElement.style.top = `${ actionPos.y + actionPos.height }px`;\n }\n }\n\n public onViewportScroll(): void {\n // Reposition dropdown while body scrolls inside viewport\n this.onScroll();\n }\n\n private preprocessData(): void {\n if (!this.data || this.data.length === 0) {\n return;\n }\n\n this.columns.forEach(column => {\n if (!column.value || column.type !== this.TableColumnType.NumberMath) {\n return;\n }\n\n this.data.forEach(row => {\n const result = this.calculateNumberMathCell(row, column);\n row[column.value as any] = result;\n });\n });\n }\n\n private calculateNumberMathCell(row: any, column: any): any {\n const expression = column.value.replace(\n /([a-zA-Z_][a-zA-Z0-9_.]*|\\d*\\.?\\d+)/g,\n (match: any) => {\n let value = this.getDescendantProp(row, { value: match });\n\n return (typeof value === 'number') ? value : parseFloat(value) || 0;\n }\n );\n\n let fn = new Function(`return ${expression};`);\n let result = fn();\n\n if (Number.isFinite(result)) {\n return result;\n }\n\n return this.getDescendantProp(row, column);\n }\n\n private filterData(): any[] {\n if (!this.data || this.data.length === 0) {\n return [];\n }\n\n let arrayToReturn: any[] = [ ];\n\n for (let row of this.data) {\n for (let column of this.columns) {\n if (!column.value) { continue; }\n\n let access = row[column.value];\n\n if (column.value.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n access = this.getAccessIfColumnValueIsObject(row, column);\n }\n\n if (access === undefined) {\n break;\n }\n\n const rowPropAsString = JSON.stringify(access).toLowerCase();\n\n if (rowPropAsString.includes(this.filter.toLowerCase())) {\n arrayToReturn.push(row);\n\n break;\n }\n }\n }\n\n return arrayToReturn;\n }\n\n private sortData(data: any[], column: ApexTableColumn): any[] {\n if (!data || data.length === 0 || !Array.isArray(data)) {\n return [];\n }\n\n if (column) {\n this.sortByProperty(data, column);\n }\n\n return data;\n }\n\n private sortByProperty(arr: any, column: any): number | void {\n if (this.sortDirection === 'desc') {\n this.sortReverse(arr, column);\n return;\n }\n\n return arr.sort((a: any, b: any) => {\n let valueA = a[column.value];\n let valueB = b[column.value];\n\n let access = column.value;\n\n if (access.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n valueA = this.getAccessIfColumnValueIsObject(a, column);\n valueB = this.getAccessIfColumnValueIsObject(b, column);\n } else {\n if (typeof valueA === 'string' && valueB !== undefined) {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n }\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return valueA - valueB;\n }\n \n if (!valueA && valueB) return -1;\n if (valueA && !valueB) return 1;\n\n if (!valueA && !valueB) return 0;\n\n if (valueA < valueB) return -1;\n if (valueA > valueB) return 1;\n\n return 0;\n });\n }\n\n private sortReverse(arr: any, column: any) {\n return arr.sort((a: any, b: any) => {\n let valueA = a[column.value];\n let valueB = b[column.value];\n\n let access = column.value;\n\n if (access.indexOf('.') !== -1 && column.type !== this.TableColumnType.NumberMath) {\n valueA = this.getAccessIfColumnValueIsObject(a, column);\n valueB = this.getAccessIfColumnValueIsObject(b, column);\n } else {\n if (typeof valueA === 'string' && valueB !== undefined) {\n valueA = valueA.toLowerCase();\n valueB = valueB.toLowerCase();\n }\n }\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return valueB - valueA;\n }\n\n if (!valueA && valueB) return 1;\n if (valueA && !valueB) return -1;\n\n if (!valueA && !valueB) return 0;\n\n if (valueA < valueB) return 1;\n if (valueA > valueB) return -1;\n\n return 0;\n });\n }\n\n private getAccessIfColumnValueIsObject(row: any, column: ApexTableColumn): any {\n if (!column.value || column.value === null) {\n return undefined;\n }\n\n const keys = column.value.split('.');\n\n let access = row[keys[0]];\n\n for (let i = 1; i < keys.length; i++) {\n if (access && keys[i] in access) {\n access = access[keys[i]];\n } else {\n return undefined;\n }\n }\n\n return access;\n }\n\n private buildPaginationSelectDependecies(): void {\n const formControls: PageFormControls = {\n pageSize: this.formBuilder.control({ label: this.pageSize.toString(), value: this.pageSize }, { nonNullable: true, validators: [ Validators.required ] })\n };\n\n this.formGroup = this.formBuilder.group(formControls);\n\n const selectData = this.pageSizeOptions.map(item => ({\n label: item.toString(),\n value: item\n }));\n\n this.pageSizeSelectOptions = {\n label: '',\n data: selectData,\n formGroup: this.formGroup,\n formControlName: 'pageSize'\n };\n\n this.subscribeToFormValueChanges();\n }\n\n private subscribeToFormValueChanges(): void {\n this.formGroup.controls.pageSize.valueChanges.subscribe((value) => {\n if (this.pageSize === value.value) {\n return;\n }\n\n const currentPageFirstRowIndex = this.currentPage * this.pageSize;\n this.pageSize = value.value;\n\n this.currentPage = Math.floor(currentPageFirstRowIndex / this.pageSize);\n\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n if (this.serverSide) {\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n this.calculateTotalPages();\n this.updateVisibleRange(start, end);\n this.cdkViewport?.checkViewportSize();\n });\n }\n\n private calculatePages(): void {\n const start = this.currentPage * this.pageSize;\n const end = Math.min(this._dataLength, start + this.pageSize);\n\n if (!this.serverSide) {\n this.updateVisibleRange(start, end);\n } else {\n this.tableChange.emit({ from: start, to: end, filter: this.filter, sort: { columnValue: this.columns[this.sortIndex].value, sortDirection: this.sortDirection } });\n }\n\n this.changeDetectorRef.detectChanges();\n }\n}\n","<div class=\"container\" [ngClass]=\"{ 'is-loading': isLoading }\">\n @if (virtualScroll) {\n <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\" class=\"cdk-table-viewport\" [ngStyle]=\"{ height: getVirtualViewportHeight() + 'px' }\" [style.overflow-y]=\"shouldShowViewportScroll() ? 'auto' : 'hidden'\" (scrolled)=\"onViewportScroll()\">\n <table>\n <thead #theadRef>\n <tr>\n @for (column of columns; track $index) {\n <th [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n <div class=\"cell\">\n <span>{{ column.label }}</span>\n\n @if (column.type !== TableColumnType.Actions && sortable) {\n <div class=\"arranger\" (click)=\"sortColumn(column)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M3.11445 5.50005H8.88795C9.31895 5.50005 9.54795 4.99005 9.26145 4.66755L6.37495 1.42005C6.32813 1.3672 6.27063 1.32489 6.20624 1.29591C6.14186 1.26694 6.07205 1.25195 6.00145 1.25195C5.93084 1.25195 5.86104 1.26694 5.79666 1.29591C5.73227 1.32489 5.67477 1.3672 5.62795 1.42005L2.74045 4.66755C2.45395 4.99005 2.68295 5.50005 3.11445 5.50005ZM5.62745 10.5795C5.67427 10.6324 5.73177 10.6747 5.79616 10.7037C5.86054 10.7327 5.93034 10.7476 6.00095 10.7476C6.07155 10.7476 6.14136 10.7327 6.20574 10.7037C6.27013 10.6747 6.32763 10.6324 6.37445 10.5795L9.26095 7.33205C9.54795 7.01005 9.31895 6.50005 8.88745 6.50005H3.11445C2.68345 6.50005 2.45445 7.01005 2.74095 7.33255L5.62745 10.5795Z\" fill=\"#C6C6C6\"/>\n </svg>\n </div>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n <tr *cdkVirtualFor=\"let row of getPageData(); trackBy: trackByIndex\">\n @for (column of columns; track $index) {\n <td tabindex=\"-1\">\n <ng-container [ngTemplateOutlet]=\"getCellTemplate(column)\"\n [ngTemplateOutletContext]=\"{ row: row, column: column, $index: $index }\">\n </ng-container>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <table>\n <thead>\n <tr>\n @for (column of columns; track $index) {\n <th [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n <div class=\"cell\">\n <span>{{ column.label }}</span>\n\n @if (column.type !== TableColumnType.Actions && sortable) {\n <div class=\"arranger\" (click)=\"sortColumn(column)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M3.11445 5.50005H8.88795C9.31895 5.50005 9.54795 4.99005 9.26145 4.66755L6.37495 1.42005C6.32813 1.3672 6.27063 1.32489 6.20624 1.29591C6.14186 1.26694 6.07205 1.25195 6.00145 1.25195C5.93084 1.25195 5.86104 1.26694 5.79666 1.29591C5.73227 1.32489 5.67477 1.3672 5.62795 1.42005L2.74045 4.66755C2.45395 4.99005 2.68295 5.50005 3.11445 5.50005ZM5.62745 10.5795C5.67427 10.6324 5.73177 10.6747 5.79616 10.7037C5.86054 10.7327 5.93034 10.7476 6.00095 10.7476C6.07155 10.7476 6.14136 10.7327 6.20574 10.7037C6.27013 10.6747 6.32763 10.6324 6.37445 10.5795L9.26095 7.33205C9.54795 7.01005 9.31895 6.50005 8.88745 6.50005H3.11445C2.68345 6.50005 2.45445 7.01005 2.74095 7.33255L5.62745 10.5795Z\" fill=\"#C6C6C6\"/>\n </svg>\n </div>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (row of getPageData(); track $index) { \n <tr>\n @for (column of columns; track $index) {\n <td tabindex=\"-1\">\n <ng-container [ngTemplateOutlet]=\"getCellTemplate(column)\"\n [ngTemplateOutletContext]=\"{ row: row, column: column, $index: $index }\">\n </ng-container>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n\n @if (filter && filteredData && filteredData.length === 0) {\n <div class=\"row no-data\">\n <span>No data matching the filter:</span>\n\n <span>\"{{ filter }}\"</span>\n </div>\n }\n\n @if (!filter && data && data.length === 0) {\n <div class=\"row no-data\">No data available.</div>\n }\n\n @if (pageable && getPageData().length !== 0) {\n <div class=\"paging\">\n <div class=\"visible-range\">{{ visibleRange }}</div>\n\n <ng-container *ngTemplateOutlet=\"pagePicker; context: { totalPages: totalPages }\"></ng-container>\n\n <div class=\"page-size-option-picker\">\n <span>Items per page:</span>\n\n <apex-select class=\"table\" [options]=\"pageSizeSelectOptions\"></apex-select>\n </div>\n </div>\n }\n</div>\n\n<ng-template #textCell let-row=\"row\" let-column=\"column\" let-index=\"$index\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) }}{{ column.suffix ? column.suffix : '' }}\n </div>\n</ng-template>\n\n<ng-template #dateCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\">\n {{ formatDate(getDescendantProp(row, column), column.dateFormat) }}\n </div>\n</ng-template>\n\n<ng-template #currencyCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\"\n [ngStyle]=\"{ width: column.width ? column.width : '' }\">\n\n @if (getDescendantProp(row, column) !== undefined) {\n {{ column.prefix ? column.prefix : '' }}{{ (getDescendantProp(row, column) / 100) | number }}\n }\n </div>\n</ng-template>\n\n<ng-template #numberCell let-row=\"row\" let-column=\"column\" let-index=\"i\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) | number}}{{ column.suffix ? column.suffix : '' }}\n </div>\n</ng-template>\n\n<ng-template #numberMathCell let-row=\"row\" let-column=\"column\" let-index=\"i\">\n <div class=\"cell\"\n [ngClass]=\"getClass(row, column)\"\n [attr.contenteditable]=\"column.editable\"\n (keyup)=\"cellEdit($event, column.value, index)\">\n\n {{ column.prefix ? column.prefix : '' }}{{ getDescendantProp(row, column) | number}}{{ column.suffix ? column.suffix : '' }}\n </div>\n</ng-template>\n\n<ng-template #actionCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell actions\">\n\n @for (action of column.singleActions; track $index) {\n @if (handleActionShow(action, row, column)) {\n <div ApexTooltip (click)=\"action.execute && action.execute(row)\" [apexTooltip]=\"action.label\" [tooltipPosition]=\"tooltipPosition.Above\" class=\"action-icon-wrapper\" [ngClass]=\"{ 'disabled': action.disabled }\">\n <apex-img [src]=\" 'assets/img/' + action.icon\" [ngClass]=\"action.class\" [ariaLabel]=\"'Action icon for ' + action.label\"></apex-img>\n </div>\n }\n }\n\n @if (column.multipleActions) {\n <div class=\"action-icon-wrapper\" #moreActionsList [ngClass]=\"{ 'opened': row.isDropdown }\" (click)=\"toggleActionDropdown(row, $event)\">\n <svg class=\"multiple-action-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\n <path d=\"M10.3047 8C10.3047 8.34612 10.2021 8.68446 10.0098 8.97225C9.81747 9.26004 9.54416 9.48434 9.22438 9.61679C8.90461 9.74924 8.55275 9.7839 8.21328 9.71638C7.87381 9.64885 7.56199 9.48218 7.31725 9.23744C7.07251 8.9927 6.90584 8.68088 6.83831 8.34141C6.77079 8.00194 6.80545 7.65008 6.9379 7.33031C7.07035 7.01053 7.29465 6.73722 7.58244 6.54493C7.87023 6.35264 8.20857 6.25 8.55469 6.25C9.01868 6.25046 9.46353 6.43498 9.79162 6.76307C10.1197 7.09116 10.3042 7.53601 10.3047 8ZM8.55469 4.75C8.90081 4.75 9.23915 4.64737 9.52694 4.45507C9.81472 4.26278 10.039 3.98947 10.1715 3.6697C10.3039 3.34993 10.3386 2.99806 10.2711 2.65859C10.2035 2.31913 10.0369 2.00731 9.79213 1.76256C9.54738 1.51782 9.23556 1.35115 8.8961 1.28363C8.55663 1.2161 8.20476 1.25076 7.88499 1.38321C7.56522 1.51566 7.29191 1.73997 7.09962 2.02775C6.90732 2.31554 6.80469 2.65388 6.80469 3C6.80515 3.46399 6.98967 3.90884 7.31776 4.23693C7.64585 4.56502 8.0907 4.74954 8.55469 4.75ZM8.55469 11.25C8.20857 11.25 7.87023 11.3526 7.58244 11.5449C7.29465 11.7372 7.07035 12.0105 6.9379 12.3303C6.80545 12.6501 6.77079 13.0019 6.83831 13.3414C6.90584 13.6809 7.07251 13.9927 7.31725 14.2374C7.56199 14.4822 7.87381 14.6489 8.21328 14.7164C8.55275 14.7839 8.90461 14.7492 9.22438 14.6168C9.54416 14.4843 9.81747 14.26 10.0098 13.9722C10.2021 13.6845 10.3047 13.3461 10.3047 13C10.3042 12.536 10.1197 12.0912 9.79162 11.7631C9.46353 11.435 9.01868 11.2505 8.55469 11.25Z\" fill=\"#5D6068\"/>\n </svg>\n </div>\n }\n\n </div>\n\n @if (row.isDropdown) {\n <ng-container class=\"dropdown-element\" *ngTemplateOutlet=\"multipleActionsDropdown; context: { row, column }\"></ng-container>\n }\n</ng-template>\n\n<ng-template #chipCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell chip\">\n @if (getChipLabel(row, column)) {\n <apex-chip [ngClass]=\"getClass(row, column)\"> {{ getChipLabel(row, column) }}</apex-chip>\n }\n </div>\n</ng-template>\n\n<ng-template #checkboxCell let-row=\"row\" let-column=\"column\">\n <div class=\"cell checkbox\">\n <apex-checkbox [checked]=\"getCheckboxState(row, column)\" [disabled]=\"true\"></apex-checkbox>\n </div>\n</ng-template>\n\n<ng-template #multipleActionsDropdown let-row=\"row\" let-column=\"column\">\n <div #multipleActionsDropdownElement #dropdownElement class=\"more-actions-dropdown\">\n @for (action of column.multipleActions; track $index) {\n\n @if (handleActionShow(action, row, column)) {\n <div class=\"dropdown-row\" (click)=\"action.execute && action.execute(row)\">\n <apex-img [src]=\"'assets/img/' + action.icon\" [ngClass]=\"action.class\" [ariaLabel]=\"'Action icon for ' + action.label\"></apex-img>\n\n <span>{{ action.label }}</span>\n </div>\n }\n\n }\n </div>\n</ng-template>\n\n<ng-template #pagePicker let-totalPages=\"totalPages\">\n <div class=\"page-picker\">\n <!-- If page one should be visible -->\n @if (currentPage + 1 >= 3) {\n <span (click)=\"goToPage(0)\">1</span>\n <span class=\"style-excluded\">...</span>\n }\n\n <!-- Middle part of the page-picker -->\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage - 1 } \"></ng-container>\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage, class: 'highlighted' } \"></ng-container>\n <ng-container *ngTemplateOutlet=\"page; context: { page: currentPage + 1 } \"></ng-container>\n\n <!-- If last page should be visible -->\n @if (currentPage + 1 <= totalPages - 2) {\n <span class=\"style-excluded\">...</span>\n <span (click)=\"goToPage(totalPages - 1)\">{{ totalPages }}</span>\n }\n\n </div>\n</ng-template>\n\n<ng-template #page let-page=\"page\" let-class=\"class\">\n @if (page >= 0 && page < totalPages) {\n <span [ngClass]=\"class\" (click)=\"goToPage(page)\">{{ page + 1 }}</span>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,9 +3,9 @@ import { EventEmitter, Output, Input, Component } from '@angular/core';
3
3
  import { NgClass } from '@angular/common';
4
4
  import * as i1 from '@angular/forms';
5
5
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
6
- import { IpiImageComponent } from '@apexara/ng-components/image';
6
+ import { ApexImageComponent } from '@apexara/ng-components/image';
7
7
 
8
- class IpiTextAreaComponent {
8
+ class ApexTextAreaComponent {
9
9
  constructor(changeDetectorRef) {
10
10
  this.changeDetectorRef = changeDetectorRef;
11
11
  this.textAreaChange = new EventEmitter();
@@ -57,17 +57,17 @@ class IpiTextAreaComponent {
57
57
  }
58
58
  this.controlError = '';
59
59
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: IpiTextAreaComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: IpiTextAreaComponent, isStandalone: true, selector: "ipi-textarea", inputs: { options: "options" }, outputs: { textAreaChange: "textAreaChange" }, ngImport: i0, template: "@if (options) {\n @if (options.label !== '') {\n <div class=\"header\">\n <label> {{ options.label }}</label>\n </div>\n }\n\n @if (!options.formGroup) {\n <div class=\"textArea\">\n <div class=\"container\">\n @if (options.icon) {\n <ipi-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></ipi-img>\n }\n\n <textarea [placeholder]=\"options.placeholder ? options.placeholder : ''\" autocomplete=\"off\" (input)=\"onInput($event)\"></textarea>\n </div>\n </div>\n }\n\n @if (options.formGroup && options.formControlName) {\n <div class=\"textArea\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': controlInvalid, 'disabled': control.disabled }\">\n <div class=\"container\">\n @if (options.icon) {\n <ipi-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></ipi-img>\n }\n\n <textarea autocomplete=\"off\" [placeholder]=\"options.placeholder ? options.placeholder : ''\" [formControlName]=\"options.formControlName\"></textarea>\n </div>\n </div>\n\n <div class=\"footer\">\n {{ controlError }}\n </div>\n }\n}\n", styles: [":host{display:block;touch-action:manipulation}:host(.fluid) .textArea{width:100%}.header{width:100%;min-height:20px;display:flex;align-items:center;justify-content:space-between;column-gap:4px;color:var(--ipi-textarea-header-color, #0B1222);text-wrap:nowrap;margin-bottom:2px}label{font-size:14px;font-weight:600;text-wrap:wrap;margin-right:4px}.label-wrapper{display:flex;align-items:center}.textArea{width:264px;height:100px;display:inline-block;box-sizing:border-box;background-color:var(--ipi-textarea-background-color, transparent);border:var(--ipi-textarea-border, 1px solid #E9E9E9);border-radius:var(--ipi-textarea-border-radius, 4px);transition:border 1s;padding:12px}.textArea.disabled{opacity:.8;cursor:not-allowed;border:var(--ipi-textarea-border-disabled, 1px dashed #F2F2F2)}.textArea .container{height:100%;display:flex;position:relative;box-sizing:border-box}.container ipi-img{width:16px;height:16px;display:flex;justify-content:center;align-items:center;transition:all .2s;z-index:2;margin-right:12px}.container ipi-img svg path{fill:var(--ipi-textarea-icon-fill, #C6C6C6)}.textArea textarea{width:100%;height:100%;position:relative;resize:none;border:none;outline:none;background-color:var(--ipi-textarea-background-color, transparent);color:var(--ipi-textarea-text-color, #0B1222);font-size:14px;padding:0}textarea::placeholder{color:var(--ipi-textarea-text-placeholder-color, #C6C6C6)}.textArea.disabled{cursor:not-allowed}.textArea.invalid{border:var(--ipi-textarea-border-invalid, 1px solid #F96138)}.textArea.invalid+.footer,.textArea.disabled+.footer{color:var(--ipi-textarea-footer-color, #F96138)}textarea::-webkit-scrollbar{width:8px;padding:8px}textarea::-webkit-scrollbar-thumb{background-color:var(--ipi-textarea-scrollbar-color, #E2E2E2bb);border-radius:25px}textarea::-webkit-scrollbar-thumb:hover{background-color:var(--ipi-textarea-scrollbar-hover-color, #e2e2e2)}textarea::-webkit-scrollbar-button{display:none}.footer{height:14px;font-size:12px;margin-top:2px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: IpiImageComponent, selector: "ipi-img", inputs: ["src", "ariaLabel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexTextAreaComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: ApexTextAreaComponent, isStandalone: true, selector: "apex-textarea", inputs: { options: "options" }, outputs: { textAreaChange: "textAreaChange" }, ngImport: i0, template: "@if (options) {\n @if (options.label !== '') {\n <div class=\"header\">\n <label> {{ options.label }}</label>\n </div>\n }\n\n @if (!options.formGroup) {\n <div class=\"textArea\">\n <div class=\"container\">\n @if (options.icon) {\n <apex-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></apex-img>\n }\n\n <textarea [placeholder]=\"options.placeholder ? options.placeholder : ''\" autocomplete=\"off\" (input)=\"onInput($event)\"></textarea>\n </div>\n </div>\n }\n\n @if (options.formGroup && options.formControlName) {\n <div class=\"textArea\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': controlInvalid, 'disabled': control.disabled }\">\n <div class=\"container\">\n @if (options.icon) {\n <apex-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></apex-img>\n }\n\n <textarea autocomplete=\"off\" [placeholder]=\"options.placeholder ? options.placeholder : ''\" [formControlName]=\"options.formControlName\"></textarea>\n </div>\n </div>\n\n <div class=\"footer\">\n {{ controlError }}\n </div>\n }\n}\n", styles: [":host{display:block;touch-action:manipulation}:host(.fluid) .textArea{width:100%}.header{width:100%;min-height:20px;display:flex;align-items:center;justify-content:space-between;column-gap:4px;color:var(--apex-textarea-header-color, #0B1222);text-wrap:nowrap;margin-bottom:2px}label{font-size:14px;font-weight:600;text-wrap:wrap;margin-right:4px}.label-wrapper{display:flex;align-items:center}.textArea{width:264px;height:100px;display:inline-block;box-sizing:border-box;background-color:var(--apex-textarea-background-color, transparent);border:var(--apex-textarea-border, 1px solid #E9E9E9);border-radius:var(--apex-textarea-border-radius, 4px);transition:border 1s;padding:12px}.textArea.disabled{opacity:.8;cursor:not-allowed;border:var(--apex-textarea-border-disabled, 1px dashed #F2F2F2)}.textArea .container{height:100%;display:flex;position:relative;box-sizing:border-box}.container apex-img{width:16px;height:16px;display:flex;justify-content:center;align-items:center;transition:all .2s;z-index:2;margin-right:12px}.container apex-img svg path{fill:var(--apex-textarea-icon-fill, #C6C6C6)}.textArea textarea{width:100%;height:100%;position:relative;resize:none;border:none;outline:none;background-color:var(--apex-textarea-background-color, transparent);color:var(--apex-textarea-text-color, #0B1222);font-size:14px;padding:0}textarea::placeholder{color:var(--apex-textarea-text-placeholder-color, #C6C6C6)}.textArea.disabled{cursor:not-allowed}.textArea.invalid{border:var(--apex-textarea-border-invalid, 1px solid #F96138)}.textArea.invalid+.footer,.textArea.disabled+.footer{color:var(--apex-textarea-footer-color, #F96138)}textarea::-webkit-scrollbar{width:8px;padding:8px}textarea::-webkit-scrollbar-thumb{background-color:var(--apex-textarea-scrollbar-color, #E2E2E2bb);border-radius:25px}textarea::-webkit-scrollbar-thumb:hover{background-color:var(--apex-textarea-scrollbar-hover-color, #e2e2e2)}textarea::-webkit-scrollbar-button{display:none}.footer{height:14px;font-size:12px;margin-top:2px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: ApexImageComponent, selector: "apex-img", inputs: ["src", "ariaLabel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: IpiTextAreaComponent, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexTextAreaComponent, decorators: [{
64
64
  type: Component,
65
- args: [{ selector: 'ipi-textarea', imports: [
65
+ args: [{ selector: 'apex-textarea', imports: [
66
66
  NgClass,
67
67
  FormsModule,
68
- IpiImageComponent,
68
+ ApexImageComponent,
69
69
  ReactiveFormsModule,
70
- ], template: "@if (options) {\n @if (options.label !== '') {\n <div class=\"header\">\n <label> {{ options.label }}</label>\n </div>\n }\n\n @if (!options.formGroup) {\n <div class=\"textArea\">\n <div class=\"container\">\n @if (options.icon) {\n <ipi-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></ipi-img>\n }\n\n <textarea [placeholder]=\"options.placeholder ? options.placeholder : ''\" autocomplete=\"off\" (input)=\"onInput($event)\"></textarea>\n </div>\n </div>\n }\n\n @if (options.formGroup && options.formControlName) {\n <div class=\"textArea\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': controlInvalid, 'disabled': control.disabled }\">\n <div class=\"container\">\n @if (options.icon) {\n <ipi-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></ipi-img>\n }\n\n <textarea autocomplete=\"off\" [placeholder]=\"options.placeholder ? options.placeholder : ''\" [formControlName]=\"options.formControlName\"></textarea>\n </div>\n </div>\n\n <div class=\"footer\">\n {{ controlError }}\n </div>\n }\n}\n", styles: [":host{display:block;touch-action:manipulation}:host(.fluid) .textArea{width:100%}.header{width:100%;min-height:20px;display:flex;align-items:center;justify-content:space-between;column-gap:4px;color:var(--ipi-textarea-header-color, #0B1222);text-wrap:nowrap;margin-bottom:2px}label{font-size:14px;font-weight:600;text-wrap:wrap;margin-right:4px}.label-wrapper{display:flex;align-items:center}.textArea{width:264px;height:100px;display:inline-block;box-sizing:border-box;background-color:var(--ipi-textarea-background-color, transparent);border:var(--ipi-textarea-border, 1px solid #E9E9E9);border-radius:var(--ipi-textarea-border-radius, 4px);transition:border 1s;padding:12px}.textArea.disabled{opacity:.8;cursor:not-allowed;border:var(--ipi-textarea-border-disabled, 1px dashed #F2F2F2)}.textArea .container{height:100%;display:flex;position:relative;box-sizing:border-box}.container ipi-img{width:16px;height:16px;display:flex;justify-content:center;align-items:center;transition:all .2s;z-index:2;margin-right:12px}.container ipi-img svg path{fill:var(--ipi-textarea-icon-fill, #C6C6C6)}.textArea textarea{width:100%;height:100%;position:relative;resize:none;border:none;outline:none;background-color:var(--ipi-textarea-background-color, transparent);color:var(--ipi-textarea-text-color, #0B1222);font-size:14px;padding:0}textarea::placeholder{color:var(--ipi-textarea-text-placeholder-color, #C6C6C6)}.textArea.disabled{cursor:not-allowed}.textArea.invalid{border:var(--ipi-textarea-border-invalid, 1px solid #F96138)}.textArea.invalid+.footer,.textArea.disabled+.footer{color:var(--ipi-textarea-footer-color, #F96138)}textarea::-webkit-scrollbar{width:8px;padding:8px}textarea::-webkit-scrollbar-thumb{background-color:var(--ipi-textarea-scrollbar-color, #E2E2E2bb);border-radius:25px}textarea::-webkit-scrollbar-thumb:hover{background-color:var(--ipi-textarea-scrollbar-hover-color, #e2e2e2)}textarea::-webkit-scrollbar-button{display:none}.footer{height:14px;font-size:12px;margin-top:2px}\n"] }]
70
+ ], template: "@if (options) {\n @if (options.label !== '') {\n <div class=\"header\">\n <label> {{ options.label }}</label>\n </div>\n }\n\n @if (!options.formGroup) {\n <div class=\"textArea\">\n <div class=\"container\">\n @if (options.icon) {\n <apex-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></apex-img>\n }\n\n <textarea [placeholder]=\"options.placeholder ? options.placeholder : ''\" autocomplete=\"off\" (input)=\"onInput($event)\"></textarea>\n </div>\n </div>\n }\n\n @if (options.formGroup && options.formControlName) {\n <div class=\"textArea\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': controlInvalid, 'disabled': control.disabled }\">\n <div class=\"container\">\n @if (options.icon) {\n <apex-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></apex-img>\n }\n\n <textarea autocomplete=\"off\" [placeholder]=\"options.placeholder ? options.placeholder : ''\" [formControlName]=\"options.formControlName\"></textarea>\n </div>\n </div>\n\n <div class=\"footer\">\n {{ controlError }}\n </div>\n }\n}\n", styles: [":host{display:block;touch-action:manipulation}:host(.fluid) .textArea{width:100%}.header{width:100%;min-height:20px;display:flex;align-items:center;justify-content:space-between;column-gap:4px;color:var(--apex-textarea-header-color, #0B1222);text-wrap:nowrap;margin-bottom:2px}label{font-size:14px;font-weight:600;text-wrap:wrap;margin-right:4px}.label-wrapper{display:flex;align-items:center}.textArea{width:264px;height:100px;display:inline-block;box-sizing:border-box;background-color:var(--apex-textarea-background-color, transparent);border:var(--apex-textarea-border, 1px solid #E9E9E9);border-radius:var(--apex-textarea-border-radius, 4px);transition:border 1s;padding:12px}.textArea.disabled{opacity:.8;cursor:not-allowed;border:var(--apex-textarea-border-disabled, 1px dashed #F2F2F2)}.textArea .container{height:100%;display:flex;position:relative;box-sizing:border-box}.container apex-img{width:16px;height:16px;display:flex;justify-content:center;align-items:center;transition:all .2s;z-index:2;margin-right:12px}.container apex-img svg path{fill:var(--apex-textarea-icon-fill, #C6C6C6)}.textArea textarea{width:100%;height:100%;position:relative;resize:none;border:none;outline:none;background-color:var(--apex-textarea-background-color, transparent);color:var(--apex-textarea-text-color, #0B1222);font-size:14px;padding:0}textarea::placeholder{color:var(--apex-textarea-text-placeholder-color, #C6C6C6)}.textArea.disabled{cursor:not-allowed}.textArea.invalid{border:var(--apex-textarea-border-invalid, 1px solid #F96138)}.textArea.invalid+.footer,.textArea.disabled+.footer{color:var(--apex-textarea-footer-color, #F96138)}textarea::-webkit-scrollbar{width:8px;padding:8px}textarea::-webkit-scrollbar-thumb{background-color:var(--apex-textarea-scrollbar-color, #E2E2E2bb);border-radius:25px}textarea::-webkit-scrollbar-thumb:hover{background-color:var(--apex-textarea-scrollbar-hover-color, #e2e2e2)}textarea::-webkit-scrollbar-button{display:none}.footer{height:14px;font-size:12px;margin-top:2px}\n"] }]
71
71
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { options: [{
72
72
  type: Input
73
73
  }], textAreaChange: [{
@@ -78,5 +78,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
78
78
  * Generated bundle index. Do not edit.
79
79
  */
80
80
 
81
- export { IpiTextAreaComponent };
81
+ export { ApexTextAreaComponent };
82
82
  //# sourceMappingURL=apexara-ng-components-textarea.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"apexara-ng-components-textarea.mjs","sources":["../../../../projects/apexara/ng-components/textarea/src/textarea.component.ts","../../../../projects/apexara/ng-components/textarea/src/textarea.component.html","../../../../projects/apexara/ng-components/textarea/apexara-ng-components-textarea.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { AbstractControl, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';\n\nimport { Subscription } from 'rxjs';\n\nimport { IpiImageComponent } from '@apexara/ng-components/image';\n\nimport { IpiControlErrors } from '@apexara/ng-components/input';\n\nexport interface IpiTextAreaOptions {\n label: string;\n icon?: string;\n placeholder?: string;\n formGroup?: FormGroup;\n formControlName?: string;\n errors?: IpiControlErrors;\n}\n\n@Component({\n selector: 'ipi-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.css'],\n imports: [\n NgClass,\n FormsModule,\n IpiImageComponent,\n ReactiveFormsModule,\n ],\n})\n\nexport class IpiTextAreaComponent {\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.changeDetectorRef.detach();\n }\n\n @Input() options!: IpiTextAreaOptions;\n\n @Output() textAreaChange = new EventEmitter<string>();\n\n public controlError!: string;\n public controlInvalid = false;\n public control!: AbstractControl;\n\n private controlSubscription!: Subscription;\n\n public ngOnInit(): void {\n this.setControl();\n\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n public onInput(event: Event): void {\n const input = event.target as HTMLTextAreaElement;\n\n const sanitizedValue = input.value.replace(/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|[\\uD83C-\\uDBFF\\uDC00-\\uDFFF])/g, '');\n \n input.value = sanitizedValue;\n \n this.textAreaChange.emit(sanitizedValue);\n\n this.changeDetectorRef.detectChanges();\n }\n\n private setControl(): void{\n if (!this.options.formGroup || !this.options.formControlName) {\n return;\n }\n\n this.control = this.options.formGroup.controls[this.options.formControlName];\n\n this.control.markAsTouched();\n\n this.controlSubscription = this.control.statusChanges.subscribe(() => {\n this.setControlInvalid(this.control);\n\n this.getErrors();\n\n this.changeDetectorRef.detectChanges();\n })\n }\n\n private setControlInvalid(control: AbstractControl): void {\n this.controlInvalid = control.touched && control.invalid;\n }\n\n private getErrors(): void {\n const options = this.options!;\n const formGroup = options.formGroup;\n const formControlName = options.formControlName;\n\n if (formGroup && formControlName && options.errors && this.controlInvalid) {\n\n for (const error in options.errors) {\n if (formGroup.controls[formControlName].hasError(error)) {\n this.controlError = options.errors[error];\n\n return;\n }\n }\n\n }\n\n this.controlError = '';\n }\n\n}\n","@if (options) {\n @if (options.label !== '') {\n <div class=\"header\">\n <label> {{ options.label }}</label>\n </div>\n }\n\n @if (!options.formGroup) {\n <div class=\"textArea\">\n <div class=\"container\">\n @if (options.icon) {\n <ipi-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></ipi-img>\n }\n\n <textarea [placeholder]=\"options.placeholder ? options.placeholder : ''\" autocomplete=\"off\" (input)=\"onInput($event)\"></textarea>\n </div>\n </div>\n }\n\n @if (options.formGroup && options.formControlName) {\n <div class=\"textArea\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': controlInvalid, 'disabled': control.disabled }\">\n <div class=\"container\">\n @if (options.icon) {\n <ipi-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></ipi-img>\n }\n\n <textarea autocomplete=\"off\" [placeholder]=\"options.placeholder ? options.placeholder : ''\" [formControlName]=\"options.formControlName\"></textarea>\n </div>\n </div>\n\n <div class=\"footer\">\n {{ controlError }}\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-textarea.mjs","sources":["../../../../projects/apexara/ng-components/textarea/src/textarea.component.ts","../../../../projects/apexara/ng-components/textarea/src/textarea.component.html","../../../../projects/apexara/ng-components/textarea/apexara-ng-components-textarea.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { AbstractControl, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';\n\nimport { Subscription } from 'rxjs';\n\nimport { ApexImageComponent } from '@apexara/ng-components/image';\n\nimport { ApexControlErrors } from '@apexara/ng-components/input';\n\nexport interface ApexTextAreaOptions {\n label: string;\n icon?: string;\n placeholder?: string;\n formGroup?: FormGroup;\n formControlName?: string;\n errors?: ApexControlErrors;\n}\n\n@Component({\n selector: 'apex-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.css'],\n imports: [\n NgClass,\n FormsModule,\n ApexImageComponent,\n ReactiveFormsModule,\n ],\n})\n\nexport class ApexTextAreaComponent {\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.changeDetectorRef.detach();\n }\n\n @Input() options!: ApexTextAreaOptions;\n\n @Output() textAreaChange = new EventEmitter<string>();\n\n public controlError!: string;\n public controlInvalid = false;\n public control!: AbstractControl;\n\n private controlSubscription!: Subscription;\n\n public ngOnInit(): void {\n this.setControl();\n\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n public onInput(event: Event): void {\n const input = event.target as HTMLTextAreaElement;\n\n const sanitizedValue = input.value.replace(/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|[\\uD83C-\\uDBFF\\uDC00-\\uDFFF])/g, '');\n \n input.value = sanitizedValue;\n \n this.textAreaChange.emit(sanitizedValue);\n\n this.changeDetectorRef.detectChanges();\n }\n\n private setControl(): void{\n if (!this.options.formGroup || !this.options.formControlName) {\n return;\n }\n\n this.control = this.options.formGroup.controls[this.options.formControlName];\n\n this.control.markAsTouched();\n\n this.controlSubscription = this.control.statusChanges.subscribe(() => {\n this.setControlInvalid(this.control);\n\n this.getErrors();\n\n this.changeDetectorRef.detectChanges();\n })\n }\n\n private setControlInvalid(control: AbstractControl): void {\n this.controlInvalid = control.touched && control.invalid;\n }\n\n private getErrors(): void {\n const options = this.options!;\n const formGroup = options.formGroup;\n const formControlName = options.formControlName;\n\n if (formGroup && formControlName && options.errors && this.controlInvalid) {\n\n for (const error in options.errors) {\n if (formGroup.controls[formControlName].hasError(error)) {\n this.controlError = options.errors[error];\n\n return;\n }\n }\n\n }\n\n this.controlError = '';\n }\n\n}\n","@if (options) {\n @if (options.label !== '') {\n <div class=\"header\">\n <label> {{ options.label }}</label>\n </div>\n }\n\n @if (!options.formGroup) {\n <div class=\"textArea\">\n <div class=\"container\">\n @if (options.icon) {\n <apex-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></apex-img>\n }\n\n <textarea [placeholder]=\"options.placeholder ? options.placeholder : ''\" autocomplete=\"off\" (input)=\"onInput($event)\"></textarea>\n </div>\n </div>\n }\n\n @if (options.formGroup && options.formControlName) {\n <div class=\"textArea\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': controlInvalid, 'disabled': control.disabled }\">\n <div class=\"container\">\n @if (options.icon) {\n <apex-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></apex-img>\n }\n\n <textarea autocomplete=\"off\" [placeholder]=\"options.placeholder ? options.placeholder : ''\" [formControlName]=\"options.formControlName\"></textarea>\n </div>\n </div>\n\n <div class=\"footer\">\n {{ controlError }}\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -11,13 +11,13 @@ var TooltipPosition;
11
11
  TooltipPosition[TooltipPosition["Above"] = 2] = "Above";
12
12
  TooltipPosition[TooltipPosition["Below"] = 3] = "Below";
13
13
  })(TooltipPosition || (TooltipPosition = {}));
14
- class IpiTooltipDirective {
14
+ class ApexTooltipDirective {
15
15
  constructor(osService, elementRef, overlayService, document) {
16
16
  this.osService = osService;
17
17
  this.elementRef = elementRef;
18
18
  this.overlayService = overlayService;
19
19
  this.document = document;
20
- this.ipiTooltip = '';
20
+ this.apexTooltip = '';
21
21
  this.tooltipPosition = TooltipPosition.Before;
22
22
  this.isActivated = false;
23
23
  this.longPressTimeout = null;
@@ -107,7 +107,7 @@ class IpiTooltipDirective {
107
107
  createTooltip() {
108
108
  this.tooltip = this.document.createElement('div');
109
109
  this.tooltip.classList.add('tooltip');
110
- this.tooltip.innerHTML = this.ipiTooltip;
110
+ this.tooltip.innerHTML = this.apexTooltip;
111
111
  this.tooltip.style.gap = '10px';
112
112
  this.tooltip.style.color = 'white';
113
113
  this.tooltip.style.minWidth = '50px';
@@ -272,19 +272,19 @@ class IpiTooltipDirective {
272
272
  break;
273
273
  }
274
274
  }
275
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: IpiTooltipDirective, deps: [{ token: i1.OSService }, { token: i0.ElementRef }, { token: i1.OverlayService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
276
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.2", type: IpiTooltipDirective, isStandalone: true, selector: "[ipiTooltip]", inputs: { ipiTooltip: "ipiTooltip", tooltipPosition: "tooltipPosition" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "window:resize": "onResize()", "touchstart": "onTouchStart($event)", "touchend": "onTouchEnd()", "touchcancel": "onTouchCancel()", "window:scroll": "onScroll()" } }, ngImport: i0 }); }
275
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexTooltipDirective, deps: [{ token: i1.OSService }, { token: i0.ElementRef }, { token: i1.OverlayService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
276
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.2", type: ApexTooltipDirective, isStandalone: true, selector: "[apexTooltip]", inputs: { apexTooltip: "apexTooltip", tooltipPosition: "tooltipPosition" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "window:resize": "onResize()", "touchstart": "onTouchStart($event)", "touchend": "onTouchEnd()", "touchcancel": "onTouchCancel()", "window:scroll": "onScroll()" } }, ngImport: i0 }); }
277
277
  }
278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: IpiTooltipDirective, decorators: [{
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexTooltipDirective, decorators: [{
279
279
  type: Directive,
280
280
  args: [{
281
281
  standalone: true,
282
- selector: '[ipiTooltip]'
282
+ selector: '[apexTooltip]'
283
283
  }]
284
284
  }], ctorParameters: () => [{ type: i1.OSService }, { type: i0.ElementRef }, { type: i1.OverlayService }, { type: Document, decorators: [{
285
285
  type: Inject,
286
286
  args: [DOCUMENT]
287
- }] }], propDecorators: { ipiTooltip: [{
287
+ }] }], propDecorators: { apexTooltip: [{
288
288
  type: Input
289
289
  }], tooltipPosition: [{
290
290
  type: Input
@@ -315,5 +315,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
315
315
  * Generated bundle index. Do not edit.
316
316
  */
317
317
 
318
- export { IpiTooltipDirective, TooltipPosition };
318
+ export { ApexTooltipDirective, TooltipPosition };
319
319
  //# sourceMappingURL=apexara-ng-components-tooltip.mjs.map