@brggroup/share-lib 0.0.34 → 0.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brggroup-share-lib.mjs","sources":["../../../projects/share/src/lib/a-translate-key.ts","../../../projects/share/src/lib/app-global.ts","../../../projects/share/src/lib/app-storeage.ts","../../../projects/share/src/lib/services/api-service/http.service.ts","../../../projects/share/src/lib/services/noti.service.ts","../../../projects/share/src/lib/services/api-service/common.service.ts","../../../projects/share/src/lib/auth/token.storage.ts","../../../projects/share/src/lib/auth/auth.service.ts","../../../projects/share/src/lib/auth/auth.guard.ts","../../../projects/share/src/lib/services/loading.service.ts","../../../projects/share/src/lib/auth/auth.interceptor.ts","../../../projects/share/src/lib/auth/unsaved-changes.guard.ts","../../../projects/share/src/lib/services/custom-modal.service.ts","../../../projects/share/src/lib/components/base.component.ts","../../../projects/share/src/lib/components/base.guard-change.ts","../../../projects/share/src/lib/components/base.overlay.component.ts","../../../projects/share/src/lib/components/breadcrumb/breadcrumb.ts","../../../projects/share/src/lib/components/breadcrumb/breadcrumb.html","../../../projects/share/src/lib/components/dashboard-widget/animated/animated-digit.component.ts","../../../projects/share/src/lib/components/dashboard-widget/animated/animated-digit.component.html","../../../projects/share/src/lib/components/dashboard-widget/bar-graph/bar-graph.component.ts","../../../projects/share/src/lib/components/dashboard-widget/bar-graph/bar-graph.component.html","../../../projects/share/src/lib/components/dashboard-widget/dashcard/dashcard.component.ts","../../../projects/share/src/lib/components/dashboard-widget/dashcard/dashcard.component.html","../../../projects/share/src/lib/components/dashboard-widget/doughnut-graph/doughnut-graph.component.ts","../../../projects/share/src/lib/components/dashboard-widget/doughnut-graph/doughnut-graph.component.html","../../../projects/share/src/lib/components/dashboard-widget/line-graph/line-graph.component.ts","../../../projects/share/src/lib/components/dashboard-widget/line-graph/line-graph.component.html","../../../projects/share/src/lib/components/extend-checkbox/extend-checkbox.ts","../../../projects/share/src/lib/components/extend-checkbox/extend-checkbox.html","../../../projects/share/src/lib/helper/date.helper.ts","../../../projects/share/src/lib/directive/date-input-parser.directive.ts","../../../projects/share/src/lib/components/extend-date-picker/extend-date-picker.ts","../../../projects/share/src/lib/components/extend-date-picker/extend-date-picker.html","../../../projects/share/src/lib/components/extend-date-range-picker/extend-date-range-picker.ts","../../../projects/share/src/lib/components/extend-date-range-picker/extend-date-range-picker.html","../../../projects/share/src/lib/components/extend-input-number/extend-input-number.ts","../../../projects/share/src/lib/components/extend-input-number/extend-input-number.html","../../../projects/share/src/lib/components/extend-input/extend-input.ts","../../../projects/share/src/lib/components/extend-input/extend-input.html","../../../projects/share/src/lib/components/extend-select/extend-select.ts","../../../projects/share/src/lib/components/extend-select/extend-select.html","../../../projects/share/src/lib/components/extend-textarea/extend-textarea.ts","../../../projects/share/src/lib/components/extend-textarea/extend-textarea.html","../../../projects/share/src/lib/components/no-permission/no-permission.ts","../../../projects/share/src/lib/components/pdf-viewer/pdf-viewer.ts","../../../projects/share/src/lib/components/pdf-viewer/pdf-viewer.html","../../../projects/share/src/lib/components/spinner/spinner.ts","../../../projects/share/src/lib/components/height.ts","../../../projects/share/src/lib/components/width.ts","../../../projects/share/src/lib/components/box.ts","../../../projects/share/src/lib/directive/auto-focus.directive.ts","../../../projects/share/src/lib/directive/null-if-empty.directive.ts","../../../projects/share/src/lib/directive/number-only.directive.ts","../../../projects/share/src/lib/directive/uppercase-each-word.directive.ts","../../../projects/share/src/lib/directive/uppercase-first-letter.directive.ts","../../../projects/share/src/lib/directive/uppercase.directive.ts","../../../projects/share/src/lib/pipe/limit-words.pipe.ts","../../../projects/share/src/lib/helper/download.helper.ts","../../../projects/share/src/lib/helper/xlsx.helper.ts","../../../projects/share/src/lib/model.ts","../../../projects/share/src/lib/services/router-monitor.service.ts","../../../projects/share/src/lib/services/theme.service.ts","../../../projects/share/src/lib/services/vsc.service.ts","../../../projects/share/src/brggroup-share-lib.ts"],"sourcesContent":["export enum TranslateKey {\n ACTION = 'ACTION',\n ADD = 'ADD',\n AGREE = 'AGREE',\n BACK = 'BACK',\n CANCEL = 'CANCEL',\n CLOSE = 'CLOSE',\n CONFIRM = 'CONFIRM',\n CONFIRM_DELETE = 'CONFIRM_DELETE',\n COMPLETE = 'COMPLETE',\n DELETE = 'DELETE',\n DELETE_SUCCESS = 'DELETE_SUCCESS',\n EDIT = 'EDIT',\n ERROR = 'ERROR',\n EXPORT = 'EXPORT',\n HIDDEN = 'HIDDEN',\n IMPORT = 'IMPORT',\n INFO = 'INFO',\n LOGIN = 'LOGIN',\n LOGOUT = 'LOGOUT',\n NO_CONNECT_TO_SERVER = 'NO_CONNECT_TO_SERVER',\n OK = 'OK',\n PASSWORD = 'PASSWORD',\n REQUIRED = 'REQUIRED',\n REQUIRED_FIELD = 'REQUIRED_FIELD',\n REFEESH = 'REFEESH',\n RESET = 'RESET',\n RESET_PASSWORD = 'RESET_PASSWORD',\n SAVE = 'SAVE',\n SEARCH = 'SEARCH',\n SHOW = 'SHOW',\n SUCCESS = 'SUCCESS',\n SAVE_SUCCESS = 'SAVE_SUCCESS',\n SETTING = 'SETTING',\n PROFILE = 'PROFILE',\n USERNAME = 'USERNAME',\n UPDATE = 'UPDATE',\n WARNING = 'WARNING',\n YES = 'YES',\n DOWNLOAD_TEMPLATE = 'DOWNLOAD_TEMPLATE',\n WARNING_CHECK_DATA = 'WARNING_CHECK_DATA',\n}\n","export class AppGlobals {\n public static apiEndpoint: string;\n public static versionCheck: string;\n\n public static MENU_TYPE: 'side-menu' | 'toolbar-menu' = 'toolbar-menu';\n public static pageSizeOptions = [10, 20, 50, 100];\n\n public static filterSet: any = {};\n public static selectedIdSet: any = {};\n\n public static clearFillter() {\n this.filterSet = {};\n }\n\n public static getFilter(key: any) {\n return this.filterSet[key];\n }\n\n public static setFilter(key: any, filter: any) {\n this.filterSet[key] = filter;\n }\n\n public static getSelectedId(key: any) {\n return this.selectedIdSet[key];\n }\n\n public static setSelectedId(key: any, value: any) {\n this.selectedIdSet[key] = value;\n }\n\n public static setLang(lang: string) {\n localStorage.setItem('LANGUAGE', lang);\n }\n\n public static getLang(): string {\n if (!localStorage.getItem('LANGUAGE')) {\n localStorage.setItem('LANGUAGE', 'vn');\n }\n return localStorage.getItem('LANGUAGE') || '';\n }\n\n public static getOrgId() {\n return localStorage.getItem('orgid');\n }\n\n public static getOrgCode() {\n return localStorage.getItem('orgcode');\n }\n\n public static getOrgName() {\n return localStorage.getItem('orgname');\n }\n\n public static getUserName() {\n return localStorage.getItem('username');\n }\n\n public static getUserFullName() {\n return localStorage.getItem('fullname');\n }\n}\n","import { inject } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\nexport class AppStorage {\n \n static get tokenStorage() {\n return localStorage;\n // return sessionStorage;\n }\n\n static get localStoreage() {\n return localStorage;\n }\n\n static get sessionStoreage() {\n return sessionStorage;\n }\n\n static getLang(): string {\n return AppStorage.localStoreage.getItem('LANGUAGE') || 'vn';\n }\n\n static setLang(lang: string) {\n AppStorage.localStoreage.setItem('LANGUAGE', lang || 'vn');\n }\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { RespondData } from '../../model';\n\nexport class HTTPService {\n httpClient = inject(HttpClient);\n\n get(url: string, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n };\n\n return firstValueFrom(this.httpClient.get<RespondData>(url, options));\n }\n\n getParams(url: string, params: HttpParams, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n params: params,\n };\n\n return firstValueFrom(this.httpClient.get<RespondData>(url, options));\n }\n\n post(url: string, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n };\n\n return firstValueFrom(this.httpClient.post<RespondData>(url, null, options));\n }\n\n postParams(url: string, params: HttpParams, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n params: params,\n };\n\n return firstValueFrom(this.httpClient.post<RespondData>(url, null, options));\n }\n\n postData(url: string, body: any, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n };\n\n return firstValueFrom(this.httpClient.post<RespondData>(url, body, options));\n }\n\n postDataWithParams(url: string, body: any, params?: HttpParams, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n params: params,\n };\n\n return firstValueFrom(this.httpClient.post<RespondData>(url, body, options));\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\nimport { firstValueFrom } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TranslateKey } from '../a-translate-key';\n\nfunction escapeHtml(str: string) {\n return str.replace(/</g, '<').replace(/>/g, '>');\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotiService {\n modal = inject(NzModalService);\n notification = inject(NzNotificationService);\n translate = inject(TranslateService);\n\n async success(title?: string, content: string = '', showPopup: boolean = false): Promise<void> {\n if (showPopup) {\n return new Promise<void>((resolve) => {\n const modalRef = this.modal.success({\n nzTitle: title ?? this.translate.instant(TranslateKey.SUCCESS),\n nzContent: content,\n nzOnOk: () => resolve(),\n });\n });\n } else {\n const notiRef = this.notification.success(title ?? this.translate.instant(TranslateKey.SUCCESS), content);\n if (notiRef?.onClose) {\n await firstValueFrom(notiRef.onClose);\n }\n }\n }\n\n async warning(title: string, content: string = '', showPopup: boolean = false): Promise<void> {\n if (showPopup) {\n return new Promise<void>((resolve) => {\n const modalRef = this.modal.warning({\n nzTitle: title,\n nzContent: content,\n nzOnOk: () => resolve(),\n });\n });\n } else {\n const notiRef = this.notification.warning(title, content);\n if (notiRef?.onClose) {\n await firstValueFrom(notiRef.onClose);\n }\n }\n }\n\n async error(title: string, content: string = '', showPopup: boolean = false): Promise<void> {\n if (showPopup) {\n return new Promise<void>((resolve) => {\n const modalRef = this.modal.error({\n nzTitle: title,\n nzContent: content,\n nzOnOk: () => resolve(),\n });\n });\n } else {\n const notiRef = this.notification.error(title, content);\n if (notiRef?.onClose) {\n await firstValueFrom(notiRef.onClose);\n }\n }\n }\n\n handleError(err: any): void {\n if (err?.status == 0) {\n // this.notification.error('', this.translate.instant('NO_CONNECT_TO_SERVER'), { nzDuration: 0 });\n\n this.modal.error({\n nzTitle: 'Lỗi phát sinh',\n nzContent: this.translate.instant('NO_CONNECT_TO_SERVER'),\n nzWidth: '40vw',\n nzOkText: 'Đóng',\n });\n\n return;\n }\n\n let _data: any = null;\n\n if (err?.error instanceof ArrayBuffer) {\n const message = new TextDecoder('utf-8').decode(new Uint8Array(err.error));\n try {\n _data = JSON.parse(message);\n } catch (error) {}\n } else if (err?.error instanceof Blob) {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const text = reader.result as string;\n _data = JSON.parse(text);\n this.handleError(_data);\n } catch (e) {\n // this.notification.error('', this.translate.instant('UNKNOWN_ERROR'), { nzDuration: 0 });\n\n this.modal.error({\n nzTitle: 'Lỗi phát sinh',\n nzContent: this.translate.instant('UNKNOWN_ERROR'),\n nzWidth: '40vw',\n nzOkText: 'Đóng',\n });\n }\n };\n\n reader.onerror = () => {\n // this.notification.error('', this.translate.instant('UNKNOWN_ERROR'), { nzDuration: 0 });\n\n this.modal.error({\n nzTitle: 'Lỗi phát sinh',\n nzContent: this.translate.instant('UNKNOWN_ERROR'),\n nzWidth: '40vw',\n nzOkText: 'Đóng',\n });\n };\n reader.readAsText(err.error);\n return;\n } else if (err?.error && typeof err.error === 'object') {\n _data = err.error;\n } else {\n _data = err;\n }\n\n let errorMsg = err?.message || 'An unexpected error occurred.';\n\n if (err?.name == 'EmptyError' && err?.message == 'no elements in sequence') {\n return;\n }\n\n if (_data?.ErrorMessage) {\n let hasMsgTag = false;\n let isMatchFirstMsg = false;\n\n let isMatch = _data.ErrorMessage?.match(/System.Data.SqlClient.SqlException \\(0x80131904\\): <msg>(.*?)<\\/msg>/);\n isMatchFirstMsg = isMatch ? true : false;\n\n if (isMatchFirstMsg) {\n const matches = [..._data.ErrorMessage?.matchAll(/<msg>(.*?)<\\/msg>/g)];\n const messages = matches.map((m) => m[1]);\n if (messages.length > 0) {\n errorMsg = messages.join('\\n');\n hasMsgTag = true;\n } else {\n errorMsg = _data.ErrorMessage;\n }\n } else {\n errorMsg = _data.ErrorMessage;\n }\n }\n\n const modalRef = this.modal.error({\n nzTitle: 'Lỗi phát sinh',\n nzContent: errorMsg,\n nzWidth: '40vw',\n nzClosable: false,\n nzCancelText: 'Đóng',\n nzOkText: 'Chi tiết',\n nzOnOk: () => {\n modalRef.destroy();\n\n this.modal.error({\n nzTitle: 'Chi tiết lỗi',\n nzContent: escapeHtml(JSON.stringify(_data, null, 2)),\n nzWidth: '60vw',\n nzDraggable: true,\n nzCentered: true,\n nzOkText: 'Đóng',\n });\n },\n });\n }\n}\n","import { ESPModel, ExportExcelModel } from '../../model';\nimport { AppGlobals } from '../../app-global';\nimport { HTTPService } from './http.service';\nimport { firstValueFrom } from 'rxjs';\nimport { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nexport enum ENUM_ResponseType {\n ARRAYBUFFER = 'arraybuffer',\n BLOB = 'blob',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CommonService extends HTTPService {\n ESP(obj: ESPModel) {\n const params = new HttpParams().append('SPN', obj.SPN);\n return this.postDataWithParams(AppGlobals.apiEndpoint + '/api/Common/ESP', obj, params);\n }\n\n ExportExcel(data: ExportExcelModel) {\n return firstValueFrom(\n this.httpClient.post(AppGlobals.apiEndpoint + '/api/Common/ExportExcel', data, {\n responseType: ENUM_ResponseType.BLOB,\n observe: 'response',\n }),\n );\n }\n}\n","import { jwtDecode } from 'jwt-decode';\nimport { RespondData } from '../model';\nimport { AppStorage } from '../app-storeage';\n\nexport class TokenStorage {\n public static readonly JWT_TOKEN = 'JWT_TOKEN';\n public static readonly JWT_RFT_TOKEN = 'JWT_RFT_TOKEN';\n public static readonly USER_NAME = 'username';\n public static readonly FULL_NAME = 'fullname';\n public static readonly USER_MENU = 'usermenu';\n public static readonly ORG_ID = 'orgid';\n public static readonly ORG_CODE = 'orgcode';\n public static readonly ORG_NAME = 'orgname';\n\n public static saveToken(tokenRes: RespondData) {\n AppStorage.tokenStorage.setItem(this.JWT_TOKEN, tokenRes.Data.Token);\n AppStorage.tokenStorage.setItem(this.JWT_RFT_TOKEN, tokenRes.Data.RefreshToken);\n TokenStorage.saveTokenInfo(tokenRes.Data.Token);\n }\n\n public static saveTokenRft(token: string) {\n AppStorage.tokenStorage.setItem(this.JWT_TOKEN, token);\n TokenStorage.saveTokenInfo(token);\n }\n\n private static saveTokenInfo(token: string) {\n const userInfo: any = jwtDecode(token);\n\n AppStorage.tokenStorage.setItem(this.USER_NAME, userInfo[this.USER_NAME]);\n AppStorage.tokenStorage.setItem(this.FULL_NAME, userInfo[this.FULL_NAME]);\n AppStorage.tokenStorage.setItem(this.ORG_ID, userInfo[this.ORG_ID]);\n AppStorage.tokenStorage.setItem(this.ORG_CODE, userInfo[this.ORG_CODE]);\n AppStorage.tokenStorage.setItem(this.ORG_NAME, userInfo[this.ORG_NAME]);\n }\n\n public static saveUserMenu(menus: any[]) {\n AppStorage.tokenStorage.setItem(this.USER_MENU, JSON.stringify(menus));\n }\n\n public static getUserMenu(): any[] {\n return JSON.parse(AppStorage.tokenStorage.getItem(this.USER_MENU) || '[]');\n }\n\n public static getUsername() {\n return AppStorage.tokenStorage.getItem(this.USER_NAME);\n }\n\n public static getUserFullname() {\n return AppStorage.tokenStorage.getItem(this.FULL_NAME);\n }\n\n public static getOrgId() {\n return AppStorage.tokenStorage.getItem(this.ORG_ID);\n }\n\n public static getOrgCode() {\n return AppStorage.tokenStorage.getItem(this.ORG_CODE);\n }\n\n public static getOrgName() {\n return AppStorage.tokenStorage.getItem(this.ORG_NAME);\n }\n\n public static getToken() {\n return AppStorage.tokenStorage.getItem(this.JWT_TOKEN);\n }\n\n public static getRftToken() {\n return AppStorage.tokenStorage.getItem(this.JWT_RFT_TOKEN);\n }\n\n public static isLoggedIn() {\n return AppStorage.tokenStorage.getItem(this.JWT_TOKEN) != null;\n }\n\n public static clearToken() {\n console.log('-- clearToken --');\n AppStorage.tokenStorage.removeItem(this.JWT_TOKEN);\n AppStorage.tokenStorage.removeItem(this.USER_NAME);\n AppStorage.tokenStorage.removeItem(this.FULL_NAME);\n AppStorage.tokenStorage.removeItem(this.USER_MENU);\n AppStorage.tokenStorage.removeItem(this.ORG_ID);\n AppStorage.tokenStorage.removeItem(this.ORG_CODE);\n AppStorage.tokenStorage.removeItem(this.ORG_NAME);\n }\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { firstValueFrom } from 'rxjs';\nimport { AppGlobals } from '../app-global';\nimport { HTTPService } from '../services/api-service/http.service';\nimport { NotiService } from '../services/noti.service';\nimport { CommonService } from '../services/api-service/common.service';\nimport { TokenStorage } from './token.storage';\nimport { ESPModel, RespondData } from '../model';\n\nexport const URLs = {\n login: '/api/Auth/Login',\n register: '/api/Auth/Register',\n pingAuth: '/api/Auth/PingAuth',\n changePassword: '/api/Auth/ChangePassword',\n setPass: '/api/Auth/SetPass',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService extends HTTPService {\n notiService = inject(NotiService);\n commonService = inject(CommonService);\n\n ngZone = inject(NgZone);\n router = inject(Router);\n translate = inject(TranslateService);\n\n async refreshToken(): Promise<RespondData | null> {\n const refreshToken = TokenStorage.getRftToken();\n\n if (!refreshToken) return null;\n\n const body = { rft: refreshToken };\n\n try {\n const res = await this.sendRftToken(body);\n\n if (res?.IsSuccess) {\n TokenStorage.saveTokenRft(res.Data);\n return res;\n } else {\n return null;\n }\n } catch (err) {\n console.log(err);\n }\n\n return null;\n }\n\n async pingAuth(): Promise<boolean> {\n try {\n const res = await this.get(AppGlobals.apiEndpoint + URLs.pingAuth, true);\n return res?.IsSuccess;\n } catch {\n return false;\n }\n }\n\n async signIn(username: string, password: string, orgid: string, returnUrl: string): Promise<boolean> {\n try {\n const body = {\n UserName: username,\n Password: password,\n OrgId: orgid,\n };\n\n const res = await this.sendSignIn(body);\n\n if (!res.IsSuccess) {\n this.notiService.error(this.translate.instant(res.ErrorMessage));\n return false;\n }\n\n this.notiService.success('Đăng nhập thành công');\n TokenStorage.saveToken(res);\n this.startWatching();\n\n if (returnUrl) {\n this.router.navigateByUrl(returnUrl);\n }\n } catch (err) {\n this.notiService.handleError(err);\n return false;\n }\n\n return true;\n }\n\n async sendSignIn(body: any): Promise<RespondData> {\n return firstValueFrom(\n this.httpClient.post<RespondData>(AppGlobals.apiEndpoint + URLs.login, body, {\n headers: new HttpHeaders().set('Content-Type', 'application/json'),\n }),\n );\n }\n\n async sendRftToken(body: any): Promise<RespondData> {\n return firstValueFrom(\n this.httpClient.post<RespondData>(AppGlobals.apiEndpoint + '/api/Auth/RefreshToken', body, {\n headers: new HttpHeaders().set('Content-Type', 'application/json'),\n }),\n );\n }\n\n signOut() {\n TokenStorage.clearToken();\n this.stopWatching();\n const currentUrl = this.router.routerState.snapshot.url;\n this.router.navigate(['/login'], {\n queryParams: { returnUrl: currentUrl || '/' },\n });\n }\n\n getUserMenu() {\n let data: ESPModel = {\n SPN: `App_User_getUserMenu`,\n };\n return this.commonService.ESP(data);\n }\n\n async checkUserMenu(url: string): Promise<boolean> {\n try {\n const ret = await this.commonService.ESP({\n SPN: `App_User_checkUserMenu`,\n Params: [url],\n });\n\n return ret.IsSuccess && ret.Data == '1';\n } catch (error) {\n this.notiService.handleError(error);\n return true;\n }\n }\n\n changePassword(data: any) {\n return this.postData(AppGlobals.apiEndpoint + URLs.changePassword, data);\n }\n\n setPass(data: any) {\n return this.postData(AppGlobals.apiEndpoint + URLs.setPass, data);\n }\n\n async signUp(d: any) {\n try {\n const res = await this.sendSignUp(d);\n\n if (!res.IsSuccess) {\n this.notiService.error(res.ErrorMessage);\n return;\n }\n this.notiService.success('Đăng ký thành công');\n this.router.navigateByUrl('/login');\n } catch (err) {\n console.log(err);\n this.notiService.handleError(err);\n }\n }\n\n async sendSignUp(d: any): Promise<RespondData> {\n return this.postData(AppGlobals.apiEndpoint + URLs.register, d);\n }\n\n private idleTimer: any;\n private idleTimeInMinutes = 15; // phút\n private idleTime = this.idleTimeInMinutes * 60 * 1000;\n\n startWatching() {\n console.log(\n `-- start watching idle (${this.idleTimeInMinutes} ${this.idleTimeInMinutes == 1 ? 'min' : 'mins'}) --`,\n );\n\n this.resetTimer();\n\n window.addEventListener('mousemove', () => this.resetTimer());\n window.addEventListener('keydown', () => this.resetTimer());\n window.addEventListener('click', () => this.resetTimer());\n }\n\n private resetTimer() {\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n }\n\n this.ngZone.runOutsideAngular(() => {\n this.idleTimer = setTimeout(() => {\n this.ngZone.run(() => {\n console.log('-- idle logout --');\n\n this.signOut(); // auto logout\n });\n }, this.idleTime);\n });\n }\n\n stopWatching() {\n console.log('-- stop watching idle --');\n clearTimeout(this.idleTimer);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { AuthService } from './auth.service';\nimport { TokenStorage } from './token.storage';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n router = inject(Router);\n authService = inject(AuthService);\n\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n // return true;\n\n if (await this.authService.pingAuth()) {\n return true;\n }\n\n TokenStorage.clearToken();\n\n if (state.url != '/') {\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\n } else {\n this.router.navigate(['/login']);\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { delay, switchMap, distinctUntilChanged } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingService {\n private static loadingStack: any[] = [];\n private loadingSubject = new BehaviorSubject<boolean>(false);\n\n private update() {\n const isLoading = LoadingService.loadingStack.length > 0;\n this.loadingSubject.next(isLoading);\n }\n\n loadingUp() {\n LoadingService.loadingStack.push(1);\n this.update();\n }\n\n loadingDown() {\n LoadingService.loadingStack.pop();\n this.update();\n }\n\n /** Trả về observable loading có delay khi bật để tránh chớp nháy */\n get loading$(): Observable<boolean> {\n return this.loadingSubject.asObservable().pipe(\n switchMap((loading) => {\n return loading\n ? of(true).pipe(delay(200)) // delay khi bật\n : of(false); // tắt thì không delay\n }),\n distinctUntilChanged(),\n );\n }\n\n /** Nếu chỉ cần giá trị hiện tại boolean (ít dùng hơn) */\n get isLoading(): boolean {\n return LoadingService.loadingStack.length > 0;\n }\n}\n","import { HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TokenStorage } from './token.storage';\nimport { BehaviorSubject, catchError, filter, finalize, from, of, switchMap, take, throwError } from 'rxjs';\nimport { LoadingService } from '../services/loading.service';\nimport { AuthService } from './auth.service';\nimport { RespondData } from '../model';\n\nlet initialReturnUrl: string | null = null;\nlet isRefreshing = false;\nconst refreshTokenSubject = new BehaviorSubject<string | null>(null);\n\nexport function authInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn) {\n const router = inject(Router);\n const loadingService = inject(LoadingService);\n const authService = inject(AuthService);\n\n const authToken = TokenStorage.getToken();\n const noLoadingMark = req.headers.get('No-Loading-Mark');\n\n if (noLoadingMark !== '1') loadingService.loadingUp();\n\n // Convert dates\n if (!(req.body instanceof FormData)) {\n const newBody = convertDatesInBody(req.body);\n if (req.body !== newBody) {\n req = req.clone({ body: newBody });\n }\n }\n\n // Add token\n if (authToken) {\n req = req.clone({\n setHeaders: { Authorization: `Bearer ${authToken}` },\n });\n }\n\n return next(req).pipe(\n catchError((error) => {\n if (error.status === 401) {\n return handle401(req, next, router, authService);\n }\n return throwError(() => error);\n }),\n finalize(() => {\n if (noLoadingMark !== '1') loadingService.loadingDown();\n }),\n );\n}\n\n//\n// ⭐ REFRESH TOKEN HANDLER\n//\nfunction handle401(req: HttpRequest<any>, next: HttpHandlerFn, router: Router, authService: AuthService) {\n if (!isRefreshing) {\n isRefreshing = true;\n refreshTokenSubject.next(null);\n\n return from(authService.refreshToken()).pipe(\n switchMap((resAny: any) => {\n const res = resAny as RespondData;\n isRefreshing = false;\n\n if (!res?.IsSuccess) {\n const currentUrl = router.routerState.snapshot.url;\n\n if (!initialReturnUrl && !currentUrl.startsWith('/login')) {\n initialReturnUrl = currentUrl;\n }\n\n router.navigate(['/login'], {\n queryParams: { returnUrl: initialReturnUrl || '/' },\n });\n\n refreshTokenSubject.next(null);\n\n return of({\n IsSuccess: false,\n } as RespondData);\n }\n\n // Phát token mới cho các request đang chờ\n refreshTokenSubject.next(TokenStorage.getToken());\n\n // Retry request\n return next(\n req.clone({\n setHeaders: { Authorization: `Bearer ${TokenStorage.getToken()}` },\n }),\n );\n }),\n catchError((err) => {\n isRefreshing = false;\n TokenStorage.clearToken();\n const currentUrl = router.routerState.snapshot.url;\n\n if (!initialReturnUrl && !currentUrl.startsWith('/login')) {\n initialReturnUrl = currentUrl;\n }\n\n router.navigate(['/login'], {\n queryParams: { returnUrl: initialReturnUrl || '/' },\n });\n\n return throwError(() => err);\n }),\n );\n } else {\n // Nếu đang refresh → chờ token mới rồi retry\n return refreshTokenSubject.pipe(\n filter((token) => token != null),\n take(1),\n switchMap((token) =>\n next(\n req.clone({\n setHeaders: { Authorization: `Bearer ${token}` },\n }),\n ),\n ),\n );\n }\n}\n\nfunction convertDatesInBody(obj: any): any {\n if (obj instanceof Date) {\n return formatDate(obj);\n }\n\n if (Array.isArray(obj)) {\n return obj.map(convertDatesInBody);\n }\n\n if (typeof obj === 'object' && obj !== null) {\n const newObj: any = {};\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n\n if (value instanceof Date) {\n newObj[key] = formatDate(value);\n } else if (typeof value === 'string' && isIsoDate(value)) {\n newObj[key] = formatDate(new Date(value));\n } else if (typeof value === 'object') {\n newObj[key] = convertDatesInBody(value);\n } else {\n newObj[key] = value;\n }\n }\n return newObj;\n }\n\n return obj;\n}\n\nfunction isIsoDate(str: string): boolean {\n // ISO string with optional time and timezone\n return /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})?$/.test(str);\n}\n\nfunction formatDate(date: Date): string {\n const pad = (n: number) => n.toString().padStart(2, '0');\n return (\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ` +\n `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`\n );\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\n\nexport interface CanComponentDeactivate {\n canDeactivate: () => boolean | Promise<boolean>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UnsavedChangesGuard implements CanDeactivate<CanComponentDeactivate> {\n canDeactivate(component: CanComponentDeactivate): boolean | Promise<boolean> {\n return component.canDeactivate ? component.canDeactivate() : true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NzModalService, NzModalRef, ModalOptions } from 'ng-zorro-antd/modal';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomModalService {\n constructor(private modal: NzModalService) {}\n\n create<T, D = any>(options: ModalOptions<T, D>): NzModalRef<T, D> {\n const defaultOptions: Partial<ModalOptions<T, D>> = {\n nzMaskClosable: false,\n nzCentered: true,\n nzBodyStyle: {\n 'max-height': 'calc(100vh - 180px)',\n overflow: 'auto',\n },\n };\n\n const mergedOptions: ModalOptions<T, D> = {\n ...defaultOptions,\n ...options,\n nzStyle: {\n ...defaultOptions.nzStyle,\n ...options.nzStyle,\n },\n };\n\n return this.modal.create(mergedOptions);\n }\n\n confirm(options: ModalOptions): NzModalRef {\n return this.modal.confirm(options);\n }\n\n info(options: ModalOptions): NzModalRef {\n return this.modal.info(options);\n }\n\n success(options: ModalOptions): NzModalRef {\n return this.modal.success(options);\n }\n\n warning(options: ModalOptions): NzModalRef {\n return this.modal.warning(options);\n }\n\n error(options: ModalOptions): NzModalRef {\n return this.modal.error(options);\n }\n}\n","import { Component, inject, OnDestroy, OnInit } from '@angular/core';\nimport { NotiService } from '../services/noti.service';\nimport { AppGlobals } from '../app-global';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FormGroup } from '@angular/forms';\nimport { TranslateKey } from '../a-translate-key';\nimport { filter, Subscription } from 'rxjs';\nimport { CustomModalService } from '../services/custom-modal.service';\nimport { Location } from '@angular/common';\n\n@Component({ template: '' })\nexport class BaseComponent {\n protected AppGlobals = AppGlobals;\n\n protected TranslateKey = TranslateKey;\n\n protected route = inject(ActivatedRoute);\n protected router = inject(Router);\n protected location = inject(Location);\n\n protected notiService = inject(NotiService);\n protected translate = inject(TranslateService);\n protected modal = inject(CustomModalService);\n\n private routeSub?: Subscription;\n\n /**\n * Khi dùng onRouteChange nhớ dùng unSubRouteChange\n */\n protected onRouteChange(callback: (url: string) => void): void {\n this.routeSub = this.router.events\n .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n .subscribe((e: NavigationEnd) => {\n callback(e.urlAfterRedirects);\n });\n }\n\n protected unSubRouteChange(): void {\n this.routeSub?.unsubscribe();\n }\n\n protected goback() {\n this.location.back();\n }\n\n protected goto(url?: string) {\n if (url) {\n if (url.startsWith('/')) {\n this.router.navigateByUrl(url);\n } else {\n this.router.navigate([url], { relativeTo: this.route });\n }\n }\n }\n\n /**\n * /:id\n */\n protected getUrlParam(paramName: string) {\n const paramValue = this.route.snapshot.params[paramName];\n\n // bằng 0 thì trả về null vì chuyển primary key từ bigint sang string, code cũ đang truyền vào 0\n if (paramValue == '0' || paramValue == 'new' || paramValue == 'them-moi') {\n return null;\n }\n return paramValue;\n }\n\n /**\n * ?id=xxx\n */\n protected getUrlQueryParam(queryParamName: string) {\n const queryParamValue = this.route.snapshot.queryParamMap.get(queryParamName);\n return queryParamValue;\n }\n\n /**\n * Routes data\n */\n protected getUrlData(key: string) {\n return this.route.snapshot.data[key];\n }\n\n protected setQueryParam(name: string, value: string) {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n [name]: value,\n },\n queryParamsHandling: 'merge',\n });\n }\n\n protected get url() {\n return this.router.url;\n }\n\n protected get urlPath() {\n return this.router.url.split('?')[0];\n }\n\n protected handleError(err: any) {\n this.notiService.handleError(err);\n }\n\n protected touchControls(formData: FormGroup) {\n Object.values(formData.controls).forEach((control) => {\n if (control.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n });\n\n this.logFormErrors(formData);\n }\n\n protected untouchControls(formData: FormGroup) {\n formData.markAsPristine();\n formData.markAsUntouched();\n formData.updateValueAndValidity();\n }\n\n private logFormErrors(form: FormGroup, parentKey: string = '') {\n Object.keys(form.controls).forEach((key) => {\n const control = form.get(key);\n const fieldPath = parentKey ? `${parentKey}.${key}` : key;\n\n if (control instanceof FormGroup) {\n this.logFormErrors(control, fieldPath);\n } else {\n if (control?.errors) {\n console.log(`Control: ${fieldPath}`, control.errors);\n }\n }\n });\n }\n\n protected confirm(title: string, content: string = ''): Promise<boolean> {\n return new Promise((resolve) => {\n this.modal.confirm({\n // nzCentered: true,\n nzTitle: title,\n nzContent: content,\n nzOkText: this.translate.instant(this.TranslateKey.AGREE),\n nzOkType: 'primary',\n nzOkDanger: true,\n nzClosable: false,\n nzOnOk: () => resolve(true),\n nzAutofocus: 'ok',\n nzCancelText: this.translate.instant(this.TranslateKey.CANCEL),\n nzOnCancel: () => resolve(false),\n });\n });\n }\n\n protected backToTop() {\n // go to top\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n\n const content = document.querySelector('nz-content');\n if (content) {\n content.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n }\n}\n","import { Component, HostListener } from '@angular/core';\nimport { BaseComponent } from './base.component';\nimport { CanComponentDeactivate } from '../auth/unsaved-changes.guard';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n template: '',\n})\nexport class BaseGuardChangeComponent extends BaseComponent implements CanComponentDeactivate {\n formData?: FormGroup;\n\n @HostListener('window:beforeunload', ['$event'])\n unloadNotification($event: any) {\n if (this.formData?.dirty) {\n $event.preventDefault();\n $event.returnValue = true; // Chrome requires this line\n }\n }\n\n async canDeactivate(): Promise<boolean> {\n if (this.formData?.dirty) {\n return await this.confirm('Dữ liệu chưa được lưu. Bạn có chắc chắn muốn rời khỏi trang?');\n }\n return true;\n }\n\n clearChange() {\n // bỏ dirty để không hỏi khi rời trang\n this.formData?.markAsPristine();\n this.formData?.markAsUntouched();\n this.formData?.updateValueAndValidity();\n }\n}\n","import { ElementRef, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { fromEvent } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { BaseComponent } from './base.component';\nimport { NzButtonComponent } from 'ng-zorro-antd/button';\n\nexport class BaseOverlayComponent extends BaseComponent {\n // custom dropdow\n inputWidth: number = 0;\n triggerSpan = 500;\n private overlayRef!: OverlayRef;\n\n overlay = inject(Overlay);\n vcr = inject(ViewContainerRef);\n\n openOverlay(originEl: any, target: TemplateRef<any>, width = 0) {\n const origin: HTMLElement = originEl?.elementRef?.nativeElement ?? originEl?.nativeElement ?? originEl;\n\n this.updateInputWidth(origin);\n\n if (this.overlayRef) {\n this.overlayRef.detach(); // Đóng nếu đã mở\n }\n\n width = width > origin.offsetWidth ? width : origin.offsetWidth; // 👈 Lấy chiều rộng của input\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 5,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -5,\n },\n ])\n .withDefaultOffsetY(5);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: false,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width, // 👈 Gán chiều rộng cho overlay\n });\n\n this.overlayRef.backdropClick().subscribe(() => {\n this.overlayRef.detach();\n });\n\n const portal = new TemplatePortal(target, this.vcr);\n this.overlayRef.attach(portal);\n\n const overlayElement = this.overlayRef.overlayElement;\n\n // hasBackdrop: false, thêm cái này để đóng khi click ra ngoài\n fromEvent<MouseEvent>(document, 'click')\n .pipe(\n filter((event) => {\n const clickTarget = event.target as HTMLElement;\n\n return (\n this.overlayRef &&\n !overlayElement.contains(clickTarget) && // click không nằm trong overlay\n !origin.contains(clickTarget) && // và cũng không phải click vào input gốc\n !clickTarget.closest('.ant-select-dropdown') &&\n !clickTarget.closest('.ant-select-item') &&\n !clickTarget.closest('.ant-select-item-option-content') &&\n !clickTarget.closest('.no-close-custom-dropdow')\n );\n }),\n takeUntil(this.overlayRef.detachments()), // tự huỷ khi overlay bị đóng\n )\n .subscribe(() => {\n this.overlayRef?.detach();\n });\n }\n\n updateInputWidth(inputEl: HTMLElement) {\n this.inputWidth = inputEl?.offsetWidth || 0;\n }\n // END custom dropdow\n}\n","import { Component } from '@angular/core';\nimport { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { BaseComponent } from '../base.component';\n\ninterface IBreadcrumb {\n Name: string;\n URL?: string;\n Click?: Function;\n}\n\n@Component({\n selector: 'app-breadcrumb',\n templateUrl: './breadcrumb.html',\n imports: [NzBreadCrumbModule, NzIconModule],\n})\nexport class Breadcrumb extends BaseComponent {\n Breadcrumb = Breadcrumb;\n\n private static _lstBreadcrumb: IBreadcrumb[] = [];\n public static get lstBreadcrumb() {\n return Breadcrumb._lstBreadcrumb;\n }\n public static set lstBreadcrumb(val: IBreadcrumb[]) {\n setTimeout(() => {\n Breadcrumb._lstBreadcrumb = val;\n }, 0);\n }\n\n public static clear() {\n Breadcrumb.lstBreadcrumb = [];\n }\n\n gohome() {\n this.goto('');\n }\n\n onclick(item: IBreadcrumb) {\n if (item.URL) {\n this.goto(item.URL);\n } else if (item.Click) {\n item.Click();\n }\n }\n}\n","<nz-breadcrumb>\n <nz-breadcrumb-item (click)=\"gohome()\">\n <nz-icon nzType=\"home\" nzTheme=\"outline\" />\n </nz-breadcrumb-item>\n @for (item of Breadcrumb.lstBreadcrumb; track $index) {\n <nz-breadcrumb-item (click)=\"onclick(item)\">{{ item.Name }}</nz-breadcrumb-item>\n }\n</nz-breadcrumb>\n","import { Component, ElementRef, Input, AfterViewInit, ViewChild, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'animated-digit',\n templateUrl: 'animated-digit.component.html',\n styleUrls: ['animated-digit.component.scss'],\n})\nexport class AnimatedDigitComponent implements AfterViewInit, OnChanges {\n @Input() duration: number = 0;\n @Input() digit: number = 0;\n @Input() steps: number = 0;\n @ViewChild('animatedDigit') animatedDigit!: ElementRef;\n\n private currentValue: number = 0;\n\n animateCount() {\n if (!this.duration) {\n this.duration = 1000;\n }\n\n if (typeof this.digit === 'number') {\n this.counterFunc(this.currentValue, this.digit, this.duration, this.animatedDigit);\n }\n }\n\n counterFunc(startValue: number, endValue: number, durationMs: number, element: ElementRef) {\n if (!this.steps) {\n this.steps = 12;\n }\n\n const stepCount = Math.abs(durationMs / this.steps);\n const valueIncrement = (endValue - startValue) / stepCount;\n const sinValueIncrement = Math.PI / stepCount;\n\n let currentSinValue = 0;\n\n function step() {\n currentSinValue += sinValueIncrement;\n startValue += valueIncrement * Math.sin(currentSinValue) ** 2 * 2;\n if (element) element.nativeElement.textContent = Math.abs(Math.floor(startValue));\n\n if (currentSinValue < Math.PI) {\n window.requestAnimationFrame(step);\n }\n }\n\n step();\n }\n\n ngAfterViewInit() {\n if (this.digit) {\n this.animateCount();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['digit']) {\n this.animateCount();\n setTimeout(() => {\n this.currentValue = this.digit;\n }, this.duration);\n }\n }\n}\n","<span #animatedDigit class=\"animated-digit\">\n <span>{{digit}}</span>\n</span>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\n@Component({\n selector: 'cdk-bar-graph',\n templateUrl: './bar-graph.component.html',\n styleUrls: ['./bar-graph.component.scss'],\n imports: [CommonModule],\n})\nexport class BarGraphComponent implements OnInit, OnDestroy {\n @Input() height: number = 0;\n @Input() id: string = '';\n\n chart?: Chart;\n\n constructor() {\n Chart.register(...registerables);\n }\n\n ngOnInit() {\n setTimeout(() => {\n this.createBarGraph();\n }, 500);\n }\n\n ngOnDestroy(): void {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n\n createBarGraph() {\n if (!this.id) {\n return;\n }\n\n this.chart = new Chart(this.id, {\n type: 'bar',\n data: {\n labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug'],\n datasets: [\n {\n backgroundColor: 'rgba(92, 107, 192, .7)',\n borderColor: 'rgba(92, 107, 192, .7)',\n data: [70, 88, 77, 93, 82, 100, 70, 67, 78, 99],\n label: 'Dataset',\n },\n {\n backgroundColor: 'rgba(66, 165, 245, .7)',\n borderColor: 'rgba(69, 39, 160, .7)',\n data: [80, 88, 67, 95, 76, 60, 67, 95, 95, 66],\n label: 'Dataset',\n },\n {\n backgroundColor: 'rgba(38, 166, 154, .7)',\n borderColor: 'rgba(69, 39, 160, .7)',\n data: [60, 88, 70, 67, 27, 83, 78, 88, 95, 60],\n label: 'Dataset',\n },\n {\n backgroundColor: 'rgba(102, 187, 106, .7)',\n borderColor: 'rgba(255, 99, 132)',\n data: [75, 55, 55, 95, 66, 88, 70, 78, 77, 100],\n label: 'Dataset',\n },\n ],\n },\n options: {\n elements: {\n line: {\n tension: 0.000001,\n },\n },\n maintainAspectRatio: false,\n plugins: {\n filler: {\n propagate: false,\n },\n },\n },\n });\n }\n}\n","<div class=\"dash-bar-graph-holder mat-elevation-z4\" [ngStyle]=\"{ height: height + 'px' }\">\n <canvas [id]=\"id\"></canvas>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { AnimatedDigitComponent } from '../animated/animated-digit.component';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\n\n@Component({\n selector: 'cdk-dashcard',\n templateUrl: './dashcard.component.html',\n styleUrls: ['./dashcard.component.scss'],\n imports: [NzGridModule, NzIconModule, AnimatedDigitComponent],\n})\nexport class DashcardComponent implements OnInit {\n @Input() dashData: any;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","<div nz-row class=\"dashcard mat-elevation-z2\" style=\"height: 100%\">\n <div nz-col [nzSpan]=\"8\" class=\"text-center\" [style.background]=\"dashData?.colorLight\">\n <nz-icon class=\"mat-icon\" style=\"padding-top: 50px\" [nzType]=\"dashData?.icon\" nzTheme=\"outline\" />\n </div>\n <div nz-col [nzSpan]=\"16\" [style.background]=\"dashData?.colorDark\">\n <div class=\"text-center animated-digit\">\n <animated-digit [digit]=\"dashData?.number\"></animated-digit>\n </div>\n <p\n class=\"text-center mat-body-1 border-top text-bold\"\n style=\"font-size: 16px; margin-bottom: 8px; padding-top: 3px\"\n >\n {{ dashData?.title }}\n </p>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\n@Component({\n selector: 'cdk-doughnut-graph',\n templateUrl: './doughnut-graph.component.html',\n styleUrls: ['./doughnut-graph.component.scss'],\n imports: [CommonModule],\n})\nexport class DoughnutGraphComponent implements OnInit, OnDestroy {\n @Input() height: number = 0;\n @Input() id: string = '';\n\n chart?: Chart;\n\n constructor() {\n Chart.register(...registerables);\n }\n\n ngOnInit() {\n setTimeout(() => {\n this.createDoughnutGraph();\n }, 500);\n }\n\n ngOnDestroy(): void {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n\n randomNumber(min = 0, max = 0) {\n if (min == 0 || max == 0) return Math.round(Math.random() * 100);\n else return Math.random() * (max - min) + min;\n }\n\n createDoughnutGraph() {\n if (!this.id) {\n return;\n }\n\n this.chart = new Chart(this.id, {\n type: 'doughnut',\n data: {\n labels: ['Data '],\n datasets: [\n {\n data: [this.randomNumber(), this.randomNumber(), this.randomNumber(), this.randomNumber()],\n backgroundColor: [\n 'rgba(255, 99, 132,.7)',\n 'rgba(92, 107, 192,.7)',\n 'rgba(66, 165, 245,.7)',\n 'rgba(38, 166, 154,.7)',\n 'rgba(102, 187, 106,.7)',\n ],\n },\n ],\n },\n options: {\n elements: {\n line: {\n tension: 0.000001,\n },\n },\n\n maintainAspectRatio: false,\n responsive: true,\n plugins: {\n filler: {\n propagate: false,\n },\n },\n },\n });\n }\n}\n","<div class=\"doughnut-graph-graph-holder mat-elevation-z4 \" [ngStyle]=\"{'height': height + 'px'}\">\n <canvas [id]=\"id\"></canvas>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\n@Component({\n selector: 'cdk-line-graph',\n templateUrl: './line-graph.component.html',\n styleUrls: ['./line-graph.component.scss'],\n imports: [CommonModule],\n})\nexport class LineGraphComponent implements OnInit, OnDestroy {\n @Input() height: number = 0;\n @Input() id: string = '';\n\n chart?: Chart;\n\n constructor() {\n Chart.register(...registerables);\n }\n\n ngOnInit() {\n setTimeout(() => {\n this.createLineChart();\n }, 500);\n }\n\n ngOnDestroy(): void {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n\n createLineChart() {\n if (!this.id) {\n return;\n }\n\n this.chart = new Chart(this.id, {\n type: 'line',\n data: {\n labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],\n datasets: [\n {\n backgroundColor: 'rgba(92, 107, 192, 0.36)',\n borderColor: 'rgba(92, 107, 192,.5)',\n data: [76.97, 88.91, 99.31, 122.19, 130.85, 140.91, 150.36, 142.66, 150.36, 142.66],\n label: 'Dataset',\n fill: 'start',\n },\n ],\n },\n options: {\n elements: {\n line: {\n tension: 0.000001,\n },\n },\n\n maintainAspectRatio: false,\n plugins: {\n filler: {\n propagate: false,\n },\n },\n },\n });\n }\n}\n","<div class=\"line-graph-holder mat-elevation-z4 \" [ngStyle]=\"{'height': height + 'px'}\">\n <canvas [id]=\"id\"></canvas>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzFormModule } from 'ng-zorro-antd/form';\n\n@Component({\n selector: 'extend-checkbox',\n templateUrl: './extend-checkbox.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NzFormModule, NzCheckboxModule],\n})\nexport class ExtendCheckbox implements OnInit {\n @Input() label = '';\n @Input() labelSpan = 8;\n @Input() disabled = false;\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n /**\n * default: boolean\n */\n @Input() valueType: 'boolean' | 'number' | 'string' = 'boolean';\n\n @Input()\n get _ngModel() {\n if (this.valueType == 'boolean') {\n return this.checked;\n }\n if (this.valueType == 'number') {\n return this.checked ? 1 : 0;\n }\n if (this.valueType == 'string') {\n return this.checked ? 'Y' : 'N';\n }\n }\n set _ngModel(val: any) {\n if (this.controlName) {\n if (this.valueType == 'boolean') {\n this.formData.controls[this.controlName].valueChanges.subscribe((x) => {\n this.checked = x;\n });\n } else if (this.valueType == 'number') {\n this.formData.controls[this.controlName].valueChanges.subscribe((x) => {\n this.checked = x == 1;\n });\n } else {\n this.formData.controls[this.controlName].valueChanges.subscribe((x) => {\n this.checked = x == 'Y';\n });\n }\n } else {\n this.checked = val ? true : false;\n }\n }\n @Output() _ngModelChange = new EventEmitter();\n\n checked = false;\n\n ngOnInit(): void {\n if (this.controlName && this.formData?.controls[this.controlName]) {\n if (this.valueType === 'boolean') {\n this.checked = this.formData.controls[this.controlName].getRawValue();\n console.log(this.checked);\n } else if (this.valueType === 'number') {\n this.checked = this.formData.controls[this.controlName].getRawValue() === 1;\n } else {\n this.checked = this.formData.controls[this.controlName].getRawValue() === 'Y';\n }\n\n this.formData.controls[this.controlName].valueChanges.subscribe((x) => {\n if (this.valueType === 'boolean') {\n this.checked = x;\n } else if (this.valueType === 'number') {\n this.checked = x === 1;\n } else {\n this.checked = x === 'Y';\n }\n });\n }\n }\n\n onCheckChange(event: boolean) {\n if (this.controlName) {\n if (this.valueType == 'boolean') {\n this.formData.controls[this.controlName].setValue(event);\n } else if (this.valueType == 'number') {\n this.formData.controls[this.controlName].setValue(event ? 1 : 0);\n } else if (this.valueType == 'string') {\n this.formData.controls[this.controlName].setValue(event ? 'Y' : 'N');\n }\n } else {\n if (this.valueType == 'boolean') {\n this._ngModelChange.emit(event);\n } else if (this.valueType == 'number') {\n this._ngModelChange.emit(event ? 1 : 0);\n } else if (this.valueType == 'string') {\n this._ngModelChange.emit(event ? 'Y' : 'N');\n }\n }\n }\n}\n","@if (label) {\n <div nz-row>\n <div nz-col [nzSpan]=\"labelSpan\"></div>\n <div nz-col nzFlex=\"auto\">\n <label\n style=\"position: relative; top: 5px\"\n nz-checkbox\n [nzDisabled]=\"disabled\"\n [(nzChecked)]=\"checked\"\n (nzCheckedChange)=\"onCheckChange($event)\"\n >\n {{ label }}\n </label>\n </div>\n </div>\n} @else {\n <label\n nz-checkbox\n [nzDisabled]=\"disabled\"\n [(nzChecked)]=\"checked\"\n (nzCheckedChange)=\"onCheckChange($event)\"\n style=\"width: 16px\"\n >\n {{ label }}\n </label>\n}\n","export class DateTimeHelper {\n static lstDay = Array.from({ length: 31 }, (_, i) => i + 1);\n static lstMonth = Array.from({ length: 12 }, (_, i) => i + 1);\n\n private static fromYear = new Date().getFullYear() - 10;\n private static toYear = new Date().getFullYear();\n static lstYear = Array.from(\n { length: DateTimeHelper.toYear - DateTimeHelper.fromYear },\n (_, i) => DateTimeHelper.toYear - i,\n );\n\n /**\n * Lấy ngày giờ hiện tại dưới dạng chuỗi \"YYYY-MM-DD HH:mm:ss\"\n * @return {string}\n */\n static now(): string {\n const now = new Date();\n return `${now.getFullYear()}-${this.pad(now.getMonth() + 1)}-${this.pad(now.getDate())} ${this.pad(now.getHours())}:${this.pad(now.getMinutes())}:${this.pad(now.getSeconds())}`;\n }\n\n /**\n * Lấy ngày hôm nay dưới dạng chuỗi \"YYYY-MM-DD HH:mm:ss\"\n * @return {string}\n */\n static today(): string {\n const now = new Date();\n return `${now.getFullYear()}-${this.pad(now.getMonth() + 1)}-${this.pad(now.getDate())} 00:00:00`;\n }\n\n /**\n * Tạo ngày từ năm, tháng, ngày (có kiểm tra hợp lệ, không bị lệch múi giờ).\n * @param {number} year Năm\n * @param {number} month Tháng (1-12)\n * @param {number} day Ngày (1-31)\n * @param {boolean} isEndOfDay Nếu true, trả về 23:59:59, ngược lại 00:00:00\n * @return {string | null} Chuỗi ngày định dạng \"YYYY-MM-DD HH:mm:ss\" hoặc null nếu ngày không hợp lệ\n */\n static createDate(year: number, month: number, day: number, isEndOfDay: boolean = false): string | null {\n if (!this.isValidDate(year, month, day)) {\n return null;\n }\n\n const hour = isEndOfDay ? 23 : 0;\n const minute = isEndOfDay ? 59 : 0;\n const second = isEndOfDay ? 59 : 0;\n return `${year}-${this.pad(month)}-${this.pad(day)} ${this.pad(hour)}:${this.pad(minute)}:${this.pad(second)}`;\n }\n\n /**\n * Kiểm tra xem ngày có hợp lệ không.\n * @param {number} year Năm\n * @param {number} month Tháng (1-12)\n * @param {number} day Ngày (1-31)\n * @return {boolean} True nếu ngày hợp lệ, ngược lại False.\n */\n public static isValidDate(year: number, month: number, day: number): boolean {\n if (month < 1 || month > 12) return false;\n if (day < 1) return false;\n\n const lastDay = new Date(year, month, 0).getDate(); // Lấy ngày cuối tháng\n return day <= lastDay;\n }\n\n /**\n * Hàm hỗ trợ: Định dạng số thành 2 chữ số (01, 02, ..., 09)\n * @param {number} n The second number.\n * @return {string} The sum of the two numbers.\n */\n private static pad(n: number): string {\n return n.toString().padStart(2, '0');\n }\n\n public static parser(dateStr: string) {\n if (!dateStr.includes('/')) {\n dateStr = this.formatNumberToDate(dateStr);\n }\n\n const parts = dateStr.split('/');\n const current = new Date();\n\n let normalizedValue = '';\n\n if (parts.length === 1 && /^\\d{1,2}$/.test(parts[0])) {\n // Chỉ có ngày -> ghép tháng/năm hiện tại\n normalizedValue = `${parts[0].padStart(2, '0')}/${(current.getMonth() + 1).toString().padStart(2, '0')}/${current.getFullYear()}`;\n } else if (parts.length === 2 && /^\\d{1,2}$/.test(parts[0]) && /^\\d{1,2}$/.test(parts[1])) {\n // Có ngày + tháng -> ghép năm hiện tại\n normalizedValue = `${parts[0].padStart(2, '0')}/${parts[1].padStart(2, '0')}/${current.getFullYear()}`;\n } else {\n // Đã đủ 3 phần\n normalizedValue = dateStr;\n }\n\n if (normalizedValue) {\n const parts = normalizedValue.split('/');\n const day = +parts[0];\n const month = +parts[1];\n const year = +parts[2];\n\n if (DateTimeHelper.isValidDate(year, month, day)) {\n return DateTimeHelper.createDate(year, month, day);\n }\n }\n\n return '';\n }\n\n private static formatNumberToDate(input: string): string {\n // Lấy tối đa 8 ký tự\n input = input.replace(/\\D/g, '').substring(0, 8);\n\n const day = input.substring(0, 2);\n const month = input.substring(2, 4);\n const year = input.substring(4, 8);\n\n let result = '';\n\n if (day) {\n result += day;\n if (month) result += '/';\n }\n\n if (month) {\n result += month;\n if (year) result += '/';\n }\n\n if (year) {\n result += year;\n }\n\n return result;\n }\n}\n","import { Directive, HostListener, Input, AfterViewInit, ElementRef, Optional, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { parse, isValid } from 'date-fns';\nimport { DateTimeHelper } from '../helper/date.helper';\n\n/**\n * Dùng cho nz-date-picker\n */\n@Directive({\n selector: 'nz-date-picker',\n})\nexport class DateInputParserDirective implements AfterViewInit {\n @Input('format') format = 'dd/MM/yyyy';\n private inputElement: HTMLInputElement | null = null;\n private blurHandler = this.tryParseAndSet.bind(this);\n\n constructor(\n private el: ElementRef<HTMLElement>,\n @Optional() @Self() private ngControl: NgControl,\n ) {}\n\n ngAfterViewInit() {\n // Tìm thẻ input bên trong nz-date-picker\n this.inputElement = this.el.nativeElement.querySelector('input');\n\n // Gắn listener blur vào input\n if (this.inputElement) {\n this.inputElement.addEventListener('blur', this.blurHandler);\n }\n }\n\n ngOnDestroy() {\n // Cleanup blur listener để tránh memory leak\n if (this.inputElement) {\n this.inputElement.removeEventListener('blur', this.blurHandler);\n }\n }\n\n @HostListener('keyup.enter')\n onEnter() {\n this.tryParseAndSet();\n this.inputElement?.blur(); // Blur sau khi enter nếu muốn trigger binding ngoài\n }\n\n private tryParseAndSet() {\n if (!this.inputElement) return;\n\n const rawValue = this.inputElement.value.trim();\n const parsed = DateTimeHelper.parser(rawValue);\n\n if (parsed) {\n this.ngControl?.control?.setValue(parsed);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzSelectModeType, NzSelectSizeType } from 'ng-zorro-antd/select';\nimport { DateInputParserDirective } from '../../directive/date-input-parser.directive';\n\n@Component({\n selector: 'extend-date-picker',\n templateUrl: './extend-date-picker.html',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NzFormModule,\n NzDatePickerModule,\n TranslateModule,\n DateInputParserDirective,\n ],\n})\nexport class ExtendDatePicker {\n @Input() dateFormat = 'dd/MM/yyyy';\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal';\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() labelSpan = 8;\n @Input() inputSpan = 16;\n @Input() disabled = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() selectModeType: NzSelectModeType = 'default';\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n @Input() displayInline = false;\n @Input() size: NzSelectSizeType = 'default';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n\n @Input() lstItem: any[] = [];\n @Input() displayField: string = '';\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n onChange = (_: any) => {};\n onTouched = () => {};\n\n writeValue(obj: any): void {\n this._ngModel = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnInit(): void {}\n\n onNgModelChange(val: any) {\n this._ngModel = val;\n this.onChange(val); // Gửi ngược ra form\n this.onTouched();\n this._ngModelChange.emit(val);\n }\n\n disabledDate = (current: Date): boolean => {\n if (!current) return false;\n\n const min = this.minDate ? new Date(this.minDate) : null;\n const max = this.maxDate ? new Date(this.maxDate) : null;\n\n if (min && current < new Date(min.setHours(0, 0, 0, 0))) return true;\n if (max && current > new Date(max.setHours(23, 59, 59, 999))) return true;\n\n return false;\n };\n\n get errorMessage(): string {\n const value = this._ngModel ? new Date(this._ngModel) : null;\n\n if (!this.isTouched && !value) {\n return '';\n }\n\n if (this.required && !value) {\n return 'Trường yêu cầu nhập';\n }\n\n if (this.minDate && value && new Date(value) < new Date(this.minDate)) {\n return `Ngày không được nhỏ hơn ${this.formatDate(this.minDate)}`;\n }\n\n if (this.maxDate && value && new Date(value) > new Date(this.maxDate)) {\n return `Ngày không được lớn hơn ${this.formatDate(this.maxDate)}`;\n }\n return '';\n }\n\n private formatDate(date: Date): string {\n const d = new Date(date);\n const day = String(d.getDate()).padStart(2, '0');\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const year = d.getFullYear();\n\n switch (this.dateFormat) {\n case 'dd/MM/yyyy':\n return `${day}/${month}/${year}`;\n case 'MM/dd/yyyy':\n return `${month}/${day}/${year}`;\n default:\n return d.toLocaleDateString();\n }\n }\n\n isTouched = false;\n\n onBlur() {\n this.isTouched = true;\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? inputSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-date-picker\n class=\"full-width\"\n [nzPlaceHolder]=\"placeHolder || ' '\"\n [nzFormat]=\"dateFormat\"\n [nzSize]=\"size\"\n [formControlName]=\"controlName\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n }\"\n ></nz-date-picker>\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? inputSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"errorMessage\"\n [nzValidateStatus]=\"errorMessage ? 'error' : ''\"\n >\n <nz-date-picker\n class=\"full-width\"\n [nzPlaceHolder]=\"placeHolder || ' '\"\n [nzFormat]=\"dateFormat\"\n [nzSize]=\"size\"\n [disabled]=\"disabled\"\n [nzDisabledDate]=\"disabledDate\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n }\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"onNgModelChange($event)\"\n (blur)=\"onBlur()\"\n ></nz-date-picker>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <nz-date-picker\n class=\"full-width\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n }\"\n [nzSize]=\"size\"\n [nzPlaceHolder]=\"placeHolder || ' '\"\n [nzFormat]=\"dateFormat\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"onNgModelChange($event)\"\n ></nz-date-picker>\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzSelectModeType, NzSelectSizeType } from 'ng-zorro-antd/select';\nimport { endOfMonth, endOfWeek, startOfMonth, startOfWeek, subMonths, subWeeks } from 'date-fns';\n\n@Component({\n selector: 'extend-date-range-picker',\n templateUrl: './extend-date-range-picker.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NzFormModule, NzDatePickerModule, TranslateModule],\n})\nexport class ExtendDateRangePicker implements OnInit {\n @Input() dateFormat = 'dd/MM/yyyy';\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal';\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() labelSpan = 8;\n @Input() inputSpan = 16;\n @Input() disabled = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() selectModeType: NzSelectModeType = 'default';\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n @Input() displayInline = false;\n @Input() size: NzSelectSizeType = 'default';\n\n @Input() lstItem: any[] = [];\n @Input() displayField: string = '';\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() date1: Date | null = null;\n @Output() date1Change = new EventEmitter();\n\n @Input() date2: Date | null = null;\n @Output() date2Change = new EventEmitter();\n\n _ngModel: Date[] | undefined;\n\n today = new Date();\n\n ranges = {\n 'Tuần này': [startOfWeek(this.today, { weekStartsOn: 1 }), endOfWeek(this.today, { weekStartsOn: 1 })],\n 'Tuần trước': [\n startOfWeek(subWeeks(this.today, 1), { weekStartsOn: 1 }),\n endOfWeek(subWeeks(this.today, 1), { weekStartsOn: 1 }),\n ],\n 'Tháng này': [startOfMonth(this.today), endOfMonth(this.today)],\n 'Tháng trước': [startOfMonth(subMonths(this.today, 1)), endOfMonth(subMonths(this.today, 1))],\n };\n\n ngOnInit(): void {\n this._ngModel = this.date1 && this.date2 ? [this.date1, this.date2] : undefined;\n }\n\n ngModelChange(value: Date[] | undefined) {\n this._ngModel = value;\n\n if (value && value.length === 2) {\n this.date1 = value[0];\n this.date2 = value[1];\n } else {\n this.date1 = null;\n this.date2 = null;\n }\n\n this.date1Change.emit(this.date1);\n this.date2Change.emit(this.date2);\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (controlName) {\n <!-- <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? inputSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-date-picker\n class=\"full-width\"\n [nzPlaceHolder]=\"placeHolder || ' '\"\n [nzFormat]=\"dateFormat\"\n [nzSize]=\"size\"\n [formControlName]=\"controlName\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n }\"\n ></nz-date-picker>\n </nz-form-control>\n </nz-form-item>\n </div> -->\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-range-picker\n [nzSize]=\"size\"\n [nzFormat]=\"dateFormat\"\n [nzPlaceHolder]=\"['Từ ngày', 'đến ngày']\"\n [nzRanges]=\"ranges\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"ngModelChange($event)\"\n ></nz-range-picker>\n </nz-form-item>\n } @else {\n <nz-range-picker\n [nzSize]=\"size\"\n [nzFormat]=\"dateFormat\"\n [nzPlaceHolder]=\"['Từ ngày', 'đến ngày']\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"ngModelChange($event)\"\n ></nz-range-picker>\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberComponent, NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzSelectModeType, NzSelectSizeType } from 'ng-zorro-antd/select';\n\n@Component({\n selector: 'extend-input-number',\n templateUrl: './extend-input-number.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule, NzFormModule, NzInputNumberModule],\n})\nexport class ExtendInputNumber {\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal'; // horizontal: ngang, vertical dọc\n @Input() label = '';\n @Input() placeHolder: 'off' | '' = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() labelSpan = 8;\n @Input() disabled = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() size: NzSelectSizeType = 'default';\n\n @Input() min: number | null = null;\n @Input() max: number | null = null;\n @Input() precision: number = 0;\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n @Input() displayInline = false;\n\n /** separatorType: 'comma' (,) | 'dot' (.) */\n @Input() separatorType?: 'comma' | 'dot' | 'blank';\n /** defaultSeparatorType: 'comma' (,) | 'dot' (.) */\n static defaultSeparatorType: 'comma' | 'dot' = 'dot';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n @ViewChild('inputnumber') inputnumber!: NzInputNumberComponent;\n\n ngOnInit(): void {}\n\n _onNgModelChange() {\n this._ngModelChange.emit(this._ngModel);\n }\n\n @ViewChild('inputElement') inputElement!: ElementRef;\n\n focus(): void {\n this.inputElement?.nativeElement?.focus();\n }\n\n formatterNumber = (value: number): string => {\n if (value == null || isNaN(value)) return '';\n\n if (!this.getSeparatorType()) {\n return value.toString();\n }\n const parts = `${value}`.split('.');\n const integerPart = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.getSeparatorType() === 'comma' ? ',' : '.');\n return parts.length > 1\n ? `${integerPart}${this.getSeparatorType() === 'comma' ? '.' : ','}${parts[1]}`\n : integerPart;\n };\n\n parserNumber = (value: string): number => {\n if (!value) return 0;\n\n if (!this.getSeparatorType()) {\n return parseFloat(value);\n }\n\n // Bỏ ký tự phân cách hàng nghìn\n const cleaned = value\n .replace(new RegExp(`\\\\${this.getSeparatorType() === 'comma' ? ',' : '.'}`, 'g'), '')\n .replace(this.getSeparatorType() === 'comma' ? '.' : ',', '.');\n\n // Kiểm tra toàn bộ chuỗi có phải là số hợp lệ hay không\n if (!/^-?\\d+(\\.\\d+)?$/.test(cleaned)) return NaN;\n\n const parsed = parseFloat(cleaned);\n\n // Ép chạy formatter lại\n setTimeout(() => {\n this.inputnumber.writeValue(parsed);\n this._ngModelChange.emit(parsed);\n if (this.formData && this.controlName) {\n this.formData.controls[this.controlName].setValue(parsed);\n }\n });\n\n return parsed;\n };\n\n getSeparatorType() {\n if (this.separatorType == 'blank') {\n return '';\n }\n if (this.separatorType) {\n return this.separatorType;\n }\n return ExtendInputNumber.defaultSeparatorType;\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [formControlName]=\"controlName\"\n />\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n @if (min != null && max != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMin]=\"min\"\n [nzMax]=\"max\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else if (min != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMin]=\"min\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else if (max != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMax]=\"max\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n }\n </nz-form-control>\n </nz-form-item>\n } @else {\n @if (min != null && max != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMin]=\"min\"\n [nzMax]=\"max\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else if (min != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMin]=\"min\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else if (max != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMax]=\"max\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n border: borderBottomOnly ? 'none' : '',\n 'border-bottom': borderBottomOnly ? '1px dashed' : '',\n }\"\n />\n }\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzSelectModeType, NzSelectSizeType } from 'ng-zorro-antd/select';\n\n@Component({\n selector: 'extend-input',\n templateUrl: './extend-input.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule, NzFormModule, NzInputModule, NzIconModule],\n})\nexport class ExtendInput {\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal'; // horizontal: ngang, vertical dọc\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() inputClass = '';\n\n /**\n * default = 8\n */\n @Input() labelSpan = 8;\n\n @Input() allowClear = false;\n @Input() disabled = false;\n @Input() readOnly = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() selectModeType: NzSelectModeType = 'default';\n @Input() autocomplete: 'off' | '' = '';\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n @Input() displayInline = false;\n @Input() size: NzSelectSizeType = 'default';\n\n @Input() lstItem: any[] = [];\n\n /**\n * Dùng trong word page\n */\n @Input() displayField: string = '';\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n @Output() onclickClearIcon = new EventEmitter();\n\n @Output() onenter = new EventEmitter();\n\n ngOnInit(): void {}\n\n _onNgModelChange() {\n this._ngModelChange.emit(this._ngModel);\n }\n\n @ViewChild('inputElement') inputElement!: ElementRef;\n\n focus(): void {\n this.inputElement?.nativeElement?.select();\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <input\n #inputElement\n nz-input\n [nzSize]=\"size\"\n [id]=\"controlName\"\n [name]=\"controlName\"\n [formControlName]=\"controlName\"\n [autocomplete]=\"autocomplete\"\n [placeholder]=\"placeHolder\"\n [ngClass]=\"inputClass\"\n (keyup.enter)=\"onenter.emit()\"\n />\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-input-group [nzSize]=\"size\" [nzSuffix]=\"allowClear ? clearIcon : undefined\">\n <input\n #inputElement\n nz-input\n [nzSize]=\"size\"\n [id]=\"controlName\"\n [name]=\"controlName\"\n [(ngModel)]=\"_ngModel\"\n [autocomplete]=\"autocomplete\"\n (ngModelChange)=\"_onNgModelChange()\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [placeholder]=\"placeHolder\"\n [ngClass]=\"inputClass\"\n (keyup.enter)=\"onenter.emit()\"\n />\n </nz-input-group>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <input\n #inputElement\n nz-input\n [nzSize]=\"size\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [id]=\"controlName\"\n [name]=\"controlName\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [placeholder]=\"placeHolder\"\n [ngClass]=\"inputClass + ' ' + (borderBottomOnly ? 'border-bottom-only' : '')\"\n (keyup.enter)=\"onenter.emit()\"\n />\n }\n }\n</div>\n\n<ng-template #clearIcon>\n <i\n nz-icon\n nzType=\"close-circle\"\n nzTheme=\"twotone\"\n nzTwotoneColor=\"#999\"\n *ngIf=\"_ngModel\"\n (click)=\"_ngModel = null; _onNgModelChange(); onclickClearIcon.emit()\"\n style=\"cursor: pointer\"\n ></i>\n</ng-template>\n","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NzSelectModule, NzSelectSizeType } from 'ng-zorro-antd/select';\nimport { FormGroup, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzFormModule } from 'ng-zorro-antd/form';\n\n@Component({\n selector: 'extend-select',\n templateUrl: './extend-select.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule, NzFormModule, NzSelectModule],\n styles: `\n :host ::ng-deep .ant-select-selector {\n height: var(--custom-select-height) !important;\n line-height: var(--custom-select-height) !important;\n }\n `,\n})\nexport class ExtendSelectComponent {\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal';\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n\n /**\n * default = 8\n */\n @Input() labelSpan = 8;\n @Input()\n get disabled() {\n return this._disabled;\n }\n set disabled(val: boolean) {\n this._disabled = val;\n\n if (this.formData && this.controlName) {\n const control = this.formData.controls[this.controlName];\n\n if (this._disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false }); // <-- bỏ disable\n }\n }\n }\n @Input() required = false;\n @Input() noBottom = false;\n @Input() multiple = false;\n @Input() showSelectAll = false;\n @Input() maxTagCount = 10;\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n\n /**\n *\n */\n @Input() displayInline = false;\n @Input() size: NzSelectSizeType = 'default';\n\n @Input() lstItem: any[] = [];\n @Input() displayField: string = '';\n @Input() displayFields: string[] = [];\n\n /**\n * Không có thì value sẽ là cả object\n */\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n @Output() itemChange = new EventEmitter();\n\n @Output() onFocus = new EventEmitter();\n\n @HostBinding('style.--custom-select-height')\n get cssHeight() {\n return this.inputHeight ? +this.inputHeight.replaceAll('px', '') - 1 + 'px' : null;\n }\n\n private _disabled = false;\n\n ngOnInit(): void {\n if (this.formData && this.controlName) {\n this.formData.controls[this.controlName].valueChanges.subscribe((val) => {\n this._ngModelChange.emit(val);\n this.itemChange.emit(this.lstItem.find((x) => x[this.valueField] == val));\n });\n }\n }\n\n getDisplay(item: any): string {\n if (this.displayField) {\n return item[this.displayField];\n }\n\n if (this.displayFields?.length) {\n const display = this.displayFields.map((field) => item[field]).join(' - ');\n return display;\n }\n\n return item;\n }\n\n onSelectChange(val: any) {\n if (val instanceof Array && val.find((x) => x == '__all__')) {\n const allIds = this.lstItem.map((x) => (this.valueField ? x[this.valueField] : x));\n val = allIds;\n }\n\n this._ngModel = val;\n this._ngModelChange.emit(val);\n\n if (this.valueField) {\n this.itemChange.emit(this.lstItem.find((x) => x[this.valueField] == val));\n }\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (!multiple) {\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-select\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzAllowClear]=\"true\"\n [nzShowSearch]=\"true\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [formControlName]=\"controlName\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-select\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzAllowClear]=\"true\"\n [nzShowSearch]=\"true\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [ngModel]=\"_ngModel\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectChange($event)\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <nz-select\n class=\"full-width\"\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzPlaceHolder]=\"placeHolder\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"onSelectChange($event)\"\n (nzFocus)=\"onFocus.emit()\"\n [disabled]=\"disabled\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n 'custom-height-select': inputHeight ? true : false,\n }\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n }\n }\n } @else {\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-select\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzMode]=\"'multiple'\"\n [nzMaxMultipleCount]=\"lstItem.length\"\n [nzMaxTagCount]=\"maxTagCount\"\n [nzAllowClear]=\"true\"\n [nzShowSearch]=\"true\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [formControlName]=\"controlName\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-select\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzMode]=\"'multiple'\"\n [nzMaxMultipleCount]=\"lstItem.length\"\n [nzMaxTagCount]=\"maxTagCount\"\n [nzAllowClear]=\"true\"\n [nzShowSearch]=\"true\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [ngModel]=\"_ngModel\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectChange($event)\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <nz-select\n class=\"full-width\"\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzPlaceHolder]=\"placeHolder\"\n [nzMode]=\"'multiple'\"\n [nzMaxMultipleCount]=\"lstItem.length\"\n [nzMaxTagCount]=\"maxTagCount\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [ngModel]=\"_ngModel\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectChange($event)\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n }\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzSelectModeType } from 'ng-zorro-antd/select';\n\n@Component({\n selector: 'extend-textarea',\n templateUrl: './extend-textarea.html',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NzFormModule,\n NzDatePickerModule,\n TranslateModule,\n NzInputModule,\n ],\n})\nexport class ExtendTextArea implements AfterViewInit {\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal';\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() labelSpan = 8;\n @Input() inputSpan = 16;\n @Input() disabled = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() selectModeType: NzSelectModeType = 'default';\n @Input() inputClass = '';\n\n @Input() minRows = 3;\n @Input() maxRows = 5;\n @Input() autoSize = false;\n\n @Input() lstItem: any[] = [];\n @Input() displayField: string = '';\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n ngAfterViewInit(): void {}\n\n onChange() {\n this._ngModelChange.emit(this._ngModel);\n }\n}\n","@if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <textarea\n nz-input\n [nzAutosize]=\"autoSize || { minRows: minRows, maxRows: maxRows }\"\n [formControlName]=\"controlName\"\n [ngClass]=\"inputClass\"\n ></textarea>\n </nz-form-control>\n </nz-form-item>\n </div>\n} @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <textarea\n nz-input\n [nzAutosize]=\"autoSize || { minRows: minRows, maxRows: maxRows }\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"onChange()\"\n [disabled]=\"disabled\"\n [ngClass]=\"inputClass\"\n ></textarea>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <textarea\n nz-input\n [nzAutosize]=\"autoSize || { minRows: minRows, maxRows: maxRows }\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"onChange()\"\n [disabled]=\"disabled\"\n [ngClass]=\"inputClass\"\n ></textarea>\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n template: `\n <h2>Không có quyền truy cập</h2>\n <p *ngIf=\"message\">{{ message }}</p>\n <p *ngIf=\"deniedUrl\">\n Bạn đã cố gắng truy cập: <strong>{{ deniedUrl }}</strong>\n </p>\n `,\n imports: [CommonModule],\n})\nexport class NoPermission {\n deniedUrl: string | null = null;\n message: string | null = null;\n\n constructor(private router: Router) {}\n\n ngOnInit(): void {\n const state = history.state;\n\n this.deniedUrl = state?.deniedUrl || null;\n this.message = state?.message || null;\n\n console.log('Lấy từ history.state:', state);\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { NZ_MODAL_DATA } from 'ng-zorro-antd/modal';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\n\n@Component({\n selector: 'pdf-viewer',\n templateUrl: './pdf-viewer.html',\n imports: [NgxExtendedPdfViewerModule],\n})\nexport class PdfViewerComponent implements OnInit {\n // data = inject(NZ_MODAL_DATA);\n\n @Input() dataType: 'base64' | 'bytes' | null = null;\n @Input() pdfData: any;\n\n ngOnInit(): void {\n // this.dataType = this.data.dataType;\n // this.pdfData = this.data.pdfData;\n // this.showPrintButton = this.data.showPrintButton;\n }\n\n print() {\n if (this.dataType == 'base64') {\n const byteCharacters = atob(this.pdfData);\n const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: 'application/pdf' });\n\n const blobUrl = window.URL.createObjectURL(blob);\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = blobUrl;\n document.body.appendChild(iframe);\n iframe.contentWindow?.print();\n } else if (this.dataType == 'bytes') {\n const blob = new Blob([this.pdfData], { type: 'application/pdf' });\n\n const blobUrl = window.URL.createObjectURL(blob);\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = blobUrl;\n document.body.appendChild(iframe);\n iframe.contentWindow?.print();\n }\n }\n}\n","@if (dataType == \"base64\") {\n <ngx-extended-pdf-viewer\n [zoom]=\"100\"\n [base64Src]=\"this.pdfData\"\n [showPrintButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [showDownloadButton]=\"false\"\n ></ngx-extended-pdf-viewer>\n}\n\n@if (dataType == \"bytes\") {\n <ngx-extended-pdf-viewer\n [zoom]=\"100\"\n [src]=\"this.pdfData\"\n [showPrintButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [showDownloadButton]=\"false\"\n ></ngx-extended-pdf-viewer>\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { Subscription } from 'rxjs';\nimport { LoadingService } from '../../services/loading.service';\n\n// global-spinner.component.ts\n@Component({\n selector: 'app-global-spinner',\n template: `\n @if (visible) {\n <div class=\"global-spinner\" [@fadeInOut]>\n <nz-spin [nzSpinning]=\"true\" style=\"position: relative; bottom: 50px;\"></nz-spin>\n </div>\n }\n `,\n styles: [\n `\n .global-spinner {\n position: fixed;\n z-index: 1200; /* Lớn hơn z-index của modal (usually ~1000) */\n top: 50px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n background-color: rgba(255, 255, 255, 0.8); /* Optional overlay */\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `,\n ],\n animations: [\n trigger('fadeInOut', [\n // transition(':enter', [style({ opacity: 0 }), animate('250ms ease-in', style({ opacity: 1 }))]),\n transition(':leave', [animate('250ms ease-out', style({ opacity: 0 }))]),\n ]),\n ],\n\n imports: [NzSpinModule],\n})\nexport class GlobalSpinnerComponent implements OnInit, OnDestroy {\n visible = false;\n private sub!: Subscription;\n\n constructor(public loadingService: LoadingService) {}\n\n ngOnInit() {\n this.sub = this.loadingService.loading$.subscribe((v) => {\n this.visible = v;\n });\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'height',\n template: `<div [ngStyle]=\"{ height: height + 'px' }\"></div>`,\n imports: [CommonModule],\n})\nexport class Height {\n @Input() height: number = 0;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'width',\n template: `<div style=\"display: inline\" [ngStyle]=\"{ 'padding-left': width + 'px' }\"></div>`,\n imports: [CommonModule],\n})\nexport class Width {\n @Input() width: number = 0;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'box',\n template: `<div\n [ngStyle]=\"{\n height: height + 'px',\n 'padding-left': width + 'px',\n display: display ? display : width && height ? 'block' : height ? 'block' : width ? 'inline' : display,\n }\"\n ></div>`,\n imports: [CommonModule],\n})\nexport class Box {\n @Input() display: 'block' | 'inline' | '' = '';\n @Input() width: number = 0;\n @Input() height: number = 0;\n}\n","import { Directive, ElementRef, Input, Renderer2, OnChanges, SimpleChanges, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[appAutoFocus]'\n})\nexport class AutoFocusDirective implements OnChanges {\n\n @Input() appAutoFocus: boolean = false;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['appAutoFocus'] && this.appAutoFocus) {\n setTimeout(() => this.el.nativeElement.focus(), 0);\n }\n }\n}\n","import { Directive, ElementRef, HostListener, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: 'input',\n})\nexport class NullIfEmptyDirective {\n constructor(\n private el: ElementRef,\n @Optional() private ngControl: NgControl,\n ) {}\n\n @HostListener('input')\n onInput() {\n // const value = this.el.nativeElement.value;\n // const newValue = value.trim() === '' ? null : value;\n // this.ngControl?.control?.setValue(newValue, { emitEvent: false });\n }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[numberOnly]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberOnlyDirective),\n multi: true,\n },\n ],\n})\nexport class NumberOnlyDirective implements ControlValueAccessor {\n onChange = (value: any) => {};\n onTouched = () => {};\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const formattedValue = this.formatValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n if (this.onChange) {\n this.onChange(formattedValue);\n }\n }\n\n writeValue(value: any): void {\n const formattedValue = value ? this.formatValue(value) : '';\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', isDisabled);\n }\n\n private formatValue(value: string): string {\n return value.replace(/\\D/g, '');\n }\n}\n","import { Directive, forwardRef, ElementRef, Renderer2 } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Directive({\n selector: '[uppercaseFirstLetterEachWord]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UpperCaseFirsLetterEachWordDirective),\n multi: true,\n },\n ],\n})\nexport class UpperCaseFirsLetterEachWordDirective implements ControlValueAccessor {\n private inputElement: HTMLInputElement | null = null;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngAfterViewInit() {\n setTimeout(() => {\n // Nếu gắn vào <input>, thì chính nó là input\n if (this.el.nativeElement.tagName.toLowerCase() === 'input') {\n this.inputElement = this.el.nativeElement;\n } else {\n // Nếu không, tìm input con bên trong\n this.inputElement = this.el.nativeElement.querySelector('input');\n }\n\n if (this.inputElement) {\n this.renderer.listen(this.inputElement, 'input', (event: any) => {\n const formatted = this.formatValue(event.target.value);\n this.renderer.setProperty(this.inputElement, 'value', formatted);\n this.onChange(formatted);\n });\n }\n\n if (this.pendingValue !== null) {\n this.renderer.setProperty(this.inputElement, 'value', this.pendingValue);\n this.pendingValue = null;\n }\n }, 0);\n }\n\n private pendingValue: any = null;\n\n writeValue(value: any): void {\n const formattedValue = value ? this.formatValue(value) : '';\n if (this.inputElement) {\n this.renderer.setProperty(this.inputElement, 'value', formattedValue);\n } else {\n this.pendingValue = formattedValue;\n }\n }\n\n onChange = (_: any) => {};\n onTouched = () => {};\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.inputElement) {\n this.renderer.setProperty(this.inputElement, 'disabled', isDisabled);\n }\n }\n\n private formatValue(value: string): string {\n return value\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[uppercaseFirstLetter]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UppercaseFirstLetterDirective),\n multi: true,\n },\n ],\n})\nexport class UppercaseFirstLetterDirective implements ControlValueAccessor {\n onChange = (value: any) => {};\n onTouched = () => {};\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const formattedValue = this.formatValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n if (this.onChange) {\n this.onChange(formattedValue);\n }\n }\n\n writeValue(value: any): void {\n const formattedValue = value ? this.formatValue(value) : '';\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', isDisabled);\n }\n\n private formatValue(value: string): string {\n const ls = value.split('');\n ls[0] = ls[0].toUpperCase();\n return ls.join('');\n }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[uppercase]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UppercaseDirective),\n multi: true,\n },\n ],\n})\nexport class UppercaseDirective implements ControlValueAccessor {\n onChange = (value: any) => {};\n onTouched = () => {};\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const formattedValue = this.formatValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n if (this.onChange) {\n this.onChange(formattedValue);\n }\n }\n\n writeValue(value: any): void {\n const formattedValue = value ? this.formatValue(value) : '';\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', isDisabled);\n }\n\n private formatValue(value: string): string {\n return value.toUpperCase();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'limitWords',\n})\nexport class LimitWordsPipe implements PipeTransform {\n transform(value: string, limit: number = 3): string {\n if (!value) return '';\n const words = value.split(' ');\n return words.length <= limit ? value : words.slice(0, limit).join(' ') + '...';\n }\n}\n","export class DownloadHelper {\n public static downloadFileBlop(response: any) {\n const contentDisposition = response.headers.get('Content-Disposition');\n let filename = 'downloaded-file';\n\n if (contentDisposition) {\n const filenameStarMatch = contentDisposition.match(/filename\\*\\=UTF-8''(.+?)(;|$)/);\n const filenameMatch = contentDisposition.match(/filename=\"?([^\"]+)\"?/);\n\n if (filenameStarMatch?.[1]) {\n filename = decodeURIComponent(filenameStarMatch[1]);\n } else if (filenameMatch?.[1]) {\n filename = filenameMatch[1];\n }\n }\n\n const blob = new Blob([response.body!], { type: 'application/octet-stream' });\n\n if (blob.size <= 4) {\n console.log(blob.size);\n\n alert('Không có dữ liệu file');\n return;\n }\n\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.download = filename;\n link.click();\n }\n\n public static downloadFile(data: any, filename: string) {\n const contentType = 'application/octet-stream';\n const blob = new Blob([data], { type: contentType });\n\n if (blob.size <= 4) {\n console.log(blob.size);\n alert('Không có dữ liệu file');\n return;\n }\n\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.download = filename;\n link.click();\n }\n\n public static downloadFileBase64(base64Data: string, fileName: string) {\n // Chuyển đổi Base64 thành dữ liệu nhị phân\n const binaryString = window.atob(base64Data);\n const binaryLen = binaryString.length;\n const bytes = new Uint8Array(binaryLen);\n\n for (let i = 0; i < binaryLen; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n // Tạo một Blob từ dữ liệu nhị phân\n const blob = new Blob([bytes], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });\n\n if (blob.size <= 4) {\n console.log(blob.size);\n alert('Không có dữ liệu file');\n return;\n }\n\n // Tạo một liên kết tạm thời để tải tệp về\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.download = fileName;\n\n // Kích hoạt việc tải tệp\n document.body.appendChild(link);\n link.click();\n\n // Xóa liên kết sau khi tải\n document.body.removeChild(link);\n }\n}\n","import * as XLSX from 'xlsx';\n\nexport class XLSXHelper {\n public static readExcelFileToObjects(file: File, columnCount?: number, readAllSheets?: boolean): Promise<any> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (e: ProgressEvent<FileReader>) => {\n const data = new Uint8Array(e.target?.result as ArrayBuffer);\n const workbook = XLSX.read(data, { type: 'array' });\n\n const sheetNames = workbook.SheetNames;\n\n // Trả về nhiều sheet\n if (readAllSheets) {\n const sheetsdata: Record<string, any[]> = {};\n\n for (const sheetName of sheetNames) {\n const worksheet = workbook.Sheets[sheetName];\n const rawData: any[][] = XLSX.utils.sheet_to_json(worksheet, {\n header: 1,\n defval: '',\n });\n\n let rows = rawData.slice(1);\n\n while (rows.length > 0 && rows[rows.length - 1].every((cell) => cell === '' || cell == null)) {\n rows.pop();\n }\n\n const result = rows.map((row, index) => {\n const obj: any = {};\n const limit = columnCount ?? row.length;\n for (let i = 0; i < limit; i++) {\n obj[`col${i + 1}`] = row[i] ?? '';\n }\n obj.rowIndex = index + 2;\n return obj;\n });\n\n sheetsdata[sheetName] = result;\n }\n\n postMessage({\n sheets: sheetNames,\n sheetsdata,\n });\n\n resolve({\n sheets: sheetNames,\n sheetsdata,\n });\n }\n\n // Trả về sheet đầu tiên\n else {\n const sheetName = sheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n const rawData: any[][] = XLSX.utils.sheet_to_json(worksheet, {\n header: 1,\n defval: '',\n });\n\n let rows = rawData.slice(1);\n\n while (rows.length > 0 && rows[rows.length - 1].every((cell) => cell === '' || cell == null)) {\n rows.pop();\n }\n\n const result = rows.map((row, index) => {\n const obj: any = {};\n const limit = columnCount ?? row.length;\n for (let i = 0; i < limit; i++) {\n obj[`col${i + 1}`] = row[i] ?? '';\n }\n obj.rowIndex = index + 2;\n return obj;\n });\n\n resolve(result);\n }\n };\n\n reader.onerror = (error) => reject(error);\n reader.readAsArrayBuffer(file);\n });\n }\n}\n","import { AppGlobals } from './app-global';\n\nexport interface ApiEndpoint {\n apiEndpoint: string;\n versionCheck: string;\n}\n\nexport interface RespondData {\n IsSuccess: boolean;\n ErrorMessage: string;\n Data: any;\n}\n\nexport interface ESPModel {\n SPN: string;\n Params?: any[];\n}\n\nexport interface ExportExcelModel extends ESPModel {\n FileCode?: string;\n TemplateName?: string;\n OpenXML?: boolean;\n}\n\nexport class PagingModel {\n PageIndex: number = 0;\n PageSize: number = AppGlobals.pageSizeOptions[1];\n}\n\nexport class GridFilter extends PagingModel {\n Keyword: string | null = null;\n OrderOption: OrderOption | null = null;\n}\n\nexport class OrderOption {\n FieldName: string | null = null;\n Direction: string | null = null;\n}\n\nexport class PagingData<T = any> {\n LstHeader: TableHeader[] = [];\n LstItem: T[] = [];\n TotalCount = 0;\n\n constructor(\n obj?: any,\n private TypeConstructor?: new (data?: any) => T,\n ) {\n obj = obj ?? {};\n\n this.LstHeader = obj.LstHeader || [];\n this.TotalCount = obj.TotalCount || 0;\n\n if (Array.isArray(obj.LstItem) && this.TypeConstructor) {\n this.LstItem = obj.LstItem.map((item: any) => new this.TypeConstructor!(item));\n } else {\n this.LstItem = obj.LstItem || [];\n }\n }\n}\n\nexport class TableHeader {\n Code: string = '';\n Name: string = '';\n Class: string = '';\n Type: string = '';\n Width: string = '';\n MinWidth: string = '';\n}\n\nexport class CheckModel {\n ConfirmMessage: string = '';\n ConfirmContent: string = '';\n ErrorMessage: string = '';\n ErrorContent: string = '';\n}\n","import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { AuthService } from '../auth/auth.service';\nimport { NotiService } from './noti.service';\n\n@Injectable({ providedIn: 'root' })\nexport class RouteMonitorService {\n constructor(\n private router: Router,\n private authService: AuthService,\n private notiService: NotiService,\n ) {\n this.router.events.subscribe(async (event) => {\n if (event instanceof NavigationEnd) {\n const url = event.urlAfterRedirects;\n\n if (url.startsWith('/') || url.startsWith('/login') || url == '/no-permission') {\n return;\n }\n\n const hasMenu = await this.authService.checkUserMenu(url);\n if (!hasMenu) {\n this.notiService.error(`Không có quyền truy cập: ${url}`);\n this.router.navigate(['/no-permission'], {\n state: {\n deniedUrl: url,\n message: `Bạn không có quyền truy cập vào đường dẫn ${url}`,\n },\n });\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n setHighContrast(enabled: boolean) {\n document.body.classList.toggle('high-contrast', enabled);\n localStorage.setItem('high-contrast', enabled ? '1' : '0');\n }\n\n isHighContrast(): boolean {\n return localStorage.getItem('high-contrast') == '1';\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { HTTPService } from './api-service/http.service';\nimport { NotiService } from './noti.service';\nimport { AppGlobals } from '../app-global';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VscService extends HTTPService {\n // private readonly currentVersion = '{{POST_BUILD_ENTERS_VERSION_HERE}}';\n public static feClientVersion = '{{POST_BUILD_ENTERS_VERSION_HERE}}';\n public static feServerVersion: string;\n public static beVersion: {};\n public static dbVersion: string;\n public static jsReportTemplateVersion: string;\n\n private modal = inject(NzModalService);\n private notiService = inject(NotiService);\n private interval: any;\n private isShowingPopup = false;\n\n // 10 phút\n public initVersionCheck(frequency = 1000 * 60 * 10) {\n this.interval = setInterval(() => {\n if (!this.isShowingPopup) {\n this.checkVersion();\n }\n }, frequency);\n this.checkVersion();\n }\n\n public checkVersion(all = false) {\n console.log('Check version');\n this.checkFrontendVersion();\n if (all) {\n this.checkBackendVersion();\n // this.checkDatabaseVersion();\n // this.checkJSReportTemplateVersion();\n }\n }\n\n public checkFrontendVersion() {\n if (this.isShowingPopup) {\n return;\n }\n console.log('Check version');\n console.log('current version: ', VscService.feClientVersion);\n this.get(AppGlobals.versionCheck + '?t=' + new Date().getTime()).then(\n async (response: any) => {\n VscService.feServerVersion = response.version;\n console.log('version check: ', VscService.feServerVersion);\n const hashChanged = this.hasVersionChanged(VscService.feClientVersion, VscService.feServerVersion);\n if (hashChanged) {\n // window.location.reload();\n // window.location.href = window.location.href;\n this.isShowingPopup = true;\n // await this.notiService.warning('Có phiên bản mới', 'Vui lòng ấn \"Ctrl + F5\" để cập nhật');\n // this.isShowingPopup = false;\n const modalRef = this.modal.warning({\n nzTitle: 'Có phiên bản mới',\n nzContent: 'Vui lòng ấn \"Ctrl + F5\" để cập nhật',\n });\n }\n },\n (err) => {\n console.error(err, 'Could not get version');\n },\n );\n }\n\n private hasVersionChanged(currentVersion: string, newVersion: string) {\n if (!currentVersion || newVersion === currentVersion) {\n return false;\n }\n return currentVersion !== newVersion;\n }\n\n public clearInterval() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n }\n\n private checkBackendVersion() {\n this.httpClient.get(AppGlobals.apiEndpoint + '/version').subscribe(\n async (response: any) => {\n VscService.beVersion = response;\n },\n (err) => {\n console.error(err, 'Could not get backend version');\n VscService.beVersion = 'Could not get backend version';\n },\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["switchMap","filter","i1","i2","i3","i4","i5","i7","i6","i1.LoadingService","i2.AuthService","i3.NotiService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"brggroup-share-lib.mjs","sources":["../../../projects/share/src/lib/a-translate-key.ts","../../../projects/share/src/lib/app-global.ts","../../../projects/share/src/lib/app-storeage.ts","../../../projects/share/src/lib/services/api-service/http.service.ts","../../../projects/share/src/lib/services/noti.service.ts","../../../projects/share/src/lib/services/api-service/common.service.ts","../../../projects/share/src/lib/auth/token.storage.ts","../../../projects/share/src/lib/auth/auth.service.ts","../../../projects/share/src/lib/auth/auth.guard.ts","../../../projects/share/src/lib/services/loading.service.ts","../../../projects/share/src/lib/auth/auth.interceptor.ts","../../../projects/share/src/lib/auth/unsaved-changes.guard.ts","../../../projects/share/src/lib/services/custom-modal.service.ts","../../../projects/share/src/lib/components/base.component.ts","../../../projects/share/src/lib/components/base.guard-change.ts","../../../projects/share/src/lib/components/base.overlay.component.ts","../../../projects/share/src/lib/components/breadcrumb/breadcrumb.ts","../../../projects/share/src/lib/components/breadcrumb/breadcrumb.html","../../../projects/share/src/lib/components/dashboard-widget/animated/animated-digit.component.ts","../../../projects/share/src/lib/components/dashboard-widget/animated/animated-digit.component.html","../../../projects/share/src/lib/components/dashboard-widget/bar-graph/bar-graph.component.ts","../../../projects/share/src/lib/components/dashboard-widget/bar-graph/bar-graph.component.html","../../../projects/share/src/lib/components/dashboard-widget/dashcard/dashcard.component.ts","../../../projects/share/src/lib/components/dashboard-widget/dashcard/dashcard.component.html","../../../projects/share/src/lib/components/dashboard-widget/doughnut-graph/doughnut-graph.component.ts","../../../projects/share/src/lib/components/dashboard-widget/doughnut-graph/doughnut-graph.component.html","../../../projects/share/src/lib/components/dashboard-widget/line-graph/line-graph.component.ts","../../../projects/share/src/lib/components/dashboard-widget/line-graph/line-graph.component.html","../../../projects/share/src/lib/components/extend-checkbox/extend-checkbox.ts","../../../projects/share/src/lib/components/extend-checkbox/extend-checkbox.html","../../../projects/share/src/lib/helper/date.helper.ts","../../../projects/share/src/lib/directive/date-input-parser.directive.ts","../../../projects/share/src/lib/components/extend-date-picker/extend-date-picker.ts","../../../projects/share/src/lib/components/extend-date-picker/extend-date-picker.html","../../../projects/share/src/lib/components/extend-date-range-picker/extend-date-range-picker.ts","../../../projects/share/src/lib/components/extend-date-range-picker/extend-date-range-picker.html","../../../projects/share/src/lib/components/extend-input-number/extend-input-number.ts","../../../projects/share/src/lib/components/extend-input-number/extend-input-number.html","../../../projects/share/src/lib/components/extend-input/extend-input.ts","../../../projects/share/src/lib/components/extend-input/extend-input.html","../../../projects/share/src/lib/components/extend-select/extend-select.ts","../../../projects/share/src/lib/components/extend-select/extend-select.html","../../../projects/share/src/lib/components/extend-textarea/extend-textarea.ts","../../../projects/share/src/lib/components/extend-textarea/extend-textarea.html","../../../projects/share/src/lib/components/no-permission/no-permission.ts","../../../projects/share/src/lib/components/pdf-viewer/pdf-viewer.ts","../../../projects/share/src/lib/components/pdf-viewer/pdf-viewer.html","../../../projects/share/src/lib/components/spinner/spinner.ts","../../../projects/share/src/lib/components/height.ts","../../../projects/share/src/lib/components/width.ts","../../../projects/share/src/lib/components/box.ts","../../../projects/share/src/lib/directive/auto-focus.directive.ts","../../../projects/share/src/lib/directive/null-if-empty.directive.ts","../../../projects/share/src/lib/directive/number-only.directive.ts","../../../projects/share/src/lib/directive/uppercase-each-word.directive.ts","../../../projects/share/src/lib/directive/uppercase-first-letter.directive.ts","../../../projects/share/src/lib/directive/uppercase.directive.ts","../../../projects/share/src/lib/pipe/limit-words.pipe.ts","../../../projects/share/src/lib/helper/download.helper.ts","../../../projects/share/src/lib/helper/xlsx.helper.ts","../../../projects/share/src/lib/model.ts","../../../projects/share/src/lib/services/router-monitor.service.ts","../../../projects/share/src/lib/services/theme.service.ts","../../../projects/share/src/lib/services/vsc.service.ts","../../../projects/share/src/brggroup-share-lib.ts"],"sourcesContent":["export enum TranslateKey {\n ACTION = 'ACTION',\n ADD = 'ADD',\n AGREE = 'AGREE',\n BACK = 'BACK',\n CANCEL = 'CANCEL',\n CLOSE = 'CLOSE',\n CONFIRM = 'CONFIRM',\n CONFIRM_DELETE = 'CONFIRM_DELETE',\n COMPLETE = 'COMPLETE',\n DELETE = 'DELETE',\n DELETE_SUCCESS = 'DELETE_SUCCESS',\n EDIT = 'EDIT',\n ERROR = 'ERROR',\n EXPORT = 'EXPORT',\n HIDDEN = 'HIDDEN',\n IMPORT = 'IMPORT',\n INFO = 'INFO',\n LOGIN = 'LOGIN',\n LOGOUT = 'LOGOUT',\n NO_CONNECT_TO_SERVER = 'NO_CONNECT_TO_SERVER',\n OK = 'OK',\n PASSWORD = 'PASSWORD',\n REQUIRED = 'REQUIRED',\n REQUIRED_FIELD = 'REQUIRED_FIELD',\n REFEESH = 'REFEESH',\n RESET = 'RESET',\n RESET_PASSWORD = 'RESET_PASSWORD',\n SAVE = 'SAVE',\n SEARCH = 'SEARCH',\n SHOW = 'SHOW',\n SUCCESS = 'SUCCESS',\n SAVE_SUCCESS = 'SAVE_SUCCESS',\n SETTING = 'SETTING',\n PROFILE = 'PROFILE',\n USERNAME = 'USERNAME',\n UPDATE = 'UPDATE',\n WARNING = 'WARNING',\n YES = 'YES',\n DOWNLOAD_TEMPLATE = 'DOWNLOAD_TEMPLATE',\n WARNING_CHECK_DATA = 'WARNING_CHECK_DATA',\n}\n","export class AppGlobals {\n public static apiEndpoint: string;\n public static versionCheck: string;\n\n public static MENU_TYPE: 'side-menu' | 'toolbar-menu' = 'toolbar-menu';\n public static pageSizeOptions = [10, 20, 50, 100];\n\n public static filterSet: any = {};\n public static selectedIdSet: any = {};\n\n public static clearFillter() {\n this.filterSet = {};\n }\n\n public static getFilter(key: any) {\n return this.filterSet[key];\n }\n\n public static setFilter(key: any, filter: any) {\n this.filterSet[key] = filter;\n }\n\n public static getSelectedId(key: any) {\n return this.selectedIdSet[key];\n }\n\n public static setSelectedId(key: any, value: any) {\n this.selectedIdSet[key] = value;\n }\n\n public static setLang(lang: string) {\n localStorage.setItem('LANGUAGE', lang);\n }\n\n public static getLang(): string {\n if (!localStorage.getItem('LANGUAGE')) {\n localStorage.setItem('LANGUAGE', 'vn');\n }\n return localStorage.getItem('LANGUAGE') || '';\n }\n\n public static getOrgId() {\n return localStorage.getItem('orgid');\n }\n\n public static getOrgCode() {\n return localStorage.getItem('orgcode');\n }\n\n public static getOrgName() {\n return localStorage.getItem('orgname');\n }\n\n public static getUserName() {\n return localStorage.getItem('username');\n }\n\n public static getUserFullName() {\n return localStorage.getItem('fullname');\n }\n}\n","import { inject } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\nexport class AppStorage {\n \n static get tokenStorage() {\n return localStorage;\n // return sessionStorage;\n }\n\n static get localStoreage() {\n return localStorage;\n }\n\n static get sessionStoreage() {\n return sessionStorage;\n }\n\n static getLang(): string {\n return AppStorage.localStoreage.getItem('LANGUAGE') || 'vn';\n }\n\n static setLang(lang: string) {\n AppStorage.localStoreage.setItem('LANGUAGE', lang || 'vn');\n }\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { RespondData } from '../../model';\n\nexport class HTTPService {\n httpClient = inject(HttpClient);\n\n get(url: string, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n };\n\n return firstValueFrom(this.httpClient.get<RespondData>(url, options));\n }\n\n getParams(url: string, params: HttpParams, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n params: params,\n };\n\n return firstValueFrom(this.httpClient.get<RespondData>(url, options));\n }\n\n post(url: string, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n };\n\n return firstValueFrom(this.httpClient.post<RespondData>(url, null, options));\n }\n\n postParams(url: string, params: HttpParams, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n params: params,\n };\n\n return firstValueFrom(this.httpClient.post<RespondData>(url, null, options));\n }\n\n postData(url: string, body: any, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n };\n\n return firstValueFrom(this.httpClient.post<RespondData>(url, body, options));\n }\n\n postDataWithParams(url: string, body: any, params?: HttpParams, noLoadingMark?: boolean): Promise<RespondData> {\n const options = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json; charset=utf-8',\n 'No-Loading-Mark': noLoadingMark ? '1' : '0',\n }),\n params: params,\n };\n\n return firstValueFrom(this.httpClient.post<RespondData>(url, body, options));\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\nimport { firstValueFrom } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TranslateKey } from '../a-translate-key';\n\nfunction escapeHtml(str: string) {\n return str.replace(/</g, '<').replace(/>/g, '>');\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotiService {\n modal = inject(NzModalService);\n notification = inject(NzNotificationService);\n translate = inject(TranslateService);\n\n async success(title?: string, content: string = '', showPopup: boolean = false): Promise<void> {\n if (showPopup) {\n return new Promise<void>((resolve) => {\n const modalRef = this.modal.success({\n nzTitle: title ?? this.translate.instant(TranslateKey.SUCCESS),\n nzContent: content,\n nzOnOk: () => resolve(),\n });\n });\n } else {\n const notiRef = this.notification.success(title ?? this.translate.instant(TranslateKey.SUCCESS), content);\n if (notiRef?.onClose) {\n await firstValueFrom(notiRef.onClose);\n }\n }\n }\n\n async warning(title: string, content: string = '', showPopup: boolean = false): Promise<void> {\n if (showPopup) {\n return new Promise<void>((resolve) => {\n const modalRef = this.modal.warning({\n nzTitle: title,\n nzContent: content,\n nzOnOk: () => resolve(),\n });\n });\n } else {\n const notiRef = this.notification.warning(title, content);\n if (notiRef?.onClose) {\n await firstValueFrom(notiRef.onClose);\n }\n }\n }\n\n async error(title: string, content: string = '', showPopup: boolean = false): Promise<void> {\n if (showPopup) {\n return new Promise<void>((resolve) => {\n const modalRef = this.modal.error({\n nzTitle: title,\n nzContent: content,\n nzOnOk: () => resolve(),\n });\n });\n } else {\n const notiRef = this.notification.error(title, content);\n if (notiRef?.onClose) {\n await firstValueFrom(notiRef.onClose);\n }\n }\n }\n\n handleError(err: any): void {\n if (err?.status == 0) {\n // this.notification.error('', this.translate.instant('NO_CONNECT_TO_SERVER'), { nzDuration: 0 });\n\n this.modal.error({\n nzTitle: 'Lỗi phát sinh',\n nzContent: this.translate.instant('NO_CONNECT_TO_SERVER'),\n nzWidth: '40vw',\n nzOkText: 'Đóng',\n });\n\n return;\n }\n\n let _data: any = null;\n\n if (err?.error instanceof ArrayBuffer) {\n const message = new TextDecoder('utf-8').decode(new Uint8Array(err.error));\n try {\n _data = JSON.parse(message);\n } catch (error) {}\n } else if (err?.error instanceof Blob) {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const text = reader.result as string;\n _data = JSON.parse(text);\n this.handleError(_data);\n } catch (e) {\n // this.notification.error('', this.translate.instant('UNKNOWN_ERROR'), { nzDuration: 0 });\n\n this.modal.error({\n nzTitle: 'Lỗi phát sinh',\n nzContent: this.translate.instant('UNKNOWN_ERROR'),\n nzWidth: '40vw',\n nzOkText: 'Đóng',\n });\n }\n };\n\n reader.onerror = () => {\n // this.notification.error('', this.translate.instant('UNKNOWN_ERROR'), { nzDuration: 0 });\n\n this.modal.error({\n nzTitle: 'Lỗi phát sinh',\n nzContent: this.translate.instant('UNKNOWN_ERROR'),\n nzWidth: '40vw',\n nzOkText: 'Đóng',\n });\n };\n reader.readAsText(err.error);\n return;\n } else if (err?.error && typeof err.error === 'object') {\n _data = err.error;\n } else {\n _data = err;\n }\n\n let errorMsg = err?.message || 'An unexpected error occurred.';\n\n if (err?.name == 'EmptyError' && err?.message == 'no elements in sequence') {\n return;\n }\n\n if (_data?.ErrorMessage) {\n let hasMsgTag = false;\n let isMatchFirstMsg = false;\n\n let isMatch = _data.ErrorMessage?.match(/System.Data.SqlClient.SqlException \\(0x80131904\\): <msg>(.*?)<\\/msg>/);\n isMatchFirstMsg = isMatch ? true : false;\n\n if (isMatchFirstMsg) {\n const matches = [..._data.ErrorMessage?.matchAll(/<msg>(.*?)<\\/msg>/g)];\n const messages = matches.map((m) => m[1]);\n if (messages.length > 0) {\n errorMsg = messages.join('\\n');\n hasMsgTag = true;\n } else {\n errorMsg = _data.ErrorMessage;\n }\n } else {\n errorMsg = _data.ErrorMessage;\n }\n }\n\n const modalRef = this.modal.error({\n nzTitle: 'Lỗi phát sinh',\n nzContent: errorMsg,\n nzWidth: '40vw',\n nzClosable: false,\n nzCancelText: 'Đóng',\n nzOkText: 'Chi tiết',\n nzOnOk: () => {\n modalRef.destroy();\n\n this.modal.error({\n nzTitle: 'Chi tiết lỗi',\n nzContent: escapeHtml(JSON.stringify(_data, null, 2)),\n nzWidth: '60vw',\n nzDraggable: true,\n nzCentered: true,\n nzOkText: 'Đóng',\n });\n },\n });\n }\n}\n","import { ESPModel, ExportExcelModel } from '../../model';\nimport { AppGlobals } from '../../app-global';\nimport { HTTPService } from './http.service';\nimport { firstValueFrom } from 'rxjs';\nimport { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nexport enum ENUM_ResponseType {\n ARRAYBUFFER = 'arraybuffer',\n BLOB = 'blob',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CommonService extends HTTPService {\n ESP(obj: ESPModel) {\n const params = new HttpParams().append('SPN', obj.SPN);\n return this.postDataWithParams(AppGlobals.apiEndpoint + '/api/Common/ESP', obj, params);\n }\n\n ExportExcel(data: ExportExcelModel) {\n return firstValueFrom(\n this.httpClient.post(AppGlobals.apiEndpoint + '/api/Common/ExportExcel', data, {\n responseType: ENUM_ResponseType.BLOB,\n observe: 'response',\n }),\n );\n }\n}\n","import { jwtDecode } from 'jwt-decode';\nimport { RespondData } from '../model';\nimport { AppStorage } from '../app-storeage';\n\nexport class TokenStorage {\n public static readonly JWT_TOKEN = 'JWT_TOKEN';\n public static readonly JWT_RFT_TOKEN = 'JWT_RFT_TOKEN';\n public static readonly USER_NAME = 'username';\n public static readonly FULL_NAME = 'fullname';\n public static readonly USER_MENU = 'usermenu';\n public static readonly ORG_ID = 'orgid';\n public static readonly ORG_CODE = 'orgcode';\n public static readonly ORG_NAME = 'orgname';\n\n public static saveToken(tokenRes: RespondData) {\n AppStorage.tokenStorage.setItem(this.JWT_TOKEN, tokenRes.Data.Token);\n AppStorage.tokenStorage.setItem(this.JWT_RFT_TOKEN, tokenRes.Data.RefreshToken);\n TokenStorage.saveTokenInfo(tokenRes.Data.Token);\n }\n\n public static saveTokenRft(token: string) {\n AppStorage.tokenStorage.setItem(this.JWT_TOKEN, token);\n TokenStorage.saveTokenInfo(token);\n }\n\n private static saveTokenInfo(token: string) {\n const userInfo: any = jwtDecode(token);\n\n AppStorage.tokenStorage.setItem(this.USER_NAME, userInfo[this.USER_NAME]);\n AppStorage.tokenStorage.setItem(this.FULL_NAME, userInfo[this.FULL_NAME]);\n AppStorage.tokenStorage.setItem(this.ORG_ID, userInfo[this.ORG_ID]);\n AppStorage.tokenStorage.setItem(this.ORG_CODE, userInfo[this.ORG_CODE]);\n AppStorage.tokenStorage.setItem(this.ORG_NAME, userInfo[this.ORG_NAME]);\n }\n\n public static saveUserMenu(menus: any[]) {\n AppStorage.tokenStorage.setItem(this.USER_MENU, JSON.stringify(menus));\n }\n\n public static getUserMenu(): any[] {\n return JSON.parse(AppStorage.tokenStorage.getItem(this.USER_MENU) || '[]');\n }\n\n public static getUsername() {\n return AppStorage.tokenStorage.getItem(this.USER_NAME);\n }\n\n public static getUserFullname() {\n return AppStorage.tokenStorage.getItem(this.FULL_NAME);\n }\n\n public static getOrgId() {\n return AppStorage.tokenStorage.getItem(this.ORG_ID);\n }\n\n public static getOrgCode() {\n return AppStorage.tokenStorage.getItem(this.ORG_CODE);\n }\n\n public static getOrgName() {\n return AppStorage.tokenStorage.getItem(this.ORG_NAME);\n }\n\n public static getToken() {\n return AppStorage.tokenStorage.getItem(this.JWT_TOKEN);\n }\n\n public static getRftToken() {\n return AppStorage.tokenStorage.getItem(this.JWT_RFT_TOKEN);\n }\n\n public static isLoggedIn() {\n return AppStorage.tokenStorage.getItem(this.JWT_TOKEN) != null;\n }\n\n public static clearToken() {\n console.log('-- clearToken --');\n AppStorage.tokenStorage.removeItem(this.JWT_TOKEN);\n AppStorage.tokenStorage.removeItem(this.USER_NAME);\n AppStorage.tokenStorage.removeItem(this.FULL_NAME);\n AppStorage.tokenStorage.removeItem(this.USER_MENU);\n AppStorage.tokenStorage.removeItem(this.ORG_ID);\n AppStorage.tokenStorage.removeItem(this.ORG_CODE);\n AppStorage.tokenStorage.removeItem(this.ORG_NAME);\n }\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { firstValueFrom } from 'rxjs';\nimport { AppGlobals } from '../app-global';\nimport { HTTPService } from '../services/api-service/http.service';\nimport { NotiService } from '../services/noti.service';\nimport { CommonService } from '../services/api-service/common.service';\nimport { TokenStorage } from './token.storage';\nimport { ESPModel, RespondData } from '../model';\n\nexport const URLs = {\n login: '/api/Auth/Login',\n register: '/api/Auth/Register',\n pingAuth: '/api/Auth/PingAuth',\n changePassword: '/api/Auth/ChangePassword',\n setPass: '/api/Auth/SetPass',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService extends HTTPService {\n notiService = inject(NotiService);\n commonService = inject(CommonService);\n\n ngZone = inject(NgZone);\n router = inject(Router);\n translate = inject(TranslateService);\n\n async refreshToken(): Promise<RespondData | null> {\n const refreshToken = TokenStorage.getRftToken();\n\n if (!refreshToken) return null;\n\n const body = { rft: refreshToken };\n\n try {\n const res = await this.sendRftToken(body);\n\n if (res?.IsSuccess) {\n TokenStorage.saveTokenRft(res.Data);\n return res;\n } else {\n return null;\n }\n } catch (err) {\n console.log(err);\n }\n\n return null;\n }\n\n async pingAuth(): Promise<boolean> {\n try {\n const res = await this.get(AppGlobals.apiEndpoint + URLs.pingAuth, true);\n return res?.IsSuccess;\n } catch {\n return false;\n }\n }\n\n async signIn(username: string, password: string, orgid: string, returnUrl: string): Promise<boolean> {\n try {\n const body = {\n UserName: username,\n Password: password,\n OrgId: orgid,\n };\n\n const res = await this.sendSignIn(body);\n\n if (!res.IsSuccess) {\n this.notiService.error(this.translate.instant(res.ErrorMessage));\n return false;\n }\n\n this.notiService.success('Đăng nhập thành công');\n TokenStorage.saveToken(res);\n this.startWatching();\n\n if (returnUrl) {\n this.router.navigateByUrl(returnUrl);\n }\n } catch (err) {\n this.notiService.handleError(err);\n return false;\n }\n\n return true;\n }\n\n async sendSignIn(body: any): Promise<RespondData> {\n return firstValueFrom(\n this.httpClient.post<RespondData>(AppGlobals.apiEndpoint + URLs.login, body, {\n headers: new HttpHeaders().set('Content-Type', 'application/json'),\n }),\n );\n }\n\n async sendRftToken(body: any): Promise<RespondData> {\n return firstValueFrom(\n this.httpClient.post<RespondData>(AppGlobals.apiEndpoint + '/api/Auth/RefreshToken', body, {\n headers: new HttpHeaders().set('Content-Type', 'application/json'),\n }),\n );\n }\n\n signOut() {\n TokenStorage.clearToken();\n this.stopWatching();\n const currentUrl = this.router.routerState.snapshot.url;\n this.router.navigate(['/login'], {\n queryParams: { returnUrl: currentUrl || '/' },\n });\n }\n\n getUserMenu() {\n let data: ESPModel = {\n SPN: `App_User_getUserMenu`,\n };\n return this.commonService.ESP(data);\n }\n\n async checkUserMenu(url: string): Promise<boolean> {\n try {\n const ret = await this.commonService.ESP({\n SPN: `App_User_checkUserMenu`,\n Params: [url],\n });\n\n return ret.IsSuccess && ret.Data == '1';\n } catch (error) {\n this.notiService.handleError(error);\n return true;\n }\n }\n\n changePassword(data: any) {\n return this.postData(AppGlobals.apiEndpoint + URLs.changePassword, data);\n }\n\n setPass(data: any) {\n return this.postData(AppGlobals.apiEndpoint + URLs.setPass, data);\n }\n\n async signUp(d: any) {\n try {\n const res = await this.sendSignUp(d);\n\n if (!res.IsSuccess) {\n this.notiService.error(res.ErrorMessage);\n return;\n }\n this.notiService.success('Đăng ký thành công');\n this.router.navigateByUrl('/login');\n } catch (err) {\n console.log(err);\n this.notiService.handleError(err);\n }\n }\n\n async sendSignUp(d: any): Promise<RespondData> {\n return this.postData(AppGlobals.apiEndpoint + URLs.register, d);\n }\n\n private idleTimer: any;\n private idleTimeInMinutes = 15; // phút\n private idleTime = this.idleTimeInMinutes * 60 * 1000;\n\n startWatching() {\n console.log(\n `-- start watching idle (${this.idleTimeInMinutes} ${this.idleTimeInMinutes == 1 ? 'min' : 'mins'}) --`,\n );\n\n this.resetTimer();\n\n window.addEventListener('mousemove', () => this.resetTimer());\n window.addEventListener('keydown', () => this.resetTimer());\n window.addEventListener('click', () => this.resetTimer());\n }\n\n private resetTimer() {\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n }\n\n this.ngZone.runOutsideAngular(() => {\n this.idleTimer = setTimeout(() => {\n this.ngZone.run(() => {\n console.log('-- idle logout --');\n\n this.signOut(); // auto logout\n });\n }, this.idleTime);\n });\n }\n\n stopWatching() {\n console.log('-- stop watching idle --');\n clearTimeout(this.idleTimer);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { AuthService } from './auth.service';\nimport { TokenStorage } from './token.storage';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n router = inject(Router);\n authService = inject(AuthService);\n\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n // return true;\n\n if (await this.authService.pingAuth()) {\n return true;\n }\n\n TokenStorage.clearToken();\n\n if (state.url != '/') {\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\n } else {\n this.router.navigate(['/login']);\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { delay, switchMap, distinctUntilChanged } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingService {\n private static loadingStack: any[] = [];\n private loadingSubject = new BehaviorSubject<boolean>(false);\n\n private update() {\n const isLoading = LoadingService.loadingStack.length > 0;\n this.loadingSubject.next(isLoading);\n }\n\n loadingUp() {\n LoadingService.loadingStack.push(1);\n this.update();\n }\n\n loadingDown() {\n LoadingService.loadingStack.pop();\n this.update();\n }\n\n /** Trả về observable loading có delay khi bật để tránh chớp nháy */\n get loading$(): Observable<boolean> {\n return this.loadingSubject.asObservable().pipe(\n switchMap((loading) => {\n return loading\n ? of(true).pipe(delay(200)) // delay khi bật\n : of(false); // tắt thì không delay\n }),\n distinctUntilChanged(),\n );\n }\n\n /** Nếu chỉ cần giá trị hiện tại boolean (ít dùng hơn) */\n get isLoading(): boolean {\n return LoadingService.loadingStack.length > 0;\n }\n}\n","import { HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TokenStorage } from './token.storage';\nimport { BehaviorSubject, catchError, filter, finalize, from, of, switchMap, take, throwError } from 'rxjs';\nimport { LoadingService } from '../services/loading.service';\nimport { AuthService } from './auth.service';\nimport { RespondData } from '../model';\n\nlet initialReturnUrl: string | null = null;\nlet isRefreshing = false;\nconst refreshTokenSubject = new BehaviorSubject<string | null>(null);\n\nexport function authInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn) {\n const router = inject(Router);\n const loadingService = inject(LoadingService);\n const authService = inject(AuthService);\n\n const authToken = TokenStorage.getToken();\n const noLoadingMark = req.headers.get('No-Loading-Mark');\n\n if (noLoadingMark !== '1') loadingService.loadingUp();\n\n // Convert dates\n if (!(req.body instanceof FormData)) {\n const newBody = convertDatesInBody(req.body);\n if (req.body !== newBody) {\n req = req.clone({ body: newBody });\n }\n }\n\n // Add token\n if (authToken) {\n req = req.clone({\n setHeaders: { Authorization: `Bearer ${authToken}` },\n });\n }\n\n return next(req).pipe(\n catchError((error) => {\n if (error.status === 401) {\n return handle401(req, next, router, authService);\n }\n return throwError(() => error);\n }),\n finalize(() => {\n if (noLoadingMark !== '1') loadingService.loadingDown();\n }),\n );\n}\n\n//\n// ⭐ REFRESH TOKEN HANDLER\n//\nfunction handle401(req: HttpRequest<any>, next: HttpHandlerFn, router: Router, authService: AuthService) {\n if (!isRefreshing) {\n isRefreshing = true;\n refreshTokenSubject.next(null);\n\n return from(authService.refreshToken()).pipe(\n switchMap((resAny: any) => {\n const res = resAny as RespondData;\n isRefreshing = false;\n\n if (!res?.IsSuccess) {\n const currentUrl = router.routerState.snapshot.url;\n\n if (!initialReturnUrl && !currentUrl.startsWith('/login')) {\n initialReturnUrl = currentUrl;\n }\n\n router.navigate(['/login'], {\n queryParams: { returnUrl: initialReturnUrl || '/' },\n });\n\n refreshTokenSubject.next(null);\n\n return of({\n IsSuccess: false,\n });\n }\n\n // Phát token mới cho các request đang chờ\n refreshTokenSubject.next(TokenStorage.getToken());\n\n // Retry request\n return next(\n req.clone({\n setHeaders: { Authorization: `Bearer ${TokenStorage.getToken()}` },\n }),\n );\n }),\n catchError((err) => {\n isRefreshing = false;\n TokenStorage.clearToken();\n const currentUrl = router.routerState.snapshot.url;\n\n if (!initialReturnUrl && !currentUrl.startsWith('/login')) {\n initialReturnUrl = currentUrl;\n }\n\n router.navigate(['/login'], {\n queryParams: { returnUrl: initialReturnUrl || '/' },\n });\n\n return throwError(() => err);\n }),\n );\n } else {\n // Nếu đang refresh → chờ token mới rồi retry\n return refreshTokenSubject.pipe(\n filter((token) => token != null),\n take(1),\n switchMap((token) =>\n next(\n req.clone({\n setHeaders: { Authorization: `Bearer ${token}` },\n }),\n ),\n ),\n );\n }\n}\n\nfunction convertDatesInBody(obj: any): any {\n if (obj instanceof Date) {\n return formatDate(obj);\n }\n\n if (Array.isArray(obj)) {\n return obj.map(convertDatesInBody);\n }\n\n if (typeof obj === 'object' && obj !== null) {\n const newObj: any = {};\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n\n if (value instanceof Date) {\n newObj[key] = formatDate(value);\n } else if (typeof value === 'string' && isIsoDate(value)) {\n newObj[key] = formatDate(new Date(value));\n } else if (typeof value === 'object') {\n newObj[key] = convertDatesInBody(value);\n } else {\n newObj[key] = value;\n }\n }\n return newObj;\n }\n\n return obj;\n}\n\nfunction isIsoDate(str: string): boolean {\n // ISO string with optional time and timezone\n return /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})?$/.test(str);\n}\n\nfunction formatDate(date: Date): string {\n const pad = (n: number) => n.toString().padStart(2, '0');\n return (\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ` +\n `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`\n );\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\n\nexport interface CanComponentDeactivate {\n canDeactivate: () => boolean | Promise<boolean>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UnsavedChangesGuard implements CanDeactivate<CanComponentDeactivate> {\n canDeactivate(component: CanComponentDeactivate): boolean | Promise<boolean> {\n return component.canDeactivate ? component.canDeactivate() : true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NzModalService, NzModalRef, ModalOptions } from 'ng-zorro-antd/modal';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomModalService {\n constructor(private modal: NzModalService) {}\n\n create<T, D = any>(options: ModalOptions<T, D>): NzModalRef<T, D> {\n const defaultOptions: Partial<ModalOptions<T, D>> = {\n nzMaskClosable: false,\n nzCentered: true,\n nzBodyStyle: {\n 'max-height': 'calc(100vh - 180px)',\n overflow: 'auto',\n },\n };\n\n const mergedOptions: ModalOptions<T, D> = {\n ...defaultOptions,\n ...options,\n nzStyle: {\n ...defaultOptions.nzStyle,\n ...options.nzStyle,\n },\n };\n\n return this.modal.create(mergedOptions);\n }\n\n confirm(options: ModalOptions): NzModalRef {\n return this.modal.confirm(options);\n }\n\n info(options: ModalOptions): NzModalRef {\n return this.modal.info(options);\n }\n\n success(options: ModalOptions): NzModalRef {\n return this.modal.success(options);\n }\n\n warning(options: ModalOptions): NzModalRef {\n return this.modal.warning(options);\n }\n\n error(options: ModalOptions): NzModalRef {\n return this.modal.error(options);\n }\n}\n","import { Component, inject, OnDestroy, OnInit } from '@angular/core';\nimport { NotiService } from '../services/noti.service';\nimport { AppGlobals } from '../app-global';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FormGroup } from '@angular/forms';\nimport { TranslateKey } from '../a-translate-key';\nimport { filter, Subscription } from 'rxjs';\nimport { CustomModalService } from '../services/custom-modal.service';\nimport { Location } from '@angular/common';\n\n@Component({ template: '' })\nexport class BaseComponent {\n protected AppGlobals = AppGlobals;\n\n protected TranslateKey = TranslateKey;\n\n protected route = inject(ActivatedRoute);\n protected router = inject(Router);\n protected location = inject(Location);\n\n protected notiService = inject(NotiService);\n protected translate = inject(TranslateService);\n protected modal = inject(CustomModalService);\n\n private routeSub?: Subscription;\n\n /**\n * Khi dùng onRouteChange nhớ dùng unSubRouteChange\n */\n protected onRouteChange(callback: (url: string) => void): void {\n this.routeSub = this.router.events\n .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n .subscribe((e: NavigationEnd) => {\n callback(e.urlAfterRedirects);\n });\n }\n\n protected unSubRouteChange(): void {\n this.routeSub?.unsubscribe();\n }\n\n protected goback() {\n this.location.back();\n }\n\n protected goto(url?: string) {\n if (url) {\n if (url.startsWith('/')) {\n this.router.navigateByUrl(url);\n } else {\n this.router.navigate([url], { relativeTo: this.route });\n }\n }\n }\n\n /**\n * /:id\n */\n protected getUrlParam(paramName: string) {\n const paramValue = this.route.snapshot.params[paramName];\n\n // bằng 0 thì trả về null vì chuyển primary key từ bigint sang string, code cũ đang truyền vào 0\n if (paramValue == '0' || paramValue == 'new' || paramValue == 'them-moi') {\n return null;\n }\n return paramValue;\n }\n\n /**\n * ?id=xxx\n */\n protected getUrlQueryParam(queryParamName: string) {\n const queryParamValue = this.route.snapshot.queryParamMap.get(queryParamName);\n return queryParamValue;\n }\n\n /**\n * Routes data\n */\n protected getUrlData(key: string) {\n return this.route.snapshot.data[key];\n }\n\n protected setQueryParam(name: string, value: string) {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n [name]: value,\n },\n queryParamsHandling: 'merge',\n });\n }\n\n protected get url() {\n return this.router.url;\n }\n\n protected get urlPath() {\n return this.router.url.split('?')[0];\n }\n\n protected handleError(err: any) {\n this.notiService.handleError(err);\n }\n\n protected touchControls(formData: FormGroup) {\n Object.values(formData.controls).forEach((control) => {\n if (control.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n });\n\n this.logFormErrors(formData);\n }\n\n protected untouchControls(formData: FormGroup) {\n formData.markAsPristine();\n formData.markAsUntouched();\n formData.updateValueAndValidity();\n }\n\n private logFormErrors(form: FormGroup, parentKey: string = '') {\n Object.keys(form.controls).forEach((key) => {\n const control = form.get(key);\n const fieldPath = parentKey ? `${parentKey}.${key}` : key;\n\n if (control instanceof FormGroup) {\n this.logFormErrors(control, fieldPath);\n } else {\n if (control?.errors) {\n console.log(`Control: ${fieldPath}`, control.errors);\n }\n }\n });\n }\n\n protected confirm(title: string, content: string = ''): Promise<boolean> {\n return new Promise((resolve) => {\n this.modal.confirm({\n // nzCentered: true,\n nzTitle: title,\n nzContent: content,\n nzOkText: this.translate.instant(this.TranslateKey.AGREE),\n nzOkType: 'primary',\n nzOkDanger: true,\n nzClosable: false,\n nzOnOk: () => resolve(true),\n nzAutofocus: 'ok',\n nzCancelText: this.translate.instant(this.TranslateKey.CANCEL),\n nzOnCancel: () => resolve(false),\n });\n });\n }\n\n protected backToTop() {\n // go to top\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n\n const content = document.querySelector('nz-content');\n if (content) {\n content.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n }\n}\n","import { Component, HostListener } from '@angular/core';\nimport { BaseComponent } from './base.component';\nimport { CanComponentDeactivate } from '../auth/unsaved-changes.guard';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n template: '',\n})\nexport class BaseGuardChangeComponent extends BaseComponent implements CanComponentDeactivate {\n formData?: FormGroup;\n\n @HostListener('window:beforeunload', ['$event'])\n unloadNotification($event: any) {\n if (this.formData?.dirty) {\n $event.preventDefault();\n $event.returnValue = true; // Chrome requires this line\n }\n }\n\n async canDeactivate(): Promise<boolean> {\n if (this.formData?.dirty) {\n return await this.confirm('Dữ liệu chưa được lưu. Bạn có chắc chắn muốn rời khỏi trang?');\n }\n return true;\n }\n\n clearChange() {\n // bỏ dirty để không hỏi khi rời trang\n this.formData?.markAsPristine();\n this.formData?.markAsUntouched();\n this.formData?.updateValueAndValidity();\n }\n}\n","import { ElementRef, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { fromEvent } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { BaseComponent } from './base.component';\nimport { NzButtonComponent } from 'ng-zorro-antd/button';\n\nexport class BaseOverlayComponent extends BaseComponent {\n // custom dropdow\n inputWidth: number = 0;\n triggerSpan = 500;\n private overlayRef!: OverlayRef;\n\n overlay = inject(Overlay);\n vcr = inject(ViewContainerRef);\n\n openOverlay(originEl: any, target: TemplateRef<any>, width = 0) {\n const origin: HTMLElement = originEl?.elementRef?.nativeElement ?? originEl?.nativeElement ?? originEl;\n\n this.updateInputWidth(origin);\n\n if (this.overlayRef) {\n this.overlayRef.detach(); // Đóng nếu đã mở\n }\n\n width = width > origin.offsetWidth ? width : origin.offsetWidth; // 👈 Lấy chiều rộng của input\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 5,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -5,\n },\n ])\n .withDefaultOffsetY(5);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: false,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width, // 👈 Gán chiều rộng cho overlay\n });\n\n this.overlayRef.backdropClick().subscribe(() => {\n this.overlayRef.detach();\n });\n\n const portal = new TemplatePortal(target, this.vcr);\n this.overlayRef.attach(portal);\n\n const overlayElement = this.overlayRef.overlayElement;\n\n // hasBackdrop: false, thêm cái này để đóng khi click ra ngoài\n fromEvent<MouseEvent>(document, 'click')\n .pipe(\n filter((event) => {\n const clickTarget = event.target as HTMLElement;\n\n return (\n this.overlayRef &&\n !overlayElement.contains(clickTarget) && // click không nằm trong overlay\n !origin.contains(clickTarget) && // và cũng không phải click vào input gốc\n !clickTarget.closest('.ant-select-dropdown') &&\n !clickTarget.closest('.ant-select-item') &&\n !clickTarget.closest('.ant-select-item-option-content') &&\n !clickTarget.closest('.no-close-custom-dropdow')\n );\n }),\n takeUntil(this.overlayRef.detachments()), // tự huỷ khi overlay bị đóng\n )\n .subscribe(() => {\n this.overlayRef?.detach();\n });\n }\n\n updateInputWidth(inputEl: HTMLElement) {\n this.inputWidth = inputEl?.offsetWidth || 0;\n }\n // END custom dropdow\n}\n","import { Component } from '@angular/core';\nimport { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { BaseComponent } from '../base.component';\n\ninterface IBreadcrumb {\n Name: string;\n URL?: string;\n Click?: Function;\n}\n\n@Component({\n selector: 'app-breadcrumb',\n templateUrl: './breadcrumb.html',\n imports: [NzBreadCrumbModule, NzIconModule],\n})\nexport class Breadcrumb extends BaseComponent {\n Breadcrumb = Breadcrumb;\n\n private static _lstBreadcrumb: IBreadcrumb[] = [];\n public static get lstBreadcrumb() {\n return Breadcrumb._lstBreadcrumb;\n }\n public static set lstBreadcrumb(val: IBreadcrumb[]) {\n setTimeout(() => {\n Breadcrumb._lstBreadcrumb = val;\n }, 0);\n }\n\n public static clear() {\n Breadcrumb.lstBreadcrumb = [];\n }\n\n gohome() {\n this.goto('');\n }\n\n onclick(item: IBreadcrumb) {\n if (item.URL) {\n this.goto(item.URL);\n } else if (item.Click) {\n item.Click();\n }\n }\n}\n","<nz-breadcrumb>\n <nz-breadcrumb-item (click)=\"gohome()\">\n <nz-icon nzType=\"home\" nzTheme=\"outline\" />\n </nz-breadcrumb-item>\n @for (item of Breadcrumb.lstBreadcrumb; track $index) {\n <nz-breadcrumb-item (click)=\"onclick(item)\">{{ item.Name }}</nz-breadcrumb-item>\n }\n</nz-breadcrumb>\n","import { Component, ElementRef, Input, AfterViewInit, ViewChild, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'animated-digit',\n templateUrl: 'animated-digit.component.html',\n styleUrls: ['animated-digit.component.scss'],\n})\nexport class AnimatedDigitComponent implements AfterViewInit, OnChanges {\n @Input() duration: number = 0;\n @Input() digit: number = 0;\n @Input() steps: number = 0;\n @ViewChild('animatedDigit') animatedDigit!: ElementRef;\n\n private currentValue: number = 0;\n\n animateCount() {\n if (!this.duration) {\n this.duration = 1000;\n }\n\n if (typeof this.digit === 'number') {\n this.counterFunc(this.currentValue, this.digit, this.duration, this.animatedDigit);\n }\n }\n\n counterFunc(startValue: number, endValue: number, durationMs: number, element: ElementRef) {\n if (!this.steps) {\n this.steps = 12;\n }\n\n const stepCount = Math.abs(durationMs / this.steps);\n const valueIncrement = (endValue - startValue) / stepCount;\n const sinValueIncrement = Math.PI / stepCount;\n\n let currentSinValue = 0;\n\n function step() {\n currentSinValue += sinValueIncrement;\n startValue += valueIncrement * Math.sin(currentSinValue) ** 2 * 2;\n if (element) element.nativeElement.textContent = Math.abs(Math.floor(startValue));\n\n if (currentSinValue < Math.PI) {\n window.requestAnimationFrame(step);\n }\n }\n\n step();\n }\n\n ngAfterViewInit() {\n if (this.digit) {\n this.animateCount();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['digit']) {\n this.animateCount();\n setTimeout(() => {\n this.currentValue = this.digit;\n }, this.duration);\n }\n }\n}\n","<span #animatedDigit class=\"animated-digit\">\n <span>{{digit}}</span>\n</span>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\n@Component({\n selector: 'cdk-bar-graph',\n templateUrl: './bar-graph.component.html',\n styleUrls: ['./bar-graph.component.scss'],\n imports: [CommonModule],\n})\nexport class BarGraphComponent implements OnInit, OnDestroy {\n @Input() height: number = 0;\n @Input() id: string = '';\n\n chart?: Chart;\n\n constructor() {\n Chart.register(...registerables);\n }\n\n ngOnInit() {\n setTimeout(() => {\n this.createBarGraph();\n }, 500);\n }\n\n ngOnDestroy(): void {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n\n createBarGraph() {\n if (!this.id) {\n return;\n }\n\n this.chart = new Chart(this.id, {\n type: 'bar',\n data: {\n labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug'],\n datasets: [\n {\n backgroundColor: 'rgba(92, 107, 192, .7)',\n borderColor: 'rgba(92, 107, 192, .7)',\n data: [70, 88, 77, 93, 82, 100, 70, 67, 78, 99],\n label: 'Dataset',\n },\n {\n backgroundColor: 'rgba(66, 165, 245, .7)',\n borderColor: 'rgba(69, 39, 160, .7)',\n data: [80, 88, 67, 95, 76, 60, 67, 95, 95, 66],\n label: 'Dataset',\n },\n {\n backgroundColor: 'rgba(38, 166, 154, .7)',\n borderColor: 'rgba(69, 39, 160, .7)',\n data: [60, 88, 70, 67, 27, 83, 78, 88, 95, 60],\n label: 'Dataset',\n },\n {\n backgroundColor: 'rgba(102, 187, 106, .7)',\n borderColor: 'rgba(255, 99, 132)',\n data: [75, 55, 55, 95, 66, 88, 70, 78, 77, 100],\n label: 'Dataset',\n },\n ],\n },\n options: {\n elements: {\n line: {\n tension: 0.000001,\n },\n },\n maintainAspectRatio: false,\n plugins: {\n filler: {\n propagate: false,\n },\n },\n },\n });\n }\n}\n","<div class=\"dash-bar-graph-holder mat-elevation-z4\" [ngStyle]=\"{ height: height + 'px' }\">\n <canvas [id]=\"id\"></canvas>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { AnimatedDigitComponent } from '../animated/animated-digit.component';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\n\n@Component({\n selector: 'cdk-dashcard',\n templateUrl: './dashcard.component.html',\n styleUrls: ['./dashcard.component.scss'],\n imports: [NzGridModule, NzIconModule, AnimatedDigitComponent],\n})\nexport class DashcardComponent implements OnInit {\n @Input() dashData: any;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","<div nz-row class=\"dashcard mat-elevation-z2\" style=\"height: 100%\">\n <div nz-col [nzSpan]=\"8\" class=\"text-center\" [style.background]=\"dashData?.colorLight\">\n <nz-icon class=\"mat-icon\" style=\"padding-top: 50px\" [nzType]=\"dashData?.icon\" nzTheme=\"outline\" />\n </div>\n <div nz-col [nzSpan]=\"16\" [style.background]=\"dashData?.colorDark\">\n <div class=\"text-center animated-digit\">\n <animated-digit [digit]=\"dashData?.number\"></animated-digit>\n </div>\n <p\n class=\"text-center mat-body-1 border-top text-bold\"\n style=\"font-size: 16px; margin-bottom: 8px; padding-top: 3px\"\n >\n {{ dashData?.title }}\n </p>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\n@Component({\n selector: 'cdk-doughnut-graph',\n templateUrl: './doughnut-graph.component.html',\n styleUrls: ['./doughnut-graph.component.scss'],\n imports: [CommonModule],\n})\nexport class DoughnutGraphComponent implements OnInit, OnDestroy {\n @Input() height: number = 0;\n @Input() id: string = '';\n\n chart?: Chart;\n\n constructor() {\n Chart.register(...registerables);\n }\n\n ngOnInit() {\n setTimeout(() => {\n this.createDoughnutGraph();\n }, 500);\n }\n\n ngOnDestroy(): void {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n\n randomNumber(min = 0, max = 0) {\n if (min == 0 || max == 0) return Math.round(Math.random() * 100);\n else return Math.random() * (max - min) + min;\n }\n\n createDoughnutGraph() {\n if (!this.id) {\n return;\n }\n\n this.chart = new Chart(this.id, {\n type: 'doughnut',\n data: {\n labels: ['Data '],\n datasets: [\n {\n data: [this.randomNumber(), this.randomNumber(), this.randomNumber(), this.randomNumber()],\n backgroundColor: [\n 'rgba(255, 99, 132,.7)',\n 'rgba(92, 107, 192,.7)',\n 'rgba(66, 165, 245,.7)',\n 'rgba(38, 166, 154,.7)',\n 'rgba(102, 187, 106,.7)',\n ],\n },\n ],\n },\n options: {\n elements: {\n line: {\n tension: 0.000001,\n },\n },\n\n maintainAspectRatio: false,\n responsive: true,\n plugins: {\n filler: {\n propagate: false,\n },\n },\n },\n });\n }\n}\n","<div class=\"doughnut-graph-graph-holder mat-elevation-z4 \" [ngStyle]=\"{'height': height + 'px'}\">\n <canvas [id]=\"id\"></canvas>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\n@Component({\n selector: 'cdk-line-graph',\n templateUrl: './line-graph.component.html',\n styleUrls: ['./line-graph.component.scss'],\n imports: [CommonModule],\n})\nexport class LineGraphComponent implements OnInit, OnDestroy {\n @Input() height: number = 0;\n @Input() id: string = '';\n\n chart?: Chart;\n\n constructor() {\n Chart.register(...registerables);\n }\n\n ngOnInit() {\n setTimeout(() => {\n this.createLineChart();\n }, 500);\n }\n\n ngOnDestroy(): void {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n\n createLineChart() {\n if (!this.id) {\n return;\n }\n\n this.chart = new Chart(this.id, {\n type: 'line',\n data: {\n labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],\n datasets: [\n {\n backgroundColor: 'rgba(92, 107, 192, 0.36)',\n borderColor: 'rgba(92, 107, 192,.5)',\n data: [76.97, 88.91, 99.31, 122.19, 130.85, 140.91, 150.36, 142.66, 150.36, 142.66],\n label: 'Dataset',\n fill: 'start',\n },\n ],\n },\n options: {\n elements: {\n line: {\n tension: 0.000001,\n },\n },\n\n maintainAspectRatio: false,\n plugins: {\n filler: {\n propagate: false,\n },\n },\n },\n });\n }\n}\n","<div class=\"line-graph-holder mat-elevation-z4 \" [ngStyle]=\"{'height': height + 'px'}\">\n <canvas [id]=\"id\"></canvas>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzFormModule } from 'ng-zorro-antd/form';\n\n@Component({\n selector: 'extend-checkbox',\n templateUrl: './extend-checkbox.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NzFormModule, NzCheckboxModule],\n})\nexport class ExtendCheckbox implements OnInit {\n @Input() label = '';\n @Input() labelSpan = 8;\n @Input() disabled = false;\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n /**\n * default: boolean\n */\n @Input() valueType: 'boolean' | 'number' | 'string' = 'boolean';\n\n @Input()\n get _ngModel() {\n if (this.valueType == 'boolean') {\n return this.checked;\n }\n if (this.valueType == 'number') {\n return this.checked ? 1 : 0;\n }\n if (this.valueType == 'string') {\n return this.checked ? 'Y' : 'N';\n }\n }\n set _ngModel(val: any) {\n if (this.controlName) {\n if (this.valueType == 'boolean') {\n this.formData.controls[this.controlName].valueChanges.subscribe((x) => {\n this.checked = x;\n });\n } else if (this.valueType == 'number') {\n this.formData.controls[this.controlName].valueChanges.subscribe((x) => {\n this.checked = x == 1;\n });\n } else {\n this.formData.controls[this.controlName].valueChanges.subscribe((x) => {\n this.checked = x == 'Y';\n });\n }\n } else {\n this.checked = val ? true : false;\n }\n }\n @Output() _ngModelChange = new EventEmitter();\n\n checked = false;\n\n ngOnInit(): void {\n if (this.controlName && this.formData?.controls[this.controlName]) {\n if (this.valueType === 'boolean') {\n this.checked = this.formData.controls[this.controlName].getRawValue();\n console.log(this.checked);\n } else if (this.valueType === 'number') {\n this.checked = this.formData.controls[this.controlName].getRawValue() === 1;\n } else {\n this.checked = this.formData.controls[this.controlName].getRawValue() === 'Y';\n }\n\n this.formData.controls[this.controlName].valueChanges.subscribe((x) => {\n if (this.valueType === 'boolean') {\n this.checked = x;\n } else if (this.valueType === 'number') {\n this.checked = x === 1;\n } else {\n this.checked = x === 'Y';\n }\n });\n }\n }\n\n onCheckChange(event: boolean) {\n if (this.controlName) {\n if (this.valueType == 'boolean') {\n this.formData.controls[this.controlName].setValue(event);\n } else if (this.valueType == 'number') {\n this.formData.controls[this.controlName].setValue(event ? 1 : 0);\n } else if (this.valueType == 'string') {\n this.formData.controls[this.controlName].setValue(event ? 'Y' : 'N');\n }\n } else {\n if (this.valueType == 'boolean') {\n this._ngModelChange.emit(event);\n } else if (this.valueType == 'number') {\n this._ngModelChange.emit(event ? 1 : 0);\n } else if (this.valueType == 'string') {\n this._ngModelChange.emit(event ? 'Y' : 'N');\n }\n }\n }\n}\n","@if (label) {\n <div nz-row>\n <div nz-col [nzSpan]=\"labelSpan\"></div>\n <div nz-col nzFlex=\"auto\">\n <label\n style=\"position: relative; top: 5px\"\n nz-checkbox\n [nzDisabled]=\"disabled\"\n [(nzChecked)]=\"checked\"\n (nzCheckedChange)=\"onCheckChange($event)\"\n >\n {{ label }}\n </label>\n </div>\n </div>\n} @else {\n <label\n nz-checkbox\n [nzDisabled]=\"disabled\"\n [(nzChecked)]=\"checked\"\n (nzCheckedChange)=\"onCheckChange($event)\"\n style=\"width: 16px\"\n >\n {{ label }}\n </label>\n}\n","export class DateTimeHelper {\n static lstDay = Array.from({ length: 31 }, (_, i) => i + 1);\n static lstMonth = Array.from({ length: 12 }, (_, i) => i + 1);\n\n private static fromYear = new Date().getFullYear() - 10;\n private static toYear = new Date().getFullYear();\n static lstYear = Array.from(\n { length: DateTimeHelper.toYear - DateTimeHelper.fromYear },\n (_, i) => DateTimeHelper.toYear - i,\n );\n\n /**\n * Lấy ngày giờ hiện tại dưới dạng chuỗi \"YYYY-MM-DD HH:mm:ss\"\n * @return {string}\n */\n static now(): string {\n const now = new Date();\n return `${now.getFullYear()}-${this.pad(now.getMonth() + 1)}-${this.pad(now.getDate())} ${this.pad(now.getHours())}:${this.pad(now.getMinutes())}:${this.pad(now.getSeconds())}`;\n }\n\n /**\n * Lấy ngày hôm nay dưới dạng chuỗi \"YYYY-MM-DD HH:mm:ss\"\n * @return {string}\n */\n static today(): string {\n const now = new Date();\n return `${now.getFullYear()}-${this.pad(now.getMonth() + 1)}-${this.pad(now.getDate())} 00:00:00`;\n }\n\n /**\n * Tạo ngày từ năm, tháng, ngày (có kiểm tra hợp lệ, không bị lệch múi giờ).\n * @param {number} year Năm\n * @param {number} month Tháng (1-12)\n * @param {number} day Ngày (1-31)\n * @param {boolean} isEndOfDay Nếu true, trả về 23:59:59, ngược lại 00:00:00\n * @return {string | null} Chuỗi ngày định dạng \"YYYY-MM-DD HH:mm:ss\" hoặc null nếu ngày không hợp lệ\n */\n static createDate(year: number, month: number, day: number, isEndOfDay: boolean = false): string | null {\n if (!this.isValidDate(year, month, day)) {\n return null;\n }\n\n const hour = isEndOfDay ? 23 : 0;\n const minute = isEndOfDay ? 59 : 0;\n const second = isEndOfDay ? 59 : 0;\n return `${year}-${this.pad(month)}-${this.pad(day)} ${this.pad(hour)}:${this.pad(minute)}:${this.pad(second)}`;\n }\n\n /**\n * Kiểm tra xem ngày có hợp lệ không.\n * @param {number} year Năm\n * @param {number} month Tháng (1-12)\n * @param {number} day Ngày (1-31)\n * @return {boolean} True nếu ngày hợp lệ, ngược lại False.\n */\n public static isValidDate(year: number, month: number, day: number): boolean {\n if (month < 1 || month > 12) return false;\n if (day < 1) return false;\n\n const lastDay = new Date(year, month, 0).getDate(); // Lấy ngày cuối tháng\n return day <= lastDay;\n }\n\n /**\n * Hàm hỗ trợ: Định dạng số thành 2 chữ số (01, 02, ..., 09)\n * @param {number} n The second number.\n * @return {string} The sum of the two numbers.\n */\n private static pad(n: number): string {\n return n.toString().padStart(2, '0');\n }\n\n public static parser(dateStr: string) {\n if (!dateStr.includes('/')) {\n dateStr = this.formatNumberToDate(dateStr);\n }\n\n const parts = dateStr.split('/');\n const current = new Date();\n\n let normalizedValue = '';\n\n if (parts.length === 1 && /^\\d{1,2}$/.test(parts[0])) {\n // Chỉ có ngày -> ghép tháng/năm hiện tại\n normalizedValue = `${parts[0].padStart(2, '0')}/${(current.getMonth() + 1).toString().padStart(2, '0')}/${current.getFullYear()}`;\n } else if (parts.length === 2 && /^\\d{1,2}$/.test(parts[0]) && /^\\d{1,2}$/.test(parts[1])) {\n // Có ngày + tháng -> ghép năm hiện tại\n normalizedValue = `${parts[0].padStart(2, '0')}/${parts[1].padStart(2, '0')}/${current.getFullYear()}`;\n } else {\n // Đã đủ 3 phần\n normalizedValue = dateStr;\n }\n\n if (normalizedValue) {\n const parts = normalizedValue.split('/');\n const day = +parts[0];\n const month = +parts[1];\n const year = +parts[2];\n\n if (DateTimeHelper.isValidDate(year, month, day)) {\n return DateTimeHelper.createDate(year, month, day);\n }\n }\n\n return '';\n }\n\n private static formatNumberToDate(input: string): string {\n // Lấy tối đa 8 ký tự\n input = input.replace(/\\D/g, '').substring(0, 8);\n\n const day = input.substring(0, 2);\n const month = input.substring(2, 4);\n const year = input.substring(4, 8);\n\n let result = '';\n\n if (day) {\n result += day;\n if (month) result += '/';\n }\n\n if (month) {\n result += month;\n if (year) result += '/';\n }\n\n if (year) {\n result += year;\n }\n\n return result;\n }\n}\n","import { Directive, HostListener, Input, AfterViewInit, ElementRef, Optional, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { parse, isValid } from 'date-fns';\nimport { DateTimeHelper } from '../helper/date.helper';\n\n/**\n * Dùng cho nz-date-picker\n */\n@Directive({\n selector: 'nz-date-picker',\n})\nexport class DateInputParserDirective implements AfterViewInit {\n @Input('format') format = 'dd/MM/yyyy';\n private inputElement: HTMLInputElement | null = null;\n private blurHandler = this.tryParseAndSet.bind(this);\n\n constructor(\n private el: ElementRef<HTMLElement>,\n @Optional() @Self() private ngControl: NgControl,\n ) {}\n\n ngAfterViewInit() {\n // Tìm thẻ input bên trong nz-date-picker\n this.inputElement = this.el.nativeElement.querySelector('input');\n\n // Gắn listener blur vào input\n if (this.inputElement) {\n this.inputElement.addEventListener('blur', this.blurHandler);\n }\n }\n\n ngOnDestroy() {\n // Cleanup blur listener để tránh memory leak\n if (this.inputElement) {\n this.inputElement.removeEventListener('blur', this.blurHandler);\n }\n }\n\n @HostListener('keyup.enter')\n onEnter() {\n this.tryParseAndSet();\n this.inputElement?.blur(); // Blur sau khi enter nếu muốn trigger binding ngoài\n }\n\n private tryParseAndSet() {\n if (!this.inputElement) return;\n\n const rawValue = this.inputElement.value.trim();\n const parsed = DateTimeHelper.parser(rawValue);\n\n if (parsed) {\n this.ngControl?.control?.setValue(parsed);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzSelectModeType, NzSelectSizeType } from 'ng-zorro-antd/select';\nimport { DateInputParserDirective } from '../../directive/date-input-parser.directive';\n\n@Component({\n selector: 'extend-date-picker',\n templateUrl: './extend-date-picker.html',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NzFormModule,\n NzDatePickerModule,\n TranslateModule,\n DateInputParserDirective,\n ],\n})\nexport class ExtendDatePicker {\n @Input() dateFormat = 'dd/MM/yyyy';\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal';\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() labelSpan = 8;\n @Input() inputSpan = 16;\n @Input() disabled = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() selectModeType: NzSelectModeType = 'default';\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n @Input() displayInline = false;\n @Input() size: NzSelectSizeType = 'default';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n\n @Input() lstItem: any[] = [];\n @Input() displayField: string = '';\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n onChange = (_: any) => {};\n onTouched = () => {};\n\n writeValue(obj: any): void {\n this._ngModel = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnInit(): void {}\n\n onNgModelChange(val: any) {\n this._ngModel = val;\n this.onChange(val); // Gửi ngược ra form\n this.onTouched();\n this._ngModelChange.emit(val);\n }\n\n disabledDate = (current: Date): boolean => {\n if (!current) return false;\n\n const min = this.minDate ? new Date(this.minDate) : null;\n const max = this.maxDate ? new Date(this.maxDate) : null;\n\n if (min && current < new Date(min.setHours(0, 0, 0, 0))) return true;\n if (max && current > new Date(max.setHours(23, 59, 59, 999))) return true;\n\n return false;\n };\n\n get errorMessage(): string {\n const value = this._ngModel ? new Date(this._ngModel) : null;\n\n if (!this.isTouched && !value) {\n return '';\n }\n\n if (this.required && !value) {\n return 'Trường yêu cầu nhập';\n }\n\n if (this.minDate && value && new Date(value) < new Date(this.minDate)) {\n return `Ngày không được nhỏ hơn ${this.formatDate(this.minDate)}`;\n }\n\n if (this.maxDate && value && new Date(value) > new Date(this.maxDate)) {\n return `Ngày không được lớn hơn ${this.formatDate(this.maxDate)}`;\n }\n return '';\n }\n\n private formatDate(date: Date): string {\n const d = new Date(date);\n const day = String(d.getDate()).padStart(2, '0');\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const year = d.getFullYear();\n\n switch (this.dateFormat) {\n case 'dd/MM/yyyy':\n return `${day}/${month}/${year}`;\n case 'MM/dd/yyyy':\n return `${month}/${day}/${year}`;\n default:\n return d.toLocaleDateString();\n }\n }\n\n isTouched = false;\n\n onBlur() {\n this.isTouched = true;\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? inputSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-date-picker\n class=\"full-width\"\n [nzPlaceHolder]=\"placeHolder || ' '\"\n [nzFormat]=\"dateFormat\"\n [nzSize]=\"size\"\n [formControlName]=\"controlName\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n }\"\n ></nz-date-picker>\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? inputSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"errorMessage\"\n [nzValidateStatus]=\"errorMessage ? 'error' : ''\"\n >\n <nz-date-picker\n class=\"full-width\"\n [nzPlaceHolder]=\"placeHolder || ' '\"\n [nzFormat]=\"dateFormat\"\n [nzSize]=\"size\"\n [disabled]=\"disabled\"\n [nzDisabledDate]=\"disabledDate\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n }\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"onNgModelChange($event)\"\n (blur)=\"onBlur()\"\n ></nz-date-picker>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <nz-date-picker\n class=\"full-width\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n }\"\n [nzSize]=\"size\"\n [nzPlaceHolder]=\"placeHolder || ' '\"\n [nzFormat]=\"dateFormat\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"onNgModelChange($event)\"\n ></nz-date-picker>\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzSelectModeType, NzSelectSizeType } from 'ng-zorro-antd/select';\nimport { endOfMonth, endOfWeek, startOfMonth, startOfWeek, subMonths, subWeeks } from 'date-fns';\n\n@Component({\n selector: 'extend-date-range-picker',\n templateUrl: './extend-date-range-picker.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NzFormModule, NzDatePickerModule, TranslateModule],\n})\nexport class ExtendDateRangePicker implements OnInit {\n @Input() dateFormat = 'dd/MM/yyyy';\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal';\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() labelSpan = 8;\n @Input() inputSpan = 16;\n @Input() disabled = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() selectModeType: NzSelectModeType = 'default';\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n @Input() displayInline = false;\n @Input() size: NzSelectSizeType = 'default';\n\n @Input() lstItem: any[] = [];\n @Input() displayField: string = '';\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() date1: Date | null = null;\n @Output() date1Change = new EventEmitter();\n\n @Input() date2: Date | null = null;\n @Output() date2Change = new EventEmitter();\n\n _ngModel: Date[] | undefined;\n\n today = new Date();\n\n ranges = {\n 'Tuần này': [startOfWeek(this.today, { weekStartsOn: 1 }), endOfWeek(this.today, { weekStartsOn: 1 })],\n 'Tuần trước': [\n startOfWeek(subWeeks(this.today, 1), { weekStartsOn: 1 }),\n endOfWeek(subWeeks(this.today, 1), { weekStartsOn: 1 }),\n ],\n 'Tháng này': [startOfMonth(this.today), endOfMonth(this.today)],\n 'Tháng trước': [startOfMonth(subMonths(this.today, 1)), endOfMonth(subMonths(this.today, 1))],\n };\n\n ngOnInit(): void {\n this._ngModel = this.date1 && this.date2 ? [this.date1, this.date2] : undefined;\n }\n\n ngModelChange(value: Date[] | undefined) {\n this._ngModel = value;\n\n if (value && value.length === 2) {\n this.date1 = value[0];\n this.date2 = value[1];\n } else {\n this.date1 = null;\n this.date2 = null;\n }\n\n this.date1Change.emit(this.date1);\n this.date2Change.emit(this.date2);\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (controlName) {\n <!-- <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? inputSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-date-picker\n class=\"full-width\"\n [nzPlaceHolder]=\"placeHolder || ' '\"\n [nzFormat]=\"dateFormat\"\n [nzSize]=\"size\"\n [formControlName]=\"controlName\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n }\"\n ></nz-date-picker>\n </nz-form-control>\n </nz-form-item>\n </div> -->\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-range-picker\n [nzSize]=\"size\"\n [nzFormat]=\"dateFormat\"\n [nzPlaceHolder]=\"['Từ ngày', 'đến ngày']\"\n [nzRanges]=\"ranges\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"ngModelChange($event)\"\n ></nz-range-picker>\n </nz-form-item>\n } @else {\n <nz-range-picker\n [nzSize]=\"size\"\n [nzFormat]=\"dateFormat\"\n [nzPlaceHolder]=\"['Từ ngày', 'đến ngày']\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"ngModelChange($event)\"\n ></nz-range-picker>\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberComponent, NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzSelectModeType, NzSelectSizeType } from 'ng-zorro-antd/select';\n\n@Component({\n selector: 'extend-input-number',\n templateUrl: './extend-input-number.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule, NzFormModule, NzInputNumberModule],\n})\nexport class ExtendInputNumber {\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal'; // horizontal: ngang, vertical dọc\n @Input() label = '';\n @Input() placeHolder: 'off' | '' = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() labelSpan = 8;\n @Input() disabled = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() size: NzSelectSizeType = 'default';\n\n @Input() min: number | null = null;\n @Input() max: number | null = null;\n @Input() precision: number = 0;\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n @Input() displayInline = false;\n\n /** separatorType: 'comma' (,) | 'dot' (.) */\n @Input() separatorType?: 'comma' | 'dot' | 'blank';\n /** defaultSeparatorType: 'comma' (,) | 'dot' (.) */\n static defaultSeparatorType: 'comma' | 'dot' = 'dot';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n @ViewChild('inputnumber') inputnumber!: NzInputNumberComponent;\n\n ngOnInit(): void {}\n\n _onNgModelChange() {\n this._ngModelChange.emit(this._ngModel);\n }\n\n @ViewChild('inputElement') inputElement!: ElementRef;\n\n focus(): void {\n this.inputElement?.nativeElement?.focus();\n }\n\n formatterNumber = (value: number): string => {\n if (value == null || isNaN(value)) return '';\n\n if (!this.getSeparatorType()) {\n return value.toString();\n }\n const parts = `${value}`.split('.');\n const integerPart = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.getSeparatorType() === 'comma' ? ',' : '.');\n return parts.length > 1\n ? `${integerPart}${this.getSeparatorType() === 'comma' ? '.' : ','}${parts[1]}`\n : integerPart;\n };\n\n parserNumber = (value: string): number => {\n if (!value) return 0;\n\n if (!this.getSeparatorType()) {\n return parseFloat(value);\n }\n\n // Bỏ ký tự phân cách hàng nghìn\n const cleaned = value\n .replace(new RegExp(`\\\\${this.getSeparatorType() === 'comma' ? ',' : '.'}`, 'g'), '')\n .replace(this.getSeparatorType() === 'comma' ? '.' : ',', '.');\n\n // Kiểm tra toàn bộ chuỗi có phải là số hợp lệ hay không\n if (!/^-?\\d+(\\.\\d+)?$/.test(cleaned)) return NaN;\n\n const parsed = parseFloat(cleaned);\n\n // Ép chạy formatter lại\n setTimeout(() => {\n this.inputnumber.writeValue(parsed);\n this._ngModelChange.emit(parsed);\n if (this.formData && this.controlName) {\n this.formData.controls[this.controlName].setValue(parsed);\n }\n });\n\n return parsed;\n };\n\n getSeparatorType() {\n if (this.separatorType == 'blank') {\n return '';\n }\n if (this.separatorType) {\n return this.separatorType;\n }\n return ExtendInputNumber.defaultSeparatorType;\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [formControlName]=\"controlName\"\n />\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n @if (min != null && max != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMin]=\"min\"\n [nzMax]=\"max\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else if (min != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMin]=\"min\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else if (max != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMax]=\"max\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n }\n </nz-form-control>\n </nz-form-item>\n } @else {\n @if (min != null && max != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMin]=\"min\"\n [nzMax]=\"max\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else if (min != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMin]=\"min\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else if (max != null) {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzMax]=\"max\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n />\n } @else {\n <nz-input-number\n #inputnumber\n class=\"full-width\"\n [nzSize]=\"size\"\n [nzFormatter]=\"formatterNumber\"\n [nzParser]=\"parserNumber\"\n [nzPrecision]=\"precision\"\n [nzDisabled]=\"disabled\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n border: borderBottomOnly ? 'none' : '',\n 'border-bottom': borderBottomOnly ? '1px dashed' : '',\n }\"\n />\n }\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzSelectModeType, NzSelectSizeType } from 'ng-zorro-antd/select';\n\n@Component({\n selector: 'extend-input',\n templateUrl: './extend-input.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule, NzFormModule, NzInputModule, NzIconModule],\n})\nexport class ExtendInput {\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal'; // horizontal: ngang, vertical dọc\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() inputClass = '';\n\n /**\n * default = 8\n */\n @Input() labelSpan = 8;\n\n @Input() allowClear = false;\n @Input() disabled = false;\n @Input() readOnly = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() selectModeType: NzSelectModeType = 'default';\n @Input() autocomplete: 'off' | '' = '';\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n @Input() displayInline = false;\n @Input() size: NzSelectSizeType = 'default';\n\n @Input() lstItem: any[] = [];\n\n /**\n * Dùng trong word page\n */\n @Input() displayField: string = '';\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n @Output() onclickClearIcon = new EventEmitter();\n\n @Output() onenter = new EventEmitter();\n\n ngOnInit(): void {}\n\n _onNgModelChange() {\n this._ngModelChange.emit(this._ngModel);\n }\n\n @ViewChild('inputElement') inputElement!: ElementRef;\n\n focus(): void {\n this.inputElement?.nativeElement?.select();\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <input\n #inputElement\n nz-input\n [nzSize]=\"size\"\n [id]=\"controlName\"\n [name]=\"controlName\"\n [formControlName]=\"controlName\"\n [autocomplete]=\"autocomplete\"\n [placeholder]=\"placeHolder\"\n [ngClass]=\"inputClass\"\n (keyup.enter)=\"onenter.emit()\"\n />\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-input-group [nzSize]=\"size\" [nzSuffix]=\"allowClear ? clearIcon : undefined\">\n <input\n #inputElement\n nz-input\n [nzSize]=\"size\"\n [id]=\"controlName\"\n [name]=\"controlName\"\n [(ngModel)]=\"_ngModel\"\n [autocomplete]=\"autocomplete\"\n (ngModelChange)=\"_onNgModelChange()\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [placeholder]=\"placeHolder\"\n [ngClass]=\"inputClass\"\n (keyup.enter)=\"onenter.emit()\"\n />\n </nz-input-group>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <input\n #inputElement\n nz-input\n [nzSize]=\"size\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [id]=\"controlName\"\n [name]=\"controlName\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"_onNgModelChange()\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [placeholder]=\"placeHolder\"\n [ngClass]=\"inputClass + ' ' + (borderBottomOnly ? 'border-bottom-only' : '')\"\n (keyup.enter)=\"onenter.emit()\"\n />\n }\n }\n</div>\n\n<ng-template #clearIcon>\n <i\n nz-icon\n nzType=\"close-circle\"\n nzTheme=\"twotone\"\n nzTwotoneColor=\"#999\"\n *ngIf=\"_ngModel\"\n (click)=\"_ngModel = null; _onNgModelChange(); onclickClearIcon.emit()\"\n style=\"cursor: pointer\"\n ></i>\n</ng-template>\n","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NzSelectModule, NzSelectSizeType } from 'ng-zorro-antd/select';\nimport { FormGroup, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzFormModule } from 'ng-zorro-antd/form';\n\n@Component({\n selector: 'extend-select',\n templateUrl: './extend-select.html',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, TranslateModule, NzFormModule, NzSelectModule],\n styles: `\n :host ::ng-deep .ant-select-selector {\n height: var(--custom-select-height) !important;\n line-height: var(--custom-select-height) !important;\n }\n `,\n})\nexport class ExtendSelectComponent {\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal';\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n\n /**\n * default = 8\n */\n @Input() labelSpan = 8;\n @Input()\n get disabled() {\n return this._disabled;\n }\n set disabled(val: boolean) {\n this._disabled = val;\n\n if (this.formData && this.controlName) {\n const control = this.formData.controls[this.controlName];\n\n if (this._disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false }); // <-- bỏ disable\n }\n }\n }\n @Input() required = false;\n @Input() noBottom = false;\n @Input() multiple = false;\n @Input() showSelectAll = false;\n @Input() maxTagCount = 10;\n\n @Input() inputWidth = '';\n @Input() inputHeight = '';\n @Input() borderBottomOnly = false;\n\n /**\n *\n */\n @Input() displayInline = false;\n @Input() size: NzSelectSizeType = 'default';\n\n @Input() lstItem: any[] = [];\n @Input() displayField: string = '';\n @Input() displayFields: string[] = [];\n\n /**\n * Không có thì value sẽ là cả object\n */\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n @Output() itemChange = new EventEmitter();\n\n @Output() onFocus = new EventEmitter();\n\n @HostBinding('style.--custom-select-height')\n get cssHeight() {\n return this.inputHeight ? +this.inputHeight.replaceAll('px', '') - 1 + 'px' : null;\n }\n\n private _disabled = false;\n\n ngOnInit(): void {\n if (this.formData && this.controlName) {\n this.formData.controls[this.controlName].valueChanges.subscribe((val) => {\n this._ngModelChange.emit(val);\n this.itemChange.emit(this.lstItem.find((x) => x[this.valueField] == val));\n });\n }\n }\n\n getDisplay(item: any): string {\n if (this.displayField) {\n return item[this.displayField];\n }\n\n if (this.displayFields?.length) {\n const display = this.displayFields.map((field) => item[field]).join(' - ');\n return display;\n }\n\n return item;\n }\n\n onSelectChange(val: any) {\n if (val instanceof Array && val.find((x) => x == '__all__')) {\n const allIds = this.lstItem.map((x) => (this.valueField ? x[this.valueField] : x));\n val = allIds;\n }\n\n this._ngModel = val;\n this._ngModelChange.emit(val);\n\n if (this.valueField) {\n this.itemChange.emit(this.lstItem.find((x) => x[this.valueField] == val));\n }\n }\n}\n","<div class=\"extend-wrapper\" [ngStyle]=\"{ display: displayInline ? 'inline' : null }\">\n @if (!multiple) {\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-select\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzAllowClear]=\"true\"\n [nzShowSearch]=\"true\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [formControlName]=\"controlName\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-select\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzAllowClear]=\"true\"\n [nzShowSearch]=\"true\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [ngModel]=\"_ngModel\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectChange($event)\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <nz-select\n class=\"full-width\"\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzPlaceHolder]=\"placeHolder\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [ngModel]=\"_ngModel\"\n (ngModelChange)=\"onSelectChange($event)\"\n (nzFocus)=\"onFocus.emit()\"\n [disabled]=\"disabled\"\n [ngStyle]=\"{\n width: inputWidth,\n height: inputHeight,\n }\"\n [ngClass]=\"{\n 'border-bottom-only': borderBottomOnly,\n 'custom-height-select': inputHeight ? true : false,\n }\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n }\n }\n } @else {\n @if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-select\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzMode]=\"'multiple'\"\n [nzMaxMultipleCount]=\"lstItem.length\"\n [nzMaxTagCount]=\"maxTagCount\"\n [nzAllowClear]=\"true\"\n [nzShowSearch]=\"true\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [formControlName]=\"controlName\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n </div>\n } @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [nzSpan]=\"layOutType == 'horizontal' ? 24 - labelSpan : null\"\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <nz-select\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzMode]=\"'multiple'\"\n [nzMaxMultipleCount]=\"lstItem.length\"\n [nzMaxTagCount]=\"maxTagCount\"\n [nzAllowClear]=\"true\"\n [nzShowSearch]=\"true\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [ngModel]=\"_ngModel\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectChange($event)\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <nz-select\n class=\"full-width\"\n nzShowSearch\n nzAllowClear\n [nzSize]=\"size\"\n [nzPlaceHolder]=\"placeHolder\"\n [nzMode]=\"'multiple'\"\n [nzMaxMultipleCount]=\"lstItem.length\"\n [nzMaxTagCount]=\"maxTagCount\"\n [nzDropdownMatchSelectWidth]=\"false\"\n [ngModel]=\"_ngModel\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectChange($event)\"\n (nzFocus)=\"onFocus.emit()\"\n >\n @if (showSelectAll) {\n <nz-option [nzLabel]=\"'-- Chọn tất cả --'\" [nzValue]=\"'__all__'\"></nz-option>\n }\n @for (item of lstItem; track $index) {\n <nz-option [nzLabel]=\"getDisplay(item)\" [nzValue]=\"valueField ? item[valueField] : item\"></nz-option>\n }\n </nz-select>\n }\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzSelectModeType } from 'ng-zorro-antd/select';\n\n@Component({\n selector: 'extend-textarea',\n templateUrl: './extend-textarea.html',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NzFormModule,\n NzDatePickerModule,\n TranslateModule,\n NzInputModule,\n ],\n})\nexport class ExtendTextArea implements AfterViewInit {\n @Input() layOutType: 'horizontal' | 'vertical' = 'horizontal';\n @Input() label = '';\n @Input() placeHolder = '';\n @Input() labelAlign: 'left' | 'right' = 'left';\n @Input() labelSpan = 8;\n @Input() inputSpan = 16;\n @Input() disabled = false;\n @Input() required = false;\n @Input() noBottom = false;\n @Input() selectModeType: NzSelectModeType = 'default';\n @Input() inputClass = '';\n\n @Input() minRows = 3;\n @Input() maxRows = 5;\n @Input() autoSize = false;\n\n @Input() lstItem: any[] = [];\n @Input() displayField: string = '';\n @Input() valueField: string = '';\n\n @Input() formData!: FormGroup;\n @Input() controlName!: string;\n\n @Input() _ngModel: any = null;\n @Output() _ngModelChange = new EventEmitter();\n\n ngAfterViewInit(): void {}\n\n onChange() {\n this._ngModelChange.emit(this._ngModel);\n }\n}\n","@if (controlName) {\n <div [formGroup]=\"formData\">\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <textarea\n nz-input\n [nzAutosize]=\"autoSize || { minRows: minRows, maxRows: maxRows }\"\n [formControlName]=\"controlName\"\n [ngClass]=\"inputClass\"\n ></textarea>\n </nz-form-control>\n </nz-form-item>\n </div>\n} @else {\n @if (label) {\n <nz-form-item>\n <nz-form-label\n [nzSpan]=\"layOutType == 'horizontal' ? labelSpan : null\"\n [nzLabelAlign]=\"labelAlign\"\n [nzRequired]=\"required\"\n [nzFor]=\"controlName\"\n nzNoColon\n nzLabelWrap\n >\n {{ label }}\n </nz-form-label>\n <nz-form-control\n [ngClass]=\"{ 'full-width': layOutType == 'vertical' }\"\n [nzErrorTip]=\"'REQUIRED_FIELD' | translate\"\n >\n <textarea\n nz-input\n [nzAutosize]=\"autoSize || { minRows: minRows, maxRows: maxRows }\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"onChange()\"\n [disabled]=\"disabled\"\n [ngClass]=\"inputClass\"\n ></textarea>\n </nz-form-control>\n </nz-form-item>\n } @else {\n <textarea\n nz-input\n [nzAutosize]=\"autoSize || { minRows: minRows, maxRows: maxRows }\"\n [(ngModel)]=\"_ngModel\"\n (ngModelChange)=\"onChange()\"\n [disabled]=\"disabled\"\n [ngClass]=\"inputClass\"\n ></textarea>\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n template: `\n <h2>Không có quyền truy cập</h2>\n <p *ngIf=\"message\">{{ message }}</p>\n <p *ngIf=\"deniedUrl\">\n Bạn đã cố gắng truy cập: <strong>{{ deniedUrl }}</strong>\n </p>\n `,\n imports: [CommonModule],\n})\nexport class NoPermission {\n deniedUrl: string | null = null;\n message: string | null = null;\n\n constructor(private router: Router) {}\n\n ngOnInit(): void {\n const state = history.state;\n\n this.deniedUrl = state?.deniedUrl || null;\n this.message = state?.message || null;\n\n console.log('Lấy từ history.state:', state);\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { NZ_MODAL_DATA } from 'ng-zorro-antd/modal';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\n\n@Component({\n selector: 'pdf-viewer',\n templateUrl: './pdf-viewer.html',\n imports: [NgxExtendedPdfViewerModule],\n})\nexport class PdfViewerComponent implements OnInit {\n // data = inject(NZ_MODAL_DATA);\n\n @Input() dataType: 'base64' | 'bytes' | null = null;\n @Input() pdfData: any;\n\n ngOnInit(): void {\n // this.dataType = this.data.dataType;\n // this.pdfData = this.data.pdfData;\n // this.showPrintButton = this.data.showPrintButton;\n }\n\n print() {\n if (this.dataType == 'base64') {\n const byteCharacters = atob(this.pdfData);\n const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: 'application/pdf' });\n\n const blobUrl = window.URL.createObjectURL(blob);\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = blobUrl;\n document.body.appendChild(iframe);\n iframe.contentWindow?.print();\n } else if (this.dataType == 'bytes') {\n const blob = new Blob([this.pdfData], { type: 'application/pdf' });\n\n const blobUrl = window.URL.createObjectURL(blob);\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = blobUrl;\n document.body.appendChild(iframe);\n iframe.contentWindow?.print();\n }\n }\n}\n","@if (dataType == \"base64\") {\n <ngx-extended-pdf-viewer\n [zoom]=\"100\"\n [base64Src]=\"this.pdfData\"\n [showPrintButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [showDownloadButton]=\"false\"\n ></ngx-extended-pdf-viewer>\n}\n\n@if (dataType == \"bytes\") {\n <ngx-extended-pdf-viewer\n [zoom]=\"100\"\n [src]=\"this.pdfData\"\n [showPrintButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [showDownloadButton]=\"false\"\n ></ngx-extended-pdf-viewer>\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { Subscription } from 'rxjs';\nimport { LoadingService } from '../../services/loading.service';\n\n// global-spinner.component.ts\n@Component({\n selector: 'app-global-spinner',\n template: `\n @if (visible) {\n <div class=\"global-spinner\" [@fadeInOut]>\n <nz-spin [nzSpinning]=\"true\" style=\"position: relative; bottom: 50px;\"></nz-spin>\n </div>\n }\n `,\n styles: [\n `\n .global-spinner {\n position: fixed;\n z-index: 1200; /* Lớn hơn z-index của modal (usually ~1000) */\n top: 50px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n background-color: rgba(255, 255, 255, 0.8); /* Optional overlay */\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `,\n ],\n animations: [\n trigger('fadeInOut', [\n // transition(':enter', [style({ opacity: 0 }), animate('250ms ease-in', style({ opacity: 1 }))]),\n transition(':leave', [animate('250ms ease-out', style({ opacity: 0 }))]),\n ]),\n ],\n\n imports: [NzSpinModule],\n})\nexport class GlobalSpinnerComponent implements OnInit, OnDestroy {\n visible = false;\n private sub!: Subscription;\n\n constructor(public loadingService: LoadingService) {}\n\n ngOnInit() {\n this.sub = this.loadingService.loading$.subscribe((v) => {\n this.visible = v;\n });\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'height',\n template: `<div [ngStyle]=\"{ height: height + 'px' }\"></div>`,\n imports: [CommonModule],\n})\nexport class Height {\n @Input() height: number = 0;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'width',\n template: `<div style=\"display: inline\" [ngStyle]=\"{ 'padding-left': width + 'px' }\"></div>`,\n imports: [CommonModule],\n})\nexport class Width {\n @Input() width: number = 0;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'box',\n template: `<div\n [ngStyle]=\"{\n height: height + 'px',\n 'padding-left': width + 'px',\n display: display ? display : width && height ? 'block' : height ? 'block' : width ? 'inline' : display,\n }\"\n ></div>`,\n imports: [CommonModule],\n})\nexport class Box {\n @Input() display: 'block' | 'inline' | '' = '';\n @Input() width: number = 0;\n @Input() height: number = 0;\n}\n","import { Directive, ElementRef, Input, Renderer2, OnChanges, SimpleChanges, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[appAutoFocus]'\n})\nexport class AutoFocusDirective implements OnChanges {\n\n @Input() appAutoFocus: boolean = false;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['appAutoFocus'] && this.appAutoFocus) {\n setTimeout(() => this.el.nativeElement.focus(), 0);\n }\n }\n}\n","import { Directive, ElementRef, HostListener, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: 'input',\n})\nexport class NullIfEmptyDirective {\n constructor(\n private el: ElementRef,\n @Optional() private ngControl: NgControl,\n ) {}\n\n @HostListener('input')\n onInput() {\n // const value = this.el.nativeElement.value;\n // const newValue = value.trim() === '' ? null : value;\n // this.ngControl?.control?.setValue(newValue, { emitEvent: false });\n }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[numberOnly]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberOnlyDirective),\n multi: true,\n },\n ],\n})\nexport class NumberOnlyDirective implements ControlValueAccessor {\n onChange = (value: any) => {};\n onTouched = () => {};\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const formattedValue = this.formatValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n if (this.onChange) {\n this.onChange(formattedValue);\n }\n }\n\n writeValue(value: any): void {\n const formattedValue = value ? this.formatValue(value) : '';\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', isDisabled);\n }\n\n private formatValue(value: string): string {\n return value.replace(/\\D/g, '');\n }\n}\n","import { Directive, forwardRef, ElementRef, Renderer2 } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Directive({\n selector: '[uppercaseFirstLetterEachWord]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UpperCaseFirsLetterEachWordDirective),\n multi: true,\n },\n ],\n})\nexport class UpperCaseFirsLetterEachWordDirective implements ControlValueAccessor {\n private inputElement: HTMLInputElement | null = null;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngAfterViewInit() {\n setTimeout(() => {\n // Nếu gắn vào <input>, thì chính nó là input\n if (this.el.nativeElement.tagName.toLowerCase() === 'input') {\n this.inputElement = this.el.nativeElement;\n } else {\n // Nếu không, tìm input con bên trong\n this.inputElement = this.el.nativeElement.querySelector('input');\n }\n\n if (this.inputElement) {\n this.renderer.listen(this.inputElement, 'input', (event: any) => {\n const formatted = this.formatValue(event.target.value);\n this.renderer.setProperty(this.inputElement, 'value', formatted);\n this.onChange(formatted);\n });\n }\n\n if (this.pendingValue !== null) {\n this.renderer.setProperty(this.inputElement, 'value', this.pendingValue);\n this.pendingValue = null;\n }\n }, 0);\n }\n\n private pendingValue: any = null;\n\n writeValue(value: any): void {\n const formattedValue = value ? this.formatValue(value) : '';\n if (this.inputElement) {\n this.renderer.setProperty(this.inputElement, 'value', formattedValue);\n } else {\n this.pendingValue = formattedValue;\n }\n }\n\n onChange = (_: any) => {};\n onTouched = () => {};\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.inputElement) {\n this.renderer.setProperty(this.inputElement, 'disabled', isDisabled);\n }\n }\n\n private formatValue(value: string): string {\n return value\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[uppercaseFirstLetter]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UppercaseFirstLetterDirective),\n multi: true,\n },\n ],\n})\nexport class UppercaseFirstLetterDirective implements ControlValueAccessor {\n onChange = (value: any) => {};\n onTouched = () => {};\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const formattedValue = this.formatValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n if (this.onChange) {\n this.onChange(formattedValue);\n }\n }\n\n writeValue(value: any): void {\n const formattedValue = value ? this.formatValue(value) : '';\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', isDisabled);\n }\n\n private formatValue(value: string): string {\n const ls = value.split('');\n ls[0] = ls[0].toUpperCase();\n return ls.join('');\n }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[uppercase]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UppercaseDirective),\n multi: true,\n },\n ],\n})\nexport class UppercaseDirective implements ControlValueAccessor {\n onChange = (value: any) => {};\n onTouched = () => {};\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const formattedValue = this.formatValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n if (this.onChange) {\n this.onChange(formattedValue);\n }\n }\n\n writeValue(value: any): void {\n const formattedValue = value ? this.formatValue(value) : '';\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', isDisabled);\n }\n\n private formatValue(value: string): string {\n return value.toUpperCase();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'limitWords',\n})\nexport class LimitWordsPipe implements PipeTransform {\n transform(value: string, limit: number = 3): string {\n if (!value) return '';\n const words = value.split(' ');\n return words.length <= limit ? value : words.slice(0, limit).join(' ') + '...';\n }\n}\n","export class DownloadHelper {\n public static downloadFileBlop(response: any) {\n const contentDisposition = response.headers.get('Content-Disposition');\n let filename = 'downloaded-file';\n\n if (contentDisposition) {\n const filenameStarMatch = contentDisposition.match(/filename\\*\\=UTF-8''(.+?)(;|$)/);\n const filenameMatch = contentDisposition.match(/filename=\"?([^\"]+)\"?/);\n\n if (filenameStarMatch?.[1]) {\n filename = decodeURIComponent(filenameStarMatch[1]);\n } else if (filenameMatch?.[1]) {\n filename = filenameMatch[1];\n }\n }\n\n const blob = new Blob([response.body!], { type: 'application/octet-stream' });\n\n if (blob.size <= 4) {\n console.log(blob.size);\n\n alert('Không có dữ liệu file');\n return;\n }\n\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.download = filename;\n link.click();\n }\n\n public static downloadFile(data: any, filename: string) {\n const contentType = 'application/octet-stream';\n const blob = new Blob([data], { type: contentType });\n\n if (blob.size <= 4) {\n console.log(blob.size);\n alert('Không có dữ liệu file');\n return;\n }\n\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.download = filename;\n link.click();\n }\n\n public static downloadFileBase64(base64Data: string, fileName: string) {\n // Chuyển đổi Base64 thành dữ liệu nhị phân\n const binaryString = window.atob(base64Data);\n const binaryLen = binaryString.length;\n const bytes = new Uint8Array(binaryLen);\n\n for (let i = 0; i < binaryLen; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n // Tạo một Blob từ dữ liệu nhị phân\n const blob = new Blob([bytes], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });\n\n if (blob.size <= 4) {\n console.log(blob.size);\n alert('Không có dữ liệu file');\n return;\n }\n\n // Tạo một liên kết tạm thời để tải tệp về\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.download = fileName;\n\n // Kích hoạt việc tải tệp\n document.body.appendChild(link);\n link.click();\n\n // Xóa liên kết sau khi tải\n document.body.removeChild(link);\n }\n}\n","import * as XLSX from 'xlsx';\n\nexport class XLSXHelper {\n public static readExcelFileToObjects(file: File, columnCount?: number, readAllSheets?: boolean): Promise<any> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (e: ProgressEvent<FileReader>) => {\n const data = new Uint8Array(e.target?.result as ArrayBuffer);\n const workbook = XLSX.read(data, { type: 'array' });\n\n const sheetNames = workbook.SheetNames;\n\n // Trả về nhiều sheet\n if (readAllSheets) {\n const sheetsdata: Record<string, any[]> = {};\n\n for (const sheetName of sheetNames) {\n const worksheet = workbook.Sheets[sheetName];\n const rawData: any[][] = XLSX.utils.sheet_to_json(worksheet, {\n header: 1,\n defval: '',\n });\n\n let rows = rawData.slice(1);\n\n while (rows.length > 0 && rows[rows.length - 1].every((cell) => cell === '' || cell == null)) {\n rows.pop();\n }\n\n const result = rows.map((row, index) => {\n const obj: any = {};\n const limit = columnCount ?? row.length;\n for (let i = 0; i < limit; i++) {\n obj[`col${i + 1}`] = row[i] ?? '';\n }\n obj.rowIndex = index + 2;\n return obj;\n });\n\n sheetsdata[sheetName] = result;\n }\n\n postMessage({\n sheets: sheetNames,\n sheetsdata,\n });\n\n resolve({\n sheets: sheetNames,\n sheetsdata,\n });\n }\n\n // Trả về sheet đầu tiên\n else {\n const sheetName = sheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n const rawData: any[][] = XLSX.utils.sheet_to_json(worksheet, {\n header: 1,\n defval: '',\n });\n\n let rows = rawData.slice(1);\n\n while (rows.length > 0 && rows[rows.length - 1].every((cell) => cell === '' || cell == null)) {\n rows.pop();\n }\n\n const result = rows.map((row, index) => {\n const obj: any = {};\n const limit = columnCount ?? row.length;\n for (let i = 0; i < limit; i++) {\n obj[`col${i + 1}`] = row[i] ?? '';\n }\n obj.rowIndex = index + 2;\n return obj;\n });\n\n resolve(result);\n }\n };\n\n reader.onerror = (error) => reject(error);\n reader.readAsArrayBuffer(file);\n });\n }\n}\n","import { AppGlobals } from './app-global';\n\nexport interface ApiEndpoint {\n apiEndpoint: string;\n versionCheck: string;\n}\n\nexport interface RespondData {\n IsSuccess: boolean;\n ErrorMessage: string;\n Data: any;\n}\n\nexport interface ESPModel {\n SPN: string;\n Params?: any[];\n}\n\nexport interface ExportExcelModel extends ESPModel {\n FileCode?: string;\n TemplateName?: string;\n OpenXML?: boolean;\n}\n\nexport class PagingModel {\n PageIndex: number = 0;\n PageSize: number = AppGlobals.pageSizeOptions[1];\n}\n\nexport class GridFilter extends PagingModel {\n Keyword: string | null = null;\n OrderOption: OrderOption | null = null;\n}\n\nexport class OrderOption {\n FieldName: string | null = null;\n Direction: string | null = null;\n}\n\nexport class PagingData<T = any> {\n LstHeader: TableHeader[] = [];\n LstItem: T[] = [];\n TotalCount = 0;\n\n constructor(\n obj?: any,\n private TypeConstructor?: new (data?: any) => T,\n ) {\n obj = obj ?? {};\n\n this.LstHeader = obj.LstHeader || [];\n this.TotalCount = obj.TotalCount || 0;\n\n if (Array.isArray(obj.LstItem) && this.TypeConstructor) {\n this.LstItem = obj.LstItem.map((item: any) => new this.TypeConstructor!(item));\n } else {\n this.LstItem = obj.LstItem || [];\n }\n }\n}\n\nexport class TableHeader {\n Code: string = '';\n Name: string = '';\n Class: string = '';\n Type: string = '';\n Width: string = '';\n MinWidth: string = '';\n}\n\nexport class CheckModel {\n ConfirmMessage: string = '';\n ConfirmContent: string = '';\n ErrorMessage: string = '';\n ErrorContent: string = '';\n}\n","import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { AuthService } from '../auth/auth.service';\nimport { NotiService } from './noti.service';\n\n@Injectable({ providedIn: 'root' })\nexport class RouteMonitorService {\n constructor(\n private router: Router,\n private authService: AuthService,\n private notiService: NotiService,\n ) {\n this.router.events.subscribe(async (event) => {\n if (event instanceof NavigationEnd) {\n const url = event.urlAfterRedirects;\n\n if (url.startsWith('/') || url.startsWith('/login') || url == '/no-permission') {\n return;\n }\n\n const hasMenu = await this.authService.checkUserMenu(url);\n if (!hasMenu) {\n this.notiService.error(`Không có quyền truy cập: ${url}`);\n this.router.navigate(['/no-permission'], {\n state: {\n deniedUrl: url,\n message: `Bạn không có quyền truy cập vào đường dẫn ${url}`,\n },\n });\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n setHighContrast(enabled: boolean) {\n document.body.classList.toggle('high-contrast', enabled);\n localStorage.setItem('high-contrast', enabled ? '1' : '0');\n }\n\n isHighContrast(): boolean {\n return localStorage.getItem('high-contrast') == '1';\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { HTTPService } from './api-service/http.service';\nimport { NotiService } from './noti.service';\nimport { AppGlobals } from '../app-global';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VscService extends HTTPService {\n // private readonly currentVersion = '{{POST_BUILD_ENTERS_VERSION_HERE}}';\n public static feClientVersion = '{{POST_BUILD_ENTERS_VERSION_HERE}}';\n public static feServerVersion: string;\n public static beVersion: {};\n public static dbVersion: string;\n public static jsReportTemplateVersion: string;\n\n private modal = inject(NzModalService);\n private notiService = inject(NotiService);\n private interval: any;\n private isShowingPopup = false;\n\n // 10 phút\n public initVersionCheck(frequency = 1000 * 60 * 10) {\n this.interval = setInterval(() => {\n if (!this.isShowingPopup) {\n this.checkVersion();\n }\n }, frequency);\n this.checkVersion();\n }\n\n public checkVersion(all = false) {\n console.log('Check version');\n this.checkFrontendVersion();\n if (all) {\n this.checkBackendVersion();\n // this.checkDatabaseVersion();\n // this.checkJSReportTemplateVersion();\n }\n }\n\n public checkFrontendVersion() {\n if (this.isShowingPopup) {\n return;\n }\n console.log('Check version');\n console.log('current version: ', VscService.feClientVersion);\n this.get(AppGlobals.versionCheck + '?t=' + new Date().getTime()).then(\n async (response: any) => {\n VscService.feServerVersion = response.version;\n console.log('version check: ', VscService.feServerVersion);\n const hashChanged = this.hasVersionChanged(VscService.feClientVersion, VscService.feServerVersion);\n if (hashChanged) {\n // window.location.reload();\n // window.location.href = window.location.href;\n this.isShowingPopup = true;\n // await this.notiService.warning('Có phiên bản mới', 'Vui lòng ấn \"Ctrl + F5\" để cập nhật');\n // this.isShowingPopup = false;\n const modalRef = this.modal.warning({\n nzTitle: 'Có phiên bản mới',\n nzContent: 'Vui lòng ấn \"Ctrl + F5\" để cập nhật',\n });\n }\n },\n (err) => {\n console.error(err, 'Could not get version');\n },\n );\n }\n\n private hasVersionChanged(currentVersion: string, newVersion: string) {\n if (!currentVersion || newVersion === currentVersion) {\n return false;\n }\n return currentVersion !== newVersion;\n }\n\n public clearInterval() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n }\n\n private checkBackendVersion() {\n this.httpClient.get(AppGlobals.apiEndpoint + '/version').subscribe(\n async (response: any) => {\n VscService.beVersion = response;\n },\n (err) => {\n console.error(err, 'Could not get backend version');\n VscService.beVersion = 'Could not get backend version';\n },\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["switchMap","filter","i1","i2","i3","i4","i5","i7","i6","i1.LoadingService","i2.AuthService","i3.NotiService"],"mappings":"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"}
|