@neoprototype/neop-ui-lib 1.2.2 → 1.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"neoprototype-neop-ui-lib.mjs","sources":["../../../projects/neop-ui-lib/src/lib/services/test.service.ts","../../../projects/neop-ui-lib/src/lib/services/theme.service.ts","../../../projects/neop-ui-lib/src/lib/services/np-dialog.service.ts","../../../projects/neop-ui-lib/src/lib/services/np-alert.service.ts","../../../projects/neop-ui-lib/src/lib/components/neop-component.module.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-typography/np-typography.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-typography/np-typography.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-button/np-button.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-button/np-button.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-checkbox/np-checkbox.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-checkbox/np-checkbox.component.html","../../../projects/neop-ui-lib/src/lib/config/form-error-config.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-input-field/np-input-field.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-input-field/np-input-field.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-input-textera/np-input-textera.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-input-textera/np-input-textera.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-toggle/np-toggle.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-toggle/np-toggle.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-select/np-select.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-select/np-select.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-dropdowns/np-dropdowns.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-dropdowns/np-dropdowns.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-tooltip/np-tooltip.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-tooltip/np-tooltip.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-action-bar/np-action-bar.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-action-bar/np-action-bar.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-tree/np-tree.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-tree/np-tree.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-pagination/np-pagination.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-pagination/np-pagination.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-scrollbar/np-scrollbar.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-scrollbar/np-scrollbar.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-alert/np-alert.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-alert/np-alert.component.html","../../../projects/neop-ui-lib/src/lib/enum/basic/breadcrumb.enum.ts","../../../projects/neop-ui-lib/src/lib/enum/np-breadcrumb.enum.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-breadcrumb/np-breadcrumb.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-breadcrumb/np-breadcrumb.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-progress-bar/np-progress-bar.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-progress-bar/np-progress-bar.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-slider/np-slider.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-slider/np-slider.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-loading-indicator/np-loading-indicator.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-loading-indicator/np-loading-indicator.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-table/np-table.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-table/np-table.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-tab/np-tab.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-tab/np-tab.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-resize/np-resize.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-resize/np-resize.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/basic.module.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-modal/np-modal.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-modal/np-modal.component.html","../../../projects/neop-ui-lib/src/lib/components/modal/confirm-template/confirm-template.component.ts","../../../projects/neop-ui-lib/src/lib/components/modal/confirm-template/confirm-template.component.html","../../../projects/neop-ui-lib/src/lib/components/modal/np-dialog/np-dialog.component.ts","../../../projects/neop-ui-lib/src/lib/components/modal/np-dialog/np-dialog.component.html","../../../projects/neop-ui-lib/src/lib/models/default.mode.ts","../../../projects/neop-ui-lib/src/public-api.ts","../../../projects/neop-ui-lib/src/neoprototype-neop-ui-lib.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TestService {\n\n constructor() {\n }\n\n test() {\n return 'test1';\n }\n\n test2() {\n return 'test2';\n }\n}\n","\nimport { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n\n // private renderer: Renderer2;\n private themeElement: HTMLElement | null;\n\n constructor(rendererFactory: RendererFactory2) {\n // this.renderer = rendererFactory.createRenderer(null, null);\n this.themeElement = document.getElementById('themeElementId');\n }\n\n setTheme(themeClass: string) {\n if (!this.themeElement) {\n this.themeElement = document.getElementById('themeElementId');\n }\n if (this.themeElement) {\n this.themeElement.className = themeClass; \n }\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { NzModalService, NzModalRef } from 'ng-zorro-antd/modal';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NpDialogService {\n constructor(private modal: NzModalService) {}\n\n openDialog<T, D = any, R = any>(\n component: ComponentType<T>,\n params?: Partial<D>\n ): Observable<R> {\n const modalRef = this.modal.create({\n nzContent: component,\n nzTitle: undefined,\n nzData: params,\n nzFooter: null,\n nzCentered: true,\n nzWidth: (params as any)?.nzWidth ?? '400px'\n });\n\n return modalRef.afterClose as Observable<R>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface AlertData {\n npType: 'toast' | 'notification';\n state: 'success' | 'info' | 'warning' | 'error';\n title?: string;\n description: string;\n message?: string;\n autoHide?: boolean;\n isFromService?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NpAlertService {\n private alertSubject = new Subject<AlertData>();\n alert$ = this.alertSubject.asObservable();\n\n toast = {\n success: (description: string, title?: string, message?: string) =>\n this.emit('toast', 'success', description, title, message),\n info: (description: string, title?: string, message?: string) =>\n this.emit('toast', 'info', description, title, message),\n warning: (description: string, title?: string, message?: string) =>\n this.emit('toast', 'warning', description, title, message),\n error: (description: string, title?: string, message?: string) =>\n this.emit('toast', 'error', description, title, message),\n };\n\n notification = {\n success: (description: string, title?: string, message?: string) =>\n this.emit('notification', 'success', description, title, message),\n info: (description: string, title?: string, message?: string) =>\n this.emit('notification', 'info', description, title, message),\n warning: (description: string, title?: string, message?: string) =>\n this.emit('notification', 'warning', description, title, message),\n error: (description: string, title?: string, message?: string) =>\n this.emit('notification', 'error', description, title, message),\n };\n\n private emit(\n npType: 'toast' | 'notification',\n state: 'success' | 'info' | 'warning' | 'error',\n description: string,\n title?: string,\n message?: string,\n ) {\n this.alertSubject.next({\n npType,\n state,\n description,\n title,\n message,\n autoHide: true,\n isFromService: true\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n ],\n exports: [\n ]\n})\nexport class NeopComponentModule { }\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { NzTypographyModule } from 'ng-zorro-antd/typography';\n\n@Component({\n selector: 'np-typography',\n imports: [NzTypographyModule, CommonModule],\n templateUrl: './np-typography.component.html',\n styleUrl: './np-typography.component.scss',\n})\nexport class NpTypographyComponent {\n @ViewChild('container', { static: true }) container!: ElementRef;\n @Input() npType: string = 'text';\n @Input() npSize: string = 'sm';\n @Input() npWeight: string = 'regular';\n\n _ngContent: Element | null = null;\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n constructor(private renderer: Renderer2) {}\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n}\n","<p #container class=\"{{ npType }}-{{ npSize }} font-{{ npWeight }} font-text\">\n <!-- [ngClass]=\"splitClass()\" -->\n <ng-content></ng-content>\n</p>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'np-button',\n imports: [CommonModule],\n templateUrl: './np-button.component.html',\n styleUrl: './np-button.component.scss',\n})\nexport class NpButtonComponent {\n @ViewChild('container', { static: true }) container!: ElementRef;\n\n @Input() npType: string = 'primary';\n @Input() npSize: string = 'sm';\n @Input() npClassName: string = '';\n @Input() isLoading: boolean = false;\n\n @Input() disabled: boolean = false;\n _ngContent: Element | null = null;\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n constructor(private renderer: Renderer2) { }\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n\n onClick(e: any) {\n if (this.disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n if (this.isLoading) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n // Add rip\n const target = e.target as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e?.clientX - rect.left;\n const y = e?.clientY - rect.top;\n const ripples = this.renderer.createElement('span');\n ripples.style.left = x + 'px';\n ripples.style.top = y + 'px';\n this.renderer.appendChild(this.container.nativeElement, ripples);\n\n setTimeout(() => {\n this.renderer.removeChild(this.container.nativeElement, ripples);\n }, 1000);\n }\n}\n","<button\n #container\n class=\"np-button ripple\n {{ npType }}\n {{ npSize }}\n {{ isLoading ? 'np-loading' : '' }}\n {{ disabled ? npType + '-disabled' : '' }}\n {{ npClassName }}\"\n (click)=\"onClick($event)\"\n>\n <div class=\"inline items-center\">\n <i\n class=\"fa-duotone fa-solid fa-spinner-third fa-spin\"\n *ngIf=\"isLoading\"\n ></i>\n <ng-content></ng-content>\n </div>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\n\n@Component({\n selector: 'np-checkbox',\n imports: [\n CommonModule,\n NzCheckboxModule,\n FormsModule,\n ReactiveFormsModule,\n NzButtonModule,\n NzSwitchModule,\n NpTypographyComponent,\n ],\n templateUrl: './np-checkbox.component.html',\n styleUrl: './np-checkbox.component.scss',\n})\nexport class NpCheckboxComponent {\n _input: FormControl = new FormControl('');\n @Input()\n set input(value: FormControl | undefined | boolean) {\n if (value === true) {\n this._input.patchValue(true);\n return;\n }\n this._input = !!value ? (value as FormControl) : new FormControl(false);\n }\n\n @Input() size: string = 'md';\n @Input() npType: string = 'checkbox';\n\n @Input() isDisabled: boolean = false;\n @Input() groupName: string = 'radioGroup';\n @Input() label?: string;\n @Input() description?: string;\n\n @Input() isIndeterminate = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n onChange(event: any) {\n const inputElement = event.target as HTMLInputElement;\n const value = inputElement.checked;\n this._input?.patchValue(value);\n this.valueChange.emit(value);\n }\n}\n","<label\n [ngClass]=\"[\n size,\n isIndeterminate ? 'indeterminate' : npType,\n isDisabled ? 'disabled' : '',\n _input.value ? 'isChecked' : '',\n ]\"\n>\n <input\n [type]=\"npType === 'radio' ? 'radio' : 'checkbox'\"\n [name]=\"npType === 'radio' ? groupName : null\"\n [checked]=\"_input.value\"\n [disabled]=\"isDisabled\"\n (change)=\"onChange($event)\"\n />\n <span\n [ngClass]=\"[\n 'custom-checkbox',\n isIndeterminate ? 'indeterminate' : npType,\n isDisabled ? 'span-disabled' : '',\n ]\"\n ></span>\n <div>\n <np-typography\n *ngIf=\"label\"\n [class]=\"'label-' + size\"\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >{{ label }}</np-typography\n >\n <np-typography\n *ngIf=\"description\"\n [class]=\"'description-' + size\"\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >{{ description }}</np-typography\n >\n </div>\n</label>\n\n<!-- <label nz-checkbox >Checkbox</label> -->\n","import { InjectionToken } from '@angular/core';\n\nexport type FormErrorMap = Record<string, string>;\n\nexport const FORM_ERROR_MAP = new InjectionToken<FormErrorMap>(\n 'FORM_ERROR_MAP'\n);\n","import { CommonModule, DecimalPipe } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, ViewChild } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport {\n FORM_ERROR_MAP,\n FormErrorMap,\n} from '../../../config/form-error-config';\n\n@Component({\n selector: 'np-input-field',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NzInputModule,\n NzIconModule,\n NpTypographyComponent,\n NzDatePickerModule,\n ],\n templateUrl: './np-input-field.component.html',\n styleUrl: './np-input-field.component.scss',\n providers: [DecimalPipe],\n})\nexport class NpInputFieldComponent {\n constructor(\n private decimalPipe: DecimalPipe,\n @Optional() @Inject(FORM_ERROR_MAP) private defaultErrorMap?: FormErrorMap\n ) { }\n\n @ViewChild('inputRef', { static: true })\n inputRef!: ElementRef<HTMLInputElement>;\n\n @Input() size: string = '';\n @Input() label?: string;\n @Input() placeholder?: string = '';\n @Input() iconLeft?: string;\n @Input() iconRight?: string;\n @Input() hint?: string;\n @Input() errorMap?: FormErrorMap;\n @Input() disabled: boolean = false;\n @Input() limitValue?: number;\n @Input() functionHandler?: Function;\n @Input() submitted: boolean = false;\n\n @Input() digitsInfo: string = '1.2-2';\n @Input() locale: string = 'en-US';\n @Input() formatDate: string = 'dd-MM-yyyy';\n\n inputType: string = 'text';\n passwordVisible = false;\n _input: FormControl = new FormControl('');\n _type: 'password' | 'text' | 'number' | 'string' | 'date' | 'function' =\n 'text';\n\n @Input()\n set input(value: FormControl | undefined) {\n this._input = value ? value : new FormControl('');\n }\n\n @Input()\n set npType(value: typeof this._type) {\n this._type = value;\n this.updateInputType();\n }\n get npType() {\n return this._type;\n }\n\n @Output() valueChange = new EventEmitter<string | number>();\n @Output() iconLeftClick = new EventEmitter<void>();\n @Output() iconRightClick = new EventEmitter<void>();\n @Output() blur = new EventEmitter<FocusEvent>();\n\n onChangeValue() {\n this.valueChange.emit(this._input?.value);\n }\n\n updateInputType() {\n if (this._type === 'password') {\n this.inputType = this.passwordVisible ? 'text' : 'password';\n } else if (this._type === 'date') {\n this.inputType = 'date';\n } else if (this._type === 'number') {\n this.inputType = 'number';\n } else {\n this.inputType = 'text';\n }\n }\n\n togglePassword() {\n this.passwordVisible = !this.passwordVisible;\n this.updateInputType();\n }\n\n get computedStatus(): string | undefined {\n if (!this._input) return undefined;\n\n const control = this._input;\n const showError =\n control.invalid && (control.dirty || control.touched || this.submitted);\n\n return showError ? 'error' : undefined;\n }\n\n get errorMessageFromInput(): string | null {\n if (!this._input || !this._input.errors) return null;\n\n const firstKey = Object.keys(this._input.errors)[0];\n return (\n this.errorMap?.[firstKey] || this.defaultErrorMap?.[firstKey] || null\n );\n }\n\n handleKeyPress(event: KeyboardEvent): void {\n if (this._type === 'number') {\n const isDigit = /^[0-9]$/.test(event.key);\n if (!isDigit) {\n event.preventDefault();\n }\n }\n\n if (this._type === 'text') {\n const isLetter = /^[a-zA-Z ]$/.test(event.key);\n if (!isLetter) {\n event.preventDefault();\n }\n }\n }\n\n onInputChange(event: Event): void {\n const input = (event.target as HTMLInputElement).value;\n const reg = /^-?(0|[1-9][0-9]*)(\\.[0-9]*)?$/;\n\n if (this.limitValue && input.length > this.limitValue) {\n (event.target as HTMLInputElement).value = this._input.value || '';\n return;\n }\n\n if (this.npType === 'number') {\n if (\n (!isNaN(+input) && reg.test(input)) ||\n input === '' ||\n input === '-'\n ) {\n this._input.setValue(input);\n this.valueChange.emit(input);\n } else {\n (event.target as HTMLInputElement).value = this._input.value || '';\n }\n } else {\n if (this.limitValue && input.length > this.limitValue) {\n (event.target as HTMLInputElement).value = this._input.value || '';\n return;\n }\n\n this._input.setValue(input);\n this.valueChange.emit(input);\n\n if (this.npType === 'function') {\n try {\n this.functionHandler?.(input);\n } catch (e) {\n console.warn('functionHandler error:', e);\n }\n }\n }\n }\n\n onBlur(event?: FocusEvent): void {\n if (this.npType === 'number') {\n const raw = this._input.value;\n const numeric = Number(raw?.toString().replace(/,/g, ''));\n\n const formatted = this.decimalPipe.transform(\n numeric,\n this.digitsInfo,\n this.locale\n );\n\n if (formatted) {\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.value = formatted;\n }\n const standardized = Number(formatted.replace(/,/g, ''));\n this._input.setValue(standardized);\n } else {\n this._input.setValue(numeric);\n }\n }\n\n this.blur.emit(event || new FocusEvent('blur'));\n }\n\n handleIconLeftClick(): void {\n this.iconLeftClick.emit();\n }\n\n handleIconRightClick(): void {\n this.iconRightClick.emit();\n }\n}\n","<div class=\"input-wrapper flex column w-full\">\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n *ngIf=\"label\"\n class=\"input-label\"\n >{{ label }}</np-typography\n >\n\n <ng-container *ngIf=\"npType === 'date'; else normalInput\">\n <div [ngClass]=\"size\">\n <nz-date-picker\n [formControl]=\"_input\"\n [nzDisabled]=\"disabled\"\n [nzFormat]=\"formatDate\"\n class=\"w-full\"\n ></nz-date-picker>\n </div>\n </ng-container>\n <ng-template #normalInput>\n <nz-input-group\n [class]=\"[size, 'input-group', computedStatus === 'error' ? 'error' : '']\"\n [nzSuffix]=\"suffixTemplateInfo\"\n [nzPrefix]=\"prefixTemplateUser\"\n >\n <input\n #inputRef\n nz-input\n [type]=\"inputType\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [value]=\"_input.value\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur($event)\"\n (keypress)=\"handleKeyPress($event)\"\n />\n </nz-input-group>\n </ng-template>\n\n <ng-template #prefixTemplateUser>\n <i class=\"{{ iconLeft }} icon-input\" (click)=\"handleIconLeftClick()\"></i>\n </ng-template>\n\n <ng-template #suffixTemplateInfo>\n <i\n class=\"{{ iconRight }} icon-input\"\n *ngIf=\"npType !== 'password'\"\n (click)=\"handleIconRightClick()\"\n ></i>\n <span\n *ngIf=\"npType == 'password'\"\n nz-icon\n class=\"ant-input-password-icon\"\n [nzType]=\"passwordVisible ? 'eye' : 'eye-invisible'\"\n (click)=\"togglePassword()\"\n >\n </span>\n </ng-template>\n\n <div\n class=\"flex justify-between\"\n *ngIf=\"\n computedStatus === 'error' || hint || (limitValue && npType !== 'date')\n \"\n >\n <div class=\"flex flex-col w-full mb-3\">\n <np-typography\n *ngIf=\"computedStatus === 'error'\"\n class=\"input-error text-red-500\"\n >{{ errorMessageFromInput }}</np-typography\n >\n <np-typography *ngIf=\"hint\" class=\"input-hint\">{{ hint }}</np-typography>\n </div>\n <np-typography *ngIf=\"limitValue && npType !== 'date'\" class=\"limit-value\">\n {{ _input.value?.toString()?.length || 0 }}/{{ limitValue }}\n </np-typography>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { FORM_ERROR_MAP, FormErrorMap } from '../../../config/form-error-config';\n\n@Component({\n selector: 'np-input-textera',\n imports: [\n CommonModule,\n FormsModule,\n NzInputModule,\n NpTypographyComponent,\n ReactiveFormsModule,\n ],\n templateUrl: './np-input-textera.component.html',\n styleUrl: './np-input-textera.component.scss',\n})\nexport class NpInputTexteraComponent {\n constructor(\n @Optional() @Inject(FORM_ERROR_MAP) private defaultErrorMap?: FormErrorMap\n ) {}\n\n @Input() label: string = '';\n @Input() placeholder?: string;\n @Input() hint?: string;\n @Input() disabled: boolean = false;\n @Input() value?: string;\n @Input() limitValue?: number;\n @Input() submitted: boolean = false;\n @Input() rowSize: { minRows: number; maxRows: number } = {\n minRows: 4,\n maxRows: 4,\n };\n\n _input: FormControl = new FormControl('');\n currentLength: number = 0;\n\n @Input()\n set input(value: FormControl | undefined) {\n this._input = value ? value : new FormControl('');\n }\n\n onTextareaInput(event: Event): void {\n const input = (event.target as HTMLTextAreaElement).value;\n\n if (this.limitValue && input.length > this.limitValue) {\n const trimmed = input.slice(0, this.limitValue);\n this._input.setValue(trimmed);\n this.currentLength = trimmed.length;\n } else {\n this._input.setValue(input);\n this.currentLength = input.length;\n }\n }\n\n get computedStatus(): string | undefined {\n if (!this._input) return undefined;\n const c = this._input;\n return c.invalid && (c.dirty || c.touched || this.submitted)\n ? 'error'\n : undefined;\n }\n\n get errorMessageFromInput(): string | null {\n if (!this._input || !this._input.errors) return null;\n const firstKey = Object.keys(this._input.errors)[0];\n return this.defaultErrorMap?.[firstKey] || null;\n }\n}\n","<div class=\"flex flex-col gap-1\" [ngClass]=\"computedStatus === 'error' ? 'error' : ''\">\n <np-typography npWeight=\"medium\" *ngIf=\"label\" class=\"input-label\">{{ label }}</np-typography>\n\n <textarea\n nz-input\n [placeholder]=\"placeholder\"\n [nzAutosize]=\"rowSize\"\n [disabled]=\"_input.disabled\"\n [formControl]=\"_input\"\n (input)=\"onTextareaInput($event)\"\n ></textarea>\n\n <div class=\"flex justify-between\">\n <div class=\"flex-col flex\">\n <np-typography *ngIf=\"computedStatus === 'error'\" class=\"input-error text-red-500\">\n {{ errorMessageFromInput }}\n </np-typography>\n <np-typography *ngIf=\"hint\" class=\"input-hint\">{{ hint }}</np-typography>\n </div>\n <np-typography *ngIf=\"limitValue\" class=\"limit-value\">\n {{ currentLength }}/{{ limitValue }}\n </np-typography>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormsModule } from '@angular/forms';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\n\n@Component({\n selector: 'np-toggle',\n imports: [\n CommonModule,\n FormsModule,\n NzSwitchModule,\n NzButtonModule,\n NpTypographyComponent,\n ],\n templateUrl: './np-toggle.component.html',\n styleUrl: './np-toggle.component.scss',\n})\nexport class NpToggleComponent {\n _input: FormControl = new FormControl('');\n @Input()\n set input(value: FormControl | undefined | boolean) {\n if (value === true) {\n this._input.patchValue(true);\n return;\n }\n this._input = !!value ? (value as FormControl) : new FormControl(false);\n }\n @Input() size: string = 'sm';\n @Input() label?: string;\n @Input() subLabel?: string;\n @Input() disabled: boolean = false;\n // private _checked: boolean = false;\n\n // @Input()\n // set checked(value: boolean) {\n // this._checked = value;\n // this.checkedChange.emit(value);\n // }\n\n // get checked(): boolean {\n // return this._checked;\n // }\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n toggleChecked(value: boolean) {\n this._input?.patchValue(value);\n this.valueChange.emit(value);\n }\n}\n","<div class=\"flex gap-2\">\n <nz-switch\n [ngModel]=\"_input.value\"\n (ngModelChange)=\"toggleChecked($event)\"\n [nzDisabled]=\"disabled\"\n [nzSize]=\"size === 'sm' ? 'small' : 'default'\"\n ></nz-switch>\n <div class=\"flex flex-col justify-center\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\" *ngIf=\"label\" class=\"input-label leading-none\"\n [class.input-label-checked]=\"_input.value\"\n >{{ label }}</np-typography>\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"regular\" *ngIf=\"subLabel\" class=\"input-subLabel\"\n [class.input-label-checked]=\"_input.value\">{{ subLabel }}</np-typography>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NpDictionaryItem } from '../../../interfaces/dictionary-item.interface';\n\nexport enum NpInputMode {\n DEFAULT = 'default',\n MULTIPLE = 'multiple',\n TAGS = 'tags',\n}\n\n@Component({\n selector: 'np-select',\n imports: [\n CommonModule,\n NpTypographyComponent,\n FormsModule,\n ReactiveFormsModule,\n NzSelectModule,\n ],\n templateUrl: './np-select.component.html',\n styleUrl: './np-select.component.scss',\n})\n\nexport class NpSelectComponent {\n @Input() npType: string = 'sm';\n @Input() npClassName: string = '';\n @Input() label?: string;\n @Input() hint?: string;\n @Input() placeHolder: string = '';\n @Input() labelTemplate?: TemplateRef<any> = undefined;\n @Input() valueTemplate?: TemplateRef<any> = undefined;\n @Input() isAllowClear: boolean = true;\n @Input() iconPrefixClass?: string = undefined;\n @Input() mode: 'multiple' | 'tags' | 'default' = 'default';\n @Input() listItem: NpDictionaryItem[] | any = [];\n\n NpMode = NpInputMode;\n _input: FormControl = new FormControl(null);\n @Input()\n set input(value: FormControl | undefined) {\n this._input = !!value ? (value as FormControl) : new FormControl([]);\n }\n\n @Output() valueChange = new EventEmitter<string>();\n\n onChangeValue() {\n this.valueChange.emit(this._input?.value);\n }\n}\n","<div class=\"flex flex-col gap-1 np-select {{ npClassName }}\">\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n *ngIf=\"label\"\n class=\"input-label\"\n >{{ label }}</np-typography\n >\n <div class=\"relative {{ npType }} \" [class.add-prefix-icon]=\"iconPrefixClass\">\n <nz-select\n [nzPlaceHolder]=\"placeHolder\"\n class=\"w-full\"\n [formControl]=\"_input\"\n [nzShowSearch]=\"true\"\n [nzAllowClear]=\"isAllowClear\"\n [nzMode]=\"mode\"\n [nzCustomTemplate]=\"valueTemplate ?? defaultTemplate\"\n (ngModelChange)=\"onChangeValue()\"\n >\n @for (item of listItem; track item) {\n <nz-option\n nzCustomContent\n [nzLabel]=\"item?.label\"\n [nzValue]=\"item?.value\"\n >\n @if (labelTemplate) {\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: { item: item }\"\n ></ng-container>\n } @else {\n <div class=\"flex justify-between\">\n <div>{{ item?.label }}</div>\n @if (mode === NpMode.DEFAULT) {\n <div class=\"icon-check\"><i class=\"fa-light fa-check\"></i></div>\n }\n </div>\n }\n </nz-option>\n }\n </nz-select>\n <ng-template #defaultTemplate let-selected>\n {{ selected.nzLabel }}\n </ng-template>\n <div class=\"prefix-icon absolute\">\n <i class=\"{{ iconPrefixClass }}\"></i>\n </div>\n </div>\n <np-typography *ngIf=\"hint\" class=\"input-hint\">{{ hint }}</np-typography>\n</div>\n\n<!-- <nz-select\n nzMode=\"multiple\"\n nzPlaceHolder=\"Please select\"\n [(ngModel)]=\"value\"\n class=\"w-full\"\n >\n @for (item of listItem; track item) {\n <nz-option [nzLabel]=\"item?.label\" [nzValue]=\"item?.value\"></nz-option>\n }\n </nz-select> -->\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NpDictionaryItem } from '../../../interfaces/dictionary-item.interface';\nimport { NpButtonComponent } from '../np-button/np-button.component';\n\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NpInputFieldComponent } from \"../np-input-field/np-input-field.component\";\n// import { NpDropdownContentMenuComponent } from './np-dropdown-content-menu/np-dropdown-content-menu.component';\n\n// export interface NpDroplistItem {\n// value: string;\n// label: string;\n// nzValue: string;\n// nzLabel: string;\n// }\n\nexport enum NpMode {\n DEFAULT = 'default',\n MULTIPLE = 'multiple',\n TAGS = 'tags',\n}\n@Component({\n selector: 'np-dropdowns',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NpButtonComponent,\n // NzPopoverModule,\n NzDropDownModule,\n // NpDropdownContentMenuComponent\n NzSelectModule,\n NpInputFieldComponent,\n ],\n templateUrl: './np-dropdowns.component.html',\n styleUrl: './np-dropdowns.component.scss',\n})\nexport class NpDropdownsComponent {\n @Input() npType: string = 'secondary';\n @Input() npSize: string = 'sm';\n @Input() npClassName: string = '';\n @Input() value: string = 'Menu Dropdown';\n @Input() useSearch: boolean = false;\n @Input() alwaysOpen: boolean = false;\n @Input() placement:\n | 'bottomLeft'\n | 'bottomCenter'\n | 'bottomRight'\n | 'topLeft'\n | 'topCenter'\n | 'topRight' = 'bottomCenter';\n // @Input() label: string = 'Menu Dropdown';\n @Input() list: NpDictionaryItem[] | any = [];\n // @Output() valueChange = new EventEmitter<any>();\n @Output() valueChange = new EventEmitter<NpDictionaryItem>();\n\n @Output() visible: boolean = false;\n\n searchControl = new FormControl('');\n originalList: NpDictionaryItem[] = [];\n filteredList: NpDictionaryItem[] = [];\n\n selectedItem: NpDictionaryItem | null = null;\n\n ngOnInit(): void {\n this.originalList = [...this.list];\n this.filteredList = [...this.list];\n\n this.searchControl.valueChanges.subscribe((text: string | null) => {\n this.filterList(text ?? '');\n });\n }\n\n clickMe(): void {\n this.visible = false;\n }\n\n change(value: boolean): void { }\n\n onSelectItem(item: NpDictionaryItem) {\n this.visible = false;\n // if (this.npType !== 'icon') {\n // this.value = item?.value;\n // }\n this.selectedItem = item;\n this.value = item?.label;\n this.valueChange.emit(item);\n this.searchControl.setValue('');\n }\n\n onRightIconClick(): void {\n this.searchControl.setValue('');\n }\n\n filterList(search: string) {\n const normalizedSearch = search?.toLowerCase().trim() || '';\n\n if (!normalizedSearch) {\n this.filteredList = [...this.originalList];\n return;\n }\n\n const matchedItems = this.originalList.filter((item) =>\n item.label?.toLowerCase().includes(normalizedSearch)\n );\n\n const originalWithoutDivider = this.originalList.filter(\n (item) => item.npType !== 'divider'\n );\n\n const isSame =\n matchedItems.length === originalWithoutDivider.length &&\n matchedItems.every((item) =>\n originalWithoutDivider.some((o) => o.label === item.label)\n );\n\n if (isSame) {\n this.filteredList = [...this.originalList];\n } else {\n this.filteredList = matchedItems;\n }\n }\n}\n","<np-button\n class=\"inline-block w-auto np-dropdown {{ npClassName }}\"\n [npType]=\"npType\"\n [npSize]=\"npSize\"\n nz-dropdown\n nzTrigger=\"click\"\n [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"alwaysOpen\"\n [nzPlacement]=\"placement\"\n>\n <div class=\"flex gap-1 items-center\">\n <i\n *ngIf=\"selectedItem?.classIcon\"\n class=\"{{ selectedItem?.classIcon }}\"\n ></i>\n {{ selectedItem?.label || value }}\n @if (npType === \"icon\") {\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n } @else {\n <i class=\"fa-light icon fa-chevron-down\" [class.icon-up]=\"visible\"></i>\n }\n </div>\n</np-button>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu>\n <div class=\"px-[8px] py-[2px] mb-1\" *ngIf=\"useSearch\">\n <np-input-field\n size=\"sm\"\n npType=\"string\"\n placeholder=\"Search\"\n iconLeft=\"fa-regular fa-magnifying-glass\"\n iconRight=\"fa-solid fa-xmark-large\"\n [input]=\"searchControl\"\n (iconRightClick)=\"onRightIconClick()\"\n ></np-input-field>\n </div>\n @for (item of filteredList; track item) {\n <ng-container\n *ngTemplateOutlet=\"contentMenu; context: { item: item }\"\n ></ng-container>\n }\n </ul>\n\n <ng-template #contentMenu let-item=\"item\">\n @if (item?.npType === \"divider\") {\n <li nz-menu-divider></li>\n } @else if (!item?.childrens) {\n <li nz-menu-item (click)=\"onSelectItem(item)\">\n <ng-container\n *ngTemplateOutlet=\"contentTemplate; context: { item: item }\"\n ></ng-container>\n </li>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"contentSubMenuTemplate; context: { item: item }\"\n ></ng-container>\n }\n </ng-template>\n\n <ng-template #contentSubMenuTemplate let-item=\"item\">\n <li nz-submenu [nzTitle]=\"submenuTitle\">\n <ng-template #submenuTitle>\n <ng-container\n *ngTemplateOutlet=\"contentTemplate; context: { item: item }\"\n ></ng-container>\n </ng-template>\n <ul>\n @for (itemChild of item?.childrens; track itemChild) {\n @if (itemChild?.npType === \"divider\") {\n <li nz-menu-divider></li>\n } @else if (!itemChild?.childrens) {\n <li nz-menu-item (click)=\"onSelectItem(itemChild)\">\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: itemChild }\n \"\n ></ng-container>\n </li>\n } @else {\n <!-- Start Fix temp when not use recursive template -->\n <li nz-submenu [nzTitle]=\"submenuTitle2\">\n <ng-template #submenuTitle2>\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: itemChild }\n \"\n ></ng-container>\n </ng-template>\n <ul>\n @for (itemChild2 of itemChild?.childrens; track itemChild2) {\n <li nz-menu-item (click)=\"onSelectItem(itemChild2)\">\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: itemChild2 }\n \"\n ></ng-container>\n </li>\n }\n </ul>\n </li>\n <!-- End Fix temp when not use recursive template -->\n\n <!-- <ng-container\n *ngTemplateOutlet=\"contentMenu; context: { item: itemChild }\"\n ></ng-container> -->\n }\n }\n </ul>\n </li>\n </ng-template>\n\n <ng-template #contentTemplate let-item=\"item\">\n <i class=\"{{ item?.classIcon }} mr-[4px]\"></i>\n {{ item?.label }}\n </ng-template>\n</nz-dropdown-menu>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n Input,\n ViewChild,\n Renderer2,\n} from '@angular/core';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\n\n@Component({\n selector: 'np-tooltip',\n imports: [\n NzButtonModule,\n NzTooltipModule,\n CommonModule,\n NpTypographyComponent,\n ],\n templateUrl: './np-tooltip.component.html',\n styleUrl: './np-tooltip.component.scss',\n})\nexport class NpTooltipComponent {\n @Input() npType: 'primary' | 'secondary' = 'primary';\n @Input() text: string = 'Title';\n @Input() descriptions?: string;\n @Input() position?: string;\n @Input() tooltipVisible: boolean = false;\n\n @ViewChild('container', { static: true }) container!: ElementRef;\n\n _ngContent: Element | null = null;\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n constructor(private renderer: Renderer2) { }\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n // if (typeof this._ngContent === 'string') {\n // const contentContainer = this.renderer.createElement('ng-container');\n // contentContainer.innerHTML = this.ngContent;\n // this.renderer.appendChild(this.container.nativeElement, contentContainer);\n // }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n\n get tooltipColor(): string {\n return this.npType === 'primary'\n ? 'rgba(255, 255, 255, 1)'\n : 'rgba(16, 24, 40, 1)';\n }\n}\n","<div\n #container\n class=\"h-full\"\n [nzTooltipTitle]=\"customTooltip\"\n [nzTooltipPlacement]=\"position\"\n nzTooltipTrigger=\"hover\"\n [nzTooltipVisible]=\"tooltipVisible\"\n nzTooltipOverlaynpClassName=\"tooltip-class\"\n nz-button\n nz-tooltip\n [nzTooltipColor]=\"tooltipColor\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #customTooltip>\n <div class=\"custom-tooltip\">\n <np-typography\n npType=\"text\"\n npSize=\"xs\"\n npWeight=\"semibold\"\n [ngStyle]=\"{\n color:\n npType === 'primary'\n ? 'rgba(52, 64, 84, 1)'\n : 'rgba(255, 255, 255, 1)',\n }\"\n >{{ text }}</np-typography\n >\n <np-typography\n npType=\"text\"\n npSize=\"xs\"\n npWeight=\"medium\"\n [ngStyle]=\"{\n color:\n npType === 'primary'\n ? 'rgba(52, 64, 84, 1)'\n : 'rgba(255, 255, 255, 1)',\n }\"\n >{{ descriptions }}</np-typography\n >\n </div>\n</ng-template>\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { INpAction } from '../../../interfaces/np.actions';\nimport { CommonModule } from '@angular/common';\nimport { NpTooltipComponent } from '../np-tooltip/np-tooltip.component';\n\n@Component({\n selector: 'np-action-bar',\n imports: [CommonModule, NpTooltipComponent],\n templateUrl: './np-action-bar.component.html',\n styleUrl: './np-action-bar.component.scss',\n})\nexport class NpActionBarComponent {\n @Input() actions: INpAction[] = [];\n @Input() data: any;\n @Input() notCompressMin: number = 5;\n @Input() isNotResponsive: boolean = false;\n\n @ViewChild('triggerBtn', { read: ElementRef }) triggerBtn!: ElementRef;\n @ViewChild('resizeContainer') resizeContainer!: ElementRef;\n @ViewChild('scrollWrapper') scrollWrapper!: ElementRef;\n\n unCompressedActions: INpAction[] = [];\n unCompressedActions2: INpAction[] = [];\n compressedActions: INpAction[] = [];\n\n isMoreOpen = false;\n dropdownStyles: { top: string; left: string } = { top: '0px', left: '0px' };\n\n countIcon = 0;\n countResize = 0;\n canPrevious = false;\n canNext = false;\n isOverflowing = false;\n isPreviousDisable = false;\n isNextDisable = false;\n isReturn = false;\n valueStart = 0;\n isCheckValue = false;\n scrollMaxWidth: number | null = null;\n totalActionWidth = 0;\n lastResizeWidth = 0;\n isResize = false;\n\n iconWidth = 0;\n visibleIcons = 0;\n\n private resizeStack: number[] = [];\n private resizeObserver: ResizeObserver | null = null;\n\n ngOnInit(): void {\n this.splitActions();\n this.unCompressedActions2 = this.unCompressedActions;\n this.countIcon = this.unCompressedActions.length;\n this.countResize = this.countIcon - 3;\n }\n\n ngAfterViewInit(): void {\n if (!this.isNotResponsive) {\n setTimeout(() => {\n this.updateScrollState();\n this.attachScrollListener();\n\n this.setupResizeObserver();\n\n let count = 0;\n const interval = setInterval(() => {\n this.updateScrollState();\n count++;\n if (count > 5) clearInterval(interval);\n });\n });\n }\n }\n\n private setupResizeObserver(): void {\n const parent = this.resizeContainer?.nativeElement?.parentElement;\n if (!parent || typeof ResizeObserver === 'undefined') return;\n\n this.resizeObserver = new ResizeObserver(() => {\n this.updateScrollState();\n });\n\n this.resizeObserver.observe(parent);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private splitActions() {\n const visible = this.actions.filter((a) => !a.hidden);\n const count = visible.length;\n\n this.unCompressedActions = visible.slice(0, this.notCompressMin);\n this.compressedActions =\n count > this.notCompressMin ? visible.slice(this.notCompressMin) : [];\n }\n\n trigger(action: INpAction): void {\n if (typeof action.onClick === 'function') {\n action.onClick(this.data);\n }\n this.isMoreOpen = false;\n }\n\n showMoreActions(): void {\n this.isMoreOpen = !this.isMoreOpen;\n\n if (this.isMoreOpen && this.triggerBtn?.nativeElement) {\n const rect = this.triggerBtn.nativeElement.getBoundingClientRect();\n\n const dropdownWidth = 150;\n const left =\n rect.left + rect.width / 2 - dropdownWidth / 2 + window.scrollX;\n\n this.dropdownStyles = {\n top: `${rect.bottom + 10}px`,\n left: `${Math.max(left, 10)}px`,\n };\n }\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const inside = this.triggerBtn?.nativeElement.contains(target);\n if (!inside) {\n this.isMoreOpen = false;\n }\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n this.isMoreOpen = false;\n }\n\n @HostListener('window:resize')\n onResize() {\n if (!this.isNotResponsive) {\n this.updateScrollState();\n }\n }\n\n // private updateScrollState(): void {\n // const el = this.resizeContainer?.nativeElement;\n // if (!el) return;\n\n // const totalActionWidth = el.npScrollWidth;\n // const parentWidth = el.parentElement ? el.parentElement.clientWidth - 3 : 0;\n\n // if (!this.isCheckValue) {\n // this.isCheckValue = true;\n // this.valueStart = totalActionWidth;\n // }\n\n // if (parentWidth > this.valueStart) this.isReturn = false;\n\n // if (parentWidth > totalActionWidth) {\n // if (!this.isReturn) this.scrollMaxWidth = totalActionWidth;\n // } else {\n // this.scrollMaxWidth = 64;\n // this.isReturn = true;\n // }\n\n // if (totalActionWidth >= parentWidth || this.isReturn) {\n // this.isOverflowing = true;\n // this.unCompressedActions2 = [\n // ...this.unCompressedActions,\n // ...this.compressedActions,\n // ];\n // } else {\n // this.isOverflowing = false;\n // this.unCompressedActions2 = [...this.unCompressedActions];\n // }\n\n // this.canPrevious = this.isOverflowing;\n // this.canNext = this.isOverflowing;\n\n // setTimeout(() => {\n // this.updateBtnScroll();\n // }, 0);\n // }\n\n private updateScrollState(): void {\n const el = this.resizeContainer?.nativeElement;\n if (!el) return;\n\n if (this.totalActionWidth !== this.scrollMaxWidth) {\n this.totalActionWidth = el.npScrollWidth;\n }\n\n let parentWidth = el.parentElement ? el.parentElement.clientWidth - 3 : 0;\n\n if (!this.isCheckValue) {\n this.isCheckValue = true;\n this.valueStart = this.totalActionWidth;\n }\n\n if (parentWidth > this.valueStart) this.isReturn = false;\n\n if (this.isReturn) {\n parentWidth = parentWidth - 73;\n }\n\n if (parentWidth > this.totalActionWidth) {\n const lastState = this.resizeStack[this.resizeStack.length - 1];\n if (this.countResize === this.countIcon - 3) {\n this.scrollMaxWidth = this.valueStart;\n this.isResize = false;\n }\n if (parentWidth > lastState) {\n this.countResize++;\n const last = this.resizeStack.pop();\n this.scrollMaxWidth = last !== undefined ? last : null;\n this.totalActionWidth = last !== undefined ? last : 0;\n }\n } else {\n this.scrollMaxWidth = this.countResize * 25 - 11;\n const lastState = this.resizeStack[this.resizeStack.length - 1];\n if (lastState !== this.scrollMaxWidth) {\n this.resizeStack.push(this.totalActionWidth);\n }\n if (this.totalActionWidth !== this.scrollMaxWidth) {\n this.totalActionWidth = this.scrollMaxWidth;\n this.countResize--;\n this.lastResizeWidth = parentWidth;\n }\n this.isResize = true;\n this.isReturn = true;\n }\n\n if (this.totalActionWidth >= parentWidth || this.isReturn) {\n this.isOverflowing = true;\n this.unCompressedActions2 = [\n ...this.unCompressedActions,\n ...this.compressedActions,\n ];\n } else {\n this.isOverflowing = false;\n this.unCompressedActions2 = [...this.unCompressedActions];\n }\n\n this.canPrevious = this.isOverflowing;\n this.canNext = this.isOverflowing;\n\n setTimeout(() => {\n this.updateBtnScroll();\n }, 0);\n }\n\n updateBtnScroll(): void {\n const ele = this.scrollWrapper?.nativeElement;\n\n this.isPreviousDisable = ele.scrollLeft <= 0;\n this.isNextDisable = ele.scrollLeft + ele.clientWidth >= ele.npScrollWidth;\n }\n\n private attachScrollListener() {\n const el = this.scrollWrapper?.nativeElement;\n if (el) {\n el.addEventListener('scroll', () => this.updateBtnScroll());\n }\n }\n\n scrollLeft(): void {\n if (this.isPreviousDisable) return;\n\n const el = this.scrollWrapper?.nativeElement;\n if (el) {\n const scrollAmount = this.getScrollStep();\n el.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n console.log('scrollLeft :', scrollAmount);\n }\n }\n\n scrollRight(): void {\n if (this.isNextDisable) return;\n\n const el = this.scrollWrapper?.nativeElement;\n if (el) {\n const scrollAmount = this.getScrollStep();\n el.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n console.log('scrollLeft :', scrollAmount);\n }\n }\n\n getScrollStep(): number {\n const el = this.scrollWrapper?.nativeElement;\n const btn = el?.querySelector('button');\n if (!btn) return 100; // fallback\n\n const iconWidth = btn.offsetWidth;\n const gap = 12;\n const containerWidth = el.clientWidth;\n\n const visibleIcons = Math.ceil(containerWidth / (iconWidth + gap));\n return visibleIcons * (iconWidth + gap);\n }\n}\n","<div class=\"relative flex w-full justify-center items-center\">\n <div #resizeContainer class=\"np-action-bar flex items-center rounded-full border border-gray-300 bg-white px-1 py-1\">\n <button\n *ngIf=\"canPrevious\"\n (click)=\"scrollLeft()\"\n class=\"rounded-full flex items-center justify-center bg-gray-100 w-[26px] h-[20px] btn-previous\"\n [ngClass]=\"{\n 'opacity-40 cursor-not-allowed': isPreviousDisable,\n 'cursor-pointer': !isPreviousDisable,\n\n }\"\n >\n <i class=\"fa-solid fa-chevron-left px-3 py-1\"></i>\n </button>\n\n <div\n #scrollWrapper\n class=\"flex w-full no-scrollbar scroll-smooth\"\n [ngClass]=\"{\n 'mx-3': compressedActions.length === 0 && !canPrevious,\n 'ms-3': !canPrevious && compressedActions.length > 0,\n 'overflow-x-auto': isOverflowing,\n }\"\n [ngStyle]=\"{ 'max-width.px': scrollMaxWidth }\"\n >\n <ng-container *ngFor=\"let action of unCompressedActions2\">\n <np-tooltip [text]=\"action.label || ''\" class=\"h-[20px]\">\n <button\n class=\"action-btn cursor-pointer bg-transparent\"\n (click)=\"trigger(action)\"\n >\n <i class=\"{{ action.classIcon }}\"></i>\n </button>\n </np-tooltip>\n </ng-container>\n </div>\n\n <button\n *ngIf=\"canNext\"\n (click)=\"scrollRight()\"\n class=\"rounded-full flex items-center justify-center bg-gray-100 w-[26px] h-[20px] btn-next\"\n [ngClass]=\"{\n 'opacity-40 cursor-not-allowed': isNextDisable,\n 'cursor-pointer': !isNextDisable,\n }\"\n >\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n\n <np-tooltip\n *ngIf=\"compressedActions.length > 0 && !isOverflowing\"\n text=\"More actions\"\n class=\"px-3 ms-1 rounded-2xl h-[20px]\"\n [ngClass]=\"{\n 'bg-gray-100': isMoreOpen,\n 'bg-transparent': !isMoreOpen,\n }\"\n >\n <button\n #triggerBtn\n class=\"action-btn cursor-pointer bg-transparent\"\n (click)=\"showMoreActions()\"\n >\n <i class=\"fa-solid fa-ellipsis\"></i>\n </button>\n </np-tooltip>\n </div>\n</div>\n\n<div\n *ngIf=\"isMoreOpen\"\n class=\"fixed z-999 min-w-[150px] bg-white border border-gray-200 rounded-lg shadow-md overflow-hidden\"\n [ngStyle]=\"dropdownStyles\"\n>\n <ng-container *ngFor=\"let action of compressedActions\">\n <button\n class=\"flex w-full items-center gap-2 px-3 py-2 hover:bg-gray-100 transition-all duration-150 text-left\"\n (click)=\"trigger(action)\"\n >\n <i class=\"{{ action.classIcon }}\"></i>\n {{ action.label }}\n </button>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { INpTreeNode } from '../../../interfaces/np-tree.interface';\nimport { NpButtonComponent } from '../np-button/np-button.component';\nimport { NpCheckboxComponent } from '../np-checkbox/np-checkbox.component';\nimport { NpActionBarComponent } from '../np-action-bar/np-action-bar.component';\n\ninterface IFlatTreeNode extends INpTreeNode {\n isLastByLevel?: { [level: number]: boolean };\n hasParentByLevel?: { [level: number]: boolean };\n}\n\n@Component({\n selector: 'np-tree',\n imports: [\n CommonModule,\n NpCheckboxComponent,\n NpButtonComponent,\n RouterModule,\n NpActionBarComponent,\n ],\n templateUrl: './np-tree.component.html',\n styleUrl: './np-tree.component.scss',\n})\nexport class NpTreeComponent implements OnInit {\n @Input() npType: 'checkbox' | 'icon' | 'default' = 'default';\n @Input() expandPosition: 'left' | 'right' = 'left';\n @Input() notCompressMin: number = 3;\n @Input() isCompactActions: boolean = false;\n @Input() autoHideActions: boolean = true;\n @Input() npClassName: string = '';\n\n\n _list: INpTreeNode[] | undefined = [];\n _flattenList: INpTreeNode[] | undefined = [];\n @Input()\n set list(value: INpTreeNode[] | undefined) {\n this._flattenList = this.getFlattenList(value);\n this._list = value;\n this.visibleNodes = this.getVisibleNodes();\n }\n\n _input: FormControl = new FormControl(null);\n @Input()\n set input(value: FormControl | undefined) {\n this._input = !!value ? (value as FormControl) : new FormControl([]);\n }\n\n @Output() valueChange = new EventEmitter<string[]>();\n\n @Input() itemActiveId = '';\n @Input() useLine = false;\n\n visibleNodes: INpTreeNode[] = [];\n\n getFlattenList(\n arr: INpTreeNode[] | undefined,\n level = 0,\n parentId: string | null = null,\n parentLastMap: Record<number, boolean> = {},\n parentMap: Record<number, boolean> = {}\n ): IFlatTreeNode[] {\n if (!arr) return [];\n\n return arr.reduce((acc: IFlatTreeNode[], item, index, array) => {\n const isLast = index === array.length - 1;\n const isLastByLevel = { ...parentLastMap, [level]: isLast };\n const hasParentByLevel = { ...parentMap, [level]: !!parentId };\n\n const flatItem: IFlatTreeNode = {\n ...item,\n level,\n parentId,\n isExpanded: item.isExpanded === true && !!item.childrens?.length,\n isLastByLevel,\n hasParentByLevel,\n };\n\n acc.push(flatItem);\n\n if (item.childrens?.length) {\n const children = this.getFlattenList(\n item.childrens,\n level + 1,\n item.id,\n isLastByLevel,\n hasParentByLevel\n );\n acc.push(...children);\n }\n\n return acc;\n }, []);\n }\n\n onExpand(event: any, item: INpTreeNode) {\n if (item.path) {\n event.stopPropagation();\n }\n item.isExpanded = !item.isExpanded;\n this.visibleNodes = this.getVisibleNodes();\n }\n\n getVisibleNodes(): INpTreeNode[] {\n const result: INpTreeNode[] = [];\n const map = new Map(this._flattenList?.map((item) => [item.id, item]));\n\n for (const item of this._flattenList ?? []) {\n if (!item.parentId || this.isParentExpanded(item, map)) {\n result.push(item);\n }\n }\n\n return result;\n }\n\n isParentExpanded(item: INpTreeNode, map: Map<any, INpTreeNode>): boolean {\n let parent = map.get(item.parentId);\n while (parent) {\n if (!parent.isExpanded) return false;\n parent = map.get(parent.parentId);\n }\n return true;\n }\n\n itemHasChildren(item: INpTreeNode): boolean {\n return this._flattenList?.some((x) => x.parentId === item.id) ?? false;\n }\n\n onSelectItem(item: INpTreeNode) {\n if (!item) {\n return;\n }\n item.isSelected = !item.isSelected;\n this.itemActiveId = item.id;\n\n if (this.npType === 'default') return;\n this.onCheckItem(item);\n }\n\n onCheckItem(item: INpTreeNode) {\n const isParentClick = this.itemHasChildren(item);\n\n item.isChecked = !item.isChecked;\n item.isIndeterminate = false;\n item.checkboxType = 'checkbox';\n\n if (isParentClick) {\n this.updateChildrenSelection(item);\n }\n\n this.updateParentSelection(item.parentId ?? undefined);\n this.onValueChange();\n }\n\n updateParentSelection(parentId: string | undefined) {\n if (!parentId) return;\n\n const parentNode = this._flattenList?.find((x) => x.id === parentId);\n if (!parentNode) return;\n\n const children =\n this._flattenList?.filter((x) => x.parentId === parentNode.id) ?? [];\n\n const allSelected = children.every((child) => child.isChecked);\n const someSelected = children.some(\n (child) => child.isChecked || child.isIndeterminate\n );\n\n parentNode.isIndeterminate = someSelected && !allSelected;\n parentNode.isChecked = allSelected || (someSelected && !allSelected);\n parentNode.checkboxType = allSelected\n ? 'checkbox'\n : someSelected\n ? 'indeterminate'\n : undefined;\n\n this.updateParentSelection(parentNode.parentId ?? undefined);\n }\n\n updateChildrenSelection(node: INpTreeNode) {\n const children =\n this._flattenList?.filter((x) => x.parentId === node.id) ?? [];\n for (const child of children) {\n child.isChecked = node.isChecked;\n child.isIndeterminate = false;\n child.checkboxType = 'checkbox';\n this.updateChildrenSelection(child);\n }\n }\n\n onValueChange() {\n // this.valueChange.\n // console.log('data-datadata', this._input?.value);\n }\n\n onSelectAction(event: any) {\n if (event.onClick()) {\n event.onClick(event);\n }\n }\n ngOnInit() {\n if (this._list?.length) {\n this.normalizeIcons(this._list);\n }\n }\n\n normalizeIcons(list: INpTreeNode[]) {\n list.forEach((item) => {\n if (item.iconCollapsed) {\n item.iconExpanded ??= item.iconCollapsed;\n item.iconLeaf ??= item.iconCollapsed;\n }\n\n if (item.childrens?.length) {\n this.normalizeIcons(item.childrens);\n }\n });\n }\n\n getNodeClasses(item: any, isLast: boolean): { [key: string]: boolean } {\n return {\n ['level-' + (item.level ?? 0)]: true,\n 'is-last': isLast,\n };\n }\n}\n","<ng-template\n #wrapWithLevel\n let-content\n let-level=\"level\"\n let-max=\"max\"\n let-isLastByLevel=\"isLastByLevel\"\n let-hasParentByLevel=\"hasParentByLevel\"\n let-isLine=\"isLine\"\n>\n <div\n [ngClass]=\"[\n 'tree-line',\n 'level-' + level,\n isLine ? '' : 'no-line',\n isLastByLevel?.[level] ? 'is-last' : '',\n hasParentByLevel?.[level] ? 'has-parent' : '',\n expandPosition === 'right' ? 'expand-right' : '',\n ]\"\n >\n @if (level < max) {\n <ng-container\n *ngTemplateOutlet=\"\n wrapWithLevel;\n context: {\n $implicit: content,\n level: level + 1,\n max: max,\n isLastByLevel: isLastByLevel,\n hasParentByLevel: hasParentByLevel,\n isLine: isLine,\n }\n \"\n ></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n </div>\n</ng-template>\n\n<div class=\"np-tree {{ npClassName }}\">\n @for (item of visibleNodes; track item; let isLast = $last) {\n <ng-template #treeNodeContent>\n <div\n class=\"tree-node\"\n [ngClass]=\"[\n itemHasChildren(item) ? 'has-children' : '',\n item.parentId ? 'has-parent' : '',\n ]\"\n >\n <div\n class=\"flex py-[7px] w-full min-h-[40px] bt-1 cursor-pointer tree-item group {{\n item.npClassName\n }}\"\n [class.tree-node-selected]=\"item?.id === itemActiveId\"\n [routerLink]=\"item.path ? item.path : null\"\n [routerLinkActive]=\"item.path ? 'tree-node-selected' : ''\"\n >\n <div class=\"flex gap-1 items-center\">\n @if (expandPosition === \"left\") {\n @if (itemHasChildren(item)) {\n <np-button\n npType=\"icon\"\n npSize=\"bs\"\n (click)=\"onExpand($event, item)\"\n >\n <i\n class=\"fa-solid fa-caret-right\"\n [ngClass]=\"item?.isExpanded ? 'iconExpand' : ''\"\n style=\"color: rgba(102, 112, 133, 1)\"\n ></i>\n </np-button>\n } @else {\n <div class=\"w-[15px] h-[14px]\"></div>\n }\n }\n\n <div class=\"flex items-center gap-1\" (click)=\"onSelectItem(item)\">\n @if (npType === \"checkbox\") {\n <np-checkbox\n [input]=\"item.isChecked\"\n [npType]=\"item.checkboxType || 'checkbox'\"\n size=\"md\"\n (valueChange)=\"onCheckItem(item)\"\n (click)=\"$event.stopPropagation()\"\n ></np-checkbox>\n }\n @if (npType === \"icon\") {\n <i\n class=\"fa-light\"\n [ngClass]=\"\n item?.childrens?.length\n ? item?.isExpanded\n ? item?.iconExpanded\n : item?.iconCollapsed\n : item?.iconLeaf\n \"\n ></i>\n }\n\n <span class=\"text-[16px] whitespace-nowrap\">{{\n item?.name\n }}</span>\n </div>\n </div>\n\n <div class=\"px-2 w-full flex items-center justify-end gap-1\">\n @if ((item?.actions?.length ?? 0) > 0) {\n <np-action-bar\n class=\"w-full flex justify-end\"\n ngClass=\"\n {{\n autoHideActions\n ? 'opacity-0 group-hover:opacity-100 transition-opacity duration-200'\n : ''\n }}\n \"\n [actions]=\"item.actions ?? []\"\n [notCompressMin]=\"this.notCompressMin\"\n [isNotResponsive]=\"isCompactActions\"\n (click)=\"item.path ? $event.stopPropagation() : null\"\n >\n </np-action-bar>\n }\n @if (expandPosition === \"right\") {\n @if (itemHasChildren(item)) {\n <np-button\n npType=\"icon\"\n npSize=\"bs\"\n (click)=\"onExpand($event, item)\"\n npClassName=\"flex w-[17px]\"\n >\n <i\n class=\"fa-solid fa-chevron-right\"\n [ngClass]=\"item?.isExpanded ? 'iconExpand' : ''\"\n style=\"color: rgba(102, 112, 133, 1)\"\n ></i>\n </np-button>\n } @else {\n <div class=\"w-[17px]\"></div>\n }\n }\n </div>\n </div>\n </div>\n </ng-template>\n\n <ng-container\n *ngTemplateOutlet=\"\n wrapWithLevel;\n context: {\n $implicit: treeNodeContent,\n level: 0,\n max: item.level ?? 0,\n isLastByLevel: item.isLastByLevel,\n hasParentByLevel: item.hasParentByLevel,\n isLine: useLine,\n }\n \"\n ></ng-container>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'np-pagination',\n imports: [CommonModule, NpTypographyComponent, FormsModule],\n templateUrl: './np-pagination.component.html',\n styleUrl: './np-pagination.component.scss',\n})\nexport class NpPaginationComponent implements OnChanges, OnInit {\n @Input() npType: 'basic' | 'outlined' | 'text' | 'simple' | 'full' = 'basic';\n @Input() totalItems: number = 0;\n @Input() pageSize: number[] = [];\n @Input() npReverse: boolean = false;\n @Output() pageSizeChange = new EventEmitter<number>();\n\n pageTotal: number = 1;\n\n private _pageSizeValue: number = 10;\n private _pageIndex: number = 1;\n\n isDropdownOpenMap: { [key: string]: boolean } = {\n basic: false,\n outlined: false,\n text: false,\n simple: false,\n full: false,\n };\n\n @Input()\n get pageIndex(): number {\n return this._pageIndex;\n }\n set pageIndex(value: number) {\n if (value !== this._pageIndex) {\n this._pageIndex = value;\n }\n }\n\n @Input()\n get pageSizeOptions(): number {\n return this._pageSizeValue;\n }\n set pageSizeOptions(value: number) {\n if (value !== this._pageSizeValue) {\n this._pageSizeValue = value;\n this.pageIndex = 1;\n this.calculatePageTotal();\n }\n }\n\n @Output() pageIndexChange = new EventEmitter<number>();\n @ViewChild('dropdownTrigger', { static: false }) triggerRef!: ElementRef;\n\n ngOnInit(): void {\n if (this.pageSize?.length > 0) {\n this.pageSizeOptions = this.pageSize[0];\n }\n this.calculatePageTotal();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['pageSize']) {\n this.pageSizeOptions = this.pageSize?.length > 0 ? this.pageSize[0] : 10;\n }\n this.calculatePageTotal();\n }\n\n calculatePageTotal() {\n this.pageTotal = Math.ceil(this.totalItems / this.pageSizeOptions);\n if (this.pageIndex >= this.pageTotal) {\n this.pageIndex = this.pageTotal;\n }\n if (this.pageIndex < 1) {\n this.pageIndex = 1;\n }\n }\n\n onPageSizeChange(newSize: string) {\n const size = Number(newSize);\n if (!isNaN(size)) {\n this.pageSizeOptions = size;\n this.pageIndex = 1;\n this.pageSizeChange.emit(size);\n this.calculatePageTotal();\n }\n }\n\n dropdownStyleMap: { [key: string]: any } = {};\n\n toggleDropdownByType(npType: string) {\n Object.keys(this.isDropdownOpenMap).forEach((key) => {\n this.isDropdownOpenMap[key] = false;\n });\n\n this.isDropdownOpenMap[npType] = true;\n\n setTimeout(() => {\n const triggerEl = this.triggerRef?.nativeElement;\n const dropdownEl = document.querySelector(\n '.np-dropdown'\n ) as HTMLElement;\n\n if (triggerEl && dropdownEl) {\n const rect = triggerEl.getBoundingClientRect();\n const dropdownRect = dropdownEl.getBoundingClientRect();\n\n let top = rect.bottom;\n let left = rect.left;\n const width = rect.width;\n\n if (top + dropdownRect.height <= window.innerHeight) {\n this.dropdownStyleMap[npType] = {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n };\n return;\n }\n\n const topPos = rect.top - dropdownRect.height;\n if (topPos >= 0) {\n this.dropdownStyleMap[npType] = {\n top: `${topPos - 10}px`,\n left: `${left}px`,\n width: `${width}px`,\n };\n return;\n }\n\n // // doing right\n // const rightPos = rect.right;\n // if (rightPos + dropdownRect.width <= window.innerWidth) {\n // this.dropdownStyleMap[npType] = {\n // top: `${rect.top}px`,\n // left: `${rightPos}px`,\n // width: `${dropdownRect.width}px`,\n // };\n // return;\n // }\n\n // // doing left\n // const leftPos = rect.left - dropdownRect.width;\n // if (leftPos >= 0) {\n // this.dropdownStyleMap[npType] = {\n // top: `${rect.top}px`,\n // left: `${leftPos}px`,\n // width: `${dropdownRect.width}px`,\n // };\n // return;\n // }\n\n this.dropdownStyleMap[npType] = {\n top: `${rect.top - dropdownRect.height}px`,\n left: `${rect.left}px`,\n width: `${width}px`,\n };\n }\n });\n }\n\n onSelectPageSize(size: number) {\n this.isDropdownOpenMap[this.npType] = false;\n this.onPageSizeChange(size.toString());\n }\n\n getDisplayedPages(): (number | string)[] {\n const pages: (number | string)[] = [];\n const total = this.pageTotal;\n const current = this.pageIndex;\n\n if (total <= 7) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n pages.push(1, 2, 3);\n\n if (current > 3) {\n pages.push('...');\n }\n\n let start = Math.max(4, current - 1);\n let end = Math.min(total - 3, current + 1);\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (current < total - 3) {\n pages.push('...');\n }\n\n pages.push(total - 2, total - 1, total);\n\n return pages;\n }\n\n prevPage() {\n if (this.pageIndex > 1) {\n this.changePage(this.pageIndex - 1);\n }\n }\n\n nextPage() {\n if (this.pageIndex < this.pageTotal) {\n this.changePage(this.pageIndex + 1);\n }\n }\n\n changePage(newPage: number | string) {\n if (typeof newPage === 'number' && newPage !== this.pageIndex) {\n this.pageIndex = newPage;\n this.pageIndexChange.emit(this.pageIndex);\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n const clickedInside = this.triggerRef?.nativeElement?.contains(\n event.target\n );\n if (!clickedInside && this.npType) {\n this.isDropdownOpenMap[this.npType] = false;\n }\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n if (this.npType) {\n this.isDropdownOpenMap[this.npType] = false;\n }\n }\n}\n","<ng-container [ngSwitch]=\"npType\">\n <div *ngSwitchCase=\"'basic'\">\n <div\n class=\"flex items-center justify-between gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex items-center justify-between space-x-2 gap-3\">\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed w-[38px] flex items-center justify-center\"\n >\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n <i class=\"fa-solid fa-arrow-left me-1\" style=\"color: #475467;\"></i>\n </np-typography> -->\n </button>\n\n <div class=\"flex gap-[1px] mx-0\">\n <ng-container *ngFor=\"let page of getDisplayedPages()\">\n <button\n *ngIf=\"page !== '...'; else dots\"\n (click)=\"changePage(page)\"\n [class.bg-gray-200]=\"page === pageIndex\"\n class=\"px-3 py-2 text-gray-700 rounded-md hover:bg-gray-200 w-[40px] cursor-pointer\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(24, 34, 48, 1)\"\n >{{ page }}</np-typography\n >\n </button>\n\n <ng-template #dots>\n <span class=\"px-2\">...</span>\n </ng-template>\n </ng-container>\n </div>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed w-[38px] flex items-center justify-center\"\n >\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n <i class=\"fa-solid fa-arrow-right ms-1\" style=\"color: #475467;\"></i>\n </np-typography> -->\n </button>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md\"\n [ngStyle]=\"dropdownStyleMap[npType]\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'outlined'\">\n <div\n class=\"flex items-center gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div\n class=\"flex items-center flex-1 space-x-2\"\n [ngClass]=\"npReverse ? 'justify-end' : ''\"\n >\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n <i class=\"fa-solid fa-arrow-left me-1\" style=\"color: #475467;\"></i> Previous\n </np-typography> -->\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n </button>\n\n <div class=\"flex gap-[1px] mx-3\">\n <ng-container *ngFor=\"let page of getDisplayedPages()\">\n <button\n *ngIf=\"page !== '...'; else dots\"\n (click)=\"changePage(page)\"\n [class.bg-gray-200]=\"page === pageIndex\"\n class=\"px-[12px] py-[8px] text-gray-700 rounded-md hover:bg-gray-200 w-[40px] cursor-pointer\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(24, 34, 48, 1)\"\n >{{ page }}</np-typography\n >\n </button>\n\n <ng-template #dots>\n <span class=\"px-2\">...</span>\n </ng-template>\n </ng-container>\n </div>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"h-[36px] flex items-center justify-centercursor-pointer flex items-center justify-center disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n Next <i class=\"fa-solid fa-arrow-right ms-1\" style=\"color: #475467;\"></i>\n </np-typography> -->\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n </button>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] border border-gray-300 rounded-sm bg-white cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n [ngStyle]=\"dropdownStyleMap[npType]\"\n *ngIf=\"isDropdownOpenMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md overflow-auto\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'text'\">\n <div\n class=\"flex items-center gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex justify-between items-center flex-1\">\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n Page {{ pageIndex }} of {{ pageTotal }}\n </np-typography>\n\n <div class=\"flex gap-3\">\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">Previous</np-typography> -->\n </button>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"=cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">Next</np-typography> -->\n </button>\n </div>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] bg-transparent cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[npType]\"\n [ngStyle]=\"dropdownStyleMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md overflow-auto\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'simple'\">\n <div\n class=\"flex items-center gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex justify-between items-center flex-1\">\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">Previous</np-typography> -->\n </button>\n\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n Page {{ pageIndex }} of {{ pageTotal }}\n </np-typography>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">Next</np-typography> -->\n </button>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] bg-transparent cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[npType]\"\n [ngStyle]=\"dropdownStyleMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md overflow-auto\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'full'\">\n <div\n class=\"flex items-center gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div\n class=\"flex items-center w-full flex-1\"\n [ngClass]=\"npReverse ? 'justify-end' : ''\"\n >\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed w-[52px] h-[40px] border-y-1 border-s-1 border-[#D0D5DD] rounded-l-[4px]\"\n >\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\" class=\"flex items-center\">\n <i class=\"fa-solid fa-arrow-left me-1\" style=\"color: #475467;\"></i> Previous\n </np-typography> -->\n </button>\n\n <div class=\"flex\">\n <ng-container\n *ngFor=\"let page of getDisplayedPages(); let last = last\"\n >\n <button\n *ngIf=\"page !== '...'; else dots\"\n (click)=\"changePage(page)\"\n [class.bg-gray-200]=\"page === pageIndex\"\n [ngClass]=\"{\n 'border-y-1 border-s-1': !last,\n 'border-1': last,\n }\"\n class=\"px-3 py-2 hover:bg-gray-200 w-[40px] h-[40px] border-[#D0D5DD] cursor-pointer\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(24, 34, 48, 1)\"\n >\n {{ page }}\n </np-typography>\n </button>\n\n <ng-template #dots>\n <span\n class=\"px-3 py-2 w-[40px] h-[40px] border-y-1 border-s-1 border-[#D0D5DD] cursor-text\"\n >\n ...\n </span>\n </ng-template>\n </ng-container>\n </div>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed w-[52px] h-[40px] border-y-1 border-e-1 border-[#D0D5DD] rounded-r-[4px]\"\n >\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n Next <i class=\"fa-solid fa-arrow-right ms-1\" style=\"color: #475467;\"></i>\n </np-typography> -->\n </button>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] border border-gray-300 rounded-sm bg-white cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[npType]\"\n [ngStyle]=\"dropdownStyleMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md overflow-auto\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'np-scrollbar',\n imports: [CommonModule],\n templateUrl: './np-scrollbar.component.html',\n styleUrl: './np-scrollbar.component.scss',\n})\nexport class NpScrollbarComponent {\n @ViewChild('container', { static: true }) container!: ElementRef;\n // @Input() size: string ='sm' ;\n @Input() width?: string;\n @Input() height?: string;\n\n _ngContent: Element | null = null;\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n constructor(private renderer: Renderer2) {}\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n}\n","<div\n #container\n class=\"custom-scrollbar overflow-auto\"\n [ngStyle]=\"{ 'max-width': width, 'max-height': height }\"\n>\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, Renderer2 } from '@angular/core';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { NpAlertService } from '../../../services/np-alert.service';\n\n@Component({\n selector: 'np-alert',\n imports: [CommonModule, NpTypographyComponent],\n templateUrl: './np-alert.component.html',\n styleUrl: './np-alert.component.scss',\n})\nexport class NpAlertComponent {\n @Input() npType: 'notification' | 'toast' = 'notification';\n @Input() state: 'success' | 'info' | 'warning' | 'error' = 'info';\n @Input() description: string = '';\n @Input() title?: string;\n @Input() message?: string;\n @Input() autoHideDelay: number = 1000;\n @Input() autoHide: boolean = false;\n @Input() isFromService = false;\n\n isMessageVisible: boolean = false;\n opacity = 1;\n padding = '16px';\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private _alertService: NpAlertService\n ) { }\n\n ngOnInit() {\n this._alertService.alert$.subscribe((data) => {\n this.npType = data.npType ?? 'notification';\n this.state = data.state ?? 'info';\n this.title = data.title;\n this.description = data.description;\n this.message = data.message;\n this.opacity = 1;\n this.padding = '16px';\n setTimeout(() => this.startFadeOut(), this.autoHideDelay);\n });\n if (this.isFromService) {\n this.closeAlert();\n return;\n }\n if (this.autoHide) {\n setTimeout(() => this.startFadeOut(), this.autoHideDelay);\n }\n }\n\n startFadeOut() {\n let fadeDuration = 3000;\n let fadeInterval = 50;\n let step = fadeInterval / fadeDuration;\n\n let fadeEffect = setInterval(() => {\n if (this.opacity > 0) {\n // this.opacity -= step;\n this.opacity -= step * this.opacity;\n if (this.opacity <= 0.5) {\n this.opacity = 0;\n clearInterval(fadeEffect);\n this.removeSelf();\n }\n } else {\n clearInterval(fadeEffect);\n this.removeSelf();\n }\n }, fadeInterval);\n }\n\n closeAlert() {\n this.removeSelf();\n }\n\n removeSelf() {\n if (this.isFromService) {\n this.opacity = 0;\n this.padding = '0px';\n } else {\n this.renderer.removeChild(\n this.el.nativeElement.parentNode,\n this.el.nativeElement\n );\n }\n }\n\n showMessege() {\n this.isMessageVisible = !this.isMessageVisible;\n }\n\n getIcon(): string {\n switch (this.state) {\n case 'success':\n return 'fa-duotone fa-solid fa-circle-check';\n case 'info':\n return 'fa-duotone fa-solid fa-circle-info';\n case 'warning':\n return 'fa-duotone fa-solid fa-triangle-exclamation';\n case 'error':\n return 'fa-duotone fa-solid fa-circle-exclamation';\n default:\n return '';\n }\n }\n\n // getIconNotification(): string {\n // switch (this.state) {\n // case 'success':\n // return 'projects/neop-ui-lib/scss/images/success.png';\n // case 'warning':\n // return 'projects/neop-ui-lib/scss/images/warning.png';\n // case 'error':\n // return 'projects/neop-ui-lib/scss/images/error.png';\n // default:\n // return '';\n // }\n // }\n\n getIconNotification(): { icon: string; color: string } {\n switch (this.state) {\n case 'success':\n return { icon: 'fa-circle-check', color: '#12B76A' };\n case 'warning':\n return { icon: 'fa-circle-exclamation', color: '#F79009' };\n case 'error':\n return { icon: 'fa-circle-exclamation', color: '#F04438' };\n default:\n return { icon: '', color: '' };\n }\n }\n}","<ng-container>\n <div\n class=\"np-alert flex gap-3 items-start\"\n [ngClass]=\"npType\"\n [ngStyle]=\"{\n opacity: opacity,\n padding: padding,\n display: opacity == 0 ? 'none' : 'flex',\n }\"\n >\n <div\n class=\"icon-wrapper rounded-[10px]\"\n [ngClass]=\"state\"\n *ngIf=\"npType == 'toast'\"\n >\n <i [ngClass]=\"getIcon()\" class=\"p-[8px]\"></i>\n </div>\n <div\n class=\"icon-wrapper rounded-[10px]\"\n *ngIf=\"getIconNotification().icon && npType == 'notification'\"\n >\n <i\n class=\"glow fa-regular\"\n [ngClass]=\"getIconNotification().icon\"\n [ngStyle]=\"{ color: getIconNotification().color }\"\n >\n </i>\n </div>\n\n <div class=\"flex flex-col flex-1\">\n <div class=\"flex justify-between\" *ngIf=\"title\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\">{{\n title\n }}</np-typography>\n <button\n (click)=\"closeAlert()\"\n class=\"close-btn cursor-pointer opacity-50\"\n >\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"regular\">{{\n description\n }}</np-typography>\n <np-typography\n *ngIf=\"isMessageVisible\"\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n >\n {{ message }}\n </np-typography>\n\n <div class=\"flex gap-3 mt-2\" *ngIf=\"npType !== 'notification'\">\n <button (click)=\"closeAlert()\" class=\"dismiss cursor-pointer\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\"\n >Dismiss</np-typography\n >\n </button>\n <button\n *ngIf=\"message\"\n class=\"learn-more cursor-pointer\"\n (click)=\"showMessege()\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\"\n >Learn More</np-typography\n >\n </button>\n </div>\n </div>\n </div>\n</ng-container>\n","export enum ETypeNpBreadcrumb {\n BASIC = 'basic',\n SEPARATORS = 'separators',\n HIGHLIGHT = 'highlighted',\n}\n","export enum E_NP_BREADCRUMB {\n NAME = 'name',\n PARAM = 'param',\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { ETypeNpBreadcrumb } from '../../../enum/basic/breadcrumb.enum';\nimport { E_NP_BREADCRUMB } from '../../../enum/np-breadcrumb.enum';\n\ninterface INpBreadcrumb {\n label: string;\n url: string;\n}\n@Component({\n selector: 'np-breadcrumb',\n imports: [CommonModule],\n templateUrl: './np-breadcrumb.component.html',\n styleUrl: './np-breadcrumb.component.scss',\n})\nexport class NpBreadcrumbComponent implements OnInit, AfterViewInit {\n @Input() npType: string = ETypeNpBreadcrumb.BASIC;\n @Input() isBorder = true;\n @Input() iconBreakDown = 'fa-slash-forward';\n @Input() isBgLast = false;\n @Input() isGetFromUrl = false;\n @Input() isShowExpand = false;\n\n @Input() breadcrumbs: INpBreadcrumb[] | any = [];\n isExpanded = false;\n ETypeNpBreadcrumb = ETypeNpBreadcrumb;\n\n idBreadcrum = `${Math.floor(Math.random() * 100)}-${new Date()?.getTime()}`;\n constructor(\n private _Router: Router,\n private _ActivatedRoute: ActivatedRoute\n ) {}\n\n async ngOnInit() {\n this.getBreadcrumbs();\n this._Router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe(async () => {\n this.getBreadcrumbs();\n });\n }\n\n ngAfterViewInit(): void {\n const dotBreadcrum = document.getElementById(this.idBreadcrum);\n if(this.isShowExpand)\n {\n this.isExpanded = true;\n return;\n }\n if (dotBreadcrum) {\n dotBreadcrum.addEventListener('mouseover', () => {\n this.isExpanded = true;\n });\n dotBreadcrum.addEventListener('mouseleave', () => {\n this.isExpanded = false;\n });\n }\n }\n\n async getBreadcrumbs() {\n if (this.isGetFromUrl) {\n this.breadcrumbs = await this.createBreadcrumbs(\n this._ActivatedRoute.root\n );\n }\n }\n\n private async createBreadcrumbs(\n route: ActivatedRoute,\n url: string = '',\n breadcrumbs: any[] = []\n ): Promise<any[]> {\n const children: ActivatedRoute[] = route.children;\n if (!!children && children.length > 0) {\n for (const child of children) {\n const routeURL: string = child.snapshot.url\n .map((segment) => segment.path)\n .join('/');\n // .replace('#', '');\n if (routeURL !== '') {\n url += `/${routeURL}`;\n }\n const data: any = child.snapshot.data;\n if (\n data[E_NP_BREADCRUMB.NAME] &&\n !breadcrumbs?.some((x) => x?.url === url)\n ) {\n breadcrumbs.push({\n label: data[E_NP_BREADCRUMB.NAME],\n url,\n });\n }\n return await this.createBreadcrumbs(child, url, breadcrumbs);\n }\n }\n\n return breadcrumbs;\n }\n\n onRedirect(item: INpBreadcrumb | null) {\n if (!item) {\n this._Router.navigate(['/'], {\n relativeTo: this._ActivatedRoute,\n });\n return;\n }\n if (!item?.url) {\n return;\n }\n this._Router.navigate([item?.url], {\n relativeTo: this._ActivatedRoute,\n });\n }\n\n onExpand() {\n this.isExpanded = !this.isExpanded;\n }\n}\n","<div\n class=\"flex items-center gap-3 np-breadcrumb {{ npType }}\"\n [id]=\"idBreadcrum\"\n>\n <!-- [class.border-breadcrumb]=\"isBorder\" -->\n <i class=\"fa-light fa-house cursor-pointer\" (click)=\"onRedirect(null)\"></i>\n @for (item of breadcrumbs; track item; let index = $index; let first = $first;\n let last = $last) {\n <i class=\"fa-light {{ iconBreakDown }} text-[#D0D5DD]\"></i>\n @if (isExpanded) {\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: item, last: last, isBgLast: isBgLast }\n \"\n ></ng-container>\n } @else { @if (index === 1 && breadcrumbs.length > 2) {\n <div class=\"cursor-pointer\" (click)=\"onExpand()\">...</div>\n } @if (first || last) {\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: item, last: last, isBgLast: isBgLast }\n \"\n ></ng-container>\n } } }\n</div>\n\n<ng-template\n #contentTemplate\n let-item=\"item\"\n let-last=\"last\"\n let-isBgLast=\"isBgLast\"\n>\n <!-- [class.item-last]=\"last && isBgLast\" -->\n <div\n class=\"cursor-pointer text-[#475467]\"\n [class.item-last]=\"last && npType === ETypeNpBreadcrumb.HIGHLIGHT\"\n (click)=\"onRedirect(item)\"\n >\n {{ item?.label }}\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\n\n@Component({\n selector: 'np-progress-bar',\n imports: [NzProgressModule, CommonModule, NpTypographyComponent],\n templateUrl: './np-progress-bar.component.html',\n styleUrl: './np-progress-bar.component.scss',\n})\nexport class NpProgressBarComponent {\n @Input() npType: string = 'style-1';\n @Input() percent: number = 0;\n}\n","<nz-progress\n [nzPercent]=\"percent\"\n [nzShowInfo]=\"npType == 'style-2'\"\n [nzFormat]=\"customFormat\"\n nzStrokeColor=\"rgba(71, 84, 103, 1)\"\n></nz-progress>\n<np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n *ngIf=\"npType === 'style-3'\"\n class=\"flex justify-end\"\n>\n {{ percent }}%\n</np-typography>\n\n<ng-template #customFormat>\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\">\n {{ percent }}%\n </np-typography>\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'np-slider',\n standalone: true,\n imports: [FormsModule, NzSliderModule, NpTypographyComponent, CommonModule],\n templateUrl: './np-slider.component.html',\n styleUrl: './np-slider.component.scss',\n})\nexport class NpSliderComponent {\n private _values: number[] = [0, 50];\n\n @Input()\n get values(): number[] {\n return this._values;\n }\n set values(val: number[]) {\n this._values = val;\n this.valuesChange.emit(this._values);\n }\n\n @Input() min?: number = 0;\n @Input() max?: number = 100;\n @Input() step: number = 1;\n @Input() tooltipVisible: 'always' | 'never' | 'default' = 'default';\n @Input() isDisabled: boolean = false;\n @Input() isFloating: boolean = false;\n\n @Output() valuesChange = new EventEmitter<number[]>();\n\n}\n","<nz-slider\n nzRange\n [(ngModel)]=\"values\"\n [nzDisabled]=\"isDisabled\"\n [nzMin]=\"min\"\n [nzMax]=\"max\"\n [nzStep]=\"step\"\n [nzTipFormatter]=\"tooltipTemplate\"\n [nzTooltipVisible]=\"tooltipVisible\"\n >\n</nz-slider>\n\n<ng-template #tooltipTemplate let-value>\n <div [ngClass]=\"isFloating ? 'tooltip-class-floating' : 'tooltip-class'\">\n <np-typography npSize=\"sm\" npType=\"text\" npWeight=\"medium\" style=\"color: rgba(16, 24, 40, 1);\">\n {{value}} %\n </np-typography>\n </div>\n</ng-template>\n\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\n\n@Component({\n selector: 'np-loading-indicator',\n imports: [NzSpinModule, NzIconModule, CommonModule, NpTypographyComponent],\n templateUrl: './np-loading-indicator.component.html',\n styleUrl: './np-loading-indicator.component.scss',\n})\nexport class NpLoadingIndicatorComponent {\n @Input() npType: string = 'npType-1';\n @Input() npSize: string = 'sm';\n}\n","<div class=\"flex flex-col items-center gap-2\" [ngClass]=\"npSize\">\n <i\n *ngIf=\"npType === 'outlined'\"\n class=\"fa-duotone fa-solid fa-spinner-third fa-spin\"\n style=\"--fa-primary-color: #475467; --fa-secondary-color: #f2f4f7; --fa-secondary-opacity: 1;\">\n </i>\n <div *ngIf=\"npType === 'filled'\" class=\"solid-loader\"></div>\n\n <np-typography [npSize]=\"npSize\" npType=\"text\" npWeight=\"medium\" style=\"color: rgba(52, 64, 84, 1);\">\n Loading...\n </np-typography>\n</div>\n\n\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { FormControl, FormsModule } from '@angular/forms';\nimport { INpTableColumn } from '../../../interfaces/np-table.interface';\nimport { NpCheckboxComponent } from '../np-checkbox/np-checkbox.component';\nimport { debounceTime, Subscription } from 'rxjs';\nimport { NpPaginationComponent } from '../np-pagination/np-pagination.component';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { NpLoadingIndicatorComponent } from '../np-loading-indicator/np-loading-indicator.component';\nimport { NpButtonComponent } from '../np-button/np-button.component';\nimport { NpScrollbarComponent } from '../np-scrollbar/np-scrollbar.component';\nimport { NpInputFieldComponent } from '../np-input-field/np-input-field.component';\nimport { TemplateRef } from '@angular/core';\nimport { CdkDragDrop, CdkDragStart, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\n@Component({\n selector: 'np-table',\n imports: [\n CommonModule,\n NpCheckboxComponent,\n NpPaginationComponent,\n NpTypographyComponent,\n NpLoadingIndicatorComponent,\n NpButtonComponent,\n NpScrollbarComponent,\n NpInputFieldComponent,\n FormsModule,\n DragDropModule\n ],\n templateUrl: './np-table.component.html',\n styleUrl: './np-table.component.scss',\n})\nexport class NpTableComponent {\n constructor(private cdr: ChangeDetectorRef) { }\n\n selectAllSub?: Subscription;\n selectAllFc = new FormControl(false);\n isIndeterminateAll = false;\n\n currentPage = 1;\n _pageSize: number[] = [];\n currentPageSize = 10;\n paginationWidth = '100%';\n\n isAtStart = true;\n isAtEnd = true;\n\n _dataSource: any[] = [];\n\n sortKey: string | null = null;\n sortDirection: 'asc' | 'desc' | null = null;\n originalDataSource: any[] = [];\n\n activeFilterKey: string | null = null;\n searchKeyword: { [key: string]: string } = {};\n searchControls: { [key: string]: FormControl } = {};\n selectedFilters: { [key: string]: Set<any> } = {};\n\n syncColumns: boolean = false;\n syncRows: boolean = false;\n\n @ViewChildren('filterIcon') filterIcons!: QueryList<ElementRef>;\n dropdownPositionMap: { [key: string]: any } = {};\n\n @ViewChild('headerTable') headerTable!: ElementRef;\n @ViewChild('bodyTable') bodyTable!: ElementRef;\n @ViewChild('tableContainer') tableContainer!: ElementRef;\n @ViewChild('tableMiddle') tableMiddle!: ElementRef;\n @ViewChild('tableLeft') tableLeft!: ElementRef;\n @ViewChild('tableRight') tableRight!: ElementRef;\n\n private isSyncingLeftScroll = false;\n private isSyncingMiddleScroll = false;\n private isSyncingRightScroll = false;\n\n private scrollListeners: (() => void)[] = [];\n\n _columns: INpTableColumn[] = [];\n @Input()\n set columns(value: INpTableColumn[]) {\n this._columns = value;\n this._columns = this._columns?.map(col => {\n col.filterListAfterSearch = col.filterList;\n return col;\n });\n }\n get columns(): INpTableColumn[] {\n return this._columns;\n }\n\n @Input()\n set dataSource(value: any[]) {\n this._dataSource =\n value?.map((row: any) => {\n const selectFc = row?.selectFc ?? new FormControl(false);\n selectFc.valueChanges.subscribe((checked: boolean | null) => {\n this.rowChecked.emit({ row, checked: !!checked });\n });\n return {\n ...row,\n selectFc,\n };\n }) || [];\n\n this.originalDataSource = [...this._dataSource];\n\n this.currentPage = 1;\n this.selectAllFc.setValue(false, { emitEvent: false });\n this.isIndeterminateAll = false;\n\n if (this.npSelectableType === 'checkbox') {\n this.bindSelectAllListener();\n }\n\n if (this.npSelectableType === 'radio') {\n this._dataSource.forEach((row) => {\n row.selectFc.valueChanges.subscribe((val: boolean) => {\n if (val) {\n this._dataSource.forEach((r) => {\n if (r !== row) {\n r.selectFc.setValue(false, { emitEvent: false });\n }\n });\n }\n });\n });\n }\n\n if (this._columns) {\n this._columns?.forEach(col => {\n if (!col?.filterList || col.filterList.length === 0) {\n const rawValues = this._dataSource?.map(x => x?.[col?.key]).filter(y => y !== null && y !== undefined && y !== '');\n\n const uniqueValues = Array.from(new Set(rawValues));\n\n col.filterList = uniqueValues;\n col.filterListAfterSearch = uniqueValues;\n }\n })\n }\n\n this.syncRowHeight();\n }\n\n @Input()\n set pageSize(value: number[]) {\n this._pageSize = value;\n this.currentPageSize = this._pageSize[0];\n }\n get pageSize(): number[] {\n return this._pageSize;\n }\n\n @Input() npSelectableType: 'checkbox' | 'radio' | null = null;\n @Input() npSortable = false;\n @Input() npFilterable = false;\n @Input() npDeleteable = false;\n @Input() npShowPagination = true;\n @Input() npPaginationType: 'basic' | 'outlined' | 'text' | 'simple' | 'full' =\n 'basic';\n @Input() state: 'error' | 'loading' | 'normal' = 'normal';\n @Input() npClassName: string = '';\n @Input() npLeftClass: string = ''; // npClassName for left fixed table\n @Input() npRightClass: string = ''; // npClassName for right fixed table\n @Input() npFixedColumnRange: [number, number] | null = null;\n @Input() npScrollWidth: string = '';\n @Input() npScrollHeight: string = '';\n @Input() npReverse: boolean = false;\n @Input() npBordered = false;\n\n @Input() npCustomRowTemplate?: TemplateRef<any>;\n @Input() npCustomRowCondition?: (row: any, index: number) => boolean;\n @Input() npDraggable: boolean = false;\n\n @Output() deleteSelectedRows = new EventEmitter<any[]>();\n @Output() sortChange = new EventEmitter<{\n key: string;\n direction: 'asc' | 'desc' | null;\n }>();\n @Output() filterChange = new EventEmitter<{\n [key: string]: string[];\n }>();\n @Output() rowChecked = new EventEmitter<{ row: any; checked: boolean }>();\n\n @Output() npRowDrop = new EventEmitter<any[]>();\n\n ngAfterViewInit() {\n if (this.npSelectableType === 'checkbox') {\n this.bindSelectAllListener();\n }\n this.updatePaginationWidth();\n this.cdr.detectChanges();\n this.syncRowHeight();\n this.setupScrollSync();\n }\n\n ngOnInit(): void {\n const [start, end] = this.npFixedColumnRange || [\n 0,\n this.columns.length - 1,\n ];\n this.isAtStart = start === 0;\n this.isAtEnd = end === this.columns.length - 1;\n }\n\n get fixedLeftColumns(): INpTableColumn[] {\n if (!this.npFixedColumnRange) return [];\n return this.columns.slice(0, this.npFixedColumnRange[0]);\n }\n\n get scrollableColumns(): INpTableColumn[] {\n if (!this.npFixedColumnRange) return this.columns;\n return this.columns.slice(\n this.npFixedColumnRange[0],\n this.npFixedColumnRange[1] + 1\n );\n }\n\n get fixedRightColumns(): INpTableColumn[] {\n if (!this.npFixedColumnRange) return [];\n return this.columns.slice(this.npFixedColumnRange[1] + 1);\n }\n\n private bindSelectAllListener() {\n this.selectAllSub?.unsubscribe();\n\n this.selectAllSub = this.selectAllFc.valueChanges.subscribe(\n (checked: boolean | null) => {\n this._dataSource?.forEach((row) => {\n row.selectFc.patchValue(checked, { emitEvent: false });\n this.rowChecked.emit({ row, checked: !!checked });\n });\n this.isIndeterminateAll = false;\n }\n );\n }\n\n get filteredData(): any[] {\n return this._dataSource.filter((row) => {\n for (const colKey in this.selectedFilters) {\n const selectedSet = this.selectedFilters[colKey];\n if (!selectedSet || selectedSet.size === 0) continue;\n\n const col = this.columns.find((c) => c.key === colKey);\n if (col && col.isFilterAPI) {\n continue;\n }\n const rowValue = row[colKey];\n\n const match = Array.from(selectedSet).some((filterValue) => {\n if (col?.filterFn) {\n return col.filterFn(rowValue, filterValue);\n }\n return rowValue === filterValue;\n });\n\n if (!match) return false;\n }\n\n return true;\n });\n }\n\n get pagedData() {\n const filtered = this.filteredData;\n\n if (this.npShowPagination) {\n const start = (this.currentPage - 1) * this.currentPageSize;\n const end = start + this.currentPageSize;\n return filtered.slice(start, end);\n } else {\n return filtered;\n }\n }\n\n onPageChange(newPage: number) {\n this.currentPage = newPage;\n }\n\n onPageSizeChange(newSize: number) {\n this.currentPageSize = newSize;\n this.currentPage = 1;\n }\n\n onSortColumn(column: INpTableColumn) {\n if (!column?.key) return;\n\n const modes = column.sortDirection || ['asc', 'desc', ''];\n\n const current = this.sortKey === column.key ? this.sortDirection || '' : '';\n const currentIndex = modes.indexOf(current as any);\n const nextIndex = (currentIndex + 1) % modes.length;\n const nextDirection = modes[nextIndex];\n\n this.sortKey = column.key;\n this.sortDirection = nextDirection === '' ? null : nextDirection;\n\n this.sortChange.emit({\n key: column.key,\n direction: this.sortDirection,\n });\n\n if (column.isSortAPI) {\n return;\n }\n\n if (!this.sortDirection) {\n this._dataSource = [...this.originalDataSource];\n return;\n }\n\n const sortFn = column.sortFn;\n\n this._dataSource.sort((a, b) => {\n if (sortFn) {\n const result = sortFn(a, b);\n return this.sortDirection === 'asc' ? result : -result;\n }\n\n const aValue = a[column.key!];\n const bValue = b[column.key!];\n\n const aNum = parseFloat(aValue);\n const bNum = parseFloat(bValue);\n const isNumber = !isNaN(aNum) && !isNaN(bNum);\n\n if (isNumber) {\n return this.sortDirection === 'asc' ? aNum - bNum : bNum - aNum;\n }\n\n return this.sortDirection === 'asc'\n ? String(aValue).localeCompare(String(bValue))\n : String(bValue).localeCompare(String(aValue));\n });\n\n this.currentPage = 1;\n }\n\n onChangeSelectColumn($event: boolean) {\n if (this.npSelectableType !== 'checkbox') return;\n\n const allSelected = this._dataSource?.every(\n (child) => child.selectFc?.value\n );\n const someSelected = this._dataSource?.some(\n (child) => child.selectFc?.value\n );\n this.isIndeterminateAll = someSelected && !allSelected;\n this.selectAllFc?.patchValue(someSelected, { emitEvent: false });\n }\n\n ngOnDestroy() {\n this.selectAllSub?.unsubscribe();\n this.scrollListeners.forEach(remove => remove());\n this.scrollListeners = [];\n }\n\n get selectedCount(): number {\n return this._dataSource.filter((row) => row.selectFc?.value).length;\n }\n\n onDeleteSelected() {\n const selectedRows = this._dataSource.filter((row) => row.selectFc?.value);\n\n this.deleteSelectedRows.emit(selectedRows);\n\n this._dataSource = this._dataSource.filter((row) => !row.selectFc?.value);\n\n this.currentPage = 1;\n\n this.selectAllFc.setValue(false, { emitEvent: false });\n this.isIndeterminateAll = false;\n }\n\n onRefresh() { }\n\n onContactSupport() { }\n\n toggleFilter(key: string) {\n this.activeFilterKey = this.activeFilterKey === key ? null : key;\n\n if (!this.searchControls[key]) {\n this.searchControls[key] = new FormControl('');\n\n this.searchControls[key].valueChanges.subscribe((val: string) => {\n this.searchKeyword[key] = val?.toLowerCase() || '';\n\n const column = this._columns?.find(x => x?.key === key);\n if (column && column.filterList) {\n column.filterListAfterSearch = column.filterList.filter(colValue =>\n String(colValue || '').toLowerCase().includes(this.searchKeyword[key])\n );\n }\n });\n }\n\n setTimeout(() => {\n const icon = this.filterIcons?.find(\n (_, idx) => this.columns[idx]?.key === key\n );\n if (icon) {\n const rect = icon.nativeElement.getBoundingClientRect();\n const dropdownWidth = 250;\n const left = rect.left + rect.width / 2 - dropdownWidth / 2;\n\n this.dropdownPositionMap[key] = {\n top: `${rect.bottom + 4}px`,\n left: `${left}px`,\n };\n }\n }, 0);\n }\n\n onClearSearch(colKey: string) {\n this.searchControls[colKey]?.setValue('');\n }\n\n shouldShowFilterCheck(colKey: string): boolean {\n return (\n this.selectedFilters[colKey]?.size > 0 && this.activeFilterKey !== colKey\n );\n }\n\n getDistinctFilteredValues(colKey: string): any[] {\n const keyword = this.searchKeyword[colKey]?.toLowerCase() || '';\n const uniqueLabels = new Set<string>();\n\n this._dataSource.forEach((row) => {\n const value = row[colKey];\n\n if (Array.isArray(value)) {\n value.forEach((item) => {\n const label = (item?.label || '').toString();\n if (label.toLowerCase().includes(keyword)) {\n uniqueLabels.add(label);\n }\n });\n } else {\n const label = value?.toString() || '';\n if (label.toLowerCase().includes(keyword)) {\n uniqueLabels.add(label);\n }\n }\n });\n\n return Array.from(uniqueLabels).sort((a, b) => a.localeCompare(b));\n }\n\n getFilteredColumnValues(colKey: string): any[] {\n const keyword = this.searchKeyword[colKey]?.toLowerCase() || '';\n return this._dataSource.filter((row) =>\n String(row[colKey]).toLowerCase().includes(keyword)\n );\n }\n\n isChecked(colKey: string, value: any): FormControl {\n const isSelected = this.selectedFilters[colKey]?.has(value) ?? false;\n return new FormControl(isSelected);\n }\n\n onToggleFilter(colKey: string, value: any, checked: boolean) {\n if (!this.selectedFilters[colKey]) {\n this.selectedFilters[colKey] = new Set<any>();\n }\n\n if (checked) {\n this.selectedFilters[colKey].add(value);\n } else {\n this.selectedFilters[colKey].delete(value);\n }\n\n this.currentPage = 1;\n\n const col = this.columns.find((c) => c.key === colKey);\n if (col?.isFilterAPI) {\n const filterObject: {\n [key: string]: string[];\n } = {};\n for (const key in this.selectedFilters) {\n filterObject[key] = Array.from(this.selectedFilters[key]);\n }\n this.filterChange.emit(filterObject);\n }\n\n if (this.activeFilterKey && this.activeFilterKey !== colKey) {\n const currentControl = this.searchControls[this.activeFilterKey];\n const value = currentControl?.value || '';\n currentControl?.setValue(value);\n }\n }\n\n onClearFilter(colKey: string) {\n this.selectedFilters[colKey] = new Set<any>();\n this.searchControls[colKey]?.setValue('');\n this.currentPage = 1;\n if (this.activeFilterKey === colKey) {\n this.activeFilterKey = null;\n }\n }\n\n onRowDrop(event: CdkDragDrop<any[]>) {\n moveItemInArray(this._dataSource, event.previousIndex, event.currentIndex);\n\n this.originalDataSource = [...this._dataSource];\n\n this.npRowDrop.emit(this._dataSource);\n }\n\n onDragStarted(event: CdkDragStart): void {\n const tbody = event.source.dropContainer.element.nativeElement;\n const table = tbody.closest('table');\n const sourceRow = event.source.element.nativeElement as HTMLTableRowElement;\n const root = sourceRow.closest('np-table') || document;\n\n if (!table) {\n return;\n }\n\n const previewDrag = document.querySelector('.cdk-drag-preview') as HTMLElement;\n if (!previewDrag) return;\n\n const isSplitTable = root.querySelector('.fixed-left') !== null || root.querySelector('.fixed-right') !== null;\n\n if (isSplitTable) {\n const fixCellSize = (cell: Element, th: Element) => {\n const el = cell as HTMLElement;\n const exactWidth = th.getBoundingClientRect().width;\n\n el.style.width = `${exactWidth}px`;\n el.style.minWidth = `${exactWidth}px`;\n el.style.maxWidth = `${exactWidth}px`;\n el.style.boxSizing = 'border-box';\n el.style.backgroundColor = 'white';\n el.style.borderBottom = 'none';\n\n el.style.whiteSpace = 'nowrap';\n el.style.overflow = 'hidden';\n el.style.textOverflow = 'ellipsis';\n };\n\n const previewTr = previewDrag.querySelector('tr') || previewDrag;\n\n const tableLeft = root.querySelector('.fixed-left');\n const tableMiddle = root.querySelector('.scrollable');\n const tableRight = root.querySelector('.fixed-right');\n\n const rowIndex = Array.from(sourceRow.parentElement!.children).indexOf(sourceRow);\n\n const thLeft = tableLeft ? Array.from(tableLeft.querySelectorAll('thead th')) : [];\n const thMiddle = tableMiddle ? Array.from(tableMiddle.querySelectorAll('thead th')) : [];\n const thRight = tableRight ? Array.from(tableRight.querySelectorAll('thead th')) : [];\n\n const existingCells = Array.from(previewTr.children);\n existingCells.forEach((cell, i) => {\n if (thLeft[i]) fixCellSize(cell, thLeft[i]);\n });\n\n if (tableMiddle) {\n const middleRow = tableMiddle.querySelector(`tbody tr:nth-child(${rowIndex + 1})`);\n if (middleRow) {\n Array.from(middleRow.children).forEach((cell, i) => {\n const clone = cell.cloneNode(true) as HTMLElement;\n if (thMiddle[i]) fixCellSize(clone, thMiddle[i]);\n previewTr.appendChild(clone);\n });\n }\n }\n\n if (tableRight) {\n const rightRow = tableRight.querySelector(`tbody tr:nth-child(${rowIndex + 1})`);\n if (rightRow) {\n Array.from(rightRow.children).forEach((cell, i) => {\n const clone = cell.cloneNode(true) as HTMLElement;\n if (thRight[i]) fixCellSize(clone, thRight[i]);\n previewTr.appendChild(clone);\n });\n }\n }\n\n previewDrag.style.width = 'max-content';\n } else {\n const headers = table.querySelectorAll('thead th');\n\n setTimeout(() => {\n const previewCells = previewDrag.querySelectorAll('td, th');\n\n headers.forEach((header, index) => {\n if (previewCells[index]) {\n const exactWidth = header.getBoundingClientRect().width;\n const cell = previewCells[index] as HTMLElement;\n\n cell.style.width = `${exactWidth}px`;\n cell.style.minWidth = `${exactWidth}px`;\n cell.style.maxWidth = `${exactWidth}px`;\n cell.style.boxSizing = 'border-box';\n cell.style.padding = '12px';\n }\n });\n });\n }\n }\n\n private setupScrollSync() {\n setTimeout(() => {\n if (this.npFixedColumnRange && this.npScrollHeight) {\n const left = this.tableLeft?.nativeElement;\n const middle = this.tableMiddle?.nativeElement;\n const right = this.tableRight?.nativeElement;\n\n if (left) {\n const listener = () => {\n if (!this.isSyncingLeftScroll) {\n this.isSyncingMiddleScroll = true;\n this.isSyncingRightScroll = true;\n if (middle) middle.scrollTop = left.scrollTop;\n if (right) right.scrollTop = left.scrollTop;\n }\n this.isSyncingLeftScroll = false;\n };\n left.addEventListener('scroll', listener);\n this.scrollListeners.push(() => left.removeEventListener('scroll', listener));\n }\n\n if (middle) {\n const listener = () => {\n if (!this.isSyncingMiddleScroll) {\n this.isSyncingLeftScroll = true;\n this.isSyncingRightScroll = true;\n if (left) left.scrollTop = middle.scrollTop;\n if (right) right.scrollTop = middle.scrollTop;\n }\n this.isSyncingMiddleScroll = false;\n };\n middle.addEventListener('scroll', listener);\n this.scrollListeners.push(() => middle.removeEventListener('scroll', listener));\n }\n\n if (right) {\n const listener = () => {\n if (!this.isSyncingRightScroll) {\n this.isSyncingLeftScroll = true;\n this.isSyncingMiddleScroll = true;\n if (left) left.scrollTop = right.scrollTop;\n if (middle) middle.scrollTop = right.scrollTop;\n }\n this.isSyncingRightScroll = false;\n };\n right.addEventListener('scroll', listener);\n this.scrollListeners.push(() => right.removeEventListener('scroll', listener));\n }\n }\n }, 0);\n }\n\n private updatePaginationWidth() {\n let totalWidth = 0;\n if (!this.isAtStart) {\n const leftTable = this.tableContainer?.nativeElement?.querySelector('.fixed-left');\n if (leftTable) {\n totalWidth += leftTable.offsetWidth;\n }\n }\n\n const middleDiv = this.tableMiddle?.nativeElement;\n if (middleDiv) {\n totalWidth += middleDiv.offsetWidth;\n }\n\n if (!this.isAtEnd) {\n const rightTable = this.tableContainer?.nativeElement?.querySelector('.fixed-right');\n if (rightTable) {\n totalWidth += rightTable.offsetWidth;\n }\n }\n\n if (totalWidth > 0) {\n this.paginationWidth = `${totalWidth}px`;\n this.cdr.detectChanges();\n }\n }\n\n private syncRowHeight() {\n if (!this.tableContainer) return;\n\n const leftHeaders = this.tableContainer.nativeElement.querySelectorAll('.fixed-left thead tr');\n const middleHeaders = this.tableContainer.nativeElement.querySelectorAll('.scrollable thead tr');\n const rightHeaders = this.tableContainer.nativeElement.querySelectorAll('.fixed-right thead tr');\n\n const leftRows = this.tableContainer.nativeElement.querySelectorAll('.fixed-left tbody tr');\n const middleRows = this.tableContainer.nativeElement.querySelectorAll('.scrollable tbody tr');\n const rightRows = this.tableContainer.nativeElement.querySelectorAll('.fixed-right tbody tr');\n\n const headerRowCount = Math.max(leftHeaders.length, middleHeaders.length, rightHeaders.length);\n const bodyRowCount = Math.max(leftRows.length, middleRows.length, rightRows.length);\n\n for (let i = 0; i < headerRowCount; i++) {\n const leftHeader = leftHeaders[i] as HTMLElement;\n const middleHeader = middleHeaders[i] as HTMLElement;\n const rightHeader = rightHeaders[i] as HTMLElement;\n\n const maxHeight = Math.max(\n leftHeader?.offsetHeight || 0,\n middleHeader?.offsetHeight || 0,\n rightHeader?.offsetHeight || 0\n );\n\n if (leftHeader) leftHeader.style.height = `${maxHeight}px`;\n if (middleHeader) middleHeader.style.height = `${maxHeight}px`;\n if (rightHeader) rightHeader.style.height = `${maxHeight}px`;\n }\n\n for (let i = 0; i < bodyRowCount; i++) {\n const leftRow = leftRows[i] as HTMLElement;\n const middleRow = middleRows[i] as HTMLElement;\n const rightRow = rightRows[i] as HTMLElement;\n\n const maxHeight = Math.max(\n leftRow?.offsetHeight || 0,\n middleRow?.offsetHeight || 0,\n rightRow?.offsetHeight || 0\n );\n\n if (leftRow) leftRow.style.height = `${maxHeight}px`;\n if (middleRow) middleRow.style.height = `${maxHeight}px`;\n if (rightRow) rightRow.style.height = `${maxHeight}px`;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent) {\n const clickedInside = this.filterIcons?.some((el) =>\n el.nativeElement.contains(event.target)\n );\n\n const dropdownClicked = Object.keys(this.dropdownPositionMap).some(\n (key) => {\n const el = document.querySelector(`.filter-dropdown`);\n return el?.contains(event.target as Node);\n }\n );\n\n if (!clickedInside && !dropdownClicked) {\n this.activeFilterKey = null;\n }\n }\n @HostListener('window:scroll')\n onScrollCloseFilter() {\n this.activeFilterKey = null;\n }\n @HostListener('window:resize')\n onResize() {\n this.updatePaginationWidth();\n this.syncRowHeight();\n }\n}\n","@if (state !== \"error\") {\n @if (npFixedColumnRange == null) {\n <div\n class=\"np-table w-full relative overflow-y-auto\"\n [ngClass]=\"npScrollHeight ? 'rounded-l-xl rounded-r-sm' : 'rounded-xl'\"\n [style.height]=\"npScrollHeight\"\n style=\"overflow-x: hidden\"\n >\n <table class=\"w-full mx-auto {{ npClassName }}\">\n <thead\n class=\"sticky top-0 bg-white z-99\"\n [ngClass]=\"{\n 'np-table-shadow':\n npScrollHeight.length > 0 && npScrollHeight !== '0px',\n }\"\n >\n <tr\n *ngIf=\"selectedCount > 0 && npDeleteable\"\n style=\"background-color: rgba(234, 236, 240, 1)\"\n >\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"px-4 py-2\"\n >\n <div class=\"flex justify-between items-center\">\n <div class=\"text-sm font-medium text-gray-700\">\n {{ selectedCount }} selected\n </div>\n <np-button\n npType=\"secondary\"\n npSize=\"sm\"\n (click)=\"onDeleteSelected()\"\n >Delete</np-button\n >\n </div>\n </td>\n </tr>\n\n <tr>\n <th\n *ngIf=\"\n npDraggable && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200\"\n ></th>\n\n <th\n class=\"select-column\"\n *ngIf=\"npSelectableType !== null && state !== 'loading'\"\n >\n <np-checkbox\n *ngIf=\"npSelectableType === 'checkbox'\"\n npType=\"checkbox\"\n size=\"sm\"\n [input]=\"selectAllFc\"\n [isIndeterminate]=\"isIndeterminateAll\"\n ></np-checkbox>\n </th>\n\n <ng-container *ngFor=\"let col of columns\">\n <th\n [class.border-r]=\"npBordered && state !== 'loading'\"\n #middleHeader\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @if (state === \"loading\") {\n <tr>\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"h-[400px] w-full\"\n >\n <np-loading-indicator\n npSize=\"md\"\n npType=\"outlined\"\n ></np-loading-indicator>\n </td>\n </tr>\n } @else if (_dataSource.length > 0) {\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n (cdkDragStarted)=\"onDragStarted($event)\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"px-4 py-3 font-medium text-gray-900 border-gray-200\"\n [class.border-r]=\"npBordered\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n npCustomRowTemplate || null;\n context: { $implicit: row, index: i }\n \"\n ></ng-container>\n </td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n <td\n *ngIf=\"npDraggable\"\n class=\"text-center text-gray-400 border-gray-200\"\n cdkDragHandle\n >\n <i\n class=\"fa-solid fa-grip-dots-vertical cursor-move active:cursor-grabbing\"\n ></i>\n </td>\n\n <td class=\"select-column\" *ngIf=\"npSelectableType !== null\">\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"row.selectFc\"\n (valueChange)=\"onChangeSelectColumn($event)\"\n ></np-checkbox>\n </td>\n\n @for (col of columns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n <tr *ngIf=\"npShowPagination\">\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n style=\"padding: 12px 0px !important\"\n >\n <div class=\"w-full px-3\">\n <np-pagination\n [npType]=\"npPaginationType\"\n [totalItems]=\"filteredData.length\"\n [(pageIndex)]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"currentPageSize\"\n [npReverse]=\"npReverse\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></np-pagination>\n </div>\n </td>\n </tr>\n } @else {\n <tr>\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"h-[400px]\"\n >\n <div\n class=\"flex flex-col gap-4 h-full items-center justify-center\"\n >\n <i\n class=\"fa-regular fa-file-circle-xmark fa-2xl\"\n style=\"color: rgba(208, 213, 221, 1)\"\n ></i>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n style=\"color: rgba(208, 213, 221, 1)\"\n >\n No data\n </np-typography>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n @if (npFixedColumnRange != null && npScrollHeight === \"\") {\n <div class=\"flex flex-col w-full\">\n <div\n *ngIf=\"selectedCount > 0 && npDeleteable\"\n class=\"px-4 py-2 flex justify-between rounded-t-xl items-center np-table\"\n style=\"background-color: rgba(234, 236, 240, 1)\"\n >\n <div class=\"text-sm font-medium text-gray-700\">\n {{ selectedCount }} selected\n </div>\n <np-button npType=\"secondary\" npSize=\"sm\" (click)=\"onDeleteSelected()\"\n >Delete</np-button\n >\n </div>\n <div #tableContainer class=\"flex w-full\">\n <table\n *ngIf=\"!isAtStart || npDraggable || npSelectableType !== null\"\n class=\"np-table fixed-left z-10 {{ npLeftClass }}\"\n [ngClass]=\"{\n 'rounded-l-xl': selectedCount <= 0 || !npDeleteable,\n }\"\n >\n <thead class=\"contents\">\n <tr>\n <th\n *ngIf=\"\n npDraggable && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200\"\n ></th>\n\n <th\n class=\"select-column\"\n *ngIf=\"\n npSelectableType !== null &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n >\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"selectAllFc\"\n [isIndeterminate]=\"isIndeterminateAll\"\n ></np-checkbox>\n </th>\n\n <ng-container *ngFor=\"let col of fixedLeftColumns\">\n <th\n [class.border-r]=\"\n npBordered && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n (cdkDragStarted)=\"onDragStarted($event)\"\n #leftRow\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"\n fixedLeftColumns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"px-4 py-3 font-medium text-gray-900 border-gray-200\"\n [class.border-r]=\"npBordered\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n npCustomRowTemplate || null;\n context: { $implicit: row, index: i }\n \"\n ></ng-container>\n </td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\" #leftRow>\n <td\n *ngIf=\"npDraggable\"\n class=\"text-center text-gray-400 border-gray-200\"\n cdkDragHandle\n >\n <i\n class=\"fa-solid fa-grip-dots-vertical cursor-move active:cursor-grabbing\"\n ></i>\n </td>\n\n <td class=\"select-column\" *ngIf=\"npSelectableType !== null\">\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"row.selectFc\"\n (valueChange)=\"onChangeSelectColumn($event)\"\n ></np-checkbox>\n </td>\n\n @for (col of fixedLeftColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n\n <div\n class=\"scrollable-wrapper mb-[-12px] grow overflow-x-auto\"\n [style.max-width]=\"npScrollWidth\"\n #tableMiddle\n [ngClass]=\"{\n 'rounded-l-xl border-l-midtable':\n isAtStart && !npDraggable && npSelectableType === null,\n 'rounded-r-xl border-r-midtable': isAtEnd,\n }\"\n >\n <table\n class=\"np-table scrollable min-w-fit w-full\"\n style=\"border-left: none; border-right: none\"\n >\n <thead>\n <tr>\n <ng-container *ngFor=\"let col of scrollableColumns\">\n <th\n [class.border-r]=\"\n npBordered &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n (cdkDragStarted)=\"onDragStarted($event)\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"scrollableColumns.length\"\n class=\"px-4 py-3 border-gray-200\"\n [class.border-r]=\"npBordered\"\n ></td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n @for (col of scrollableColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <table\n *ngIf=\"!isAtEnd\"\n class=\"np-table rounded-r-xl fixed-right z-10 {{ npLeftClass }}\"\n >\n <thead>\n <tr>\n @for (col of fixedRightColumns; track col) {\n <th\n [class.border-r]=\"\n npBordered && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n }\n </tr>\n </thead>\n\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n (cdkDragStarted)=\"onDragStarted($event)\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"fixedRightColumns.length\"\n class=\"px-4 py-3 border-gray-200\"\n [class.border-r]=\"npBordered\"\n ></td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n @for (col of fixedRightColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"mt-3 w-full\"\n *ngIf=\"npShowPagination\"\n [style.width]=\"paginationWidth\"\n >\n <np-pagination\n [npType]=\"npPaginationType\"\n [totalItems]=\"filteredData.length\"\n [(pageIndex)]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"currentPageSize\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></np-pagination>\n </div>\n </div>\n }\n @if (npFixedColumnRange != null && npScrollHeight != \"\") {\n <div class=\"flex flex-col\">\n <div\n *ngIf=\"selectedCount > 0 && npDeleteable\"\n class=\"px-4 py-2 flex justify-between rounded-t-xl items-center np-table\"\n style=\"background-color: rgba(234, 236, 240, 1)\"\n >\n <div class=\"text-sm font-medium text-gray-700\">\n {{ selectedCount }} selected\n </div>\n <np-button npType=\"secondary\" npSize=\"sm\" (click)=\"onDeleteSelected()\"\n >Delete</np-button\n >\n </div>\n <div\n #tableContainer\n class=\"flex w-full relative\"\n [style.max-height]=\"npScrollHeight\"\n >\n <div\n #tableLeft\n *ngIf=\"!isAtStart || npDraggable || npSelectableType !== null\"\n [ngClass]=\"{\n 'rounded-l-xl': selectedCount <= 0 || !npDeleteable,\n }\"\n class=\"no-display-scrollbar np-table overflow-y-auto overflow-x-hidden relative mb-[12px]\"\n [style.max-height]=\"npScrollHeight\"\n style=\"border-right: none\"\n >\n <table class=\"rounded-l-xl fixed-left z-10 {{ npLeftClass }}\">\n <thead class=\"sticky-header\">\n <tr>\n <th\n *ngIf=\"\n npDraggable && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200\"\n ></th>\n\n <th\n class=\"select-column\"\n *ngIf=\"\n npSelectableType !== null &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n >\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"selectAllFc\"\n [isIndeterminate]=\"isIndeterminateAll\"\n ></np-checkbox>\n </th>\n <ng-container *ngFor=\"let col of fixedLeftColumns\">\n <th\n [class.border-r]=\"\n npBordered &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n (cdkDragStarted)=\"onDragStarted($event)\"\n #leftRow\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"\n fixedLeftColumns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"px-4 py-3 font-medium text-gray-900 border-gray-200\"\n [class.border-r]=\"npBordered\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n npCustomRowTemplate || null;\n context: { $implicit: row, index: i }\n \"\n ></ng-container>\n </td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\" #leftRow>\n <td\n *ngIf=\"npDraggable\"\n class=\"text-center text-gray-400 border-gray-200\"\n cdkDragHandle\n >\n <i\n class=\"fa-solid fa-grip-dots-vertical cursor-move active:cursor-grabbing\"\n ></i>\n </td>\n\n <td class=\"select-column\" *ngIf=\"npSelectableType !== null\">\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"row.selectFc\"\n (valueChange)=\"onChangeSelectColumn($event)\"\n ></np-checkbox>\n </td>\n @for (col of fixedLeftColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"scrollable-wrapper no-display-scrollbar np-table grow overflow-auto sticky-header\"\n [style.max-width]=\"npScrollWidth\"\n [style.max-height]=\"npScrollHeight\"\n #tableMiddle\n [ngClass]=\"{\n 'rounded-l-xl border-l-midtable':\n isAtStart && !npDraggable && npSelectableType === null,\n 'rounded-r-xl border-r-midtable': isAtEnd,\n }\"\n [ngStyle]=\"{\n 'border-right': isAtEnd ? '' : 'none',\n }\"\n >\n <table\n class=\"scrollable min-w-fit w-full\"\n style=\"border-left: none; border-right: none\"\n >\n <thead class=\"sticky-header\">\n <tr>\n <ng-container *ngFor=\"let col of scrollableColumns\">\n <th\n [class.border-r]=\"\n npBordered &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n (cdkDragStarted)=\"onDragStarted($event)\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"scrollableColumns.length\"\n class=\"px-4 py-3 border-gray-200\"\n [class.border-r]=\"npBordered\"\n ></td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n @for (col of scrollableColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <div\n #tableRight\n *ngIf=\"!isAtEnd\"\n class=\"overflow-y-auto np-table rounded-r-xl overflow-x-hidden relative mb-[12px]\"\n [style.max-height]=\"npScrollHeight\"\n >\n <table class=\"rounded-r-xl fixed-right z-10 {{ npRightClass }}\">\n <thead class=\"sticky-header\">\n <tr>\n @for (col of fixedRightColumns; track col) {\n <th\n [class.border-r]=\"\n npBordered &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n class=\"border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n }\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n (cdkDragStarted)=\"onDragStarted($event)\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"fixedRightColumns.length\"\n class=\"px-4 py-3 border-gray-200\"\n [class.border-r]=\"npBordered\"\n ></td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n @for (col of fixedRightColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n </div>\n\n <div\n class=\"mt-3 w-full\"\n *ngIf=\"npShowPagination\"\n [style.width]=\"paginationWidth\"\n >\n <np-pagination\n [npType]=\"npPaginationType\"\n [totalItems]=\"filteredData.length\"\n [(pageIndex)]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"currentPageSize\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></np-pagination>\n </div>\n </div>\n }\n} @else {\n <div class=\"np-table rounded-xl pb-[100px] max-w-[535px]\">\n <div\n class=\"flex flex-col relative justify-center items-center h-full mt-[-40px]\"\n >\n <img src=\"assets/images/error-table.png\" alt=\"error\" />\n <div\n class=\"flex flex-col items-center justify-center gap-2 absolute bottom-0 left-[50%] translate-x-[-50%]\"\n >\n <div class=\"flex flex-col items-center\">\n <np-typography npType=\"text\" npSize=\"md\" npWeight=\"semibold\">\n Something went wrong...\n </np-typography>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"\n color: rgba(71, 84, 103, 1);\n max-width: 352px;\n text-align: center;\n \"\n >\n We had some trouble loading this page. <br />\n Please refresh the page or get in touch for support.\n </np-typography>\n </div>\n <div class=\"flex gap-3\">\n <np-button\n npType=\"secondary\"\n npSize=\"sm\"\n npShape=\"rounded\"\n (click)=\"onContactSupport()\"\n >Contact support\n </np-button>\n\n <np-button\n npType=\"primary\"\n npSize=\"sm\"\n npShape=\"rounded\"\n (click)=\"onRefresh()\"\n >Refresh\n </np-button>\n </div>\n </div>\n </div>\n </div>\n}\n\n<ng-template #headerTemplate let-col=\"col\" let-i=\"index\">\n <div #filterIcon class=\"flex items-center w-full\">\n <div class=\"w-full\">\n <ng-container *ngIf=\"col.headerTemplate; else defaultHeader\">\n <ng-container\n *ngTemplateOutlet=\"col.headerTemplate; context: { col: col }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <p style=\"margin: 0\">{{ col.label }}</p>\n </ng-template>\n </div>\n\n <ng-container>\n <div class=\"flex gap-2 ms-2\">\n <div\n *ngIf=\"(npSortable && !col.template) || (col.template && col.sortFn)\"\n (click)=\"onSortColumn(col)\"\n class=\"cursor-pointer\"\n >\n <i\n *ngIf=\"sortKey === col.key && sortDirection === 'asc'\"\n class=\"fa-duotone fa-solid fa-sort\"\n style=\"\n --fa-primary-color: #475467;\n --fa-secondary-color: #475467;\n --fa-secondary-opacity: 0.5;\n \"\n ></i>\n <i\n *ngIf=\"sortKey === col.key && sortDirection === 'desc'\"\n class=\"fa-duotone fa-solid fa-sort fa-rotate-180\"\n style=\"\n --fa-primary-color: #475467;\n --fa-secondary-color: #475467;\n --fa-secondary-opacity: 0.5;\n \"\n ></i>\n <i\n *ngIf=\"sortKey !== col.key || !sortDirection\"\n class=\"fa-solid fa-sort\"\n style=\"color: #d0d5d3\"\n ></i>\n </div>\n\n <div\n class=\"cursor-pointer relative\"\n (click)=\"toggleFilter(col.key)\"\n *ngIf=\"\n (npFilterable && !col.template) || (col.template && col.filterFn)\n \"\n >\n <ng-container\n *ngIf=\"shouldShowFilterCheck(col.key); else filterIconTemplate\"\n >\n <span class=\"relative inline-block\">\n <i class=\"fa-solid fa-filter\" style=\"color: #d0d5dd\"></i>\n <span\n class=\"absolute top-[1px] right-[-2px] block w-[6px] h-[6px] bg-black rounded-full\"\n ></span>\n </span>\n </ng-container>\n <ng-template #filterIconTemplate>\n <i\n class=\"fa-solid fa-filter\"\n [ngStyle]=\"{\n color: activeFilterKey === col.key ? '#000' : '#d0d5dd',\n }\"\n ></i>\n </ng-template>\n\n <div\n #filterDropdown\n [hidden]=\"activeFilterKey !== col.key\"\n (click)=\"$event.stopPropagation()\"\n [ngStyle]=\"dropdownPositionMap[col.key] || {}\"\n class=\"min-w-[240px] filter fixed px-2 pt-2 rounded-[8px] z-[9999]\"\n >\n <np-input-field\n size=\"md\"\n npType=\"string\"\n placeholder=\"Search...\"\n iconLeft=\"fa-thin fa-magnifying-glass\"\n [input]=\"searchControls[col.key]\"\n iconRight=\"fa-thin fa-xmark\"\n (iconRightClick)=\"onClearSearch(col.key)\"\n ></np-input-field>\n <div\n class=\"flex pt-2 cursor-pointer text-gray-500\"\n (click)=\"onClearFilter(col.key)\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\">\n <i class=\"fa-solid fa-xmark\"></i> Clear filter\n </np-typography>\n </div>\n <np-scrollbar height=\"200px\">\n <div>\n <div\n *ngFor=\"let value of col.filterListAfterSearch\"\n class=\"w-full flex items-center\"\n >\n <np-checkbox\n class=\"w-full cursor-pointer py-2\"\n npType=\"checkbox\"\n size=\"sm\"\n [input]=\"isChecked(col.key, value)\"\n (valueChange)=\"onToggleFilter(col.key, value, $event)\"\n [label]=\"value\"\n ></np-checkbox>\n </div>\n </div>\n <div\n *ngIf=\"col.filterListAfterSearch.length === 0\"\n class=\"text-center py-[50px]\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(208, 213, 221, 1)\"\n >\n No matches.\n </np-typography>\n </div>\n </np-scrollbar>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #renderCell let-row=\"row\" let-col=\"col\">\n <td [class.border-r]=\"npBordered\" class=\"border-gray-200\">\n <ng-container *ngIf=\"col.template; else default\">\n <ng-container\n *ngTemplateOutlet=\"col.template; context: { row: row, col: col }\"\n ></ng-container>\n </ng-container>\n <ng-template #default>\n <div class=\"flex items-center\">\n {{ row[col.key] }}\n </div>\n </ng-template>\n </td>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, inject, Input, OnInit, Output, PLATFORM_ID, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n RouterModule,\n} from '@angular/router';\nimport { INpTab } from '../../../interfaces/np-tab.interface';\nimport { afterNextRender } from '@angular/core';\n\n@Component({\n selector: 'np-tab',\n imports: [CommonModule, RouterModule],\n templateUrl: './np-tab.component.html',\n styleUrl: './np-tab.component.scss',\n host: {\n class: 'w-full'\n }\n})\nexport class NpTabComponent implements OnInit {\n private platformId = inject(PLATFORM_ID);\n\n @ViewChild('headerWrapper', { static: false }) headerWrapperRef!: ElementRef;\n @ViewChild('scrollContainer', { static: false }) scrollContainerRef!: ElementRef;\n @ViewChildren('tabItem') tabItemRefs!: QueryList<ElementRef>;\n\n @Input() tabs: INpTab[] = [];\n @Input() npClassName: string = '';\n @Input() subnpClassName: string = '';\n\n @Input() tabActive: string | number = '';\n @Input() isLink = false;\n @Input() npStyle: 'button' | 'underline' = 'button';\n @Input() npDirection: 'horizontal' | 'vertical' = 'horizontal';\n @Input() minWidthItem?: string;\n\n @Output() onChange = new EventEmitter<INpTab>();\n indexActive = 0;\n\n scrollLeftButton = false;\n scrollRightButton = false;\n\n constructor(\n private _Router: Router,\n private _ActivatedRoute: ActivatedRoute\n ) {\n afterNextRender(() => {\n this.initBrowserLogic();\n });\n }\n\n initBrowserLogic() {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (wrapper) {\n wrapper.addEventListener('scroll', this.updateScrollButtons);\n }\n\n this.updateScrollButtons();\n }\n\n ngOnInit(): void {\n this.setTabActiveDefault();\n }\n\n setTabActiveDefault() {\n if (this.tabActive !== undefined && this.tabActive !== null && this.tabActive !== '') {\n if (typeof this.tabActive === 'number') {\n this.indexActive = this.tabActive;\n } else {\n this.indexActive = this.tabs?.findIndex(\n (x: INpTab) => x.key === this.tabActive\n );\n }\n return;\n }\n\n if (!this.isLink) {\n this.tabActive = this.tabs[0]?.key;\n this.indexActive = 0;\n return;\n }\n\n const queryParmTabIndex = this._ActivatedRoute.snapshot.queryParamMap.get('tab');\n if (queryParmTabIndex === undefined || queryParmTabIndex === null) {\n this.tabActive = this.tabs[0]?.key;\n this.indexActive = 0;\n return;\n }\n\n const tabActive = this.tabs?.[+queryParmTabIndex];\n this.tabActive = tabActive?.key;\n this.indexActive = +queryParmTabIndex;\n }\n\n onChangeTab(tab: INpTab, index: number) {\n this.tabActive = tab.key;\n this.indexActive = index;\n this.onChange.emit(tab);\n\n if (this.isLink && tab.path) {\n this._Router.navigate([tab.path], {\n queryParams: this._ActivatedRoute.snapshot.queryParams,\n });\n }\n // if (tab?.path && this.isLink) {\n // this._Router.navigate([], {\n // relativeTo: this._ActivatedRoute,\n // queryParams: { tab: index },\n // queryParamsHandling: 'merge',\n // });\n // }\n }\n\n updateScrollButtons = () => {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (!wrapper) return;\n\n const scrollLeft = wrapper.scrollLeft;\n const scrollWidth = wrapper.scrollWidth;\n const clientWidth = wrapper.clientWidth;\n\n this.scrollLeftButton = scrollLeft > 0;\n this.scrollRightButton = scrollLeft + clientWidth < Math.ceil(scrollWidth);\n };\n\n scrollLeft() {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (!wrapper) return;\n const pageWidth = wrapper.clientWidth;\n wrapper.scrollBy({ left: -pageWidth, behavior: 'smooth' });\n }\n\n scrollRight() {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (!wrapper) return;\n const pageWidth = wrapper.clientWidth;\n wrapper.scrollBy({ left: pageWidth, behavior: 'smooth' });\n }\n\n // ngAfterViewInit(): void {\n // const wrapper = this.headerWrapperRef?.nativeElement;\n // if (wrapper) {\n // wrapper.addEventListener('scroll', this.updateScrollButtons);\n // }\n\n // window.addEventListener('resize', this.updateScrollButtons);\n // setTimeout(() => {\n // this.updateScrollButtons();\n // }, 0);\n // }\n\n ngOnDestroy(): void {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (wrapper) {\n wrapper.removeEventListener('scroll', this.updateScrollButtons);\n }\n }\n\n @HostListener('window:resize')\n onResize() {\n this.updateScrollButtons();\n }\n}\n","<div\n class=\"np-tab h-full relative {{ npClassName }}\"\n [ngClass]=\"{\n 'np-vertical': npDirection === 'vertical',\n 'np-horizontal': npDirection === 'horizontal',\n }\"\n>\n <div\n #headerWrapper\n class=\"flex justify-between np-tab-header overflow-x-auto scroll-smooth {{\n subnpClassName\n }}\"\n [ngClass]=\"[\n npDirection === 'vertical' ? 'flex-col w-full' : '',\n npDirection === 'horizontal' ? 'border-gray-200' : '',\n\n npStyle === 'underline'\n ? 'np-tab-underline bg-white' +\n (npDirection === 'horizontal' ? ' border-b' : '')\n : '',\n\n npStyle === 'button'\n ? 'np-tab-button border bg-gray-50 rounded-[5px] p-2'\n : '',\n ]\"\n >\n <div\n #scrollContainer\n class=\"flex w-fit w-full\"\n [ngClass]=\"{ 'flex-col': npDirection === 'vertical' }\"\n >\n <ng-container\n *ngFor=\"let tab of tabs; let index = index; let first = first\"\n >\n <div\n #tabItem\n class=\"flex-1\"\n [ngClass]=\"{\n 'min-w-[140px]': npStyle === 'button' && npDirection === 'vertical',\n }\"\n [ngStyle]=\"minWidthItem ? { minWidth: minWidthItem } : {}\"\n >\n <div\n class=\"text-[16px] font-[600] justify-center px-2 tab-item\"\n (click)=\"onChangeTab(tab, index)\"\n [ngClass]=\"{\n flex: npDirection === 'horizontal',\n 'is-active': tab.key === tabActive,\n 'py-3': npStyle === 'underline',\n 'py-2': npStyle === 'button',\n }\"\n >\n <span class=\"tab-label\">{{ tab?.label }}</span>\n\n @if (first) {\n @if (npStyle === \"underline\") {\n <div\n class=\"tab-underline\"\n [ngStyle]=\"\n npDirection === 'vertical'\n ? { top: indexActive * 100 + '%' }\n : { left: indexActive * 100 + '%' }\n \"\n ></div>\n }\n @if (npStyle === \"button\") {\n <div\n class=\"tab-button\"\n [ngStyle]=\"\n npDirection === 'vertical'\n ? { top: indexActive * 100 + '%' }\n : { left: indexActive * 100 + '%' }\n \"\n ></div>\n }\n }\n </div>\n </div>\n </ng-container>\n </div>\n\n <div *ngIf=\"npDirection === 'horizontal' && scrollLeftButton\">\n <div\n *ngIf=\"npStyle === 'underline'\"\n (click)=\"scrollLeft()\"\n class=\"btn-scroll-undefined cursor-pointer top-0 left-0 h-full absolute z-1000 w-[33px] flex items-center justify-center\"\n >\n <i class=\"fa-regular fa-chevron-left\"></i>\n </div>\n <div\n *ngIf=\"npStyle === 'button'\"\n class=\"top-0 left-0 h-full absolute z-1000 flex py-[4px] ps-[4px] bg-transparent\"\n >\n <div\n (click)=\"scrollLeft()\"\n class=\"btn-scroll-button cursor-pointer bg-white rounded-sm w-[33px] flex items-center justify-center\"\n >\n <i class=\"fa-regular fa-chevron-left\"></i>\n </div>\n </div>\n </div>\n <div *ngIf=\"npDirection === 'horizontal' && scrollRightButton\">\n <div\n *ngIf=\"npStyle === 'underline'\"\n (click)=\"scrollRight()\"\n class=\"btn-scroll-undefined cursor-pointer top-0 right-0 h-full absolute z-1000 w-[33px] flex items-center justify-center\"\n >\n <i class=\"fa-regular fa-chevron-right\"></i>\n </div>\n <div\n *ngIf=\"npStyle === 'button'\"\n class=\"top-0 right-0 h-full absolute z-1000 flex py-[4px] pe-[4px] bg-transparent\"\n >\n <div\n (click)=\"scrollRight()\"\n class=\"btn-scroll-button cursor-pointer bg-white rounded-sm w-[33px] flex items-center justify-center\"\n >\n <i class=\"fa-regular fa-chevron-right\"></i>\n </div>\n </div>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\nimport { NzIconModule, NzIconService } from 'ng-zorro-antd/icon';\nimport {\n NzResizableModule,\n NzResizeDirection,\n NzResizeEvent,\n} from 'ng-zorro-antd/resizable';\n\n@Component({\n selector: 'np-resize',\n imports: [CommonModule, NzResizableModule, NzIconModule],\n templateUrl: './np-resize.component.html',\n styleUrl: './np-resize.component.scss',\n})\nexport class NpResizeComponent {\n @ViewChild('container', { static: true }) container!: ElementRef;\n constructor(private renderer: Renderer2, private iconService: NzIconService) {\n this.iconService.addIconLiteral('ng-zorro:antd', this.ngZorroIconLiteral);\n }\n\n @Input({ required: true }) width!: number;\n @Input({ required: true }) height!: number;\n\n @Input() maxWidth?: number;\n @Input() maxHeight?: number;\n @Input() minWidth?: number;\n @Input() minHeight?: number;\n\n @Input() directions: NzResizeDirection[] = [];\n @Input() isDisable = false;\n\n id = -1;\n resizeDirection: NzResizeDirection | null = null;\n\n _ngContent: Element | null = null;\n ngZorroIconLiteral =\n '<svg width=\"8\" height=\"18\" viewBox=\"0 0 8 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_4739_7041)\"><path d=\"M0.535156 3.99987L0.535156 13.0665C0.535156 14.9811 2.08724 16.5332 4.00182 16.5332C5.91641 16.5332 7.46849 14.9811 7.46849 13.0665L7.46849 3.99987C7.46849 2.08528 5.91641 0.533203 4.00182 0.533203C2.08724 0.533203 0.535156 2.08528 0.535156 3.99987Z\" fill=\"white\"/><path d=\"M0.535156 3.99987L0.535156 13.0665C0.535156 14.9811 2.08724 16.5332 4.00182 16.5332C5.91641 16.5332 7.46849 14.9811 7.46849 13.0665L7.46849 3.99987C7.46849 2.08528 5.91641 0.533203 4.00182 0.533203C2.08724 0.533203 0.535156 2.08528 0.535156 3.99987Z\" stroke=\"#D0D5DD\"/><path d=\"M3.99225 4C4.36434 4 4.67442 4.21593 4.86047 4.51826C5.04651 4.84223 5.04651 5.25252 4.86047 5.55485C4.67442 5.87883 4.36434 6.07319 3.99225 6.07319C3.64083 6.07319 3.33075 5.87883 3.14471 5.55485C2.95865 5.25252 2.95865 4.84223 3.14471 4.51826C3.33075 4.21593 3.64083 4 3.99225 4ZM3.99225 7.45532C4.36434 7.45532 4.67442 7.67125 4.86047 7.97358C5.04651 8.29755 5.04651 8.70784 4.86047 9.01017C4.67442 9.33414 4.36434 9.52851 3.99225 9.52851C3.64083 9.52851 3.33075 9.33414 3.14471 9.01017C2.95865 8.70784 2.95865 8.29755 3.14471 7.97358C3.33075 7.67125 3.64083 7.45532 3.99225 7.45532ZM4.9845 11.9472C4.9845 12.336 4.79845 12.6599 4.48837 12.8542C4.19897 13.0486 3.8062 13.0486 3.49612 12.8542C3.20672 12.6599 3 12.336 3 11.9472C3 11.5801 3.20672 11.2562 3.49612 11.0618C3.8062 10.8674 4.19897 10.8674 4.48837 11.0618C4.79845 11.2562 4.9845 11.5801 4.9845 11.9472Z\" fill=\"#D0D5DD\"/></g><defs><clipPath id=\"clip0_4739_7041\"><rect width=\"8\" height=\"17.0667\" fill=\"white\"/></clipPath></defs></svg>'\n\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n onResize({ width, height, direction }: NzResizeEvent): void {\n cancelAnimationFrame(this.id);\n this.id = requestAnimationFrame(() => {\n this.width = width!;\n this.height = height!;\n this.resizeDirection = direction!;\n });\n }\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n}\n\n","<div\n #container\n class=\"box\"\n nz-resizable\n (nzResize)=\"onResize($event)\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n [nzMaxWidth]=\"maxWidth\"\n [nzMinWidth]=\"minWidth\"\n [nzMaxHeight]=\"maxHeight\"\n [nzMinHeight]=\"minHeight\"\n [nzDisabled]=\"isDisable\"\n >\n <nz-resize-handle\n *ngIf=\"directions.includes('topLeft') || (directions.includes('top') && directions.includes('left'))\"\n nzDirection=\"topLeft\"\n >\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"225\"/>\n </nz-resize-handle>\n\n <nz-resize-handle\n *ngIf=\"directions.includes('topRight') || (directions.includes('top') && directions.includes('right'))\"\n nzDirection=\"topRight\"\n >\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"135\"/>\n </nz-resize-handle>\n\n <nz-resize-handle\n *ngIf=\"directions.includes('bottomLeft') || (directions.includes('bottom') && directions.includes('left'))\"\n nzDirection=\"bottomLeft\"\n >\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"315\"/>\n </nz-resize-handle>\n\n <nz-resize-handle\n *ngIf=\"directions.includes('bottomRight') || (directions.includes('bottom') && directions.includes('right'))\"\n nzDirection=\"bottomRight\"\n >\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"45\" />\n </nz-resize-handle>\n\n <nz-resize-handle *ngIf=\"directions.includes('top')\" nzDirection=\"top\">\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"90\"/>\n </nz-resize-handle>\n\n <nz-resize-handle *ngIf=\"directions.includes('right')\" nzDirection=\"right\">\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"0\"/>\n </nz-resize-handle>\n\n <nz-resize-handle *ngIf=\"directions.includes('bottom')\" nzDirection=\"bottom\">\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"90\"/>\n </nz-resize-handle>\n\n <nz-resize-handle *ngIf=\"directions.includes('left')\" nzDirection=\"left\">\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"0\"/>\n </nz-resize-handle>\n\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NpTypographyComponent } from './np-typography/np-typography.component';\nimport { NpButtonComponent } from './np-button/np-button.component';\nimport { NpInputFieldComponent } from './np-input-field/np-input-field.component';\nimport { NpCheckboxComponent } from './np-checkbox/np-checkbox.component';\nimport { NpInputTexteraComponent } from './np-input-textera/np-input-textera.component';\nimport { NpTooltipComponent } from './np-tooltip/np-tooltip.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n NpCheckboxComponent,\n NpInputFieldComponent,\n NpButtonComponent,\n NpTypographyComponent,\n NpInputTexteraComponent,\n ],\n exports: [\n NpCheckboxComponent,\n NpInputFieldComponent,\n NpButtonComponent,\n NpTypographyComponent,\n NpInputTexteraComponent,\n ],\n})\nexport class BasicModule {}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NpTypographyComponent } from '../../basic/np-typography/np-typography.component';\nimport { NpButtonComponent } from '../../basic/np-button/np-button.component';\nimport { BasicModule } from '../../basic/basic.module';\nimport { NpCheckboxComponent } from '../../basic/np-checkbox/np-checkbox.component';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'np-modal',\n imports: [\n NzModalModule,\n NpButtonComponent,\n CommonModule,\n NpTypographyComponent,\n BasicModule,\n NpCheckboxComponent,\n ],\n templateUrl: './np-modal.component.html',\n styleUrl: './np-modal.component.scss',\n})\nexport class NpModalComponent {\n @Input() modalButton: string | TemplateRef<any> = '';\n @Input() modalTitle: string | TemplateRef<any> = '';\n @Input() modalDescriptions: string | TemplateRef<any> = '';\n @Input() modalType: 'confirmation' | 'notification' = 'notification';\n @Input() modalState: 'error' | 'warning' | 'success' | 'default' = 'default';\n @Input() useIcon: boolean = true;\n @Input() useCheckBox: boolean = true;\n @Input() cancelText: string = 'Cancel';\n @Input() okText: string = 'OK';\n\n @Input() modalContent?: TemplateRef<any>;\n @Input() modalFooter?: TemplateRef<any>;\n\n @Input() loadingOK: boolean = false;\n\n @Output() ok = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n @Output() checkbox = new EventEmitter<{ checkboxValue: boolean }>();\n\n isVisible = false;\n isOkLoading = false;\n modalWidth = 544;\n checkboxControl = new FormControl(false);\n\n ngOnInit(): void {\n if (this.modalType === 'confirmation') {\n this.modalWidth = 400;\n } else if (this.modalType === 'notification') {\n this.modalWidth = 544;\n }\n }\n\n isTemplate(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n\n get iconPath(): string {\n switch (this.modalState) {\n case 'error':\n return 'assets/images/error.png';\n case 'success':\n return 'assets/images/success.png';\n case 'warning':\n return 'assets/images/warning.png';\n case 'default':\n default:\n return 'assets/images/default.png';\n }\n }\n\n showModal(): void {\n this.isVisible = true;\n }\n\n handleOk(): void {\n this.ok.emit();\n this.isVisible = false;\n }\n\n handleCancel(): void {\n this.isVisible = false;\n this.cancel.emit();\n }\n}\n","<div (click)=\"showModal()\">\n <ng-container *ngIf=\"isTemplate(modalButton); else textTitle\">\n <ng-container *ngTemplateOutlet=\"modalButton\"></ng-container>\n </ng-container>\n <ng-template #textTitle>\n <np-button>\n {{ modalButton }}\n </np-button>\n </ng-template>\n</div>\n\n<nz-modal\n [(nzVisible)]=\"isVisible\"\n (nzOnCancel)=\"handleCancel()\"\n (nzOnOk)=\"handleOk()\"\n [nzTitle]=\"isTemplate(modalTitle) ? modalTitle : titleTemplate\"\n [nzContent]=\"modalContent || ''\"\n [nzFooter]=\"isTemplate(modalFooter) ? modalFooter : footerTemplate\"\n [nzWidth]=\"modalWidth\"\n nznpClassName=\"np-modal\"\n>\n</nz-modal>\n\n<ng-template #titleTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n modalType === 'confirmation' ? contentConfirmation : contentNotification\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #footerTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n modalType === 'confirmation' ? footerConfirmation : footerNotification\n \"\n ></ng-container>\n</ng-template>\n\n<!---------------------------------------------------------------->\n\n<ng-template #contentConfirmation>\n <div class=\"flex w-full\">\n <div class=\"flex flex-col grow gap-1\">\n <img\n *ngIf=\"useIcon\"\n [src]=\"iconPath\"\n [alt]=\"modalState + ' icon'\"\n class=\"w-[48px] h-[48px]\"\n />\n <div class=\"flex flex-col gap-[4px]\">\n <np-typography npType=\"text\" npSize=\"lg\" npWeight=\"semibold\">\n {{ modalTitle }}\n </np-typography>\n <ng-container *ngIf=\"isTemplate(modalDescriptions); else textDesc\">\n <ng-container *ngTemplateOutlet=\"modalDescriptions\"></ng-container>\n </ng-container>\n <ng-template #textDesc>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >\n {{ modalDescriptions }}\n </np-typography>\n </ng-template>\n </div>\n </div>\n <div class=\"flex pt-3\">\n <i\n class=\"fa-solid fa-xmark cursor-pointer fa-xl\"\n (click)=\"handleCancel()\"\n ></i>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerConfirmation>\n <div class=\"flex justify-between {{ modalType }}\">\n <np-button npSize=\"lg\" npType=\"secondary\" (click)=\"handleCancel()\">\n {{ cancelText }}\n </np-button>\n <np-button\n npSize=\"lg\"\n [npType]=\"\n modalState === 'error'\n ? 'destructive'\n : modalState === 'warning'\n ? 'warning'\n : 'primary'\n \"\n [isLoading]=\"loadingOK\"\n (click)=\"handleOk()\"\n >\n {{ okText }}\n </np-button>\n </div>\n</ng-template>\n\n<ng-template #contentNotification>\n <div class=\"flex w-full py-2\">\n <div class=\"flex me-3\" *ngIf=\"useIcon\">\n <img\n [src]=\"iconPath\"\n [alt]=\"modalState + ' icon'\"\n class=\"min-w-[48px] max-w-[48px] h-[48px]\"\n />\n </div>\n <div class=\"flex flex-col grow\">\n <div class=\"flex\">\n <div class=\"flex grow\">\n <np-typography npType=\"text\" npSize=\"lg\" npWeight=\"semibold\">\n {{ modalTitle }}\n </np-typography>\n </div>\n <div class=\"flex pt-3\">\n <i\n class=\"fa-solid fa-xmark cursor-pointer fa-xl\"\n (click)=\"handleCancel()\"\n ></i>\n </div>\n </div>\n <div class=\"flex grow\">\n <ng-container *ngIf=\"isTemplate(modalDescriptions); else textDesc\">\n <ng-container *ngTemplateOutlet=\"modalDescriptions\"></ng-container>\n </ng-container>\n <ng-template #textDesc>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >\n {{ modalDescriptions }}\n </np-typography>\n </ng-template>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerNotification>\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex w-full\" *ngIf=\"useCheckBox\">\n <np-checkbox\n npType=\"checkbox\"\n size=\"sm\"\n label=\"Don’t show again\"\n [input]=\"checkboxControl\"\n ></np-checkbox>\n </div>\n <div class=\"flex gap-3 w-full justify-end\">\n <np-button npSize=\"lg\" npType=\"secondary\" (click)=\"handleCancel()\">\n {{ cancelText }}\n </np-button>\n <np-button\n npSize=\"lg\"\n [npType]=\"\n modalState === 'error'\n ? 'destructive'\n : modalState === 'warning'\n ? 'warning'\n : 'primary'\n \"\n [isLoading]=\"loadingOK\"\n (click)=\"handleOk()\"\n >\n {{ okText }}\n </np-button>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NpTypographyComponent } from '../../basic/np-typography/np-typography.component';\nimport { NpButtonComponent } from '../../basic/np-button/np-button.component';\nimport { BasicModule } from '../../basic/basic.module';\nimport { NpCheckboxComponent } from '../../basic/np-checkbox/np-checkbox.component';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'np-confirm-template',\n imports: [\n NzModalModule,\n NpButtonComponent,\n CommonModule,\n NpTypographyComponent,\n BasicModule,\n NpCheckboxComponent,\n ],\n templateUrl: './confirm-template.component.html',\n styleUrl: './confirm-template.component.scss'\n})\nexport class NpConfirmTemplateComponent {\n // @Input() modalButton: string | TemplateRef<any> = '';\n @Input() modalTitle: string | TemplateRef<any> = '';\n @Input() modalDescriptions: string | TemplateRef<any> = '';\n @Input() modalType: 'confirmation' | 'notification' = 'notification';\n @Input() modalState: 'error' | 'warning' | 'success' | 'default' = 'default';\n @Input() useIcon: boolean = true;\n @Input() useCheckBox: boolean = true;\n @Input() cancelText: string = 'Cancel';\n @Input() okText: string = 'OK';\n\n @Input() modalContent?: TemplateRef<any>;\n // @Input() modalFooter?: TemplateRef<any>;\n\n @Input() loadingOK: boolean = false;\n\n @Output() ok = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n @Output() checkbox = new EventEmitter<{ checkboxValue: boolean }>();\n\n isVisible = false;\n isOkLoading = false;\n modalWidth = 544;\n checkboxControl = new FormControl(false);\n\n ngOnInit(): void {\n if (this.modalType === 'confirmation') {\n this.modalWidth = 400;\n } else if (this.modalType === 'notification') {\n this.modalWidth = 544;\n }\n }\n\n isTemplate(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n\n get iconPath(): string {\n switch (this.modalState) {\n case 'error':\n return 'assets/images/error.png';\n case 'success':\n return 'assets/images/success.png';\n case 'warning':\n return 'assets/images/warning.png';\n case 'default':\n default:\n return 'assets/images/default.png';\n }\n }\n\n showModal(): void {\n this.isVisible = true;\n }\n\n handleOk(): void {\n this.ok.emit();\n this.isVisible = false;\n }\n\n handleCancel(): void {\n this.isVisible = false;\n this.cancel.emit();\n }\n}\n\n","<div>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n <ng-container\n *ngIf=\"modalContent\"\n [ngTemplateOutlet]=\"modalContent\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n</div>\n\n<ng-template #titleTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n modalType === 'confirmation' ? contentConfirmation : contentNotification\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #footerTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n modalType === 'confirmation' ? footerConfirmation : footerNotification\n \"\n ></ng-container>\n</ng-template>\n\n<!---------------------------------------------------------------->\n\n<ng-template #contentConfirmation>\n <div class=\"flex w-full\">\n <div class=\"flex flex-col grow gap-1\">\n <img\n *ngIf=\"useIcon\"\n [src]=\"iconPath\"\n [alt]=\"modalState + ' icon'\"\n class=\"w-[48px] h-[48px]\"\n />\n <div class=\"flex flex-col gap-[4px]\">\n <np-typography npType=\"text\" npSize=\"lg\" npWeight=\"semibold\">\n {{ modalTitle }}\n </np-typography>\n <ng-container *ngIf=\"isTemplate(modalDescriptions); else textDesc\">\n <ng-container *ngTemplateOutlet=\"modalDescriptions\"></ng-container>\n </ng-container>\n <ng-template #textDesc>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >\n {{ modalDescriptions }}\n </np-typography>\n </ng-template>\n </div>\n </div>\n <div class=\"flex pt-3\">\n <i\n class=\"fa-solid fa-xmark cursor-pointer fa-xl\"\n (click)=\"handleCancel()\"\n ></i>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerConfirmation>\n <div class=\"flex justify-between {{ modalType }}\">\n <np-button npSize=\"lg\" npType=\"secondary\" (click)=\"handleCancel()\">\n {{ cancelText }}\n </np-button>\n <np-button\n npSize=\"lg\"\n [npType]=\"\n modalState === 'error'\n ? 'destructive'\n : modalState === 'warning'\n ? 'warning'\n : 'primary'\n \"\n [isLoading]=\"loadingOK\"\n (click)=\"handleOk()\"\n >\n {{ okText }}\n </np-button>\n </div>\n</ng-template>\n\n<ng-template #contentNotification>\n <div class=\"flex w-full\">\n <div class=\"flex me-3\" *ngIf=\"useIcon\">\n <img\n [src]=\"iconPath\"\n [alt]=\"modalState + ' icon'\"\n class=\"min-w-[48px] max-w-[48px] h-[48px]\"\n />\n </div>\n <div class=\"flex flex-col grow\">\n <div class=\"flex\">\n <div class=\"flex grow\">\n <np-typography npType=\"text\" npSize=\"lg\" npWeight=\"semibold\">\n {{ modalTitle }}\n </np-typography>\n </div>\n <div class=\"flex pt-3\">\n <i\n class=\"fa-solid fa-xmark cursor-pointer fa-xl\"\n (click)=\"handleCancel()\"\n ></i>\n </div>\n </div>\n <div class=\"flex grow\">\n <ng-container *ngIf=\"isTemplate(modalDescriptions); else textDesc\">\n <ng-container *ngTemplateOutlet=\"modalDescriptions\"></ng-container>\n </ng-container>\n <ng-template #textDesc>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >\n {{ modalDescriptions }}\n </np-typography>\n </ng-template>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerNotification>\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex w-full\" *ngIf=\"useCheckBox\">\n <np-checkbox\n npType=\"checkbox\"\n size=\"sm\"\n label=\"Don’t show again\"\n [input]=\"checkboxControl\"\n ></np-checkbox>\n </div>\n <div class=\"flex gap-3 w-full justify-end\">\n <np-button npSize=\"lg\" npType=\"secondary\" (click)=\"handleCancel()\">\n {{ cancelText }}\n </np-button>\n <np-button\n npSize=\"lg\"\n [npType]=\"\n modalState === 'error'\n ? 'destructive'\n : modalState === 'warning'\n ? 'warning'\n : 'primary'\n \"\n [isLoading]=\"loadingOK\"\n (click)=\"handleOk()\"\n >\n {{ okText }}\n </np-button>\n </div>\n </div>\n</ng-template>\n","import { Component, inject } from '@angular/core';\nimport { NZ_MODAL_DATA, NzModalRef } from 'ng-zorro-antd/modal';\n\n@Component({\n selector: 'np-dialog',\n imports: [],\n templateUrl: './np-dialog.component.html',\n styleUrl: './np-dialog.component.scss'\n})\nexport class NpDialogComponent<R = any> {\n constructor(protected modalRef: NzModalRef<R>) {}\n\n close(result?: R): void {\n this.modalRef.close(result);\n }\n\n submit(result?: R): void {\n this.modalRef.close(result);\n }\n}\n\n"," <!-- <np-modal\n modalButton=\"Success message\"\n modalTitle=\"Modal Title\"\n modalDescriptions=\"Add your status modal description here.It will look better if you split it into two lines.\"\n modalType=\"notification\"\n modalState=\"success\"\n >\n </np-modal> -->\n","import { IDefaultModel } from '../interfaces/default.interface';\n\nexport class DefaultModel implements IDefaultModel {\n /**\n * all keys are in lowercase\n * @type {{}}\n * @private\n */\n _data: any = {};\n /**\n * all keys are raw\n * @type {{}}\n * @private\n */\n _raw: any = {};\n _idKey: string = '';\n _id: any;\n\n /**\n *\n * @param _data\n * @param idKey\n * @param isAutoAssign\n */\n constructor(\n _data: any = {},\n idKey: string = '',\n isAutoAssign: boolean = false,\n isAssignRawData: boolean = true\n ) {\n if (_data) {\n // set raw\n if (_data.hasOwnProperty('_raw')) {\n delete _data['_raw'];\n }\n this._raw = _data;\n\n // store data to new place\n for (const key of Object.keys(_data)) {\n this._data[key.toLowerCase()] = this._raw[key];\n }\n const self = this;\n // setTimeout(() => {\n if (isAutoAssign) {\n if (isAssignRawData) {\n Object.assign(self, self._raw);\n } else {\n Object.assign(self, self._data);\n }\n }\n // });\n }\n\n if (idKey) {\n // set id key\n this._idKey = idKey.toLowerCase();\n this._id = this.getId();\n }\n }\n\n /**\n * get value of id\n * @return {any}\n */\n getId(): string | number | null {\n if (this._idKey && this._data[this._idKey]) {\n return this._data[this._idKey];\n }\n return null;\n }\n\n setId(id: string | number | null) {\n this._data[this._idKey] = id;\n this._id = this.getId();\n }\n\n /**\n * delete object property\n * @param key: string\n */\n deleteProperty(key: string): void {\n const self: any = this;\n if (!!self?.key) {\n delete self[key];\n }\n }\n\n /**\n * get key of id\n * @returns {string}\n */\n getIdKey(): string {\n return this._idKey || '';\n }\n\n /**\n * get value of _data by key\n * @param key: string\n * @returns {any}\n */\n getValue(key: string): any {\n return this._data[key.toLowerCase()];\n }\n\n /**\n * set value of _data by key & value of this object's attribute if existed\n * @param key: string\n * @param value: string\n * @returns {any}\n */\n setValue(key: string, value: any): any {\n const self: any = this;\n if (self.hasOwnProperty(key)) {\n self[key] = value;\n }\n return (this._data[key.toLowerCase()] = value);\n }\n\n /**\n * get raw value of _data by key\n * @param key: string\n * @returns {any}\n */\n getRawValue(key: string): any {\n return this._raw[key];\n }\n\n /**\n * set value of _data by key\n * @param key: string\n * @param value: string\n * @returns {any}\n */\n setRawValue(key: string, value: any): any {\n return (this._raw[key] = value);\n }\n\n /*STATIC*/\n static describe(instance: any): Array<string> {\n return Object.getOwnPropertyNames(instance)?.filter(\n (x) => !x.startsWith('_')\n );\n }\n}\n\nexport namespace DefaultModel {}\n","/*\n * Public API Surface of neop-ui-lib\n */\n// export service\nexport * from './lib/services/test.service';\nexport * from './lib/services/theme.service';\nexport * from './lib/services/np-dialog.service';\nexport * from './lib/services/np-alert.service';\n\nexport * from './lib/components/neop-component.module';\n\n// export component\nexport * from './lib/components/basic/np-typography/np-typography.component';\nexport * from './lib/components/basic/np-button/np-button.component';\nexport * from './lib/components/basic/np-checkbox/np-checkbox.component';\nexport * from './lib/components/basic/np-input-field/np-input-field.component';\nexport * from './lib/components/basic/np-input-textera/np-input-textera.component';\nexport * from './lib/components/basic/np-toggle/np-toggle.component';\nexport * from './lib/components/basic/np-select/np-select.component';\nexport * from './lib/components/basic/np-dropdowns/np-dropdowns.component';\nexport * from './lib/components/basic/np-tree/np-tree.component';\nexport * from './lib/components/basic/np-pagination/np-pagination.component';\nexport * from './lib/components/basic/np-scrollbar/np-scrollbar.component';\nexport * from './lib/components/basic/np-alert/np-alert.component';\nexport * from './lib/components/basic/np-tooltip/np-tooltip.component';\nexport * from './lib/components/basic/np-breadcrumb/np-breadcrumb.component';\nexport * from './lib/components/basic/np-progress-bar/np-progress-bar.component';\nexport * from './lib/components/basic/np-slider/np-slider.component';\nexport * from './lib/components/basic/np-loading-indicator/np-loading-indicator.component';\nexport * from './lib/components/basic/np-table/np-table.component';\nexport * from './lib/components/basic/np-tab/np-tab.component';\nexport * from './lib/components/basic/np-action-bar/np-action-bar.component';\nexport * from './lib/components/basic/np-resize/np-resize.component';\nexport * from './lib/components/basic/np-modal/np-modal.component';\n\n// Modal\nexport * from './lib/components/modal/confirm-template/confirm-template.component';\nexport * from './lib/components/modal/np-dialog/np-dialog.component';\n\n// export enum\nexport * from './lib/enum/np-breadcrumb.enum';\nexport * from './lib/enum/basic/breadcrumb.enum';\n\n// export model\nexport * from './lib/models/default.mode';\n\n// export interface\nexport * from './lib/interfaces/dictionary-item.interface';\nexport * from './lib/interfaces/np-table.interface';\nexport * from './lib/interfaces/np-tree.interface';\nexport * from './lib/interfaces/np-table.interface';\nexport * from './lib/interfaces/np-tab.interface';\n\n// export config\nexport * from './lib/config/form-error-config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i3","i2","i1.NpAlertService","i3.NpCheckboxComponent","i2.NpCheckboxComponent"],"mappings":"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"}
1
+ {"version":3,"file":"neoprototype-neop-ui-lib.mjs","sources":["../../../projects/neop-ui-lib/src/lib/services/test.service.ts","../../../projects/neop-ui-lib/src/lib/services/theme.service.ts","../../../projects/neop-ui-lib/src/lib/services/np-dialog.service.ts","../../../projects/neop-ui-lib/src/lib/services/np-alert.service.ts","../../../projects/neop-ui-lib/src/lib/components/neop-component.module.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-typography/np-typography.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-typography/np-typography.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-button/np-button.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-button/np-button.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-checkbox/np-checkbox.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-checkbox/np-checkbox.component.html","../../../projects/neop-ui-lib/src/lib/config/form-error-config.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-input-field/np-input-field.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-input-field/np-input-field.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-input-textera/np-input-textera.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-input-textera/np-input-textera.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-toggle/np-toggle.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-toggle/np-toggle.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-select/np-select.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-select/np-select.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-dropdowns/np-dropdowns.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-dropdowns/np-dropdowns.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-tooltip/np-tooltip.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-tooltip/np-tooltip.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-action-bar/np-action-bar.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-action-bar/np-action-bar.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-tree/np-tree.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-tree/np-tree.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-pagination/np-pagination.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-pagination/np-pagination.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-scrollbar/np-scrollbar.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-scrollbar/np-scrollbar.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-alert/np-alert.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-alert/np-alert.component.html","../../../projects/neop-ui-lib/src/lib/enum/basic/breadcrumb.enum.ts","../../../projects/neop-ui-lib/src/lib/enum/np-breadcrumb.enum.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-breadcrumb/np-breadcrumb.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-breadcrumb/np-breadcrumb.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-progress-bar/np-progress-bar.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-progress-bar/np-progress-bar.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-slider/np-slider.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-slider/np-slider.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-loading-indicator/np-loading-indicator.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-loading-indicator/np-loading-indicator.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-table/np-table.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-table/np-table.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-tab/np-tab.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-tab/np-tab.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/np-resize/np-resize.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-resize/np-resize.component.html","../../../projects/neop-ui-lib/src/lib/components/basic/basic.module.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-modal/np-modal.component.ts","../../../projects/neop-ui-lib/src/lib/components/basic/np-modal/np-modal.component.html","../../../projects/neop-ui-lib/src/lib/components/modal/confirm-template/confirm-template.component.ts","../../../projects/neop-ui-lib/src/lib/components/modal/confirm-template/confirm-template.component.html","../../../projects/neop-ui-lib/src/lib/components/modal/np-dialog/np-dialog.component.ts","../../../projects/neop-ui-lib/src/lib/components/modal/np-dialog/np-dialog.component.html","../../../projects/neop-ui-lib/src/lib/models/default.mode.ts","../../../projects/neop-ui-lib/src/public-api.ts","../../../projects/neop-ui-lib/src/neoprototype-neop-ui-lib.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TestService {\n\n constructor() {\n }\n\n test() {\n return 'test1';\n }\n\n test2() {\n return 'test2';\n }\n}\n","\nimport { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n\n // private renderer: Renderer2;\n private themeElement: HTMLElement | null;\n\n constructor(rendererFactory: RendererFactory2) {\n // this.renderer = rendererFactory.createRenderer(null, null);\n this.themeElement = document.getElementById('themeElementId');\n }\n\n setTheme(themeClass: string) {\n if (!this.themeElement) {\n this.themeElement = document.getElementById('themeElementId');\n }\n if (this.themeElement) {\n this.themeElement.className = themeClass; \n }\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { NzModalService, NzModalRef } from 'ng-zorro-antd/modal';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NpDialogService {\n constructor(private modal: NzModalService) {}\n\n openDialog<T, D = any, R = any>(\n component: ComponentType<T>,\n params?: Partial<D>\n ): Observable<R> {\n const modalRef = this.modal.create({\n nzContent: component,\n nzTitle: undefined,\n nzData: params,\n nzFooter: null,\n nzCentered: true,\n nzWidth: (params as any)?.nzWidth ?? '400px'\n });\n\n return modalRef.afterClose as Observable<R>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface AlertData {\n npType: 'toast' | 'notification';\n state: 'success' | 'info' | 'warning' | 'error';\n title?: string;\n description: string;\n message?: string;\n autoHide?: boolean;\n isFromService?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NpAlertService {\n private alertSubject = new Subject<AlertData>();\n alert$ = this.alertSubject.asObservable();\n\n toast = {\n success: (description: string, title?: string, message?: string) =>\n this.emit('toast', 'success', description, title, message),\n info: (description: string, title?: string, message?: string) =>\n this.emit('toast', 'info', description, title, message),\n warning: (description: string, title?: string, message?: string) =>\n this.emit('toast', 'warning', description, title, message),\n error: (description: string, title?: string, message?: string) =>\n this.emit('toast', 'error', description, title, message),\n };\n\n notification = {\n success: (description: string, title?: string, message?: string) =>\n this.emit('notification', 'success', description, title, message),\n info: (description: string, title?: string, message?: string) =>\n this.emit('notification', 'info', description, title, message),\n warning: (description: string, title?: string, message?: string) =>\n this.emit('notification', 'warning', description, title, message),\n error: (description: string, title?: string, message?: string) =>\n this.emit('notification', 'error', description, title, message),\n };\n\n private emit(\n npType: 'toast' | 'notification',\n state: 'success' | 'info' | 'warning' | 'error',\n description: string,\n title?: string,\n message?: string,\n ) {\n this.alertSubject.next({\n npType,\n state,\n description,\n title,\n message,\n autoHide: true,\n isFromService: true\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n ],\n exports: [\n ]\n})\nexport class NeopComponentModule { }\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { NzTypographyModule } from 'ng-zorro-antd/typography';\n\n@Component({\n selector: 'np-typography',\n imports: [NzTypographyModule, CommonModule],\n templateUrl: './np-typography.component.html',\n styleUrl: './np-typography.component.scss',\n})\nexport class NpTypographyComponent {\n @ViewChild('container', { static: true }) container!: ElementRef;\n @Input() npType: string = 'text';\n @Input() npSize: string = 'sm';\n @Input() npWeight: string = 'regular';\n\n _ngContent: Element | null = null;\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n constructor(private renderer: Renderer2) {}\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n}\n","<p #container class=\"{{ npType }}-{{ npSize }} font-{{ npWeight }} font-text\">\n <!-- [ngClass]=\"splitClass()\" -->\n <ng-content></ng-content>\n</p>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'np-button',\n imports: [CommonModule],\n templateUrl: './np-button.component.html',\n styleUrl: './np-button.component.scss',\n})\nexport class NpButtonComponent {\n @ViewChild('container', { static: true }) container!: ElementRef;\n\n @Input() npType: string = 'primary';\n @Input() npSize: string = 'sm';\n @Input() npClassName: string = '';\n @Input() isLoading: boolean = false;\n\n @Input() disabled: boolean = false;\n _ngContent: Element | null = null;\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n constructor(private renderer: Renderer2) { }\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n\n onClick(e: any) {\n if (this.disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n if (this.isLoading) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n // Add rip\n const target = e.target as HTMLElement;\n const rect = target.getBoundingClientRect();\n const x = e?.clientX - rect.left;\n const y = e?.clientY - rect.top;\n const ripples = this.renderer.createElement('span');\n ripples.style.left = x + 'px';\n ripples.style.top = y + 'px';\n this.renderer.appendChild(this.container.nativeElement, ripples);\n\n setTimeout(() => {\n this.renderer.removeChild(this.container.nativeElement, ripples);\n }, 1000);\n }\n}\n","<button\n #container\n class=\"np-button ripple\n {{ npType }}\n {{ npSize }}\n {{ isLoading ? 'np-loading' : '' }}\n {{ disabled ? npType + '-disabled' : '' }}\n {{ npClassName }}\"\n (click)=\"onClick($event)\"\n>\n <div class=\"inline items-center\">\n <i\n class=\"fa-duotone fa-solid fa-spinner-third fa-spin\"\n *ngIf=\"isLoading\"\n ></i>\n <ng-content></ng-content>\n </div>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\n\n@Component({\n selector: 'np-checkbox',\n imports: [\n CommonModule,\n NzCheckboxModule,\n FormsModule,\n ReactiveFormsModule,\n NzButtonModule,\n NzSwitchModule,\n NpTypographyComponent,\n ],\n templateUrl: './np-checkbox.component.html',\n styleUrl: './np-checkbox.component.scss',\n})\nexport class NpCheckboxComponent {\n _input: FormControl = new FormControl('');\n @Input()\n set input(value: FormControl | undefined | boolean) {\n if (value === true) {\n this._input.patchValue(true);\n return;\n }\n this._input = !!value ? (value as FormControl) : new FormControl(false);\n }\n\n @Input() size: string = 'md';\n @Input() npType: string = 'checkbox';\n\n @Input() isDisabled: boolean = false;\n @Input() groupName: string = 'radioGroup';\n @Input() label?: string;\n @Input() description?: string;\n\n @Input() isIndeterminate = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n onChange(event: any) {\n const inputElement = event.target as HTMLInputElement;\n const value = inputElement.checked;\n this._input?.patchValue(value);\n this.valueChange.emit(value);\n }\n}\n","<label\n [ngClass]=\"[\n size,\n isIndeterminate ? 'indeterminate' : npType,\n isDisabled ? 'disabled' : '',\n _input.value ? 'isChecked' : '',\n ]\"\n>\n <input\n [type]=\"npType === 'radio' ? 'radio' : 'checkbox'\"\n [name]=\"npType === 'radio' ? groupName : null\"\n [checked]=\"_input.value\"\n [disabled]=\"isDisabled\"\n (change)=\"onChange($event)\"\n />\n <span\n [ngClass]=\"[\n 'custom-checkbox',\n isIndeterminate ? 'indeterminate' : npType,\n isDisabled ? 'span-disabled' : '',\n ]\"\n ></span>\n <div>\n <np-typography\n *ngIf=\"label\"\n [class]=\"'label-' + size\"\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >{{ label }}</np-typography\n >\n <np-typography\n *ngIf=\"description\"\n [class]=\"'description-' + size\"\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >{{ description }}</np-typography\n >\n </div>\n</label>\n\n<!-- <label nz-checkbox >Checkbox</label> -->\n","import { InjectionToken } from '@angular/core';\n\nexport type FormErrorMap = Record<string, string>;\n\nexport const FORM_ERROR_MAP = new InjectionToken<FormErrorMap>(\n 'FORM_ERROR_MAP'\n);\n","import { CommonModule, DecimalPipe } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, ViewChild } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport {\n FORM_ERROR_MAP,\n FormErrorMap,\n} from '../../../config/form-error-config';\n\n@Component({\n selector: 'np-input-field',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NzInputModule,\n NzIconModule,\n NpTypographyComponent,\n NzDatePickerModule,\n ],\n templateUrl: './np-input-field.component.html',\n styleUrl: './np-input-field.component.scss',\n providers: [DecimalPipe],\n})\nexport class NpInputFieldComponent {\n constructor(\n private decimalPipe: DecimalPipe,\n @Optional() @Inject(FORM_ERROR_MAP) private defaultErrorMap?: FormErrorMap\n ) { }\n\n @ViewChild('inputRef', { static: true })\n inputRef!: ElementRef<HTMLInputElement>;\n\n @Input() size: string = '';\n @Input() label?: string;\n @Input() placeholder?: string = '';\n @Input() iconLeft?: string;\n @Input() iconRight?: string;\n @Input() hint?: string;\n @Input() errorMap?: FormErrorMap;\n @Input() disabled: boolean = false;\n @Input() limitValue?: number;\n @Input() functionHandler?: Function;\n @Input() submitted: boolean = false;\n\n @Input() digitsInfo: string = '1.2-2';\n @Input() locale: string = 'en-US';\n @Input() formatDate: string = 'dd-MM-yyyy';\n\n inputType: string = 'text';\n passwordVisible = false;\n _input: FormControl = new FormControl('');\n _type: 'password' | 'text' | 'number' | 'string' | 'date' | 'function' =\n 'text';\n\n @Input()\n set input(value: FormControl | undefined) {\n this._input = value ? value : new FormControl('');\n }\n\n @Input()\n set npType(value: typeof this._type) {\n this._type = value;\n this.updateInputType();\n }\n get npType() {\n return this._type;\n }\n\n @Output() valueChange = new EventEmitter<string | number>();\n @Output() iconLeftClick = new EventEmitter<void>();\n @Output() iconRightClick = new EventEmitter<void>();\n @Output() blur = new EventEmitter<FocusEvent>();\n\n onChangeValue() {\n this.valueChange.emit(this._input?.value);\n }\n\n updateInputType() {\n if (this._type === 'password') {\n this.inputType = this.passwordVisible ? 'text' : 'password';\n } else if (this._type === 'date') {\n this.inputType = 'date';\n } else if (this._type === 'number') {\n this.inputType = 'number';\n } else {\n this.inputType = 'text';\n }\n }\n\n togglePassword() {\n this.passwordVisible = !this.passwordVisible;\n this.updateInputType();\n }\n\n get computedStatus(): string | undefined {\n if (!this._input) return undefined;\n\n const control = this._input;\n const showError =\n control.invalid && (control.dirty || control.touched || this.submitted);\n\n return showError ? 'error' : undefined;\n }\n\n get errorMessageFromInput(): string | null {\n if (!this._input || !this._input.errors) return null;\n\n const firstKey = Object.keys(this._input.errors)[0];\n return (\n this.errorMap?.[firstKey] || this.defaultErrorMap?.[firstKey] || null\n );\n }\n\n handleKeyPress(event: KeyboardEvent): void {\n if (this._type === 'number') {\n const isDigit = /^[0-9]$/.test(event.key);\n if (!isDigit) {\n event.preventDefault();\n }\n }\n\n if (this._type === 'text') {\n const isLetter = /^[a-zA-Z ]$/.test(event.key);\n if (!isLetter) {\n event.preventDefault();\n }\n }\n }\n\n onInputChange(event: Event): void {\n const input = (event.target as HTMLInputElement).value;\n const reg = /^-?(0|[1-9][0-9]*)(\\.[0-9]*)?$/;\n\n if (this.limitValue && input.length > this.limitValue) {\n (event.target as HTMLInputElement).value = this._input.value || '';\n return;\n }\n\n if (this.npType === 'number') {\n if (\n (!isNaN(+input) && reg.test(input)) ||\n input === '' ||\n input === '-'\n ) {\n this._input.setValue(input);\n this.valueChange.emit(input);\n } else {\n (event.target as HTMLInputElement).value = this._input.value || '';\n }\n } else {\n if (this.limitValue && input.length > this.limitValue) {\n (event.target as HTMLInputElement).value = this._input.value || '';\n return;\n }\n\n this._input.setValue(input);\n this.valueChange.emit(input);\n\n if (this.npType === 'function') {\n try {\n this.functionHandler?.(input);\n } catch (e) {\n console.warn('functionHandler error:', e);\n }\n }\n }\n }\n\n onBlur(event?: FocusEvent): void {\n if (this.npType === 'number') {\n const raw = this._input.value;\n const numeric = Number(raw?.toString().replace(/,/g, ''));\n\n const formatted = this.decimalPipe.transform(\n numeric,\n this.digitsInfo,\n this.locale\n );\n\n if (formatted) {\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.value = formatted;\n }\n const standardized = Number(formatted.replace(/,/g, ''));\n this._input.setValue(standardized);\n } else {\n this._input.setValue(numeric);\n }\n }\n\n this.blur.emit(event || new FocusEvent('blur'));\n }\n\n handleIconLeftClick(): void {\n this.iconLeftClick.emit();\n }\n\n handleIconRightClick(): void {\n this.iconRightClick.emit();\n }\n}\n","<div class=\"input-wrapper flex column w-full\">\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n *ngIf=\"label\"\n class=\"input-label\"\n >{{ label }}</np-typography\n >\n\n <ng-container *ngIf=\"npType === 'date'; else normalInput\">\n <div [ngClass]=\"size\">\n <nz-date-picker\n [formControl]=\"_input\"\n [nzDisabled]=\"disabled\"\n [nzFormat]=\"formatDate\"\n class=\"w-full\"\n ></nz-date-picker>\n </div>\n </ng-container>\n <ng-template #normalInput>\n <nz-input-group\n [class]=\"[size, 'input-group', computedStatus === 'error' ? 'error' : '']\"\n [nzSuffix]=\"suffixTemplateInfo\"\n [nzPrefix]=\"prefixTemplateUser\"\n >\n <input\n #inputRef\n nz-input\n [type]=\"inputType\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [value]=\"_input.value\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur($event)\"\n (keypress)=\"handleKeyPress($event)\"\n />\n </nz-input-group>\n </ng-template>\n\n <ng-template #prefixTemplateUser>\n <i class=\"{{ iconLeft }} icon-input\" (click)=\"handleIconLeftClick()\"></i>\n </ng-template>\n\n <ng-template #suffixTemplateInfo>\n <i\n class=\"{{ iconRight }} icon-input\"\n *ngIf=\"npType !== 'password'\"\n (click)=\"handleIconRightClick()\"\n ></i>\n <span\n *ngIf=\"npType == 'password'\"\n nz-icon\n class=\"ant-input-password-icon\"\n [nzType]=\"passwordVisible ? 'eye' : 'eye-invisible'\"\n (click)=\"togglePassword()\"\n >\n </span>\n </ng-template>\n\n <div\n class=\"flex justify-between\"\n *ngIf=\"\n computedStatus === 'error' || hint || (limitValue && npType !== 'date')\n \"\n >\n <div class=\"flex flex-col w-full mb-3\">\n <np-typography\n *ngIf=\"computedStatus === 'error'\"\n class=\"input-error text-red-500\"\n >{{ errorMessageFromInput }}</np-typography\n >\n <np-typography *ngIf=\"hint\" class=\"input-hint\">{{ hint }}</np-typography>\n </div>\n <np-typography *ngIf=\"limitValue && npType !== 'date'\" class=\"limit-value\">\n {{ _input.value?.toString()?.length || 0 }}/{{ limitValue }}\n </np-typography>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { FORM_ERROR_MAP, FormErrorMap } from '../../../config/form-error-config';\n\n@Component({\n selector: 'np-input-textera',\n imports: [\n CommonModule,\n FormsModule,\n NzInputModule,\n NpTypographyComponent,\n ReactiveFormsModule,\n ],\n templateUrl: './np-input-textera.component.html',\n styleUrl: './np-input-textera.component.scss',\n})\nexport class NpInputTexteraComponent {\n constructor(\n @Optional() @Inject(FORM_ERROR_MAP) private defaultErrorMap?: FormErrorMap\n ) {}\n\n @Input() label: string = '';\n @Input() placeholder?: string;\n @Input() hint?: string;\n @Input() disabled: boolean = false;\n @Input() value?: string;\n @Input() limitValue?: number;\n @Input() submitted: boolean = false;\n @Input() rowSize: { minRows: number; maxRows: number } = {\n minRows: 4,\n maxRows: 4,\n };\n\n _input: FormControl = new FormControl('');\n currentLength: number = 0;\n\n @Input()\n set input(value: FormControl | undefined) {\n this._input = value ? value : new FormControl('');\n }\n\n onTextareaInput(event: Event): void {\n const input = (event.target as HTMLTextAreaElement).value;\n\n if (this.limitValue && input.length > this.limitValue) {\n const trimmed = input.slice(0, this.limitValue);\n this._input.setValue(trimmed);\n this.currentLength = trimmed.length;\n } else {\n this._input.setValue(input);\n this.currentLength = input.length;\n }\n }\n\n get computedStatus(): string | undefined {\n if (!this._input) return undefined;\n const c = this._input;\n return c.invalid && (c.dirty || c.touched || this.submitted)\n ? 'error'\n : undefined;\n }\n\n get errorMessageFromInput(): string | null {\n if (!this._input || !this._input.errors) return null;\n const firstKey = Object.keys(this._input.errors)[0];\n return this.defaultErrorMap?.[firstKey] || null;\n }\n}\n","<div class=\"flex flex-col gap-1\" [ngClass]=\"computedStatus === 'error' ? 'error' : ''\">\n <np-typography npWeight=\"medium\" *ngIf=\"label\" class=\"input-label\">{{ label }}</np-typography>\n\n <textarea\n nz-input\n [placeholder]=\"placeholder\"\n [nzAutosize]=\"rowSize\"\n [disabled]=\"_input.disabled\"\n [formControl]=\"_input\"\n (input)=\"onTextareaInput($event)\"\n ></textarea>\n\n <div class=\"flex justify-between\">\n <div class=\"flex-col flex\">\n <np-typography *ngIf=\"computedStatus === 'error'\" class=\"input-error text-red-500\">\n {{ errorMessageFromInput }}\n </np-typography>\n <np-typography *ngIf=\"hint\" class=\"input-hint\">{{ hint }}</np-typography>\n </div>\n <np-typography *ngIf=\"limitValue\" class=\"limit-value\">\n {{ currentLength }}/{{ limitValue }}\n </np-typography>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormsModule } from '@angular/forms';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\n\n@Component({\n selector: 'np-toggle',\n imports: [\n CommonModule,\n FormsModule,\n NzSwitchModule,\n NzButtonModule,\n NpTypographyComponent,\n ],\n templateUrl: './np-toggle.component.html',\n styleUrl: './np-toggle.component.scss',\n})\nexport class NpToggleComponent {\n _input: FormControl = new FormControl('');\n @Input()\n set input(value: FormControl | undefined | boolean) {\n if (value === true) {\n this._input.patchValue(true);\n return;\n }\n this._input = !!value ? (value as FormControl) : new FormControl(false);\n }\n @Input() size: string = 'sm';\n @Input() label?: string;\n @Input() subLabel?: string;\n @Input() disabled: boolean = false;\n // private _checked: boolean = false;\n\n // @Input()\n // set checked(value: boolean) {\n // this._checked = value;\n // this.checkedChange.emit(value);\n // }\n\n // get checked(): boolean {\n // return this._checked;\n // }\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n toggleChecked(value: boolean) {\n this._input?.patchValue(value);\n this.valueChange.emit(value);\n }\n}\n","<div class=\"flex gap-2\">\n <nz-switch\n [ngModel]=\"_input.value\"\n (ngModelChange)=\"toggleChecked($event)\"\n [nzDisabled]=\"disabled\"\n [nzSize]=\"size === 'sm' ? 'small' : 'default'\"\n ></nz-switch>\n <div class=\"flex flex-col justify-center\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\" *ngIf=\"label\" class=\"input-label leading-none\"\n [class.input-label-checked]=\"_input.value\"\n >{{ label }}</np-typography>\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"regular\" *ngIf=\"subLabel\" class=\"input-subLabel\"\n [class.input-label-checked]=\"_input.value\">{{ subLabel }}</np-typography>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NpDictionaryItem } from '../../../interfaces/dictionary-item.interface';\n\nexport enum NpInputMode {\n DEFAULT = 'default',\n MULTIPLE = 'multiple',\n TAGS = 'tags',\n}\n\n@Component({\n selector: 'np-select',\n imports: [\n CommonModule,\n NpTypographyComponent,\n FormsModule,\n ReactiveFormsModule,\n NzSelectModule,\n ],\n templateUrl: './np-select.component.html',\n styleUrl: './np-select.component.scss',\n})\n\nexport class NpSelectComponent {\n @Input() npType: string = 'sm';\n @Input() npClassName: string = '';\n @Input() label?: string;\n @Input() hint?: string;\n @Input() placeHolder: string = '';\n @Input() labelTemplate?: TemplateRef<any> = undefined;\n @Input() valueTemplate?: TemplateRef<any> = undefined;\n @Input() isAllowClear: boolean = true;\n @Input() iconPrefixClass?: string = undefined;\n @Input() mode: 'multiple' | 'tags' | 'default' = 'default';\n @Input() listItem: NpDictionaryItem[] | any = [];\n\n NpMode = NpInputMode;\n _input: FormControl = new FormControl(null);\n @Input()\n set input(value: FormControl | undefined) {\n this._input = !!value ? (value as FormControl) : new FormControl([]);\n }\n\n @Output() valueChange = new EventEmitter<string>();\n\n onChangeValue() {\n this.valueChange.emit(this._input?.value);\n }\n}\n","<div class=\"flex flex-col gap-1 np-select {{ npClassName }}\">\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n *ngIf=\"label\"\n class=\"input-label\"\n >{{ label }}</np-typography\n >\n <div class=\"relative {{ npType }} \" [class.add-prefix-icon]=\"iconPrefixClass\">\n <nz-select\n [nzPlaceHolder]=\"placeHolder\"\n class=\"w-full\"\n [formControl]=\"_input\"\n [nzShowSearch]=\"true\"\n [nzAllowClear]=\"isAllowClear\"\n [nzMode]=\"mode\"\n [nzCustomTemplate]=\"valueTemplate ?? defaultTemplate\"\n (ngModelChange)=\"onChangeValue()\"\n >\n @for (item of listItem; track item) {\n <nz-option\n nzCustomContent\n [nzLabel]=\"item?.label\"\n [nzValue]=\"item?.value\"\n >\n @if (labelTemplate) {\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: { item: item }\"\n ></ng-container>\n } @else {\n <div class=\"flex justify-between\">\n <div>{{ item?.label }}</div>\n @if (mode === NpMode.DEFAULT) {\n <div class=\"icon-check\"><i class=\"fa-light fa-check\"></i></div>\n }\n </div>\n }\n </nz-option>\n }\n </nz-select>\n <ng-template #defaultTemplate let-selected>\n {{ selected.nzLabel }}\n </ng-template>\n <div class=\"prefix-icon absolute\">\n <i class=\"{{ iconPrefixClass }}\"></i>\n </div>\n </div>\n <np-typography *ngIf=\"hint\" class=\"input-hint\">{{ hint }}</np-typography>\n</div>\n\n<!-- <nz-select\n nzMode=\"multiple\"\n nzPlaceHolder=\"Please select\"\n [(ngModel)]=\"value\"\n class=\"w-full\"\n >\n @for (item of listItem; track item) {\n <nz-option [nzLabel]=\"item?.label\" [nzValue]=\"item?.value\"></nz-option>\n }\n </nz-select> -->\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NpDictionaryItem } from '../../../interfaces/dictionary-item.interface';\nimport { NpButtonComponent } from '../np-button/np-button.component';\n\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NpInputFieldComponent } from \"../np-input-field/np-input-field.component\";\n// import { NpDropdownContentMenuComponent } from './np-dropdown-content-menu/np-dropdown-content-menu.component';\n\n// export interface NpDroplistItem {\n// value: string;\n// label: string;\n// nzValue: string;\n// nzLabel: string;\n// }\n\nexport enum NpMode {\n DEFAULT = 'default',\n MULTIPLE = 'multiple',\n TAGS = 'tags',\n}\n@Component({\n selector: 'np-dropdowns',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NpButtonComponent,\n // NzPopoverModule,\n NzDropDownModule,\n // NpDropdownContentMenuComponent\n NzSelectModule,\n NpInputFieldComponent,\n ],\n templateUrl: './np-dropdowns.component.html',\n styleUrl: './np-dropdowns.component.scss',\n})\nexport class NpDropdownsComponent {\n @Input() npType: string = 'secondary';\n @Input() npSize: string = 'sm';\n @Input() npClassName: string = '';\n @Input() value: string = 'Menu Dropdown';\n @Input() useSearch: boolean = false;\n @Input() alwaysOpen: boolean = false;\n @Input() placement:\n | 'bottomLeft'\n | 'bottomCenter'\n | 'bottomRight'\n | 'topLeft'\n | 'topCenter'\n | 'topRight' = 'bottomCenter';\n // @Input() label: string = 'Menu Dropdown';\n @Input() list: NpDictionaryItem[] | any = [];\n // @Output() valueChange = new EventEmitter<any>();\n @Output() valueChange = new EventEmitter<NpDictionaryItem>();\n\n @Output() visible: boolean = false;\n\n searchControl = new FormControl('');\n originalList: NpDictionaryItem[] = [];\n filteredList: NpDictionaryItem[] = [];\n\n selectedItem: NpDictionaryItem | null = null;\n\n ngOnInit(): void {\n this.originalList = [...this.list];\n this.filteredList = [...this.list];\n\n this.searchControl.valueChanges.subscribe((text: string | null) => {\n this.filterList(text ?? '');\n });\n }\n\n clickMe(): void {\n this.visible = false;\n }\n\n change(value: boolean): void { }\n\n onSelectItem(item: NpDictionaryItem) {\n this.visible = false;\n // if (this.npType !== 'icon') {\n // this.value = item?.value;\n // }\n this.selectedItem = item;\n this.value = item?.label;\n this.valueChange.emit(item);\n this.searchControl.setValue('');\n }\n\n onRightIconClick(): void {\n this.searchControl.setValue('');\n }\n\n filterList(search: string) {\n const normalizedSearch = search?.toLowerCase().trim() || '';\n\n if (!normalizedSearch) {\n this.filteredList = [...this.originalList];\n return;\n }\n\n const matchedItems = this.originalList.filter((item) =>\n item.label?.toLowerCase().includes(normalizedSearch)\n );\n\n const originalWithoutDivider = this.originalList.filter(\n (item) => item.npType !== 'divider'\n );\n\n const isSame =\n matchedItems.length === originalWithoutDivider.length &&\n matchedItems.every((item) =>\n originalWithoutDivider.some((o) => o.label === item.label)\n );\n\n if (isSame) {\n this.filteredList = [...this.originalList];\n } else {\n this.filteredList = matchedItems;\n }\n }\n}\n","<np-button\n class=\"inline-block w-auto np-dropdown {{ npClassName }}\"\n [npType]=\"npType\"\n [npSize]=\"npSize\"\n nz-dropdown\n nzTrigger=\"click\"\n [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"alwaysOpen\"\n [nzPlacement]=\"placement\"\n>\n <div class=\"flex gap-1 items-center\">\n <i\n *ngIf=\"selectedItem?.classIcon\"\n class=\"{{ selectedItem?.classIcon }}\"\n ></i>\n {{ selectedItem?.label || value }}\n @if (npType === \"icon\") {\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n } @else {\n <i class=\"fa-light icon fa-chevron-down\" [class.icon-up]=\"visible\"></i>\n }\n </div>\n</np-button>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu>\n <div class=\"px-[8px] py-[2px] mb-1\" *ngIf=\"useSearch\">\n <np-input-field\n size=\"sm\"\n npType=\"string\"\n placeholder=\"Search\"\n iconLeft=\"fa-regular fa-magnifying-glass\"\n iconRight=\"fa-solid fa-xmark-large\"\n [input]=\"searchControl\"\n (iconRightClick)=\"onRightIconClick()\"\n ></np-input-field>\n </div>\n @for (item of filteredList; track item) {\n <ng-container\n *ngTemplateOutlet=\"contentMenu; context: { item: item }\"\n ></ng-container>\n }\n </ul>\n\n <ng-template #contentMenu let-item=\"item\">\n @if (item?.npType === \"divider\") {\n <li nz-menu-divider></li>\n } @else if (!item?.childrens) {\n <li nz-menu-item (click)=\"onSelectItem(item)\">\n <ng-container\n *ngTemplateOutlet=\"contentTemplate; context: { item: item }\"\n ></ng-container>\n </li>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"contentSubMenuTemplate; context: { item: item }\"\n ></ng-container>\n }\n </ng-template>\n\n <ng-template #contentSubMenuTemplate let-item=\"item\">\n <li nz-submenu [nzTitle]=\"submenuTitle\">\n <ng-template #submenuTitle>\n <ng-container\n *ngTemplateOutlet=\"contentTemplate; context: { item: item }\"\n ></ng-container>\n </ng-template>\n <ul>\n @for (itemChild of item?.childrens; track itemChild) {\n @if (itemChild?.npType === \"divider\") {\n <li nz-menu-divider></li>\n } @else if (!itemChild?.childrens) {\n <li nz-menu-item (click)=\"onSelectItem(itemChild)\">\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: itemChild }\n \"\n ></ng-container>\n </li>\n } @else {\n <!-- Start Fix temp when not use recursive template -->\n <li nz-submenu [nzTitle]=\"submenuTitle2\">\n <ng-template #submenuTitle2>\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: itemChild }\n \"\n ></ng-container>\n </ng-template>\n <ul>\n @for (itemChild2 of itemChild?.childrens; track itemChild2) {\n <li nz-menu-item (click)=\"onSelectItem(itemChild2)\">\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: itemChild2 }\n \"\n ></ng-container>\n </li>\n }\n </ul>\n </li>\n <!-- End Fix temp when not use recursive template -->\n\n <!-- <ng-container\n *ngTemplateOutlet=\"contentMenu; context: { item: itemChild }\"\n ></ng-container> -->\n }\n }\n </ul>\n </li>\n </ng-template>\n\n <ng-template #contentTemplate let-item=\"item\">\n <i class=\"{{ item?.classIcon }} mr-[4px]\"></i>\n {{ item?.label }}\n </ng-template>\n</nz-dropdown-menu>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n Input,\n ViewChild,\n Renderer2,\n} from '@angular/core';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\n\n@Component({\n selector: 'np-tooltip',\n imports: [\n NzButtonModule,\n NzTooltipModule,\n CommonModule,\n NpTypographyComponent,\n ],\n templateUrl: './np-tooltip.component.html',\n styleUrl: './np-tooltip.component.scss',\n})\nexport class NpTooltipComponent {\n @Input() npType: 'primary' | 'secondary' = 'primary';\n @Input() text: string = 'Title';\n @Input() descriptions?: string;\n @Input() position?: string;\n @Input() tooltipVisible: boolean = false;\n\n @ViewChild('container', { static: true }) container!: ElementRef;\n\n _ngContent: Element | null = null;\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n constructor(private renderer: Renderer2) { }\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n // if (typeof this._ngContent === 'string') {\n // const contentContainer = this.renderer.createElement('ng-container');\n // contentContainer.innerHTML = this.ngContent;\n // this.renderer.appendChild(this.container.nativeElement, contentContainer);\n // }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n\n get tooltipColor(): string {\n return this.npType === 'primary'\n ? 'rgba(255, 255, 255, 1)'\n : 'rgba(16, 24, 40, 1)';\n }\n}\n","<div\n #container\n class=\"h-full\"\n [nzTooltipTitle]=\"customTooltip\"\n [nzTooltipPlacement]=\"position\"\n nzTooltipTrigger=\"hover\"\n [nzTooltipVisible]=\"tooltipVisible\"\n nzTooltipOverlaynpClassName=\"tooltip-class\"\n nz-button\n nz-tooltip\n [nzTooltipColor]=\"tooltipColor\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #customTooltip>\n <div class=\"custom-tooltip\">\n <np-typography\n npType=\"text\"\n npSize=\"xs\"\n npWeight=\"semibold\"\n [ngStyle]=\"{\n color:\n npType === 'primary'\n ? 'rgba(52, 64, 84, 1)'\n : 'rgba(255, 255, 255, 1)',\n }\"\n >{{ text }}</np-typography\n >\n <np-typography\n npType=\"text\"\n npSize=\"xs\"\n npWeight=\"medium\"\n [ngStyle]=\"{\n color:\n npType === 'primary'\n ? 'rgba(52, 64, 84, 1)'\n : 'rgba(255, 255, 255, 1)',\n }\"\n >{{ descriptions }}</np-typography\n >\n </div>\n</ng-template>\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { INpAction } from '../../../interfaces/np.actions';\nimport { CommonModule } from '@angular/common';\nimport { NpTooltipComponent } from '../np-tooltip/np-tooltip.component';\n\n@Component({\n selector: 'np-action-bar',\n imports: [CommonModule, NpTooltipComponent],\n templateUrl: './np-action-bar.component.html',\n styleUrl: './np-action-bar.component.scss',\n})\nexport class NpActionBarComponent {\n @Input() actions: INpAction[] = [];\n @Input() data: any;\n @Input() notCompressMin: number = 5;\n @Input() isNotResponsive: boolean = false;\n\n @ViewChild('triggerBtn', { read: ElementRef }) triggerBtn!: ElementRef;\n @ViewChild('resizeContainer') resizeContainer!: ElementRef;\n @ViewChild('scrollWrapper') scrollWrapper!: ElementRef;\n\n unCompressedActions: INpAction[] = [];\n unCompressedActions2: INpAction[] = [];\n compressedActions: INpAction[] = [];\n\n isMoreOpen = false;\n dropdownStyles: { top: string; left: string } = { top: '0px', left: '0px' };\n\n countIcon = 0;\n countResize = 0;\n canPrevious = false;\n canNext = false;\n isOverflowing = false;\n isPreviousDisable = false;\n isNextDisable = false;\n isReturn = false;\n valueStart = 0;\n isCheckValue = false;\n scrollMaxWidth: number | null = null;\n totalActionWidth = 0;\n lastResizeWidth = 0;\n isResize = false;\n\n iconWidth = 0;\n visibleIcons = 0;\n\n private resizeStack: number[] = [];\n private resizeObserver: ResizeObserver | null = null;\n\n ngOnInit(): void {\n this.splitActions();\n this.unCompressedActions2 = this.unCompressedActions;\n this.countIcon = this.unCompressedActions.length;\n this.countResize = this.countIcon - 3;\n }\n\n ngAfterViewInit(): void {\n if (!this.isNotResponsive) {\n setTimeout(() => {\n this.updateScrollState();\n this.attachScrollListener();\n\n this.setupResizeObserver();\n\n let count = 0;\n const interval = setInterval(() => {\n this.updateScrollState();\n count++;\n if (count > 5) clearInterval(interval);\n });\n });\n }\n }\n\n private setupResizeObserver(): void {\n const parent = this.resizeContainer?.nativeElement?.parentElement;\n if (!parent || typeof ResizeObserver === 'undefined') return;\n\n this.resizeObserver = new ResizeObserver(() => {\n this.updateScrollState();\n });\n\n this.resizeObserver.observe(parent);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private splitActions() {\n const visible = this.actions.filter((a) => !a.hidden);\n const count = visible.length;\n\n this.unCompressedActions = visible.slice(0, this.notCompressMin);\n this.compressedActions =\n count > this.notCompressMin ? visible.slice(this.notCompressMin) : [];\n }\n\n trigger(action: INpAction): void {\n if (typeof action.onClick === 'function') {\n action.onClick(this.data);\n }\n this.isMoreOpen = false;\n }\n\n showMoreActions(): void {\n this.isMoreOpen = !this.isMoreOpen;\n\n if (this.isMoreOpen && this.triggerBtn?.nativeElement) {\n const rect = this.triggerBtn.nativeElement.getBoundingClientRect();\n\n const dropdownWidth = 150;\n const left =\n rect.left + rect.width / 2 - dropdownWidth / 2 + window.scrollX;\n\n this.dropdownStyles = {\n top: `${rect.bottom + 10}px`,\n left: `${Math.max(left, 10)}px`,\n };\n }\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const inside = this.triggerBtn?.nativeElement.contains(target);\n if (!inside) {\n this.isMoreOpen = false;\n }\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n this.isMoreOpen = false;\n }\n\n @HostListener('window:resize')\n onResize() {\n if (!this.isNotResponsive) {\n this.updateScrollState();\n }\n }\n\n // private updateScrollState(): void {\n // const el = this.resizeContainer?.nativeElement;\n // if (!el) return;\n\n // const totalActionWidth = el.npScrollWidth;\n // const parentWidth = el.parentElement ? el.parentElement.clientWidth - 3 : 0;\n\n // if (!this.isCheckValue) {\n // this.isCheckValue = true;\n // this.valueStart = totalActionWidth;\n // }\n\n // if (parentWidth > this.valueStart) this.isReturn = false;\n\n // if (parentWidth > totalActionWidth) {\n // if (!this.isReturn) this.scrollMaxWidth = totalActionWidth;\n // } else {\n // this.scrollMaxWidth = 64;\n // this.isReturn = true;\n // }\n\n // if (totalActionWidth >= parentWidth || this.isReturn) {\n // this.isOverflowing = true;\n // this.unCompressedActions2 = [\n // ...this.unCompressedActions,\n // ...this.compressedActions,\n // ];\n // } else {\n // this.isOverflowing = false;\n // this.unCompressedActions2 = [...this.unCompressedActions];\n // }\n\n // this.canPrevious = this.isOverflowing;\n // this.canNext = this.isOverflowing;\n\n // setTimeout(() => {\n // this.updateBtnScroll();\n // }, 0);\n // }\n\n private updateScrollState(): void {\n const el = this.resizeContainer?.nativeElement;\n if (!el) return;\n\n if (this.totalActionWidth !== this.scrollMaxWidth) {\n this.totalActionWidth = el.npScrollWidth;\n }\n\n let parentWidth = el.parentElement ? el.parentElement.clientWidth - 3 : 0;\n\n if (!this.isCheckValue) {\n this.isCheckValue = true;\n this.valueStart = this.totalActionWidth;\n }\n\n if (parentWidth > this.valueStart) this.isReturn = false;\n\n if (this.isReturn) {\n parentWidth = parentWidth - 73;\n }\n\n if (parentWidth > this.totalActionWidth) {\n const lastState = this.resizeStack[this.resizeStack.length - 1];\n if (this.countResize === this.countIcon - 3) {\n this.scrollMaxWidth = this.valueStart;\n this.isResize = false;\n }\n if (parentWidth > lastState) {\n this.countResize++;\n const last = this.resizeStack.pop();\n this.scrollMaxWidth = last !== undefined ? last : null;\n this.totalActionWidth = last !== undefined ? last : 0;\n }\n } else {\n this.scrollMaxWidth = this.countResize * 25 - 11;\n const lastState = this.resizeStack[this.resizeStack.length - 1];\n if (lastState !== this.scrollMaxWidth) {\n this.resizeStack.push(this.totalActionWidth);\n }\n if (this.totalActionWidth !== this.scrollMaxWidth) {\n this.totalActionWidth = this.scrollMaxWidth;\n this.countResize--;\n this.lastResizeWidth = parentWidth;\n }\n this.isResize = true;\n this.isReturn = true;\n }\n\n if (this.totalActionWidth >= parentWidth || this.isReturn) {\n this.isOverflowing = true;\n this.unCompressedActions2 = [\n ...this.unCompressedActions,\n ...this.compressedActions,\n ];\n } else {\n this.isOverflowing = false;\n this.unCompressedActions2 = [...this.unCompressedActions];\n }\n\n this.canPrevious = this.isOverflowing;\n this.canNext = this.isOverflowing;\n\n setTimeout(() => {\n this.updateBtnScroll();\n }, 0);\n }\n\n updateBtnScroll(): void {\n const ele = this.scrollWrapper?.nativeElement;\n\n this.isPreviousDisable = ele.scrollLeft <= 0;\n this.isNextDisable = ele.scrollLeft + ele.clientWidth >= ele.npScrollWidth;\n }\n\n private attachScrollListener() {\n const el = this.scrollWrapper?.nativeElement;\n if (el) {\n el.addEventListener('scroll', () => this.updateBtnScroll());\n }\n }\n\n scrollLeft(): void {\n if (this.isPreviousDisable) return;\n\n const el = this.scrollWrapper?.nativeElement;\n if (el) {\n const scrollAmount = this.getScrollStep();\n el.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n console.log('scrollLeft :', scrollAmount);\n }\n }\n\n scrollRight(): void {\n if (this.isNextDisable) return;\n\n const el = this.scrollWrapper?.nativeElement;\n if (el) {\n const scrollAmount = this.getScrollStep();\n el.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n console.log('scrollLeft :', scrollAmount);\n }\n }\n\n getScrollStep(): number {\n const el = this.scrollWrapper?.nativeElement;\n const btn = el?.querySelector('button');\n if (!btn) return 100; // fallback\n\n const iconWidth = btn.offsetWidth;\n const gap = 12;\n const containerWidth = el.clientWidth;\n\n const visibleIcons = Math.ceil(containerWidth / (iconWidth + gap));\n return visibleIcons * (iconWidth + gap);\n }\n}\n","<div class=\"relative flex w-full justify-center items-center\">\n <div #resizeContainer class=\"np-action-bar flex items-center rounded-full border border-gray-300 bg-white px-1 py-1\">\n <button\n *ngIf=\"canPrevious\"\n (click)=\"scrollLeft()\"\n class=\"rounded-full flex items-center justify-center bg-gray-100 w-[26px] h-[20px] btn-previous\"\n [ngClass]=\"{\n 'opacity-40 cursor-not-allowed': isPreviousDisable,\n 'cursor-pointer': !isPreviousDisable,\n\n }\"\n >\n <i class=\"fa-solid fa-chevron-left px-3 py-1\"></i>\n </button>\n\n <div\n #scrollWrapper\n class=\"flex w-full no-scrollbar scroll-smooth\"\n [ngClass]=\"{\n 'mx-3': compressedActions.length === 0 && !canPrevious,\n 'ms-3': !canPrevious && compressedActions.length > 0,\n 'overflow-x-auto': isOverflowing,\n }\"\n [ngStyle]=\"{ 'max-width.px': scrollMaxWidth }\"\n >\n <ng-container *ngFor=\"let action of unCompressedActions2\">\n <np-tooltip [text]=\"action.label || ''\" class=\"h-[20px]\">\n <button\n class=\"action-btn cursor-pointer bg-transparent\"\n (click)=\"trigger(action)\"\n >\n <i class=\"{{ action.classIcon }}\"></i>\n </button>\n </np-tooltip>\n </ng-container>\n </div>\n\n <button\n *ngIf=\"canNext\"\n (click)=\"scrollRight()\"\n class=\"rounded-full flex items-center justify-center bg-gray-100 w-[26px] h-[20px] btn-next\"\n [ngClass]=\"{\n 'opacity-40 cursor-not-allowed': isNextDisable,\n 'cursor-pointer': !isNextDisable,\n }\"\n >\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n\n <np-tooltip\n *ngIf=\"compressedActions.length > 0 && !isOverflowing\"\n text=\"More actions\"\n class=\"px-3 ms-1 rounded-2xl h-[20px]\"\n [ngClass]=\"{\n 'bg-gray-100': isMoreOpen,\n 'bg-transparent': !isMoreOpen,\n }\"\n >\n <button\n #triggerBtn\n class=\"action-btn cursor-pointer bg-transparent\"\n (click)=\"showMoreActions()\"\n >\n <i class=\"fa-solid fa-ellipsis\"></i>\n </button>\n </np-tooltip>\n </div>\n</div>\n\n<div\n *ngIf=\"isMoreOpen\"\n class=\"fixed z-999 min-w-[150px] bg-white border border-gray-200 rounded-lg shadow-md overflow-hidden\"\n [ngStyle]=\"dropdownStyles\"\n>\n <ng-container *ngFor=\"let action of compressedActions\">\n <button\n class=\"flex w-full items-center gap-2 px-3 py-2 hover:bg-gray-100 transition-all duration-150 text-left\"\n (click)=\"trigger(action)\"\n >\n <i class=\"{{ action.classIcon }}\"></i>\n {{ action.label }}\n </button>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { INpTreeNode } from '../../../interfaces/np-tree.interface';\nimport { NpButtonComponent } from '../np-button/np-button.component';\nimport { NpCheckboxComponent } from '../np-checkbox/np-checkbox.component';\nimport { NpActionBarComponent } from '../np-action-bar/np-action-bar.component';\n\ninterface IFlatTreeNode extends INpTreeNode {\n isLastByLevel?: { [level: number]: boolean };\n hasParentByLevel?: { [level: number]: boolean };\n}\n\n@Component({\n selector: 'np-tree',\n imports: [\n CommonModule,\n NpCheckboxComponent,\n NpButtonComponent,\n RouterModule,\n NpActionBarComponent,\n ],\n templateUrl: './np-tree.component.html',\n styleUrl: './np-tree.component.scss',\n})\nexport class NpTreeComponent implements OnInit {\n @Input() npType: 'checkbox' | 'icon' | 'default' = 'default';\n @Input() expandPosition: 'left' | 'right' = 'left';\n @Input() notCompressMin: number = 3;\n @Input() isCompactActions: boolean = false;\n @Input() autoHideActions: boolean = true;\n @Input() npClassName: string = '';\n\n\n _list: INpTreeNode[] | undefined = [];\n _flattenList: INpTreeNode[] | undefined = [];\n @Input()\n set list(value: INpTreeNode[] | undefined) {\n this._flattenList = this.getFlattenList(value);\n this._list = value;\n this.visibleNodes = this.getVisibleNodes();\n }\n\n _input: FormControl = new FormControl(null);\n @Input()\n set input(value: FormControl | undefined) {\n this._input = !!value ? (value as FormControl) : new FormControl([]);\n }\n\n @Output() valueChange = new EventEmitter<string[]>();\n\n @Input() itemActiveId = '';\n @Input() useLine = false;\n\n visibleNodes: INpTreeNode[] = [];\n\n getFlattenList(\n arr: INpTreeNode[] | undefined,\n level = 0,\n parentId: string | null = null,\n parentLastMap: Record<number, boolean> = {},\n parentMap: Record<number, boolean> = {}\n ): IFlatTreeNode[] {\n if (!arr) return [];\n\n return arr.reduce((acc: IFlatTreeNode[], item, index, array) => {\n const isLast = index === array.length - 1;\n const isLastByLevel = { ...parentLastMap, [level]: isLast };\n const hasParentByLevel = { ...parentMap, [level]: !!parentId };\n\n const flatItem: IFlatTreeNode = {\n ...item,\n level,\n parentId,\n isExpanded: item.isExpanded === true && !!item.childrens?.length,\n isLastByLevel,\n hasParentByLevel,\n };\n\n acc.push(flatItem);\n\n if (item.childrens?.length) {\n const children = this.getFlattenList(\n item.childrens,\n level + 1,\n item.id,\n isLastByLevel,\n hasParentByLevel\n );\n acc.push(...children);\n }\n\n return acc;\n }, []);\n }\n\n onExpand(event: any, item: INpTreeNode) {\n if (item.path) {\n event.stopPropagation();\n }\n item.isExpanded = !item.isExpanded;\n this.visibleNodes = this.getVisibleNodes();\n }\n\n getVisibleNodes(): INpTreeNode[] {\n const result: INpTreeNode[] = [];\n const map = new Map(this._flattenList?.map((item) => [item.id, item]));\n\n for (const item of this._flattenList ?? []) {\n if (!item.parentId || this.isParentExpanded(item, map)) {\n result.push(item);\n }\n }\n\n return result;\n }\n\n isParentExpanded(item: INpTreeNode, map: Map<any, INpTreeNode>): boolean {\n let parent = map.get(item.parentId);\n while (parent) {\n if (!parent.isExpanded) return false;\n parent = map.get(parent.parentId);\n }\n return true;\n }\n\n itemHasChildren(item: INpTreeNode): boolean {\n return this._flattenList?.some((x) => x.parentId === item.id) ?? false;\n }\n\n onSelectItem(item: INpTreeNode) {\n if (!item) {\n return;\n }\n item.isSelected = !item.isSelected;\n this.itemActiveId = item.id;\n\n if (this.npType === 'default') return;\n this.onCheckItem(item);\n }\n\n onCheckItem(item: INpTreeNode) {\n const isParentClick = this.itemHasChildren(item);\n\n item.isChecked = !item.isChecked;\n item.isIndeterminate = false;\n item.checkboxType = 'checkbox';\n\n if (isParentClick) {\n this.updateChildrenSelection(item);\n }\n\n this.updateParentSelection(item.parentId ?? undefined);\n this.onValueChange();\n }\n\n updateParentSelection(parentId: string | undefined) {\n if (!parentId) return;\n\n const parentNode = this._flattenList?.find((x) => x.id === parentId);\n if (!parentNode) return;\n\n const children =\n this._flattenList?.filter((x) => x.parentId === parentNode.id) ?? [];\n\n const allSelected = children.every((child) => child.isChecked);\n const someSelected = children.some(\n (child) => child.isChecked || child.isIndeterminate\n );\n\n parentNode.isIndeterminate = someSelected && !allSelected;\n parentNode.isChecked = allSelected || (someSelected && !allSelected);\n parentNode.checkboxType = allSelected\n ? 'checkbox'\n : someSelected\n ? 'indeterminate'\n : undefined;\n\n this.updateParentSelection(parentNode.parentId ?? undefined);\n }\n\n updateChildrenSelection(node: INpTreeNode) {\n const children =\n this._flattenList?.filter((x) => x.parentId === node.id) ?? [];\n for (const child of children) {\n child.isChecked = node.isChecked;\n child.isIndeterminate = false;\n child.checkboxType = 'checkbox';\n this.updateChildrenSelection(child);\n }\n }\n\n onValueChange() {\n // this.valueChange.\n // console.log('data-datadata', this._input?.value);\n }\n\n onSelectAction(event: any) {\n if (event.onClick()) {\n event.onClick(event);\n }\n }\n ngOnInit() {\n if (this._list?.length) {\n this.normalizeIcons(this._list);\n }\n }\n\n normalizeIcons(list: INpTreeNode[]) {\n list.forEach((item) => {\n if (item.iconCollapsed) {\n item.iconExpanded ??= item.iconCollapsed;\n item.iconLeaf ??= item.iconCollapsed;\n }\n\n if (item.childrens?.length) {\n this.normalizeIcons(item.childrens);\n }\n });\n }\n\n getNodeClasses(item: any, isLast: boolean): { [key: string]: boolean } {\n return {\n ['level-' + (item.level ?? 0)]: true,\n 'is-last': isLast,\n };\n }\n}\n","<ng-template\n #wrapWithLevel\n let-content\n let-level=\"level\"\n let-max=\"max\"\n let-isLastByLevel=\"isLastByLevel\"\n let-hasParentByLevel=\"hasParentByLevel\"\n let-isLine=\"isLine\"\n>\n <div\n [ngClass]=\"[\n 'tree-line',\n 'level-' + level,\n isLine ? '' : 'no-line',\n isLastByLevel?.[level] ? 'is-last' : '',\n hasParentByLevel?.[level] ? 'has-parent' : '',\n expandPosition === 'right' ? 'expand-right' : '',\n ]\"\n >\n @if (level < max) {\n <ng-container\n *ngTemplateOutlet=\"\n wrapWithLevel;\n context: {\n $implicit: content,\n level: level + 1,\n max: max,\n isLastByLevel: isLastByLevel,\n hasParentByLevel: hasParentByLevel,\n isLine: isLine,\n }\n \"\n ></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n </div>\n</ng-template>\n\n<div class=\"np-tree {{ npClassName }}\">\n @for (item of visibleNodes; track item; let isLast = $last) {\n <ng-template #treeNodeContent>\n <div\n class=\"tree-node\"\n [ngClass]=\"[\n itemHasChildren(item) ? 'has-children' : '',\n item.parentId ? 'has-parent' : '',\n ]\"\n >\n <div\n class=\"flex py-[7px] w-full min-h-[40px] bt-1 cursor-pointer tree-item group {{\n item.npClassName\n }}\"\n [class.tree-node-selected]=\"item?.id === itemActiveId\"\n [routerLink]=\"item.path ? item.path : null\"\n [routerLinkActive]=\"item.path ? 'tree-node-selected' : ''\"\n >\n <div class=\"flex gap-1 items-center\">\n @if (expandPosition === \"left\") {\n @if (itemHasChildren(item)) {\n <np-button\n npType=\"icon\"\n npSize=\"bs\"\n (click)=\"onExpand($event, item)\"\n >\n <i\n class=\"fa-solid fa-caret-right\"\n [ngClass]=\"item?.isExpanded ? 'iconExpand' : ''\"\n style=\"color: rgba(102, 112, 133, 1)\"\n ></i>\n </np-button>\n } @else {\n <div class=\"w-[15px] h-[14px]\"></div>\n }\n }\n\n <div class=\"flex items-center gap-1\" (click)=\"onSelectItem(item)\">\n @if (npType === \"checkbox\") {\n <np-checkbox\n [input]=\"item.isChecked\"\n [npType]=\"item.checkboxType || 'checkbox'\"\n size=\"md\"\n (valueChange)=\"onCheckItem(item)\"\n (click)=\"$event.stopPropagation()\"\n ></np-checkbox>\n }\n @if (npType === \"icon\") {\n <i\n class=\"fa-light\"\n [ngClass]=\"\n item?.childrens?.length\n ? item?.isExpanded\n ? item?.iconExpanded\n : item?.iconCollapsed\n : item?.iconLeaf\n \"\n ></i>\n }\n\n <span class=\"text-[16px] whitespace-nowrap\">{{\n item?.name\n }}</span>\n </div>\n </div>\n\n <div class=\"px-2 w-full flex items-center justify-end gap-1\">\n @if ((item?.actions?.length ?? 0) > 0) {\n <np-action-bar\n class=\"w-full flex justify-end\"\n ngClass=\"\n {{\n autoHideActions\n ? 'opacity-0 group-hover:opacity-100 transition-opacity duration-200'\n : ''\n }}\n \"\n [actions]=\"item.actions ?? []\"\n [notCompressMin]=\"this.notCompressMin\"\n [isNotResponsive]=\"isCompactActions\"\n (click)=\"item.path ? $event.stopPropagation() : null\"\n >\n </np-action-bar>\n }\n @if (expandPosition === \"right\") {\n @if (itemHasChildren(item)) {\n <np-button\n npType=\"icon\"\n npSize=\"bs\"\n (click)=\"onExpand($event, item)\"\n npClassName=\"flex w-[17px]\"\n >\n <i\n class=\"fa-solid fa-chevron-right\"\n [ngClass]=\"item?.isExpanded ? 'iconExpand' : ''\"\n style=\"color: rgba(102, 112, 133, 1)\"\n ></i>\n </np-button>\n } @else {\n <div class=\"w-[17px]\"></div>\n }\n }\n </div>\n </div>\n </div>\n </ng-template>\n\n <ng-container\n *ngTemplateOutlet=\"\n wrapWithLevel;\n context: {\n $implicit: treeNodeContent,\n level: 0,\n max: item.level ?? 0,\n isLastByLevel: item.isLastByLevel,\n hasParentByLevel: item.hasParentByLevel,\n isLine: useLine,\n }\n \"\n ></ng-container>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'np-pagination',\n imports: [CommonModule, NpTypographyComponent, FormsModule],\n templateUrl: './np-pagination.component.html',\n styleUrl: './np-pagination.component.scss',\n})\nexport class NpPaginationComponent implements OnChanges, OnInit {\n @Input() npType: 'basic' | 'outlined' | 'text' | 'simple' | 'full' = 'basic';\n @Input() totalItems: number = 0;\n @Input() pageSize: number[] = [];\n @Input() npReverse: boolean = false;\n @Output() pageSizeChange = new EventEmitter<number>();\n\n pageTotal: number = 1;\n\n private _pageSizeValue: number = 10;\n private _pageIndex: number = 1;\n\n isDropdownOpenMap: { [key: string]: boolean } = {\n basic: false,\n outlined: false,\n text: false,\n simple: false,\n full: false,\n };\n\n @Input()\n get pageIndex(): number {\n return this._pageIndex;\n }\n set pageIndex(value: number) {\n if (value !== this._pageIndex) {\n this._pageIndex = value;\n }\n }\n\n @Input()\n get pageSizeOptions(): number {\n return this._pageSizeValue;\n }\n set pageSizeOptions(value: number) {\n if (value !== this._pageSizeValue) {\n this._pageSizeValue = value;\n this.pageIndex = 1;\n this.calculatePageTotal();\n }\n }\n\n @Output() pageIndexChange = new EventEmitter<number>();\n @ViewChild('dropdownTrigger', { static: false }) triggerRef!: ElementRef;\n\n ngOnInit(): void {\n if (this.pageSize?.length > 0) {\n this.pageSizeOptions = this.pageSize[0];\n }\n this.calculatePageTotal();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['pageSize']) {\n this.pageSizeOptions = this.pageSize?.length > 0 ? this.pageSize[0] : 10;\n }\n this.calculatePageTotal();\n }\n\n calculatePageTotal() {\n this.pageTotal = Math.ceil(this.totalItems / this.pageSizeOptions);\n if (this.pageIndex >= this.pageTotal) {\n this.pageIndex = this.pageTotal;\n }\n if (this.pageIndex < 1) {\n this.pageIndex = 1;\n }\n }\n\n onPageSizeChange(newSize: string) {\n const size = Number(newSize);\n if (!isNaN(size)) {\n this.pageSizeOptions = size;\n this.pageIndex = 1;\n this.pageSizeChange.emit(size);\n this.calculatePageTotal();\n }\n }\n\n dropdownStyleMap: { [key: string]: any } = {};\n\n toggleDropdownByType(npType: string) {\n Object.keys(this.isDropdownOpenMap).forEach((key) => {\n this.isDropdownOpenMap[key] = false;\n });\n\n this.isDropdownOpenMap[npType] = true;\n\n setTimeout(() => {\n const triggerEl = this.triggerRef?.nativeElement;\n const dropdownEl = document.querySelector(\n '.np-dropdown'\n ) as HTMLElement;\n\n if (triggerEl && dropdownEl) {\n const rect = triggerEl.getBoundingClientRect();\n const dropdownRect = dropdownEl.getBoundingClientRect();\n\n let top = rect.bottom;\n let left = rect.left;\n const width = rect.width;\n\n if (top + dropdownRect.height <= window.innerHeight) {\n this.dropdownStyleMap[npType] = {\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n };\n return;\n }\n\n const topPos = rect.top - dropdownRect.height;\n if (topPos >= 0) {\n this.dropdownStyleMap[npType] = {\n top: `${topPos - 10}px`,\n left: `${left}px`,\n width: `${width}px`,\n };\n return;\n }\n\n // // doing right\n // const rightPos = rect.right;\n // if (rightPos + dropdownRect.width <= window.innerWidth) {\n // this.dropdownStyleMap[npType] = {\n // top: `${rect.top}px`,\n // left: `${rightPos}px`,\n // width: `${dropdownRect.width}px`,\n // };\n // return;\n // }\n\n // // doing left\n // const leftPos = rect.left - dropdownRect.width;\n // if (leftPos >= 0) {\n // this.dropdownStyleMap[npType] = {\n // top: `${rect.top}px`,\n // left: `${leftPos}px`,\n // width: `${dropdownRect.width}px`,\n // };\n // return;\n // }\n\n this.dropdownStyleMap[npType] = {\n top: `${rect.top - dropdownRect.height}px`,\n left: `${rect.left}px`,\n width: `${width}px`,\n };\n }\n });\n }\n\n onSelectPageSize(size: number) {\n this.isDropdownOpenMap[this.npType] = false;\n this.onPageSizeChange(size.toString());\n }\n\n getDisplayedPages(): (number | string)[] {\n const pages: (number | string)[] = [];\n const total = this.pageTotal;\n const current = this.pageIndex;\n\n if (total <= 7) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n pages.push(1, 2, 3);\n\n if (current > 3) {\n pages.push('...');\n }\n\n let start = Math.max(4, current - 1);\n let end = Math.min(total - 3, current + 1);\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (current < total - 3) {\n pages.push('...');\n }\n\n pages.push(total - 2, total - 1, total);\n\n return pages;\n }\n\n prevPage() {\n if (this.pageIndex > 1) {\n this.changePage(this.pageIndex - 1);\n }\n }\n\n nextPage() {\n if (this.pageIndex < this.pageTotal) {\n this.changePage(this.pageIndex + 1);\n }\n }\n\n changePage(newPage: number | string) {\n if (typeof newPage === 'number' && newPage !== this.pageIndex) {\n this.pageIndex = newPage;\n this.pageIndexChange.emit(this.pageIndex);\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n const clickedInside = this.triggerRef?.nativeElement?.contains(\n event.target\n );\n if (!clickedInside && this.npType) {\n this.isDropdownOpenMap[this.npType] = false;\n }\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n if (this.npType) {\n this.isDropdownOpenMap[this.npType] = false;\n }\n }\n}\n","<ng-container [ngSwitch]=\"npType\">\n <div *ngSwitchCase=\"'basic'\">\n <div\n class=\"flex items-center justify-between gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex items-center justify-between space-x-2 gap-3\">\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed w-[38px] flex items-center justify-center\"\n >\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n <i class=\"fa-solid fa-arrow-left me-1\" style=\"color: #475467;\"></i>\n </np-typography> -->\n </button>\n\n <div class=\"flex gap-[1px] mx-0\">\n <ng-container *ngFor=\"let page of getDisplayedPages()\">\n <button\n *ngIf=\"page !== '...'; else dots\"\n (click)=\"changePage(page)\"\n [class.bg-gray-200]=\"page === pageIndex\"\n class=\"px-3 py-2 text-gray-700 rounded-md hover:bg-gray-200 w-[40px] cursor-pointer\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(24, 34, 48, 1)\"\n >{{ page }}</np-typography\n >\n </button>\n\n <ng-template #dots>\n <span class=\"px-2\">...</span>\n </ng-template>\n </ng-container>\n </div>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed w-[38px] flex items-center justify-center\"\n >\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n <i class=\"fa-solid fa-arrow-right ms-1\" style=\"color: #475467;\"></i>\n </np-typography> -->\n </button>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md\"\n [ngStyle]=\"dropdownStyleMap[npType]\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'outlined'\">\n <div\n class=\"flex items-center gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div\n class=\"flex items-center flex-1 space-x-2\"\n [ngClass]=\"npReverse ? 'justify-end' : ''\"\n >\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n <i class=\"fa-solid fa-arrow-left me-1\" style=\"color: #475467;\"></i> Previous\n </np-typography> -->\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n </button>\n\n <div class=\"flex gap-[1px] mx-3\">\n <ng-container *ngFor=\"let page of getDisplayedPages()\">\n <button\n *ngIf=\"page !== '...'; else dots\"\n (click)=\"changePage(page)\"\n [class.bg-gray-200]=\"page === pageIndex\"\n class=\"px-[12px] py-[8px] text-gray-700 rounded-md hover:bg-gray-200 w-[40px] cursor-pointer\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(24, 34, 48, 1)\"\n >{{ page }}</np-typography\n >\n </button>\n\n <ng-template #dots>\n <span class=\"px-2\">...</span>\n </ng-template>\n </ng-container>\n </div>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"h-[36px] flex items-center justify-centercursor-pointer flex items-center justify-center disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n Next <i class=\"fa-solid fa-arrow-right ms-1\" style=\"color: #475467;\"></i>\n </np-typography> -->\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n </button>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] border border-gray-300 rounded-sm bg-white cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n [ngStyle]=\"dropdownStyleMap[npType]\"\n *ngIf=\"isDropdownOpenMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md overflow-auto\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'text'\">\n <div\n class=\"flex items-center gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex justify-between items-center flex-1\">\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n Page {{ pageIndex }} of {{ pageTotal }}\n </np-typography>\n\n <div class=\"flex gap-3\">\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">Previous</np-typography> -->\n </button>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"=cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">Next</np-typography> -->\n </button>\n </div>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] bg-transparent cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[npType]\"\n [ngStyle]=\"dropdownStyleMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md overflow-auto\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'simple'\">\n <div\n class=\"flex items-center gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex justify-between items-center flex-1\">\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">Previous</np-typography> -->\n </button>\n\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n Page {{ pageIndex }} of {{ pageTotal }}\n </np-typography>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed border border-[#D0D5DD] rounded-[4px] w-[38px] h-[36px] flex items-center justify-center focus:ring-4 focus:ring-[rgba(152,162,179,0.14)]\"\n >\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">Next</np-typography> -->\n </button>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] bg-transparent cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[npType]\"\n [ngStyle]=\"dropdownStyleMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md overflow-auto\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'full'\">\n <div\n class=\"flex items-center gap-3\"\n [ngClass]=\"npReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div\n class=\"flex items-center w-full flex-1\"\n [ngClass]=\"npReverse ? 'justify-end' : ''\"\n >\n <button\n (click)=\"prevPage()\"\n [disabled]=\"pageIndex === 1\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed w-[52px] h-[40px] border-y-1 border-s-1 border-[#D0D5DD] rounded-l-[4px]\"\n >\n <i class=\"fa-solid fa-arrow-left\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\" class=\"flex items-center\">\n <i class=\"fa-solid fa-arrow-left me-1\" style=\"color: #475467;\"></i> Previous\n </np-typography> -->\n </button>\n\n <div class=\"flex\">\n <ng-container\n *ngFor=\"let page of getDisplayedPages(); let last = last\"\n >\n <button\n *ngIf=\"page !== '...'; else dots\"\n (click)=\"changePage(page)\"\n [class.bg-gray-200]=\"page === pageIndex\"\n [ngClass]=\"{\n 'border-y-1 border-s-1': !last,\n 'border-1': last,\n }\"\n class=\"px-3 py-2 hover:bg-gray-200 w-[40px] h-[40px] border-[#D0D5DD] cursor-pointer\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(24, 34, 48, 1)\"\n >\n {{ page }}\n </np-typography>\n </button>\n\n <ng-template #dots>\n <span\n class=\"px-3 py-2 w-[40px] h-[40px] border-y-1 border-s-1 border-[#D0D5DD] cursor-text\"\n >\n ...\n </span>\n </ng-template>\n </ng-container>\n </div>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"pageIndex === pageTotal\"\n class=\"px-3 py-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed w-[52px] h-[40px] border-y-1 border-e-1 border-[#D0D5DD] rounded-r-[4px]\"\n >\n <i class=\"fa-solid fa-arrow-right\" style=\"color: #475467\"></i>\n <!-- <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: #475467;\">\n Next <i class=\"fa-solid fa-arrow-right ms-1\" style=\"color: #475467;\"></i>\n </np-typography> -->\n </button>\n </div>\n\n <div *ngIf=\"pageSize.length\" class=\"relative inline-block\">\n <div\n #dropdownTrigger\n class=\"px-[12px] py-[8px] border border-gray-300 rounded-sm bg-white cursor-pointer flex gap-3 items-center justify-between\"\n (click)=\"toggleDropdownByType(npType)\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"semibold\"\n style=\"color: rgba(52, 64, 84, 1)\"\n >\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[npType]\"\n [ngStyle]=\"dropdownStyleMap[npType]\"\n class=\"fixed z-100 np-dropdown mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md overflow-auto\"\n >\n <div\n *ngFor=\"let size of pageSize\"\n (click)=\"size !== pageSizeOptions && onSelectPageSize(size)\"\n class=\"px-[12px] py-[8px] hover:bg-gray-100\"\n [ngClass]=\"{\n 'cursor-not-allowed': size === pageSizeOptions,\n 'cursor-pointer': size !== pageSizeOptions,\n }\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\"\n >\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'np-scrollbar',\n imports: [CommonModule],\n templateUrl: './np-scrollbar.component.html',\n styleUrl: './np-scrollbar.component.scss',\n})\nexport class NpScrollbarComponent {\n @ViewChild('container', { static: true }) container!: ElementRef;\n // @Input() size: string ='sm' ;\n @Input() width?: string;\n @Input() height?: string;\n\n _ngContent: Element | null = null;\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n constructor(private renderer: Renderer2) {}\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n}\n","<div\n #container\n class=\"custom-scrollbar overflow-auto\"\n [ngStyle]=\"{ 'max-width': width, 'max-height': height }\"\n>\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, Renderer2 } from '@angular/core';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { NpAlertService } from '../../../services/np-alert.service';\n\n@Component({\n selector: 'np-alert',\n imports: [CommonModule, NpTypographyComponent],\n templateUrl: './np-alert.component.html',\n styleUrl: './np-alert.component.scss',\n})\nexport class NpAlertComponent {\n @Input() npType: 'notification' | 'toast' = 'notification';\n @Input() state: 'success' | 'info' | 'warning' | 'error' = 'info';\n @Input() description: string = '';\n @Input() title?: string;\n @Input() message?: string;\n @Input() autoHideDelay: number = 1000;\n @Input() autoHide: boolean = false;\n @Input() isFromService = false;\n\n isMessageVisible: boolean = false;\n opacity = 1;\n padding = '16px';\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private _alertService: NpAlertService\n ) { }\n\n ngOnInit() {\n this._alertService.alert$.subscribe((data) => {\n this.npType = data.npType ?? 'notification';\n this.state = data.state ?? 'info';\n this.title = data.title;\n this.description = data.description;\n this.message = data.message;\n this.opacity = 1;\n this.padding = '16px';\n setTimeout(() => this.startFadeOut(), this.autoHideDelay);\n });\n if (this.isFromService) {\n this.closeAlert();\n return;\n }\n if (this.autoHide) {\n setTimeout(() => this.startFadeOut(), this.autoHideDelay);\n }\n }\n\n startFadeOut() {\n let fadeDuration = 3000;\n let fadeInterval = 50;\n let step = fadeInterval / fadeDuration;\n\n let fadeEffect = setInterval(() => {\n if (this.opacity > 0) {\n // this.opacity -= step;\n this.opacity -= step * this.opacity;\n if (this.opacity <= 0.5) {\n this.opacity = 0;\n clearInterval(fadeEffect);\n this.removeSelf();\n }\n } else {\n clearInterval(fadeEffect);\n this.removeSelf();\n }\n }, fadeInterval);\n }\n\n closeAlert() {\n this.removeSelf();\n }\n\n removeSelf() {\n if (this.isFromService) {\n this.opacity = 0;\n this.padding = '0px';\n } else {\n this.renderer.removeChild(\n this.el.nativeElement.parentNode,\n this.el.nativeElement\n );\n }\n }\n\n showMessege() {\n this.isMessageVisible = !this.isMessageVisible;\n }\n\n getIcon(): string {\n switch (this.state) {\n case 'success':\n return 'fa-duotone fa-solid fa-circle-check';\n case 'info':\n return 'fa-duotone fa-solid fa-circle-info';\n case 'warning':\n return 'fa-duotone fa-solid fa-triangle-exclamation';\n case 'error':\n return 'fa-duotone fa-solid fa-circle-exclamation';\n default:\n return '';\n }\n }\n\n // getIconNotification(): string {\n // switch (this.state) {\n // case 'success':\n // return 'projects/neop-ui-lib/scss/images/success.png';\n // case 'warning':\n // return 'projects/neop-ui-lib/scss/images/warning.png';\n // case 'error':\n // return 'projects/neop-ui-lib/scss/images/error.png';\n // default:\n // return '';\n // }\n // }\n\n getIconNotification(): { icon: string; color: string } {\n switch (this.state) {\n case 'success':\n return { icon: 'fa-circle-check', color: '#12B76A' };\n case 'warning':\n return { icon: 'fa-circle-exclamation', color: '#F79009' };\n case 'error':\n return { icon: 'fa-circle-exclamation', color: '#F04438' };\n default:\n return { icon: '', color: '' };\n }\n }\n}","<ng-container>\n <div\n class=\"np-alert flex gap-3 items-start\"\n [ngClass]=\"npType\"\n [ngStyle]=\"{\n opacity: opacity,\n padding: padding,\n display: opacity == 0 ? 'none' : 'flex',\n }\"\n >\n <div\n class=\"icon-wrapper rounded-[10px]\"\n [ngClass]=\"state\"\n *ngIf=\"npType == 'toast'\"\n >\n <i [ngClass]=\"getIcon()\" class=\"p-[8px]\"></i>\n </div>\n <div\n class=\"icon-wrapper rounded-[10px]\"\n *ngIf=\"getIconNotification().icon && npType == 'notification'\"\n >\n <i\n class=\"glow fa-regular\"\n [ngClass]=\"getIconNotification().icon\"\n [ngStyle]=\"{ color: getIconNotification().color }\"\n >\n </i>\n </div>\n\n <div class=\"flex flex-col flex-1\">\n <div class=\"flex justify-between\" *ngIf=\"title\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\">{{\n title\n }}</np-typography>\n <button\n (click)=\"closeAlert()\"\n class=\"close-btn cursor-pointer opacity-50\"\n >\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"regular\">{{\n description\n }}</np-typography>\n <np-typography\n *ngIf=\"isMessageVisible\"\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n >\n {{ message }}\n </np-typography>\n\n <div class=\"flex gap-3 mt-2\" *ngIf=\"npType !== 'notification'\">\n <button (click)=\"closeAlert()\" class=\"dismiss cursor-pointer\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\"\n >Dismiss</np-typography\n >\n </button>\n <button\n *ngIf=\"message\"\n class=\"learn-more cursor-pointer\"\n (click)=\"showMessege()\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\"\n >Learn More</np-typography\n >\n </button>\n </div>\n </div>\n </div>\n</ng-container>\n","export enum ETypeNpBreadcrumb {\n BASIC = 'basic',\n SEPARATORS = 'separators',\n HIGHLIGHT = 'highlighted',\n}\n","export enum E_NP_BREADCRUMB {\n NAME = 'name',\n PARAM = 'param',\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { ETypeNpBreadcrumb } from '../../../enum/basic/breadcrumb.enum';\nimport { E_NP_BREADCRUMB } from '../../../enum/np-breadcrumb.enum';\n\ninterface INpBreadcrumb {\n label: string;\n url: string;\n}\n@Component({\n selector: 'np-breadcrumb',\n imports: [CommonModule],\n templateUrl: './np-breadcrumb.component.html',\n styleUrl: './np-breadcrumb.component.scss',\n})\nexport class NpBreadcrumbComponent implements OnInit, AfterViewInit {\n @Input() npType: string = ETypeNpBreadcrumb.BASIC;\n @Input() isBorder = true;\n @Input() iconBreakDown = 'fa-slash-forward';\n @Input() isBgLast = false;\n @Input() isGetFromUrl = false;\n @Input() isShowExpand = false;\n\n @Input() breadcrumbs: INpBreadcrumb[] | any = [];\n isExpanded = false;\n ETypeNpBreadcrumb = ETypeNpBreadcrumb;\n\n idBreadcrum = `${Math.floor(Math.random() * 100)}-${new Date()?.getTime()}`;\n constructor(\n private _Router: Router,\n private _ActivatedRoute: ActivatedRoute\n ) {}\n\n async ngOnInit() {\n this.getBreadcrumbs();\n this._Router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe(async () => {\n this.getBreadcrumbs();\n });\n }\n\n ngAfterViewInit(): void {\n const dotBreadcrum = document.getElementById(this.idBreadcrum);\n if(this.isShowExpand)\n {\n this.isExpanded = true;\n return;\n }\n if (dotBreadcrum) {\n dotBreadcrum.addEventListener('mouseover', () => {\n this.isExpanded = true;\n });\n dotBreadcrum.addEventListener('mouseleave', () => {\n this.isExpanded = false;\n });\n }\n }\n\n async getBreadcrumbs() {\n if (this.isGetFromUrl) {\n this.breadcrumbs = await this.createBreadcrumbs(\n this._ActivatedRoute.root\n );\n }\n }\n\n private async createBreadcrumbs(\n route: ActivatedRoute,\n url: string = '',\n breadcrumbs: any[] = []\n ): Promise<any[]> {\n const children: ActivatedRoute[] = route.children;\n if (!!children && children.length > 0) {\n for (const child of children) {\n const routeURL: string = child.snapshot.url\n .map((segment) => segment.path)\n .join('/');\n // .replace('#', '');\n if (routeURL !== '') {\n url += `/${routeURL}`;\n }\n const data: any = child.snapshot.data;\n if (\n data[E_NP_BREADCRUMB.NAME] &&\n !breadcrumbs?.some((x) => x?.url === url)\n ) {\n breadcrumbs.push({\n label: data[E_NP_BREADCRUMB.NAME],\n url,\n });\n }\n return await this.createBreadcrumbs(child, url, breadcrumbs);\n }\n }\n\n return breadcrumbs;\n }\n\n onRedirect(item: INpBreadcrumb | null) {\n if (!item) {\n this._Router.navigate(['/'], {\n relativeTo: this._ActivatedRoute,\n });\n return;\n }\n if (!item?.url) {\n return;\n }\n this._Router.navigate([item?.url], {\n relativeTo: this._ActivatedRoute,\n });\n }\n\n onExpand() {\n this.isExpanded = !this.isExpanded;\n }\n}\n","<div\n class=\"flex items-center gap-3 np-breadcrumb {{ npType }}\"\n [id]=\"idBreadcrum\"\n>\n <!-- [class.border-breadcrumb]=\"isBorder\" -->\n <i class=\"fa-light fa-house cursor-pointer\" (click)=\"onRedirect(null)\"></i>\n @for (item of breadcrumbs; track item; let index = $index; let first = $first;\n let last = $last) {\n <i class=\"fa-light {{ iconBreakDown }} text-[#D0D5DD]\"></i>\n @if (isExpanded) {\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: item, last: last, isBgLast: isBgLast }\n \"\n ></ng-container>\n } @else { @if (index === 1 && breadcrumbs.length > 2) {\n <div class=\"cursor-pointer\" (click)=\"onExpand()\">...</div>\n } @if (first || last) {\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate;\n context: { item: item, last: last, isBgLast: isBgLast }\n \"\n ></ng-container>\n } } }\n</div>\n\n<ng-template\n #contentTemplate\n let-item=\"item\"\n let-last=\"last\"\n let-isBgLast=\"isBgLast\"\n>\n <!-- [class.item-last]=\"last && isBgLast\" -->\n <div\n class=\"cursor-pointer text-[#475467]\"\n [class.item-last]=\"last && npType === ETypeNpBreadcrumb.HIGHLIGHT\"\n (click)=\"onRedirect(item)\"\n >\n {{ item?.label }}\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\n\n@Component({\n selector: 'np-progress-bar',\n imports: [NzProgressModule, CommonModule, NpTypographyComponent],\n templateUrl: './np-progress-bar.component.html',\n styleUrl: './np-progress-bar.component.scss',\n})\nexport class NpProgressBarComponent {\n @Input() npType: string = 'style-1';\n @Input() percent: number = 0;\n}\n","<nz-progress\n [nzPercent]=\"percent\"\n [nzShowInfo]=\"npType == 'style-2'\"\n [nzFormat]=\"customFormat\"\n nzStrokeColor=\"rgba(71, 84, 103, 1)\"\n></nz-progress>\n<np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n *ngIf=\"npType === 'style-3'\"\n class=\"flex justify-end\"\n>\n {{ percent }}%\n</np-typography>\n\n<ng-template #customFormat>\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\">\n {{ percent }}%\n </np-typography>\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'np-slider',\n standalone: true,\n imports: [FormsModule, NzSliderModule, NpTypographyComponent, CommonModule],\n templateUrl: './np-slider.component.html',\n styleUrl: './np-slider.component.scss',\n})\nexport class NpSliderComponent {\n private _values: number[] = [0, 50];\n\n @Input()\n get values(): number[] {\n return this._values;\n }\n set values(val: number[]) {\n this._values = val;\n this.valuesChange.emit(this._values);\n }\n\n @Input() min?: number = 0;\n @Input() max?: number = 100;\n @Input() step: number = 1;\n @Input() tooltipVisible: 'always' | 'never' | 'default' = 'default';\n @Input() isDisabled: boolean = false;\n @Input() isFloating: boolean = false;\n\n @Output() valuesChange = new EventEmitter<number[]>();\n\n}\n","<nz-slider\n nzRange\n [(ngModel)]=\"values\"\n [nzDisabled]=\"isDisabled\"\n [nzMin]=\"min\"\n [nzMax]=\"max\"\n [nzStep]=\"step\"\n [nzTipFormatter]=\"tooltipTemplate\"\n [nzTooltipVisible]=\"tooltipVisible\"\n >\n</nz-slider>\n\n<ng-template #tooltipTemplate let-value>\n <div [ngClass]=\"isFloating ? 'tooltip-class-floating' : 'tooltip-class'\">\n <np-typography npSize=\"sm\" npType=\"text\" npWeight=\"medium\" style=\"color: rgba(16, 24, 40, 1);\">\n {{value}} %\n </np-typography>\n </div>\n</ng-template>\n\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\n\n@Component({\n selector: 'np-loading-indicator',\n imports: [NzSpinModule, NzIconModule, CommonModule, NpTypographyComponent],\n templateUrl: './np-loading-indicator.component.html',\n styleUrl: './np-loading-indicator.component.scss',\n})\nexport class NpLoadingIndicatorComponent {\n @Input() npType: string = 'npType-1';\n @Input() npSize: string = 'sm';\n}\n","<div class=\"flex flex-col items-center gap-2\" [ngClass]=\"npSize\">\n <i\n *ngIf=\"npType === 'outlined'\"\n class=\"fa-duotone fa-solid fa-spinner-third fa-spin\"\n style=\"--fa-primary-color: #475467; --fa-secondary-color: #f2f4f7; --fa-secondary-opacity: 1;\">\n </i>\n <div *ngIf=\"npType === 'filled'\" class=\"solid-loader\"></div>\n\n <np-typography [npSize]=\"npSize\" npType=\"text\" npWeight=\"medium\" style=\"color: rgba(52, 64, 84, 1);\">\n Loading...\n </np-typography>\n</div>\n\n\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { FormControl, FormsModule } from '@angular/forms';\nimport { INpTableColumn } from '../../../interfaces/np-table.interface';\nimport { NpCheckboxComponent } from '../np-checkbox/np-checkbox.component';\nimport { Subscription } from 'rxjs';\nimport { NpPaginationComponent } from '../np-pagination/np-pagination.component';\nimport { NpTypographyComponent } from '../np-typography/np-typography.component';\nimport { NpLoadingIndicatorComponent } from '../np-loading-indicator/np-loading-indicator.component';\nimport { NpButtonComponent } from '../np-button/np-button.component';\nimport { NpScrollbarComponent } from '../np-scrollbar/np-scrollbar.component';\nimport { NpInputFieldComponent } from '../np-input-field/np-input-field.component';\nimport { TemplateRef } from '@angular/core';\nimport { CdkDragDrop, CdkDragStart, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\n@Component({\n selector: 'np-table',\n imports: [\n CommonModule,\n NpCheckboxComponent,\n NpPaginationComponent,\n NpTypographyComponent,\n NpLoadingIndicatorComponent,\n NpButtonComponent,\n NpScrollbarComponent,\n NpInputFieldComponent,\n FormsModule,\n DragDropModule\n ],\n templateUrl: './np-table.component.html',\n styleUrl: './np-table.component.scss',\n})\nexport class NpTableComponent {\n constructor(private cdr: ChangeDetectorRef) { }\n\n selectAllSub?: Subscription;\n selectAllFc = new FormControl(false);\n isIndeterminateAll = false;\n\n currentPage = 1;\n _pageSize: number[] = [];\n currentPageSize = 10;\n paginationWidth = '100%';\n\n isAtStart = true;\n isAtEnd = true;\n\n _dataSource: any[] = [];\n\n sortKey: string | null = null;\n sortDirection: 'asc' | 'desc' | null = null;\n originalDataSource: any[] = [];\n\n activeFilterKey: string | null = null;\n searchKeyword: { [key: string]: string } = {};\n searchControls: { [key: string]: FormControl } = {};\n selectedFilters: { [key: string]: Set<any> } = {};\n\n syncColumns: boolean = false;\n syncRows: boolean = false;\n\n @ViewChildren('filterIcon') filterIcons!: QueryList<ElementRef>;\n dropdownPositionMap: { [key: string]: any } = {};\n\n @ViewChild('headerTable') headerTable!: ElementRef;\n @ViewChild('bodyTable') bodyTable!: ElementRef;\n @ViewChild('tableContainer') tableContainer!: ElementRef;\n @ViewChild('tableMiddle') tableMiddle!: ElementRef;\n @ViewChild('tableLeft') tableLeft!: ElementRef;\n @ViewChild('tableRight') tableRight!: ElementRef;\n\n private isSyncingLeftScroll = false;\n private isSyncingMiddleScroll = false;\n private isSyncingRightScroll = false;\n\n private scrollListeners: (() => void)[] = [];\n\n _columns: INpTableColumn[] = [];\n @Input()\n set columns(value: INpTableColumn[]) {\n this._columns = value;\n this._columns = this._columns?.map(col => {\n col.filterListAfterSearch = col.filterList;\n return col;\n });\n }\n get columns(): INpTableColumn[] {\n return this._columns;\n }\n\n @Input()\n set dataSource(value: any[]) {\n this._dataSource =\n value?.map((row: any) => {\n const selectFc = row?.selectFc ?? new FormControl(false);\n selectFc.valueChanges.subscribe((checked: boolean | null) => {\n this.rowChecked.emit({ row, checked: !!checked });\n });\n return {\n ...row,\n selectFc,\n };\n }) || [];\n\n this.originalDataSource = [...this._dataSource];\n\n this.currentPage = 1;\n this.selectAllFc.setValue(false, { emitEvent: false });\n this.isIndeterminateAll = false;\n\n if (this.npSelectableType === 'checkbox') {\n this.bindSelectAllListener();\n }\n\n if (this.npSelectableType === 'radio') {\n this._dataSource.forEach((row) => {\n row.selectFc.valueChanges.subscribe((val: boolean) => {\n if (val) {\n this._dataSource.forEach((r) => {\n if (r !== row) {\n r.selectFc.setValue(false, { emitEvent: false });\n }\n });\n }\n });\n });\n }\n\n if (this._columns) {\n this._columns?.forEach(col => {\n if (!col?.filterList || col.filterList.length === 0) {\n const rawValues = this._dataSource?.map(x => x?.[col?.key]).filter(y => y !== null && y !== undefined && y !== '');\n\n const uniqueValues = Array.from(new Set(rawValues));\n\n col.filterList = uniqueValues;\n col.filterListAfterSearch = uniqueValues;\n }\n })\n }\n\n this.syncRowHeight();\n }\n\n @Input()\n set pageSize(value: number[]) {\n this._pageSize = value;\n this.currentPageSize = this._pageSize[0];\n }\n get pageSize(): number[] {\n return this._pageSize;\n }\n\n @Input() npSelectableType: 'checkbox' | 'radio' | null = null;\n @Input() npSortable = false;\n @Input() npFilterable = false;\n @Input() npDeleteable = false;\n @Input() npShowPagination = true;\n @Input() npPaginationType: 'basic' | 'outlined' | 'text' | 'simple' | 'full' =\n 'basic';\n @Input() state: 'error' | 'loading' | 'normal' = 'normal';\n @Input() npClassName: string = '';\n @Input() npLeftClass: string = ''; // npClassName for left fixed table\n @Input() npRightClass: string = ''; // npClassName for right fixed table\n @Input() npFixedColumnRange: [number, number] | null = null;\n @Input() npScrollWidth: string = '';\n @Input() npScrollHeight: string = '';\n @Input() npReverse: boolean = false;\n @Input() npBordered = false;\n\n @Input() npCustomRowTemplate?: TemplateRef<any>;\n @Input() npCustomRowCondition?: (row: any, index: number) => boolean;\n @Input() npDraggable: boolean = false;\n\n @Output() deleteSelectedRows = new EventEmitter<any[]>();\n @Output() sortChange = new EventEmitter<{\n key: string;\n direction: 'asc' | 'desc' | null;\n }>();\n @Output() filterChange = new EventEmitter<{\n [key: string]: string[];\n }>();\n @Output() rowChecked = new EventEmitter<{ row: any; checked: boolean }>();\n\n @Output() npRowDrop = new EventEmitter<any[]>();\n\n ngAfterViewInit() {\n if (this.npSelectableType === 'checkbox') {\n this.bindSelectAllListener();\n }\n this.updatePaginationWidth();\n this.cdr.detectChanges();\n this.syncRowHeight();\n this.setupScrollSync();\n }\n\n ngOnInit(): void {\n const [start, end] = this.npFixedColumnRange || [\n 0,\n this.columns.length - 1,\n ];\n this.isAtStart = start === 0;\n this.isAtEnd = end === this.columns.length - 1;\n }\n\n get fixedLeftColumns(): INpTableColumn[] {\n if (!this.npFixedColumnRange) return [];\n return this.columns.slice(0, this.npFixedColumnRange[0]);\n }\n\n get scrollableColumns(): INpTableColumn[] {\n if (!this.npFixedColumnRange) return this.columns;\n return this.columns.slice(\n this.npFixedColumnRange[0],\n this.npFixedColumnRange[1] + 1\n );\n }\n\n get fixedRightColumns(): INpTableColumn[] {\n if (!this.npFixedColumnRange) return [];\n return this.columns.slice(this.npFixedColumnRange[1] + 1);\n }\n\n private bindSelectAllListener() {\n this.selectAllSub?.unsubscribe();\n\n this.selectAllSub = this.selectAllFc.valueChanges.subscribe(\n (checked: boolean | null) => {\n this._dataSource?.forEach((row) => {\n row.selectFc.patchValue(checked, { emitEvent: false });\n this.rowChecked.emit({ row, checked: !!checked });\n });\n this.isIndeterminateAll = false;\n }\n );\n }\n\n get filteredData(): any[] {\n return this._dataSource.filter((row) => {\n for (const colKey in this.selectedFilters) {\n const selectedSet = this.selectedFilters[colKey];\n if (!selectedSet || selectedSet.size === 0) continue;\n\n const col = this.columns.find((c) => c.key === colKey);\n if (col && col.isFilterAPI) {\n continue;\n }\n const rowValue = row[colKey];\n\n const match = Array.from(selectedSet).some((filterValue) => {\n if (col?.filterFn) {\n return col.filterFn(rowValue, filterValue);\n }\n return rowValue === filterValue;\n });\n\n if (!match) return false;\n }\n\n return true;\n });\n }\n\n get pagedData() {\n const filtered = this.filteredData;\n\n if (this.npShowPagination) {\n const start = (this.currentPage - 1) * this.currentPageSize;\n const end = start + this.currentPageSize;\n return filtered.slice(start, end);\n } else {\n return filtered;\n }\n }\n\n onPageChange(newPage: number) {\n this.currentPage = newPage;\n }\n\n onPageSizeChange(newSize: number) {\n this.currentPageSize = newSize;\n this.currentPage = 1;\n }\n\n onSortColumn(column: INpTableColumn) {\n if (!column?.key) return;\n\n const modes = column.sortDirection || ['asc', 'desc', ''];\n\n const current = this.sortKey === column.key ? this.sortDirection || '' : '';\n const currentIndex = modes.indexOf(current as any);\n const nextIndex = (currentIndex + 1) % modes.length;\n const nextDirection = modes[nextIndex];\n\n this.sortKey = column.key;\n this.sortDirection = nextDirection === '' ? null : nextDirection;\n\n this.sortChange.emit({\n key: column.key,\n direction: this.sortDirection,\n });\n\n if (column.isSortAPI) {\n return;\n }\n\n if (!this.sortDirection) {\n this._dataSource = [...this.originalDataSource];\n return;\n }\n\n const sortFn = column.sortFn;\n\n const sortLogic = (arrayToSort: any[]) => {\n return arrayToSort.sort((a, b) => {\n if (sortFn) {\n const result = sortFn(a, b);\n return this.sortDirection === 'asc' ? result : -result;\n }\n\n const aValue = a[column.key!];\n const bValue = b[column.key!];\n\n const aNum = parseFloat(aValue);\n const bNum = parseFloat(bValue);\n const isNumber = !isNaN(aNum) && !isNaN(bNum);\n\n if (isNumber) {\n return this.sortDirection === 'asc' ? aNum - bNum : bNum - aNum;\n }\n\n return this.sortDirection === 'asc'\n ? String(aValue || '').localeCompare(String(bValue || ''))\n : String(bValue || '').localeCompare(String(aValue || ''));\n });\n };\n\n if (this.npCustomRowCondition) {\n let finalData: any[] = [];\n let currentGroupItems: any[] = []; \n\n this.originalDataSource.forEach((row, index) => {\n if (this.npCustomRowCondition!(row, index)) {\n if (currentGroupItems.length > 0) {\n finalData = finalData.concat(sortLogic(currentGroupItems));\n currentGroupItems = []; \n }\n finalData.push(row);\n } else {\n currentGroupItems.push(row);\n }\n });\n if (currentGroupItems.length > 0) {\n finalData = finalData.concat(sortLogic(currentGroupItems));\n }\n\n this._dataSource = finalData;\n\n } else {\n this._dataSource = sortLogic([...this.originalDataSource]);\n }\n\n this.currentPage = 1;\n }\n\n onChangeSelectColumn($event: boolean) {\n if (this.npSelectableType !== 'checkbox') return;\n\n const allSelected = this._dataSource?.every(\n (child) => child.selectFc?.value\n );\n const someSelected = this._dataSource?.some(\n (child) => child.selectFc?.value\n );\n this.isIndeterminateAll = someSelected && !allSelected;\n this.selectAllFc?.patchValue(someSelected, { emitEvent: false });\n }\n\n ngOnDestroy() {\n this.selectAllSub?.unsubscribe();\n this.scrollListeners.forEach(remove => remove());\n this.scrollListeners = [];\n }\n\n get selectedCount(): number {\n return this._dataSource.filter((row) => row.selectFc?.value).length;\n }\n\n onDeleteSelected() {\n const selectedRows = this._dataSource.filter((row) => row.selectFc?.value);\n\n this.deleteSelectedRows.emit(selectedRows);\n\n this._dataSource = this._dataSource.filter((row) => !row.selectFc?.value);\n\n this.currentPage = 1;\n\n this.selectAllFc.setValue(false, { emitEvent: false });\n this.isIndeterminateAll = false;\n }\n\n onRefresh() { }\n\n onContactSupport() { }\n\n toggleFilter(key: string) {\n this.activeFilterKey = this.activeFilterKey === key ? null : key;\n\n if (!this.searchControls[key]) {\n this.searchControls[key] = new FormControl('');\n\n this.searchControls[key].valueChanges.subscribe((val: string) => {\n this.searchKeyword[key] = val?.toLowerCase() || '';\n\n const column = this._columns?.find(x => x?.key === key);\n if (column && column.filterList) {\n column.filterListAfterSearch = column.filterList.filter(colValue =>\n String(colValue || '').toLowerCase().includes(this.searchKeyword[key])\n );\n }\n });\n }\n\n setTimeout(() => {\n const icon = this.filterIcons?.find(\n (_, idx) => this.columns[idx]?.key === key\n );\n if (icon) {\n const rect = icon.nativeElement.getBoundingClientRect();\n const dropdownWidth = 250;\n const left = rect.left + rect.width / 2 - dropdownWidth / 2;\n\n this.dropdownPositionMap[key] = {\n top: `${rect.bottom + 4}px`,\n left: `${left}px`,\n };\n }\n }, 0);\n }\n\n onClearSearch(colKey: string) {\n this.searchControls[colKey]?.setValue('');\n }\n\n shouldShowFilterCheck(colKey: string): boolean {\n return (\n this.selectedFilters[colKey]?.size > 0 && this.activeFilterKey !== colKey\n );\n }\n\n getDistinctFilteredValues(colKey: string): any[] {\n const keyword = this.searchKeyword[colKey]?.toLowerCase() || '';\n const uniqueLabels = new Set<string>();\n\n this._dataSource.forEach((row) => {\n const value = row[colKey];\n\n if (Array.isArray(value)) {\n value.forEach((item) => {\n const label = (item?.label || '').toString();\n if (label.toLowerCase().includes(keyword)) {\n uniqueLabels.add(label);\n }\n });\n } else {\n const label = value?.toString() || '';\n if (label.toLowerCase().includes(keyword)) {\n uniqueLabels.add(label);\n }\n }\n });\n\n return Array.from(uniqueLabels).sort((a, b) => a.localeCompare(b));\n }\n\n getFilteredColumnValues(colKey: string): any[] {\n const keyword = this.searchKeyword[colKey]?.toLowerCase() || '';\n return this._dataSource.filter((row) =>\n String(row[colKey]).toLowerCase().includes(keyword)\n );\n }\n\n isChecked(colKey: string, value: any): FormControl {\n const isSelected = this.selectedFilters[colKey]?.has(value) ?? false;\n return new FormControl(isSelected);\n }\n\n onToggleFilter(colKey: string, value: any, checked: boolean) {\n if (!this.selectedFilters[colKey]) {\n this.selectedFilters[colKey] = new Set<any>();\n }\n\n if (checked) {\n this.selectedFilters[colKey].add(value);\n } else {\n this.selectedFilters[colKey].delete(value);\n }\n\n this.currentPage = 1;\n\n const col = this.columns.find((c) => c.key === colKey);\n if (col?.isFilterAPI) {\n const filterObject: {\n [key: string]: string[];\n } = {};\n for (const key in this.selectedFilters) {\n filterObject[key] = Array.from(this.selectedFilters[key]);\n }\n this.filterChange.emit(filterObject);\n }\n\n if (this.activeFilterKey && this.activeFilterKey !== colKey) {\n const currentControl = this.searchControls[this.activeFilterKey];\n const value = currentControl?.value || '';\n currentControl?.setValue(value);\n }\n }\n\n onClearFilter(colKey: string) {\n this.selectedFilters[colKey] = new Set<any>();\n this.searchControls[colKey]?.setValue('');\n this.currentPage = 1;\n if (this.activeFilterKey === colKey) {\n this.activeFilterKey = null;\n }\n }\n\n onRowDrop(event: CdkDragDrop<any[]>) {\n moveItemInArray(this._dataSource, event.previousIndex, event.currentIndex);\n\n this.originalDataSource = [...this._dataSource];\n\n this.npRowDrop.emit(this._dataSource);\n }\n\n onDragStarted(event: CdkDragStart): void {\n const tbody = event.source.dropContainer.element.nativeElement;\n const table = tbody.closest('table');\n const sourceRow = event.source.element.nativeElement as HTMLTableRowElement;\n const root = sourceRow.closest('np-table') || document;\n\n if (!table) {\n return;\n }\n\n const previewDrag = document.querySelector('.cdk-drag-preview') as HTMLElement;\n if (!previewDrag) return;\n\n const isSplitTable = root.querySelector('.fixed-left') !== null || root.querySelector('.fixed-right') !== null;\n\n if (isSplitTable) {\n const fixCellSize = (cell: Element, th: Element) => {\n const el = cell as HTMLElement;\n const exactWidth = th.getBoundingClientRect().width;\n\n el.style.width = `${exactWidth}px`;\n el.style.minWidth = `${exactWidth}px`;\n el.style.maxWidth = `${exactWidth}px`;\n el.style.boxSizing = 'border-box';\n el.style.backgroundColor = 'white';\n el.style.borderBottom = 'none';\n\n el.style.whiteSpace = 'nowrap';\n el.style.overflow = 'hidden';\n el.style.textOverflow = 'ellipsis';\n };\n\n const previewTr = previewDrag.querySelector('tr') || previewDrag;\n\n const tableLeft = root.querySelector('.fixed-left');\n const tableMiddle = root.querySelector('.scrollable');\n const tableRight = root.querySelector('.fixed-right');\n\n const rowIndex = Array.from(sourceRow.parentElement!.children).indexOf(sourceRow);\n\n const thLeft = tableLeft ? Array.from(tableLeft.querySelectorAll('thead th')) : [];\n const thMiddle = tableMiddle ? Array.from(tableMiddle.querySelectorAll('thead th')) : [];\n const thRight = tableRight ? Array.from(tableRight.querySelectorAll('thead th')) : [];\n\n const existingCells = Array.from(previewTr.children);\n existingCells.forEach((cell, i) => {\n if (thLeft[i]) fixCellSize(cell, thLeft[i]);\n });\n\n if (tableMiddle) {\n const middleRow = tableMiddle.querySelector(`tbody tr:nth-child(${rowIndex + 1})`);\n if (middleRow) {\n Array.from(middleRow.children).forEach((cell, i) => {\n const clone = cell.cloneNode(true) as HTMLElement;\n if (thMiddle[i]) fixCellSize(clone, thMiddle[i]);\n previewTr.appendChild(clone);\n });\n }\n }\n\n if (tableRight) {\n const rightRow = tableRight.querySelector(`tbody tr:nth-child(${rowIndex + 1})`);\n if (rightRow) {\n Array.from(rightRow.children).forEach((cell, i) => {\n const clone = cell.cloneNode(true) as HTMLElement;\n if (thRight[i]) fixCellSize(clone, thRight[i]);\n previewTr.appendChild(clone);\n });\n }\n }\n\n previewDrag.style.width = 'max-content';\n } else {\n const headers = table.querySelectorAll('thead th');\n\n setTimeout(() => {\n const previewCells = previewDrag.querySelectorAll('td, th');\n\n headers.forEach((header, index) => {\n if (previewCells[index]) {\n const exactWidth = header.getBoundingClientRect().width;\n const cell = previewCells[index] as HTMLElement;\n\n cell.style.width = `${exactWidth}px`;\n cell.style.minWidth = `${exactWidth}px`;\n cell.style.maxWidth = `${exactWidth}px`;\n cell.style.boxSizing = 'border-box';\n cell.style.padding = '12px';\n }\n });\n });\n }\n }\n\n private setupScrollSync() {\n setTimeout(() => {\n if (this.npFixedColumnRange && this.npScrollHeight) {\n const left = this.tableLeft?.nativeElement;\n const middle = this.tableMiddle?.nativeElement;\n const right = this.tableRight?.nativeElement;\n\n if (left) {\n const listener = () => {\n if (!this.isSyncingLeftScroll) {\n this.isSyncingMiddleScroll = true;\n this.isSyncingRightScroll = true;\n if (middle) middle.scrollTop = left.scrollTop;\n if (right) right.scrollTop = left.scrollTop;\n }\n this.isSyncingLeftScroll = false;\n };\n left.addEventListener('scroll', listener);\n this.scrollListeners.push(() => left.removeEventListener('scroll', listener));\n }\n\n if (middle) {\n const listener = () => {\n if (!this.isSyncingMiddleScroll) {\n this.isSyncingLeftScroll = true;\n this.isSyncingRightScroll = true;\n if (left) left.scrollTop = middle.scrollTop;\n if (right) right.scrollTop = middle.scrollTop;\n }\n this.isSyncingMiddleScroll = false;\n };\n middle.addEventListener('scroll', listener);\n this.scrollListeners.push(() => middle.removeEventListener('scroll', listener));\n }\n\n if (right) {\n const listener = () => {\n if (!this.isSyncingRightScroll) {\n this.isSyncingLeftScroll = true;\n this.isSyncingMiddleScroll = true;\n if (left) left.scrollTop = right.scrollTop;\n if (middle) middle.scrollTop = right.scrollTop;\n }\n this.isSyncingRightScroll = false;\n };\n right.addEventListener('scroll', listener);\n this.scrollListeners.push(() => right.removeEventListener('scroll', listener));\n }\n }\n }, 0);\n }\n\n private updatePaginationWidth() {\n let totalWidth = 0;\n if (!this.isAtStart) {\n const leftTable = this.tableContainer?.nativeElement?.querySelector('.fixed-left');\n if (leftTable) {\n totalWidth += leftTable.offsetWidth;\n }\n }\n\n const middleDiv = this.tableMiddle?.nativeElement;\n if (middleDiv) {\n totalWidth += middleDiv.offsetWidth;\n }\n\n if (!this.isAtEnd) {\n const rightTable = this.tableContainer?.nativeElement?.querySelector('.fixed-right');\n if (rightTable) {\n totalWidth += rightTable.offsetWidth;\n }\n }\n\n if (totalWidth > 0) {\n this.paginationWidth = `${totalWidth}px`;\n this.cdr.detectChanges();\n }\n }\n\n private syncRowHeight() {\n if (!this.tableContainer) return;\n\n const leftHeaders = this.tableContainer.nativeElement.querySelectorAll('.fixed-left thead tr');\n const middleHeaders = this.tableContainer.nativeElement.querySelectorAll('.scrollable thead tr');\n const rightHeaders = this.tableContainer.nativeElement.querySelectorAll('.fixed-right thead tr');\n\n const leftRows = this.tableContainer.nativeElement.querySelectorAll('.fixed-left tbody tr');\n const middleRows = this.tableContainer.nativeElement.querySelectorAll('.scrollable tbody tr');\n const rightRows = this.tableContainer.nativeElement.querySelectorAll('.fixed-right tbody tr');\n\n const headerRowCount = Math.max(leftHeaders.length, middleHeaders.length, rightHeaders.length);\n const bodyRowCount = Math.max(leftRows.length, middleRows.length, rightRows.length);\n\n for (let i = 0; i < headerRowCount; i++) {\n const leftHeader = leftHeaders[i] as HTMLElement;\n const middleHeader = middleHeaders[i] as HTMLElement;\n const rightHeader = rightHeaders[i] as HTMLElement;\n\n const maxHeight = Math.max(\n leftHeader?.offsetHeight || 0,\n middleHeader?.offsetHeight || 0,\n rightHeader?.offsetHeight || 0\n );\n\n if (leftHeader) leftHeader.style.height = `${maxHeight}px`;\n if (middleHeader) middleHeader.style.height = `${maxHeight}px`;\n if (rightHeader) rightHeader.style.height = `${maxHeight}px`;\n }\n\n for (let i = 0; i < bodyRowCount; i++) {\n const leftRow = leftRows[i] as HTMLElement;\n const middleRow = middleRows[i] as HTMLElement;\n const rightRow = rightRows[i] as HTMLElement;\n\n const maxHeight = Math.max(\n leftRow?.offsetHeight || 0,\n middleRow?.offsetHeight || 0,\n rightRow?.offsetHeight || 0\n );\n\n if (leftRow) leftRow.style.height = `${maxHeight}px`;\n if (middleRow) middleRow.style.height = `${maxHeight}px`;\n if (rightRow) rightRow.style.height = `${maxHeight}px`;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent) {\n const clickedInside = this.filterIcons?.some((el) =>\n el.nativeElement.contains(event.target)\n );\n\n const dropdownClicked = Object.keys(this.dropdownPositionMap).some(\n (key) => {\n const el = document.querySelector(`.filter-dropdown`);\n return el?.contains(event.target as Node);\n }\n );\n\n if (!clickedInside && !dropdownClicked) {\n this.activeFilterKey = null;\n }\n }\n @HostListener('window:scroll')\n onScrollCloseFilter() {\n this.activeFilterKey = null;\n }\n @HostListener('window:resize')\n onResize() {\n this.updatePaginationWidth();\n this.syncRowHeight();\n }\n}\n","@if (state !== \"error\") {\n @if (npFixedColumnRange == null) {\n <div\n class=\"np-table w-full relative overflow-y-auto\"\n [ngClass]=\"npScrollHeight ? 'rounded-l-xl rounded-r-sm' : 'rounded-xl'\"\n [style.height]=\"npScrollHeight\"\n style=\"overflow-x: hidden\"\n >\n <table class=\"w-full mx-auto {{ npClassName }}\">\n <thead\n class=\"sticky top-0 bg-white z-99\"\n [ngClass]=\"{\n 'np-table-shadow':\n npScrollHeight.length > 0 && npScrollHeight !== '0px',\n }\"\n >\n <tr\n *ngIf=\"selectedCount > 0 && npDeleteable\"\n style=\"background-color: rgba(234, 236, 240, 1)\"\n >\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"px-4 py-2\"\n >\n <div class=\"flex justify-between items-center\">\n <div class=\"text-sm font-medium text-gray-700\">\n {{ selectedCount }} selected\n </div>\n <np-button\n npType=\"secondary\"\n npSize=\"sm\"\n (click)=\"onDeleteSelected()\"\n >Delete</np-button\n >\n </div>\n </td>\n </tr>\n\n <tr>\n <th\n *ngIf=\"\n npDraggable && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200\"\n ></th>\n\n <th\n class=\"select-column\"\n *ngIf=\"npSelectableType !== null && state !== 'loading'\"\n >\n <np-checkbox\n *ngIf=\"npSelectableType === 'checkbox'\"\n npType=\"checkbox\"\n size=\"sm\"\n [input]=\"selectAllFc\"\n [isIndeterminate]=\"isIndeterminateAll\"\n ></np-checkbox>\n </th>\n\n <ng-container *ngFor=\"let col of columns\">\n <th\n [class.border-r]=\"npBordered && state !== 'loading'\"\n #middleHeader\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @if (state === \"loading\") {\n <tr>\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"h-[400px] w-full\"\n >\n <np-loading-indicator\n npSize=\"md\"\n npType=\"outlined\"\n ></np-loading-indicator>\n </td>\n </tr>\n } @else if (_dataSource.length > 0) {\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n class=\"np-custom-row\"\n [cdkDragDisabled]=\"true\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"px-4 py-3 font-medium text-gray-900 border-gray-200\"\n [class.border-r]=\"npBordered\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n npCustomRowTemplate || null;\n context: { $implicit: row, index: i }\n \"\n ></ng-container>\n </td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n <td\n *ngIf=\"npDraggable\"\n class=\"text-center text-gray-400 border-gray-200\"\n cdkDragHandle\n >\n <i\n class=\"fa-solid fa-grip-dots-vertical cursor-move active:cursor-grabbing\"\n ></i>\n </td>\n\n <td class=\"select-column\" *ngIf=\"npSelectableType !== null\">\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"row.selectFc\"\n (valueChange)=\"onChangeSelectColumn($event)\"\n ></np-checkbox>\n </td>\n\n @for (col of columns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n <tr *ngIf=\"npShowPagination\">\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n style=\"padding: 12px 0px !important\"\n >\n <div class=\"w-full px-3\">\n <np-pagination\n [npType]=\"npPaginationType\"\n [totalItems]=\"filteredData.length\"\n [(pageIndex)]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"currentPageSize\"\n [npReverse]=\"npReverse\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></np-pagination>\n </div>\n </td>\n </tr>\n } @else {\n <tr>\n <td\n [attr.colspan]=\"\n columns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"h-[400px]\"\n >\n <div\n class=\"flex flex-col gap-4 h-full items-center justify-center\"\n >\n <i\n class=\"fa-regular fa-file-circle-xmark fa-2xl\"\n style=\"color: rgba(208, 213, 221, 1)\"\n ></i>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"medium\"\n style=\"color: rgba(208, 213, 221, 1)\"\n >\n No data\n </np-typography>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n @if (npFixedColumnRange != null && npScrollHeight === \"\") {\n <div class=\"flex flex-col w-full\">\n <div\n *ngIf=\"selectedCount > 0 && npDeleteable\"\n class=\"px-4 py-2 flex justify-between rounded-t-xl items-center np-table\"\n style=\"background-color: rgba(234, 236, 240, 1)\"\n >\n <div class=\"text-sm font-medium text-gray-700\">\n {{ selectedCount }} selected\n </div>\n <np-button npType=\"secondary\" npSize=\"sm\" (click)=\"onDeleteSelected()\"\n >Delete</np-button\n >\n </div>\n <div #tableContainer class=\"flex w-full\">\n <table\n *ngIf=\"!isAtStart || npDraggable || npSelectableType !== null\"\n class=\"np-table fixed-left z-10 {{ npLeftClass }}\"\n [ngClass]=\"{\n 'rounded-l-xl': selectedCount <= 0 || !npDeleteable,\n }\"\n >\n <thead class=\"contents\">\n <tr>\n <th\n *ngIf=\"\n npDraggable && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200\"\n ></th>\n\n <th\n class=\"select-column\"\n *ngIf=\"\n npSelectableType !== null &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n >\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"selectAllFc\"\n [isIndeterminate]=\"isIndeterminateAll\"\n ></np-checkbox>\n </th>\n\n <ng-container *ngFor=\"let col of fixedLeftColumns\">\n <th\n [class.border-r]=\"\n npBordered && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n [cdkDragDisabled]=\"true\"\n #leftRow\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"\n fixedLeftColumns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"px-4 py-3 font-medium text-gray-900 border-gray-200\"\n [class.border-r]=\"npBordered\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n npCustomRowTemplate || null;\n context: { $implicit: row, index: i }\n \"\n ></ng-container>\n </td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\" #leftRow>\n <td\n *ngIf=\"npDraggable\"\n class=\"text-center text-gray-400 border-gray-200\"\n cdkDragHandle\n >\n <i\n class=\"fa-solid fa-grip-dots-vertical cursor-move active:cursor-grabbing\"\n ></i>\n </td>\n\n <td class=\"select-column\" *ngIf=\"npSelectableType !== null\">\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"row.selectFc\"\n (valueChange)=\"onChangeSelectColumn($event)\"\n ></np-checkbox>\n </td>\n\n @for (col of fixedLeftColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n\n <div\n class=\"scrollable-wrapper mb-[-12px] grow overflow-x-auto\"\n [style.max-width]=\"npScrollWidth\"\n #tableMiddle\n [ngClass]=\"{\n 'rounded-l-xl border-l-midtable':\n isAtStart && !npDraggable && npSelectableType === null,\n 'rounded-r-xl border-r-midtable': isAtEnd,\n }\"\n >\n <table\n class=\"np-table scrollable min-w-fit w-full\"\n style=\"border-left: none; border-right: none\"\n >\n <thead>\n <tr>\n <ng-container *ngFor=\"let col of scrollableColumns\">\n <th\n [class.border-r]=\"\n npBordered &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n [cdkDragDisabled]=\"true\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"scrollableColumns.length\"\n class=\"px-4 py-3 border-gray-200\"\n [class.border-r]=\"npBordered\"\n ></td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n @for (col of scrollableColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <table\n *ngIf=\"!isAtEnd\"\n class=\"np-table rounded-r-xl fixed-right z-10 {{ npLeftClass }}\"\n >\n <thead>\n <tr>\n @for (col of fixedRightColumns; track col) {\n <th\n [class.border-r]=\"\n npBordered && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n }\n </tr>\n </thead>\n\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n [cdkDragDisabled]=\"true\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"fixedRightColumns.length\"\n class=\"px-4 py-3 border-gray-200\"\n [class.border-r]=\"npBordered\"\n ></td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n @for (col of fixedRightColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"mt-3 w-full\"\n *ngIf=\"npShowPagination\"\n [style.width]=\"paginationWidth\"\n >\n <np-pagination\n [npType]=\"npPaginationType\"\n [totalItems]=\"filteredData.length\"\n [(pageIndex)]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"currentPageSize\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></np-pagination>\n </div>\n </div>\n }\n @if (npFixedColumnRange != null && npScrollHeight != \"\") {\n <div class=\"flex flex-col\">\n <div\n *ngIf=\"selectedCount > 0 && npDeleteable\"\n class=\"px-4 py-2 flex justify-between rounded-t-xl items-center np-table\"\n style=\"background-color: rgba(234, 236, 240, 1)\"\n >\n <div class=\"text-sm font-medium text-gray-700\">\n {{ selectedCount }} selected\n </div>\n <np-button npType=\"secondary\" npSize=\"sm\" (click)=\"onDeleteSelected()\"\n >Delete</np-button\n >\n </div>\n <div\n #tableContainer\n class=\"flex w-full relative\"\n [style.max-height]=\"npScrollHeight\"\n >\n <div\n #tableLeft\n *ngIf=\"!isAtStart || npDraggable || npSelectableType !== null\"\n [ngClass]=\"{\n 'rounded-l-xl': selectedCount <= 0 || !npDeleteable,\n }\"\n class=\"no-display-scrollbar np-table overflow-y-auto overflow-x-hidden relative mb-[12px]\"\n [style.max-height]=\"npScrollHeight\"\n style=\"border-right: none\"\n >\n <table class=\"rounded-l-xl fixed-left z-10 {{ npLeftClass }}\">\n <thead class=\"sticky-header\">\n <tr>\n <th\n *ngIf=\"\n npDraggable && state !== 'loading' && _dataSource.length > 0\n \"\n class=\"border-gray-200\"\n ></th>\n\n <th\n class=\"select-column\"\n *ngIf=\"\n npSelectableType !== null &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n >\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"selectAllFc\"\n [isIndeterminate]=\"isIndeterminateAll\"\n ></np-checkbox>\n </th>\n <ng-container *ngFor=\"let col of fixedLeftColumns\">\n <th\n [class.border-r]=\"\n npBordered &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n [cdkDragDisabled]=\"true\"\n #leftRow\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"\n fixedLeftColumns.length +\n (npSelectableType !== null ? 1 : 0) +\n (npDraggable ? 1 : 0)\n \"\n class=\"px-4 py-3 font-medium text-gray-900 border-gray-200\"\n [class.border-r]=\"npBordered\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n npCustomRowTemplate || null;\n context: { $implicit: row, index: i }\n \"\n ></ng-container>\n </td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\" #leftRow>\n <td\n *ngIf=\"npDraggable\"\n class=\"text-center text-gray-400 border-gray-200\"\n cdkDragHandle\n >\n <i\n class=\"fa-solid fa-grip-dots-vertical cursor-move active:cursor-grabbing\"\n ></i>\n </td>\n\n <td class=\"select-column\" *ngIf=\"npSelectableType !== null\">\n <np-checkbox\n [npType]=\"npSelectableType\"\n size=\"sm\"\n [input]=\"row.selectFc\"\n (valueChange)=\"onChangeSelectColumn($event)\"\n ></np-checkbox>\n </td>\n @for (col of fixedLeftColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"scrollable-wrapper no-display-scrollbar np-table grow overflow-auto sticky-header\"\n [style.max-width]=\"npScrollWidth\"\n [style.max-height]=\"npScrollHeight\"\n #tableMiddle\n [ngClass]=\"{\n 'rounded-l-xl border-l-midtable':\n isAtStart && !npDraggable && npSelectableType === null,\n 'rounded-r-xl border-r-midtable': isAtEnd,\n }\"\n [ngStyle]=\"{\n 'border-right': isAtEnd ? '' : 'none',\n }\"\n >\n <table\n class=\"scrollable min-w-fit w-full\"\n style=\"border-left: none; border-right: none\"\n >\n <thead class=\"sticky-header\">\n <tr>\n <ng-container *ngFor=\"let col of scrollableColumns\">\n <th\n [class.border-r]=\"\n npBordered &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n class=\"border-gray-200 {{ col?.npClassName }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n [cdkDragDisabled]=\"true\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"scrollableColumns.length\"\n class=\"px-4 py-3 border-gray-200\"\n [class.border-r]=\"npBordered\"\n ></td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n @for (col of scrollableColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <div\n #tableRight\n *ngIf=\"!isAtEnd\"\n class=\"overflow-y-auto np-table rounded-r-xl overflow-x-hidden relative mb-[12px]\"\n [style.max-height]=\"npScrollHeight\"\n >\n <table class=\"rounded-r-xl fixed-right z-10 {{ npRightClass }}\">\n <thead class=\"sticky-header\">\n <tr>\n @for (col of fixedRightColumns; track col) {\n <th\n [class.border-r]=\"\n npBordered &&\n state !== 'loading' &&\n _dataSource.length > 0\n \"\n class=\"border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"\n ></ng-container>\n </th>\n }\n </tr>\n </thead>\n <tbody\n cdkDropList\n [cdkDropListData]=\"_dataSource\"\n (cdkDropListDropped)=\"onRowDrop($event)\"\n >\n @for (row of pagedData; track row; let i = $index) {\n @if (npCustomRowCondition && npCustomRowCondition(row, i)) {\n <tr\n cdkDrag\n [cdkDragDisabled]=\"true\"\n class=\"np-custom-row\"\n style=\"background-color: #f9fafb\"\n >\n <td\n [attr.colspan]=\"fixedRightColumns.length\"\n class=\"px-4 py-3 border-gray-200\"\n [class.border-r]=\"npBordered\"\n ></td>\n </tr>\n } @else {\n <tr cdkDrag (cdkDragStarted)=\"onDragStarted($event)\">\n @for (col of fixedRightColumns; track col) {\n <ng-container\n *ngTemplateOutlet=\"\n renderCell;\n context: { row: row, col: col }\n \"\n ></ng-container>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n </div>\n\n <div\n class=\"mt-3 w-full\"\n *ngIf=\"npShowPagination\"\n [style.width]=\"paginationWidth\"\n >\n <np-pagination\n [npType]=\"npPaginationType\"\n [totalItems]=\"filteredData.length\"\n [(pageIndex)]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"currentPageSize\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></np-pagination>\n </div>\n </div>\n }\n} @else {\n <div class=\"np-table rounded-xl pb-[100px] max-w-[535px]\">\n <div\n class=\"flex flex-col relative justify-center items-center h-full mt-[-40px]\"\n >\n <img src=\"assets/images/error-table.png\" alt=\"error\" />\n <div\n class=\"flex flex-col items-center justify-center gap-2 absolute bottom-0 left-[50%] translate-x-[-50%]\"\n >\n <div class=\"flex flex-col items-center\">\n <np-typography npType=\"text\" npSize=\"md\" npWeight=\"semibold\">\n Something went wrong...\n </np-typography>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"\n color: rgba(71, 84, 103, 1);\n max-width: 352px;\n text-align: center;\n \"\n >\n We had some trouble loading this page. <br />\n Please refresh the page or get in touch for support.\n </np-typography>\n </div>\n <div class=\"flex gap-3\">\n <np-button\n npType=\"secondary\"\n npSize=\"sm\"\n npShape=\"rounded\"\n (click)=\"onContactSupport()\"\n >Contact support\n </np-button>\n\n <np-button\n npType=\"primary\"\n npSize=\"sm\"\n npShape=\"rounded\"\n (click)=\"onRefresh()\"\n >Refresh\n </np-button>\n </div>\n </div>\n </div>\n </div>\n}\n\n<ng-template #headerTemplate let-col=\"col\" let-i=\"index\">\n <div #filterIcon class=\"flex items-center w-full\">\n <div class=\"w-full\">\n <ng-container *ngIf=\"col.headerTemplate; else defaultHeader\">\n <ng-container\n *ngTemplateOutlet=\"col.headerTemplate; context: { col: col }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <p style=\"margin: 0\">{{ col.label }}</p>\n </ng-template>\n </div>\n\n <ng-container>\n <div class=\"flex gap-2 ms-2\">\n <div\n *ngIf=\"(npSortable && !col.template) || (col.template && col.sortFn)\"\n (click)=\"onSortColumn(col)\"\n class=\"cursor-pointer\"\n >\n <i\n *ngIf=\"sortKey === col.key && sortDirection === 'asc'\"\n class=\"fa-duotone fa-solid fa-sort\"\n style=\"\n --fa-primary-color: #475467;\n --fa-secondary-color: #475467;\n --fa-secondary-opacity: 0.5;\n \"\n ></i>\n <i\n *ngIf=\"sortKey === col.key && sortDirection === 'desc'\"\n class=\"fa-duotone fa-solid fa-sort fa-rotate-180\"\n style=\"\n --fa-primary-color: #475467;\n --fa-secondary-color: #475467;\n --fa-secondary-opacity: 0.5;\n \"\n ></i>\n <i\n *ngIf=\"sortKey !== col.key || !sortDirection\"\n class=\"fa-solid fa-sort\"\n style=\"color: #d0d5d3\"\n ></i>\n </div>\n\n <div\n class=\"cursor-pointer relative\"\n (click)=\"toggleFilter(col.key)\"\n *ngIf=\"\n (npFilterable && !col.template) || (col.template && col.filterFn)\n \"\n >\n <ng-container\n *ngIf=\"shouldShowFilterCheck(col.key); else filterIconTemplate\"\n >\n <span class=\"relative inline-block\">\n <i class=\"fa-solid fa-filter\" style=\"color: #d0d5dd\"></i>\n <span\n class=\"absolute top-[1px] right-[-2px] block w-[6px] h-[6px] bg-black rounded-full\"\n ></span>\n </span>\n </ng-container>\n <ng-template #filterIconTemplate>\n <i\n class=\"fa-solid fa-filter\"\n [ngStyle]=\"{\n color: activeFilterKey === col.key ? '#000' : '#d0d5dd',\n }\"\n ></i>\n </ng-template>\n\n <div\n #filterDropdown\n [hidden]=\"activeFilterKey !== col.key\"\n (click)=\"$event.stopPropagation()\"\n [ngStyle]=\"dropdownPositionMap[col.key] || {}\"\n class=\"min-w-[240px] filter fixed px-2 pt-2 rounded-[8px] z-[9999]\"\n >\n <np-input-field\n size=\"md\"\n npType=\"string\"\n placeholder=\"Search...\"\n iconLeft=\"fa-thin fa-magnifying-glass\"\n [input]=\"searchControls[col.key]\"\n iconRight=\"fa-thin fa-xmark\"\n (iconRightClick)=\"onClearSearch(col.key)\"\n ></np-input-field>\n <div\n class=\"flex pt-2 cursor-pointer text-gray-500\"\n (click)=\"onClearFilter(col.key)\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\">\n <i class=\"fa-solid fa-xmark\"></i> Clear filter\n </np-typography>\n </div>\n <np-scrollbar height=\"200px\">\n <div>\n <div\n *ngFor=\"let value of col.filterListAfterSearch\"\n class=\"w-full flex items-center\"\n >\n <np-checkbox\n class=\"w-full cursor-pointer py-2\"\n npType=\"checkbox\"\n size=\"sm\"\n [input]=\"isChecked(col.key, value)\"\n (valueChange)=\"onToggleFilter(col.key, value, $event)\"\n [label]=\"value\"\n ></np-checkbox>\n </div>\n </div>\n <div\n *ngIf=\"col.filterListAfterSearch.length === 0\"\n class=\"text-center py-[50px]\"\n >\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(208, 213, 221, 1)\"\n >\n No matches.\n </np-typography>\n </div>\n </np-scrollbar>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #renderCell let-row=\"row\" let-col=\"col\">\n <td [class.border-r]=\"npBordered\" class=\"border-gray-200\">\n <ng-container *ngIf=\"col.template; else default\">\n <ng-container\n *ngTemplateOutlet=\"col.template; context: { row: row, col: col }\"\n ></ng-container>\n </ng-container>\n <ng-template #default>\n <div class=\"flex items-center\">\n {{ row[col.key] }}\n </div>\n </ng-template>\n </td>\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, inject, Input, OnInit, Output, PLATFORM_ID, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n RouterModule,\n} from '@angular/router';\nimport { INpTab } from '../../../interfaces/np-tab.interface';\nimport { afterNextRender } from '@angular/core';\n\n@Component({\n selector: 'np-tab',\n imports: [CommonModule, RouterModule],\n templateUrl: './np-tab.component.html',\n styleUrl: './np-tab.component.scss',\n host: {\n class: 'w-full'\n }\n})\nexport class NpTabComponent implements OnInit {\n private platformId = inject(PLATFORM_ID);\n\n @ViewChild('headerWrapper', { static: false }) headerWrapperRef!: ElementRef;\n @ViewChild('scrollContainer', { static: false }) scrollContainerRef!: ElementRef;\n @ViewChildren('tabItem') tabItemRefs!: QueryList<ElementRef>;\n\n @Input() tabs: INpTab[] = [];\n @Input() npClassName: string = '';\n @Input() subnpClassName: string = '';\n\n @Input() tabActive: string | number = '';\n @Input() isLink = false;\n @Input() npStyle: 'button' | 'underline' = 'button';\n @Input() npDirection: 'horizontal' | 'vertical' = 'horizontal';\n @Input() minWidthItem?: string;\n\n @Output() onChange = new EventEmitter<INpTab>();\n indexActive = 0;\n\n scrollLeftButton = false;\n scrollRightButton = false;\n\n constructor(\n private _Router: Router,\n private _ActivatedRoute: ActivatedRoute\n ) {\n afterNextRender(() => {\n this.initBrowserLogic();\n });\n }\n\n initBrowserLogic() {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (wrapper) {\n wrapper.addEventListener('scroll', this.updateScrollButtons);\n }\n\n this.updateScrollButtons();\n }\n\n ngOnInit(): void {\n this.setTabActiveDefault();\n }\n\n setTabActiveDefault() {\n if (this.tabActive !== undefined && this.tabActive !== null && this.tabActive !== '') {\n if (typeof this.tabActive === 'number') {\n this.indexActive = this.tabActive;\n } else {\n this.indexActive = this.tabs?.findIndex(\n (x: INpTab) => x.key === this.tabActive\n );\n }\n return;\n }\n\n if (!this.isLink) {\n this.tabActive = this.tabs[0]?.key;\n this.indexActive = 0;\n return;\n }\n\n const queryParmTabIndex = this._ActivatedRoute.snapshot.queryParamMap.get('tab');\n if (queryParmTabIndex === undefined || queryParmTabIndex === null) {\n this.tabActive = this.tabs[0]?.key;\n this.indexActive = 0;\n return;\n }\n\n const tabActive = this.tabs?.[+queryParmTabIndex];\n this.tabActive = tabActive?.key;\n this.indexActive = +queryParmTabIndex;\n }\n\n onChangeTab(tab: INpTab, index: number) {\n this.tabActive = tab.key;\n this.indexActive = index;\n this.onChange.emit(tab);\n\n if (this.isLink && tab.path) {\n this._Router.navigate([tab.path], {\n queryParams: this._ActivatedRoute.snapshot.queryParams,\n });\n }\n // if (tab?.path && this.isLink) {\n // this._Router.navigate([], {\n // relativeTo: this._ActivatedRoute,\n // queryParams: { tab: index },\n // queryParamsHandling: 'merge',\n // });\n // }\n }\n\n updateScrollButtons = () => {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (!wrapper) return;\n\n const scrollLeft = wrapper.scrollLeft;\n const npScrollWidth = wrapper.npScrollWidth;\n const clientWidth = wrapper.clientWidth;\n\n this.scrollLeftButton = scrollLeft > 0;\n this.scrollRightButton = scrollLeft + clientWidth < Math.ceil(npScrollWidth);\n };\n\n scrollLeft() {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (!wrapper) return;\n const pageWidth = wrapper.clientWidth;\n wrapper.scrollBy({ left: -pageWidth, behavior: 'smooth' });\n }\n\n scrollRight() {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (!wrapper) return;\n const pageWidth = wrapper.clientWidth;\n wrapper.scrollBy({ left: pageWidth, behavior: 'smooth' });\n }\n\n // ngAfterViewInit(): void {\n // const wrapper = this.headerWrapperRef?.nativeElement;\n // if (wrapper) {\n // wrapper.addEventListener('scroll', this.updateScrollButtons);\n // }\n\n // window.addEventListener('resize', this.updateScrollButtons);\n // setTimeout(() => {\n // this.updateScrollButtons();\n // }, 0);\n // }\n\n ngOnDestroy(): void {\n const wrapper = this.headerWrapperRef?.nativeElement;\n if (wrapper) {\n wrapper.removeEventListener('scroll', this.updateScrollButtons);\n }\n }\n\n @HostListener('window:resize')\n onResize() {\n this.updateScrollButtons();\n }\n}\n","<div\n class=\"np-tab h-full relative {{ npClassName }}\"\n [ngClass]=\"{\n 'np-vertical': npDirection === 'vertical',\n 'np-horizontal': npDirection === 'horizontal',\n }\"\n>\n <div\n #headerWrapper\n class=\"flex justify-between np-tab-header overflow-x-auto scroll-smooth {{\n subnpClassName\n }}\"\n [ngClass]=\"[\n npDirection === 'vertical' ? 'flex-col w-full' : '',\n npDirection === 'horizontal' ? 'border-gray-200' : '',\n\n npStyle === 'underline'\n ? 'np-tab-underline bg-white' +\n (npDirection === 'horizontal' ? ' border-b' : '')\n : '',\n\n npStyle === 'button'\n ? 'np-tab-button border bg-gray-50 rounded-[5px] p-2'\n : '',\n ]\"\n >\n <div\n #scrollContainer\n class=\"flex w-fit w-full\"\n [ngClass]=\"{ 'flex-col': npDirection === 'vertical' }\"\n >\n <ng-container\n *ngFor=\"let tab of tabs; let index = index; let first = first\"\n >\n <div\n #tabItem\n class=\"flex-1\"\n [ngClass]=\"{\n 'min-w-[140px]': npStyle === 'button' && npDirection === 'vertical',\n }\"\n [ngStyle]=\"minWidthItem ? { minWidth: minWidthItem } : {}\"\n >\n <div\n class=\"text-[16px] font-[600] justify-center px-2 tab-item\"\n (click)=\"onChangeTab(tab, index)\"\n [ngClass]=\"{\n flex: npDirection === 'horizontal',\n 'is-active': tab.key === tabActive,\n 'py-3': npStyle === 'underline',\n 'py-2': npStyle === 'button',\n }\"\n >\n <span class=\"tab-label\">{{ tab?.label }}</span>\n\n @if (first) {\n @if (npStyle === \"underline\") {\n <div\n class=\"tab-underline\"\n [ngStyle]=\"\n npDirection === 'vertical'\n ? { top: indexActive * 100 + '%' }\n : { left: indexActive * 100 + '%' }\n \"\n ></div>\n }\n @if (npStyle === \"button\") {\n <div\n class=\"tab-button\"\n [ngStyle]=\"\n npDirection === 'vertical'\n ? { top: indexActive * 100 + '%' }\n : { left: indexActive * 100 + '%' }\n \"\n ></div>\n }\n }\n </div>\n </div>\n </ng-container>\n </div>\n\n <div *ngIf=\"npDirection === 'horizontal' && scrollLeftButton\">\n <div\n *ngIf=\"npStyle === 'underline'\"\n (click)=\"scrollLeft()\"\n class=\"btn-scroll-undefined cursor-pointer top-0 left-0 h-full absolute z-1000 w-[33px] flex items-center justify-center\"\n >\n <i class=\"fa-regular fa-chevron-left\"></i>\n </div>\n <div\n *ngIf=\"npStyle === 'button'\"\n class=\"top-0 left-0 h-full absolute z-1000 flex py-[4px] ps-[4px] bg-transparent\"\n >\n <div\n (click)=\"scrollLeft()\"\n class=\"btn-scroll-button cursor-pointer bg-white rounded-sm w-[33px] flex items-center justify-center\"\n >\n <i class=\"fa-regular fa-chevron-left\"></i>\n </div>\n </div>\n </div>\n <div *ngIf=\"npDirection === 'horizontal' && scrollRightButton\">\n <div\n *ngIf=\"npStyle === 'underline'\"\n (click)=\"scrollRight()\"\n class=\"btn-scroll-undefined cursor-pointer top-0 right-0 h-full absolute z-1000 w-[33px] flex items-center justify-center\"\n >\n <i class=\"fa-regular fa-chevron-right\"></i>\n </div>\n <div\n *ngIf=\"npStyle === 'button'\"\n class=\"top-0 right-0 h-full absolute z-1000 flex py-[4px] pe-[4px] bg-transparent\"\n >\n <div\n (click)=\"scrollRight()\"\n class=\"btn-scroll-button cursor-pointer bg-white rounded-sm w-[33px] flex items-center justify-center\"\n >\n <i class=\"fa-regular fa-chevron-right\"></i>\n </div>\n </div>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\nimport { NzIconModule, NzIconService } from 'ng-zorro-antd/icon';\nimport {\n NzResizableModule,\n NzResizeDirection,\n NzResizeEvent,\n} from 'ng-zorro-antd/resizable';\n\n@Component({\n selector: 'np-resize',\n imports: [CommonModule, NzResizableModule, NzIconModule],\n templateUrl: './np-resize.component.html',\n styleUrl: './np-resize.component.scss',\n})\nexport class NpResizeComponent {\n @ViewChild('container', { static: true }) container!: ElementRef;\n constructor(private renderer: Renderer2, private iconService: NzIconService) {\n this.iconService.addIconLiteral('ng-zorro:antd', this.ngZorroIconLiteral);\n }\n\n @Input({ required: true }) width!: number;\n @Input({ required: true }) height!: number;\n\n @Input() maxWidth?: number;\n @Input() maxHeight?: number;\n @Input() minWidth?: number;\n @Input() minHeight?: number;\n\n @Input() directions: NzResizeDirection[] = [];\n @Input() isDisable = false;\n\n id = -1;\n resizeDirection: NzResizeDirection | null = null;\n\n _ngContent: Element | null = null;\n ngZorroIconLiteral =\n '<svg width=\"8\" height=\"18\" viewBox=\"0 0 8 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_4739_7041)\"><path d=\"M0.535156 3.99987L0.535156 13.0665C0.535156 14.9811 2.08724 16.5332 4.00182 16.5332C5.91641 16.5332 7.46849 14.9811 7.46849 13.0665L7.46849 3.99987C7.46849 2.08528 5.91641 0.533203 4.00182 0.533203C2.08724 0.533203 0.535156 2.08528 0.535156 3.99987Z\" fill=\"white\"/><path d=\"M0.535156 3.99987L0.535156 13.0665C0.535156 14.9811 2.08724 16.5332 4.00182 16.5332C5.91641 16.5332 7.46849 14.9811 7.46849 13.0665L7.46849 3.99987C7.46849 2.08528 5.91641 0.533203 4.00182 0.533203C2.08724 0.533203 0.535156 2.08528 0.535156 3.99987Z\" stroke=\"#D0D5DD\"/><path d=\"M3.99225 4C4.36434 4 4.67442 4.21593 4.86047 4.51826C5.04651 4.84223 5.04651 5.25252 4.86047 5.55485C4.67442 5.87883 4.36434 6.07319 3.99225 6.07319C3.64083 6.07319 3.33075 5.87883 3.14471 5.55485C2.95865 5.25252 2.95865 4.84223 3.14471 4.51826C3.33075 4.21593 3.64083 4 3.99225 4ZM3.99225 7.45532C4.36434 7.45532 4.67442 7.67125 4.86047 7.97358C5.04651 8.29755 5.04651 8.70784 4.86047 9.01017C4.67442 9.33414 4.36434 9.52851 3.99225 9.52851C3.64083 9.52851 3.33075 9.33414 3.14471 9.01017C2.95865 8.70784 2.95865 8.29755 3.14471 7.97358C3.33075 7.67125 3.64083 7.45532 3.99225 7.45532ZM4.9845 11.9472C4.9845 12.336 4.79845 12.6599 4.48837 12.8542C4.19897 13.0486 3.8062 13.0486 3.49612 12.8542C3.20672 12.6599 3 12.336 3 11.9472C3 11.5801 3.20672 11.2562 3.49612 11.0618C3.8062 10.8674 4.19897 10.8674 4.48837 11.0618C4.79845 11.2562 4.9845 11.5801 4.9845 11.9472Z\" fill=\"#D0D5DD\"/></g><defs><clipPath id=\"clip0_4739_7041\"><rect width=\"8\" height=\"17.0667\" fill=\"white\"/></clipPath></defs></svg>'\n\n @Input()\n set ngContent(value: Element) {\n this._ngContent = value;\n this.updateContent();\n }\n\n onResize({ width, height, direction }: NzResizeEvent): void {\n cancelAnimationFrame(this.id);\n this.id = requestAnimationFrame(() => {\n this.width = width!;\n this.height = height!;\n this.resizeDirection = direction!;\n });\n }\n\n updateContent(): void {\n if (!this._ngContent) {\n return;\n }\n if (this._ngContent instanceof Element) {\n this.renderer.appendChild(this.container.nativeElement, this._ngContent);\n }\n }\n}\n\n","<div\n #container\n class=\"box\"\n nz-resizable\n (nzResize)=\"onResize($event)\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n [nzMaxWidth]=\"maxWidth\"\n [nzMinWidth]=\"minWidth\"\n [nzMaxHeight]=\"maxHeight\"\n [nzMinHeight]=\"minHeight\"\n [nzDisabled]=\"isDisable\"\n >\n <nz-resize-handle\n *ngIf=\"directions.includes('topLeft') || (directions.includes('top') && directions.includes('left'))\"\n nzDirection=\"topLeft\"\n >\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"225\"/>\n </nz-resize-handle>\n\n <nz-resize-handle\n *ngIf=\"directions.includes('topRight') || (directions.includes('top') && directions.includes('right'))\"\n nzDirection=\"topRight\"\n >\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"135\"/>\n </nz-resize-handle>\n\n <nz-resize-handle\n *ngIf=\"directions.includes('bottomLeft') || (directions.includes('bottom') && directions.includes('left'))\"\n nzDirection=\"bottomLeft\"\n >\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"315\"/>\n </nz-resize-handle>\n\n <nz-resize-handle\n *ngIf=\"directions.includes('bottomRight') || (directions.includes('bottom') && directions.includes('right'))\"\n nzDirection=\"bottomRight\"\n >\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"45\" />\n </nz-resize-handle>\n\n <nz-resize-handle *ngIf=\"directions.includes('top')\" nzDirection=\"top\">\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"90\"/>\n </nz-resize-handle>\n\n <nz-resize-handle *ngIf=\"directions.includes('right')\" nzDirection=\"right\">\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"0\"/>\n </nz-resize-handle>\n\n <nz-resize-handle *ngIf=\"directions.includes('bottom')\" nzDirection=\"bottom\">\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"90\"/>\n </nz-resize-handle>\n\n <nz-resize-handle *ngIf=\"directions.includes('left')\" nzDirection=\"left\">\n <nz-icon class=\"bottom-right\" nzType=\"ng-zorro:antd\" nzTheme=\"outline\" [nzRotate]=\"0\"/>\n </nz-resize-handle>\n\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NpTypographyComponent } from './np-typography/np-typography.component';\nimport { NpButtonComponent } from './np-button/np-button.component';\nimport { NpInputFieldComponent } from './np-input-field/np-input-field.component';\nimport { NpCheckboxComponent } from './np-checkbox/np-checkbox.component';\nimport { NpInputTexteraComponent } from './np-input-textera/np-input-textera.component';\nimport { NpTooltipComponent } from './np-tooltip/np-tooltip.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n NpCheckboxComponent,\n NpInputFieldComponent,\n NpButtonComponent,\n NpTypographyComponent,\n NpInputTexteraComponent,\n ],\n exports: [\n NpCheckboxComponent,\n NpInputFieldComponent,\n NpButtonComponent,\n NpTypographyComponent,\n NpInputTexteraComponent,\n ],\n})\nexport class BasicModule {}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NpTypographyComponent } from '../../basic/np-typography/np-typography.component';\nimport { NpButtonComponent } from '../../basic/np-button/np-button.component';\nimport { BasicModule } from '../../basic/basic.module';\nimport { NpCheckboxComponent } from '../../basic/np-checkbox/np-checkbox.component';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'np-modal',\n imports: [\n NzModalModule,\n NpButtonComponent,\n CommonModule,\n NpTypographyComponent,\n BasicModule,\n NpCheckboxComponent,\n ],\n templateUrl: './np-modal.component.html',\n styleUrl: './np-modal.component.scss',\n})\nexport class NpModalComponent {\n @Input() modalButton: string | TemplateRef<any> = '';\n @Input() modalTitle: string | TemplateRef<any> = '';\n @Input() modalDescriptions: string | TemplateRef<any> = '';\n @Input() modalType: 'confirmation' | 'notification' = 'notification';\n @Input() modalState: 'error' | 'warning' | 'success' | 'default' = 'default';\n @Input() useIcon: boolean = true;\n @Input() useCheckBox: boolean = true;\n @Input() cancelText: string = 'Cancel';\n @Input() okText: string = 'OK';\n\n @Input() modalContent?: TemplateRef<any>;\n @Input() modalFooter?: TemplateRef<any>;\n\n @Input() loadingOK: boolean = false;\n\n @Output() ok = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n @Output() checkbox = new EventEmitter<{ checkboxValue: boolean }>();\n\n isVisible = false;\n isOkLoading = false;\n modalWidth = 544;\n checkboxControl = new FormControl(false);\n\n ngOnInit(): void {\n if (this.modalType === 'confirmation') {\n this.modalWidth = 400;\n } else if (this.modalType === 'notification') {\n this.modalWidth = 544;\n }\n }\n\n isTemplate(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n\n get iconPath(): string {\n switch (this.modalState) {\n case 'error':\n return 'assets/images/error.png';\n case 'success':\n return 'assets/images/success.png';\n case 'warning':\n return 'assets/images/warning.png';\n case 'default':\n default:\n return 'assets/images/default.png';\n }\n }\n\n showModal(): void {\n this.isVisible = true;\n }\n\n handleOk(): void {\n this.ok.emit();\n this.isVisible = false;\n }\n\n handleCancel(): void {\n this.isVisible = false;\n this.cancel.emit();\n }\n}\n","<div (click)=\"showModal()\">\n <ng-container *ngIf=\"isTemplate(modalButton); else textTitle\">\n <ng-container *ngTemplateOutlet=\"modalButton\"></ng-container>\n </ng-container>\n <ng-template #textTitle>\n <np-button>\n {{ modalButton }}\n </np-button>\n </ng-template>\n</div>\n\n<nz-modal\n [(nzVisible)]=\"isVisible\"\n (nzOnCancel)=\"handleCancel()\"\n (nzOnOk)=\"handleOk()\"\n [nzTitle]=\"isTemplate(modalTitle) ? modalTitle : titleTemplate\"\n [nzContent]=\"modalContent || ''\"\n [nzFooter]=\"isTemplate(modalFooter) ? modalFooter : footerTemplate\"\n [nzWidth]=\"modalWidth\"\n nznpClassName=\"np-modal\"\n>\n</nz-modal>\n\n<ng-template #titleTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n modalType === 'confirmation' ? contentConfirmation : contentNotification\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #footerTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n modalType === 'confirmation' ? footerConfirmation : footerNotification\n \"\n ></ng-container>\n</ng-template>\n\n<!---------------------------------------------------------------->\n\n<ng-template #contentConfirmation>\n <div class=\"flex w-full\">\n <div class=\"flex flex-col grow gap-1\">\n <img\n *ngIf=\"useIcon\"\n [src]=\"iconPath\"\n [alt]=\"modalState + ' icon'\"\n class=\"w-[48px] h-[48px]\"\n />\n <div class=\"flex flex-col gap-[4px]\">\n <np-typography npType=\"text\" npSize=\"lg\" npWeight=\"semibold\">\n {{ modalTitle }}\n </np-typography>\n <ng-container *ngIf=\"isTemplate(modalDescriptions); else textDesc\">\n <ng-container *ngTemplateOutlet=\"modalDescriptions\"></ng-container>\n </ng-container>\n <ng-template #textDesc>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >\n {{ modalDescriptions }}\n </np-typography>\n </ng-template>\n </div>\n </div>\n <div class=\"flex pt-3\">\n <i\n class=\"fa-solid fa-xmark cursor-pointer fa-xl\"\n (click)=\"handleCancel()\"\n ></i>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerConfirmation>\n <div class=\"flex justify-between {{ modalType }}\">\n <np-button npSize=\"lg\" npType=\"secondary\" (click)=\"handleCancel()\">\n {{ cancelText }}\n </np-button>\n <np-button\n npSize=\"lg\"\n [npType]=\"\n modalState === 'error'\n ? 'destructive'\n : modalState === 'warning'\n ? 'warning'\n : 'primary'\n \"\n [isLoading]=\"loadingOK\"\n (click)=\"handleOk()\"\n >\n {{ okText }}\n </np-button>\n </div>\n</ng-template>\n\n<ng-template #contentNotification>\n <div class=\"flex w-full py-2\">\n <div class=\"flex me-3\" *ngIf=\"useIcon\">\n <img\n [src]=\"iconPath\"\n [alt]=\"modalState + ' icon'\"\n class=\"min-w-[48px] max-w-[48px] h-[48px]\"\n />\n </div>\n <div class=\"flex flex-col grow\">\n <div class=\"flex\">\n <div class=\"flex grow\">\n <np-typography npType=\"text\" npSize=\"lg\" npWeight=\"semibold\">\n {{ modalTitle }}\n </np-typography>\n </div>\n <div class=\"flex pt-3\">\n <i\n class=\"fa-solid fa-xmark cursor-pointer fa-xl\"\n (click)=\"handleCancel()\"\n ></i>\n </div>\n </div>\n <div class=\"flex grow\">\n <ng-container *ngIf=\"isTemplate(modalDescriptions); else textDesc\">\n <ng-container *ngTemplateOutlet=\"modalDescriptions\"></ng-container>\n </ng-container>\n <ng-template #textDesc>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >\n {{ modalDescriptions }}\n </np-typography>\n </ng-template>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerNotification>\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex w-full\" *ngIf=\"useCheckBox\">\n <np-checkbox\n npType=\"checkbox\"\n size=\"sm\"\n label=\"Don’t show again\"\n [input]=\"checkboxControl\"\n ></np-checkbox>\n </div>\n <div class=\"flex gap-3 w-full justify-end\">\n <np-button npSize=\"lg\" npType=\"secondary\" (click)=\"handleCancel()\">\n {{ cancelText }}\n </np-button>\n <np-button\n npSize=\"lg\"\n [npType]=\"\n modalState === 'error'\n ? 'destructive'\n : modalState === 'warning'\n ? 'warning'\n : 'primary'\n \"\n [isLoading]=\"loadingOK\"\n (click)=\"handleOk()\"\n >\n {{ okText }}\n </np-button>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NpTypographyComponent } from '../../basic/np-typography/np-typography.component';\nimport { NpButtonComponent } from '../../basic/np-button/np-button.component';\nimport { BasicModule } from '../../basic/basic.module';\nimport { NpCheckboxComponent } from '../../basic/np-checkbox/np-checkbox.component';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'np-confirm-template',\n imports: [\n NzModalModule,\n NpButtonComponent,\n CommonModule,\n NpTypographyComponent,\n BasicModule,\n NpCheckboxComponent,\n ],\n templateUrl: './confirm-template.component.html',\n styleUrl: './confirm-template.component.scss'\n})\nexport class NpConfirmTemplateComponent {\n // @Input() modalButton: string | TemplateRef<any> = '';\n @Input() modalTitle: string | TemplateRef<any> = '';\n @Input() modalDescriptions: string | TemplateRef<any> = '';\n @Input() modalType: 'confirmation' | 'notification' = 'notification';\n @Input() modalState: 'error' | 'warning' | 'success' | 'default' = 'default';\n @Input() useIcon: boolean = true;\n @Input() useCheckBox: boolean = true;\n @Input() cancelText: string = 'Cancel';\n @Input() okText: string = 'OK';\n\n @Input() modalContent?: TemplateRef<any>;\n // @Input() modalFooter?: TemplateRef<any>;\n\n @Input() loadingOK: boolean = false;\n\n @Output() ok = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n @Output() checkbox = new EventEmitter<{ checkboxValue: boolean }>();\n\n isVisible = false;\n isOkLoading = false;\n modalWidth = 544;\n checkboxControl = new FormControl(false);\n\n ngOnInit(): void {\n if (this.modalType === 'confirmation') {\n this.modalWidth = 400;\n } else if (this.modalType === 'notification') {\n this.modalWidth = 544;\n }\n }\n\n isTemplate(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n\n get iconPath(): string {\n switch (this.modalState) {\n case 'error':\n return 'assets/images/error.png';\n case 'success':\n return 'assets/images/success.png';\n case 'warning':\n return 'assets/images/warning.png';\n case 'default':\n default:\n return 'assets/images/default.png';\n }\n }\n\n showModal(): void {\n this.isVisible = true;\n }\n\n handleOk(): void {\n this.ok.emit();\n this.isVisible = false;\n }\n\n handleCancel(): void {\n this.isVisible = false;\n this.cancel.emit();\n }\n}\n\n","<div>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n <ng-container\n *ngIf=\"modalContent\"\n [ngTemplateOutlet]=\"modalContent\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n</div>\n\n<ng-template #titleTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n modalType === 'confirmation' ? contentConfirmation : contentNotification\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #footerTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n modalType === 'confirmation' ? footerConfirmation : footerNotification\n \"\n ></ng-container>\n</ng-template>\n\n<!---------------------------------------------------------------->\n\n<ng-template #contentConfirmation>\n <div class=\"flex w-full\">\n <div class=\"flex flex-col grow gap-1\">\n <img\n *ngIf=\"useIcon\"\n [src]=\"iconPath\"\n [alt]=\"modalState + ' icon'\"\n class=\"w-[48px] h-[48px]\"\n />\n <div class=\"flex flex-col gap-[4px]\">\n <np-typography npType=\"text\" npSize=\"lg\" npWeight=\"semibold\">\n {{ modalTitle }}\n </np-typography>\n <ng-container *ngIf=\"isTemplate(modalDescriptions); else textDesc\">\n <ng-container *ngTemplateOutlet=\"modalDescriptions\"></ng-container>\n </ng-container>\n <ng-template #textDesc>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >\n {{ modalDescriptions }}\n </np-typography>\n </ng-template>\n </div>\n </div>\n <div class=\"flex pt-3\">\n <i\n class=\"fa-solid fa-xmark cursor-pointer fa-xl\"\n (click)=\"handleCancel()\"\n ></i>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerConfirmation>\n <div class=\"flex justify-between {{ modalType }}\">\n <np-button npSize=\"lg\" npType=\"secondary\" (click)=\"handleCancel()\">\n {{ cancelText }}\n </np-button>\n <np-button\n npSize=\"lg\"\n [npType]=\"\n modalState === 'error'\n ? 'destructive'\n : modalState === 'warning'\n ? 'warning'\n : 'primary'\n \"\n [isLoading]=\"loadingOK\"\n (click)=\"handleOk()\"\n >\n {{ okText }}\n </np-button>\n </div>\n</ng-template>\n\n<ng-template #contentNotification>\n <div class=\"flex w-full\">\n <div class=\"flex me-3\" *ngIf=\"useIcon\">\n <img\n [src]=\"iconPath\"\n [alt]=\"modalState + ' icon'\"\n class=\"min-w-[48px] max-w-[48px] h-[48px]\"\n />\n </div>\n <div class=\"flex flex-col grow\">\n <div class=\"flex\">\n <div class=\"flex grow\">\n <np-typography npType=\"text\" npSize=\"lg\" npWeight=\"semibold\">\n {{ modalTitle }}\n </np-typography>\n </div>\n <div class=\"flex pt-3\">\n <i\n class=\"fa-solid fa-xmark cursor-pointer fa-xl\"\n (click)=\"handleCancel()\"\n ></i>\n </div>\n </div>\n <div class=\"flex grow\">\n <ng-container *ngIf=\"isTemplate(modalDescriptions); else textDesc\">\n <ng-container *ngTemplateOutlet=\"modalDescriptions\"></ng-container>\n </ng-container>\n <ng-template #textDesc>\n <np-typography\n npType=\"text\"\n npSize=\"sm\"\n npWeight=\"regular\"\n style=\"color: rgba(71, 84, 103, 1)\"\n >\n {{ modalDescriptions }}\n </np-typography>\n </ng-template>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerNotification>\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex w-full\" *ngIf=\"useCheckBox\">\n <np-checkbox\n npType=\"checkbox\"\n size=\"sm\"\n label=\"Don’t show again\"\n [input]=\"checkboxControl\"\n ></np-checkbox>\n </div>\n <div class=\"flex gap-3 w-full justify-end\">\n <np-button npSize=\"lg\" npType=\"secondary\" (click)=\"handleCancel()\">\n {{ cancelText }}\n </np-button>\n <np-button\n npSize=\"lg\"\n [npType]=\"\n modalState === 'error'\n ? 'destructive'\n : modalState === 'warning'\n ? 'warning'\n : 'primary'\n \"\n [isLoading]=\"loadingOK\"\n (click)=\"handleOk()\"\n >\n {{ okText }}\n </np-button>\n </div>\n </div>\n</ng-template>\n","import { Component, inject } from '@angular/core';\nimport { NZ_MODAL_DATA, NzModalRef } from 'ng-zorro-antd/modal';\n\n@Component({\n selector: 'np-dialog',\n imports: [],\n templateUrl: './np-dialog.component.html',\n styleUrl: './np-dialog.component.scss'\n})\nexport class NpDialogComponent<R = any> {\n constructor(protected modalRef: NzModalRef<R>) {}\n\n close(result?: R): void {\n this.modalRef.close(result);\n }\n\n submit(result?: R): void {\n this.modalRef.close(result);\n }\n}\n\n"," <!-- <np-modal\n modalButton=\"Success message\"\n modalTitle=\"Modal Title\"\n modalDescriptions=\"Add your status modal description here.It will look better if you split it into two lines.\"\n modalType=\"notification\"\n modalState=\"success\"\n >\n </np-modal> -->\n","import { IDefaultModel } from '../interfaces/default.interface';\n\nexport class DefaultModel implements IDefaultModel {\n /**\n * all keys are in lowercase\n * @type {{}}\n * @private\n */\n _data: any = {};\n /**\n * all keys are raw\n * @type {{}}\n * @private\n */\n _raw: any = {};\n _idKey: string = '';\n _id: any;\n\n /**\n *\n * @param _data\n * @param idKey\n * @param isAutoAssign\n */\n constructor(\n _data: any = {},\n idKey: string = '',\n isAutoAssign: boolean = false,\n isAssignRawData: boolean = true\n ) {\n if (_data) {\n // set raw\n if (_data.hasOwnProperty('_raw')) {\n delete _data['_raw'];\n }\n this._raw = _data;\n\n // store data to new place\n for (const key of Object.keys(_data)) {\n this._data[key.toLowerCase()] = this._raw[key];\n }\n const self = this;\n // setTimeout(() => {\n if (isAutoAssign) {\n if (isAssignRawData) {\n Object.assign(self, self._raw);\n } else {\n Object.assign(self, self._data);\n }\n }\n // });\n }\n\n if (idKey) {\n // set id key\n this._idKey = idKey.toLowerCase();\n this._id = this.getId();\n }\n }\n\n /**\n * get value of id\n * @return {any}\n */\n getId(): string | number | null {\n if (this._idKey && this._data[this._idKey]) {\n return this._data[this._idKey];\n }\n return null;\n }\n\n setId(id: string | number | null) {\n this._data[this._idKey] = id;\n this._id = this.getId();\n }\n\n /**\n * delete object property\n * @param key: string\n */\n deleteProperty(key: string): void {\n const self: any = this;\n if (!!self?.key) {\n delete self[key];\n }\n }\n\n /**\n * get key of id\n * @returns {string}\n */\n getIdKey(): string {\n return this._idKey || '';\n }\n\n /**\n * get value of _data by key\n * @param key: string\n * @returns {any}\n */\n getValue(key: string): any {\n return this._data[key.toLowerCase()];\n }\n\n /**\n * set value of _data by key & value of this object's attribute if existed\n * @param key: string\n * @param value: string\n * @returns {any}\n */\n setValue(key: string, value: any): any {\n const self: any = this;\n if (self.hasOwnProperty(key)) {\n self[key] = value;\n }\n return (this._data[key.toLowerCase()] = value);\n }\n\n /**\n * get raw value of _data by key\n * @param key: string\n * @returns {any}\n */\n getRawValue(key: string): any {\n return this._raw[key];\n }\n\n /**\n * set value of _data by key\n * @param key: string\n * @param value: string\n * @returns {any}\n */\n setRawValue(key: string, value: any): any {\n return (this._raw[key] = value);\n }\n\n /*STATIC*/\n static describe(instance: any): Array<string> {\n return Object.getOwnPropertyNames(instance)?.filter(\n (x) => !x.startsWith('_')\n );\n }\n}\n\nexport namespace DefaultModel {}\n","/*\n * Public API Surface of neop-ui-lib\n */\n// export service\nexport * from './lib/services/test.service';\nexport * from './lib/services/theme.service';\nexport * from './lib/services/np-dialog.service';\nexport * from './lib/services/np-alert.service';\n\nexport * from './lib/components/neop-component.module';\n\n// export component\nexport * from './lib/components/basic/np-typography/np-typography.component';\nexport * from './lib/components/basic/np-button/np-button.component';\nexport * from './lib/components/basic/np-checkbox/np-checkbox.component';\nexport * from './lib/components/basic/np-input-field/np-input-field.component';\nexport * from './lib/components/basic/np-input-textera/np-input-textera.component';\nexport * from './lib/components/basic/np-toggle/np-toggle.component';\nexport * from './lib/components/basic/np-select/np-select.component';\nexport * from './lib/components/basic/np-dropdowns/np-dropdowns.component';\nexport * from './lib/components/basic/np-tree/np-tree.component';\nexport * from './lib/components/basic/np-pagination/np-pagination.component';\nexport * from './lib/components/basic/np-scrollbar/np-scrollbar.component';\nexport * from './lib/components/basic/np-alert/np-alert.component';\nexport * from './lib/components/basic/np-tooltip/np-tooltip.component';\nexport * from './lib/components/basic/np-breadcrumb/np-breadcrumb.component';\nexport * from './lib/components/basic/np-progress-bar/np-progress-bar.component';\nexport * from './lib/components/basic/np-slider/np-slider.component';\nexport * from './lib/components/basic/np-loading-indicator/np-loading-indicator.component';\nexport * from './lib/components/basic/np-table/np-table.component';\nexport * from './lib/components/basic/np-tab/np-tab.component';\nexport * from './lib/components/basic/np-action-bar/np-action-bar.component';\nexport * from './lib/components/basic/np-resize/np-resize.component';\nexport * from './lib/components/basic/np-modal/np-modal.component';\n\n// Modal\nexport * from './lib/components/modal/confirm-template/confirm-template.component';\nexport * from './lib/components/modal/np-dialog/np-dialog.component';\n\n// export enum\nexport * from './lib/enum/np-breadcrumb.enum';\nexport * from './lib/enum/basic/breadcrumb.enum';\n\n// export model\nexport * from './lib/models/default.mode';\n\n// export interface\nexport * from './lib/interfaces/dictionary-item.interface';\nexport * from './lib/interfaces/np-table.interface';\nexport * from './lib/interfaces/np-tree.interface';\nexport * from './lib/interfaces/np-table.interface';\nexport * from './lib/interfaces/np-tab.interface';\n\n// export config\nexport * from './lib/config/form-error-config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i3","i2","i1.NpAlertService","i3.NpCheckboxComponent","i2.NpCheckboxComponent"],"mappings":"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"}