@fxlt/common-ui 0.0.5-rc1 → 0.0.5-rc3

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":"fxlt-common-ui.mjs","sources":["../../../projects/ui/src/lib/core/components/base.component.ts","../../../projects/ui/src/lib/ui/components/hero-icon/hero-icon.component.ts","../../../projects/ui/src/lib/ui/components/hero-icon/hero-icon.component.html","../../../projects/ui/src/lib/ui/components/toast/toast.component.ts","../../../projects/ui/src/lib/ui/components/toast/toast.component.html","../../../projects/ui/src/lib/ui/components/toast-container/toast-container.component.ts","../../../projects/ui/src/lib/ui/components/toast-container/toast-container.component.html","../../../projects/ui/src/lib/core/services/toastr.service.ts","../../../projects/ui/src/lib/core/utils.ts","../../../projects/ui/src/lib/core/services/http-wrapper.service.ts","../../../projects/ui/src/lib/core/components/base-table.component.ts","../../../projects/ui/src/lib/core/components/base-dialog.component.ts","../../../projects/ui/src/lib/core/services/loading.service.ts","../../../projects/ui/src/lib/core/resolvers/base-resolver.resolver.ts","../../../projects/ui/src/lib/translation/translation.module.ts","../../../projects/ui/src/lib/translation/translation.service.ts","../../../projects/ui/src/lib/core/services/permissions.service.ts","../../../projects/ui/src/lib/core/directives/has-permission.directive.ts","../../../projects/ui/src/lib/core/directives/trim.directive.ts","../../../projects/ui/src/lib/core/guards/permissions.guard.ts","../../../projects/ui/src/lib/core/services/storage.service.ts","../../../projects/ui/src/lib/core/services/auth-state.service.ts","../../../projects/ui/src/lib/core/interceptors/auth.interceptor.ts","../../../projects/ui/src/lib/core/services/breadcrumb.service.ts","../../../projects/ui/src/lib/core/services/quill-style-loader.service.ts","../../../projects/ui/src/lib/core/services/theme.service.ts","../../../projects/ui/src/lib/ui/material.module.ts","../../../projects/ui/src/lib/ui/components/button/button.component.ts","../../../projects/ui/src/lib/ui/components/button/button.component.html","../../../projects/ui/src/lib/ui/components/chart/chart.component.ts","../../../projects/ui/src/lib/ui/components/chart/chart.component.html","../../../projects/ui/src/lib/ui/components/fx-component.component.ts","../../../projects/ui/src/lib/ui/components/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/ui/components/checkbox/checkbox.component.html","../../../projects/ui/src/lib/ui/components/circle-progress-bar/circle-progress-bar.component.ts","../../../projects/ui/src/lib/ui/components/circle-progress-bar/circle-progress-bar.component.html","../../../projects/ui/src/lib/ui/components/datetime-picker/datetime-picker.component.ts","../../../projects/ui/src/lib/ui/components/datetime-picker/datetime-picker.component.html","../../../projects/ui/src/lib/ui/components/dnd-upload/dnd-upload.component.ts","../../../projects/ui/src/lib/ui/components/dnd-upload/dnd-upload.component.html","../../../projects/ui/src/lib/ui/components/flow-connection/flow-connection.component.ts","../../../projects/ui/src/lib/ui/components/flow-connection/flow-connection.component.html","../../../projects/ui/src/lib/ui/components/input/input.component.ts","../../../projects/ui/src/lib/ui/components/input/input.component.html","../../../projects/ui/src/lib/ui/components/loading-panel/loading-panel.component.ts","../../../projects/ui/src/lib/ui/components/loading-panel/loading-panel.component.html","../../../projects/ui/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.ts","../../../projects/ui/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.html","../../../projects/ui/src/lib/ui/components/radio-button/radio-button.component.ts","../../../projects/ui/src/lib/ui/components/radio-button/radio-button.component.html","../../../projects/ui/src/lib/ui/components/rich-text-area/rich-text-area.component.ts","../../../projects/ui/src/lib/ui/components/rich-text-area/rich-text-area.component.html","../../../projects/ui/src/lib/ui/components/search-bar/search-bar.component.ts","../../../projects/ui/src/lib/ui/components/search-bar/search-bar.component.html","../../../projects/ui/src/lib/ui/components/select/select.component.ts","../../../projects/ui/src/lib/ui/components/select/select.component.html","../../../projects/ui/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.ts","../../../projects/ui/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.html","../../../projects/ui/src/lib/ui/components/slider/slider.component.ts","../../../projects/ui/src/lib/ui/components/slider/slider.component.html","../../../projects/ui/src/lib/ui/components/switch/switch.component.ts","../../../projects/ui/src/lib/ui/components/switch/switch.component.html","../../../projects/ui/src/lib/ui/components/tab-component/tab.component.ts","../../../projects/ui/src/lib/ui/components/tab-component/tab.component.html","../../../projects/ui/src/lib/ui/components/tab-group/tab-group.component.ts","../../../projects/ui/src/lib/ui/components/tab-group/tab-group.component.html","../../../projects/ui/src/lib/ui/components/table-cell/table-cell.component.ts","../../../projects/ui/src/lib/ui/components/table-cell/table-cell.component.html","../../../projects/ui/src/lib/ui/components/tag/tag.component.ts","../../../projects/ui/src/lib/ui/components/tag/tag.component.html","../../../projects/ui/src/lib/ui/components/tree-diagram/tree-diagram.component.ts","../../../projects/ui/src/lib/ui/components/tree-diagram/tree-diagram.component.html","../../../projects/ui/src/lib/ui/components/index.ts","../../../projects/ui/src/lib/ui/dialogs/confirmation/confirmation.component.ts","../../../projects/ui/src/lib/ui/dialogs/confirmation/confirmation.component.html","../../../projects/ui/src/lib/ui/dialogs/index.ts","../../../projects/ui/src/lib/ui/ui.module.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/fxlt-common-ui.ts"],"sourcesContent":["import { Directive, Injector, OnDestroy } from '@angular/core';\n\n@Directive()\nexport abstract class BaseComponent implements OnDestroy {\n protected injector: Injector;\n\n constructor(injector: Injector) {\n this.injector = injector;\n }\n\n ngOnDestroy(): void {\n // clean up if needed later\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-hero-icon',\n standalone: false,\n templateUrl: './hero-icon.component.html',\n styleUrl: './hero-icon.component.scss'\n})\nexport class HeroIconComponent {\n @Input() icon: any;\n @Input() solid: boolean;\n @Input() outline: boolean;\n @Input() size: number;\n @Input() color: any;\n @Input() class?: any;\n}\n","<ng-heroicons\n [icon]=\"icon\"\n [size]=\"size\"\n [solid]=\"solid\"\n [outline]=\"outline\"\n [color]=\"color\"\n [class]=\"class\"\n/>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-toast',\n standalone: false,\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss'\n})\nexport class ToastComponent {\n @Input() toastId!: number;\n @Input() title?: string = '';\n @Input() message: string = '';\n @Input() type: 'success' | 'error' | 'info' | 'warning';\n}\n","<div\n animate.enter=\"horizontal-fade-in-animation\"\n animate.leave=\"horizontal-fade-out-animation\"\n class=\"flex border-l-[3px] items-center bg-bg-primary gap-semi min-w-[250px] max-w-[400px] px-large py-semi rounded shadow-lg transition-all duration-300 ease-in-out transform opacity-100 translate-y-0\"\n [ngClass]=\"{\n 'border-success': type === 'success',\n 'border-critical': type === 'error',\n 'border-warning': type === 'warning',\n 'border-information': type === 'info'\n }\"\n>\n <div class=\"\">\n @switch (type) { @case('success') {\n <fx-ui-hero-icon\n icon=\"check-circle\"\n [solid]=\"true\"\n [size]=\"30\"\n class=\"text-success\"\n ></fx-ui-hero-icon>\n } @case('error') {\n <fx-ui-hero-icon\n icon=\"exclamation-circle\"\n [solid]=\"true\"\n [size]=\"30\"\n class=\"text-critical\"\n ></fx-ui-hero-icon>\n } @case('warning') {\n <fx-ui-hero-icon\n icon=\"exclamation-triangle\"\n [solid]=\"true\"\n [size]=\"30\"\n class=\"text-warning\"\n ></fx-ui-hero-icon>\n } @default {\n <fx-ui-hero-icon\n icon=\"information-circle\"\n [solid]=\"true\"\n [size]=\"30\"\n class=\"text-information\"\n ></fx-ui-hero-icon>\n } }\n </div>\n\n <div class=\"flex flex-col\">\n <strong *ngIf=\"title\" class=\"txt-field-label\">{{ title }}</strong>\n <p class=\"txt-default\">{{ message }}</p>\n </div>\n</div>\n","import { ChangeDetectorRef, Component } from '@angular/core';\n// import { ToastData } from '../../../../public-api';\nimport _ from 'lodash';\n\n@Component({\n selector: 'fx-ui-toast-container',\n standalone: false,\n templateUrl: './toast-container.component.html',\n styleUrl: './toast-container.component.scss'\n})\nexport class ToastContainerComponent {\n toasts: any[] = [];\n\n constructor(private ref: ChangeDetectorRef) {}\n\n addToast(toast: any) {\n this.toasts.push(toast);\n this.ref.detectChanges()\n setTimeout(() => this.removeToast(toast.id), 3000);\n }\n\n removeToast(id: number) {\n this.toasts = this.toasts.filter(t => t.id !== id);\n this.ref.detectChanges();\n }\n}\n","<div\n class=\"fixed top-5 right-5 flex flex-col items-end gap-3 z-[10000] pointer-events-none\"\n>\n @for (toast of toasts; track toast) {\n <fx-ui-toast\n class=\"pointer-events-auto\"\n [message]=\"toast.message\"\n [title]=\"toast.title\"\n [type]=\"toast.type\"\n ></fx-ui-toast>\n }\n</div>","import { Injectable, ApplicationRef, ComponentRef, Injector, createComponent } from '@angular/core';\nimport { ToastContainerComponent } from '../../ui/components/toast-container/toast-container.component';\n\nexport interface ToastData {\n id: number;\n message: string;\n title?: string;\n type: 'success' | 'error' | 'info' | 'warning';\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FxToastrService {\n private containerRef?: ComponentRef<ToastContainerComponent>;\n private idCounter = 0;\n\n constructor(private appRef: ApplicationRef) {\n this.ensureContainerExists();\n }\n\n private ensureContainerExists() {\n if (!this.containerRef) {\n this.containerRef = createComponent(ToastContainerComponent, {\n environmentInjector: this.appRef.injector,\n });\n\n this.appRef.attachView(this.containerRef.hostView);\n document.body.appendChild(this.containerRef.location.nativeElement);\n }\n }\n\n private show(message: string, type: ToastData['type'], title?: string) {\n const toast: ToastData = {\n id: ++this.idCounter,\n message,\n title,\n type,\n };\n\n this.containerRef?.instance.addToast(toast);\n }\n\n success(message: string, title?: string) {\n this.show(message, 'success', title);\n }\n\n error(message: string, title?: string) {\n this.show(message, 'error', title);\n }\n\n info(message: string, title?: string) {\n this.show(message, 'info', title);\n }\n\n warning(message: string, title?: string) {\n this.show(message, 'warning', title);\n }\n}\n","import { Observable, firstValueFrom } from 'rxjs';\nimport _ from 'lodash';\nimport { NgForm } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { TagType } from '../../public-api';\n\nexport class FxUtils {\n private static async preresolve(promises: any, value: any, key?: string) {\n if (key === 'callback' || key === 'socket' || key === 'listener') {\n promises.push(value);\n return;\n }\n if (value instanceof Function) {\n this.preresolve(promises, value());\n } else if (value instanceof Array) {\n const inpromises: any = [];\n value.forEach((v) => {\n this.preresolve(inpromises, v);\n });\n promises.push(Promise.all(inpromises));\n } else if (value instanceof Observable) {\n promises.push(firstValueFrom(value));\n } else if (value instanceof Promise) {\n promises.push(value);\n } else if (value instanceof Object) {\n promises.push(this.resolve(value));\n } else {\n promises.push(value);\n }\n }\n\n static async resolve(value: Object) {\n const keys = [];\n const promises: any = [];\n for (const i in value) {\n if (value.hasOwnProperty(i)) {\n keys.push(i);\n this.preresolve(promises, (value as any)[i], i);\n }\n }\n const values = await Promise.all(promises);\n const raw = {};\n keys.forEach((key: string, index: number) => {\n _.set(raw, key, values[index]);\n });\n return raw;\n }\n\n static isNotNull(obj: any): boolean {\n return !this.isNull(obj);\n }\n\n static isNull(obj: any): boolean {\n return obj === undefined || obj === null;\n }\n\n static isFunction(obj: any): boolean {\n return this.isNotNull(obj) && obj instanceof Function;\n }\n\n static isNotFunction(obj: any): boolean {\n return !this.isFunction(obj);\n }\n\n static isStringEmpty(obj: string): boolean {\n return this.isNull(obj) || obj === '';\n }\n\n static isStringNotEmpty(obj: string): boolean {\n return !this.isStringEmpty(obj);\n }\n\n static isArrayEmpty(obj: any[]): boolean {\n return this.isNull(obj) || obj.length === 0;\n }\n\n static isArrayNotEmpty(obj: any[]): boolean {\n return !this.isArrayEmpty(obj);\n }\n\n static replaceStartWithAsterisk(inputString: string, numToReplace: number): string {\n if (numToReplace >= inputString.length) {\n return '*'.repeat(inputString.length);\n } else if (numToReplace <= 0) {\n return inputString;\n } else {\n const asterisks = '*'.repeat(numToReplace);\n const remainingString = inputString.substring(numToReplace);\n return asterisks + remainingString;\n }\n }\n\n static checkInvalidField(form: NgForm): void {\n Object.keys(form.controls).forEach((field) => {\n const control = form.controls[field];\n control.markAsTouched({ onlySelf: true });\n });\n }\n\n static checkInlineErrorField(err: any, f: NgForm) {\n if (err) {\n Object.keys(err).forEach((field) => {\n const formControl = f.form.get(field);\n\n if (formControl) {\n const error = { apiError: err[field] };\n formControl.setErrors(error);\n }\n });\n }\n }\n\n static isSameCollection(collection: any[], compareCollection: any): boolean {\n return _.isEmpty(_.xor(collection, compareCollection));\n }\n\n static isSameValue(model: any, compareModel: any) {\n return _.isEqual(model, compareModel);\n }\n\n static parseError(err: HttpErrorResponse) {\n if (_.get(err, 'status') === 401) {\n return 'Session timeout. Please login again.';\n }\n if (this.isStringEmpty(_.get(err, 'error.code'))) {\n return _.get(err, 'error.message', 'Unknown Error');\n }\n return `${_.get(err, 'error.code')}: ${_.get(err, 'error.message', 'Unknown Error')}`;\n }\n\n static convertColorFromVariable(name: string, alpha = 1): string {\n const value = getComputedStyle(document.body)\n .getPropertyValue(name)\n .trim()\n .replace(/\\s+/g, ' ');\n return value ? `rgba(${value} / ${alpha})` : `rgba(255 255 255 / ${alpha})`;\n }\n\n static getTagClass(key: string, isCriticalExist: boolean = false): TagType {\n switch (key.toLowerCase()) {\n case 'error':\n case 'failed':\n case 'inactive':\n case 'critical':\n case 'stopped':\n return 'critical';\n case 'high':\n if (isCriticalExist) {\n return 'danger';\n }\n return 'critical';\n case 'inprogress':\n case 'processing':\n case 'paused':\n case 'medium':\n case 'warning':\n return 'warning';\n case 'completed':\n case 'success':\n case 'active':\n case 'low':\n case 'running':\n return 'success';\n case 'queue':\n case 'waiting':\n case 'info':\n return 'information';\n case 'discovery':\n return 'discovery';\n case 'disabled':\n default:\n return 'default';\n }\n }\n\n static validateEmail(value: string) {\n const emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const isEmail = emailRegex.test(value);\n return isEmail;\n }\n\n static isStrongPassword(password: string) {\n const regex = /^(?=.{6,}$)(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9]).*$/;\n return regex.test(password);\n }\n\n static formatSizeUnits(bytes: number) {\n if (bytes >= 1073741824) { return (bytes / 1073741824).toFixed(2) + \" GB\"; }\n else if (bytes >= 1048576) { return (bytes / 1048576).toFixed(2) + \" MB\"; }\n else if (bytes >= 1024) { return (bytes / 1024).toFixed(2) + \" KB\"; }\n else if (bytes > 1) { return bytes + \" bytes\"; }\n else if (bytes == 1) { return bytes + \" byte\"; }\n return \"0 bytes\";\n }\n}\n","import { HttpClient, HttpEvent, HttpHeaders, HttpRequest } from '@angular/common/http';\nimport { Observable, firstValueFrom } from 'rxjs';\n\nexport class HttpWrapper {\n constructor(public http: HttpClient, public baseURL: string) {}\n\n private addCredentials(options: any = {}): any {\n return {\n withCredentials: true,\n ...options,\n };\n }\n\n async get(url: string = '', params?: any): Promise<any> {\n const options = {\n withCredentials: true,\n params: {\n ...params,\n },\n };\n return firstValueFrom(this.http.get(this.baseURL + url, options));\n }\n\n async post(url: string, body: any = {}, options: any = {}): Promise<any> {\n return firstValueFrom(this.http.post(this.baseURL + url, body, this.addCredentials(options)));\n }\n\n async put(url: string, body: any, options: any = {}): Promise<any> {\n return firstValueFrom(this.http.put(this.baseURL + url, body, this.addCredentials(options)));\n }\n\n async delete(url: string, options: any = {}): Promise<any> {\n return firstValueFrom(this.http.delete(this.baseURL + url, this.addCredentials(options)));\n }\n\n upload(url: string, body: FormData, options: any = {}): Observable<HttpEvent<any>> {\n const req = new HttpRequest(\n 'POST',\n this.baseURL + url,\n body,\n {\n reportProgress: true,\n ...this.addCredentials(options)\n }\n );\n\n return this.http.request(req);\n }\n\n async search(params: any = {}) {\n return await this.get('/search', params);\n }\n\n async detail(params: any) {\n return await this.get(`/detail`, params);\n }\n\n async remove(params: any = {}) {\n return await this.delete(`/remove`, params);\n }\n\n async create(data: any) {\n return await this.post(`/create`, data);\n }\n\n async updateInfo(data: any, params?: any) {\n return await this.put(`/update-info`, data, { params: params });\n }\n\n async updateStatus(data: any, params?: any) {\n return await this.put(`/update-status`, data, { params: params });\n }\n\n async update(data: any, params?: any) {\n return await this.put(`/update`, data, { params: params });\n }\n\n async single(code: string) {\n return await this.post(`/${code}`, {});\n }\n\n async selectize() {\n return await this.post('/search', {});\n }\n\n async fetch(filter: any = {}, params: any = {}) {\n return await this.post('', filter, { params: params });\n }\n\n async published(idOrCode: string) {\n return await this.post(`/published/${idOrCode}`);\n }\n\n async unpublished(idOrCode: string) {\n return await this.post(`/unpublished/${idOrCode}`);\n }\n\n async terminated(idOrCode: string) {\n return await this.post(`/terminated/${idOrCode}`);\n }\n\n async disable(params: any) {\n return await this.post(`/disable`, params);\n }\n}\n","import { AfterViewInit, Directive, Injector, OnInit, Type, ViewChild } from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatTable, MatTableDataSource } from '@angular/material/table';\nimport { BaseComponent } from './base.component';\nimport { HttpWrapper } from '../services/http-wrapper.service';\nimport { FxToastrService } from '../services/toastr.service';\nimport { ChangeDetectorRef } from '@angular/core';\nimport _ from 'lodash';\nimport { FxUtils } from '../utils';\nimport { Subject, debounceTime, firstValueFrom } from 'rxjs';\n\nexport interface TableResult<T> {\n data: T[];\n total: number;\n}\n\n@Directive()\nexport class BaseTableComponent<T = any> extends BaseComponent implements OnInit, AfterViewInit {\n dataSource = new MatTableDataSource<T>();\n cols: string[] = [];\n total = 0;\n page = 0;\n pageSize = 10;\n filters: any = {};\n loading: boolean = false;\n expandedElement: any | null;\n toastr: FxToastrService;\n public _lock: boolean = false;\n keywordChange$ = new Subject<string>();\n dataSourcePlaceholder: any[]\n public config: {\n create?: {\n dialog?: Type<{}>;\n size?: string;\n label?: string;\n title?: string;\n message?: string;\n };\n update?: {\n dialog?: Type<{}>;\n size?: string;\n label?: string;\n title?: string;\n message?: string;\n };\n view?: {\n dialog?: Type<{}>;\n size?: string;\n label?: string;\n title?: string;\n message?: string;\n };\n delete?: {\n dialog?: Type<{}>;\n title?: string;\n message?: string;\n cancelTitle?: string;\n confirmTitle?: string;\n };\n updateStatus?: {\n message?: string;\n };\n };\n\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatTable) table!: MatTable<T>;\n\n constructor(\n injector: Injector,\n public api: HttpWrapper,\n public modal: any,\n public ref: ChangeDetectorRef\n ) {\n super(injector);\n this.toastr = injector.get(FxToastrService);\n }\n\n ngOnInit(): void {\n this.keywordChange$.pipe(debounceTime(300)).subscribe(async (keyword) => {\n await this.refresh();\n });\n this.dataSourcePlaceholder = Array(this.pageSize).fill({});\n this.init();\n }\n\n public init() {}\n\n ngAfterViewInit(): void {\n if (this.paginator && this.paginator.page) {\n this.paginator.page.subscribe(event => {\n this.onPageChange(event);\n });\n }\n this.ref.detectChanges();\n }\n\n public async refresh(): Promise<void> {\n this.page = 0;\n await this.fetch();\n }\n\n public setDataSource(result: any): void {\n this.dataSource.data = _.get(result, 'data');\n this.total = _.get(result, 'total');\n }\n\n public async fetch(): Promise<void> {\n this.loading = true;\n try {\n const params = { page: (this.page ?? 0) + 1, pageSize: this.pageSize, ...this.filters };\n const result = await this.api.search(params);\n this.setDataSource(result);\n } catch (err: any) {\n this.toastr.error(FxUtils.parseError(err));\n } finally {\n this.loading = false;\n this.ref.detectChanges();\n }\n }\n\n public async onPageChange(event: any) {\n this.page = event.pageIndex;\n this.pageSize = event.pageSize;\n await this.fetch();\n }\n\n public resolve() {\n return {};\n }\n\n public empty() {\n return {};\n }\n\n public onKeywordChange(keyword: string) {\n this.keywordChange$.next(keyword);\n }\n\n public async create() {\n const conf = _.get(this.config, 'create');\n const dialog = _.get(conf, 'dialog');\n const size = _.get(conf, 'size');\n if (_.isNil(conf) || _.isNil(dialog)) {\n return;\n }\n if (this._lock) {\n return;\n }\n this._lock = true;\n\n let panelClass = 'fx-dialog';\n if (size == '100%') {\n panelClass = 'fx-fullsize-dialog';\n }\n\n let instance = this.modal.open(dialog, {\n panelClass: panelClass,\n autoFocus: false,\n width: size,\n disableClose: true,\n data: {\n method: 'create',\n data: this.empty(),\n title: conf.title,\n message: conf.message,\n resolve: this.resolve(),\n },\n });\n\n instance.afterClosed().subscribe((result: any) => {\n if (result) {\n this.refresh();\n }\n this._lock = false;\n });\n }\n\n public async update(model: any) {\n const conf = _.get(this.config, 'update');\n const dialog = _.get(conf, 'dialog');\n const size = _.get(conf, 'size');\n if (_.isNil(dialog) || _.isNil(conf)) {\n return;\n }\n if (this._lock) {\n return;\n }\n this._lock = true;\n let panelClass = 'fx-dialog';\n if (size == '100%') {\n panelClass = 'fx-fullsize-dialog';\n }\n\n let instance = this.modal.open(dialog, {\n panelClass: panelClass,\n autoFocus: false,\n width: size,\n disableClose: true,\n data: {\n method: 'update',\n data: model,\n title: conf.title,\n message: conf.message,\n resolve: this.resolve(),\n },\n });\n\n instance.afterClosed().subscribe((result: any) => {\n if (result) {\n this.refresh();\n }\n this._lock = false;\n });\n }\n\n public async view(model: any) {\n const conf = _.get(this.config, 'view');\n const dialog = _.get(conf, 'dialog');\n const size = _.get(conf, 'size');\n if (_.isNil(dialog) || _.isNil(conf)) {\n return;\n }\n if (this._lock) {\n return;\n }\n this._lock = true;\n\n let panelClass = 'fx-dialog';\n if (size == '100%') {\n panelClass = 'fx-fullsize-dialog';\n }\n\n let instance = this.modal.open(dialog, {\n panelClass: panelClass,\n autoFocus: false,\n width: size,\n disableClose: true,\n data: {\n data: model,\n title: conf.title,\n message: conf.message,\n resolve: this.resolve(),\n disabled: true,\n },\n });\n\n instance.afterClosed().subscribe(() => {\n this._lock = false;\n });\n }\n\n async delete(model: any) {\n if (this._lock) {\n return;\n }\n this._lock = true;\n\n try {\n const conf = _.get(this.config, 'delete');\n const dialog = _.get(conf, 'dialog');\n\n const dialogRef = this.modal.open(dialog, {\n panelClass: 'fx-dialog',\n autoFocus: false,\n width: '400px',\n data: {\n title: _.get(conf, 'title'),\n message: _.get(conf, 'message'),\n cancelLabel: _.get(conf, 'cancelTitle'),\n confirmLabel: _.get(conf, 'confirmTitle'),\n callback: async () => {\n await this.remove(model);\n },\n },\n });\n\n const state = await firstValueFrom(dialogRef.afterClosed());\n\n if (state) {\n try {\n await this.refresh();\n } catch (err: any) {\n this.toastr.error(FxUtils.parseError(err));\n }\n }\n } finally {\n this._lock = false;\n }\n }\n\n async remove(model: any) {\n try {\n return await this.api.remove({ ...model });\n } catch (err: any) {\n throw err;\n }\n }\n\n public tagClass(tag: string) {\n return FxUtils.getTagClass(tag);\n }\n\n public capitalize(label: string) {\n return _.capitalize(label)\n }\n\n public value(model: any, key: string, defaultValue?: any) {\n return _.get(model, key, defaultValue);\n }\n\n public toggleExpand(element: any): void {\n this.expandedElement = this.expandedElement === element ? null : element;\n }\n\n async updateStatus(params: any) {\n try {\n await this.api.updateStatus(params);\n this.toastr.success(_.get(this.config, 'updateStatus.message', 'Update Success'));\n } catch (err: any) {\n this.toastr.success(FxUtils.parseError(err));\n } finally {\n await this.refresh();\n }\n }\n}\n","import { AfterViewInit, Directive, Inject, OnInit, ViewChild } from '@angular/core';\nimport { BaseComponent } from './base.component';\nimport { NgForm } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { FxToastrService } from '../services/toastr.service';\nimport { HttpWrapper } from '../services/http-wrapper.service';\nimport _ from 'lodash';\nimport { FxUtils } from '../utils';\n\n@Directive()\nexport class BaseDialogComponent<T = any> extends BaseComponent implements AfterViewInit, OnInit {\n @ViewChild('f', { static: true }) ngForm: NgForm;\n public method: string;\n public title: string;\n public model: any;\n public disabled: boolean;\n public loading: boolean;\n public message: string;\n public resolve: any;\n formChangesSubscription: any;\n public onSubmit: boolean = true;\n\n constructor(\n public ref: MatDialogRef<any>,\n @Inject(MAT_DIALOG_DATA) public bindings: any,\n public toastr: FxToastrService,\n public api: HttpWrapper,\n public dialog: MatDialog\n ) {\n super(bindings);\n this.model = _.clone(_.get(bindings, 'data'));\n this.method = _.get(bindings, 'method');\n this.title = _.get(bindings, 'title');\n this.disabled = _.get(bindings, 'disabled');\n this.message = _.get(bindings, 'message');\n this.resolve = _.get(bindings, 'resolve');\n }\n\n ngAfterViewInit(): void {}\n\n ngOnInit(): void {}\n\n accept(form: NgForm, params = null) {\n if (form.invalid) {\n FxUtils.checkInvalidField(form);\n return;\n }\n if (!this.disabled) {\n if (!this.validate()) return;\n if (this.method === 'create') {\n this.create(params);\n return;\n } else {\n this.update(params);\n return;\n }\n }\n\n this.cancel();\n }\n\n create(params: any = null) {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.api\n .create({ ...this.model, ...params })\n .then(\n () => {\n this.toastr.success(this.message);\n this.ref.close(true);\n },\n (error: any) => {\n this.toastr.error(FxUtils.parseError(error));\n }\n )\n .then(() => {\n this.loading = false;\n });\n }\n\n update(params: any = null) {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.api\n .update({ ...this.model, ...params })\n .then(\n () => {\n this.toastr.success(this.message);\n this.ref.close(true);\n },\n (error: any) => {\n this.toastr.error(FxUtils.parseError(error));\n }\n )\n .then(() => {\n this.loading = false;\n });\n }\n\n updateInfo(params: any = null) {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.api\n .updateInfo({ ...this.model, ...params })\n .then(\n () => {\n this.toastr.success(this.message);\n this.ref.close(true);\n },\n (error: string) => {\n this.toastr.error(error);\n }\n )\n .then(() => {\n this.loading = false;\n });\n }\n\n cancel() {\n this.ref.close(false);\n }\n\n validate() {\n return true;\n }\n}\n","import { Injectable, EventEmitter } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FxLoadingService {\n public listener = new EventEmitter<boolean>();\n public listenerAction = new EventEmitter<boolean>();\n start() {\n this.listener.emit(true);\n }\n\n stop() {\n this.listener.emit(false);\n }\n startAction() {\n this.listenerAction.emit(true);\n }\n stopAction() {\n this.listenerAction.emit(false);\n }\n}\n","import { Injector } from '@angular/core';\nimport { FxLoadingService } from '../services/loading.service';\n\nexport class BaseResolver {\n constructor(public loadingService: FxLoadingService, public injector: Injector) {}\n\n baseResolverInit() {\n this.loadingService.start();\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, '/assets/i18n/', '.json');\n}\n\n@NgModule({\n imports: [TranslateModule],\n exports: [TranslateModule]\n})\nexport class TranslationModule {\n static forRoot(): ModuleWithProviders<TranslationModule> {\n return {\n ngModule: TranslationModule,\n providers: [\n {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n ]\n };\n }\n\n static forChild(): ModuleWithProviders<TranslationModule> {\n return {\n ngModule: TranslationModule,\n providers: []\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslationService {\n private currentLangSubject = new BehaviorSubject<string>('en');\n readonly currentLang$ = this.currentLangSubject.asObservable();\n\n constructor(\n private translate: TranslateService,\n private http: HttpClient\n ) {\n // Default fallback\n this.translate.addLangs(['en', 'vi']);\n this.translate.setDefaultLang('en');\n }\n\n init(lang: string) {\n this.setLanguage(lang);\n }\n\n currentLang(): string {\n return this.translate.currentLang || this.translate.defaultLang;\n }\n\n setLanguage(lang: string) {\n this.translate.use(lang);\n this.currentLangSubject.next(lang);\n }\n\n loadTranslations(lang: string, path: string) {\n const url = `${path}${lang}.json`;\n this.http.get(url).subscribe({\n next: (translations: any) => {\n this.translate.setTranslation(lang, translations, true);\n },\n error: (err) => {\n console.warn(`[TranslationService] Failed to load ${url}`, err);\n }\n });\n }\n\n onLanguageChange(callback: (lang: string) => void) {\n this.currentLang$.subscribe(callback);\n }\n}\n","import { Injectable } from '@angular/core';\nimport _ from 'lodash';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionService {\n private permissions: string[] = [];\n\n setPermissions(perms: string[]) {\n this.permissions = perms;\n }\n\n hasPermission(requiredPermissions: string[]): boolean {\n return _.some(requiredPermissions, permission => this.permissions.includes(permission));\n }\n\n getPermissions(): string[] {\n return [...this.permissions];\n }\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { PermissionService } from '../services/permissions.service';\nimport _ from 'lodash';\n\n@Directive({\n selector: '[hasPermission]'\n})\nexport class HasPermissionDirective {\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainerRef: ViewContainerRef,\n private permissionService: PermissionService\n ) {}\n\n @Input() set hasPermission(required: string | string[]) {\n const requiredPermissions = _.isArray(required) ? required : [required];\n this.viewContainerRef.clear();\n if (this.permissionService.hasPermission(requiredPermissions)) {\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n }\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[appTrimOnBlur]'\n})\nexport class TrimOnBlurDirective {\n @Input('appTrimOnBlurCollapse') collapseWhitespace = false;\n\n constructor(private el: ElementRef<HTMLInputElement>, private ngControl: NgControl) {}\n\n @HostListener('blur')\n onBlur(): void {\n const native = this.el.nativeElement;\n if (!native) return;\n\n let value: string = native.value ?? '';\n\n if (this.collapseWhitespace) {\n value = value.replace(/\\s+/g, ' ').trim();\n } else {\n value = value.trim();\n }\n\n if (native.value === value) return;\n\n native.value = value;\n\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValue(value);\n } else {\n const ev = new Event('input', { bubbles: true });\n native.dispatchEvent(ev);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { PermissionService } from '../services/permissions.service';\nimport { FxUtils } from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionGuard implements CanActivate {\n constructor(private permissionService: PermissionService, private router: Router) {}\n\n canActivate(route: any): boolean {\n const requiredPermissions = route.data?.['permissions'] as string[] | undefined;\n\n if (!requiredPermissions || this.permissionService.hasPermission(requiredPermissions)) {\n return true;\n }\n\n this.router.navigate(['/unauthorized']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FxUtils } from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FxStorageService {\n resolve(key: string, value?: any): any {\n if (FxUtils.isNotNull(value)) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n const loc = localStorage.getItem(key);\n return loc ? JSON.parse(loc) : undefined;\n }\n\n remove(key: string) {\n localStorage.removeItem(key);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthStateService {\n private _isLoggedIn$ = new BehaviorSubject<boolean | null>(null);\n readonly isLoggedIn$ = this._isLoggedIn$.asObservable();\n readonly unauthorized$ = new Subject<void>();\n\n constructor() {}\n\n setLoggedIn(value: boolean): void {\n this._isLoggedIn$.next(value);\n }\n\n get isLoggedIn(): boolean {\n return this._isLoggedIn$.value === true;\n }\n\n handleUnauthorized(): void {\n this.setLoggedIn(false);\n this.unauthorized$.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpEvent,\n HttpInterceptor,\n HttpHandler,\n HttpRequest,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { AuthStateService } from '../services/auth-state.service';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n constructor(private authState: AuthStateService) {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const cloned = req.clone({ withCredentials: true });\n\n return next.handle(cloned).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401) {\n this.authState.handleUnauthorized();\n }\n return throwError(() => error);\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface Breadcrumb {\n label: string;\n url?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreadcrumbService {\n private breadcrumbs$ = new BehaviorSubject<Breadcrumb[]>([]);\n\n set(breadcrumbs: Breadcrumb[]) {\n this.breadcrumbs$.next(breadcrumbs);\n }\n\n get() {\n return this.breadcrumbs$.asObservable();\n }\n\n clear() {\n this.breadcrumbs$.next([]);\n }\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class QuillStyleLoaderService {\n private loaded = false;\n private loadingPromise: Promise<void> | null = null;\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {}\n\n /**\n * Load Quill CSS (only in browser). Returns a promise that resolves when\n * the CSS links have been appended.\n */\n load(): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n // Server: do nothing and resolve immediately.\n return Promise.resolve();\n }\n\n if (this.loaded) return Promise.resolve();\n if (this.loadingPromise) return this.loadingPromise;\n\n this.loadingPromise = new Promise<void>((resolve) => {\n const cssUrls = [\n // Using CDN is simplest — no consumer angular.json edits needed.\n 'https://cdn.jsdelivr.net/npm/quill/dist/quill.core.css',\n 'https://cdn.jsdelivr.net/npm/quill/dist/quill.snow.css'\n ];\n\n let remaining = cssUrls.length;\n\n const onLoad = () => {\n remaining -= 1;\n if (remaining === 0) {\n this.loaded = true;\n resolve();\n }\n };\n\n cssUrls.forEach((href) => {\n // Do not add duplicate links\n if (document.querySelector(`link[href=\"${href}\"]`)) {\n onLoad();\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = () => onLoad();\n link.onerror = () => {\n // still count it as loaded to avoid hanging if CDN fails\n console.warn(`[QuillStyleLoader] failed to load: ${href}`);\n onLoad();\n };\n document.head.appendChild(link);\n });\n });\n\n return this.loadingPromise;\n }\n}\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private renderer: Renderer2;\n private lightClass = 'light_theme';\n private theme$ = new BehaviorSubject<'light' | 'dark'>('dark');\n themeStorageKey = 'host-theme';\n\n constructor(rendererFactory: RendererFactory2) {\n this.renderer = rendererFactory.createRenderer(null, null);\n const savedTheme = localStorage.getItem(this.themeStorageKey) as 'light' | 'dark' | null;\n\n if (savedTheme) {\n this.setLightMode(savedTheme === 'light');\n } else {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n const isDark = document.body.classList.contains(this.lightClass) || prefersDark;\n this.setLightMode(isDark);\n }\n }\n\n setLightMode(enable: boolean) {\n if (enable) {\n this.renderer.addClass(document.body, this.lightClass);\n this.theme$.next('light');\n localStorage.setItem(this.themeStorageKey, 'light');\n } else {\n this.renderer.removeClass(document.body, this.lightClass);\n this.theme$.next('dark');\n localStorage.setItem(this.themeStorageKey, 'dark');\n }\n\n window.dispatchEvent(new CustomEvent('theme-changed', { detail: { dark: !enable } }));\n }\n\n toggleTheme() {\n const isLight = this.theme$.value === 'light';\n this.setLightMode(!isLight);\n }\n\n themeChanges() {\n return this.theme$.asObservable();\n }\n\n getCurrentTheme(): 'light' | 'dark' {\n return this.theme$.value;\n }\n\n isLight(): boolean {\n return this.theme$.value === 'light';\n }\n \n getLogoPath(): string {\n return 'assets/images/logo.png'\n }\n}\n","import { MatSelectModule } from '@angular/material/select';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatTimepickerModule } from '@angular/material/timepicker';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\n\nexport const MATERIAL_MODULE = [\n MatSelectModule,\n MatRadioModule,\n MatButtonModule,\n MatIconModule,\n MatPaginatorModule,\n MatTableModule,\n MatSnackBarModule,\n MatDialogModule,\n MatCheckboxModule,\n MatCardModule,\n MatDatepickerModule,\n MatTimepickerModule,\n MatBadgeModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatMenuModule\n];\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { T_OUTLINE_ICONS, T_SOLID_ICONS } from '@dimaslz/ng-heroicons';\n\n@Component({\n selector: 'fx-ui-button',\n standalone: false,\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n})\nexport class ButtonComponent {\n @Input() label: string;\n @Input() disabled = false;\n @Input() buttonVariant: 'default' | 'primary' | 'alternative' = 'alternative';\n @Input() icon?: any;\n @Input() class?: any;\n @Input() loading: boolean = false;\n @Output() clicked = new EventEmitter<void>();\n\n onClick() {\n if (!this.disabled) this.clicked.emit();\n }\n}\n","<button\n [class]=\"class\"\n [ngClass]=\"{\n 'btn-default': buttonVariant === 'default',\n 'btn-primary': buttonVariant === 'primary',\n 'btn-alternative': buttonVariant === 'alternative',\n }\"\n [disabled]=\"disabled || loading\"\n (click)=\"onClick()\"\n>\n @if (loading) {\n <div class=\"flex w-full items-center justify-center\">\n <svg\n [attr.fill]=\"\n buttonVariant !== 'alternative' ? 'rgb(var(--text-primary))' : 'rgb(var(--primary))'\n \"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"4\" cy=\"12\" r=\"0\">\n <animate\n begin=\"0;spinner_z0Or.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"0;3\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_OLMs.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"4;12\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_UHR2.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"12;20\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_lo66\"\n begin=\"spinner_Aguh.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"3;0\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_z0Or\"\n begin=\"spinner_lo66.end\"\n attributeName=\"cx\"\n dur=\"0.001s\"\n values=\"20;4\"\n fill=\"freeze\"\n />\n </circle>\n <circle cx=\"4\" cy=\"12\" r=\"3\">\n <animate\n begin=\"0;spinner_z0Or.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"4;12\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_OLMs.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"12;20\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_JsnR\"\n begin=\"spinner_UHR2.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"3;0\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_Aguh\"\n begin=\"spinner_JsnR.end\"\n attributeName=\"cx\"\n dur=\"0.001s\"\n values=\"20;4\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_Aguh.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"0;3\"\n fill=\"freeze\"\n />\n </circle>\n <circle cx=\"12\" cy=\"12\" r=\"3\">\n <animate\n begin=\"0;spinner_z0Or.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"12;20\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_hSjk\"\n begin=\"spinner_OLMs.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"3;0\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_UHR2\"\n begin=\"spinner_hSjk.end\"\n attributeName=\"cx\"\n dur=\"0.001s\"\n values=\"20;4\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_UHR2.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"0;3\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_Aguh.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"4;12\"\n fill=\"freeze\"\n />\n </circle>\n <circle cx=\"20\" cy=\"12\" r=\"3\">\n <animate\n id=\"spinner_4v5M\"\n begin=\"0;spinner_z0Or.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"3;0\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_OLMs\"\n begin=\"spinner_4v5M.end\"\n attributeName=\"cx\"\n dur=\"0.001s\"\n values=\"20;4\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_OLMs.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"0;3\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_UHR2.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"4;12\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_Aguh.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"12;20\"\n fill=\"freeze\"\n />\n </circle>\n </svg>\n </div>\n } @else {\n <ng-container>\n <div class=\"flex items-center justify-center gap-small\">\n @if(icon) {<fx-ui-hero-icon [icon]=\"icon\" [size]=\"20\" class=\"flex\" [ngClass]=\"{\n 'text-text-inverse': buttonVariant !== 'default',\n 'text-text-primary': buttonVariant === 'alternative'\n }\"></fx-ui-hero-icon>}\n @if(label){<div>{{ label }}</div>}\n </div>\n </ng-container>\n }\n</button>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { ECharts, EChartsOption } from 'echarts';\nimport { FxUtils } from '../../../core/utils';\n\nexport type IChartType = 'bar' | 'pie' | 'line' | 'sunburst' | 'radar' | 'auto';\n\n@Component({\n selector: 'fx-ui-chart',\n standalone: false,\n templateUrl: './chart.component.html',\n styleUrl: './chart.component.scss',\n})\nexport class ChartComponent implements OnChanges, AfterViewInit, OnDestroy {\n @Input() type: IChartType = 'auto';\n @Input() data: any;\n @Input() options?: EChartsOption;\n @Input() palette?: string[];\n @Input() height = '400px';\n @Input() loading = false;\n @Input() pieLegendAlign: any = '10%';\n @Input() pieLegendPosition: any = 'middle'\n @Input() showPieLabel: boolean = true;\n @Input() labelFontFamily = 'BeVietnamPro';\n @Output() chartClick = new EventEmitter<any>();\n @Output() chartInit = new EventEmitter<any>();\n\n labelFontSize = 12;\n canInit = false;\n chartOptions: EChartsOption = {};\n private chartInstance?: ECharts;\n private resizeObserver?: ResizeObserver;\n private intersectionObserver?: IntersectionObserver;\n\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n this.intersectionObserver = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting && !this.canInit) {\n this.canInit = true;\n this.rebuildChart();\n this.cdr.detectChanges();\n }\n },\n { threshold: 0.1 }\n );\n\n this.intersectionObserver.observe(this.ref.nativeElement);\n this.resizeObserver = new ResizeObserver(() => {\n if (this.chartInstance) this.chartInstance.resize();\n });\n this.resizeObserver.observe(this.ref.nativeElement);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.intersectionObserver?.disconnect();\n }\n\n ngOnChanges(): void {\n if (this.canInit) {\n this.rebuildChart();\n }\n }\n\n @HostListener('window:theme-changed')\n onThemeChange(): void {\n requestAnimationFrame(() => {\n this.rebuildChart();\n });\n }\n\n onChartClick(event: any) {\n this.chartClick.emit(event);\n }\n\n onChartInit(chart: any) {\n this.chartInstance = chart;\n this.chartInit.emit(chart);\n\n requestAnimationFrame(() => chart.resize());\n }\n\n private rebuildChart(): void {\n this.chartOptions = this.buildOptions();\n\n if (this.chartInstance) {\n this.chartInstance.clear();\n this.chartInstance.setOption(this.chartOptions, true);\n }\n\n this.cdr.detectChanges();\n }\n\n private registry: Record<string, (data: any, palette: string[]) => EChartsOption> = {\n bar: (data, colors) => ({\n color: colors,\n tooltip: { trigger: 'axis' },\n grid: {\n left: '5%',\n right: '5%',\n bottom: '10%',\n containLabel: true,\n },\n xAxis: {\n type: 'category',\n data: data?.categories || [],\n axisLabel: {\n interval: 0,\n fontFamily: this.labelFontFamily,\n fontSize: this.labelFontSize,\n color: FxUtils.convertColorFromVariable('--text-secondary'),\n width: 80,\n overflow: 'truncate',\n ellipsis: '…',\n },\n axisLine: {\n lineStyle: { color: FxUtils.convertColorFromVariable('--border-strong') },\n },\n splitLine: { show: false },\n },\n yAxis: {\n type: 'value',\n axisLabel: {\n fontFamily: this.labelFontFamily,\n fontSize: this.labelFontSize,\n color: FxUtils.convertColorFromVariable('--text-secondary'),\n },\n axisLine: {\n lineStyle: { color: FxUtils.convertColorFromVariable('--border-strong') },\n },\n splitLine: {\n lineStyle: { color: FxUtils.convertColorFromVariable('--border-default') },\n },\n },\n series: [\n {\n type: 'bar',\n itemStyle: {\n color: (params: any) => {\n const palette = colors || [];\n return palette[params.dataIndex % palette.length];\n },\n },\n data: data?.values || [],\n label: {\n show: true,\n position: 'top',\n fontFamily: this.labelFontFamily,\n fontSize: this.labelFontSize,\n color: FxUtils.convertColorFromVariable('--text-primary'),\n textBorderWidth: 0,\n textBorderColor: 'transparent',\n },\n emphasis: { itemStyle: { opacity: 0.8 } },\n },\n ],\n }),\n\n pie: (data, colors) => {\n const total = data.reduce((sum: number, d: any) => sum + d.value, 0);\n return {\n color: colors,\n tooltip: { trigger: 'item' },\n legend: {\n orient: 'vertical',\n right: this.pieLegendAlign,\n top: this.pieLegendPosition,\n icon: 'circle',\n align: 'left',\n itemGap: 12,\n formatter: (name: string) => {\n const item = data.find((d: any) => d.name === name);\n return item ? `${name}: ${item.value}` : name;\n },\n textStyle: {\n fontFamily: this.labelFontFamily,\n fontSize: 13,\n fontWeight: 500,\n color: FxUtils.convertColorFromVariable('--text-primary'),\n },\n },\n series: [\n {\n type: 'pie',\n radius: ['40%', '70%'],\n center: ['40%', '50%'],\n avoidLabelOverlap: true,\n data,\n label: {\n //{a}\tSeries name\n //{b}\tData name (slice label)\n //{c}\tData value\n //{d}\tPercentage\n position: 'outside',\n formatter: '{d}%',\n fontSize: this.labelFontSize,\n fontFamily: this.labelFontFamily,\n color: FxUtils.convertColorFromVariable('--text-primary'),\n textBorderWidth: 0,\n textBorderColor: 'transparent',\n },\n labelLine: {\n show: this.showPieLabel,\n length: 12,\n length2: 12,\n },\n itemStyle: {\n borderWidth: 0,\n },\n emphasis: {\n scale: true,\n scaleSize: 10,\n itemStyle: { borderWidth: 0 },\n label: { textBorderWidth: 0 },\n },\n },\n ],\n graphic: {\n type: 'group',\n left: '40%',\n top: '50%',\n bounding: 'raw',\n children: [\n {\n type: 'text',\n style: {\n text: total.toString(),\n fontSize: 24,\n fontWeight: 600,\n fontFamily: this.labelFontFamily,\n fill: FxUtils.convertColorFromVariable('--text-primary'),\n align: 'center',\n verticalAlign: 'middle',\n },\n y: 0,\n },\n ],\n },\n };\n },\n\n sunburst: (data, colors) => ({\n color: colors,\n series: [\n {\n type: 'sunburst',\n data,\n radius: ['15%', '90%'],\n itemStyle: {\n borderWidth: 1,\n borderColor: FxUtils.convertColorFromVariable('--border-default'),\n },\n label: {\n rotate: 'tangential',\n fontSize: this.labelFontSize,\n fontFamily: this.labelFontFamily,\n color: FxUtils.convertColorFromVariable('--text-primary'),\n textBorderWidth: 0,\n textBorderColor: 'transparent',\n },\n },\n ],\n }),\n };\n\n private detectType(): string {\n if (this.type !== 'auto') return this.type;\n if (this.data?.children) return 'sunburst';\n if (this.data?.categories && this.data?.values) return 'bar';\n if (Array.isArray(this.data) && this.data[0]?.value && this.data[0]?.name) return 'pie';\n return 'bar';\n }\n\n private buildOptions(): EChartsOption {\n const chartType = this.detectType();\n const palette = this.resolvePalette();\n const baseBuilder = this.registry[chartType];\n const baseOptions = baseBuilder ? baseBuilder(this.data, palette) : {};\n\n const textColor = FxUtils.convertColorFromVariable('--text-primary');\n\n const mergedOptions: EChartsOption = {\n legend: {\n textStyle: {\n fontFamily: this.labelFontFamily,\n color: textColor,\n fontSize: this.labelFontSize,\n fontWeight: 500,\n },\n icon: 'circle',\n itemGap: 16,\n },\n ...baseOptions,\n ...this.options,\n };\n\n return mergedOptions;\n }\n\n private resolvePalette(): string[] {\n const defaultPalette = [\n 'rgba(var(--critical) / 1)',\n 'rgba(var(--danger) / 1)',\n 'rgba(var(--warning) / 1)',\n 'rgba(var(--success) / 1)',\n 'rgba(var(--information) / 1)',\n 'rgba(var(--discovery) / 1)',\n ];\n\n const palette = !this.palette || this.palette.length === 0 ? defaultPalette : this.palette;\n\n return palette.map((raw) => {\n if (raw.includes('var(')) {\n const cssVar = raw.match(/var\\((.*?)\\)/)?.[1];\n const opacityMatch = raw.match(/\\/\\s*([\\d.]+)/);\n const opacity = opacityMatch ? parseFloat(opacityMatch[1]) : 1;\n const rgb = getComputedStyle(document.body)\n .getPropertyValue(cssVar || '')\n .trim()\n .replace(/\\s+/g, ',');\n return `rgba(${rgb}, ${opacity})`;\n }\n return raw;\n });\n }\n}\n","<div class=\"chart-wrapper\" [style.height]=\"height\" [class.loading]=\"loading\">\n <ng-container *ngIf=\"canInit\">\n <div\n echarts\n [options]=\"chartOptions\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n class=\"w-full h-full\">\n </div>\n </ng-container>\n\n <div class=\"chart-loader\" *ngIf=\"loading\">\n <span class=\"txt-default\">Loading...</span>\n </div>\n</div>\n","import { Optional, Self } from '@angular/core';\nimport { ControlValueAccessor, NgControl, ValidationErrors } from '@angular/forms';\nimport { FxUtils } from '../../core/utils';\n\nexport type ErrorMessages = { [key: string]: any };\n\nexport class FxComponent<T> implements ControlValueAccessor {\n value: T;\n public onChange = (value: T) => {};\n public onTouched = () => {};\n \n validationError: ErrorMessages;\n errorMessages?: ErrorMessages;\n constructor(@Optional() @Self() public ngControl: NgControl) {\n if (ngControl) ngControl.valueAccessor = this;\n }\n\n setValue(value: T) {\n if (this.onChange) {\n this.onChange(value);\n }\n }\n\n onEnter(value: T) {\n if (this.onChange) {\n this.onChange(value);\n }\n }\n\n writeValue(value: T): void {\n this.value = value ?? ('' as any);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n get invalid(): boolean {\n return !!(this.ngControl?.invalid && this.ngControl?.touched);\n }\n\n get errors(): { [key: string]: any } {\n return this.ngControl?.errors || {};\n }\n\n validate(validateFn: Function): void {\n if (this.invalid) return;\n if (validateFn) {\n const error = validateFn(this.value);\n if (FxUtils.isNotNull(error)) {\n this.setErrors(error ?? {})\n }\n }\n }\n\n public setErrors(error: ValidationErrors) {\n this.validationError = error;\n const control = this.ngControl?.control;\n if (!control) return;\n control.setErrors(error);\n }\n\n public clearErrors() {\n const control = this.ngControl?.control;\n if (!control) return;\n const errors = control.errors || {};\n const builtInErrorKeys = ['required', 'minlength', 'maxlength', 'email', 'pattern'];\n const remaining: ValidationErrors = {};\n for (const key of builtInErrorKeys) {\n if (errors[key] !== undefined) {\n remaining[key] = errors[key];\n }\n }\n control.setErrors(Object.keys(remaining).length ? remaining : null);\n }\n \n\n getErrorMessage(label?: string): string | null {\n if (!this.errors) return null;\n const displayLabel = FxUtils.isStringEmpty(label ?? '') ? 'This field' : label;\n const defaultMessages: ErrorMessages = {\n required: `${displayLabel} is required`,\n minlength: `${displayLabel} minimum length is ${this.errors['minlength']?.requiredLength}`,\n email: \"Please enter a valid email\"\n }\n const messages = { ...defaultMessages, ...this.validationError, ...this.errorMessages };\n const firstKey = Object.keys(this.errors)[0];\n return messages[firstKey] || `Invalid ${label ?? 'value'}`;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n Self,\n} from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-checkbox',\n standalone: false,\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n})\nexport class CheckboxComponent extends FxComponent<any> implements AfterViewInit {\n @Input() label = '';\n @Input() disabled = false;\n @Input() rounded: boolean;\n @Output() valueChange = new EventEmitter<boolean>();\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n this.value = checked;\n this.onChange(checked);\n this.valueChange.emit(checked);\n }\n\n markTouched() {\n this.onTouched();\n }\n}\n","<label\n class=\"flex items-center gap-normal cursor-pointer select-none\"\n [class.opacity-50]=\"disabled\"\n [class.cursor-not-allowed]=\"disabled\"\n>\n <input\n type=\"checkbox\"\n class=\"hidden\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n />\n <span\n class=\"relative w-4 h-4 border rounded-full transition-colors duration-150 shrink-0\"\n [ngClass]=\"{\n 'rounded-full': rounded,\n 'rounded-sm': !rounded,\n 'border-border-strong bg-transparent': !value,\n 'border-border-selected bg-border-selected': value\n }\"\n >\n <!-- Keep SVG space reserved always -->\n <span class=\"absolute inset-0 flex items-center justify-center\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-bg-primary w-4 h-4 transition-opacity duration-150\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [style.opacity]=\"value ? 1 : 0\"\n >\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </span>\n </span>\n\n @if(label){<span class=\"mb-0 txt-field-label\">{{ label }}</span>}\n</label>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-circle-progress-bar',\n standalone: false,\n templateUrl: './circle-progress-bar.component.html',\n styleUrl: './circle-progress-bar.component.scss'\n})\nexport class CircleProgressBar {\n @Input() percent = 0;\n @Input() showPercent: boolean = false;\n\n readonly radius = 35;\n readonly stroke = 10;\n readonly normalizedRadius = this.radius - this.stroke / 2;\n readonly circumference = 2 * Math.PI * this.normalizedRadius;\n\n get dashOffset(): number {\n const clamped = Math.max(0, Math.min(100, this.percent));\n return this.circumference - (clamped / 100) * this.circumference;\n }\n\n get ariaLabel(): string {\n return `${Math.round(this.percent)}%`;\n }\n}\n","<div class=\"flex items-center justify-center w-full h-full\">\n <svg\n class=\"transform -rotate-90 block\"\n [attr.viewBox]=\"'0 0 ' + radius * 2 + ' ' + radius * 2\"\n width=\"100%\"\n height=\"100%\"\n >\n <circle\n class=\"opacity-20\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.r]=\"normalizedRadius\"\n [attr.stroke-width]=\"stroke\"\n fill=\"transparent\"\n stroke=\"currentColor\"\n ></circle>\n\n <circle\n class=\"stroke-current\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.r]=\"normalizedRadius\"\n [attr.stroke-width]=\"stroke\"\n fill=\"transparent\"\n stroke-linecap=\"round\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"dashOffset\"\n style=\"transition: stroke-dashoffset 300ms linear\"\n ></circle>\n\n @if(showPercent){\n <text\n [attr.x]=\"radius\"\n [attr.y]=\"radius\"\n dominant-baseline=\"central\"\n text-anchor=\"middle\"\n class=\"text-xs font-medium\"\n fill=\"currentColor\"\n >\n {{ percent }}%\n </text>\n }\n </svg>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ErrorMessages, FxComponent } from '../fx-component.component';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-datetime-picker',\n standalone: false,\n templateUrl: './datetime-picker.component.html',\n styleUrl: './datetime-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatetimePicker extends FxComponent<any> implements AfterViewInit, OnInit {\n @Input() label?: string;\n @Input() placeholder = 'Select date and time';\n @Input() required = false;\n @Input() type: any = 'both';\n @Input() disabled: boolean = false;\n @Input() override errorMessages: ErrorMessages = {};\n @Input() validateFn: (date: string) => ValidationErrors | null\n\n startAt: any\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngOnInit(): void {\n }\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.ref.detectChanges();\n })\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onBlur() { \n this.onTouched()\n this.validate(this.validateFn);\n }\n\n override writeValue(value: any): void {\n this.value = value ?? '';\n this.startAt = value ?? '';\n console.log('startAt: ', this.startAt);\n this.ref.markForCheck();\n }\n\n onValueChange(date: any): void {\n if (this.disabled) return;\n this.value = date\n this.onChange(date);\n console.log('date: ', date);\n this.onTouched();\n }\n}\n","<div class=\"flex flex-col mb-4 w-full text-left\">\n @if (label){\n <label class=\"txt-field-label\">\n {{ label }}\n <span *ngIf=\"required\" class=\"txt-required\">*</span>\n </label>\n }\n\n <div class=\"relative\">\n <input\n [owlDateTimeTrigger]=\"picker\"\n [owlDateTime]=\"picker\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n [value]=\"value\"\n readonly\n class=\"input-default\"\n />\n </div>\n <owl-date-time\n #picker\n [startAt]=\"startAt\"\n [pickerType]=\"type\"\n (afterPickerClosed)=\"onValueChange($event)\"\n ></owl-date-time>\n <div *ngIf=\"invalid\" class=\"txt-invalid\">{{ getErrorMessage(label) }}</div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type UploadResult = {\n files: File[];\n accepted: File[];\n rejected: { file: File; reason: string }[];\n };\n\n@Component({\n selector: 'fx-ui-dnd-upload',\n standalone: false,\n templateUrl: './dnd-upload.component.html',\n styleUrl: './dnd-upload.component.scss',\n})\nexport class DndUploadComponent {\n @Input() multiple = false;\n @Input() accept = '';\n @Input() maxSizeMB = 10;\n @Input() strictSize = true;\n\n @Output() fileDrop = new EventEmitter<File[]>();\n @Output() fileClick = new EventEmitter<void>();\n @Output() uploadComplete = new EventEmitter<File[]>();\n @Output() uploadError = new EventEmitter<{ file: File; reason: string }>();\n\n isDragOver = false;\n private isOpening = false;\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n this.isDragOver = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n this.isDragOver = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.isDragOver = false;\n\n if (!event.dataTransfer?.files?.length) return;\n const files = Array.from(event.dataTransfer.files);\n this.processFiles(files);\n }\n\n onAreaClick(inputEl: HTMLInputElement | null, event?: Event) {\n if (this.isOpening) return;\n this.isOpening = true;\n\n this.fileClick.emit();\n (event?.currentTarget as HTMLElement)?.blur?.();\n\n setTimeout(() => {\n inputEl?.click();\n this.isOpening = false;\n }, 0);\n }\n\n onFileSelected(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files?.length) return;\n const files = Array.from(input.files);\n this.processFiles(files);\n input.value = '';\n }\n\n private processFiles(files: File[]) {\n const valid: File[] = [];\n \n const acceptedTypes = this.accept\n .split(',')\n .map(t => t.trim().toLowerCase())\n .filter(t => t);\n \n for (const file of files) {\n const sizeMB = file.size / 1024 / 1024;\n if (this.strictSize && sizeMB > this.maxSizeMB) {\n this.uploadError.emit({\n file,\n reason: `File too large: ${sizeMB.toFixed(2)} MB > ${this.maxSizeMB} MB`\n });\n continue;\n }\n if (acceptedTypes.length && !this.isAccepted(file, acceptedTypes)) {\n this.uploadError.emit({\n file,\n reason: `File type not allowed: \"${file.name}\"`\n });\n continue;\n }\n valid.push(file);\n }\n if (valid.length) {\n this.fileDrop.emit(valid);\n this.onUpload(valid);\n }\n }\n\n private onUpload(files: File[]) {\n console.log('Uploading files:', files);\n this.uploadComplete.emit(files);\n }\n\n private isAccepted(file: File, accepted: string[]): boolean {\n const fileType = file.type.toLowerCase();\n const fileExt = '.' + file.name.split('.').pop()!.toLowerCase();\n \n return accepted.some(a => {\n if (a.startsWith('.')) {\n return a === fileExt;\n }\n if (a.endsWith('/*')) {\n return fileType.startsWith(a.replace('/*', ''));\n }\n return a === fileType;\n });\n }\n}\n","<div\n class=\"block w-full\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n>\n <div\n role=\"button\"\n tabindex=\"0\"\n class=\"flex flex-col items-center justify-center gap-1 border-2 border-dashed rounded-md p-4 cursor-pointer select-none outline-none focus:ring-2 focus:ring-primary\"\n [ngClass]=\"{\n 'border-border-default bg-bg-hover': !isDragOver,\n 'border-border-interactive bg-secondary': isDragOver\n }\"\n (click)=\"onAreaClick(fileInput, $event)\"\n (keydown.enter)=\"onAreaClick(fileInput, $event)\"\n >\n <div class=\"text-sm text-text-link font-medium\">\n Click to upload <span class=\"text-text-secondary opacity-50\">or drag and drop</span>\n </div>\n <div class=\"text-xs text-text-secondary\">\n Allowed: {{ accept || 'any file type' }} (max {{ maxSizeMB }} MB)\n </div>\n\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n [attr.multiple]=\"multiple ? '' : null\"\n [attr.accept]=\"accept\"\n (change)=\"onFileSelected($event)\"\n />\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Node, Edge, Vflow, Connection } from 'ngx-vflow';\n\n@Component({\n selector: 'fx-ui-flow-connection',\n standalone: false,\n templateUrl: './flow-connection.component.html',\n styleUrl: './flow-connection.component.scss',\n})\nexport class FlowConnection {\n @Input() nodes: Node[] = [];\n @Input() edges: Edge[] = [];\n @Input() backgroundColor: any = '--bg-hover-primary'\n @Input() view: any = ['100%', '400px'];\n\n handleConnection(connection: Connection) {\n this.edges = [\n ...this.edges,\n {\n id: `${connection.source} -> ${connection.target}`,\n ...connection,\n },\n ];\n }\n}\n","<vflow\n [background]=\"{\n type: 'solid',\n color: `rgba(var(${backgroundColor})`\n}\"\n [nodes]=\"nodes\"\n [edges]=\"edges\"\n (onConnect)=\"handleConnection($event)\"\n [view]=\"view\"\n/>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n Self,\n} from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\nimport { FxComponent } from '../fx-component.component';\n\n@Component({\n selector: 'fx-ui-input',\n standalone: false,\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.css'],\n})\nexport class InputComponent extends FxComponent<string> implements AfterViewInit {\n @Input() label = '';\n @Input() type = 'text';\n @Input() placeholder = '';\n @Input() override errorMessages: { [key: string]: string } = {};\n @Input() required: string | boolean = false;\n @Input() disabled = false;\n @Input() iconClass?: string = 'material-symbols-outlined';\n @Input() suffixIcon?: string;\n @Input() class?: any;\n @Input() maxlength?: number;\n @Input() validateFn?: (value: string) => ValidationErrors | null;\n @Output() blurred = new EventEmitter<void>();\n @Output() focused = new EventEmitter<void>();\n @Output() suffixClick = new EventEmitter<void>();\n\n showPassword = false;\n validateError: ValidationErrors | null = null; \n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n let newValue = input.value;\n\n if (this.maxlength && newValue.length > this.maxlength) {\n newValue = newValue.slice(0, this.maxlength);\n input.value = newValue;\n }\n\n this.value = newValue;\n this.onChange(this.value);\n }\n\n onFocus() {\n this.clearErrors();\n this.focused.emit();\n }\n\n onBlur() {\n this.onTouched();\n this.blurred.emit();\n if (this.validateFn) {\n this.validateError = this.validateFn(this.value);\n this.validate(this.validateFn);\n }\n }\n\n togglePassword(): void {\n this.showPassword = !this.showPassword;\n }\n\n onSuffixClick(): void {\n if (this.type === 'password') {\n this.togglePassword();\n } else {\n this.suffixClick.emit();\n }\n }\n\n get displayType(): string {\n if (this.type === 'password' && this.showPassword) return 'text';\n if (this.type === 'otp') return 'number';\n return this.type;\n }\n}\n","<div class=\"mb-4 text-left w-full text-text-primary\" [class]=\"class\">\n @if(label){<label class=\"block txt-field-label\">\n {{ label }}\n @if (required) {<span class=\"txt-required\">*</span>}\n </label>\n }\n\n <div class=\"relative\">\n <input\n appTrimOnBlur\n [appTrimOnBlurCollapse]=\"true\"\n [type]=\"displayType\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.maxlength]=\"maxlength\"\n [class]=\"type === 'otp' ? 'input-otp' : 'input-default'\"\n [ngClass]=\"{\n 'input-invalid': invalid,\n 'pr-8': type === 'password' || suffixIcon,\n 'txt-otp-input': type === 'otp'\n }\"\n />\n <button\n type=\"button\"\n class=\"absolute inset-y-0 right-2 flex items-center text-text-primary hover:text-text-secondary\"\n (click)=\"onSuffixClick()\"\n [disabled]=\"disabled\"\n >\n @if (type === 'password') {\n <i class=\"material-symbols-outlined text-lg select-none\">{{\n showPassword ? 'visibility_off' : 'visibility'\n }}</i>\n } @else if (suffixIcon) {\n <i [class]=\"iconClass\" class=\"text-lg select-none\">{{ suffixIcon }}</i>\n }\n </button>\n </div>\n\n @if (invalid){\n <div class=\"txt-invalid\">\n {{ getErrorMessage(label) }}\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-loading-panel',\n standalone: false,\n templateUrl: './loading-panel.component.html',\n styleUrl: './loading-panel.component.scss'\n})\nexport class LoadingPanel {\n @Input() show = false;\n @Input() message?: string = \"Loading\";\n}\n","<!-- Full-screen glass overlay -->\n<div\n *ngIf=\"show\"\n class=\"fixed inset-0 z-50 flex items-center justify-center\"\n aria-hidden=\"false\"\n role=\"alert\"\n aria-busy=\"true\"\n>\n <div class=\"absolute inset-0 bg-bg-primary/30 backdrop-blur-xl\" aria-hidden=\"true\"></div>\n\n <div\n class=\"relative z-10 flex flex-col items-center gap-4 p-6 rounded-2xl shadow-xl bg-bg-primary/70 border border-border-strong backdrop-bg-primary/70\"\n style=\"min-width: 220px; max-width: 90%\"\n >\n <svg fill=\"rgb(var(--primary))\" width=\"50\" height=\"50\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"4\" cy=\"12\" r=\"0\">\n <animate begin=\"0;spinner_z0Or.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"0;3\" fill=\"freeze\"/>\n <animate begin=\"spinner_OLMs.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"4;12\" fill=\"freeze\"/>\n <animate begin=\"spinner_UHR2.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"12;20\" fill=\"freeze\"/>\n <animate id=\"spinner_lo66\" begin=\"spinner_Aguh.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"3;0\" fill=\"freeze\"/>\n <animate id=\"spinner_z0Or\" begin=\"spinner_lo66.end\" attributeName=\"cx\" dur=\"0.001s\" values=\"20;4\" fill=\"freeze\"/>\n </circle>\n <circle cx=\"4\" cy=\"12\" r=\"3\">\n <animate begin=\"0;spinner_z0Or.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"4;12\" fill=\"freeze\"/>\n <animate begin=\"spinner_OLMs.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"12;20\" fill=\"freeze\"/>\n <animate id=\"spinner_JsnR\" begin=\"spinner_UHR2.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"3;0\" fill=\"freeze\"/>\n <animate id=\"spinner_Aguh\" begin=\"spinner_JsnR.end\" attributeName=\"cx\" dur=\"0.001s\" values=\"20;4\" fill=\"freeze\"/>\n <animate begin=\"spinner_Aguh.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"0;3\" fill=\"freeze\"/>\n </circle>\n <circle cx=\"12\" cy=\"12\" r=\"3\">\n <animate begin=\"0;spinner_z0Or.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"12;20\" fill=\"freeze\"/>\n <animate id=\"spinner_hSjk\" begin=\"spinner_OLMs.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"3;0\" fill=\"freeze\"/>\n <animate id=\"spinner_UHR2\" begin=\"spinner_hSjk.end\" attributeName=\"cx\" dur=\"0.001s\" values=\"20;4\" fill=\"freeze\"/>\n <animate begin=\"spinner_UHR2.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"0;3\" fill=\"freeze\"/>\n <animate begin=\"spinner_Aguh.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"4;12\" fill=\"freeze\"/>\n </circle>\n <circle cx=\"20\" cy=\"12\" r=\"3\">\n <animate id=\"spinner_4v5M\" begin=\"0;spinner_z0Or.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"3;0\" fill=\"freeze\"/>\n <animate id=\"spinner_OLMs\" begin=\"spinner_4v5M.end\" attributeName=\"cx\" dur=\"0.001s\" values=\"20;4\" fill=\"freeze\"/>\n <animate begin=\"spinner_OLMs.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"0;3\" fill=\"freeze\"/>\n <animate begin=\"spinner_UHR2.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"4;12\" fill=\"freeze\"/>\n <animate begin=\"spinner_Aguh.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"12;20\" fill=\"freeze\"/>\n </circle>\n </svg>\n \n\n <div *ngIf=\"message\" class=\"text-sm text-text-primary text-center\">\n {{ message }}\n </div>\n </div>\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { ErrorMessages, FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-radio-toggle, [fx-ui-radio-toggle]',\n standalone: false,\n templateUrl: './radio-button-toggle.component.html',\n styleUrl: './radio-button-toggle.component.scss',\n})\nexport class RadioButtonToggleComponent extends FxComponent<any> implements AfterViewInit {\n @Input() label?: string;\n @Input() required?: boolean = false;\n @Input() options: { label: string; value: any; icon?: any }[] = [];\n @Input() disabled: boolean = false;\n @Input() override errorMessages: ErrorMessages = {};\n @Input() class?: any\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectValue(value: any): void {\n if (this.disabled) return;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n}\n","<div class=\"flex flex-col text-left mb-4 w-full\" [class]=\"class\">\n @if(label){<label class=\"txt-field-label\">\n {{ label }}\n @if(required) {<span class=\"txt-required\">*</span>} </label\n >}\n\n <div class=\"inline-flex w-full rounded-lg overflow-hidden\" role=\"radiogroup\">\n @for(opt of options; track opt){<button\n type=\"button\"\n role=\"radio\"\n [attr.aria-checked]=\"value === opt.value\"\n (click)=\"onSelectValue(opt.value)\"\n [disabled]=\"disabled\"\n [class.text-gray-900]=\"value !== opt.value\"\n class=\"flex-1 bg-bg-primary flex items-center pl-normal gap-normal h-10 rounded-md hover:bg-bg-hover transition-all duration-150 disabled:opacity-60 disabled:cursor-not-allowed\"\n >\n <span\n [ngClass]=\"{\n 'radio-checked': value === opt.value,\n 'radio-uncheck': value !== opt.value\n }\"\n class=\"radio-container\"\n >\n @if(value === opt.value) {<span class=\"radio-dot\"></span>}\n </span>\n\n <span class=\"txt-field-label mb-0\">{{ opt.label }}</span></button\n >}\n </div>\n\n @if(invalid){\n <div class=\"txt-invalid\">{{ getErrorMessage(label) }}</div>\n }\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, Input, Optional, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ErrorMessages, FxComponent } from '../fx-component.component';\n\nexport interface IRadioButton {\n label: string;\n value: any;\n description?: string;\n}\n\n@Component({\n selector: 'fx-ui-radio',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.css'],\n standalone: false\n})\nexport class RadioButtonComponent extends FxComponent<IRadioButton> implements AfterViewInit {\n @Input() label?: string;\n @Input() required?: boolean = false;\n @Input() options: { label: string; value: any; icon?: any }[] = [];\n @Input() disabled: boolean = false;\n @Input() override errorMessages: ErrorMessages = {};\n @Input() class?: any\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectValue(value: any): void {\n if (this.disabled) return;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n}\n","<div class=\"w-full rounded-lg overflow-hidden\" [class]=\"class\" role=\"radiogroup\">\n @if (label){\n <label class=\"txt-field-label\">\n {{ label }}\n @if(required){<span class=\"txt-required\">*</span>} </label\n >}\n\n <button\n *ngFor=\"let opt of options\"\n type=\"button\"\n role=\"radio\"\n [attr.aria-checked]=\"value === opt.value\"\n (click)=\"onSelectValue(opt.value)\"\n [disabled]=\"disabled\"\n [class.text-gray-900]=\"value !== opt.value\"\n class=\"flex-1 px-normal w-full flex items-center gap-normal h-10 rounded-md hover:bg-bg-hover transition-all duration-150 disabled:opacity-60 disabled:cursor-not-allowed\"\n >\n <span\n [ngClass]=\"{\n 'radio-checked': value === opt.value,\n 'radio-uncheck': value !== opt.value\n }\"\n class=\"radio-container\"\n >\n @if(value === opt.value) {<span class=\"radio-dot\"></span>}\n </span>\n\n <span class=\"txt-default mb-0\">{{ opt.label }}</span>\n </button>\n @if (invalid){\n <div class=\"txt-invalid\">\n {{ getErrorMessage(label) }}\n </div>\n }\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n Output,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\nimport { QuillStyleLoaderService } from '../../../core/services/quill-style-loader.service';\nimport { isPlatformBrowser } from '@angular/common';\nimport { FxUtils } from '../../../core/utils';\n\n@Component({\n selector: 'fx-ui-rich-text-area',\n standalone: false,\n templateUrl: './rich-text-area.component.html',\n styleUrl: './rich-text-area.component.scss',\n})\nexport class RichTextAreaComponent extends FxComponent<any> implements AfterViewInit {\n @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef<HTMLDivElement>;\n\n @Input() placeholder = 'Write something...';\n\n @Input() toolbarOptions: any = [\n // ['undo', 'redo'],\n [{ 'header': [1, 2, 3, 4, 5, 6, false] }],\n [{ 'font': [] }],\n [{ 'size': ['small', false, 'large', 'huge'] }],\n [{ 'align': [] }],\n [{ 'color': [] }, { 'background': [] }],\n ['bold', 'italic', 'underline', 'strike'],\n ['blockquote', 'code-block'],\n [{ 'list': 'ordered' }, { 'list': 'bullet' }],\n [{ 'indent': '-1' }, { 'indent': '+1' }],\n ['link', 'image'],\n ['clean']\n ];\n\n @Output() contentChange = new EventEmitter<string>();\n\n private quillInstance: any;\n\n constructor(\n ngControl: NgControl,\n private cdr: ChangeDetectorRef,\n private styleLoader: QuillStyleLoaderService,\n @Inject(PLATFORM_ID) private platformId: Object\n ) {\n super(ngControl);\n }\n\n async ngAfterViewInit(): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) return;\n\n await this.styleLoader.load();\n\n const QuillModule = await import('quill');\n const Quill = (QuillModule as any).default || QuillModule;\n\n const icons = Quill.import('ui/icons');\n // icons['undo'] = `<svg viewBox=\"0 0 18 18\"><path d=\"M6.4 5.2H3L6.8 1l3.8 4.2H7.9C10.2 5.4 12 7.4 12 9.8c0 2.7-2.2 4.9-4.9 4.9S2.2 12.5 2.2 9.8H0c0 3.8 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9S10.7 3 7 3v2.2z\"></path></svg>`;\n // icons['redo'] = `<svg viewBox=\"0 0 18 18\"><path d=\"M11.6 5.2H15L11.2 1 7.4 5.2h2.7C7.8 5.4 6 7.4 6 9.8c0 2.7 2.2 4.9 4.9 4.9s4.9-2.2 4.9-4.9H18c0 3.8-3.1 6.9-6.9 6.9S4.2 13.6 4.2 9.8 7.3 3 11 3v2.2z\"></path></svg>`;\n\n this.quillInstance = new Quill(this.editorContainer.nativeElement, {\n theme: 'snow',\n placeholder: this.placeholder,\n modules: {\n history: true,\n toolbar: this.toolbarOptions,\n }\n });\n this.quillInstance.root.style.color = FxUtils.convertColorFromVariable('--text-primary')\n\n const toolbar = this.quillInstance.getModule('toolbar');\n toolbar.addHandler('undo', () => this.quillInstance.history.undo());\n toolbar.addHandler('redo', () => this.quillInstance.history.redo());\n\n if (this.value) {\n this.quillInstance.root.innerHTML = this.value;\n }\n\n this.quillInstance.on('text-change', () => {\n const html = this.quillInstance.root.innerHTML || '';\n this.value = html;\n this.onChange(html);\n this.contentChange.emit(html);\n });\n }\n\n override writeValue(value: any): void {\n this.value = value || '';\n if (this.quillInstance) {\n this.quillInstance.root.innerHTML = this.value;\n }\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (this.quillInstance) {\n this.quillInstance.enable(!isDisabled);\n }\n }\n}\n","<div class=\"w-full rounded-2xl shadow-sm p-1 bg-bg-primary\">\n <div #editorContainer class=\"min-h-[200px] text-base\"></div>\n</div>","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, Optional, Output, Self } from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-search-bar',\n standalone: false,\n templateUrl: './search-bar.component.html',\n styleUrl: './search-bar.component.scss'\n})\nexport class SearchBarComponent extends FxComponent<string> implements AfterViewInit {\n @Input() placeholder: string = 'Search...';\n @Input() disabled: boolean = false\n @Output() search = new EventEmitter<string>();\n @Output() valueChange = new EventEmitter<string>();\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n \n onValueChange(value: string) {\n this.value = value;\n this.setValue(value);\n this.valueChange.emit(value);\n }\n\n onEnterKey() {\n this.onEnter(this.value);\n this.search.emit(this.value.trim());\n }\n\n clear() {\n this.value = '';\n this.setValue(this.value);\n this.valueChange.emit('');\n this.search.emit('');\n }\n}\n","<div class=\"relative\">\n <fx-ui-hero-icon icon=\"magnifying-glass\" [size]=\"18\" class=\"absolute left-1 top-[3px] text-text-primary\"></fx-ui-hero-icon>\n <input\n type=\"text\"\n class=\"input-default px-9\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n (input)=\"onValueChange($any($event.target).value)\"\n (keydown.enter)=\"onEnterKey()\"\n />\n\n <button\n *ngIf=\"value && !disabled\"\n type=\"button\"\n class=\"absolute inset-y-0 right-2 flex items-center text-text-primary hover:text-text-secondary\"\n (click)=\"clear()\"\n aria-label=\"Clear\"\n >\n <i class=\"material-symbols-outlined text-lg select-none\">close</i>\n </button>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport { FxComponent } from '../fx-component.component';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\n\n@Component({\n selector: 'fx-ui-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n standalone: false,\n})\nexport class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit {\n @Input() label = '';\n @Input() placeholder = '';\n @Input() options: { label: string; value: string }[] = [];\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() override errorMessages: { [key: string]: string } = {};\n @Input() required: boolean = false;\n @Input() class?: any;\n @Input() enableSearch: boolean = false;\n @Input() searchFn?: (query: string) => Promise<{ label: string; value: string }[]>;\n\n searchTerm: string = '';\n filteredOptions: { label: string; value: string }[] = [];\n private search$ = new Subject<string>();\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngOnInit(): void {\n this.filteredOptions = this.options;\n\n this.search$\n .pipe(debounceTime(300), distinctUntilChanged())\n .subscribe((term) => this.performSearch(term));\n }\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n onOpened(open: boolean) {\n if (open) {\n this.filteredOptions = this.options;\n if (this.enableSearch) this.searchTerm = '';\n }\n }\n\n onSearchChange(value: string) {\n if (!this.enableSearch) return;\n this.search$.next(value);\n }\n\n async performSearch(term: string) {\n if (!this.enableSearch) return;\n \n if (!this.searchFn) {\n this.filteredOptions = this.options.filter((o) =>\n o.label?.toLowerCase().includes(term.toLowerCase())\n );\n this.ref.detectChanges();\n return;\n }\n \n const result = await this.searchFn(term);\n this.filteredOptions = result;\n console.log(this.filteredOptions)\n \n Promise.resolve().then(() => this.ref.detectChanges());\n }\n\n onSelectionChange(value: any): void {\n this.value = value;\n this.onChange(this.value);\n }\n\n isSelected(value: string): boolean {\n if (Array.isArray(this.value)) {\n return this.value.includes(value);\n }\n return this.value === value;\n }\n}\n","<div class=\"mb-4 text-left w-full\" [class]=\"class\">\n <label *ngIf=\"label\" class=\"block txt-field-label\">\n {{ label }}\n @if(required) {<span class=\"txt-required\">*</span>}\n </label>\n\n <mat-form-field class=\"fx-select-field w-full shadow-sm\" appearance=\"fill\">\n <mat-select\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [value]=\"value\"\n (selectionChange)=\"onSelectionChange($event.value)\"\n (openedChange)=\"onOpened($event)\"\n (blur)=\"onTouched()\"\n >\n @if(enableSearch){\n <div class=\"px-semi w-full\">\n <input\n type=\"text\"\n [placeholder]=\"'Search'\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearchChange($event)\"\n (click)=\"$event.stopPropagation()\"\n class=\"text-text-primary placeholder:text-text-placeholder w-full bg-bg-primary border-b px-semi py-normal border-border-default focus:outline-none focus:border-border-interactive text-sm text-text-primary tracking-normal ring-0 transition-colors duration-500 ease-in-out\"\n />\n </div>\n }\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option.value\">\n <span class=\"txt-default\">{{ option.label }}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"invalid\" class=\"txt-invalid text-left\">\n {{ getErrorMessage(label) }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-skeleton-table-loading',\n standalone: false,\n templateUrl: './skeleton-table-loading.component.html',\n styleUrl: './skeleton-table-loading.component.scss'\n})\nexport class SkeletonTableLoadingComponent {\n @Input() columns: number = 5;\n @Input() rows: number = 5; \n}\n","<div class=\"w-full animate-pulse space-y-normal\">\n <div\n class=\"grid gap-small\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + columns + ', minmax(0, 1fr))' }\"\n >\n @for(col of [].constructor(columns); track col) {\n <div class=\"h-6 bg-bg-hover rounded\"></div>\n }\n </div>\n\n @for(row of [].constructor(rows); track row) {\n <div\n class=\"grid gap-small\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + columns + ', minmax(0, 1fr))' }\"\n >\n @for(col of [].constructor(columns); track col) {\n <div class=\"h-7 bg-bg-hover rounded\"></div>\n }\n </div>\n }\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\nimport { clamp } from 'lodash';\n\n@Component({\n selector: 'fx-ui-slider',\n standalone: false,\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss'\n})\nexport class SliderComponent extends FxComponent<any> implements AfterViewInit {\n @ViewChild('track', { static: true }) trackRef!: ElementRef<HTMLElement>;\n @ViewChild('thumb', { static: true }) thumbRef!: ElementRef<HTMLElement>;\n\n @Input() min = 0;\n @Input() max = 100;\n @Input() step = 1;\n @Input() vertical = false;\n @Input() disabled: boolean = false;\n @Output() valueChange = new EventEmitter<number>();\n dragging = false;\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n \n ngAfterViewInit(): void {\n this._normalizeValue(this.value);\n this.ref.markForCheck();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.ref.markForCheck();\n }\n\n override writeValue(value: number): void {\n this.value = this._normalizeValue(value ?? this.min);\n this.ref.markForCheck();\n }\n\n private _normalizeValue(v: number): number {\n if (!Number.isFinite(v)) v = this.min;\n const clamped = clamp(v, this.min, this.max);\n const stepped =\n Math.round((clamped - this.min) / this.step) * this.step + this.min;\n const precision = Math.max(0, this._decimalPlaces(this.step));\n return parseFloat(stepped.toFixed(precision));\n }\n\n private _decimalPlaces(n: number) {\n const s = String(n);\n if (s.indexOf('.') === -1) return 0;\n return s.length - s.indexOf('.') - 1;\n }\n\n /** Pointer events */\n onPointerDown(event: PointerEvent) {\n if (this.disabled) return;\n (event.target as Element).setPointerCapture(event.pointerId);\n this.dragging = true;\n this._setFromPointer(event);\n }\n\n onPointerMove(event: PointerEvent) {\n if (!this.dragging || this.disabled) return;\n this._setFromPointer(event);\n }\n\n onPointerUp(event: PointerEvent) {\n if (this.disabled) return;\n try {\n (event.target as Element).releasePointerCapture(event.pointerId);\n } catch {}\n this.dragging = false;\n this.onTouched();\n }\n\n private _setFromPointer(event: PointerEvent) {\n const newVal = this._coordToValue(event.clientX, event.clientY);\n this._applyValue(newVal);\n }\n\n private _coordToValue(clientX: number, clientY: number) {\n const rect = this.trackRef.nativeElement.getBoundingClientRect();\n let ratio = this.vertical\n ? 1 - (clientY - rect.top) / rect.height\n : (clientX - rect.left) / rect.width;\n ratio = clamp(ratio, 0, 1);\n const raw = this.min + ratio * (this.max - this.min);\n return this._normalizeValue(raw);\n }\n\n onTrackClick(event: MouseEvent) {\n if (this.disabled) return;\n const newVal = this._coordToValue(event.clientX, event.clientY);\n this._applyValue(newVal);\n this.onTouched();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (this.disabled) return;\n const key = ev.key;\n const largeStep = (this.max - this.min) / 10;\n let delta = 0;\n if (key === 'ArrowLeft' || key === 'ArrowDown') delta = -this.step;\n else if (key === 'ArrowRight' || key === 'ArrowUp') delta = this.step;\n else if (key === 'PageDown') delta = -largeStep;\n else if (key === 'PageUp') delta = largeStep;\n else if (key === 'Home') return this._applyValue(this.min);\n else if (key === 'End') return this._applyValue(this.max);\n\n if (delta !== 0) {\n this._applyValue(this.value + delta);\n ev.preventDefault();\n }\n }\n\n private _applyValue(newVal: number) {\n const v = this._normalizeValue(newVal);\n if (v !== this.value) {\n this.value = v;\n this.ref.markForCheck();\n this.valueChange.emit(v);\n this.onChange(v);\n }\n }\n\n get percent(): number {\n if (this.max === this.min) return 0;\n return ((this.value - this.min) / (this.max - this.min)) * 100;\n }\n\n thumbStyle() {\n return this.vertical\n ? { bottom: `${this.percent}%`, transform: 'translateY(50%)' }\n : { left: `${this.percent}%`, transform: 'translateX(-50%)' };\n }\n\n}\n","<div\n class=\"w-full select-none\"\n [class.cursor-not-allowed]=\"disabled\"\n [class.opacity-60]=\"disabled\"\n role=\"group\"\n>\n <div\n #track\n class=\"relative touch-none py-4\"\n (click)=\"onTrackClick($event)\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-orientation]=\"vertical ? 'vertical' : 'horizontal'\"\n >\n <div\n class=\"relative flex items-center\"\n [ngClass]=\"{ 'flex-col h-48': vertical }\"\n >\n <div\n class=\"relative flex-1 rounded-full bg-gray-600 h-2\"\n [ngClass]=\"{ 'w-1 rotate-0 h-full w-auto bg-border-gray-700': vertical }\"\n >\n <div\n class=\"absolute left-0 top-0 h-full rounded-full bg-primary\"\n *ngIf=\"!vertical\"\n [style.width.%]=\"percent\"\n ></div>\n\n <div\n class=\"absolute bottom-0 left-0 w-full rounded-full bg-primary\"\n *ngIf=\"vertical\"\n [style.height.%]=\"percent\"\n style=\"transform-origin: bottom;\"\n ></div>\n\n <button\n #thumb\n type=\"button\"\n class=\"absolute -mt-1 -ml-1.5 w-4 h-4 rounded-full shadow focus:ring-primary bg-primary border-2 border-text-primary\"\n [ngStyle]=\"thumbStyle()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-disabled]=\"disabled\"\n tabindex=\"0\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n [disabled]=\"disabled\"\n ></button>\n </div>\n </div>\n </div>\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-switch',\n standalone: false,\n templateUrl: './switch.component.html',\n styleUrl: './switch.component.scss'\n})\nexport class SwitchComponent extends FxComponent<any> implements AfterViewInit {\n @Input() disabled: boolean = false;\n @Output() onSwitch: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n constructor(ngControl: NgControl, private cdr: ChangeDetectorRef) {\n super(ngControl);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle() {\n if (this.disabled) return;\n this.value = !this.value;\n this.onSwitch.emit(this.value);\n this.onChange(this.value);\n this.onTouched();\n }\n}\n","<div\n class=\"relative flex items-center w-10 h-5 rounded-full transition-colors duration-300 cursor-pointer\"\n [ngClass]=\"{\n 'bg-success': value && !disabled,\n 'bg-button-default': !value && !disabled,\n 'bg-bg-hover': disabled\n }\"\n (click)=\"toggle()\"\n>\n @if(value) {\n <i style=\"font-size: 20px;\" class=\"material-symbols-outlined absolute left-0.5 top-0 text-text-inverse\">check</i>\n \n }\n @if(!value) {\n <i style=\"font-size: 20px;\" class=\"material-symbols-outlined absolute right-0.5 top-0 text-text-inverse\">close</i>\n }\n <div\n class=\"absolute top-0.5 left-0.5 w-4 h-4 bg-text-inverse rounded-full shadow-md transform transition-transform duration-300\"\n [ngClass]=\"{ 'translate-x-5': value }\"\n ></div>\n</div>\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-tab',\n standalone: false,\n templateUrl: './tab.component.html',\n})\nexport class TabComponent {\n @Input() label!: string;\n @Input() icon?: string;\n @ViewChild(TemplateRef, { static: true }) content!: TemplateRef<any>;\n}\n","<ng-template><ng-content></ng-content></ng-template>\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n QueryList,\n Renderer2,\n ViewChild,\n HostListener\n} from '@angular/core';\nimport { TabComponent } from '../tab-component/tab.component';\n\n@Component({\n selector: 'fx-ui-tab-group',\n standalone: false,\n templateUrl: './tab-group.component.html',\n styleUrl: './tab-group.component.scss',\n})\nexport class TabGroupComponent implements AfterContentInit {\n @ContentChildren(TabComponent) tabs!: QueryList<TabComponent>;\n @Input() activeIndex = 0;\n\n @ViewChild('tabList', { static: true }) tabListRef!: ElementRef<HTMLElement>;\n @ViewChild('underline', { static: true }) underlineRef!: ElementRef<HTMLElement>;\n\n canScrollLeft = false;\n canScrollRight = false;\n\n private animateDelay = 50;\n private scrollAmount = 160;\n private sidePadding = 32; // same as button width space\n\n constructor(private renderer: Renderer2) {}\n\n ngAfterContentInit() {\n setTimeout(() => {\n this.updateScrollButtons();\n this.updateUnderlinePosition();\n this.scrollToActiveTab(false);\n }, 0);\n }\n\n selectTab(index: number) {\n this.activeIndex = index;\n this.scrollToActiveTab(true);\n }\n\n private updateUnderlinePosition() {\n const tabListEl = this.tabListRef.nativeElement;\n const underlineEl = this.underlineRef.nativeElement;\n const tabButtons = tabListEl.querySelectorAll('.tab-btn');\n const activeTab = tabButtons[this.activeIndex] as HTMLElement | undefined;\n \n if (!activeTab || !underlineEl) return;\n \n const tabRect = activeTab.getBoundingClientRect();\n const containerRect = tabListEl.getBoundingClientRect();\n \n // Calculate X position relative to scrollable area (not viewport)\n const translateX = tabRect.left - containerRect.left + tabListEl.scrollLeft - this.sidePadding;\n \n this.renderer.setStyle(underlineEl, 'width', `${activeTab.offsetWidth}px`);\n this.renderer.setStyle(underlineEl, 'transform', `translateX(${translateX}px)`);\n }\n \n\n private scrollToActiveTab(updateUnderlineAfter = true) {\n const tabListEl = this.tabListRef.nativeElement;\n const tabButtons = tabListEl.querySelectorAll('.tab-btn');\n const activeTab = tabButtons[this.activeIndex] as HTMLElement | undefined;\n\n if (!activeTab) return;\n\n const elLeft = activeTab.offsetLeft;\n const elRight = elLeft + activeTab.offsetWidth;\n const containerLeft = tabListEl.scrollLeft;\n const containerRight = containerLeft + tabListEl.clientWidth;\n\n if (elLeft < containerLeft) {\n tabListEl.scrollTo({ left: Math.max(elLeft - 32, 0), behavior: 'smooth' });\n } else if (elRight > containerRight) {\n const target = elRight - tabListEl.clientWidth + 32;\n tabListEl.scrollTo({ left: target, behavior: 'smooth' });\n }\n\n setTimeout(() => {\n this.updateScrollButtons();\n this.updateUnderlinePosition();\n }, updateUnderlineAfter ? this.animateDelay : 0);\n }\n\n scroll(direction: 'left' | 'right') {\n const tabListEl = this.tabListRef.nativeElement;\n const delta = direction === 'left' ? -this.scrollAmount : this.scrollAmount;\n tabListEl.scrollBy({ left: delta, behavior: 'smooth' });\n\n setTimeout(() => {\n this.updateScrollButtons();\n this.updateUnderlinePosition();\n }, this.animateDelay);\n }\n\n onScroll() {\n this.updateScrollButtons();\n this.updateUnderlinePosition();\n }\n\n private updateScrollButtons() {\n const el = this.tabListRef.nativeElement;\n const scrollLeft = el.scrollLeft;\n const maxScrollLeft = el.scrollWidth - el.clientWidth;\n \n this.canScrollLeft = scrollLeft > 2;\n \n this.canScrollRight = scrollLeft < maxScrollLeft - 2;\n }\n\n @HostListener('window:resize')\n onResize() {\n this.updateUnderlinePosition();\n }\n}\n","<div class=\"relative\">\n <!-- Left scroll button -->\n <button\n class=\"left-scroll-button\"\n type=\"button\"\n (click)=\"scroll('left')\"\n [style.opacity]=\"canScrollLeft ? 1 : 0\"\n [style.pointerEvents]=\"canScrollLeft ? 'auto' : 'none'\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-5 w-5 text-text-primary\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n\n <div\n #tabList\n class=\"relative flex overflow-x-auto no-scrollbar scroll-smooth\"\n (scroll)=\"onScroll()\"\n >\n <button\n *ngFor=\"let tab of tabs.toArray(); let i = index\"\n (click)=\"selectTab(i)\"\n class=\"tab-btn tab-bar-btn\"\n >\n <div class=\"flex flex-row items-center justify-center\">\n @if(tab.icon) {<fx-ui-hero-icon\n [icon]=\"tab.icon\"\n [size]=\"20\"\n class=\"flex mr-[2px]\"\n [ngClass]=\"{\n 'text-primary mb-small': i === activeIndex,\n 'text-text-placeholder': i !== activeIndex\n }\"\n ></fx-ui-hero-icon\n >}\n <div [ngClass]=\"i === activeIndex ? 'txt-field-label text-primary' : 'txt-placeholder'\">{{ tab.label }}</div>\n </div>\n </button>\n\n <span #underline class=\"underline\" style=\"width: 0; transform: translateX(0)\"></span>\n </div>\n\n <button\n class=\"right-scroll-button\"\n type=\"button\"\n (click)=\"scroll('right')\"\n [style.opacity]=\"canScrollRight ? 1 : 0\"\n [style.pointerEvents]=\"canScrollRight ? 'auto' : 'none'\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-5 w-5 text-text-primary\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n</div>\n\n<!-- Tab content -->\n<div class=\"transition-all duration-300 ease-in-out mt-4\">\n <ng-container *ngFor=\"let tab of tabs.toArray(); let i = index\">\n <div *ngIf=\"i === activeIndex\" class=\"animate-fadeIn\">\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </ng-container>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-table-cell',\n standalone: false,\n templateUrl: './table-cell.component.html',\n styleUrl: './table-cell.component.scss'\n})\nexport class TableCell {\n @Input({ required: true }) loading!: boolean;\n @Input() skeletonClass = 'h-4 w-full';\n}\n","@if (!loading) {\n <div animate.enter=\"fade-in-animation\" class=\"inline-block my-normal\">\n <ng-content />\n </div>\n} @else {\n <div animate.enter=\"fade-in-animation\" class=\"skeleton-load my-semi\" [class]=\"skeletonClass\"></div>\n}\n","import { Component, Input } from '@angular/core';\n\nexport type TagType =\n | 'success'\n | 'warning'\n | 'critical'\n | 'information'\n | 'discovery'\n | 'default'\n | 'danger';\n\n@Component({\n selector: 'fx-ui-tag',\n standalone: false,\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.scss',\n})\nexport class TagComponent {\n @Input() label: string;\n @Input() type: TagType = 'default';\n @Input() rounded: boolean = true;\n @Input() icon?: any;\n @Input() solid: boolean = false;\n}\n","<div\n [class]=\"`flex flex-row gap-small ${rounded ? 'tag-round' : 'tag-square'} tag-${type}${solid ? '-solid' : ''}`\"\n>\n @if(icon){\n <fx-ui-hero-icon\n [class]=\"`flex txt-tag-${type} ${solid ? 'text-white': ''}`\"\n [icon]=\"icon\"\n [size]=\"18\"\n ></fx-ui-hero-icon>\n }\n\n <div [class]=\"`txt-tag-${type} ${solid ? 'text-white': ''}`\">\n {{ label }}\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\n\nexport interface TreeNode {\n id: string;\n label: string;\n status?: string;\n children?: TreeNode[];\n}\n\n@Component({\n selector: 'fx-ui-tree-diagram',\n standalone: false,\n templateUrl: './tree-diagram.component.html',\n styleUrl: './tree-diagram.component.scss',\n})\nexport class TreeDiagram implements AfterViewInit, OnDestroy {\n @Input() data!: any;\n\n @ViewChild('container') container!: ElementRef;\n @ViewChild('root') root!: ElementRef;\n @ViewChildren('child') children!: QueryList<ElementRef>;\n\n lines: any[] = [];\n svgWidth = 0;\n svgHeight = 0;\n\n private resizeObserver!: ResizeObserver;\n private rafId?: number;\n\n constructor(private zone: NgZone, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect;\n\n if (rect.width === 0 || rect.height === 0) return;\n\n this.scheduleDraw();\n });\n\n this.resizeObserver.observe(this.container.nativeElement);\n\n setTimeout(() => this.scheduleDraw(), 50);\n setTimeout(() => this.scheduleDraw(), 150);\n });\n\n this.children.changes.subscribe(() => this.scheduleDraw());\n }\n\n ngOnDestroy() {\n this.resizeObserver?.disconnect();\n if (this.rafId) cancelAnimationFrame(this.rafId);\n }\n\n private scheduleDraw() {\n if (this.rafId) cancelAnimationFrame(this.rafId);\n\n this.rafId = requestAnimationFrame(() => {\n this.drawLines();\n });\n }\n\n private drawLines() {\n if (!this.root || !this.children.length) return;\n \n const containerEl = this.container.nativeElement;\n const rect = containerEl.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) return;\n \n const rootRect = this.root.nativeElement.getBoundingClientRect();\n \n const rootX = rootRect.left + rootRect.width / 2 - rect.left;\n const rootBottomY = rootRect.bottom - rect.top;\n \n const childRects = this.children.map(c =>\n c.nativeElement.getBoundingClientRect()\n );\n \n const childCenters = childRects.map(r => ({\n x: r.left + r.width / 2 - rect.left,\n y: r.top - rect.top\n }));\n \n const horizontalY = childCenters[0].y - 24;\n \n this.zone.run(() => {\n this.svgWidth = rect.width;\n this.svgHeight = rect.height;\n \n this.lines = [\n {\n x1: rootX,\n y1: rootBottomY,\n x2: rootX,\n y2: horizontalY\n },\n {\n x1: childCenters[0].x,\n y1: horizontalY,\n x2: childCenters[childCenters.length - 1].x,\n y2: horizontalY\n },\n ...childCenters.map(c => ({\n x1: c.x,\n y1: horizontalY,\n x2: c.x,\n y2: c.y\n }))\n ];\n });\n\n this.cdr.detectChanges();\n } \n}\n","<div class=\"relative p-8\" #container>\n\n <!-- ROOT -->\n <div\n #root\n class=\"mx-auto w-fit bg-blue-600 text-white px-7 py-3 rounded-md font-semibold text-center\"\n >\n {{ data.label }}\n </div>\n\n <!-- CHILDREN -->\n <div class=\"mt-16 flex justify-center gap-16\">\n <div\n *ngFor=\"let child of data.children\"\n #child\n class=\"w-48 bg-rose-600 text-white px-4 py-4 rounded-lg text-center\"\n >\n <div class=\"font-semibold text-lg\">{{ child.label }}</div>\n <div class=\"mt-1 text-sm opacity-90\">{{ child.status }}</div>\n </div>\n </div>\n\n <!-- SVG CONNECTORS -->\n <svg\n class=\"absolute inset-0 pointer-events-none\"\n [attr.width]=\"svgWidth\"\n [attr.height]=\"svgHeight\"\n >\n <line\n *ngFor=\"let line of lines\"\n [attr.x1]=\"line.x1\"\n [attr.y1]=\"line.y1\"\n [attr.x2]=\"line.x2\"\n [attr.y2]=\"line.y2\"\n stroke=\"#1f2937\"\n stroke-width=\"2\"\n />\n </svg>\n\n</div>\n","import { ButtonComponent } from './button/button.component';\nimport { ChartComponent } from './chart/chart.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { CircleProgressBar } from './circle-progress-bar/circle-progress-bar.component';\nimport { DatetimePicker } from './datetime-picker/datetime-picker.component';\nimport { DndUploadComponent } from './dnd-upload/dnd-upload.component';\nimport { FlowConnection } from './flow-connection/flow-connection.component';\nimport { HeroIconComponent } from './hero-icon/hero-icon.component';\nimport { InputComponent } from './input/input.component';\nimport { LoadingPanel } from './loading-panel/loading-panel.component';\nimport { RadioButtonToggleComponent } from './radio-button-toggle/radio-button-toggle.component';\nimport { RadioButtonComponent } from './radio-button/radio-button.component';\nimport { RichTextAreaComponent } from './rich-text-area/rich-text-area.component';\nimport { SearchBarComponent } from './search-bar/search-bar.component';\nimport { SelectComponent } from './select/select.component';\nimport { SkeletonTableLoadingComponent } from './skeleton-table-loading/skeleton-table-loading.component';\nimport { SliderComponent } from './slider/slider.component';\nimport { SwitchComponent } from './switch/switch.component';\nimport { TabComponent } from './tab-component/tab.component';\nimport { TabGroupComponent } from './tab-group/tab-group.component';\nimport { TableCell } from './table-cell/table-cell.component';\nimport { TagComponent } from './tag/tag.component';\nimport { ToastContainerComponent } from './toast-container/toast-container.component';\nimport { ToastComponent } from './toast/toast.component';\nimport { TreeDiagram } from './tree-diagram/tree-diagram.component';\n\nexport { ButtonComponent } from './button/button.component';\nexport { ChartComponent } from './chart/chart.component';\nexport { CheckboxComponent } from './checkbox/checkbox.component';\nexport { DatetimePicker } from './datetime-picker/datetime-picker.component';\nexport { DndUploadComponent } from './dnd-upload/dnd-upload.component';\nexport { HeroIconComponent } from './hero-icon/hero-icon.component';\nexport { InputComponent } from './input/input.component';\nexport { LoadingPanel } from './loading-panel/loading-panel.component';\nexport { RadioButtonToggleComponent } from './radio-button-toggle/radio-button-toggle.component';\nexport { RadioButtonComponent } from './radio-button/radio-button.component';\nexport { SearchBarComponent } from './search-bar/search-bar.component';\nexport { SelectComponent } from './select/select.component';\nexport { SliderComponent } from './slider/slider.component';\nexport { SwitchComponent } from './switch/switch.component';\nexport { TabComponent } from './tab-component/tab.component';\nexport { TabGroupComponent } from './tab-group/tab-group.component';\nexport { TagComponent } from './tag/tag.component';\nexport { ToastContainerComponent } from './toast-container/toast-container.component';\nexport { ToastComponent } from './toast/toast.component';\nexport { TableCell } from './table-cell/table-cell.component';\n\nexport const FX_COMPONENTS = [\n InputComponent,\n SelectComponent,\n RadioButtonComponent,\n CheckboxComponent,\n DndUploadComponent,\n ButtonComponent,\n RadioButtonToggleComponent,\n DatetimePicker,\n LoadingPanel,\n SearchBarComponent,\n TabGroupComponent,\n TabComponent,\n HeroIconComponent,\n ToastComponent,\n ToastContainerComponent,\n TagComponent,\n ChartComponent,\n SliderComponent,\n SwitchComponent,\n RichTextAreaComponent,\n SkeletonTableLoadingComponent,\n FlowConnection,\n CircleProgressBar,\n TreeDiagram,\n TableCell,\n];\n","import { Component, Inject, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport _ from 'lodash';\n\n@Component({\n selector: 'fx-ui-confirmation-dialog',\n standalone: false,\n templateUrl: './confirmation.component.html',\n styleUrl: './confirmation.component.scss',\n})\nexport class ConfirmationDialogComponent {\n loading = false;\n title: string = '';\n message: string = '';\n cancelLabel: string = 'Cancel';\n confirmLabel: string = 'Submit';\n\n constructor(\n private ref: MatDialogRef<ConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public bindings: any\n ) {\n this.title = _.get(bindings, 'title');\n this.message = _.get(bindings, 'message');\n this.cancelLabel = _.get(bindings, 'cancelLabel');\n this.confirmLabel = _.get(bindings, 'confirmLabel');\n }\n\n async accept() {\n this.loading = true;\n if (_.get(this.bindings, 'callback')) {\n await this.bindings.callback();\n this.loading = false;\n }\n this.ref.close(true);\n }\n\n cancel() {\n this.ref.close(false);\n }\n}\n","<div animate.enter=\"fade-in-animation\" class=\"dialog-container\">\n <div class=\"txt-dialog-header\">{{ title }}</div>\n <mat-dialog-content>\n <div class=\"txt-default\">{{ message }}</div>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <fx-ui-button class=\"mr-1\" [label]=\"cancelLabel\" (clicked)=\"cancel()\"></fx-ui-button>\n <fx-ui-button buttonVariant=\"primary\" class=\"mr-1\" [label]=\"confirmLabel\" (clicked)=\"accept()\" [loading]=\"loading\" class=\"min-w-[100px]\"></fx-ui-button>\n </mat-dialog-actions>\n</div>\n","import { ConfirmationDialogComponent } from \"./confirmation/confirmation.component\";\n\nexport { ConfirmationDialogComponent } from \"./confirmation/confirmation.component\";\n\nexport const DIALOGS_COMPONENT = [\n ConfirmationDialogComponent\n]","import { NgModule, importProvidersFrom } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MATERIAL_MODULE } from './material.module';\nimport { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker';\nimport { FX_COMPONENTS } from './components';\nimport { DIALOGS_COMPONENT } from './dialogs';\nimport { HasPermissionDirective } from '../core/directives/has-permission.directive';\nimport { NgHeroiconsModule } from '@dimaslz/ng-heroicons';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { OWL_DATE_TIME_FORMATS } from '@danielmoncada/angular-datetime-picker';\nimport { TrimOnBlurDirective } from '../core/directives/trim.directive';\nimport { Vflow } from 'ngx-vflow';\nimport { OwlMomentDateTimeModule } from '@danielmoncada/angular-datetime-picker-moment-adapter';\n\nexport const MY_MOMENT_FORMATS = {\n parseInput: 'YYYY-MM-DD',\n fullPickerInput: 'YYYY-MM-DD HH:mm',\n datePickerInput: 'YYYY-MM-DD',\n timePickerInput: 'HH:mm',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n};\n\n@NgModule({\n declarations: [...FX_COMPONENTS, ...DIALOGS_COMPONENT],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n OwlDateTimeModule,\n OwlNativeDateTimeModule,\n OwlMomentDateTimeModule,\n HasPermissionDirective,\n TrimOnBlurDirective,\n NgHeroiconsModule,\n ...Vflow,\n NgxEchartsModule.forRoot({ echarts: () => import('echarts') }),\n ...MATERIAL_MODULE,\n ],\n exports: [\n // Component\n ...FX_COMPONENTS,\n ...DIALOGS_COMPONENT,\n // Module\n FormsModule,\n ReactiveFormsModule,\n OwlDateTimeModule,\n OwlNativeDateTimeModule,\n HasPermissionDirective,\n NgHeroiconsModule,\n ...MATERIAL_MODULE,\n ],\n providers: [\n importProvidersFrom(NgHeroiconsModule.forRoot()),\n { provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS },\n ],\n})\nexport class UiModule {}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './lib/core/components/base.component';\nexport * from './lib/core/components/base-table.component';\nexport * from './lib/core/components/base-dialog.component';\nexport * from './lib/core/services/http-wrapper.service';\nexport * from './lib/core/services/toastr.service';\nexport * from './lib/core/services/loading.service';\nexport * from './lib/core/resolvers/base-resolver.resolver';\nexport * from './lib/core/utils';\nexport * from './lib/translation/translation.module';\nexport * from './lib/translation/translation.service';\nexport * from './lib/core/directives/has-permission.directive';\nexport * from './lib/core/directives/trim.directive';\nexport * from './lib/core/guards/permissions.guard';\nexport * from './lib/core/services/permissions.service';\nexport * from './lib/core/services/storage.service';\nexport * from './lib/core/interceptors/auth.interceptor';\nexport * from './lib/core/services/auth-state.service';\nexport * from './lib/core/services/breadcrumb.service';\nexport * from './lib/core/services/quill-style-loader.service';\nexport * from './lib/core/services/theme.service';\n\nexport * from './lib/ui/ui.module';\nexport * from './lib/ui/components/button/button.component';\nexport * from './lib/ui/components/checkbox/checkbox.component';\nexport * from './lib/ui/components/datetime-picker/datetime-picker.component';\nexport * from './lib/ui/components/dnd-upload/dnd-upload.component';\nexport * from './lib/ui/components/input/input.component';\nexport * from './lib/ui/components/radio-button/radio-button.component';\nexport * from './lib/ui/components/radio-button-toggle/radio-button-toggle.component';\nexport * from './lib/ui/components/select/select.component';\nexport * from './lib/ui/components/loading-panel/loading-panel.component';\nexport * from './lib/ui/components/tab-group/tab-group.component';\nexport * from './lib/ui/components/tab-component/tab.component';\nexport * from './lib/ui/components/search-bar/search-bar.component';\nexport * from './lib/ui/components/hero-icon/hero-icon.component';\nexport * from './lib/ui/components/toast/toast.component';\nexport * from './lib/ui/components/toast-container/toast-container.component';\nexport * from './lib/ui/components/tag/tag.component';\nexport * from './lib/ui/components/chart/chart.component';\nexport * from './lib/ui/components/slider/slider.component';\nexport * from './lib/ui/dialogs/confirmation/confirmation.component';\nexport * from './lib/ui/components/switch/switch.component';\nexport * from './lib/ui/components/rich-text-area/rich-text-area.component';\nexport * from './lib/ui/components/skeleton-table-loading/skeleton-table-loading.component';\nexport * from './lib/ui/components/flow-connection/flow-connection.component';\nexport * from './lib/ui/components/circle-progress-bar/circle-progress-bar.component';\nexport * from './lib/ui/components/tree-diagram/tree-diagram.component';\nexport * from './lib/ui/components/table-cell/table-cell.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.HeroIconComponent","i1.ToastComponent","i2.FxToastrService","i3.HttpWrapper","i2","i1.PermissionService","i1.AuthStateService","i3.TrimOnBlurDirective","i3.HeroIconComponent","i3","i1.HeroIconComponent","i2.ButtonComponent","i28","i29","i36","i1.InputComponent","i2.SelectComponent","i3.RadioButtonComponent","i4.CheckboxComponent","i5.DndUploadComponent","i6.ButtonComponent","i7.RadioButtonToggleComponent","i8.DatetimePicker","i9.LoadingPanel","i10.SearchBarComponent","i11.TabGroupComponent","i12.TabComponent","i13.HeroIconComponent","i14.ToastComponent","i15.ToastContainerComponent","i16.TagComponent","i17.ChartComponent","i18.SliderComponent","i19.SwitchComponent","i20.RichTextAreaComponent","i21.SkeletonTableLoadingComponent","i22.FlowConnection","i23.CircleProgressBar","i24.TreeDiagram","i25.TableCell","i26.ConfirmationDialogComponent"],"mappings":"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"}
1
+ {"version":3,"file":"fxlt-common-ui.mjs","sources":["../../../projects/ui/src/lib/core/components/base.component.ts","../../../projects/ui/src/lib/ui/components/hero-icon/hero-icon.component.ts","../../../projects/ui/src/lib/ui/components/hero-icon/hero-icon.component.html","../../../projects/ui/src/lib/ui/components/toast/toast.component.ts","../../../projects/ui/src/lib/ui/components/toast/toast.component.html","../../../projects/ui/src/lib/ui/components/toast-container/toast-container.component.ts","../../../projects/ui/src/lib/ui/components/toast-container/toast-container.component.html","../../../projects/ui/src/lib/core/services/toastr.service.ts","../../../projects/ui/src/lib/core/utils.ts","../../../projects/ui/src/lib/core/services/http-wrapper.service.ts","../../../projects/ui/src/lib/core/components/base-table.component.ts","../../../projects/ui/src/lib/core/components/base-dialog.component.ts","../../../projects/ui/src/lib/core/services/loading.service.ts","../../../projects/ui/src/lib/core/resolvers/base-resolver.resolver.ts","../../../projects/ui/src/lib/translation/translation.module.ts","../../../projects/ui/src/lib/translation/translation.service.ts","../../../projects/ui/src/lib/core/services/permissions.service.ts","../../../projects/ui/src/lib/core/directives/has-permission.directive.ts","../../../projects/ui/src/lib/core/directives/trim.directive.ts","../../../projects/ui/src/lib/core/guards/permissions.guard.ts","../../../projects/ui/src/lib/core/services/storage.service.ts","../../../projects/ui/src/lib/core/services/auth-state.service.ts","../../../projects/ui/src/lib/core/interceptors/auth.interceptor.ts","../../../projects/ui/src/lib/core/services/breadcrumb.service.ts","../../../projects/ui/src/lib/core/services/quill-style-loader.service.ts","../../../projects/ui/src/lib/core/services/theme.service.ts","../../../projects/ui/src/lib/ui/material.module.ts","../../../projects/ui/src/lib/ui/components/button/button.component.ts","../../../projects/ui/src/lib/ui/components/button/button.component.html","../../../projects/ui/src/lib/ui/components/chart/chart.component.ts","../../../projects/ui/src/lib/ui/components/chart/chart.component.html","../../../projects/ui/src/lib/ui/components/fx-component.component.ts","../../../projects/ui/src/lib/ui/components/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/ui/components/checkbox/checkbox.component.html","../../../projects/ui/src/lib/ui/components/circle-progress-bar/circle-progress-bar.component.ts","../../../projects/ui/src/lib/ui/components/circle-progress-bar/circle-progress-bar.component.html","../../../projects/ui/src/lib/ui/components/datetime-picker/datetime-picker.component.ts","../../../projects/ui/src/lib/ui/components/datetime-picker/datetime-picker.component.html","../../../projects/ui/src/lib/ui/components/dnd-upload/dnd-upload.component.ts","../../../projects/ui/src/lib/ui/components/dnd-upload/dnd-upload.component.html","../../../projects/ui/src/lib/ui/components/flow-connection/flow-connection.component.ts","../../../projects/ui/src/lib/ui/components/flow-connection/flow-connection.component.html","../../../projects/ui/src/lib/ui/components/input/input.component.ts","../../../projects/ui/src/lib/ui/components/input/input.component.html","../../../projects/ui/src/lib/ui/components/loading-panel/loading-panel.component.ts","../../../projects/ui/src/lib/ui/components/loading-panel/loading-panel.component.html","../../../projects/ui/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.ts","../../../projects/ui/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.html","../../../projects/ui/src/lib/ui/components/radio-button/radio-button.component.ts","../../../projects/ui/src/lib/ui/components/radio-button/radio-button.component.html","../../../projects/ui/src/lib/ui/components/rich-text-area/rich-text-area.component.ts","../../../projects/ui/src/lib/ui/components/rich-text-area/rich-text-area.component.html","../../../projects/ui/src/lib/ui/components/search-bar/search-bar.component.ts","../../../projects/ui/src/lib/ui/components/search-bar/search-bar.component.html","../../../projects/ui/src/lib/ui/components/select/select.component.ts","../../../projects/ui/src/lib/ui/components/select/select.component.html","../../../projects/ui/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.ts","../../../projects/ui/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.html","../../../projects/ui/src/lib/ui/components/slider/slider.component.ts","../../../projects/ui/src/lib/ui/components/slider/slider.component.html","../../../projects/ui/src/lib/ui/components/switch/switch.component.ts","../../../projects/ui/src/lib/ui/components/switch/switch.component.html","../../../projects/ui/src/lib/ui/components/tab-component/tab.component.ts","../../../projects/ui/src/lib/ui/components/tab-component/tab.component.html","../../../projects/ui/src/lib/ui/components/tab-group/tab-group.component.ts","../../../projects/ui/src/lib/ui/components/tab-group/tab-group.component.html","../../../projects/ui/src/lib/ui/components/table-cell/table-cell.component.ts","../../../projects/ui/src/lib/ui/components/table-cell/table-cell.component.html","../../../projects/ui/src/lib/ui/components/tag/tag.component.ts","../../../projects/ui/src/lib/ui/components/tag/tag.component.html","../../../projects/ui/src/lib/ui/components/tree-diagram/tree-diagram.component.ts","../../../projects/ui/src/lib/ui/components/tree-diagram/tree-diagram.component.html","../../../projects/ui/src/lib/ui/components/index.ts","../../../projects/ui/src/lib/ui/dialogs/confirmation/confirmation.component.ts","../../../projects/ui/src/lib/ui/dialogs/confirmation/confirmation.component.html","../../../projects/ui/src/lib/ui/dialogs/index.ts","../../../projects/ui/src/lib/ui/ui.module.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/fxlt-common-ui.ts"],"sourcesContent":["import { Directive, Injector, OnDestroy } from '@angular/core';\n\n@Directive()\nexport abstract class BaseComponent implements OnDestroy {\n protected injector: Injector;\n\n constructor(injector: Injector) {\n this.injector = injector;\n }\n\n ngOnDestroy(): void {\n // clean up if needed later\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-hero-icon',\n standalone: false,\n templateUrl: './hero-icon.component.html',\n styleUrl: './hero-icon.component.scss'\n})\nexport class HeroIconComponent {\n @Input() icon: any;\n @Input() solid: boolean;\n @Input() outline: boolean;\n @Input() size: number;\n @Input() color: any;\n @Input() class?: any;\n}\n","<ng-heroicons\n [icon]=\"icon\"\n [size]=\"size\"\n [solid]=\"solid\"\n [outline]=\"outline\"\n [color]=\"color\"\n [class]=\"class\"\n/>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-toast',\n standalone: false,\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss'\n})\nexport class ToastComponent {\n @Input() toastId!: number;\n @Input() title?: string = '';\n @Input() message: string = '';\n @Input() type: 'success' | 'error' | 'info' | 'warning';\n}\n","<div\n animate.enter=\"horizontal-fade-in-animation\"\n animate.leave=\"horizontal-fade-out-animation\"\n class=\"flex border-l-[3px] items-center bg-bg-primary gap-semi min-w-[250px] max-w-[400px] px-large py-semi rounded shadow-lg transition-all duration-300 ease-in-out transform opacity-100 translate-y-0\"\n [ngClass]=\"{\n 'border-success': type === 'success',\n 'border-critical': type === 'error',\n 'border-warning': type === 'warning',\n 'border-information': type === 'info'\n }\"\n>\n <div class=\"\">\n @switch (type) { @case('success') {\n <fx-ui-hero-icon\n icon=\"check-circle\"\n [solid]=\"true\"\n [size]=\"30\"\n class=\"text-success\"\n ></fx-ui-hero-icon>\n } @case('error') {\n <fx-ui-hero-icon\n icon=\"exclamation-circle\"\n [solid]=\"true\"\n [size]=\"30\"\n class=\"text-critical\"\n ></fx-ui-hero-icon>\n } @case('warning') {\n <fx-ui-hero-icon\n icon=\"exclamation-triangle\"\n [solid]=\"true\"\n [size]=\"30\"\n class=\"text-warning\"\n ></fx-ui-hero-icon>\n } @default {\n <fx-ui-hero-icon\n icon=\"information-circle\"\n [solid]=\"true\"\n [size]=\"30\"\n class=\"text-information\"\n ></fx-ui-hero-icon>\n } }\n </div>\n\n <div class=\"flex flex-col\">\n <strong *ngIf=\"title\" class=\"txt-field-label\">{{ title }}</strong>\n <p class=\"txt-default\">{{ message }}</p>\n </div>\n</div>\n","import { ChangeDetectorRef, Component } from '@angular/core';\n// import { ToastData } from '../../../../public-api';\nimport _ from 'lodash';\n\n@Component({\n selector: 'fx-ui-toast-container',\n standalone: false,\n templateUrl: './toast-container.component.html',\n styleUrl: './toast-container.component.scss'\n})\nexport class ToastContainerComponent {\n toasts: any[] = [];\n\n constructor(private ref: ChangeDetectorRef) {}\n\n addToast(toast: any) {\n this.toasts.push(toast);\n this.ref.detectChanges()\n setTimeout(() => this.removeToast(toast.id), 3000);\n }\n\n removeToast(id: number) {\n this.toasts = this.toasts.filter(t => t.id !== id);\n this.ref.detectChanges();\n }\n}\n","<div\n class=\"fixed top-5 right-5 flex flex-col items-end gap-3 z-[10000] pointer-events-none\"\n>\n @for (toast of toasts; track toast) {\n <fx-ui-toast\n class=\"pointer-events-auto\"\n [message]=\"toast.message\"\n [title]=\"toast.title\"\n [type]=\"toast.type\"\n ></fx-ui-toast>\n }\n</div>","import { Injectable, ApplicationRef, ComponentRef, Injector, createComponent } from '@angular/core';\nimport { ToastContainerComponent } from '../../ui/components/toast-container/toast-container.component';\n\nexport interface ToastData {\n id: number;\n message: string;\n title?: string;\n type: 'success' | 'error' | 'info' | 'warning';\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FxToastrService {\n private containerRef?: ComponentRef<ToastContainerComponent>;\n private idCounter = 0;\n\n constructor(private appRef: ApplicationRef) {\n this.ensureContainerExists();\n }\n\n private ensureContainerExists() {\n if (!this.containerRef) {\n this.containerRef = createComponent(ToastContainerComponent, {\n environmentInjector: this.appRef.injector,\n });\n\n this.appRef.attachView(this.containerRef.hostView);\n document.body.appendChild(this.containerRef.location.nativeElement);\n }\n }\n\n private show(message: string, type: ToastData['type'], title?: string) {\n const toast: ToastData = {\n id: ++this.idCounter,\n message,\n title,\n type,\n };\n\n this.containerRef?.instance.addToast(toast);\n }\n\n success(message: string, title?: string) {\n this.show(message, 'success', title);\n }\n\n error(message: string, title?: string) {\n this.show(message, 'error', title);\n }\n\n info(message: string, title?: string) {\n this.show(message, 'info', title);\n }\n\n warning(message: string, title?: string) {\n this.show(message, 'warning', title);\n }\n}\n","import { Observable, firstValueFrom } from 'rxjs';\nimport _ from 'lodash';\nimport { NgForm } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { TagType } from '../../public-api';\n\nexport class FxUtils {\n private static async preresolve(promises: any, value: any, key?: string) {\n if (key === 'callback' || key === 'socket' || key === 'listener') {\n promises.push(value);\n return;\n }\n if (value instanceof Function) {\n this.preresolve(promises, value());\n } else if (value instanceof Array) {\n const inpromises: any = [];\n value.forEach((v) => {\n this.preresolve(inpromises, v);\n });\n promises.push(Promise.all(inpromises));\n } else if (value instanceof Observable) {\n promises.push(firstValueFrom(value));\n } else if (value instanceof Promise) {\n promises.push(value);\n } else if (value instanceof Object) {\n promises.push(this.resolve(value));\n } else {\n promises.push(value);\n }\n }\n\n static async resolve(value: Object) {\n const keys = [];\n const promises: any = [];\n for (const i in value) {\n if (value.hasOwnProperty(i)) {\n keys.push(i);\n this.preresolve(promises, (value as any)[i], i);\n }\n }\n const values = await Promise.all(promises);\n const raw = {};\n keys.forEach((key: string, index: number) => {\n _.set(raw, key, values[index]);\n });\n return raw;\n }\n\n static isNotNull(obj: any): boolean {\n return !this.isNull(obj);\n }\n\n static isNull(obj: any): boolean {\n return obj === undefined || obj === null;\n }\n\n static isFunction(obj: any): boolean {\n return this.isNotNull(obj) && obj instanceof Function;\n }\n\n static isNotFunction(obj: any): boolean {\n return !this.isFunction(obj);\n }\n\n static isStringEmpty(obj: string): boolean {\n return this.isNull(obj) || obj === '';\n }\n\n static isStringNotEmpty(obj: string): boolean {\n return !this.isStringEmpty(obj);\n }\n\n static isArrayEmpty(obj: any[]): boolean {\n return this.isNull(obj) || obj.length === 0;\n }\n\n static isArrayNotEmpty(obj: any[]): boolean {\n return !this.isArrayEmpty(obj);\n }\n\n static replaceStartWithAsterisk(inputString: string, numToReplace: number): string {\n if (numToReplace >= inputString.length) {\n return '*'.repeat(inputString.length);\n } else if (numToReplace <= 0) {\n return inputString;\n } else {\n const asterisks = '*'.repeat(numToReplace);\n const remainingString = inputString.substring(numToReplace);\n return asterisks + remainingString;\n }\n }\n\n static checkInvalidField(form: NgForm): void {\n Object.keys(form.controls).forEach((field) => {\n const control = form.controls[field];\n control.markAsTouched({ onlySelf: true });\n });\n }\n\n static checkInlineErrorField(err: any, f: NgForm) {\n if (err) {\n Object.keys(err).forEach((field) => {\n const formControl = f.form.get(field);\n\n if (formControl) {\n const error = { apiError: err[field] };\n formControl.setErrors(error);\n }\n });\n }\n }\n\n static isSameCollection(collection: any[], compareCollection: any): boolean {\n return _.isEmpty(_.xor(collection, compareCollection));\n }\n\n static isSameValue(model: any, compareModel: any) {\n return _.isEqual(model, compareModel);\n }\n\n static parseError(err: HttpErrorResponse) {\n if (_.get(err, 'status') === 401) {\n return 'Session timeout. Please login again.';\n }\n if (this.isStringEmpty(_.get(err, 'error.code'))) {\n return _.get(err, 'error.message', 'Unknown Error');\n }\n return `${_.get(err, 'error.code')}: ${_.get(err, 'error.message', 'Unknown Error')}`;\n }\n\n static convertColorFromVariable(name: string, alpha = 1): string {\n const value = getComputedStyle(document.body)\n .getPropertyValue(name)\n .trim()\n .replace(/\\s+/g, ' ');\n return value ? `rgba(${value} / ${alpha})` : `rgba(255 255 255 / ${alpha})`;\n }\n\n static getTagClass(key: string, isCriticalExist: boolean = false): TagType {\n switch (key.toLowerCase()) {\n case 'error':\n case 'failed':\n case 'inactive':\n case 'critical':\n case 'stopped':\n return 'critical';\n case 'high':\n if (isCriticalExist) {\n return 'danger';\n }\n return 'critical';\n case 'inprogress':\n case 'processing':\n case 'paused':\n case 'medium':\n case 'warning':\n return 'warning';\n case 'completed':\n case 'success':\n case 'active':\n case 'low':\n case 'running':\n return 'success';\n case 'queue':\n case 'waiting':\n case 'info':\n return 'information';\n case 'discovery':\n return 'discovery';\n case 'disabled':\n default:\n return 'default';\n }\n }\n\n static validateEmail(value: string) {\n const emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const isEmail = emailRegex.test(value);\n return isEmail;\n }\n\n static isStrongPassword(password: string) {\n const regex = /^(?=.{6,}$)(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9]).*$/;\n return regex.test(password);\n }\n\n static formatSizeUnits(bytes: number) {\n if (bytes >= 1073741824) { return (bytes / 1073741824).toFixed(2) + \" GB\"; }\n else if (bytes >= 1048576) { return (bytes / 1048576).toFixed(2) + \" MB\"; }\n else if (bytes >= 1024) { return (bytes / 1024).toFixed(2) + \" KB\"; }\n else if (bytes > 1) { return bytes + \" bytes\"; }\n else if (bytes == 1) { return bytes + \" byte\"; }\n return \"0 bytes\";\n }\n}\n","import { HttpClient, HttpEvent, HttpHeaders, HttpRequest } from '@angular/common/http';\nimport { Observable, firstValueFrom } from 'rxjs';\n\nexport class HttpWrapper {\n constructor(public http: HttpClient, public baseURL: string) {}\n\n private addCredentials(options: any = {}): any {\n return {\n withCredentials: true,\n ...options,\n };\n }\n\n async get(url: string = '', params?: any): Promise<any> {\n const options = {\n withCredentials: true,\n params: {\n ...params,\n },\n };\n return firstValueFrom(this.http.get(this.baseURL + url, options));\n }\n\n async post(url: string, body: any = {}, options: any = {}): Promise<any> {\n return firstValueFrom(this.http.post(this.baseURL + url, body, this.addCredentials(options)));\n }\n\n async put(url: string, body: any, options: any = {}): Promise<any> {\n return firstValueFrom(this.http.put(this.baseURL + url, body, this.addCredentials(options)));\n }\n\n async delete(url: string, options: any = {}): Promise<any> {\n return firstValueFrom(this.http.delete(this.baseURL + url, this.addCredentials(options)));\n }\n\n upload(url: string, body: FormData, options: any = {}): Observable<HttpEvent<any>> {\n const req = new HttpRequest(\n 'POST',\n this.baseURL + url,\n body,\n {\n reportProgress: true,\n ...this.addCredentials(options)\n }\n );\n\n return this.http.request(req);\n }\n\n async search(params: any = {}) {\n return await this.get('/search', params);\n }\n\n async detail(params: any) {\n return await this.get(`/detail`, params);\n }\n\n async remove(params: any = {}) {\n return await this.delete(`/remove`, params);\n }\n\n async create(data: any) {\n return await this.post(`/create`, data);\n }\n\n async updateInfo(data: any, params?: any) {\n return await this.put(`/update-info`, data, { params: params });\n }\n\n async updateStatus(data: any, params?: any) {\n return await this.put(`/update-status`, data, { params: params });\n }\n\n async update(data: any, params?: any) {\n return await this.put(`/update`, data, { params: params });\n }\n\n async single(code: string) {\n return await this.post(`/${code}`, {});\n }\n\n async selectize() {\n return await this.post('/search', {});\n }\n\n async fetch(filter: any = {}, params: any = {}) {\n return await this.post('', filter, { params: params });\n }\n\n async published(idOrCode: string) {\n return await this.post(`/published/${idOrCode}`);\n }\n\n async unpublished(idOrCode: string) {\n return await this.post(`/unpublished/${idOrCode}`);\n }\n\n async terminated(idOrCode: string) {\n return await this.post(`/terminated/${idOrCode}`);\n }\n\n async disable(params: any) {\n return await this.post(`/disable`, params);\n }\n}\n","import { AfterViewInit, Directive, Injector, OnInit, Type, ViewChild } from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatTable, MatTableDataSource } from '@angular/material/table';\nimport { BaseComponent } from './base.component';\nimport { HttpWrapper } from '../services/http-wrapper.service';\nimport { FxToastrService } from '../services/toastr.service';\nimport { ChangeDetectorRef } from '@angular/core';\nimport _ from 'lodash';\nimport { FxUtils } from '../utils';\nimport { Subject, debounceTime, firstValueFrom } from 'rxjs';\n\nexport interface TableResult<T> {\n data: T[];\n total: number;\n}\n\n@Directive()\nexport class BaseTableComponent<T = any> extends BaseComponent implements OnInit, AfterViewInit {\n dataSource = new MatTableDataSource<T>();\n cols: string[] = [];\n total = 0;\n page = 0;\n pageSize = 10;\n filters: any = {};\n loading: boolean = false;\n expandedElement: any | null;\n toastr: FxToastrService;\n public _lock: boolean = false;\n keywordChange$ = new Subject<string>();\n dataSourcePlaceholder: any[]\n public config: {\n create?: {\n dialog?: Type<{}>;\n size?: string;\n label?: string;\n title?: string;\n message?: string;\n };\n update?: {\n dialog?: Type<{}>;\n size?: string;\n label?: string;\n title?: string;\n message?: string;\n };\n view?: {\n dialog?: Type<{}>;\n size?: string;\n label?: string;\n title?: string;\n message?: string;\n };\n delete?: {\n dialog?: Type<{}>;\n title?: string;\n message?: string;\n cancelTitle?: string;\n confirmTitle?: string;\n };\n updateStatus?: {\n message?: string;\n };\n };\n\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatTable) table!: MatTable<T>;\n\n constructor(\n injector: Injector,\n public api: HttpWrapper,\n public modal: any,\n public ref: ChangeDetectorRef\n ) {\n super(injector);\n this.toastr = injector.get(FxToastrService);\n }\n\n ngOnInit(): void {\n this.keywordChange$.pipe(debounceTime(300)).subscribe(async (keyword) => {\n await this.refresh();\n });\n this.dataSourcePlaceholder = Array(this.pageSize).fill({});\n this.init();\n }\n\n public init() {}\n\n ngAfterViewInit(): void {\n if (this.paginator && this.paginator.page) {\n this.paginator.page.subscribe(event => {\n this.onPageChange(event);\n });\n }\n this.ref.detectChanges();\n }\n\n public async refresh(): Promise<void> {\n this.page = 0;\n await this.fetch();\n }\n\n public setDataSource(result: any): void {\n this.dataSource.data = _.get(result, 'data');\n this.total = _.get(result, 'total');\n }\n\n public async fetch(): Promise<void> {\n this.loading = true;\n try {\n const params = { page: (this.page ?? 0) + 1, pageSize: this.pageSize, ...this.filters };\n const result = await this.api.search(params);\n this.setDataSource(result);\n } catch (err: any) {\n this.toastr.error(FxUtils.parseError(err));\n } finally {\n this.loading = false;\n this.ref.detectChanges();\n }\n }\n\n public async onPageChange(event: any) {\n this.page = event.pageIndex;\n this.pageSize = event.pageSize;\n await this.fetch();\n }\n\n public resolve() {\n return {};\n }\n\n public empty() {\n return {};\n }\n\n public onKeywordChange(keyword: string) {\n this.keywordChange$.next(keyword);\n }\n\n public async create() {\n const conf = _.get(this.config, 'create');\n const dialog = _.get(conf, 'dialog');\n const size = _.get(conf, 'size');\n if (_.isNil(conf) || _.isNil(dialog)) {\n return;\n }\n if (this._lock) {\n return;\n }\n this._lock = true;\n\n let panelClass = 'fx-dialog';\n if (size == '100%') {\n panelClass = 'fx-fullsize-dialog';\n }\n\n let instance = this.modal.open(dialog, {\n panelClass: panelClass,\n autoFocus: false,\n width: size,\n disableClose: true,\n data: {\n method: 'create',\n data: this.empty(),\n title: conf.title,\n message: conf.message,\n resolve: this.resolve(),\n },\n });\n\n instance.afterClosed().subscribe((result: any) => {\n if (result) {\n this.refresh();\n }\n this._lock = false;\n });\n }\n\n public async update(model: any) {\n const conf = _.get(this.config, 'update');\n const dialog = _.get(conf, 'dialog');\n const size = _.get(conf, 'size');\n if (_.isNil(dialog) || _.isNil(conf)) {\n return;\n }\n if (this._lock) {\n return;\n }\n this._lock = true;\n let panelClass = 'fx-dialog';\n if (size == '100%') {\n panelClass = 'fx-fullsize-dialog';\n }\n\n let instance = this.modal.open(dialog, {\n panelClass: panelClass,\n autoFocus: false,\n width: size,\n disableClose: true,\n data: {\n method: 'update',\n data: model,\n title: conf.title,\n message: conf.message,\n resolve: this.resolve(),\n },\n });\n\n instance.afterClosed().subscribe((result: any) => {\n if (result) {\n this.refresh();\n }\n this._lock = false;\n });\n }\n\n public async view(model: any) {\n const conf = _.get(this.config, 'view');\n const dialog = _.get(conf, 'dialog');\n const size = _.get(conf, 'size');\n if (_.isNil(dialog) || _.isNil(conf)) {\n return;\n }\n if (this._lock) {\n return;\n }\n this._lock = true;\n\n let panelClass = 'fx-dialog';\n if (size == '100%') {\n panelClass = 'fx-fullsize-dialog';\n }\n\n let instance = this.modal.open(dialog, {\n panelClass: panelClass,\n autoFocus: false,\n width: size,\n disableClose: true,\n data: {\n data: model,\n title: conf.title,\n message: conf.message,\n resolve: this.resolve(),\n disabled: true,\n },\n });\n\n instance.afterClosed().subscribe(() => {\n this._lock = false;\n });\n }\n\n async delete(model: any) {\n if (this._lock) {\n return;\n }\n this._lock = true;\n\n try {\n const conf = _.get(this.config, 'delete');\n const dialog = _.get(conf, 'dialog');\n\n const dialogRef = this.modal.open(dialog, {\n panelClass: 'fx-dialog',\n autoFocus: false,\n width: '400px',\n data: {\n title: _.get(conf, 'title'),\n message: _.get(conf, 'message'),\n cancelLabel: _.get(conf, 'cancelTitle'),\n confirmLabel: _.get(conf, 'confirmTitle'),\n callback: async () => {\n await this.remove(model);\n },\n },\n });\n\n const state = await firstValueFrom(dialogRef.afterClosed());\n\n if (state) {\n try {\n await this.refresh();\n } catch (err: any) {\n this.toastr.error(FxUtils.parseError(err));\n }\n }\n } finally {\n this._lock = false;\n }\n }\n\n async remove(model: any) {\n try {\n return await this.api.remove({ ...model });\n } catch (err: any) {\n throw err;\n }\n }\n\n public tagClass(tag: string) {\n return FxUtils.getTagClass(tag);\n }\n\n public capitalize(label: string) {\n return _.capitalize(label)\n }\n\n public value(model: any, key: string, defaultValue?: any) {\n return _.get(model, key, defaultValue);\n }\n\n public toggleExpand(element: any): void {\n this.expandedElement = this.expandedElement === element ? null : element;\n }\n\n async updateStatus(params: any) {\n try {\n await this.api.updateStatus(params);\n this.toastr.success(_.get(this.config, 'updateStatus.message', 'Update Success'));\n } catch (err: any) {\n this.toastr.success(FxUtils.parseError(err));\n } finally {\n await this.refresh();\n }\n }\n}\n","import { AfterViewInit, Directive, Inject, OnInit, ViewChild } from '@angular/core';\nimport { BaseComponent } from './base.component';\nimport { NgForm } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { FxToastrService } from '../services/toastr.service';\nimport { HttpWrapper } from '../services/http-wrapper.service';\nimport _ from 'lodash';\nimport { FxUtils } from '../utils';\n\n@Directive()\nexport class BaseDialogComponent<T = any> extends BaseComponent implements AfterViewInit, OnInit {\n @ViewChild('f', { static: true }) ngForm: NgForm;\n public method: string;\n public title: string;\n public model: any;\n public disabled: boolean;\n public loading: boolean;\n public message: string;\n public resolve: any;\n formChangesSubscription: any;\n public onSubmit: boolean = true;\n\n constructor(\n public ref: MatDialogRef<any>,\n @Inject(MAT_DIALOG_DATA) public bindings: any,\n public toastr: FxToastrService,\n public api: HttpWrapper,\n public dialog: MatDialog\n ) {\n super(bindings);\n this.model = _.clone(_.get(bindings, 'data'));\n this.method = _.get(bindings, 'method');\n this.title = _.get(bindings, 'title');\n this.disabled = _.get(bindings, 'disabled');\n this.message = _.get(bindings, 'message');\n this.resolve = _.get(bindings, 'resolve');\n }\n\n ngAfterViewInit(): void {}\n\n ngOnInit(): void {}\n\n accept(form: NgForm, params = null) {\n if (form.invalid) {\n FxUtils.checkInvalidField(form);\n return;\n }\n if (!this.disabled) {\n if (!this.validate()) return;\n if (this.method === 'create') {\n this.create(params);\n return;\n } else {\n this.update(params);\n return;\n }\n }\n\n this.cancel();\n }\n\n create(params: any = null) {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.api\n .create({ ...this.model, ...params })\n .then(\n () => {\n this.toastr.success(this.message);\n this.ref.close(true);\n },\n (error: any) => {\n this.toastr.error(FxUtils.parseError(error));\n }\n )\n .then(() => {\n this.loading = false;\n });\n }\n\n update(params: any = null) {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.api\n .update({ ...this.model, ...params })\n .then(\n () => {\n this.toastr.success(this.message);\n this.ref.close(true);\n },\n (error: any) => {\n this.toastr.error(FxUtils.parseError(error));\n }\n )\n .then(() => {\n this.loading = false;\n });\n }\n\n updateInfo(params: any = null) {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.api\n .updateInfo({ ...this.model, ...params })\n .then(\n () => {\n this.toastr.success(this.message);\n this.ref.close(true);\n },\n (error: string) => {\n this.toastr.error(error);\n }\n )\n .then(() => {\n this.loading = false;\n });\n }\n\n cancel() {\n this.ref.close(false);\n }\n\n validate() {\n return true;\n }\n}\n","import { Injectable, EventEmitter } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FxLoadingService {\n public listener = new EventEmitter<boolean>();\n public listenerAction = new EventEmitter<boolean>();\n start() {\n this.listener.emit(true);\n }\n\n stop() {\n this.listener.emit(false);\n }\n startAction() {\n this.listenerAction.emit(true);\n }\n stopAction() {\n this.listenerAction.emit(false);\n }\n}\n","import { Injector } from '@angular/core';\nimport { FxLoadingService } from '../services/loading.service';\n\nexport class BaseResolver {\n constructor(public loadingService: FxLoadingService, public injector: Injector) {}\n\n baseResolverInit() {\n this.loadingService.start();\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, '/assets/i18n/', '.json');\n}\n\n@NgModule({\n imports: [TranslateModule],\n exports: [TranslateModule]\n})\nexport class TranslationModule {\n static forRoot(): ModuleWithProviders<TranslationModule> {\n return {\n ngModule: TranslationModule,\n providers: [\n {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n ]\n };\n }\n\n static forChild(): ModuleWithProviders<TranslationModule> {\n return {\n ngModule: TranslationModule,\n providers: []\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslationService {\n private currentLangSubject = new BehaviorSubject<string>('en');\n readonly currentLang$ = this.currentLangSubject.asObservable();\n\n constructor(\n private translate: TranslateService,\n private http: HttpClient\n ) {\n // Default fallback\n this.translate.addLangs(['en', 'vi']);\n this.translate.setDefaultLang('en');\n }\n\n init(lang: string) {\n this.setLanguage(lang);\n }\n\n currentLang(): string {\n return this.translate.currentLang || this.translate.defaultLang;\n }\n\n setLanguage(lang: string) {\n this.translate.use(lang);\n this.currentLangSubject.next(lang);\n }\n\n loadTranslations(lang: string, path: string) {\n const url = `${path}${lang}.json`;\n this.http.get(url).subscribe({\n next: (translations: any) => {\n this.translate.setTranslation(lang, translations, true);\n },\n error: (err) => {\n console.warn(`[TranslationService] Failed to load ${url}`, err);\n }\n });\n }\n\n onLanguageChange(callback: (lang: string) => void) {\n this.currentLang$.subscribe(callback);\n }\n}\n","import { Injectable } from '@angular/core';\nimport _ from 'lodash';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionService {\n private permissions: string[] = [];\n\n setPermissions(perms: string[]) {\n this.permissions = perms;\n }\n\n hasPermission(requiredPermissions: string[]): boolean {\n return _.some(requiredPermissions, permission => this.permissions.includes(permission));\n }\n\n getPermissions(): string[] {\n return [...this.permissions];\n }\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { PermissionService } from '../services/permissions.service';\nimport _ from 'lodash';\n\n@Directive({\n selector: '[hasPermission]'\n})\nexport class HasPermissionDirective {\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainerRef: ViewContainerRef,\n private permissionService: PermissionService\n ) {}\n\n @Input() set hasPermission(required: string | string[]) {\n const requiredPermissions = _.isArray(required) ? required : [required];\n this.viewContainerRef.clear();\n if (this.permissionService.hasPermission(requiredPermissions)) {\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n }\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[appTrimOnBlur]'\n})\nexport class TrimOnBlurDirective {\n @Input('appTrimOnBlurCollapse') collapseWhitespace = false;\n\n constructor(private el: ElementRef<HTMLInputElement>, private ngControl: NgControl) {}\n\n @HostListener('blur')\n onBlur(): void {\n const native = this.el.nativeElement;\n if (!native) return;\n\n let value: string = native.value ?? '';\n\n if (this.collapseWhitespace) {\n value = value.replace(/\\s+/g, ' ').trim();\n } else {\n value = value.trim();\n }\n\n if (native.value === value) return;\n\n native.value = value;\n\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValue(value);\n } else {\n const ev = new Event('input', { bubbles: true });\n native.dispatchEvent(ev);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { PermissionService } from '../services/permissions.service';\nimport { FxUtils } from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionGuard implements CanActivate {\n constructor(private permissionService: PermissionService, private router: Router) {}\n\n canActivate(route: any): boolean {\n const requiredPermissions = route.data?.['permissions'] as string[] | undefined;\n\n if (!requiredPermissions || this.permissionService.hasPermission(requiredPermissions)) {\n return true;\n }\n\n this.router.navigate(['/unauthorized']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FxUtils } from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FxStorageService {\n resolve(key: string, value?: any): any {\n if (FxUtils.isNotNull(value)) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n const loc = localStorage.getItem(key);\n return loc ? JSON.parse(loc) : undefined;\n }\n\n remove(key: string) {\n localStorage.removeItem(key);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthStateService {\n private _isLoggedIn$ = new BehaviorSubject<boolean | null>(null);\n readonly isLoggedIn$ = this._isLoggedIn$.asObservable();\n readonly unauthorized$ = new Subject<void>();\n\n constructor() {}\n\n setLoggedIn(value: boolean): void {\n this._isLoggedIn$.next(value);\n }\n\n get isLoggedIn(): boolean {\n return this._isLoggedIn$.value === true;\n }\n\n handleUnauthorized(): void {\n this.setLoggedIn(false);\n this.unauthorized$.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpEvent,\n HttpInterceptor,\n HttpHandler,\n HttpRequest,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { AuthStateService } from '../services/auth-state.service';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n constructor(private authState: AuthStateService) {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const cloned = req.clone({ withCredentials: true });\n\n return next.handle(cloned).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401) {\n this.authState.handleUnauthorized();\n }\n return throwError(() => error);\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface Breadcrumb {\n label: string;\n url?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreadcrumbService {\n private breadcrumbs$ = new BehaviorSubject<Breadcrumb[]>([]);\n\n set(breadcrumbs: Breadcrumb[]) {\n this.breadcrumbs$.next(breadcrumbs);\n }\n\n get() {\n return this.breadcrumbs$.asObservable();\n }\n\n clear() {\n this.breadcrumbs$.next([]);\n }\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class QuillStyleLoaderService {\n private loaded = false;\n private loadingPromise: Promise<void> | null = null;\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {}\n\n /**\n * Load Quill CSS (only in browser). Returns a promise that resolves when\n * the CSS links have been appended.\n */\n load(): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n // Server: do nothing and resolve immediately.\n return Promise.resolve();\n }\n\n if (this.loaded) return Promise.resolve();\n if (this.loadingPromise) return this.loadingPromise;\n\n this.loadingPromise = new Promise<void>((resolve) => {\n const cssUrls = [\n // Using CDN is simplest — no consumer angular.json edits needed.\n 'https://cdn.jsdelivr.net/npm/quill/dist/quill.core.css',\n 'https://cdn.jsdelivr.net/npm/quill/dist/quill.snow.css'\n ];\n\n let remaining = cssUrls.length;\n\n const onLoad = () => {\n remaining -= 1;\n if (remaining === 0) {\n this.loaded = true;\n resolve();\n }\n };\n\n cssUrls.forEach((href) => {\n // Do not add duplicate links\n if (document.querySelector(`link[href=\"${href}\"]`)) {\n onLoad();\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = () => onLoad();\n link.onerror = () => {\n // still count it as loaded to avoid hanging if CDN fails\n console.warn(`[QuillStyleLoader] failed to load: ${href}`);\n onLoad();\n };\n document.head.appendChild(link);\n });\n });\n\n return this.loadingPromise;\n }\n}\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private renderer: Renderer2;\n private lightClass = 'light_theme';\n private theme$ = new BehaviorSubject<'light' | 'dark'>('dark');\n themeStorageKey = 'host-theme';\n\n constructor(rendererFactory: RendererFactory2) {\n this.renderer = rendererFactory.createRenderer(null, null);\n const savedTheme = localStorage.getItem(this.themeStorageKey) as 'light' | 'dark' | null;\n\n if (savedTheme) {\n this.setLightMode(savedTheme === 'light');\n } else {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n const isDark = document.body.classList.contains(this.lightClass) || prefersDark;\n this.setLightMode(isDark);\n }\n }\n\n setLightMode(enable: boolean) {\n if (enable) {\n this.renderer.addClass(document.body, this.lightClass);\n this.theme$.next('light');\n localStorage.setItem(this.themeStorageKey, 'light');\n } else {\n this.renderer.removeClass(document.body, this.lightClass);\n this.theme$.next('dark');\n localStorage.setItem(this.themeStorageKey, 'dark');\n }\n\n window.dispatchEvent(new CustomEvent('theme-changed', { detail: { dark: !enable } }));\n }\n\n toggleTheme() {\n const isLight = this.theme$.value === 'light';\n this.setLightMode(!isLight);\n }\n\n themeChanges() {\n return this.theme$.asObservable();\n }\n\n getCurrentTheme(): 'light' | 'dark' {\n return this.theme$.value;\n }\n\n isLight(): boolean {\n return this.theme$.value === 'light';\n }\n \n getLogoPath(): string {\n return 'assets/images/logo.png'\n }\n}\n","import { MatSelectModule } from '@angular/material/select';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatTimepickerModule } from '@angular/material/timepicker';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\n\nexport const MATERIAL_MODULE = [\n MatSelectModule,\n MatRadioModule,\n MatButtonModule,\n MatIconModule,\n MatPaginatorModule,\n MatTableModule,\n MatSnackBarModule,\n MatDialogModule,\n MatCheckboxModule,\n MatCardModule,\n MatDatepickerModule,\n MatTimepickerModule,\n MatBadgeModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatMenuModule\n];\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { T_OUTLINE_ICONS, T_SOLID_ICONS } from '@dimaslz/ng-heroicons';\n\n@Component({\n selector: 'fx-ui-button',\n standalone: false,\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n})\nexport class ButtonComponent {\n @Input() label: string;\n @Input() disabled = false;\n @Input() buttonVariant: 'default' | 'primary' | 'alternative' = 'alternative';\n @Input() icon?: any;\n @Input() class?: any;\n @Input() loading: boolean = false;\n @Output() clicked = new EventEmitter<void>();\n\n onClick() {\n if (!this.disabled) this.clicked.emit();\n }\n}\n","<button\n [class]=\"class\"\n [ngClass]=\"{\n 'btn-default': buttonVariant === 'default',\n 'btn-primary': buttonVariant === 'primary',\n 'btn-alternative': buttonVariant === 'alternative',\n }\"\n [disabled]=\"disabled || loading\"\n (click)=\"onClick()\"\n>\n @if (loading) {\n <div class=\"flex w-full items-center justify-center\">\n <svg\n [attr.fill]=\"\n buttonVariant !== 'alternative' ? 'rgb(var(--text-primary))' : 'rgb(var(--primary))'\n \"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"4\" cy=\"12\" r=\"0\">\n <animate\n begin=\"0;spinner_z0Or.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"0;3\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_OLMs.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"4;12\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_UHR2.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"12;20\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_lo66\"\n begin=\"spinner_Aguh.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"3;0\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_z0Or\"\n begin=\"spinner_lo66.end\"\n attributeName=\"cx\"\n dur=\"0.001s\"\n values=\"20;4\"\n fill=\"freeze\"\n />\n </circle>\n <circle cx=\"4\" cy=\"12\" r=\"3\">\n <animate\n begin=\"0;spinner_z0Or.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"4;12\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_OLMs.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"12;20\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_JsnR\"\n begin=\"spinner_UHR2.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"3;0\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_Aguh\"\n begin=\"spinner_JsnR.end\"\n attributeName=\"cx\"\n dur=\"0.001s\"\n values=\"20;4\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_Aguh.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"0;3\"\n fill=\"freeze\"\n />\n </circle>\n <circle cx=\"12\" cy=\"12\" r=\"3\">\n <animate\n begin=\"0;spinner_z0Or.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"12;20\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_hSjk\"\n begin=\"spinner_OLMs.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"3;0\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_UHR2\"\n begin=\"spinner_hSjk.end\"\n attributeName=\"cx\"\n dur=\"0.001s\"\n values=\"20;4\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_UHR2.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"0;3\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_Aguh.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"4;12\"\n fill=\"freeze\"\n />\n </circle>\n <circle cx=\"20\" cy=\"12\" r=\"3\">\n <animate\n id=\"spinner_4v5M\"\n begin=\"0;spinner_z0Or.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"3;0\"\n fill=\"freeze\"\n />\n <animate\n id=\"spinner_OLMs\"\n begin=\"spinner_4v5M.end\"\n attributeName=\"cx\"\n dur=\"0.001s\"\n values=\"20;4\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_OLMs.end\"\n attributeName=\"r\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"0;3\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_UHR2.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"4;12\"\n fill=\"freeze\"\n />\n <animate\n begin=\"spinner_Aguh.end\"\n attributeName=\"cx\"\n calcMode=\"spline\"\n dur=\"0.5s\"\n keySplines=\".36,.6,.31,1\"\n values=\"12;20\"\n fill=\"freeze\"\n />\n </circle>\n </svg>\n </div>\n } @else {\n <ng-container>\n <div class=\"flex items-center justify-center gap-small\">\n @if(icon) {<fx-ui-hero-icon [icon]=\"icon\" [size]=\"20\" class=\"flex\" [ngClass]=\"{\n 'text-text-inverse': buttonVariant !== 'default',\n 'text-text-primary': buttonVariant === 'alternative'\n }\"></fx-ui-hero-icon>}\n @if(label){<div>{{ label }}</div>}\n </div>\n </ng-container>\n }\n</button>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { ECharts, EChartsOption } from 'echarts';\nimport { FxUtils } from '../../../core/utils';\n\nexport type IChartType = 'bar' | 'pie' | 'line' | 'sunburst' | 'radar' | 'auto';\n\n@Component({\n selector: 'fx-ui-chart',\n standalone: false,\n templateUrl: './chart.component.html',\n styleUrl: './chart.component.scss',\n})\nexport class ChartComponent implements OnChanges, AfterViewInit, OnDestroy {\n @Input() type: IChartType = 'auto';\n @Input() data: any;\n @Input() options?: EChartsOption;\n @Input() palette?: string[];\n @Input() height = '400px';\n @Input() loading = false;\n @Input() pieLegendAlign: any = '10%';\n @Input() pieLegendPosition: any = 'middle';\n @Input() showPieLabel: boolean = true;\n @Input() labelFontFamily = 'BeVietnamPro';\n @Output() chartClick = new EventEmitter<any>();\n @Output() chartInit = new EventEmitter<any>();\n\n labelFontSize = 12;\n canInit = false;\n chartOptions: EChartsOption = {};\n private chartInstance?: ECharts;\n private resizeObserver?: ResizeObserver;\n private intersectionObserver?: IntersectionObserver;\n\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n this.intersectionObserver = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting && !this.canInit) {\n this.canInit = true;\n this.rebuildChart();\n this.cdr.detectChanges();\n }\n },\n { threshold: 0.1 }\n );\n\n this.intersectionObserver.observe(this.ref.nativeElement);\n this.resizeObserver = new ResizeObserver(() => {\n if (this.chartInstance) this.chartInstance.resize();\n });\n this.resizeObserver.observe(this.ref.nativeElement);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.intersectionObserver?.disconnect();\n }\n\n ngOnChanges(): void {\n if (this.canInit) {\n this.rebuildChart();\n }\n }\n\n @HostListener('window:theme-changed')\n onThemeChange(): void {\n requestAnimationFrame(() => {\n this.rebuildChart();\n });\n }\n\n onChartClick(event: any) {\n this.chartClick.emit(event);\n }\n\n onChartInit(chart: any) {\n this.chartInstance = chart;\n this.chartInit.emit(chart);\n\n requestAnimationFrame(() => chart.resize());\n }\n\n private rebuildChart(): void {\n this.chartOptions = this.buildOptions();\n\n if (this.chartInstance) {\n this.chartInstance.clear();\n this.chartInstance.setOption(this.chartOptions, true);\n }\n\n this.cdr.detectChanges();\n }\n\n private registry: Record<string, (data: any, palette: string[]) => EChartsOption> = {\n bar: (data, colors) => ({\n color: colors,\n tooltip: { trigger: 'axis' },\n grid: {\n left: '5%',\n right: '5%',\n bottom: '10%',\n containLabel: true,\n },\n xAxis: {\n type: 'category',\n data: data?.categories || [],\n axisLabel: {\n interval: 0,\n fontFamily: this.labelFontFamily,\n fontSize: this.labelFontSize,\n color: FxUtils.convertColorFromVariable('--text-secondary'),\n width: 80,\n overflow: 'truncate',\n ellipsis: '…',\n },\n axisLine: {\n lineStyle: { color: FxUtils.convertColorFromVariable('--border-strong') },\n },\n splitLine: { show: false },\n },\n yAxis: {\n type: 'value',\n axisLabel: {\n fontFamily: this.labelFontFamily,\n fontSize: this.labelFontSize,\n color: FxUtils.convertColorFromVariable('--text-secondary'),\n },\n axisLine: {\n lineStyle: { color: FxUtils.convertColorFromVariable('--border-strong') },\n },\n splitLine: {\n lineStyle: { color: FxUtils.convertColorFromVariable('--border-default') },\n },\n },\n series: [\n {\n type: 'bar',\n itemStyle: {\n color: (params: any) => {\n const palette = colors || [];\n return palette[params.dataIndex % palette.length];\n },\n },\n data: data?.values || [],\n label: {\n show: true,\n position: 'top',\n fontFamily: this.labelFontFamily,\n fontSize: this.labelFontSize,\n color: FxUtils.convertColorFromVariable('--text-primary'),\n textBorderWidth: 0,\n textBorderColor: 'transparent',\n },\n emphasis: { itemStyle: { opacity: 0.8 } },\n },\n ],\n }),\n\n pie: (data, colors) => {\n const total = data.reduce((sum: number, d: any) => sum + d.value, 0);\n return {\n color: colors,\n tooltip: { trigger: 'item' },\n legend: {\n orient: 'vertical',\n right: this.pieLegendAlign,\n top: this.pieLegendPosition,\n icon: 'circle',\n align: 'left',\n itemGap: 12,\n formatter: (name: string) => {\n const item = data.find((d: any) => d.name === name);\n return item ? `${name}: ${item.value}` : name;\n },\n textStyle: {\n fontFamily: this.labelFontFamily,\n fontSize: 13,\n fontWeight: 500,\n color: FxUtils.convertColorFromVariable('--text-primary'),\n },\n },\n series: [\n {\n type: 'pie',\n radius: ['40%', '70%'],\n center: ['40%', '50%'],\n avoidLabelOverlap: true,\n data,\n label: {\n show: this.showPieLabel,\n //{a}\tSeries name\n //{b}\tData name (slice label)\n //{c}\tData value\n //{d}\tPercentage\n position: 'outside',\n formatter: '{d}%',\n fontSize: this.labelFontSize,\n fontFamily: this.labelFontFamily,\n color: FxUtils.convertColorFromVariable('--text-primary'),\n textBorderWidth: 0,\n textBorderColor: 'transparent',\n },\n labelLine: {\n show: this.showPieLabel,\n length: 7,\n length2: 7,\n },\n itemStyle: {\n borderWidth: 0,\n },\n emphasis: {\n scale: true,\n scaleSize: 10,\n itemStyle: { borderWidth: 0 },\n label: { textBorderWidth: 0 },\n },\n },\n ],\n graphic: {\n type: 'group',\n left: '40%',\n top: '50%',\n bounding: 'raw',\n children: [\n {\n type: 'text',\n style: {\n text: total.toString(),\n fontSize: 24,\n fontWeight: 600,\n fontFamily: this.labelFontFamily,\n fill: FxUtils.convertColorFromVariable('--text-primary'),\n align: 'center',\n verticalAlign: 'middle',\n },\n y: 0,\n },\n ],\n },\n media: [\n {\n query: { maxWidth: 350 },\n option: {\n graphic: {\n left: '50%',\n top: '40%',\n },\n series: [\n {\n center: ['50%', '40%'],\n },\n ],\n legend: {\n orient: 'vertical',\n left: 'center',\n bottom: 0,\n },\n },\n },\n ],\n };\n },\n\n sunburst: (data, colors) => ({\n color: colors,\n series: [\n {\n type: 'sunburst',\n data,\n radius: ['15%', '90%'],\n itemStyle: {\n borderWidth: 1,\n borderColor: FxUtils.convertColorFromVariable('--border-default'),\n },\n label: {\n rotate: 'tangential',\n fontSize: this.labelFontSize,\n fontFamily: this.labelFontFamily,\n color: FxUtils.convertColorFromVariable('--text-primary'),\n textBorderWidth: 0,\n textBorderColor: 'transparent',\n },\n },\n ],\n }),\n };\n\n private detectType(): string {\n if (this.type !== 'auto') return this.type;\n if (this.data?.children) return 'sunburst';\n if (this.data?.categories && this.data?.values) return 'bar';\n if (Array.isArray(this.data) && this.data[0]?.value && this.data[0]?.name) return 'pie';\n return 'bar';\n }\n\n private buildOptions(): EChartsOption {\n const chartType = this.detectType();\n const palette = this.resolvePalette();\n const baseBuilder = this.registry[chartType];\n const baseOptions = baseBuilder ? baseBuilder(this.data, palette) : {};\n\n const textColor = FxUtils.convertColorFromVariable('--text-primary');\n\n const mergedOptions: EChartsOption = {\n legend: {\n textStyle: {\n fontFamily: this.labelFontFamily,\n color: textColor,\n fontSize: this.labelFontSize,\n fontWeight: 500,\n },\n icon: 'circle',\n itemGap: 16,\n },\n ...baseOptions,\n ...this.options,\n };\n\n return mergedOptions;\n }\n\n private resolvePalette(): string[] {\n const defaultPalette = [\n 'rgba(var(--critical) / 1)',\n 'rgba(var(--danger) / 1)',\n 'rgba(var(--warning) / 1)',\n 'rgba(var(--success) / 1)',\n 'rgba(var(--information) / 1)',\n 'rgba(var(--discovery) / 1)',\n ];\n\n const palette = !this.palette || this.palette.length === 0 ? defaultPalette : this.palette;\n\n return palette.map((raw) => {\n if (raw.includes('var(')) {\n const cssVar = raw.match(/var\\((.*?)\\)/)?.[1];\n const opacityMatch = raw.match(/\\/\\s*([\\d.]+)/);\n const opacity = opacityMatch ? parseFloat(opacityMatch[1]) : 1;\n const rgb = getComputedStyle(document.body)\n .getPropertyValue(cssVar || '')\n .trim()\n .replace(/\\s+/g, ',');\n return `rgba(${rgb}, ${opacity})`;\n }\n return raw;\n });\n }\n}\n","<div class=\"chart-wrapper\" [style.height]=\"height\" [class.loading]=\"loading\">\n <ng-container *ngIf=\"canInit\">\n <div\n echarts\n [options]=\"chartOptions\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n class=\"w-full h-full\">\n </div>\n </ng-container>\n\n <div class=\"chart-loader\" *ngIf=\"loading\">\n <span class=\"txt-default\">Loading...</span>\n </div>\n</div>\n","import { Optional, Self } from '@angular/core';\nimport { ControlValueAccessor, NgControl, ValidationErrors } from '@angular/forms';\nimport { FxUtils } from '../../core/utils';\n\nexport type ErrorMessages = { [key: string]: any };\n\nexport class FxComponent<T> implements ControlValueAccessor {\n value: T;\n public onChange = (value: T) => {};\n public onTouched = () => {};\n \n validationError: ErrorMessages;\n errorMessages?: ErrorMessages;\n constructor(@Optional() @Self() public ngControl: NgControl) {\n if (ngControl) ngControl.valueAccessor = this;\n }\n\n setValue(value: T) {\n if (this.onChange) {\n this.onChange(value);\n }\n }\n\n onEnter(value: T) {\n if (this.onChange) {\n this.onChange(value);\n }\n }\n\n writeValue(value: T): void {\n this.value = value ?? ('' as any);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n get invalid(): boolean {\n return !!(this.ngControl?.invalid && this.ngControl?.touched);\n }\n\n get errors(): { [key: string]: any } {\n return this.ngControl?.errors || {};\n }\n\n validate(validateFn: Function): void {\n if (this.invalid) return;\n if (validateFn) {\n const error = validateFn(this.value);\n if (FxUtils.isNotNull(error)) {\n this.setErrors(error ?? {})\n }\n }\n }\n\n public setErrors(error: ValidationErrors) {\n this.validationError = error;\n const control = this.ngControl?.control;\n if (!control) return;\n control.setErrors(error);\n }\n\n public clearErrors() {\n const control = this.ngControl?.control;\n if (!control) return;\n const errors = control.errors || {};\n const builtInErrorKeys = ['required', 'minlength', 'maxlength', 'email', 'pattern'];\n const remaining: ValidationErrors = {};\n for (const key of builtInErrorKeys) {\n if (errors[key] !== undefined) {\n remaining[key] = errors[key];\n }\n }\n control.setErrors(Object.keys(remaining).length ? remaining : null);\n }\n \n\n getErrorMessage(label?: string): string | null {\n if (!this.errors) return null;\n const displayLabel = FxUtils.isStringEmpty(label ?? '') ? 'This field' : label;\n const defaultMessages: ErrorMessages = {\n required: `${displayLabel} is required`,\n minlength: `${displayLabel} minimum length is ${this.errors['minlength']?.requiredLength}`,\n email: \"Please enter a valid email\"\n }\n const messages = { ...defaultMessages, ...this.validationError, ...this.errorMessages };\n const firstKey = Object.keys(this.errors)[0];\n return messages[firstKey] || `Invalid ${label ?? 'value'}`;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n Self,\n} from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-checkbox',\n standalone: false,\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n})\nexport class CheckboxComponent extends FxComponent<any> implements AfterViewInit {\n @Input() label = '';\n @Input() disabled = false;\n @Input() rounded: boolean;\n @Output() valueChange = new EventEmitter<boolean>();\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n this.value = checked;\n this.onChange(checked);\n this.valueChange.emit(checked);\n }\n\n markTouched() {\n this.onTouched();\n }\n}\n","<label\n class=\"flex items-center gap-normal cursor-pointer select-none\"\n [class.opacity-50]=\"disabled\"\n [class.cursor-not-allowed]=\"disabled\"\n>\n <input\n type=\"checkbox\"\n class=\"hidden\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onTouched()\"\n />\n <span\n class=\"relative w-4 h-4 border rounded-full transition-colors duration-150 shrink-0\"\n [ngClass]=\"{\n 'rounded-full': rounded,\n 'rounded-sm': !rounded,\n 'border-border-strong bg-transparent': !value,\n 'border-border-selected bg-border-selected': value\n }\"\n >\n <!-- Keep SVG space reserved always -->\n <span class=\"absolute inset-0 flex items-center justify-center\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"text-bg-primary w-4 h-4 transition-opacity duration-150\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [style.opacity]=\"value ? 1 : 0\"\n >\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </span>\n </span>\n\n @if(label){<span class=\"mb-0 txt-field-label\">{{ label }}</span>}\n</label>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-circle-progress-bar',\n standalone: false,\n templateUrl: './circle-progress-bar.component.html',\n styleUrl: './circle-progress-bar.component.scss'\n})\nexport class CircleProgressBar {\n @Input() percent = 0;\n @Input() showPercent: boolean = false;\n\n readonly radius = 35;\n readonly stroke = 10;\n readonly normalizedRadius = this.radius - this.stroke / 2;\n readonly circumference = 2 * Math.PI * this.normalizedRadius;\n\n get dashOffset(): number {\n const clamped = Math.max(0, Math.min(100, this.percent));\n return this.circumference - (clamped / 100) * this.circumference;\n }\n\n get ariaLabel(): string {\n return `${Math.round(this.percent)}%`;\n }\n}\n","<div class=\"flex items-center justify-center w-full h-full\">\n <svg\n class=\"transform -rotate-90 block\"\n [attr.viewBox]=\"'0 0 ' + radius * 2 + ' ' + radius * 2\"\n width=\"100%\"\n height=\"100%\"\n >\n <circle\n class=\"opacity-20\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.r]=\"normalizedRadius\"\n [attr.stroke-width]=\"stroke\"\n fill=\"transparent\"\n stroke=\"currentColor\"\n ></circle>\n\n <circle\n class=\"stroke-current\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.r]=\"normalizedRadius\"\n [attr.stroke-width]=\"stroke\"\n fill=\"transparent\"\n stroke-linecap=\"round\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"dashOffset\"\n style=\"transition: stroke-dashoffset 300ms linear\"\n ></circle>\n\n @if(showPercent){\n <text\n [attr.x]=\"radius\"\n [attr.y]=\"radius\"\n dominant-baseline=\"central\"\n text-anchor=\"middle\"\n class=\"text-xs font-medium\"\n fill=\"currentColor\"\n >\n {{ percent }}%\n </text>\n }\n </svg>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ErrorMessages, FxComponent } from '../fx-component.component';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-datetime-picker',\n standalone: false,\n templateUrl: './datetime-picker.component.html',\n styleUrl: './datetime-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatetimePicker extends FxComponent<any> implements AfterViewInit, OnInit {\n @Input() label?: string;\n @Input() placeholder = 'Select date and time';\n @Input() required = false;\n @Input() type: any = 'both';\n @Input() disabled: boolean = false;\n @Input() override errorMessages: ErrorMessages = {};\n @Input() validateFn: (date: string) => ValidationErrors | null\n\n startAt: any\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngOnInit(): void {\n }\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.ref.detectChanges();\n })\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onBlur() { \n this.onTouched()\n this.validate(this.validateFn);\n }\n\n override writeValue(value: any): void {\n this.value = value ?? '';\n this.startAt = value ?? '';\n console.log('startAt: ', this.startAt);\n this.ref.markForCheck();\n }\n\n onValueChange(date: any): void {\n if (this.disabled) return;\n this.value = date\n this.onChange(date);\n console.log('date: ', date);\n this.onTouched();\n }\n}\n","<div class=\"flex flex-col mb-4 w-full text-left\">\n @if (label){\n <label class=\"txt-field-label\">\n {{ label }}\n <span *ngIf=\"required\" class=\"txt-required\">*</span>\n </label>\n }\n\n <div class=\"relative\">\n <input\n [owlDateTimeTrigger]=\"picker\"\n [owlDateTime]=\"picker\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n [value]=\"value\"\n readonly\n class=\"input-default\"\n />\n </div>\n <owl-date-time\n #picker\n [startAt]=\"startAt\"\n [pickerType]=\"type\"\n (afterPickerClosed)=\"onValueChange($event)\"\n ></owl-date-time>\n <div *ngIf=\"invalid\" class=\"txt-invalid\">{{ getErrorMessage(label) }}</div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type UploadResult = {\n files: File[];\n accepted: File[];\n rejected: { file: File; reason: string }[];\n };\n\n@Component({\n selector: 'fx-ui-dnd-upload',\n standalone: false,\n templateUrl: './dnd-upload.component.html',\n styleUrl: './dnd-upload.component.scss',\n})\nexport class DndUploadComponent {\n @Input() multiple = false;\n @Input() accept = '';\n @Input() maxSizeMB = 10;\n @Input() strictSize = true;\n\n @Output() fileDrop = new EventEmitter<File[]>();\n @Output() fileClick = new EventEmitter<void>();\n @Output() uploadComplete = new EventEmitter<File[]>();\n @Output() uploadError = new EventEmitter<{ file: File; reason: string }>();\n\n isDragOver = false;\n private isOpening = false;\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n this.isDragOver = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n this.isDragOver = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.isDragOver = false;\n\n if (!event.dataTransfer?.files?.length) return;\n const files = Array.from(event.dataTransfer.files);\n this.processFiles(files);\n }\n\n onAreaClick(inputEl: HTMLInputElement | null, event?: Event) {\n if (this.isOpening) return;\n this.isOpening = true;\n\n this.fileClick.emit();\n (event?.currentTarget as HTMLElement)?.blur?.();\n\n setTimeout(() => {\n inputEl?.click();\n this.isOpening = false;\n }, 0);\n }\n\n onFileSelected(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files?.length) return;\n const files = Array.from(input.files);\n this.processFiles(files);\n input.value = '';\n }\n\n private processFiles(files: File[]) {\n const valid: File[] = [];\n \n const acceptedTypes = this.accept\n .split(',')\n .map(t => t.trim().toLowerCase())\n .filter(t => t);\n \n for (const file of files) {\n const sizeMB = file.size / 1024 / 1024;\n if (this.strictSize && sizeMB > this.maxSizeMB) {\n this.uploadError.emit({\n file,\n reason: `File too large: ${sizeMB.toFixed(2)} MB > ${this.maxSizeMB} MB`\n });\n continue;\n }\n if (acceptedTypes.length && !this.isAccepted(file, acceptedTypes)) {\n this.uploadError.emit({\n file,\n reason: `File type not allowed: \"${file.name}\"`\n });\n continue;\n }\n valid.push(file);\n }\n if (valid.length) {\n this.fileDrop.emit(valid);\n this.onUpload(valid);\n }\n }\n\n private onUpload(files: File[]) {\n console.log('Uploading files:', files);\n this.uploadComplete.emit(files);\n }\n\n private isAccepted(file: File, accepted: string[]): boolean {\n const fileType = file.type.toLowerCase();\n const fileExt = '.' + file.name.split('.').pop()!.toLowerCase();\n \n return accepted.some(a => {\n if (a.startsWith('.')) {\n return a === fileExt;\n }\n if (a.endsWith('/*')) {\n return fileType.startsWith(a.replace('/*', ''));\n }\n return a === fileType;\n });\n }\n}\n","<div\n class=\"block w-full\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n>\n <div\n role=\"button\"\n tabindex=\"0\"\n class=\"flex flex-col items-center justify-center gap-1 border-2 border-dashed rounded-md p-4 cursor-pointer select-none outline-none focus:ring-2 focus:ring-primary\"\n [ngClass]=\"{\n 'border-border-default bg-bg-hover': !isDragOver,\n 'border-border-interactive bg-secondary': isDragOver\n }\"\n (click)=\"onAreaClick(fileInput, $event)\"\n (keydown.enter)=\"onAreaClick(fileInput, $event)\"\n >\n <div class=\"text-sm text-text-link font-medium\">\n Click to upload <span class=\"text-text-secondary opacity-50\">or drag and drop</span>\n </div>\n <div class=\"text-xs text-text-secondary\">\n Allowed: {{ accept || 'any file type' }} (max {{ maxSizeMB }} MB)\n </div>\n\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n [attr.multiple]=\"multiple ? '' : null\"\n [attr.accept]=\"accept\"\n (change)=\"onFileSelected($event)\"\n />\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Node, Edge, Vflow, Connection } from 'ngx-vflow';\n\n@Component({\n selector: 'fx-ui-flow-connection',\n standalone: false,\n templateUrl: './flow-connection.component.html',\n styleUrl: './flow-connection.component.scss',\n})\nexport class FlowConnection {\n @Input() nodes: Node[] = [];\n @Input() edges: Edge[] = [];\n @Input() backgroundColor: any = '--bg-hover-primary'\n @Input() view: any = ['100%', '400px'];\n\n handleConnection(connection: Connection) {\n this.edges = [\n ...this.edges,\n {\n id: `${connection.source} -> ${connection.target}`,\n ...connection,\n },\n ];\n }\n}\n","<vflow\n [background]=\"{\n type: 'solid',\n color: `rgba(var(${backgroundColor})`\n}\"\n [nodes]=\"nodes\"\n [edges]=\"edges\"\n (onConnect)=\"handleConnection($event)\"\n [view]=\"view\"\n/>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n Self,\n} from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\nimport { FxComponent } from '../fx-component.component';\n\n@Component({\n selector: 'fx-ui-input',\n standalone: false,\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.css'],\n})\nexport class InputComponent extends FxComponent<string> implements AfterViewInit {\n @Input() label = '';\n @Input() type = 'text';\n @Input() placeholder = '';\n @Input() override errorMessages: { [key: string]: string } = {};\n @Input() required: string | boolean = false;\n @Input() disabled = false;\n @Input() iconClass?: string = 'material-symbols-outlined';\n @Input() suffixIcon?: string;\n @Input() class?: any;\n @Input() maxlength?: number;\n @Input() validateFn?: (value: string) => ValidationErrors | null;\n @Output() blurred = new EventEmitter<void>();\n @Output() focused = new EventEmitter<void>();\n @Output() suffixClick = new EventEmitter<void>();\n\n showPassword = false;\n validateError: ValidationErrors | null = null; \n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n let newValue = input.value;\n\n if (this.maxlength && newValue.length > this.maxlength) {\n newValue = newValue.slice(0, this.maxlength);\n input.value = newValue;\n }\n\n this.value = newValue;\n this.onChange(this.value);\n }\n\n onFocus() {\n this.clearErrors();\n this.focused.emit();\n }\n\n onBlur() {\n this.onTouched();\n this.blurred.emit();\n if (this.validateFn) {\n this.validateError = this.validateFn(this.value);\n this.validate(this.validateFn);\n }\n }\n\n togglePassword(): void {\n this.showPassword = !this.showPassword;\n }\n\n onSuffixClick(): void {\n if (this.type === 'password') {\n this.togglePassword();\n } else {\n this.suffixClick.emit();\n }\n }\n\n get displayType(): string {\n if (this.type === 'password' && this.showPassword) return 'text';\n if (this.type === 'otp') return 'number';\n return this.type;\n }\n}\n","<div class=\"mb-4 text-left w-full text-text-primary\" [class]=\"class\">\n @if(label){<label class=\"block txt-field-label\">\n {{ label }}\n @if (required) {<span class=\"txt-required\">*</span>}\n </label>\n }\n\n <div class=\"relative\">\n <input\n appTrimOnBlur\n [appTrimOnBlurCollapse]=\"true\"\n [type]=\"displayType\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.maxlength]=\"maxlength\"\n [class]=\"type === 'otp' ? 'input-otp' : 'input-default'\"\n [ngClass]=\"{\n 'input-invalid': invalid,\n 'pr-8': type === 'password' || suffixIcon,\n 'txt-otp-input': type === 'otp'\n }\"\n />\n <button\n type=\"button\"\n class=\"absolute inset-y-0 right-2 flex items-center text-text-primary hover:text-text-secondary\"\n (click)=\"onSuffixClick()\"\n [disabled]=\"disabled\"\n >\n @if (type === 'password') {\n <i class=\"material-symbols-outlined text-lg select-none\">{{\n showPassword ? 'visibility_off' : 'visibility'\n }}</i>\n } @else if (suffixIcon) {\n <i [class]=\"iconClass\" class=\"text-lg select-none\">{{ suffixIcon }}</i>\n }\n </button>\n </div>\n\n @if (invalid){\n <div class=\"txt-invalid\">\n {{ getErrorMessage(label) }}\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-loading-panel',\n standalone: false,\n templateUrl: './loading-panel.component.html',\n styleUrl: './loading-panel.component.scss'\n})\nexport class LoadingPanel {\n @Input() show = false;\n @Input() message?: string = \"Loading\";\n}\n","<!-- Full-screen glass overlay -->\n<div\n *ngIf=\"show\"\n class=\"fixed inset-0 z-50 flex items-center justify-center\"\n aria-hidden=\"false\"\n role=\"alert\"\n aria-busy=\"true\"\n>\n <div class=\"absolute inset-0 bg-bg-primary/30 backdrop-blur-xl\" aria-hidden=\"true\"></div>\n\n <div\n class=\"relative z-10 flex flex-col items-center gap-4 p-6 rounded-2xl shadow-xl bg-bg-primary/70 border border-border-strong backdrop-bg-primary/70\"\n style=\"min-width: 220px; max-width: 90%\"\n >\n <svg fill=\"rgb(var(--primary))\" width=\"50\" height=\"50\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"4\" cy=\"12\" r=\"0\">\n <animate begin=\"0;spinner_z0Or.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"0;3\" fill=\"freeze\"/>\n <animate begin=\"spinner_OLMs.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"4;12\" fill=\"freeze\"/>\n <animate begin=\"spinner_UHR2.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"12;20\" fill=\"freeze\"/>\n <animate id=\"spinner_lo66\" begin=\"spinner_Aguh.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"3;0\" fill=\"freeze\"/>\n <animate id=\"spinner_z0Or\" begin=\"spinner_lo66.end\" attributeName=\"cx\" dur=\"0.001s\" values=\"20;4\" fill=\"freeze\"/>\n </circle>\n <circle cx=\"4\" cy=\"12\" r=\"3\">\n <animate begin=\"0;spinner_z0Or.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"4;12\" fill=\"freeze\"/>\n <animate begin=\"spinner_OLMs.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"12;20\" fill=\"freeze\"/>\n <animate id=\"spinner_JsnR\" begin=\"spinner_UHR2.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"3;0\" fill=\"freeze\"/>\n <animate id=\"spinner_Aguh\" begin=\"spinner_JsnR.end\" attributeName=\"cx\" dur=\"0.001s\" values=\"20;4\" fill=\"freeze\"/>\n <animate begin=\"spinner_Aguh.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"0;3\" fill=\"freeze\"/>\n </circle>\n <circle cx=\"12\" cy=\"12\" r=\"3\">\n <animate begin=\"0;spinner_z0Or.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"12;20\" fill=\"freeze\"/>\n <animate id=\"spinner_hSjk\" begin=\"spinner_OLMs.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"3;0\" fill=\"freeze\"/>\n <animate id=\"spinner_UHR2\" begin=\"spinner_hSjk.end\" attributeName=\"cx\" dur=\"0.001s\" values=\"20;4\" fill=\"freeze\"/>\n <animate begin=\"spinner_UHR2.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"0;3\" fill=\"freeze\"/>\n <animate begin=\"spinner_Aguh.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"4;12\" fill=\"freeze\"/>\n </circle>\n <circle cx=\"20\" cy=\"12\" r=\"3\">\n <animate id=\"spinner_4v5M\" begin=\"0;spinner_z0Or.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"3;0\" fill=\"freeze\"/>\n <animate id=\"spinner_OLMs\" begin=\"spinner_4v5M.end\" attributeName=\"cx\" dur=\"0.001s\" values=\"20;4\" fill=\"freeze\"/>\n <animate begin=\"spinner_OLMs.end\" attributeName=\"r\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"0;3\" fill=\"freeze\"/>\n <animate begin=\"spinner_UHR2.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"4;12\" fill=\"freeze\"/>\n <animate begin=\"spinner_Aguh.end\" attributeName=\"cx\" calcMode=\"spline\" dur=\"0.5s\" keySplines=\".36,.6,.31,1\" values=\"12;20\" fill=\"freeze\"/>\n </circle>\n </svg>\n \n\n <div *ngIf=\"message\" class=\"text-sm text-text-primary text-center\">\n {{ message }}\n </div>\n </div>\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { ErrorMessages, FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-radio-toggle, [fx-ui-radio-toggle]',\n standalone: false,\n templateUrl: './radio-button-toggle.component.html',\n styleUrl: './radio-button-toggle.component.scss',\n})\nexport class RadioButtonToggleComponent extends FxComponent<any> implements AfterViewInit {\n @Input() label?: string;\n @Input() required?: boolean = false;\n @Input() options: { label: string; value: any; icon?: any }[] = [];\n @Input() disabled: boolean = false;\n @Input() override errorMessages: ErrorMessages = {};\n @Input() class?: any\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectValue(value: any): void {\n if (this.disabled) return;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n}\n","<div class=\"flex flex-col text-left mb-4 w-full\" [class]=\"class\">\n @if(label){<label class=\"txt-field-label\">\n {{ label }}\n @if(required) {<span class=\"txt-required\">*</span>} </label\n >}\n\n <div class=\"inline-flex w-full rounded-lg overflow-hidden\" role=\"radiogroup\">\n @for(opt of options; track opt){<button\n type=\"button\"\n role=\"radio\"\n [attr.aria-checked]=\"value === opt.value\"\n (click)=\"onSelectValue(opt.value)\"\n [disabled]=\"disabled\"\n [class.text-gray-900]=\"value !== opt.value\"\n class=\"flex-1 bg-bg-primary flex items-center pl-normal gap-normal h-10 rounded-md hover:bg-bg-hover transition-all duration-150 disabled:opacity-60 disabled:cursor-not-allowed\"\n >\n <span\n [ngClass]=\"{\n 'radio-checked': value === opt.value,\n 'radio-uncheck': value !== opt.value\n }\"\n class=\"radio-container\"\n >\n @if(value === opt.value) {<span class=\"radio-dot\"></span>}\n </span>\n\n <span class=\"txt-field-label mb-0\">{{ opt.label }}</span></button\n >}\n </div>\n\n @if(invalid){\n <div class=\"txt-invalid\">{{ getErrorMessage(label) }}</div>\n }\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, Input, Optional, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ErrorMessages, FxComponent } from '../fx-component.component';\n\nexport interface IRadioButton {\n label: string;\n value: any;\n description?: string;\n}\n\n@Component({\n selector: 'fx-ui-radio',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.css'],\n standalone: false\n})\nexport class RadioButtonComponent extends FxComponent<IRadioButton> implements AfterViewInit {\n @Input() label?: string;\n @Input() required?: boolean = false;\n @Input() options: { label: string; value: any; icon?: any }[] = [];\n @Input() disabled: boolean = false;\n @Input() override errorMessages: ErrorMessages = {};\n @Input() class?: any\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectValue(value: any): void {\n if (this.disabled) return;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n}\n","<div class=\"w-full rounded-lg overflow-hidden\" [class]=\"class\" role=\"radiogroup\">\n @if (label){\n <label class=\"txt-field-label\">\n {{ label }}\n @if(required){<span class=\"txt-required\">*</span>} </label\n >}\n\n <button\n *ngFor=\"let opt of options\"\n type=\"button\"\n role=\"radio\"\n [attr.aria-checked]=\"value === opt.value\"\n (click)=\"onSelectValue(opt.value)\"\n [disabled]=\"disabled\"\n [class.text-gray-900]=\"value !== opt.value\"\n class=\"flex-1 px-normal w-full flex items-center gap-normal h-10 rounded-md hover:bg-bg-hover transition-all duration-150 disabled:opacity-60 disabled:cursor-not-allowed\"\n >\n <span\n [ngClass]=\"{\n 'radio-checked': value === opt.value,\n 'radio-uncheck': value !== opt.value\n }\"\n class=\"radio-container\"\n >\n @if(value === opt.value) {<span class=\"radio-dot\"></span>}\n </span>\n\n <span class=\"txt-default mb-0\">{{ opt.label }}</span>\n </button>\n @if (invalid){\n <div class=\"txt-invalid\">\n {{ getErrorMessage(label) }}\n </div>\n }\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n Output,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\nimport { QuillStyleLoaderService } from '../../../core/services/quill-style-loader.service';\nimport { isPlatformBrowser } from '@angular/common';\nimport { FxUtils } from '../../../core/utils';\n\n@Component({\n selector: 'fx-ui-rich-text-area',\n standalone: false,\n templateUrl: './rich-text-area.component.html',\n styleUrl: './rich-text-area.component.scss',\n})\nexport class RichTextAreaComponent extends FxComponent<any> implements AfterViewInit {\n @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef<HTMLDivElement>;\n\n @Input() placeholder = 'Write something...';\n\n @Input() toolbarOptions: any = [\n // ['undo', 'redo'],\n [{ 'header': [1, 2, 3, 4, 5, 6, false] }],\n [{ 'font': [] }],\n [{ 'size': ['small', false, 'large', 'huge'] }],\n [{ 'align': [] }],\n [{ 'color': [] }, { 'background': [] }],\n ['bold', 'italic', 'underline', 'strike'],\n ['blockquote', 'code-block'],\n [{ 'list': 'ordered' }, { 'list': 'bullet' }],\n [{ 'indent': '-1' }, { 'indent': '+1' }],\n ['link', 'image'],\n ['clean']\n ];\n\n @Output() contentChange = new EventEmitter<string>();\n\n private quillInstance: any;\n\n constructor(\n ngControl: NgControl,\n private cdr: ChangeDetectorRef,\n private styleLoader: QuillStyleLoaderService,\n @Inject(PLATFORM_ID) private platformId: Object\n ) {\n super(ngControl);\n }\n\n async ngAfterViewInit(): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) return;\n\n await this.styleLoader.load();\n\n const QuillModule = await import('quill');\n const Quill = (QuillModule as any).default || QuillModule;\n\n const icons = Quill.import('ui/icons');\n // icons['undo'] = `<svg viewBox=\"0 0 18 18\"><path d=\"M6.4 5.2H3L6.8 1l3.8 4.2H7.9C10.2 5.4 12 7.4 12 9.8c0 2.7-2.2 4.9-4.9 4.9S2.2 12.5 2.2 9.8H0c0 3.8 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9S10.7 3 7 3v2.2z\"></path></svg>`;\n // icons['redo'] = `<svg viewBox=\"0 0 18 18\"><path d=\"M11.6 5.2H15L11.2 1 7.4 5.2h2.7C7.8 5.4 6 7.4 6 9.8c0 2.7 2.2 4.9 4.9 4.9s4.9-2.2 4.9-4.9H18c0 3.8-3.1 6.9-6.9 6.9S4.2 13.6 4.2 9.8 7.3 3 11 3v2.2z\"></path></svg>`;\n\n this.quillInstance = new Quill(this.editorContainer.nativeElement, {\n theme: 'snow',\n placeholder: this.placeholder,\n modules: {\n history: true,\n toolbar: this.toolbarOptions,\n }\n });\n this.quillInstance.root.style.color = FxUtils.convertColorFromVariable('--text-primary')\n\n const toolbar = this.quillInstance.getModule('toolbar');\n toolbar.addHandler('undo', () => this.quillInstance.history.undo());\n toolbar.addHandler('redo', () => this.quillInstance.history.redo());\n\n if (this.value) {\n this.quillInstance.root.innerHTML = this.value;\n }\n\n this.quillInstance.on('text-change', () => {\n const html = this.quillInstance.root.innerHTML || '';\n this.value = html;\n this.onChange(html);\n this.contentChange.emit(html);\n });\n }\n\n override writeValue(value: any): void {\n this.value = value || '';\n if (this.quillInstance) {\n this.quillInstance.root.innerHTML = this.value;\n }\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (this.quillInstance) {\n this.quillInstance.enable(!isDisabled);\n }\n }\n}\n","<div class=\"w-full rounded-2xl shadow-sm p-1 bg-bg-primary\">\n <div #editorContainer class=\"min-h-[200px] text-base\"></div>\n</div>","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, Optional, Output, Self } from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-search-bar',\n standalone: false,\n templateUrl: './search-bar.component.html',\n styleUrl: './search-bar.component.scss'\n})\nexport class SearchBarComponent extends FxComponent<string> implements AfterViewInit {\n @Input() placeholder: string = 'Search...';\n @Input() disabled: boolean = false\n @Output() search = new EventEmitter<string>();\n @Output() valueChange = new EventEmitter<string>();\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n \n onValueChange(value: string) {\n this.value = value;\n this.setValue(value);\n this.valueChange.emit(value);\n }\n\n onEnterKey() {\n this.onEnter(this.value);\n this.search.emit(this.value.trim());\n }\n\n clear() {\n this.value = '';\n this.setValue(this.value);\n this.valueChange.emit('');\n this.search.emit('');\n }\n}\n","<div class=\"relative\">\n <fx-ui-hero-icon icon=\"magnifying-glass\" [size]=\"18\" class=\"absolute left-1 top-[3px] text-text-primary\"></fx-ui-hero-icon>\n <input\n type=\"text\"\n class=\"input-default px-9\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n (input)=\"onValueChange($any($event.target).value)\"\n (keydown.enter)=\"onEnterKey()\"\n />\n\n <button\n *ngIf=\"value && !disabled\"\n type=\"button\"\n class=\"absolute inset-y-0 right-2 flex items-center text-text-primary hover:text-text-secondary\"\n (click)=\"clear()\"\n aria-label=\"Clear\"\n >\n <i class=\"material-symbols-outlined text-lg select-none\">close</i>\n </button>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport { FxComponent } from '../fx-component.component';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\n\n@Component({\n selector: 'fx-ui-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n standalone: false,\n})\nexport class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit {\n @Input() label = '';\n @Input() placeholder = '';\n @Input() options: { label: string; value: string }[] = [];\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() override errorMessages: { [key: string]: string } = {};\n @Input() required: boolean = false;\n @Input() class?: any;\n @Input() enableSearch: boolean = false;\n @Input() searchFn?: (query: string) => Promise<{ label: string; value: string }[]>;\n\n searchTerm: string = '';\n filteredOptions: { label: string; value: string }[] = [];\n private search$ = new Subject<string>();\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n ngOnInit(): void {\n this.filteredOptions = this.options;\n\n this.search$\n .pipe(debounceTime(300), distinctUntilChanged())\n .subscribe((term) => this.performSearch(term));\n }\n ngAfterViewInit(): void {\n this.ref.detectChanges();\n }\n\n onOpened(open: boolean) {\n if (open) {\n this.filteredOptions = this.options;\n if (this.enableSearch) this.searchTerm = '';\n }\n }\n\n onSearchChange(value: string) {\n if (!this.enableSearch) return;\n this.search$.next(value);\n }\n\n async performSearch(term: string) {\n if (!this.enableSearch) return;\n \n if (!this.searchFn) {\n this.filteredOptions = this.options.filter((o) =>\n o.label?.toLowerCase().includes(term.toLowerCase())\n );\n this.ref.detectChanges();\n return;\n }\n \n const result = await this.searchFn(term);\n this.filteredOptions = result;\n console.log(this.filteredOptions)\n \n Promise.resolve().then(() => this.ref.detectChanges());\n }\n\n onSelectionChange(value: any): void {\n this.value = value;\n this.onChange(this.value);\n }\n\n isSelected(value: string): boolean {\n if (Array.isArray(this.value)) {\n return this.value.includes(value);\n }\n return this.value === value;\n }\n}\n","<div class=\"mb-4 text-left w-full\" [class]=\"class\">\n <label *ngIf=\"label\" class=\"block txt-field-label\">\n {{ label }}\n @if(required) {<span class=\"txt-required\">*</span>}\n </label>\n\n <mat-form-field class=\"fx-select-field w-full shadow-sm\" appearance=\"fill\">\n <mat-select\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [value]=\"value\"\n (selectionChange)=\"onSelectionChange($event.value)\"\n (openedChange)=\"onOpened($event)\"\n (blur)=\"onTouched()\"\n >\n @if(enableSearch){\n <div class=\"px-semi w-full\">\n <input\n type=\"text\"\n [placeholder]=\"'Search'\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearchChange($event)\"\n (click)=\"$event.stopPropagation()\"\n class=\"text-text-primary placeholder:text-text-placeholder w-full bg-bg-primary border-b px-semi py-normal border-border-default focus:outline-none focus:border-border-interactive text-sm text-text-primary tracking-normal ring-0 transition-colors duration-500 ease-in-out\"\n />\n </div>\n }\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option.value\">\n <span class=\"txt-default\">{{ option.label }}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"invalid\" class=\"txt-invalid text-left\">\n {{ getErrorMessage(label) }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-skeleton-table-loading',\n standalone: false,\n templateUrl: './skeleton-table-loading.component.html',\n styleUrl: './skeleton-table-loading.component.scss'\n})\nexport class SkeletonTableLoadingComponent {\n @Input() columns: number = 5;\n @Input() rows: number = 5; \n}\n","<div class=\"w-full animate-pulse space-y-normal\">\n <div\n class=\"grid gap-small\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + columns + ', minmax(0, 1fr))' }\"\n >\n @for(col of [].constructor(columns); track col) {\n <div class=\"h-6 bg-bg-hover rounded\"></div>\n }\n </div>\n\n @for(row of [].constructor(rows); track row) {\n <div\n class=\"grid gap-small\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + columns + ', minmax(0, 1fr))' }\"\n >\n @for(col of [].constructor(columns); track col) {\n <div class=\"h-7 bg-bg-hover rounded\"></div>\n }\n </div>\n }\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\nimport { clamp } from 'lodash';\n\n@Component({\n selector: 'fx-ui-slider',\n standalone: false,\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss'\n})\nexport class SliderComponent extends FxComponent<any> implements AfterViewInit {\n @ViewChild('track', { static: true }) trackRef!: ElementRef<HTMLElement>;\n @ViewChild('thumb', { static: true }) thumbRef!: ElementRef<HTMLElement>;\n\n @Input() min = 0;\n @Input() max = 100;\n @Input() step = 1;\n @Input() vertical = false;\n @Input() disabled: boolean = false;\n @Output() valueChange = new EventEmitter<number>();\n dragging = false;\n\n constructor(ngControl: NgControl, private ref: ChangeDetectorRef) {\n super(ngControl);\n }\n \n ngAfterViewInit(): void {\n this._normalizeValue(this.value);\n this.ref.markForCheck();\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.ref.markForCheck();\n }\n\n override writeValue(value: number): void {\n this.value = this._normalizeValue(value ?? this.min);\n this.ref.markForCheck();\n }\n\n private _normalizeValue(v: number): number {\n if (!Number.isFinite(v)) v = this.min;\n const clamped = clamp(v, this.min, this.max);\n const stepped =\n Math.round((clamped - this.min) / this.step) * this.step + this.min;\n const precision = Math.max(0, this._decimalPlaces(this.step));\n return parseFloat(stepped.toFixed(precision));\n }\n\n private _decimalPlaces(n: number) {\n const s = String(n);\n if (s.indexOf('.') === -1) return 0;\n return s.length - s.indexOf('.') - 1;\n }\n\n /** Pointer events */\n onPointerDown(event: PointerEvent) {\n if (this.disabled) return;\n (event.target as Element).setPointerCapture(event.pointerId);\n this.dragging = true;\n this._setFromPointer(event);\n }\n\n onPointerMove(event: PointerEvent) {\n if (!this.dragging || this.disabled) return;\n this._setFromPointer(event);\n }\n\n onPointerUp(event: PointerEvent) {\n if (this.disabled) return;\n try {\n (event.target as Element).releasePointerCapture(event.pointerId);\n } catch {}\n this.dragging = false;\n this.onTouched();\n }\n\n private _setFromPointer(event: PointerEvent) {\n const newVal = this._coordToValue(event.clientX, event.clientY);\n this._applyValue(newVal);\n }\n\n private _coordToValue(clientX: number, clientY: number) {\n const rect = this.trackRef.nativeElement.getBoundingClientRect();\n let ratio = this.vertical\n ? 1 - (clientY - rect.top) / rect.height\n : (clientX - rect.left) / rect.width;\n ratio = clamp(ratio, 0, 1);\n const raw = this.min + ratio * (this.max - this.min);\n return this._normalizeValue(raw);\n }\n\n onTrackClick(event: MouseEvent) {\n if (this.disabled) return;\n const newVal = this._coordToValue(event.clientX, event.clientY);\n this._applyValue(newVal);\n this.onTouched();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (this.disabled) return;\n const key = ev.key;\n const largeStep = (this.max - this.min) / 10;\n let delta = 0;\n if (key === 'ArrowLeft' || key === 'ArrowDown') delta = -this.step;\n else if (key === 'ArrowRight' || key === 'ArrowUp') delta = this.step;\n else if (key === 'PageDown') delta = -largeStep;\n else if (key === 'PageUp') delta = largeStep;\n else if (key === 'Home') return this._applyValue(this.min);\n else if (key === 'End') return this._applyValue(this.max);\n\n if (delta !== 0) {\n this._applyValue(this.value + delta);\n ev.preventDefault();\n }\n }\n\n private _applyValue(newVal: number) {\n const v = this._normalizeValue(newVal);\n if (v !== this.value) {\n this.value = v;\n this.ref.markForCheck();\n this.valueChange.emit(v);\n this.onChange(v);\n }\n }\n\n get percent(): number {\n if (this.max === this.min) return 0;\n return ((this.value - this.min) / (this.max - this.min)) * 100;\n }\n\n thumbStyle() {\n return this.vertical\n ? { bottom: `${this.percent}%`, transform: 'translateY(50%)' }\n : { left: `${this.percent}%`, transform: 'translateX(-50%)' };\n }\n\n}\n","<div\n class=\"w-full select-none\"\n [class.cursor-not-allowed]=\"disabled\"\n [class.opacity-60]=\"disabled\"\n role=\"group\"\n>\n <div\n #track\n class=\"relative touch-none py-4\"\n (click)=\"onTrackClick($event)\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-orientation]=\"vertical ? 'vertical' : 'horizontal'\"\n >\n <div\n class=\"relative flex items-center\"\n [ngClass]=\"{ 'flex-col h-48': vertical }\"\n >\n <div\n class=\"relative flex-1 rounded-full bg-gray-600 h-2\"\n [ngClass]=\"{ 'w-1 rotate-0 h-full w-auto bg-border-gray-700': vertical }\"\n >\n <div\n class=\"absolute left-0 top-0 h-full rounded-full bg-primary\"\n *ngIf=\"!vertical\"\n [style.width.%]=\"percent\"\n ></div>\n\n <div\n class=\"absolute bottom-0 left-0 w-full rounded-full bg-primary\"\n *ngIf=\"vertical\"\n [style.height.%]=\"percent\"\n style=\"transform-origin: bottom;\"\n ></div>\n\n <button\n #thumb\n type=\"button\"\n class=\"absolute -mt-1 -ml-1.5 w-4 h-4 rounded-full shadow focus:ring-primary bg-primary border-2 border-text-primary\"\n [ngStyle]=\"thumbStyle()\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\"\n [attr.aria-disabled]=\"disabled\"\n tabindex=\"0\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n [disabled]=\"disabled\"\n ></button>\n </div>\n </div>\n </div>\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FxComponent } from '../fx-component.component';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n selector: 'fx-ui-switch',\n standalone: false,\n templateUrl: './switch.component.html',\n styleUrl: './switch.component.scss'\n})\nexport class SwitchComponent extends FxComponent<any> implements AfterViewInit {\n @Input() disabled: boolean = false;\n @Output() onSwitch: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n constructor(ngControl: NgControl, private cdr: ChangeDetectorRef) {\n super(ngControl);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle() {\n if (this.disabled) return;\n this.value = !this.value;\n this.onSwitch.emit(this.value);\n this.onChange(this.value);\n this.onTouched();\n }\n}\n","<div\n class=\"relative flex items-center w-10 h-5 rounded-full transition-colors duration-300 cursor-pointer\"\n [ngClass]=\"{\n 'bg-success': value && !disabled,\n 'bg-button-default': !value && !disabled,\n 'bg-bg-hover': disabled\n }\"\n (click)=\"toggle()\"\n>\n @if(value) {\n <i style=\"font-size: 20px;\" class=\"material-symbols-outlined absolute left-0.5 top-0 text-text-inverse\">check</i>\n \n }\n @if(!value) {\n <i style=\"font-size: 20px;\" class=\"material-symbols-outlined absolute right-0.5 top-0 text-text-inverse\">close</i>\n }\n <div\n class=\"absolute top-0.5 left-0.5 w-4 h-4 bg-text-inverse rounded-full shadow-md transform transition-transform duration-300\"\n [ngClass]=\"{ 'translate-x-5': value }\"\n ></div>\n</div>\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-tab',\n standalone: false,\n templateUrl: './tab.component.html',\n})\nexport class TabComponent {\n @Input() label!: string;\n @Input() icon?: string;\n @ViewChild(TemplateRef, { static: true }) content!: TemplateRef<any>;\n}\n","<ng-template><ng-content></ng-content></ng-template>\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n QueryList,\n Renderer2,\n ViewChild,\n HostListener\n} from '@angular/core';\nimport { TabComponent } from '../tab-component/tab.component';\n\n@Component({\n selector: 'fx-ui-tab-group',\n standalone: false,\n templateUrl: './tab-group.component.html',\n styleUrl: './tab-group.component.scss',\n})\nexport class TabGroupComponent implements AfterContentInit {\n @ContentChildren(TabComponent) tabs!: QueryList<TabComponent>;\n @Input() activeIndex = 0;\n\n @ViewChild('tabList', { static: true }) tabListRef!: ElementRef<HTMLElement>;\n @ViewChild('underline', { static: true }) underlineRef!: ElementRef<HTMLElement>;\n\n canScrollLeft = false;\n canScrollRight = false;\n\n private animateDelay = 50;\n private scrollAmount = 160;\n private sidePadding = 32; // same as button width space\n\n constructor(private renderer: Renderer2) {}\n\n ngAfterContentInit() {\n setTimeout(() => {\n this.updateScrollButtons();\n this.updateUnderlinePosition();\n this.scrollToActiveTab(false);\n }, 0);\n }\n\n selectTab(index: number) {\n this.activeIndex = index;\n this.scrollToActiveTab(true);\n }\n\n private updateUnderlinePosition() {\n const tabListEl = this.tabListRef.nativeElement;\n const underlineEl = this.underlineRef.nativeElement;\n const tabButtons = tabListEl.querySelectorAll('.tab-btn');\n const activeTab = tabButtons[this.activeIndex] as HTMLElement | undefined;\n \n if (!activeTab || !underlineEl) return;\n \n const tabRect = activeTab.getBoundingClientRect();\n const containerRect = tabListEl.getBoundingClientRect();\n \n // Calculate X position relative to scrollable area (not viewport)\n const translateX = tabRect.left - containerRect.left + tabListEl.scrollLeft - this.sidePadding;\n \n this.renderer.setStyle(underlineEl, 'width', `${activeTab.offsetWidth}px`);\n this.renderer.setStyle(underlineEl, 'transform', `translateX(${translateX}px)`);\n }\n \n\n private scrollToActiveTab(updateUnderlineAfter = true) {\n const tabListEl = this.tabListRef.nativeElement;\n const tabButtons = tabListEl.querySelectorAll('.tab-btn');\n const activeTab = tabButtons[this.activeIndex] as HTMLElement | undefined;\n\n if (!activeTab) return;\n\n const elLeft = activeTab.offsetLeft;\n const elRight = elLeft + activeTab.offsetWidth;\n const containerLeft = tabListEl.scrollLeft;\n const containerRight = containerLeft + tabListEl.clientWidth;\n\n if (elLeft < containerLeft) {\n tabListEl.scrollTo({ left: Math.max(elLeft - 32, 0), behavior: 'smooth' });\n } else if (elRight > containerRight) {\n const target = elRight - tabListEl.clientWidth + 32;\n tabListEl.scrollTo({ left: target, behavior: 'smooth' });\n }\n\n setTimeout(() => {\n this.updateScrollButtons();\n this.updateUnderlinePosition();\n }, updateUnderlineAfter ? this.animateDelay : 0);\n }\n\n scroll(direction: 'left' | 'right') {\n const tabListEl = this.tabListRef.nativeElement;\n const delta = direction === 'left' ? -this.scrollAmount : this.scrollAmount;\n tabListEl.scrollBy({ left: delta, behavior: 'smooth' });\n\n setTimeout(() => {\n this.updateScrollButtons();\n this.updateUnderlinePosition();\n }, this.animateDelay);\n }\n\n onScroll() {\n this.updateScrollButtons();\n this.updateUnderlinePosition();\n }\n\n private updateScrollButtons() {\n const el = this.tabListRef.nativeElement;\n const scrollLeft = el.scrollLeft;\n const maxScrollLeft = el.scrollWidth - el.clientWidth;\n \n this.canScrollLeft = scrollLeft > 2;\n \n this.canScrollRight = scrollLeft < maxScrollLeft - 2;\n }\n\n @HostListener('window:resize')\n onResize() {\n this.updateUnderlinePosition();\n }\n}\n","<div class=\"relative\">\n <!-- Left scroll button -->\n <button\n class=\"left-scroll-button\"\n type=\"button\"\n (click)=\"scroll('left')\"\n [style.opacity]=\"canScrollLeft ? 1 : 0\"\n [style.pointerEvents]=\"canScrollLeft ? 'auto' : 'none'\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-5 w-5 text-text-primary\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n\n <div\n #tabList\n class=\"relative flex overflow-x-auto no-scrollbar scroll-smooth\"\n (scroll)=\"onScroll()\"\n >\n <button\n *ngFor=\"let tab of tabs.toArray(); let i = index\"\n (click)=\"selectTab(i)\"\n class=\"tab-btn tab-bar-btn\"\n >\n <div class=\"flex flex-row items-center justify-center\">\n @if(tab.icon) {<fx-ui-hero-icon\n [icon]=\"tab.icon\"\n [size]=\"20\"\n class=\"flex mr-[2px]\"\n [ngClass]=\"{\n 'text-primary mb-small': i === activeIndex,\n 'text-text-placeholder': i !== activeIndex\n }\"\n ></fx-ui-hero-icon\n >}\n <div [ngClass]=\"i === activeIndex ? 'txt-field-label text-primary' : 'txt-placeholder'\">{{ tab.label }}</div>\n </div>\n </button>\n\n <span #underline class=\"underline\" style=\"width: 0; transform: translateX(0)\"></span>\n </div>\n\n <button\n class=\"right-scroll-button\"\n type=\"button\"\n (click)=\"scroll('right')\"\n [style.opacity]=\"canScrollRight ? 1 : 0\"\n [style.pointerEvents]=\"canScrollRight ? 'auto' : 'none'\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-5 w-5 text-text-primary\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n</div>\n\n<!-- Tab content -->\n<div class=\"transition-all duration-300 ease-in-out mt-4\">\n <ng-container *ngFor=\"let tab of tabs.toArray(); let i = index\">\n <div *ngIf=\"i === activeIndex\" class=\"animate-fadeIn\">\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </ng-container>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fx-ui-table-cell',\n standalone: false,\n templateUrl: './table-cell.component.html',\n styleUrl: './table-cell.component.scss'\n})\nexport class TableCell {\n @Input({ required: true }) loading!: boolean;\n @Input() skeletonClass = 'h-4 w-full';\n}\n","@if (!loading) {\n <div animate.enter=\"fade-in-animation\" class=\"inline-block my-normal\">\n <ng-content />\n </div>\n} @else {\n <div animate.enter=\"fade-in-animation\" class=\"skeleton-load my-semi\" [class]=\"skeletonClass\"></div>\n}\n","import { Component, Input } from '@angular/core';\n\nexport type TagType =\n | 'success'\n | 'warning'\n | 'critical'\n | 'information'\n | 'discovery'\n | 'default'\n | 'danger';\n\n@Component({\n selector: 'fx-ui-tag',\n standalone: false,\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.scss',\n})\nexport class TagComponent {\n @Input() label: string;\n @Input() type: TagType = 'default';\n @Input() rounded: boolean = true;\n @Input() icon?: any;\n @Input() solid: boolean = false;\n}\n","<div\n [class]=\"`flex flex-row gap-small ${rounded ? 'tag-round' : 'tag-square'} tag-${type}${solid ? '-solid' : ''}`\"\n>\n @if(icon){\n <fx-ui-hero-icon\n [class]=\"`flex txt-tag-${type} ${solid ? 'text-white': ''}`\"\n [icon]=\"icon\"\n [size]=\"18\"\n ></fx-ui-hero-icon>\n }\n\n <div [class]=\"`txt-tag-${type} ${solid ? 'text-white': ''}`\">\n {{ label }}\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\n\nexport interface TreeNode {\n id: string;\n label: string;\n status?: string;\n children?: TreeNode[];\n}\n\n@Component({\n selector: 'fx-ui-tree-diagram',\n standalone: false,\n templateUrl: './tree-diagram.component.html',\n styleUrl: './tree-diagram.component.scss',\n})\nexport class TreeDiagram implements AfterViewInit, OnDestroy {\n @Input() data!: any;\n\n @ViewChild('container') container!: ElementRef;\n @ViewChild('root') root!: ElementRef;\n @ViewChildren('child') children!: QueryList<ElementRef>;\n\n lines: any[] = [];\n svgWidth = 0;\n svgHeight = 0;\n\n private resizeObserver!: ResizeObserver;\n private rafId?: number;\n\n constructor(private zone: NgZone, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect;\n\n if (rect.width === 0 || rect.height === 0) return;\n\n this.scheduleDraw();\n });\n\n this.resizeObserver.observe(this.container.nativeElement);\n\n setTimeout(() => this.scheduleDraw(), 50);\n setTimeout(() => this.scheduleDraw(), 150);\n });\n\n this.children.changes.subscribe(() => this.scheduleDraw());\n }\n\n ngOnDestroy() {\n this.resizeObserver?.disconnect();\n if (this.rafId) cancelAnimationFrame(this.rafId);\n }\n\n private scheduleDraw() {\n if (this.rafId) cancelAnimationFrame(this.rafId);\n\n this.rafId = requestAnimationFrame(() => {\n this.drawLines();\n });\n }\n\n private drawLines() {\n if (!this.root || !this.children.length) return;\n \n const containerEl = this.container.nativeElement;\n const rect = containerEl.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) return;\n \n const rootRect = this.root.nativeElement.getBoundingClientRect();\n \n const rootX = rootRect.left + rootRect.width / 2 - rect.left;\n const rootBottomY = rootRect.bottom - rect.top;\n \n const childRects = this.children.map(c =>\n c.nativeElement.getBoundingClientRect()\n );\n \n const childCenters = childRects.map(r => ({\n x: r.left + r.width / 2 - rect.left,\n y: r.top - rect.top\n }));\n \n const horizontalY = childCenters[0].y - 24;\n \n this.zone.run(() => {\n this.svgWidth = rect.width;\n this.svgHeight = rect.height;\n \n this.lines = [\n {\n x1: rootX,\n y1: rootBottomY,\n x2: rootX,\n y2: horizontalY\n },\n {\n x1: childCenters[0].x,\n y1: horizontalY,\n x2: childCenters[childCenters.length - 1].x,\n y2: horizontalY\n },\n ...childCenters.map(c => ({\n x1: c.x,\n y1: horizontalY,\n x2: c.x,\n y2: c.y\n }))\n ];\n });\n\n this.cdr.detectChanges();\n } \n}\n","<div class=\"relative p-8\" #container>\n\n <!-- ROOT -->\n <div\n #root\n class=\"mx-auto w-fit bg-blue-600 text-white px-7 py-3 rounded-md font-semibold text-center\"\n >\n {{ data.label }}\n </div>\n\n <!-- CHILDREN -->\n <div class=\"mt-16 flex justify-center gap-16\">\n <div\n *ngFor=\"let child of data.children\"\n #child\n class=\"w-48 bg-rose-600 text-white px-4 py-4 rounded-lg text-center\"\n >\n <div class=\"font-semibold text-lg\">{{ child.label }}</div>\n <div class=\"mt-1 text-sm opacity-90\">{{ child.status }}</div>\n </div>\n </div>\n\n <!-- SVG CONNECTORS -->\n <svg\n class=\"absolute inset-0 pointer-events-none\"\n [attr.width]=\"svgWidth\"\n [attr.height]=\"svgHeight\"\n >\n <line\n *ngFor=\"let line of lines\"\n [attr.x1]=\"line.x1\"\n [attr.y1]=\"line.y1\"\n [attr.x2]=\"line.x2\"\n [attr.y2]=\"line.y2\"\n stroke=\"#1f2937\"\n stroke-width=\"2\"\n />\n </svg>\n\n</div>\n","import { ButtonComponent } from './button/button.component';\nimport { ChartComponent } from './chart/chart.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { CircleProgressBar } from './circle-progress-bar/circle-progress-bar.component';\nimport { DatetimePicker } from './datetime-picker/datetime-picker.component';\nimport { DndUploadComponent } from './dnd-upload/dnd-upload.component';\nimport { FlowConnection } from './flow-connection/flow-connection.component';\nimport { HeroIconComponent } from './hero-icon/hero-icon.component';\nimport { InputComponent } from './input/input.component';\nimport { LoadingPanel } from './loading-panel/loading-panel.component';\nimport { RadioButtonToggleComponent } from './radio-button-toggle/radio-button-toggle.component';\nimport { RadioButtonComponent } from './radio-button/radio-button.component';\nimport { RichTextAreaComponent } from './rich-text-area/rich-text-area.component';\nimport { SearchBarComponent } from './search-bar/search-bar.component';\nimport { SelectComponent } from './select/select.component';\nimport { SkeletonTableLoadingComponent } from './skeleton-table-loading/skeleton-table-loading.component';\nimport { SliderComponent } from './slider/slider.component';\nimport { SwitchComponent } from './switch/switch.component';\nimport { TabComponent } from './tab-component/tab.component';\nimport { TabGroupComponent } from './tab-group/tab-group.component';\nimport { TableCell } from './table-cell/table-cell.component';\nimport { TagComponent } from './tag/tag.component';\nimport { ToastContainerComponent } from './toast-container/toast-container.component';\nimport { ToastComponent } from './toast/toast.component';\nimport { TreeDiagram } from './tree-diagram/tree-diagram.component';\n\nexport { ButtonComponent } from './button/button.component';\nexport { ChartComponent } from './chart/chart.component';\nexport { CheckboxComponent } from './checkbox/checkbox.component';\nexport { DatetimePicker } from './datetime-picker/datetime-picker.component';\nexport { DndUploadComponent } from './dnd-upload/dnd-upload.component';\nexport { HeroIconComponent } from './hero-icon/hero-icon.component';\nexport { InputComponent } from './input/input.component';\nexport { LoadingPanel } from './loading-panel/loading-panel.component';\nexport { RadioButtonToggleComponent } from './radio-button-toggle/radio-button-toggle.component';\nexport { RadioButtonComponent } from './radio-button/radio-button.component';\nexport { SearchBarComponent } from './search-bar/search-bar.component';\nexport { SelectComponent } from './select/select.component';\nexport { SliderComponent } from './slider/slider.component';\nexport { SwitchComponent } from './switch/switch.component';\nexport { TabComponent } from './tab-component/tab.component';\nexport { TabGroupComponent } from './tab-group/tab-group.component';\nexport { TagComponent } from './tag/tag.component';\nexport { ToastContainerComponent } from './toast-container/toast-container.component';\nexport { ToastComponent } from './toast/toast.component';\nexport { TableCell } from './table-cell/table-cell.component';\n\nexport const FX_COMPONENTS = [\n InputComponent,\n SelectComponent,\n RadioButtonComponent,\n CheckboxComponent,\n DndUploadComponent,\n ButtonComponent,\n RadioButtonToggleComponent,\n DatetimePicker,\n LoadingPanel,\n SearchBarComponent,\n TabGroupComponent,\n TabComponent,\n HeroIconComponent,\n ToastComponent,\n ToastContainerComponent,\n TagComponent,\n ChartComponent,\n SliderComponent,\n SwitchComponent,\n RichTextAreaComponent,\n SkeletonTableLoadingComponent,\n FlowConnection,\n CircleProgressBar,\n TreeDiagram,\n TableCell,\n];\n","import { Component, Inject, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport _ from 'lodash';\n\n@Component({\n selector: 'fx-ui-confirmation-dialog',\n standalone: false,\n templateUrl: './confirmation.component.html',\n styleUrl: './confirmation.component.scss',\n})\nexport class ConfirmationDialogComponent {\n loading = false;\n title: string = '';\n message: string = '';\n cancelLabel: string = 'Cancel';\n confirmLabel: string = 'Submit';\n\n constructor(\n private ref: MatDialogRef<ConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public bindings: any\n ) {\n this.title = _.get(bindings, 'title');\n this.message = _.get(bindings, 'message');\n this.cancelLabel = _.get(bindings, 'cancelLabel');\n this.confirmLabel = _.get(bindings, 'confirmLabel');\n }\n\n async accept() {\n this.loading = true;\n if (_.get(this.bindings, 'callback')) {\n await this.bindings.callback();\n this.loading = false;\n }\n this.ref.close(true);\n }\n\n cancel() {\n this.ref.close(false);\n }\n}\n","<div animate.enter=\"fade-in-animation\" class=\"dialog-container\">\n <div class=\"txt-dialog-header\">{{ title }}</div>\n <mat-dialog-content>\n <div class=\"txt-default\">{{ message }}</div>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <fx-ui-button class=\"mr-1\" [label]=\"cancelLabel\" (clicked)=\"cancel()\"></fx-ui-button>\n <fx-ui-button buttonVariant=\"primary\" class=\"mr-1\" [label]=\"confirmLabel\" (clicked)=\"accept()\" [loading]=\"loading\" class=\"min-w-[100px]\"></fx-ui-button>\n </mat-dialog-actions>\n</div>\n","import { ConfirmationDialogComponent } from \"./confirmation/confirmation.component\";\n\nexport { ConfirmationDialogComponent } from \"./confirmation/confirmation.component\";\n\nexport const DIALOGS_COMPONENT = [\n ConfirmationDialogComponent\n]","import { NgModule, importProvidersFrom } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MATERIAL_MODULE } from './material.module';\nimport { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker';\nimport { FX_COMPONENTS } from './components';\nimport { DIALOGS_COMPONENT } from './dialogs';\nimport { HasPermissionDirective } from '../core/directives/has-permission.directive';\nimport { NgHeroiconsModule } from '@dimaslz/ng-heroicons';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { OWL_DATE_TIME_FORMATS } from '@danielmoncada/angular-datetime-picker';\nimport { TrimOnBlurDirective } from '../core/directives/trim.directive';\nimport { Vflow } from 'ngx-vflow';\nimport { OwlMomentDateTimeModule } from '@danielmoncada/angular-datetime-picker-moment-adapter';\n\nexport const MY_MOMENT_FORMATS = {\n parseInput: 'YYYY-MM-DD',\n fullPickerInput: 'YYYY-MM-DD HH:mm',\n datePickerInput: 'YYYY-MM-DD',\n timePickerInput: 'HH:mm',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n};\n\n@NgModule({\n declarations: [...FX_COMPONENTS, ...DIALOGS_COMPONENT],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n OwlDateTimeModule,\n OwlNativeDateTimeModule,\n OwlMomentDateTimeModule,\n HasPermissionDirective,\n TrimOnBlurDirective,\n NgHeroiconsModule,\n ...Vflow,\n NgxEchartsModule.forRoot({ echarts: () => import('echarts') }),\n ...MATERIAL_MODULE,\n ],\n exports: [\n // Component\n ...FX_COMPONENTS,\n ...DIALOGS_COMPONENT,\n // Module\n FormsModule,\n ReactiveFormsModule,\n OwlDateTimeModule,\n OwlNativeDateTimeModule,\n HasPermissionDirective,\n NgHeroiconsModule,\n ...MATERIAL_MODULE,\n ],\n providers: [\n importProvidersFrom(NgHeroiconsModule.forRoot()),\n { provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS },\n ],\n})\nexport class UiModule {}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './lib/core/components/base.component';\nexport * from './lib/core/components/base-table.component';\nexport * from './lib/core/components/base-dialog.component';\nexport * from './lib/core/services/http-wrapper.service';\nexport * from './lib/core/services/toastr.service';\nexport * from './lib/core/services/loading.service';\nexport * from './lib/core/resolvers/base-resolver.resolver';\nexport * from './lib/core/utils';\nexport * from './lib/translation/translation.module';\nexport * from './lib/translation/translation.service';\nexport * from './lib/core/directives/has-permission.directive';\nexport * from './lib/core/directives/trim.directive';\nexport * from './lib/core/guards/permissions.guard';\nexport * from './lib/core/services/permissions.service';\nexport * from './lib/core/services/storage.service';\nexport * from './lib/core/interceptors/auth.interceptor';\nexport * from './lib/core/services/auth-state.service';\nexport * from './lib/core/services/breadcrumb.service';\nexport * from './lib/core/services/quill-style-loader.service';\nexport * from './lib/core/services/theme.service';\n\nexport * from './lib/ui/ui.module';\nexport * from './lib/ui/components/button/button.component';\nexport * from './lib/ui/components/checkbox/checkbox.component';\nexport * from './lib/ui/components/datetime-picker/datetime-picker.component';\nexport * from './lib/ui/components/dnd-upload/dnd-upload.component';\nexport * from './lib/ui/components/input/input.component';\nexport * from './lib/ui/components/radio-button/radio-button.component';\nexport * from './lib/ui/components/radio-button-toggle/radio-button-toggle.component';\nexport * from './lib/ui/components/select/select.component';\nexport * from './lib/ui/components/loading-panel/loading-panel.component';\nexport * from './lib/ui/components/tab-group/tab-group.component';\nexport * from './lib/ui/components/tab-component/tab.component';\nexport * from './lib/ui/components/search-bar/search-bar.component';\nexport * from './lib/ui/components/hero-icon/hero-icon.component';\nexport * from './lib/ui/components/toast/toast.component';\nexport * from './lib/ui/components/toast-container/toast-container.component';\nexport * from './lib/ui/components/tag/tag.component';\nexport * from './lib/ui/components/chart/chart.component';\nexport * from './lib/ui/components/slider/slider.component';\nexport * from './lib/ui/dialogs/confirmation/confirmation.component';\nexport * from './lib/ui/components/switch/switch.component';\nexport * from './lib/ui/components/rich-text-area/rich-text-area.component';\nexport * from './lib/ui/components/skeleton-table-loading/skeleton-table-loading.component';\nexport * from './lib/ui/components/flow-connection/flow-connection.component';\nexport * from './lib/ui/components/circle-progress-bar/circle-progress-bar.component';\nexport * from './lib/ui/components/tree-diagram/tree-diagram.component';\nexport * from './lib/ui/components/table-cell/table-cell.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.HeroIconComponent","i1.ToastComponent","i2.FxToastrService","i3.HttpWrapper","i2","i1.PermissionService","i1.AuthStateService","i3.TrimOnBlurDirective","i3.HeroIconComponent","i3","i1.HeroIconComponent","i2.ButtonComponent","i28","i29","i36","i1.InputComponent","i2.SelectComponent","i3.RadioButtonComponent","i4.CheckboxComponent","i5.DndUploadComponent","i6.ButtonComponent","i7.RadioButtonToggleComponent","i8.DatetimePicker","i9.LoadingPanel","i10.SearchBarComponent","i11.TabGroupComponent","i12.TabComponent","i13.HeroIconComponent","i14.ToastComponent","i15.ToastContainerComponent","i16.TagComponent","i17.ChartComponent","i18.SliderComponent","i19.SwitchComponent","i20.RichTextAreaComponent","i21.SkeletonTableLoadingComponent","i22.FlowConnection","i23.CircleProgressBar","i24.TreeDiagram","i25.TableCell","i26.ConfirmationDialogComponent"],"mappings":"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"}