@nettyapps/ntyux 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/fesm2022/nettyapps-ntyux.mjs +1083 -0
- package/fesm2022/nettyapps-ntyux.mjs.map +1 -0
- package/package.json +23 -0
- package/types/nettyapps-ntyux.d.ts +221 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nettyapps-ntyux.mjs","sources":["../../../projects/ntyux/src/lib/ntyux.ts","../../../projects/ntyux/src/lib/ntyux-module.ts","../../../projects/ntyux/src/lib/auto-complete/models/guid.ts","../../../projects/ntyux/src/lib/auto-complete/services/auto-complete-proxy.ts","../../../projects/ntyux/src/lib/auto-complete/models/auto-complete-filter.ts","../../../projects/ntyux/src/lib/auto-complete/auto-complete-lookup/auto-complete-lookup.ts","../../../projects/ntyux/src/lib/auto-complete/auto-complete-popup-menu/auto-complete-popup-menu.ts","../../../projects/ntyux/src/lib/auto-complete/auto-complete-popup-menu/auto-complete-popup-menu.html","../../../projects/ntyux/src/lib/auto-complete/auto-complete.ts","../../../projects/ntyux/src/lib/auto-complete/auto-complete.html","../../../projects/ntyux/src/lib/components/http-error403/http-error403.ts","../../../projects/ntyux/src/lib/components/http-error403/http-error403.html","../../../projects/ntyux/src/lib/components/http-error404/http-error404.ts","../../../projects/ntyux/src/lib/components/http-error404/http-error404.html","../../../projects/ntyux/src/lib/components/left-sidenav/left-sidenav.ts","../../../projects/ntyux/src/lib/components/left-sidenav/left-sidenav.html","../../../projects/ntyux/src/lib/themes/services/theme.ts","../../../projects/ntyux/src/lib/themes/services/color-palette.ts","../../../projects/ntyux/src/lib/components/toolbar/toolbar.ts","../../../projects/ntyux/src/lib/components/toolbar/toolbar.html","../../../projects/ntyux/src/public-api.ts","../../../projects/ntyux/src/nettyapps-ntyux.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ntyux',\n standalone: false,\n template: `\n <p>\n ntyux works!\n </p>\n `,\n styles: ``,\n})\nexport class Ntyux {\n\n}\n","import { NgModule } from '@angular/core';\nimport { Ntyux } from './ntyux';\n\n\n\n@NgModule({\n declarations: [\n Ntyux\n ],\n imports: [\n ],\n exports: [\n Ntyux\n ]\n})\nexport class NtyuxModule { }\n","export class Guid {\n private value: string = this.empty;\n constructor(value?: string) {\n if (value) {\n if (Guid.isValid(value)) {\n this.value = value;\n }\n }\n }\n\n public static newGuid(): Guid {\n return new Guid(\n 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n })\n );\n }\n /**\n * return all zeros '00000000-0000-0000-0000-000000000000'\n */\n public static get empty(): string {\n return '00000000-0000-0000-0000-000000000000';\n }\n public get empty(): string {\n return Guid.empty;\n }\n public static isValid(str: string): boolean {\n const validRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return validRegex.test(str);\n }\n public toString() {\n return this.value;\n }\n\n public toJSON(): string {\n return this.value;\n }\n /**\n * True is guid is empty or not valid\n * @param str\n * @returns\n */\n public static isNullOrEmpty(str: string): boolean {\n if (str == null || str == undefined) {\n return true;\n }\n if (!Guid.isValid(str)) {\n return true;\n }\n if (str == Guid.empty) {\n return true;\n }\n return false;\n }\n /**\n * True if the guid is valid and not all zeros (empty)\n * @param str\n * @returns\n */\n public static isValidAndNotEmpty(str: string): boolean {\n return !Guid.isNullOrEmpty(str);\n }\n /**\n * Return empty guid if the given guid is not valid\n * @param guid\n * @returns\n */\n public static emptyWhenNull(guid: any): any {\n if (Guid.isValidAndNotEmpty(guid)) {\n return guid;\n }\n return Guid.empty;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { EnvironmentProxy } from '@nettyapps/ntycontract';\nimport { NtyAutoCompleteFilter } from '../models/auto-complete-filter';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutoCompleteProxy {\n private http = inject(HttpClient);\n private environmentProxy = inject(EnvironmentProxy);\n\n getAutocompleteDataFilter(\n searchTable: string,\n searchData: NtyAutoCompleteFilter\n ) {\n let functionUrl = this.environmentProxy.getServerLink(\n searchTable + '/AutoCompleteFilter'\n );\n return this.http.post(functionUrl, searchData);\n }\n}\n","import { NtyAutoCompleteFilterFields } from './auto-complete-filter-fields';\n\nexport class NtyAutoCompleteFilter {\n coid: any = null;\n searchString: string | null = null;\n fields: NtyAutoCompleteFilterFields[] | null = null;\n}\n","import {\n Component,\n input,\n output,\n ViewChild,\n ViewContainerRef,\n inject,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport { NettyAgGridBase } from '@nettyapps/ntybase';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n/**\n * This component can load and display any container which is provided dynamically during run time\n * The only requirement is the component that will be displayed should extend AgGridBaseComponent\n */\n@Component({\n selector: 'ntybase-auto-complete-lookup',\n imports: [],\n template: ` <ng-template #container></ng-template> `,\n})\nexport class AutoCompleteLookup implements OnChanges {\n data = inject(MAT_DIALOG_DATA);\n\n @ViewChild('container', { read: ViewContainerRef, static: true })\n container!: ViewContainerRef;\n\n component = input<any>();\n filterField = input<string | null>(null);\n filterFieldValue = input<any>(null);\n filterFieldNumeric = input<boolean>(false);\n filterFieldEquality = input<string>('=');\n\n // Output\n selectedElement = output<any>();\n\n ngOnInit() {\n this.initializeComponent();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isComponentConfigChanged(changes)) {\n this.initializeComponent();\n }\n }\n\n private isComponentConfigChanged(changes: SimpleChanges): boolean {\n return (\n !!changes['component'] ||\n !!changes['filterField'] ||\n !!changes['filterFieldValue'] ||\n !!changes['filterFieldNumeric'] ||\n !!changes['filterFieldEquality']\n );\n }\n\n private initializeComponent() {\n const config = this.data || this.getInputConfig();\n this.loadComponent(config);\n }\n\n private getInputConfig() {\n return {\n component: this.component(),\n filterField: this.filterField(),\n filterFieldValue: this.filterFieldValue(),\n filterFieldNumeric: this.filterFieldNumeric(),\n filterFieldEquality: this.filterFieldEquality(),\n };\n }\n\n loadComponent(config: any) {\n if (!config?.component) return;\n\n this.container.clear();\n const componentRef = this.container.createComponent<NettyAgGridBase<any>>(\n config.component\n );\n\n componentRef.setInput('popupValid', true);\n\n if (config.filterField !== undefined) {\n componentRef.setInput('filterField', config.filterField);\n }\n\n if (config.filterFieldValue !== undefined) {\n componentRef.setInput('filterFieldValue', config.filterFieldValue);\n }\n\n if (config.filterFieldEquality !== undefined) {\n componentRef.setInput('filterFieldEquality', config.filterFieldEquality);\n }\n\n if (config.filterFieldNumeric !== undefined) {\n componentRef.setInput('filterFieldNumeric', config.filterFieldNumeric);\n }\n\n const sub = componentRef.instance.selectedElement.subscribe((data: any) => {\n this.selectedElement.emit(data);\n });\n\n componentRef.onDestroy(() => sub.unsubscribe());\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n OnInit,\n Input,\n ViewEncapsulation,\n inject,\n output,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { AlertService } from '@nettyapps/ntybase';\n\n@Component({\n selector: 'ntybase-auto-complete-popup-menu',\n imports: [CommonModule, ReactiveFormsModule, MatIconModule, TranslateModule],\n templateUrl: './auto-complete-popup-menu.html',\n styleUrl: './auto-complete-popup-menu.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class AutoCompletePopupMenu implements OnInit {\n @Input() field: string = '';\n @Input() recordGuid: any;\n @Input() fieldDisabled: boolean = false;\n @Input() componentPath: string = '';\n @Input() inputValue: string = '';\n Result = output<string>();\n\n private clipboard = inject(Clipboard);\n private alertService = inject(AlertService);\n\n ngOnInit() {}\n\n gotoNew() {\n if (!this.componentPath) return;\n\n // Split the component path into segments\n const pathSegments = this.componentPath.split('/').filter((p) => p);\n this.gotoNewTab(pathSegments, '', 'new');\n this.Result.emit('New');\n }\n\n gotoMain() {\n if (!this.componentPath || !this.recordGuid) return;\n\n // Split the component path into segments\n const pathSegments = this.componentPath.split('/').filter((p) => p);\n this.gotoNewTab(pathSegments, this.recordGuid, 'edit');\n this.Result.emit('Main');\n }\n\n gotoLookup() {\n if (!this.fieldDisabled) {\n this.Result.emit('Lookup');\n }\n }\n\n gotoNewTab(target: string[], params: any, type: string) {\n if (!target || target.length === 0) return;\n\n // Construct the URL directly in the format you want\n let url = `/${target.join('/')}`;\n\n // Add query parameters\n const queryParams = [];\n if (params) {\n queryParams.push(\n `parameters=${encodeURIComponent(JSON.stringify(params))}`\n );\n }\n if (type) {\n queryParams.push(`type=${type}`);\n }\n queryParams.push('isNewTab=true');\n\n if (queryParams.length > 0) {\n url += `?${queryParams.join('&')}`;\n }\n\n // Open in new tab\n window.open(url, '_blank');\n }\n\n copyToClipboard() {\n if (this.inputValue) {\n this.clipboard.copy(this.inputValue);\n this.alertService.showAlert('@copiedToClipboard');\n this.Result.emit('Copy');\n }\n }\n}\n","<div class=\"dialogbase\">\n <div class=\"menu\">\n <ul class=\"list-group\">\n <li\n class=\"list-group-item list-group-item-action d-flex justify-content-between align-items-center menu-item\"\n >\n <span (click)=\"copyToClipboard()\" class=\"align-line\"\n ><mat-icon>content_copy</mat-icon>{{'@copy'| translate}}</span\n >\n </li>\n <li\n class=\"list-group-item list-group-item-action d-flex justify-content-between align-items-center menu-item\"\n >\n <span (click)=\"gotoMain()\" class=\"align-line\"\n ><mat-icon>edit</mat-icon>{{'@popupGotoRecordDefinition'|\n translate}}</span\n >\n </li>\n <li\n class=\"list-group-item list-group-item-action d-flex justify-content-between align-items-center menu-item\"\n >\n <span (click)=\"gotoNew()\" class=\"align-line\"\n ><mat-icon>add</mat-icon>{{'@popupNewRecord'| translate}}</span\n >\n </li>\n <li\n class=\"list-group-item list-group-item-action d-flex justify-content-between align-items-center\"\n [ngClass]=\"{'menu-item':!fieldDisabled , 'menu-item-disabled':fieldDisabled }\"\n >\n <span (click)=\"gotoLookup()\" class=\"align-line\"\n ><mat-icon>search</mat-icon>{{'@popupSelectFromList'|translate}}</span\n >\n </li>\n </ul>\n </div>\n</div>\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n input,\n signal,\n ViewChild,\n ChangeDetectionStrategy,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport {\n MatAutocompleteModule,\n MatAutocompleteSelectedEvent,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport {\n FormsModule,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { UiBase } from '@nettyapps/ntyui';\nimport { Guid } from '../auto-complete/models/guid';\nimport { AutoCompleteProxy } from './services/auto-complete-proxy';\nimport {\n MatDialog,\n MatDialogConfig,\n MatDialogModule,\n} from '@angular/material/dialog';\nimport { NtyAutoCompleteFilter } from './models/auto-complete-filter';\nimport { NtyAutoCompleteFilterFields } from './models/auto-complete-filter-fields';\nimport { AutoCompleteLookup } from './auto-complete-lookup/auto-complete-lookup';\nimport { AutoCompletePopupMenu } from './auto-complete-popup-menu/auto-complete-popup-menu';\nimport { AlertService } from '@nettyapps/ntybase';\n\nexport class SelectionItem {\n name: string | null = null;\n value: any = null;\n\n constructor(_value: any = null, _name: string | null = null) {\n this.name = _name;\n this.value = _value;\n }\n}\n\n@Component({\n selector: 'ntybase-auto-complete',\n imports: [\n MatFormFieldModule,\n MatAutocompleteModule,\n FormsModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatDialogModule,\n ],\n templateUrl: './auto-complete.html',\n styleUrl: './auto-complete.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoComplete),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AutoComplete extends UiBase {\n // Input parameters\n tableName = input<string>('');\n searchAfter = input<number>(3);\n fieldCode = input<string | null>(null);\n fieldName = input<string | null>(null);\n lookupComponent = input<any>(null);\n lookupComponentPath = input<any>(null);\n filterField = input<string | null>(null);\n filterFieldValue = input<any>(null);\n filterFieldNumeric = input<boolean>(false);\n filterFieldEquality = input<string>('=');\n debounceTime = input<number>(500);\n\n // Inject dependencies\n private alertService = inject(AlertService);\n private autoCompleteService = inject(AutoCompleteProxy);\n private dialog = inject(MatDialog);\n\n @ViewChild(MatAutocompleteTrigger)\n autoCompleteTrigger!: MatAutocompleteTrigger;\n @ViewChild('autoCompleteInput') inputField!: ElementRef;\n\n control = new FormControl();\n matcher = new ErrorStateMatcher();\n\n // Signal parameters\n searchText = signal('');\n selectedOption = signal<SelectionItem | null>(null);\n loadedOptions = signal<SelectionItem[]>([]);\n\n private searchSignal = signal<string>('');\n private debounceTimeout: any;\n\n constructor() {\n super();\n // Sync form control with selected option\n effect(() => {\n const option = this.selectedOption();\n if (option) {\n this.searchText.set(option.name || '');\n } else if (this.control.value && !this.selectedOption()) {\n const found = this.loadedOptions().find(\n (opt) => opt.value === this.control.value\n );\n if (found) {\n this.selectedOption.set(found);\n this.searchText.set(found.name || '');\n }\n }\n });\n\n // Then watch the debounced signal:\n effect((onCleanup) => {\n const searchValue = this.searchSignal();\n\n clearTimeout(this.debounceTimeout);\n\n this.debounceTimeout = setTimeout(() => {\n if (this.shouldTriggerSearch(searchValue)) {\n this.loadAutoCompleteData(searchValue);\n } else {\n this.loadedOptions.set([]);\n }\n }, this.debounceTime());\n\n onCleanup(() => {\n clearTimeout(this.debounceTimeout);\n });\n });\n\n effect(() => {\n this.onChange(this.value());\n });\n\n effect(() => {\n this.updateValidators();\n });\n }\n\n private shouldTriggerSearch(searchValue: string): boolean {\n return searchValue.length >= this.searchAfter();\n }\n\n filteredData = computed(() => {\n return this.loadedOptions();\n });\n\n onInputChanged(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchText.set(value);\n this.onTouched();\n\n // Clear selection if text doesn't match\n if (this.selectedOption() && this.selectedOption()?.name !== value) {\n this.selectedOption.set(null);\n }\n\n if (value.length === 0) {\n this.clearInput();\n return;\n }\n this.searchSignal.set(value);\n this.autoCompleteTrigger.closePanel();\n }\n\n private loadAutoCompleteData(searchValue: string) {\n this.loadedOptions.set([]);\n\n const filter = new NtyAutoCompleteFilter();\n\n filter.searchString =\n searchValue.trim() === '' && searchValue.length >= this.searchAfter()\n ? ''\n : searchValue;\n\n filter.fields = [];\n\n if (this.filterField() && this.filterField()!.trim().length > 0) {\n const fields: NtyAutoCompleteFilterFields = {\n equalitySign: this.filterFieldEquality(),\n fieldName: this.filterField()!,\n fieldValue: this.filterFieldValue(),\n numeric: this.filterFieldNumeric(),\n };\n filter.fields?.push(fields);\n }\n\n this.autoCompleteService\n .getAutocompleteDataFilter(this.tableName(), filter)\n .subscribe({\n next: (data: any) => {\n if (data && Array.isArray(data)) {\n const options = data.map((item: any) => ({\n name: item.text,\n value: item.guidValue,\n }));\n this.loadedOptions.set(options);\n\n if (options.length === 1) {\n this.selectedOption.set(options[0]);\n this.control.setValue(options[0].value);\n this.searchText.set(options[0].name || '');\n } else if (options.length > 1) {\n this.autoCompleteTrigger.openPanel();\n }\n }\n },\n error: (err: any) => {\n this.alertService.showAlert(err.message);\n },\n });\n }\n\n override clearInput() {\n this.selectedOption.set(new SelectionItem(Guid.empty, ''));\n this.control.reset();\n this.searchText.set('');\n this.loadedOptions.set([]);\n this.inputField.nativeElement.value = '';\n }\n\n onPaste(event: ClipboardEvent) {\n const clipboardData = event.clipboardData;\n if (!clipboardData) return;\n\n const pastedText = clipboardData.getData('text');\n this.searchText.set(pastedText);\n this.searchSignal.set(pastedText);\n }\n\n displayFn(item: any): string {\n return this.searchText();\n }\n\n optionSelected(event: MatAutocompleteSelectedEvent) {\n const selectedValue = event.option.value;\n const selected = this.loadedOptions().find(\n (opt) => opt.value === selectedValue\n );\n\n if (selected) {\n this.selectedOption.set(selected);\n this.control.setValue(selected.value);\n this.searchText.set(selected.name || '');\n }\n }\n\n override writeValue(value: any): void {\n this.value.set(value);\n if (!value) return;\n\n if (this.fieldCode()) {\n this.selectedOption.set({ value, name: this.fieldCode() });\n }\n }\n\n onLookup() {\n if (!this.lookupComponent()) return;\n\n const dialogRef = this.dialog.open(AutoCompleteLookup, {\n height: 'auto',\n width: '100%',\n maxWidth: '100%',\n maxHeight: 'auto',\n data: {\n component: this.lookupComponent(),\n ...(this.filterField() && {\n filterField: this.filterField(),\n filterFieldValue: this.filterFieldValue(),\n filterFieldEquality: this.filterFieldEquality(),\n filterFieldNumeric: this.filterFieldNumeric(),\n }),\n },\n });\n\n dialogRef.componentInstance.selectedElement.subscribe((data: any) => {\n if (data) {\n const selection = new SelectionItem(data.value, data.text);\n this.selectedOption.set(selection);\n this.control.setValue(selection.value);\n this.searchText.set(selection.name || '');\n }\n dialogRef.close();\n });\n }\n\n /** Popup screen to goto main table\n *\n * @param event\n * @returns\n */\n rightClick(event: any) {\n event.stopPropagation();\n const dialogConfig = new MatDialogConfig();\n dialogConfig.position = {\n top: event.clientY + 'px',\n left: event.clientX + 'px',\n };\n dialogConfig.height = 'auto';\n dialogConfig.width = 'auto';\n dialogConfig.panelClass = 'foo';\n const dialogRef = this.dialog.open(AutoCompletePopupMenu, dialogConfig);\n dialogRef.componentInstance.field = this.tableName();\n dialogRef.componentInstance.recordGuid = this.value();\n dialogRef.componentInstance.fieldDisabled = this.disabled();\n dialogRef.componentInstance.componentPath = this.lookupComponentPath();\n dialogRef.componentInstance.inputValue = this.searchText();\n dialogRef.componentInstance.Result.subscribe((result: string) => {\n switch (result) {\n case 'Lookup':\n dialogRef.close();\n this.onLookup();\n break;\n default:\n dialogRef.close();\n break;\n }\n });\n return false;\n }\n\n // Validation\n override getErrorMessage() {\n if (this.control.hasError('required') && this.errorMessages()['required']) {\n return this.errorMessages()['required'];\n }\n return '';\n }\n\n override updateValidators() {\n const validators = [];\n\n if (this.required()) {\n validators.push(Validators.required);\n }\n\n this.control.setValidators(validators);\n this.control.updateValueAndValidity();\n }\n}\n","<mat-form-field\n class=\"ui-full-width\"\n [appearance]=\"appearance()\"\n [class.required-field]=\"required()\"\n [class.required-with-value]=\"required() && value()\"\n>\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <input\n type=\"text\"\n #autoCompleteInput\n matInput\n [(ngModel)]=\"value\"\n [matAutocomplete]=\"auto\"\n (input)=\"onInputChanged($event)\"\n (paste)=\"onPaste($event)\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"control\"\n (contextmenu)=\"rightClick($event)\"\n />\n\n @if (value() && !disabled()) {\n <button\n mat-icon-button\n matSuffix\n (click)=\"clearInput()\"\n aria-label=\"Clear\"\n class=\"clear-btn number-clear-btn\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n }\n\n <button\n mat-icon-button\n matSuffix\n aria-label=\"Search\"\n (click)=\"onLookup()\"\n class=\"search-btn\"\n >\n <mat-icon>search</mat-icon>\n </button>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [displayWith]=\"displayFn.bind(this)\"\n (optionSelected)=\"optionSelected($event)\"\n >\n @for (option of filteredData(); track option.value) {\n <mat-option [value]=\"option.value\"> {{ option.name }} </mat-option>\n }\n </mat-autocomplete>\n\n <mat-error>{{ getErrorMessage() }}</mat-error>\n</mat-form-field>\n","import { Location } from '@angular/common';\nimport { Component, inject, OnDestroy } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { CommonService } from '@nettyapps/ntybase';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'ntybase-http-error403',\n imports: [],\n templateUrl: './http-error403.html',\n styleUrl: './http-error403.scss',\n})\nexport class HttpError403 implements OnDestroy {\n attemptedUrl: string = '';\n\n private routeSubscription: Subscription;\n\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private location = inject(Location);\n private commonService = inject(CommonService);\n\n constructor() {\n // Router'dan state'i al\n const navigation = this.router.currentNavigation();\n this.attemptedUrl = navigation?.extras.state?.['attemptedUrl'] || '';\n\n // Eğer state'ten gelmediyse, mevcut URL'i temizleyerek kullan\n if (!this.attemptedUrl) {\n this.attemptedUrl = this.getCleanUrlPath();\n }\n\n this.routeSubscription = this.router.events.subscribe(() => {\n this.updateAttemptedUrl();\n });\n }\n\n ngOnInit() {\n // 1. URL'deki secondary outlet'leri temizle (örneğin: \"(rightSidenav:...)\")\n this.cleanUrlFromFragments();\n\n // 2. Hata mesajı için attemptedUrl'i güncelle\n this.updateAttemptedUrl();\n\n // 3. Right sidenav'ı kapat\n this.commonService.toggleRightSidenav(false);\n }\n\n ngOnDestroy() {\n if (this.routeSubscription) {\n this.routeSubscription.unsubscribe();\n }\n }\n\n /**\n * URL'deki fragment ve outlet'leri temizler.\n * Örnek: \"/sys/NettyUserGroup(rightSidenav:...)\" → \"/sys/NettyUserGroup\"\n */\n private cleanUrlFromFragments() {\n const currentUrl = this.router.url;\n const cleanUrl = currentUrl.split('(')[0]; // \"(\" sonrasını sil\n\n if (currentUrl !== cleanUrl) {\n // URL'yi temizlenmiş haliyle değiştir (tarayıcı geçmişine eklemeden)\n this.router.navigateByUrl(cleanUrl, {\n replaceUrl: true,\n skipLocationChange: false,\n });\n }\n }\n\n /**\n * attemptedUrl'i güncel router URL'ine göre günceller\n */\n private updateAttemptedUrl() {\n this.attemptedUrl = this.getCleanUrlPath();\n }\n\n /**\n * Temizlenmiş URL yolunu döndürür (queryParams ve fragment olmadan).\n */\n private getCleanUrlPath(): string {\n return this.router.url.split('?')[0].split('(')[0];\n }\n\n goHome() {\n this.router.navigate(['/'], { replaceUrl: true });\n this.commonService.toggleRightSidenav(false);\n }\n\n goBack() {\n this.location.back();\n }\n}\n","<div class=\"error-container\">\n <div class=\"error-page\">\n <h1>403 - Erişim Engellendi</h1>\n\n <p>\n <strong>Üzgünüz, {{ attemptedUrl }}</strong> sayfasına erişim izniniz\n bulunmamaktadır.\n </p>\n\n <p class=\"error-detail\">\n Bu sayfayı görüntülemek için gerekli yetkilere sahip değilsiniz. Eğer bu\n bir hata olduğunu düşünüyorsanız, lütfen sistem yöneticinizle iletişime\n geçin.\n </p>\n <button mat-raised-button (click)=\"goHome()\" color=\"primary\" routerLink=\"/\">\n Ana Sayfaya Dön\n </button>\n <button mat-raised-button (click)=\"goBack()\" color=\"primary\" routerLink=\"/\">\n Geri Dön\n </button>\n </div>\n</div>\n","import { Location } from '@angular/common';\nimport { Component, inject, OnDestroy } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { CommonService } from '@nettyapps/ntybase';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'ntybase-http-error404',\n imports: [],\n templateUrl: './http-error404.html',\n styleUrl: './http-error404.scss',\n})\nexport class HttpError404 {\n attemptedUrl: string = '';\n private routeSubscription: Subscription;\n\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private location = inject(Location);\n private commonService = inject(CommonService);\n\n constructor() {\n this.routeSubscription = this.router.events.subscribe(() => {\n this.updateAttemptedUrl();\n });\n }\n\n ngOnInit() {\n // 1. URL'deki secondary outlet'leri temizle (örneğin: \"(rightSidenav:...)\")\n this.cleanUrlFromFragments();\n\n // 2. Hata mesajı için attemptedUrl'i güncelle\n this.updateAttemptedUrl();\n\n // 3. Right sidenav'ı kapat\n this.commonService.toggleRightSidenav(false);\n }\n\n ngOnDestroy() {\n if (this.routeSubscription) {\n this.routeSubscription.unsubscribe();\n }\n }\n\n /**\n * URL'deki fragment ve outlet'leri temizler.\n * Örnek: \"/sys/NettyUserGroup(rightSidenav:...)\" → \"/sys/NettyUserGroup\"\n */\n private cleanUrlFromFragments() {\n const currentUrl = this.router.url;\n const cleanUrl = currentUrl.split('(')[0]; // \"(\" sonrasını sil\n\n if (currentUrl !== cleanUrl) {\n // URL'yi temizlenmiş haliyle değiştir (tarayıcı geçmişine eklemeden)\n this.router.navigateByUrl(cleanUrl, {\n replaceUrl: true,\n skipLocationChange: false,\n });\n }\n }\n\n /**\n * Temizlenmiş URL yolunu döndürür (queryParams ve fragment olmadan).\n */\n private getCleanUrlPath(): string {\n return this.router.url.split('?')[0].split('(')[0];\n }\n\n /**\n * attemptedUrl'i güncel router URL'ine göre günceller\n */\n private updateAttemptedUrl() {\n this.attemptedUrl = this.getCleanUrlPath();\n }\n\n goHome() {\n this.router.navigate(['/'], { replaceUrl: true });\n this.commonService.toggleRightSidenav(false);\n }\n\n goBack() {\n this.location.back();\n }\n}\n","<div class=\"error-container\">\n <div class=\"error-page\">\n <h1>404</h1>\n <h3>Sayfa Bulunamadı</h3>\n <p><strong>{{ attemptedUrl }}</strong> adresi bulunamadı.</p>\n <p>Bu içerik taşınmış veya silinmiş olabilir.</p>\n <button mat-raised-button (click)=\"goHome()\" color=\"primary\" routerLink=\"/\">\n Ana Sayfaya Dön\n </button>\n <button mat-raised-button (click)=\"goBack()\" color=\"primary\" routerLink=\"/\">\n Geri Dön\n </button>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n OnInit,\n output,\n signal,\n} from '@angular/core';\nimport { Router, RouterLink, RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { NettyUISearchInput } from '@nettyapps/ntyui';\nimport { EnvironmentProxy } from '@nettyapps/ntycontract';\nimport {\n AuthenticationService,\n NettyMenuService,\n CommonService,\n CredentialsService,\n NettyImageService,\n} from '@nettyapps/ntybase';\n\n@Component({\n selector: 'ntybase-left-sidenav',\n imports: [\n CommonModule,\n MatIconModule,\n MatListModule,\n MatMenuModule,\n MatMenuTrigger,\n RouterLink,\n RouterModule,\n NettyUISearchInput,\n TranslateModule,\n ],\n templateUrl: './left-sidenav.html',\n styleUrl: './left-sidenav.scss',\n})\nexport class LeftSidenav implements OnInit, AfterViewInit {\n private authService = inject(AuthenticationService);\n private router = inject(Router);\n private menuService = inject(NettyMenuService);\n private commonService = inject(CommonService);\n private environmentProxy = inject(EnvironmentProxy);\n private credentialsService = inject(CredentialsService);\n private imageService = inject(NettyImageService);\n private elementRef = inject(ElementRef);\n\n username = signal<string>('');\n profileImage = signal<string>('');\n\n version: string | null = this.environmentProxy.version();\n\n isMinimized = input<boolean>(false);\n toggleMinimize = output<void>();\n\n onToggleMinimize() {\n this.toggleMinimize.emit();\n }\n\n logout() {\n this.authService.logout().subscribe({\n next: (success) => {\n if (success) {\n const cleanUrl = this.commonService.getCleanUrlPath();\n this.router.navigateByUrl(cleanUrl, { replaceUrl: true }).then(() => {\n this.router.navigate(['/login']);\n });\n }\n },\n error: (err) => {\n console.error('Logout failed:', err);\n },\n });\n }\n\n // Menu Search\n menuItems = signal<any[]>([]);\n searchTerm = signal<string>('');\n originalMenuItems = signal<any[]>([]);\n\n constructor() {\n effect(() => {\n const fetchedMenu = this.menuService.menu();\n if (fetchedMenu) {\n const processedItems = this.processMenuItems(fetchedMenu);\n this.originalMenuItems.set(processedItems);\n } else {\n this.originalMenuItems.set([]);\n }\n });\n\n this.loadUserInfo();\n }\n\n ngOnInit(): void {\n // Application name gelene kadar 3 kez dene\n this.trySetMenuName(0);\n }\n\n private trySetMenuName(attempt: number): void {\n const appName = this.environmentProxy.getApplicationName();\n\n if (appName && appName.trim()) {\n // Application name geldi, menüyü yükle\n this.menuService.setMenuName(appName);\n } else if (attempt < 3) {\n // Henüz gelmedi, 300ms sonra tekrar dene\n setTimeout(() => {\n this.trySetMenuName(attempt + 1);\n }, 300);\n } else {\n // 3 denemeden sonra hala gelmedi, boş string ile dene\n console.warn('Application name not found, using empty string');\n this.menuService.setMenuName('');\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.loadUserInfo();\n }, 0);\n }\n\n loadUserInfo(): void {\n const credentials = this.credentialsService.getCredentials();\n if (credentials && credentials.username) {\n this.username.set(credentials.username);\n\n this.generateProfileImage(credentials.username);\n }\n }\n\n generateProfileImage(username: string): void {\n const initials = this.getInitials(username);\n\n const primaryColor = this.getCssVariableValue('--mat-sys-primary');\n\n const imageUrl = this.imageService.generateTextImage(\n initials,\n 40,\n 40,\n primaryColor || '#4ECDC4',\n '#FFFFFF',\n 'rgba(0, 0, 0, 0.2)'\n );\n\n this.profileImage.set(imageUrl);\n }\n\n private getCssVariableValue(variableName: string): string | null {\n if (typeof window === 'undefined') return null;\n\n const element = this.elementRef.nativeElement;\n return (\n getComputedStyle(element).getPropertyValue(variableName).trim() || null\n );\n }\n\n private getInitials(username: string): string {\n if (!username) return 'U';\n\n const names = username.trim().split(' ');\n if (names.length === 1) {\n return names[0].charAt(0).toUpperCase();\n } else {\n return (\n names[0].charAt(0) + names[names.length - 1].charAt(0)\n ).toUpperCase();\n }\n }\n\n processMenuItems(apiResponse: any): any[] {\n if (!apiResponse || !Array.isArray(apiResponse)) {\n return [];\n }\n return apiResponse.map((item: any) => ({\n name: item.label || item.name,\n icon: item.icon || '',\n link: item.route || item.link || '#',\n expanded: false,\n children: item.children ? this.processMenuItems(item.children) : [],\n }));\n }\n\n filteredMenuItems = computed(() => {\n const term = this.searchTerm().toLowerCase();\n if (!term) return this.originalMenuItems();\n\n return this.filterMenuItems(this.originalMenuItems(), term);\n });\n\n private filterMenuItems(items: any[], term: string): any[] {\n const normalizedTerm = this.commonService.normalizeTurkish(term);\n\n return items\n .map((item) => {\n const filteredChildren = item.children\n ? this.filterMenuItems(item.children, term)\n : [];\n\n const normalizedName = this.commonService.normalizeTurkish(item.name);\n const matches =\n normalizedName.includes(normalizedTerm) ||\n filteredChildren.length > 0;\n\n return matches\n ? {\n ...item,\n children: filteredChildren,\n expanded: matches || filteredChildren.length > 0,\n }\n : null;\n })\n .filter((item) => item !== null);\n }\n\n toggleSubMenu(item: any): void {\n item.expanded = !item.expanded;\n }\n\n onSearch(term: string) {\n this.searchTerm.set(term);\n }\n}\n","<div class=\"sidenav-content-wrapper\">\n <!-- Minimize Icon -->\n <button mat-icon-button (click)=\"onToggleMinimize()\" class=\"minimize-button\">\n <mat-icon class=\"minimize-icon\">\n {{ isMinimized() ? \"chevron_right\" : \"chevron_left\" }}\n </mat-icon>\n </button>\n\n <!-- Profile -->\n <div class=\"profile-section\">\n <button mat-button [matMenuTriggerFor]=\"profileMenu\" class=\"profile-button\">\n <img [src]=\"profileImage()\" [alt]=\"username()\" class=\"profile-image\" />\n @if(!isMinimized()){\n <div class=\"profile-info\">\n <p class=\"profile-name\">{{ username() }}</p>\n </div>\n }\n </button>\n\n <mat-menu #profileMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item disabled>\n <mat-icon>account_circle</mat-icon>\n <span>{{ '@profile' | translate }}</span>\n </button>\n <button mat-menu-item mat-button disabled>\n <mat-icon>swap_horiz</mat-icon>\n <span>{{ '@changeCompany' | translate }}</span>\n </button>\n <button mat-menu-item mat-button (click)=\"logout()\">\n <mat-icon>logout</mat-icon>\n <span>{{ '@logout' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n\n <!-- Search Input -->\n @if (!isMinimized()){\n <ntyui-search-input\n class=\"search-input\"\n [label]=\"'@search' | translate\"\n [placeholder]=\"'@placeholderSearch' | translate\"\n [appearance]=\"'outline'\"\n (search)=\"onSearch($event)\"\n >\n </ntyui-search-input>\n }\n\n <!-- Menu -->\n @if (!isMinimized()) {\n <mat-nav-list>\n <div class=\"sidebar\">\n <ul>\n <!-- Recursive menu render -->\n @let items = filteredMenuItems(); @let level = 0;\n <ng-container\n [ngTemplateOutlet]=\"menuItemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: items, level: level }\"\n ></ng-container>\n </ul>\n </div>\n </mat-nav-list>\n }\n\n <!-- Footer -->\n <div class=\"sidenav-footer\">\n <button mat-button [matMenuTriggerFor]=\"footerMenu\" class=\"footer-button\">\n @if (!isMinimized()) {\n <div class=\"footer-text\">\n <div class=\"company-name\">\n <p>© 2025 AXIS</p>\n </div>\n </div>\n }\n </button>\n <div class=\"version\">\n <span class=\"version\">v{{version}}</span>\n </div>\n </div>\n\n <mat-menu #footerMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item disabled>\n <mat-icon>swap_horiz</mat-icon>\n {{ '@changeCompany' | translate }}\n </button>\n <button mat-menu-item mat-button (click)=\"logout()\">\n <mat-icon>logout</mat-icon>\n <span>{{ '@logout' | translate }}</span>\n </button>\n </mat-menu>\n</div>\n\n<!-- Recursive Menu Template -->\n<ng-template #menuItemsTemplate let-items let-level=\"level\">\n @for (item of items; track item.name) {\n <li [class]=\"'menu-level-' + level\">\n <!-- Leaf node (no children) -->\n @if (!item.children || item.children.length === 0) {\n <a\n [routerLink]=\"item.link\"\n routerLinkActive=\"active\"\n [class]=\"'menu-link level-' + level\"\n >\n <mat-icon>{{ item.icon }}</mat-icon>\n <span>{{ item.name }}</span>\n </a>\n }\n\n <!-- Parent node with children -->\n @if (item.children && item.children.length > 0) {\n <a\n (click)=\"toggleSubMenu(item)\"\n [class.expanded]=\"item.expanded\"\n [class]=\"'menu-link has-children level-' + level\"\n >\n <mat-icon>{{ item.icon }}</mat-icon>\n <span>{{ item.name }}</span>\n <mat-icon [class.rotated]=\"item.expanded\" class=\"expand-icon\">\n {{ item.expanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </a>\n }\n\n <!-- Recursive submenu -->\n @if (item.children && item.children.length > 0 && item.expanded) {\n <ul [class]=\"'submenu level-' + (level + 1)\">\n <ng-container\n *ngTemplateOutlet=\"menuItemsTemplate; context: { $implicit: item.children, level: level + 1 }\"\n ></ng-container>\n </ul>\n }\n </li>\n }\n</ng-template>\n","import { computed, effect, Injectable, signal } from '@angular/core';\n\nexport interface AppTheme {\n name: 'light' | 'dark';\n icon: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Theme {\n private readonly THEME_STORAGE_KEY = 'app-theme';\n\n private appTheme = signal<'light' | 'dark'>('light');\n private themes: AppTheme[] = [\n { name: 'light', icon: 'light_mode' },\n { name: 'dark', icon: 'dark_mode' },\n ];\n\n selectedTheme = computed(() =>\n this.themes.find((theme) => theme.name === this.appTheme())\n );\n\n constructor() {\n const savedTheme = this.getSavedTheme();\n if (savedTheme) {\n this.appTheme.set(savedTheme);\n }\n\n effect(() => {\n const appTheme = this.appTheme();\n document.body.style.setProperty('color-scheme', appTheme);\n document.body.setAttribute('data-ag-theme-mode', appTheme);\n });\n }\n\n getThemes() {\n return this.themes;\n }\n\n setTheme(theme: 'light' | 'dark') {\n this.appTheme.set(theme);\n this.saveTheme(theme);\n }\n\n private getSavedTheme(): 'light' | 'dark' | null {\n if (typeof window !== 'undefined' && window.localStorage) {\n const saved = localStorage.getItem(this.THEME_STORAGE_KEY);\n return saved === 'light' || saved === 'dark' ? saved : null;\n }\n return null;\n }\n\n private saveTheme(theme: 'light' | 'dark'): void {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.setItem(this.THEME_STORAGE_KEY, theme);\n }\n }\n}\n","import { effect, Injectable, signal } from '@angular/core';\n\nexport interface ColorTheme {\n id: string;\n primary: string;\n secondary?: string;\n displayName: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ColorPalette {\n private readonly THEME_STORAGE_KEY = 'selected-theme';\n\n private themes: ColorTheme[] = [];\n currentTheme = signal<ColorTheme | null>(null);\n\n setThemes(customThemes: ColorTheme[]): void {\n this.themes = customThemes;\n\n const savedThemeId = this.getSavedTheme();\n const themeToSet = savedThemeId\n ? this.themes.find((t) => t.id === savedThemeId)\n : this.themes[0];\n\n if (themeToSet) {\n this.currentTheme.set(themeToSet);\n } else if (this.themes.length > 0) {\n this.currentTheme.set(this.themes[0]);\n }\n }\n\n getThemes(): ColorTheme[] {\n return this.themes;\n }\n\n setTheme(themeId: string): void {\n const theme = this.themes.find((t) => t.id === themeId);\n if (theme) {\n this.currentTheme.set(theme);\n this.saveTheme(themeId);\n }\n }\n\n private getSavedTheme(): string | null {\n if (typeof window !== 'undefined' && window.localStorage) {\n return localStorage.getItem(this.THEME_STORAGE_KEY);\n }\n return null;\n }\n\n private saveTheme(themeId: string): void {\n if (typeof window !== 'undefined' && window.localStorage) {\n localStorage.setItem(this.THEME_STORAGE_KEY, themeId);\n }\n }\n\n updateThemeClass = effect(() => {\n const theme = this.currentTheme();\n if (theme) {\n document.body.classList.remove(\n ...this.themes.map((t) => `${t.id}-theme`)\n );\n document.body.classList.add(`${theme.id}-theme`);\n }\n });\n}\n","import { Component, inject, model, output } from '@angular/core';\nimport { CommonModule, TitleCasePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { Theme } from '../../themes/services/theme';\nimport { ColorPalette } from '../../themes/services/color-palette';\nimport { I18nService } from '@nettyapps/ntyi18n';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'ntybase-toolbar',\n imports: [\n MatIconModule,\n MatMenuModule,\n MatToolbarModule,\n CommonModule,\n TitleCasePipe,\n TranslateModule,\n ],\n templateUrl: './toolbar.html',\n styleUrl: './toolbar.scss',\n})\nexport class Toolbar {\n protected themeService = inject(Theme);\n protected colorPaletteService = inject(ColorPalette);\n private i18nService = inject(I18nService);\n private router = inject(Router);\n toggleSidenav = output<void>();\n\n onToggleSidenav() {\n this.toggleSidenav.emit();\n }\n\n // Language\n icon = model(false);\n\n get currentLanguage(): string {\n return this.i18nService.language;\n }\n\n get languages(): string[] {\n return this.i18nService.supportedLanguages;\n }\n\n setLanguage(language: string) {\n this.i18nService.language = language;\n\n setTimeout(() => {\n window.location.reload();\n }, 100);\n }\n\n getCurrentLanguageIcon(): string {\n switch (this.i18nService.language) {\n case 'Türkçe':\n return 'fi fi-tr';\n case 'English':\n return 'fi fi-us';\n default:\n return 'fi fi-tr';\n }\n }\n\n getLanguageIcon(language: string): string {\n switch (language) {\n case 'Türkçe':\n return 'fi fi-tr';\n case 'English':\n return 'fi fi-us';\n default:\n return 'fi fi-tr';\n }\n }\n}\n","<mat-toolbar class=\"sidenav-header\">\n <div class=\"left-section\">\n <button mat-icon-button (click)=\"onToggleSidenav()\" class=\"menu-button\">\n <mat-icon>menu</mat-icon>\n </button>\n <span>{{'app_name' | translate }}</span>\n\n <!-- Language Selection -->\n <div class=\"language-toggle\">\n @if (icon()) {\n <button mat-icon-button [matMenuTriggerFor]=\"languageMenu\">\n <span class=\"{{ getCurrentLanguageIcon() }}\"></span>\n </button>\n } @else {\n <button\n mat-raised-button\n color=\"primary\"\n [matMenuTriggerFor]=\"languageMenu\"\n >\n {{ currentLanguage }}\n </button>\n }\n </div>\n\n <!-- Language Menu -->\n <mat-menu #languageMenu=\"matMenu\">\n @for (language of languages; track language) {\n <button mat-menu-item (click)=\"setLanguage(language)\">\n <span class=\"{{ getLanguageIcon(language) }}\"></span>\n {{ language }}\n </button>\n }\n </mat-menu>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div class=\"flex-stretch\"></div>\n <button\n mat-icon-button\n [mat-menu-trigger-for]=\"themeMenu\"\n class=\"theme-button\"\n >\n <mat-icon>{{ themeService.selectedTheme()?.icon }}</mat-icon>\n </button>\n <mat-menu #themeMenu=\"matMenu\">\n @for (theme of themeService.getThemes(); track theme.name) {\n <button\n [class.selected-theme]=\"themeService.selectedTheme()?.name === theme.name\"\n mat-menu-item\n (click)=\"themeService.setTheme(theme.name)\"\n >\n <mat-icon>{{ theme.icon }}</mat-icon>\n <span>{{ theme.name | titlecase }}</span>\n </button>\n }\n </mat-menu>\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"customThemeMenu\"\n class=\"custom-theme-button\"\n >\n <mat-icon>format_color_fill</mat-icon>\n </button>\n <mat-menu #customThemeMenu=\"matMenu\">\n @for (customTheme of colorPaletteService.getThemes(); track customTheme.id)\n {\n <button\n mat-menu-item\n (click)=\"colorPaletteService.setTheme(customTheme.id)\"\n >\n <div class=\"theme-menu-item\">\n <div\n class=\"color-preview\"\n [style.background-color]=\"customTheme.primary\"\n ></div>\n <span>{{ customTheme.displayName }}</span>\n </div>\n </button>\n }\n </mat-menu>\n</mat-toolbar>\n","/*\n * Public API Surface of ntyux\n */\n\nexport * from './lib/ntyux';\nexport * from './lib/ntyux-module';\nexport * from './lib/auto-complete/auto-complete';\nexport * from './lib/components/http-error403/http-error403';\nexport * from './lib/components/http-error404/http-error404';\nexport * from './lib/components/left-sidenav/left-sidenav';\nexport * from './lib/components/toolbar/toolbar';\nexport * from './lib/themes/services/color-palette';\nexport * from './lib/themes/services/theme';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i5","i6","i1","i4"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nettyapps/ntyux",
|
|
3
|
+
"version": "21.0.0",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^21.0.3",
|
|
6
|
+
"@angular/core": "^21.0.3"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/nettyapps-ntyux.mjs",
|
|
13
|
+
"typings": "types/nettyapps-ntyux.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./types/nettyapps-ntyux.d.ts",
|
|
20
|
+
"default": "./fesm2022/nettyapps-ntyux.mjs"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { ElementRef, OnDestroy, OnInit, AfterViewInit } from '@angular/core';
|
|
3
|
+
import { MatAutocompleteTrigger, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
|
4
|
+
import { FormControl } from '@angular/forms';
|
|
5
|
+
import { ErrorStateMatcher } from '@angular/material/core';
|
|
6
|
+
import { UiBase } from '@nettyapps/ntyui';
|
|
7
|
+
|
|
8
|
+
declare class Ntyux {
|
|
9
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Ntyux, never>;
|
|
10
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Ntyux, "lib-ntyux", never, {}, {}, never, never, false, never>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
declare class NtyuxModule {
|
|
14
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NtyuxModule, never>;
|
|
15
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<NtyuxModule, [typeof Ntyux], never, [typeof Ntyux]>;
|
|
16
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<NtyuxModule>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare class SelectionItem {
|
|
20
|
+
name: string | null;
|
|
21
|
+
value: any;
|
|
22
|
+
constructor(_value?: any, _name?: string | null);
|
|
23
|
+
}
|
|
24
|
+
declare class AutoComplete extends UiBase {
|
|
25
|
+
tableName: _angular_core.InputSignal<string>;
|
|
26
|
+
searchAfter: _angular_core.InputSignal<number>;
|
|
27
|
+
fieldCode: _angular_core.InputSignal<string | null>;
|
|
28
|
+
fieldName: _angular_core.InputSignal<string | null>;
|
|
29
|
+
lookupComponent: _angular_core.InputSignal<any>;
|
|
30
|
+
lookupComponentPath: _angular_core.InputSignal<any>;
|
|
31
|
+
filterField: _angular_core.InputSignal<string | null>;
|
|
32
|
+
filterFieldValue: _angular_core.InputSignal<any>;
|
|
33
|
+
filterFieldNumeric: _angular_core.InputSignal<boolean>;
|
|
34
|
+
filterFieldEquality: _angular_core.InputSignal<string>;
|
|
35
|
+
debounceTime: _angular_core.InputSignal<number>;
|
|
36
|
+
private alertService;
|
|
37
|
+
private autoCompleteService;
|
|
38
|
+
private dialog;
|
|
39
|
+
autoCompleteTrigger: MatAutocompleteTrigger;
|
|
40
|
+
inputField: ElementRef;
|
|
41
|
+
control: FormControl<any>;
|
|
42
|
+
matcher: ErrorStateMatcher;
|
|
43
|
+
searchText: _angular_core.WritableSignal<string>;
|
|
44
|
+
selectedOption: _angular_core.WritableSignal<SelectionItem | null>;
|
|
45
|
+
loadedOptions: _angular_core.WritableSignal<SelectionItem[]>;
|
|
46
|
+
private searchSignal;
|
|
47
|
+
private debounceTimeout;
|
|
48
|
+
constructor();
|
|
49
|
+
private shouldTriggerSearch;
|
|
50
|
+
filteredData: _angular_core.Signal<SelectionItem[]>;
|
|
51
|
+
onInputChanged(event: Event): void;
|
|
52
|
+
private loadAutoCompleteData;
|
|
53
|
+
clearInput(): void;
|
|
54
|
+
onPaste(event: ClipboardEvent): void;
|
|
55
|
+
displayFn(item: any): string;
|
|
56
|
+
optionSelected(event: MatAutocompleteSelectedEvent): void;
|
|
57
|
+
writeValue(value: any): void;
|
|
58
|
+
onLookup(): void;
|
|
59
|
+
/** Popup screen to goto main table
|
|
60
|
+
*
|
|
61
|
+
* @param event
|
|
62
|
+
* @returns
|
|
63
|
+
*/
|
|
64
|
+
rightClick(event: any): boolean;
|
|
65
|
+
getErrorMessage(): string | undefined;
|
|
66
|
+
updateValidators(): void;
|
|
67
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutoComplete, never>;
|
|
68
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutoComplete, "ntybase-auto-complete", never, { "tableName": { "alias": "tableName"; "required": false; "isSignal": true; }; "searchAfter": { "alias": "searchAfter"; "required": false; "isSignal": true; }; "fieldCode": { "alias": "fieldCode"; "required": false; "isSignal": true; }; "fieldName": { "alias": "fieldName"; "required": false; "isSignal": true; }; "lookupComponent": { "alias": "lookupComponent"; "required": false; "isSignal": true; }; "lookupComponentPath": { "alias": "lookupComponentPath"; "required": false; "isSignal": true; }; "filterField": { "alias": "filterField"; "required": false; "isSignal": true; }; "filterFieldValue": { "alias": "filterFieldValue"; "required": false; "isSignal": true; }; "filterFieldNumeric": { "alias": "filterFieldNumeric"; "required": false; "isSignal": true; }; "filterFieldEquality": { "alias": "filterFieldEquality"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
declare class HttpError403 implements OnDestroy {
|
|
72
|
+
attemptedUrl: string;
|
|
73
|
+
private routeSubscription;
|
|
74
|
+
private router;
|
|
75
|
+
private route;
|
|
76
|
+
private location;
|
|
77
|
+
private commonService;
|
|
78
|
+
constructor();
|
|
79
|
+
ngOnInit(): void;
|
|
80
|
+
ngOnDestroy(): void;
|
|
81
|
+
/**
|
|
82
|
+
* URL'deki fragment ve outlet'leri temizler.
|
|
83
|
+
* Örnek: "/sys/NettyUserGroup(rightSidenav:...)" → "/sys/NettyUserGroup"
|
|
84
|
+
*/
|
|
85
|
+
private cleanUrlFromFragments;
|
|
86
|
+
/**
|
|
87
|
+
* attemptedUrl'i güncel router URL'ine göre günceller
|
|
88
|
+
*/
|
|
89
|
+
private updateAttemptedUrl;
|
|
90
|
+
/**
|
|
91
|
+
* Temizlenmiş URL yolunu döndürür (queryParams ve fragment olmadan).
|
|
92
|
+
*/
|
|
93
|
+
private getCleanUrlPath;
|
|
94
|
+
goHome(): void;
|
|
95
|
+
goBack(): void;
|
|
96
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HttpError403, never>;
|
|
97
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HttpError403, "ntybase-http-error403", never, {}, {}, never, never, true, never>;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
declare class HttpError404 {
|
|
101
|
+
attemptedUrl: string;
|
|
102
|
+
private routeSubscription;
|
|
103
|
+
private router;
|
|
104
|
+
private route;
|
|
105
|
+
private location;
|
|
106
|
+
private commonService;
|
|
107
|
+
constructor();
|
|
108
|
+
ngOnInit(): void;
|
|
109
|
+
ngOnDestroy(): void;
|
|
110
|
+
/**
|
|
111
|
+
* URL'deki fragment ve outlet'leri temizler.
|
|
112
|
+
* Örnek: "/sys/NettyUserGroup(rightSidenav:...)" → "/sys/NettyUserGroup"
|
|
113
|
+
*/
|
|
114
|
+
private cleanUrlFromFragments;
|
|
115
|
+
/**
|
|
116
|
+
* Temizlenmiş URL yolunu döndürür (queryParams ve fragment olmadan).
|
|
117
|
+
*/
|
|
118
|
+
private getCleanUrlPath;
|
|
119
|
+
/**
|
|
120
|
+
* attemptedUrl'i güncel router URL'ine göre günceller
|
|
121
|
+
*/
|
|
122
|
+
private updateAttemptedUrl;
|
|
123
|
+
goHome(): void;
|
|
124
|
+
goBack(): void;
|
|
125
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HttpError404, never>;
|
|
126
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HttpError404, "ntybase-http-error404", never, {}, {}, never, never, true, never>;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
declare class LeftSidenav implements OnInit, AfterViewInit {
|
|
130
|
+
private authService;
|
|
131
|
+
private router;
|
|
132
|
+
private menuService;
|
|
133
|
+
private commonService;
|
|
134
|
+
private environmentProxy;
|
|
135
|
+
private credentialsService;
|
|
136
|
+
private imageService;
|
|
137
|
+
private elementRef;
|
|
138
|
+
username: _angular_core.WritableSignal<string>;
|
|
139
|
+
profileImage: _angular_core.WritableSignal<string>;
|
|
140
|
+
version: string | null;
|
|
141
|
+
isMinimized: _angular_core.InputSignal<boolean>;
|
|
142
|
+
toggleMinimize: _angular_core.OutputEmitterRef<void>;
|
|
143
|
+
onToggleMinimize(): void;
|
|
144
|
+
logout(): void;
|
|
145
|
+
menuItems: _angular_core.WritableSignal<any[]>;
|
|
146
|
+
searchTerm: _angular_core.WritableSignal<string>;
|
|
147
|
+
originalMenuItems: _angular_core.WritableSignal<any[]>;
|
|
148
|
+
constructor();
|
|
149
|
+
ngOnInit(): void;
|
|
150
|
+
private trySetMenuName;
|
|
151
|
+
ngAfterViewInit(): void;
|
|
152
|
+
loadUserInfo(): void;
|
|
153
|
+
generateProfileImage(username: string): void;
|
|
154
|
+
private getCssVariableValue;
|
|
155
|
+
private getInitials;
|
|
156
|
+
processMenuItems(apiResponse: any): any[];
|
|
157
|
+
filteredMenuItems: _angular_core.Signal<any[]>;
|
|
158
|
+
private filterMenuItems;
|
|
159
|
+
toggleSubMenu(item: any): void;
|
|
160
|
+
onSearch(term: string): void;
|
|
161
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LeftSidenav, never>;
|
|
162
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LeftSidenav, "ntybase-left-sidenav", never, { "isMinimized": { "alias": "isMinimized"; "required": false; "isSignal": true; }; }, { "toggleMinimize": "toggleMinimize"; }, never, never, true, never>;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
interface AppTheme {
|
|
166
|
+
name: 'light' | 'dark';
|
|
167
|
+
icon: string;
|
|
168
|
+
}
|
|
169
|
+
declare class Theme {
|
|
170
|
+
private readonly THEME_STORAGE_KEY;
|
|
171
|
+
private appTheme;
|
|
172
|
+
private themes;
|
|
173
|
+
selectedTheme: _angular_core.Signal<AppTheme | undefined>;
|
|
174
|
+
constructor();
|
|
175
|
+
getThemes(): AppTheme[];
|
|
176
|
+
setTheme(theme: 'light' | 'dark'): void;
|
|
177
|
+
private getSavedTheme;
|
|
178
|
+
private saveTheme;
|
|
179
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Theme, never>;
|
|
180
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<Theme>;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
interface ColorTheme {
|
|
184
|
+
id: string;
|
|
185
|
+
primary: string;
|
|
186
|
+
secondary?: string;
|
|
187
|
+
displayName: string;
|
|
188
|
+
}
|
|
189
|
+
declare class ColorPalette {
|
|
190
|
+
private readonly THEME_STORAGE_KEY;
|
|
191
|
+
private themes;
|
|
192
|
+
currentTheme: _angular_core.WritableSignal<ColorTheme | null>;
|
|
193
|
+
setThemes(customThemes: ColorTheme[]): void;
|
|
194
|
+
getThemes(): ColorTheme[];
|
|
195
|
+
setTheme(themeId: string): void;
|
|
196
|
+
private getSavedTheme;
|
|
197
|
+
private saveTheme;
|
|
198
|
+
updateThemeClass: _angular_core.EffectRef;
|
|
199
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorPalette, never>;
|
|
200
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ColorPalette>;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
declare class Toolbar {
|
|
204
|
+
protected themeService: Theme;
|
|
205
|
+
protected colorPaletteService: ColorPalette;
|
|
206
|
+
private i18nService;
|
|
207
|
+
private router;
|
|
208
|
+
toggleSidenav: _angular_core.OutputEmitterRef<void>;
|
|
209
|
+
onToggleSidenav(): void;
|
|
210
|
+
icon: _angular_core.ModelSignal<boolean>;
|
|
211
|
+
get currentLanguage(): string;
|
|
212
|
+
get languages(): string[];
|
|
213
|
+
setLanguage(language: string): void;
|
|
214
|
+
getCurrentLanguageIcon(): string;
|
|
215
|
+
getLanguageIcon(language: string): string;
|
|
216
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Toolbar, never>;
|
|
217
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Toolbar, "ntybase-toolbar", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, { "toggleSidenav": "toggleSidenav"; "icon": "iconChange"; }, never, never, true, never>;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export { AutoComplete, ColorPalette, HttpError403, HttpError404, LeftSidenav, Ntyux, NtyuxModule, SelectionItem, Theme, Toolbar };
|
|
221
|
+
export type { AppTheme, ColorTheme };
|