@neoprototype/neop-ui-lib 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/assets/images/check.svg +3 -0
- package/assets/images/default.png +0 -0
- package/assets/images/error-table.png +0 -0
- package/assets/images/error.png +0 -0
- package/assets/images/minus.svg +3 -0
- package/assets/images/success.png +0 -0
- package/assets/images/warning.png +0 -0
- package/fesm2022/neoprototype-neop-ui-lib.mjs +2670 -0
- package/fesm2022/neoprototype-neop-ui-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/basic/basic.module.d.ts +12 -0
- package/lib/components/basic/np-action-bar/np-action-bar.component.d.ts +56 -0
- package/lib/components/basic/np-alert/np-alert.component.d.ts +27 -0
- package/lib/components/basic/np-breadcrumb/np-breadcrumb.component.d.ts +31 -0
- package/lib/components/basic/np-button/np-button.component.d.ts +18 -0
- package/lib/components/basic/np-checkbox/np-checkbox.component.d.ts +19 -0
- package/lib/components/basic/np-dropdowns/np-dropdowns.component.d.ts +32 -0
- package/lib/components/basic/np-input-field/np-input-field.component.d.ts +46 -0
- package/lib/components/basic/np-input-textera/np-input-textera.component.d.ts +22 -0
- package/lib/components/basic/np-loading-indicator/np-loading-indicator.component.d.ts +7 -0
- package/lib/components/basic/np-pagination/np-pagination.component.d.ts +38 -0
- package/lib/components/basic/np-progress-bar/np-progress-bar.component.d.ts +7 -0
- package/lib/components/basic/np-resize/np-resize.component.d.ts +27 -0
- package/lib/components/basic/np-scrollbar/np-scrollbar.component.d.ts +14 -0
- package/lib/components/basic/np-select/np-select.component.d.ts +29 -0
- package/lib/components/basic/np-slider/np-slider.component.d.ts +16 -0
- package/lib/components/basic/np-tab/np-tab.component.d.ts +19 -0
- package/lib/components/basic/np-table/np-table.component.d.ts +91 -0
- package/lib/components/basic/np-toggle/np-toggle.component.d.ts +15 -0
- package/lib/components/basic/np-tooltip/np-tooltip.component.d.ts +18 -0
- package/lib/components/basic/np-tree/np-tree.component.d.ts +48 -0
- package/lib/components/basic/np-typography/np-typography.component.d.ts +15 -0
- package/lib/components/modal/np-modal/np-modal.component.d.ts +34 -0
- package/lib/components/neop-component.module.d.ts +7 -0
- package/lib/config/form-error-config.d.ts +3 -0
- package/lib/enum/basic/breadcrumb.enum.d.ts +5 -0
- package/lib/enum/np-breadcrumb.enum.d.ts +4 -0
- package/lib/interfaces/default.interface.d.ts +5 -0
- package/lib/interfaces/dictionary-item.interface.d.ts +10 -0
- package/lib/interfaces/np-tab.interface.d.ts +5 -0
- package/lib/interfaces/np-table.interface.d.ts +8 -0
- package/lib/interfaces/np-tree.interface.d.ts +29 -0
- package/lib/interfaces/np.actions.d.ts +8 -0
- package/lib/models/default.mode.d.ts +68 -0
- package/lib/services/np-dialog.service.d.ts +11 -0
- package/lib/services/test.service.d.ts +8 -0
- package/lib/services/theme.service.d.ts +9 -0
- package/package.json +26 -0
- package/public-api.d.ts +35 -0
- package/scss/fonts/Inter/Inter-VariableFont_opsz,wght.ttf +0 -0
- package/scss/fonts/fonts.scss +4 -0
- package/scss/index.less +1 -0
- package/scss/index.scss +3 -0
- package/scss/ngzorro/custom-theme.scss +0 -0
- package/scss/ngzorro/modal/custom-modal.scss +6 -0
- package/scss/ngzorro/ng-zorro.less +3 -0
- package/scss/ngzorro/ng-zorro.scss +4 -0
- package/scss/tailwind/tailwind.scss +1 -0
- package/scss/theme/index.scss +20 -0
- package/scss/theme/theme-dark.scss +21 -0
- package/scss/theme/theme-light.scss +30 -0
|
@@ -0,0 +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/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/modal/np-modal/np-modal.component.ts","../../../projects/neop-ui-lib/src/lib/components/modal/np-modal/np-modal.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 { 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() className: 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 {{ className }}\"\n (click)=\"onClick($event)\"\n>\n <div class=\"inline items-center\">\n <i class=\"fa-solid fa-spinner-third fa-spin\" *ngIf=\"isLoading\"></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() type: string = '';\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' : type,\n isDisabled ? 'disabled' : '',\n _input.value ? 'isChecked' : '',\n ]\"\n>\n <input\n [type]=\"type === 'radio' ? 'radio' : 'checkbox'\"\n [name]=\"type === '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' : type,\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\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 type(value: typeof this._type) {\n this._type = value;\n this.updateInputType();\n }\n get type() {\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\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.type === '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.type === 'function') {\n try {\n this.functionHandler?.(input);\n } catch (e) {\n console.warn('functionHandler error:', e);\n }\n }\n }\n }\n\n onBlur(): void {\n if (this.type === '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\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 npType=\"text\" npSize=\"sm\" npWeight=\"medium\" *ngIf=\"label\" class=\"input-label\">{{ label }}</np-typography>\n\n <ng-container *ngIf=\"type === 'date'; else normalInput\">\n <div [ngClass]=\"size\">\n <nz-date-picker\n [formControl]=\"_input\"\n [nzDisabled]=\"disabled\"\n [nzFormat]=\"'yyyy-MM-dd'\"\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 [ngClass]=\"{ 'disabled': disabled}\"\n [value]=\"_input.value\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\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=\"type !== 'password'\"\n (click)=\"handleIconRightClick()\"\n ></i>\n <span\n *ngIf=\"type == 'password'\"\n nz-icon\n class=\"ant-input-password-icon\"\n [nzType]=\"passwordVisible ? 'eye' : 'eye-invisible'\"\n (click)=\"togglePassword()\">\n </span>\n </ng-template>\n\n <div class=\"flex justify-between\" *ngIf=\"computedStatus === 'error' || hint || limitValue && type !== 'date'\">\n <div class=\"flex flex-col w-full mb-3\">\n <np-typography *ngIf=\"computedStatus === 'error'\" class=\"input-error text-red-500\">{{ errorMessageFromInput }}</np-typography>\n <np-typography *ngIf=\"hint\" class=\"input-hint\">{{ hint }}</np-typography>\n </div>\n <np-typography *ngIf=\"limitValue && type !== '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\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]=\"{ minRows: 5 }\"\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() className: 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 {{ className }}\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\" *ngIf=\"label\" class=\"input-label\">{{ label }}</np-typography>\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() className: 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 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.label = item?.label;\n // this.valueChange?.emit(item);\n this.valueChange.emit(item);\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.type !== '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 {{ className }}\"\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 {{ 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 type=\"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?.type === '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) { @if\n (itemChild?.type === '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=\"contentTemplate; context: { item: itemChild }\"\n ></ng-container>\n </li>\n } @else {\n\n <!-- Start Fix temp when not use recursive template -->\n <li nz-submenu [nzTitle]=\"submenuTitle2\">\n <ng-template #submenuTitle2>\n <ng-container\n *ngTemplateOutlet=\"contentTemplate; context: { item: itemChild }\"\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 </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 AfterViewInit,\n ChangeDetectorRef,\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() type: '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.type === '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 nzTooltipOverlayClassName=\"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]=\"{ color: type === 'primary' ? 'rgba(52, 64, 84, 1)' : 'rgba(255, 255, 255, 1)' }\"\n >{{ text }}</np-typography\n >\n <np-typography\n npType=\"text\"\n npSize=\"xs\"\n npWeight=\"medium\"\n [ngStyle]=\"{ color: type === 'primary' ? 'rgba(52, 64, 84, 1)' : 'rgba(255, 255, 255, 1)' }\"\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.scrollWidth;\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.scrollWidth;\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.scrollWidth;\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() type: '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() className: string = '';\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: false,\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(item: INpTreeNode) {\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.type === '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 {{className}}\">\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 {{item.className}}\"\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 npType=\"icon\" npSize=\"bs\" (click)=\"onExpand(item)\">\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 ( type === 'checkbox' ) {\n <np-checkbox\n [input]=\"item.isChecked\"\n [type]=\"item.checkboxType || 'checkbox'\"\n size=\"md\"\n (valueChange)=\"onCheckItem(item)\"\n (click)=\"$event.stopPropagation()\"\n ></np-checkbox>\n } @if (type === '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\">{{ item?.name }}</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 {{autoHideActions ? 'opacity-0 group-hover:opacity-100 transition-opacity duration-200' : ''}}\n \"\n [actions]=\"item.actions ?? []\"\n [notCompressMin]=\"this.notCompressMin\"\n [isNotResponsive]=\"isCompactActions\"\n >\n </np-action-bar>\n }\n @if (expandPosition === 'right')\n {\n @if (itemHasChildren(item)){\n <np-button npType=\"icon\" npSize=\"bs\" (click)=\"onExpand(item)\" className=\"flex w-[17px]\">\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 }\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() type : 'basic' | 'outlined' | 'text' | 'simple' | 'full' = 'basic';\n @Input() totalItems: number = 0;\n @Input() pageSize: number[] = [];\n @Input() isReverse: 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 this.pageIndexChange.emit(this._pageIndex);\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.pageSizeChange.emit(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(type: string) {\n Object.keys(this.isDropdownOpenMap).forEach((key) => {\n this.isDropdownOpenMap[key] = false;\n });\n\n this.isDropdownOpenMap[type] = true;\n\n if (this.triggerRef?.nativeElement) {\n const rect = this.triggerRef.nativeElement.getBoundingClientRect();\n this.dropdownStyleMap[type] = {\n top: `${rect.bottom}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n };\n }\n }\n\n onSelectPageSize(size: number) {\n this.isDropdownOpenMap[this.type] = 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 }\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.type) {\n this.isDropdownOpenMap[this.type] = false;\n }\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n if (this.type) {\n this.isDropdownOpenMap[this.type] = false;\n }\n }\n}\n","<ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'basic'\">\n <div\n class=\"flex items-center justify-between gap-3\"\n [ngClass]=\"isReverse ? '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 npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: rgba(24, 34, 48, 1);\">{{ page }}</np-typography>\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(type)\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: rgba(52, 64, 84, 1);\">\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[type]\"\n class=\"fixed z-1000 mt-1 w-full bg-white border border-gray-300 rounded-sm shadow-md\"\n [ngStyle]=\"dropdownStyleMap[type]\"\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 npType=\"text\" npSize=\"sm\" npWeight=\"medium\" [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\">\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]=\"isReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex items-center justify-between flex-1 space-x-2\">\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 npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: rgba(24, 34, 48, 1);\">{{ page }}</np-typography>\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(type)\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: rgba(52, 64, 84, 1);\">\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n [ngStyle]=\"dropdownStyleMap[type]\"\n *ngIf=\"isDropdownOpenMap[type]\"\n class=\"fixed z-100 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 npType=\"text\" npSize=\"sm\" npWeight=\"medium\" [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\">\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]=\"isReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex justify-between items-center flex-1\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\" style=\"color: rgba(52, 64, 84, 1);\">\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(type)\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: rgba(52, 64, 84, 1);\">\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[type]\"\n [ngStyle]=\"dropdownStyleMap[type]\"\n class=\"fixed z-100 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 npType=\"text\" npSize=\"sm\" npWeight=\"medium\" [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\">\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]=\"isReverse ? '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 npType=\"text\" npSize=\"sm\" npWeight=\"medium\" style=\"color: rgba(52, 64, 84, 1);\">\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(type)\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: rgba(52, 64, 84, 1);\">\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[type]\"\n [ngStyle]=\"dropdownStyleMap[type]\"\n class=\"fixed z-100 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 npType=\"text\" npSize=\"sm\" npWeight=\"medium\" [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\">\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]=\"isReverse ? 'flex-row-reverse' : 'flex-row'\"\n >\n <div class=\"flex items-center w-full 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 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 *ngFor=\"let page of getDisplayedPages(); let last = last\">\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 npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: rgba(24, 34, 48, 1);\">\n {{ page }}\n </np-typography>\n </button>\n\n <ng-template #dots>\n <span class=\"px-3 py-2 w-[40px] h-[40px] border-y-1 border-s-1 border-[#D0D5DD] cursor-text\">\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(type)\"\n >\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\" style=\"color: rgba(52, 64, 84, 1);\">\n {{ pageSizeOptions }} / page\n </np-typography>\n <i class=\"fa-solid fa-chevron-down\"></i>\n </div>\n\n <div\n *ngIf=\"isDropdownOpenMap[type]\"\n [ngStyle]=\"dropdownStyleMap[type]\"\n class=\"fixed z-100 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 npType=\"text\" npSize=\"sm\" npWeight=\"medium\" [ngClass]=\"{ 'text-gray-300': size === pageSizeOptions }\">\n {{ size }} / page\n </np-typography>\n </div>\n </div>\n </div>\n </div>\n </div>\n\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';\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() type: string = 'notification';\n @Input() state: 'success' | 'info' | 'warning' | 'error' = 'info';\n @Input() description: string = '';\n @Input() title?: string;\n @Input() message?: string;\n @Input() autoHide: boolean = true;\n\n isMessageVisible: boolean = false;\n opacity: number = 1;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n if (this.autoHide) {\n setTimeout(() => {\n this.startFadeOut();\n }, 3000);\n }\n }\n\n startFadeOut() {\n let fadeDuration = 5000;\n let fadeInterval = 50;\n let step = fadeInterval / fadeDuration;\n\n let fadeEffect = setInterval(() => {\n if (this.opacity > 0) {\n this.opacity -= step;\n } else {\n clearInterval(fadeEffect);\n this.removeSelf();\n }\n }, fadeInterval);\n }\n\n closeAlert() {\n this.removeSelf();\n }\n\n removeSelf() {\n this.renderer.removeChild(\n this.el.nativeElement.parentNode,\n this.el.nativeElement\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}\n","<ng-container >\n <div class=\"np-alert flex gap-3 items-start\" [ngClass]=\"type\" [style.opacity]=\"opacity\">\n <div class=\"icon-wrapper rounded-[10px]\" [ngClass]=\"state\" *ngIf=\"type == 'toast'\">\n <i [ngClass]=\"getIcon()\" class=\"p-[8px]\"></i>\n </div>\n <div class=\"icon-wrapper rounded-[10px]\" *ngIf=\"getIconNotification().icon && type == 'notification'\">\n <i class=\"glow fa-regular\"\n [ngClass]=\"getIconNotification().icon\"\n [ngStyle]=\"{ 'color': getIconNotification().color }\">\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\">{{ title }}</np-typography>\n <button (click)=\"closeAlert()\" class=\"close-btn cursor-pointer opacity-50\">\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"regular\">{{ description }}</np-typography>\n <np-typography *ngIf=\"isMessageVisible\" npType=\"text\" npSize=\"sm\" npWeight=\"regular\">\n {{ message }}\n </np-typography>\n\n <div class=\"flex gap-3 mt-2\" *ngIf=\"type !== 'notification'\">\n <button (click)=\"closeAlert()\" class=\"dismiss cursor-pointer\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\">Dismiss</np-typography>\n </button>\n <button *ngIf=\"message\" class=\"learn-more cursor-pointer\" (click)=\"showMessege()\">\n <np-typography npType=\"text\" npSize=\"sm\" npWeight=\"semibold\">Learn More</np-typography>\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() 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 (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() type: string = 'style-1';\n @Input() percent: number = 0;\n}\n","<nz-progress\n [nzPercent]=\"percent\"\n [nzShowInfo]=\"type == 'style-2'\"\n [nzFormat]=\"customFormat\"\n nzStrokeColor=\"rgba(71, 84, 103, 1)\"\n></nz-progress>\n<np-typography npType=\"text\" npSize=\"sm\" npWeight=\"medium\" *ngIf=\"type === 'style-3'\" class=\"flex justify-end\">\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 = 'type-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';\n\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 ],\n templateUrl: './np-table.component.html',\n styleUrl: './np-table.component.scss',\n})\nexport class NpTableComponent {\n constructor(private cdr: ChangeDetectorRef) {}\n ngAfterViewInit() {\n setTimeout(() => {\n this.updatePaginationWidth();\n this.syncRowHeights();\n });\n if (this.selectableType === 'checkbox') {\n this.bindSelectAllListener();\n }\n this.cdr.detectChanges();\n }\n ngOnInit(): void {\n const [start, end] = this.scrollColumnsRange || [\n 0,\n this.columns.length - 1,\n ];\n\n this.isAtStart = start === 0;\n this.isAtEnd = end === this.columns.length - 1;\n }\n\n @ViewChildren('leftRow', { read: ElementRef })\n leftRows!: QueryList<ElementRef>;\n @ViewChildren('middleRow', { read: ElementRef })\n middleRows!: QueryList<ElementRef>;\n @ViewChildren('rightRow', { read: ElementRef })\n rightRows!: QueryList<ElementRef>;\n @ViewChild('leftHead', { read: ElementRef }) leftHead!: ElementRef;\n @ViewChild('middleHead', { read: ElementRef }) middleHead!: ElementRef;\n @ViewChild('rightHead', { read: ElementRef }) rightHead!: ElementRef;\n @ViewChild('tableLeft', { static: false }) tableLeft!: ElementRef;\n @ViewChild('tableMiddle', { static: false }) tableMiddle!: ElementRef;\n @ViewChild('tableRight', { static: false }) tableRight!: ElementRef;\n\n @Input() columns: INpTableColumn[] = [];\n @Input() selectableType: 'checkbox' | 'radio' | null = null;\n @Input() isSortable = false;\n @Input() isFilterable = false;\n @Input() isDeleteable = false;\n @Input() pageSize: number[] = [];\n @Input() isUsePagination = true;\n @Input() panigationType: 'basic' | 'outlined' | 'text' | 'simple' | 'full' =\n 'basic';\n @Input() state: 'error' | 'loading' | 'normal' = 'normal';\n @Input() className: string = '';\n @Input() classNameLeft: string = ''; // className for left fixed table\n @Input() classNameRight: string = ''; // className for right fixed table\n @Input() scrollColumnsRange: [number, number] | null = null;\n @Input() scrollWidth: string = '';\n @Input() isReverse: boolean = false;\n @Input() showVerticalDivider = false;\n\n selectAllSub?: Subscription;\n selectAllFc = new FormControl(false);\n isIndeterminateAll = false;\n\n currentPage = 1;\n currentPageSize = this.pageSize[0];\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\n @Output() deleteSelectedRows = new EventEmitter<any[]>();\n\n @Input()\n set dataSource(value: any[]) {\n this._dataSource =\n value?.map((row: any) => ({\n ...row,\n selectFc: new FormControl(false),\n })) || [];\n\n this.currentPage = 1;\n this.selectAllFc.setValue(false, { emitEvent: false });\n this.isIndeterminateAll = false;\n\n if (this.selectableType === 'checkbox') {\n this.bindSelectAllListener();\n }\n\n if (this.selectableType === '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\n get fixedLeftColumns(): INpTableColumn[] {\n if (!this.scrollColumnsRange) return [];\n return this.columns.slice(0, this.scrollColumnsRange[0]);\n }\n\n get scrollableColumns(): INpTableColumn[] {\n if (!this.scrollColumnsRange) return this.columns;\n return this.columns.slice(\n this.scrollColumnsRange[0],\n this.scrollColumnsRange[1] + 1\n );\n }\n\n get fixedRightColumns(): INpTableColumn[] {\n if (!this.scrollColumnsRange) return [];\n return this.columns.slice(this.scrollColumnsRange[1] + 1);\n }\n\n syncRowHeights() {\n const left = this.leftRows.toArray();\n const middle = this.middleRows.toArray();\n const right = this.rightRows.toArray();\n\n for (let i = 0; i < middle.length; i++) {\n left[i]?.nativeElement.style.removeProperty('height');\n middle[i]?.nativeElement.style.removeProperty('height');\n right[i]?.nativeElement.style.removeProperty('height');\n }\n\n for (let i = 0; i < middle.length; i++) {\n const hLeft = left[i]?.nativeElement.offsetHeight || 0;\n const hMid = middle[i]?.nativeElement.offsetHeight || 0;\n const hRight = right[i]?.nativeElement.offsetHeight || 0;\n\n const max = Math.max(hLeft, hMid, hRight);\n\n if (left[i]) left[i].nativeElement.style.height = `${max}px`;\n if (middle[i]) middle[i].nativeElement.style.height = `${max}px`;\n if (right[i]) right[i].nativeElement.style.height = `${max}px`;\n }\n\n this.leftHead?.nativeElement.style.removeProperty('height');\n this.middleHead?.nativeElement.style.removeProperty('height');\n this.rightHead?.nativeElement.style.removeProperty('height');\n\n const hHeadLeft = this.leftHead?.nativeElement.offsetHeight || 0;\n const hHeadMid = this.middleHead?.nativeElement.offsetHeight || 0;\n const hHeadRight = this.rightHead?.nativeElement.offsetHeight || 0;\n\n const maxHead = Math.max(hHeadLeft, hHeadMid, hHeadRight);\n\n if (this.leftHead)\n this.leftHead.nativeElement.style.height = `${maxHead}px`;\n if (this.middleHead)\n this.middleHead.nativeElement.style.height = `${maxHead}px`;\n if (this.rightHead)\n this.rightHead.nativeElement.style.height = `${maxHead}px`;\n }\n\n updatePaginationWidth() {\n const wLeft = this.tableLeft?.nativeElement.offsetWidth || 0;\n const wMid = this.tableMiddle?.nativeElement.offsetWidth || 0;\n const wRight = this.tableRight?.nativeElement.offsetWidth || 0;\n\n const total = wLeft + wMid + wRight;\n this.paginationWidth = `${total}px`;\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 });\n this.isIndeterminateAll = false;\n }\n );\n }\n\n @ViewChildren('filterIcon') filterIcons!: QueryList<ElementRef>;\n dropdownPositionMap: { [key: string]: any } = {};\n\n get filteredData(): any[] {\n return this._dataSource.filter((row) => {\n for (const key in this.selectedFilters) {\n const selectedSet = this.selectedFilters[key];\n if (selectedSet && selectedSet.size > 0 && !selectedSet.has(row[key])) {\n return false;\n }\n }\n return true;\n });\n }\n\n get pagedData() {\n const filtered = this.filteredData;\n\n if (this.isUsePagination) {\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 if (this.sortKey === column.key) {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortKey = column.key;\n this.sortDirection = 'asc';\n }\n\n if (!this.sortDirection) {\n this._dataSource.sort((a, b) => 0);\n } else {\n this._dataSource.sort((a, b) => {\n const aValue = a[this.sortKey!];\n const bValue = b[this.sortKey!];\n\n const aNum = parseFloat(aValue);\n const bNum = parseFloat(bValue);\n\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 this.currentPage = 1;\n }\n\n onChangeSelectColumn($event: boolean) {\n if (this.selectableType !== '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 }\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 activeFilterKey: string | null = null;\n searchKeyword: { [key: string]: string } = {};\n searchControls: { [key: string]: FormControl } = {};\n selectedFilters: { [key: string]: Set<any> } = {};\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 this.searchControls[key].valueChanges.subscribe((val: string) => {\n this.searchKeyword[key] = val?.toLowerCase() || '';\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 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 uniqueSet = new Set<any>();\n\n const filteredExcludingCurrent = this._dataSource.filter((row) => {\n for (const key in this.selectedFilters) {\n if (key === colKey) continue;\n\n const selectedSet = this.selectedFilters[key];\n if (selectedSet && selectedSet.size > 0 && !selectedSet.has(row[key])) {\n return false;\n }\n }\n return true;\n });\n\n filteredExcludingCurrent.forEach((row) => {\n const value = row[colKey];\n if (\n !uniqueSet.has(value) &&\n String(value).toLowerCase().includes(keyword)\n ) {\n uniqueSet.add(value);\n }\n });\n\n const values = Array.from(uniqueSet);\n\n const allNumbers = values.every((val) => !isNaN(parseFloat(val)));\n\n return values.sort((a, b) => {\n if (allNumbers) {\n return parseFloat(a) - parseFloat(b);\n } else {\n return String(a).localeCompare(String(b));\n }\n });\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 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 @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 onResizeWindow() {\n setTimeout(() => this.syncRowHeights(), 0);\n }\n}\n","@if (state !== 'error') {\n @if (scrollColumnsRange == null) {\n <table class=\"np-table rounded-xl my-[15px] mx-auto {{ className }}\">\n <thead>\n <tr *ngIf=\"selectedCount > 0 && isDeleteable\" style=\"background-color: rgba(234, 236, 240, 1)\">\n <td [attr.colspan]=\"columns.length + (selectableType !== null ? 1 : 0)\" class=\"px-4 py-2\">\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 npType=\"secondary\" npSize=\"sm\" (click)=\"onDeleteSelected()\">Delete</np-button>\n </div>\n </td>\n </tr>\n\n <tr>\n <th\n class=\"select-column\"\n *ngIf=\"selectableType !== null && state !== 'loading' && _dataSource.length > 0\"\n >\n <np-checkbox\n *ngIf=\"selectableType === 'checkbox'\"\n type=\"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]=\"showVerticalDivider && state !== 'loading' && _dataSource.length > 0\"\n class=\"border-gray-200\"\n >\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n\n <tbody>\n @if (state === 'loading') {\n <tr>\n <td [attr.colspan]=\"columns.length + (selectableType !== null ? 1 : 0)\" class=\"h-[400px] w-full\">\n <np-loading-indicator npSize=\"md\" npType=\"outlined\"></np-loading-indicator>\n </td>\n </tr>\n }\n\n @else if (_dataSource.length > 0) {\n @for (row of pagedData; track row) {\n <tr>\n <td class=\"select-column\" *ngIf=\"selectableType !== null\">\n <np-checkbox\n [type]=\"selectableType\"\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 *ngTemplateOutlet=\"renderCell; context: { row: row, col: col }\"></ng-container>\n }\n </tr>\n }\n\n <tr *ngIf=\"isUsePagination\">\n <td [attr.colspan]=\"columns.length + (selectableType !== null ? 1 : 0)\" style=\"padding: 12px 0px !important\">\n <div class=\"w-full\">\n <np-pagination\n [type]=\"panigationType\"\n [totalItems]=\"filteredData.length\"\n [(pageIndex)]=\"currentPage\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"currentPageSize\"\n [isReverse]=\"isReverse\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></np-pagination>\n </div>\n </td>\n </tr>\n }\n @else {\n <tr>\n <td [attr.colspan]=\"columns.length + (selectableType !== null ? 1 : 0)\" class=\"h-[400px]\">\n <div class=\"flex flex-col gap-4 h-full items-center justify-center\">\n <i class=\"fa-regular fa-file-circle-xmark fa-2xl\" style=\"color: rgba(208, 213, 221, 1)\"></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 }\n @else {\n <div class=\"flex flex-col w-full\">\n <div class=\"flex w-full\">\n <table *ngIf=\"!isAtStart\" class=\"np-table rounded-l-xl fixed-left z-10 {{ classNameLeft }}\" #tableLeft>\n <thead>\n <tr *ngIf=\"selectedCount > 0 && isDeleteable\" style=\"background-color: rgba(234, 236, 240, 1)\">\n <td [attr.colspan]=\"columns.length + (selectableType !== null ? 1 : 0)\" class=\"px-4 py-2\">\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 npType=\"secondary\" npSize=\"sm\" (click)=\"onDeleteSelected()\">Delete</np-button>\n </div>\n </td>\n </tr>\n\n <tr #leftHead>\n <th class=\"select-column\" *ngIf=\"selectableType !== null && state !== 'loading' && _dataSource.length > 0\">\n <np-checkbox\n [type]=\"selectableType\"\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]=\"showVerticalDivider && state !== 'loading' && _dataSource.length > 0\"\n class=\"border-gray-200\"\n >\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n\n <tbody>\n @for (row of pagedData; track row) {\n <tr #leftRow>\n <td class=\"select-column\" *ngIf=\"selectableType !== null\">\n <np-checkbox\n [type]=\"selectableType\"\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 *ngTemplateOutlet=\"renderCell; context: { row: row, col: col }\"></ng-container>\n }\n </tr>\n }\n </tbody>\n </table>\n\n <div\n class=\"scrollable-wrapper mb-[-12px] grow\"\n style=\"overflow-x: auto;\"\n [style.max-width]=\"scrollWidth\"\n #tableMiddle\n [ngClass]=\"{\n 'rounded-l-xl border-l-midtable': isAtStart,\n 'rounded-r-xl border-r-midtable': isAtEnd\n }\"\n >\n <table class=\"np-table scrollable min-w-fit w-full\" style=\"border-left: none; border-right: none;\">\n <thead>\n <tr #middleHead>\n <ng-container *ngFor=\"let col of scrollableColumns\">\n <th\n [class.border-r]=\"showVerticalDivider && state !== 'loading' && _dataSource.length > 0\"\n class=\"border-gray-200\"\n >\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n\n <tbody>\n @for (row of pagedData; track row) {\n <tr #middleRow>\n @for (col of scrollableColumns; track col) {\n <ng-container *ngTemplateOutlet=\"renderCell; context: { row: row, col: col }\"></ng-container>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <table *ngIf=\"!isAtEnd\" class=\"np-table rounded-r-xl fixed-right z-10 {{ classNameLeft }}\" #tableRight>\n <thead>\n <tr #rightHead>\n @for (col of fixedRightColumns; track col) {\n <th\n [class.border-r]=\"showVerticalDivider && state !== 'loading' && _dataSource.length > 0\"\n class=\"border-gray-200\"\n >\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { col: col }\"></ng-container>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (row of pagedData; track row) {\n <tr #rightRow>\n @for (col of fixedRightColumns; track col) {\n <ng-container *ngTemplateOutlet=\"renderCell; context: { row: row, col: col }\"></ng-container>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"mt-3 w-full\" *ngIf=\"isUsePagination\" [style.width]=\"paginationWidth\">\n <np-pagination\n [type]=\"panigationType\"\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 class=\"flex flex-col relative justify-center items-center h-full mt-[-40px]\">\n <img src=\"assets/images/error-table.png\" alt=\"error\"/>\n <div class=\"flex flex-col items-center justify-center gap-2 absolute bottom-0 left-[50%] translate-x-[-50%]\">\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 npType=\"text\" npSize=\"sm\" npWeight=\"regular\" style=\"color: rgba(71, 84, 103, 1); max-width: 352px; text-align: center;\">\n We had some trouble loading this page. 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\">\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 *ngTemplateOutlet=\"col.headerTemplate; context: { col: col }\"></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 *ngIf=\"!col.headerTemplate\">\n <div class=\"flex gap-2 ms-2\">\n <div *ngIf=\"isSortable && !col.template\" (click)=\"onSortColumn(col)\" class=\"cursor-pointer\">\n <i *ngIf=\"sortKey === col.key && sortDirection === 'asc'\" class=\"fa-duotone fa-solid fa-sort\"\n style=\"--fa-primary-color: #475467; --fa-secondary-color: #475467; --fa-secondary-opacity: 0.5;\"></i>\n <i *ngIf=\"sortKey === col.key && sortDirection === 'desc'\" class=\"fa-duotone fa-solid fa-sort fa-rotate-180\"\n style=\"--fa-primary-color: #475467; --fa-secondary-color: #475467; --fa-secondary-opacity: 0.5;\"></i>\n <i *ngIf=\"sortKey !== col.key || !sortDirection\" class=\"fa-solid fa-sort\" style=\"color: #d0d5d3\"></i>\n </div>\n\n <div class=\"cursor-pointer relative\" (click)=\"toggleFilter(col.key)\" *ngIf=\"isFilterable && !col.template\">\n <ng-container *ngIf=\"shouldShowFilterCheck(col.key); else filterIconTemplate\">\n <span class=\"relative inline-block\">\n <i class=\"fa-solid fa-filter\" style=\"color: #d0d5dd\"></i>\n <span class=\"absolute top-[1px] right-[-2px] block w-[6px] h-[6px] bg-black rounded-full\"></span>\n </span>\n </ng-container>\n <ng-template #filterIconTemplate>\n <i class=\"fa-solid fa-filter\"\n [ngStyle]=\"{ color: activeFilterKey === col.key ? '#000' : '#d0d5dd' }\"></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 type=\"text\"\n placeholder=\"Search...\"\n iconLeft=\"fa-thin fa-magnifying-glass\"\n [input]=\"searchControls[col.key]\"\n ></np-input-field>\n <np-scrollbar height=\"200px\">\n <div *ngIf=\"getDistinctFilteredValues(col.key).length > 0\">\n <div *ngFor=\"let value of getDistinctFilteredValues(col.key)\" class=\"py-2 flex items-center\">\n <np-checkbox\n type=\"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 *ngIf=\"getDistinctFilteredValues(col.key).length === 0\" class=\"text-center py-[50px]\">\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\n style =\"min-width: 100px;\"\n [class.border-r]=\"showVerticalDivider\"\n class=\"border-gray-200\"\n >\n <ng-container *ngIf=\"col.template; else default\">\n <ng-container *ngTemplateOutlet=\"col.template; context: { row: row, col: col }\"></ng-container>\n </ng-container>\n <ng-template #default>\n <div class=\"flex items-center\">\n <div>{{ row[col.key] }}</div>\n </div>\n </ng-template>\n </td>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n ActivatedRoute,\n NavigationEnd,\n Router,\n RouterModule,\n} from '@angular/router';\nimport { INpTab } from '../../../interfaces/np-tab.interface';\n\n@Component({\n selector: 'np-tab',\n imports: [CommonModule, RouterModule],\n templateUrl: './np-tab.component.html',\n styleUrl: './np-tab.component.scss',\n})\nexport class NpTabComponent implements OnInit {\n @Input() tabs: INpTab[] = [];\n\n @Input() tabActive: string = '';\n @Input() isLink = false;\n\n @Output() onChange = new EventEmitter<INpTab>();\n indexActive = 0;\n constructor(\n private _Router: Router,\n private _ActivatedRoute: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.setTabActiveDefault();\n }\n\n setTabActiveDefault() {\n if (this.tabActive) {\n this.indexActive = this.tabs?.findIndex(\n (x: INpTab) => x.key === this.tabActive\n );\n return;\n }\n if (!this.isLink) {\n this.tabActive = this.tabs[0]?.key;\n this.indexActive = 0;\n return;\n }\n const queryParmTabIndex =\n 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 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 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","<!-- <div class=\"tab-container\">\n <div class=\"tab-list\">\n <a *ngFor=\"let tab of tabs\" class=\"tab\" [routerLink]=\"tab.path\" [class.active]=\"isActive(tab.path)\">\n {{ tab.label }}\n </a>\n <div class=\"indicator\" [ngStyle]=\"indicatorStyle()\"></div>\n </div>\n</div> -->\n<div class=\"np-tab flex flex-col h-full\">\n <div class=\"flex justify-between w-full p-2 np-tab-header\">\n @for (tab of tabs; track tab; let index = $index; let first = $first) {\n <div class=\"flex-1\">\n <div\n class=\"text-[16px] font-[600] flex justify-center p-2 tab-item\"\n (click)=\"onChangeTab(tab, $index)\"\n >\n <!-- [class.active]=\"tabActive === tab.key\" -->\n <span class=\"tab-label\">{{ tab?.label }}</span>\n\n @if($first) {\n <div\n class=\"tab-active\"\n [ngStyle]=\"{\n left: indexActive * 100 + '%'\n }\"\n ></div>\n }\n </div>\n </div>\n }\n <!-- <div class=\"box\" [class.test]=\"tabActive === 'Tab 3'\"></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","<np-button (click)=\"showModal()\">\n <ng-container *ngIf=\"isTemplate(modalButton); else textTitle\">\n <ng-container *ngTemplateOutlet=\"modalButton\"></ng-container>\n </ng-container>\n <ng-template #textTitle>{{ modalButton }}</ng-template>\n</np-button>\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 nzClassName=\"np-modal\"\n>\n</nz-modal>\n\n<ng-template #titleTemplate>\n <ng-container *ngTemplateOutlet=\"modalType === 'confirmation' ? contentConfirmation : contentNotification\"></ng-container>\n</ng-template>\n\n<ng-template #footerTemplate>\n <ng-container *ngTemplateOutlet=\"modalType === 'confirmation' ? footerConfirmation : footerNotification\"></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 npType=\"text\" npSize=\"sm\" npWeight=\"regular\" style=\"color: rgba(71, 84, 103, 1);\">\n {{modalDescriptions}}\n </np-typography>\n </ng-template>\n </div>\n </div>\n <div class=\"flex pt-3\">\n <i class=\"fa-solid fa-xmark cursor-pointer fa-xl\" (click)=\"handleCancel()\"></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 class=\"fa-solid fa-xmark cursor-pointer fa-xl\" (click)=\"handleCancel()\"></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 npType=\"text\" npSize=\"sm\" npWeight=\"regular\" style=\"color: rgba(71, 84, 103, 1);\">\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 type=\"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 { 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';\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';\n\nexport * from './lib/components/modal/np-modal/np-modal.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","i3.NpCheckboxComponent"],"mappings":"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"}
|