@es.framework/ng.ui.core 2.0.64 → 2.0.65

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.
@@ -76,7 +76,9 @@ class GenericViewComponent {
76
76
  dialogService = inject(DialogService);
77
77
  swalService = inject(SwalService);
78
78
  _location = inject(Location);
79
- ngOnInit() { }
79
+ ngOnInit() {
80
+ this.init();
81
+ }
80
82
  constructor(cdr, ref, config) {
81
83
  this.cdr = cdr;
82
84
  this.ref = ref;
@@ -202,7 +204,8 @@ class GenericViewComponent {
202
204
  emitAction(event) {
203
205
  switch (event.name) {
204
206
  case 'edit':
205
- this.dialog.openForm("edit", event.row);
207
+ // this.dialog.openForm("edit",event.row);
208
+ this.goToMode('edit');
206
209
  break;
207
210
  case 'delete':
208
211
  this.onDelete(event.row);
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-generic-view.mjs","sources":["../../../../libs/ng.ui.core/generic-view/src/lib/generic-view.ts","../../../../libs/ng.ui.core/generic-view/src/lib/generic-view.html","../../../../libs/ng.ui.core/generic-view/src/lib/generic-view-module.ts","../../../../libs/ng.ui.core/generic-view/src/es.framework-ng.ui.core-generic-view.ts"],"sourcesContent":["import { TooltipModule } from 'primeng/tooltip';\r\nimport { ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Optional, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CommonModule, Location } from '@angular/common';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { FormlyForm, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { TabsModule } from 'primeng/tabs';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { BreadcrumbComponent } from '@es.framework/ng.ui.core/breadcrumb';\r\nimport { BaseService, RestService, SchemaService, SwalService } from '@es.framework/ng.core/services';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ActionDef, ButtonConfig, PaginatedResult } from '@es.framework/ng.core/models';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { DialogService, DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { GenericDialogComponent } from '@es.framework/ng.ui.core/generic-dialog';\r\nimport { GenericButton } from '@es.framework/ng.ui.core/generic-button';\r\n\r\nexport interface DetailTab {\r\n header: string;\r\n icon?: string;\r\n fields: FormlyFieldConfig[];\r\n model?: any;\r\n content?: TemplateRef<any>;\r\n}\r\n\r\n@Component({\r\n selector: 'app-detail-view',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ToolbarModule,\r\n ButtonModule,\r\n TabsModule,\r\n FormlyForm,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslatePipe,\r\n BreadcrumbComponent,\r\n TooltipModule,\r\n GenericDialogComponent,\r\n GenericButton,\r\n ProgressSpinnerModule\r\n ],\r\n providers: [DialogService,BaseService,RestService],\r\n templateUrl: './generic-view.html',\r\n styles:[\r\n `\r\n .toolbar-top {\r\n position: sticky;\r\n top: 0;\r\n z-index: 1000;\r\n}\r\n\r\n.toolbar-bottom {\r\n position: sticky;\r\n top: 48px; \r\n z-index: 999;\r\n}\r\n `\r\n ]\r\n})\r\nexport class GenericViewComponent implements OnInit {\r\n private route = inject(ActivatedRoute);\r\n private router = inject(Router);\r\n private schemaService = inject(SchemaService);\r\n\r\n form = new UntypedFormGroup({});\r\n\r\n @Input() title = '';\r\n @Input() actions: ActionDef<any>[] = [];\r\n @Input() createEditActions: ButtonConfig[] = [];\r\n actions_: ActionDef<any>[] = [];\r\n @Input() tabs: DetailTab[] = [];\r\n @Input() viewMode = true;\r\n @Input() breadcrumb: MenuItem[] | undefined;\r\n @Input() service: BaseService = inject(BaseService);\r\n @Input() formFields: FormlyFieldConfig[] = [];\r\n @Input() apiName = '';\r\n @Input() moduleName = '';\r\n @Input() idField = 'id';\r\n @Input() standaloneMode = false;\r\n @Input() useRouteParams = true;\r\n\r\n @Input() query?: string;\r\n @Input() currentId!: string | number;\r\n@Input() useTabs: boolean = true;\r\n @Input() isViewMode = true; // وضع المشاهدة فقط\r\n @Input() isCreateMode = false; // وضع الاضافة فقط\r\n @Input() isEditMode = false; // وضع التعديل\r\n @Input() model = {};\r\n @Input() displayMode:\r\n | 'drawer'\r\n | 'dialog'\r\n | 'route'\r\n | 'inline'\r\n | Partial<\r\n Record<\r\n 'add' | 'edit' | 'view',\r\n 'drawer' | 'dialog' | 'route' | 'inline'\r\n >\r\n > = 'drawer';\r\n@Input() mode: 'full' | 'form-only' | 'table-only' | 'detail' = 'detail';\r\n\r\n @Output() action = new EventEmitter<{ name: string; row: any }>();\r\n @Output() afterDelete = new EventEmitter<{ record: any; response?: any }>();\r\n\r\n @ViewChild('dialog') dialog!: GenericDialogComponent;\r\n @ViewChild('inlineForm') inlineForm!: GenericDialogComponent;\r\n\r\n tabs_: DetailTab[] = [];\r\n model_: any = {};\r\n\r\n list: any[] = [];\r\n totalRecords = 0;\r\n @Input() loading = false;\r\n @Input() showToolbar = true;\r\n\r\n\r\n // pagination state\r\n pageSize = 10;\r\n pageIndex = 0;\r\n sort = '';\r\n currentFilters: any = {};\r\n pageFilters: any = {};\r\n searchGlobal = '';\r\n private dialogService = inject(DialogService);\r\n private swalService = inject(SwalService);\r\n\r\n _location: Location = inject(Location);\r\n ngOnInit() {}\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig,\r\n ) {\r\nif (config && config.data) {\r\nconst data = config?.data ?? {};\r\n\r\n this.currentId = data.currentId ?? this.currentId;\r\n this.isViewMode = data.isViewMode ?? this.isViewMode;\r\n this.apiName = data.apiName ?? this.apiName;\r\n this.moduleName = data.moduleName ?? this.moduleName;\r\n this.useRouteParams = data.useRouteParams ?? this.useRouteParams;\r\n this.standaloneMode = data.standaloneMode ?? this.standaloneMode;\r\n this.useTabs = data.useTabs ?? this.useTabs;\r\n this.formFields = data.formFields ?? this.formFields;\r\n this.tabs = data.tabs ?? this.tabs;\r\n this.breadcrumb = data.breadcrumb ?? this.breadcrumb; \r\n this.showToolbar = data.showToolbar ?? this.showToolbar; \r\n this.mode = data.mode ?? this.mode; \r\n \r\n}\r\nthis.init();\r\n }\r\n \r\n init() {\r\n \r\n if (this.apiName) {\r\n this.service.moduleName = this.service.moduleName || this.moduleName;\r\n this.service.apiName = this.apiName;\r\n }\r\n\r\n\r\n this.actions_ = this.actions.filter(c=>c.name != 'view');\r\n\r\n if (this.useRouteParams) { \r\n\r\n this.route.paramMap.subscribe(params => {\r\n const id = params.get(this.idField);\r\n if (id) {\r\n this.currentId = id;\r\n if(this.standaloneMode){\r\n this.loadList();\r\n }\r\n }\r\n\r\n this.refresh();\r\n\r\n });\r\n }\r\n else{\r\n if(this.standaloneMode && (this.currentId || this.query)){\r\n this.loadList();\r\n this.initTabs();\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n refresh(){\r\n\r\n // detect mode based on route\r\n const url = this.router.url.toLowerCase();\r\n this.isViewMode = url.includes('/view');\r\n this.isEditMode = url.includes('/edit');\r\n this.isCreateMode = url.includes('/create') || url.endsWith('/new') || url.endsWith('/add');\r\n\r\n this.initTabs();\r\n }\r\n\r\n initTabs(){\r\n this.tabs_ = [];\r\n if(this.tabs.length == 0){\r\n this.tabs.push({\r\n header: 'Details',\r\n fields: []\r\n });\r\n }\r\nfor (let i = 0; i < this.tabs.length; i++) {\r\n const t = this.tabs[i];\r\n this.tabs_.push({\r\n ...t,\r\n fields: [\r\n {\r\n props: { label: '' },\r\n // fieldGroupClassName: 'grid grid-cols-1 md:grid-cols-2 gap-3', // TODO\r\n fieldGroupClassName: '',\r\n fieldGroup:\r\n this.isCreateMode || this.isEditMode\r\n ? this.schemaService.getCreateEditFields(i == 0 ? this.formFields: t.fields,this.isViewMode)\r\n : this.schemaService.getViewFields(i == 0 ? this.formFields : t.fields,this.isViewMode),\r\n },\r\n ],\r\n });\r\n}\r\n// this.loading = false;\r\n }\r\n \r\n private cellForms: Map<string, FormGroup> = new Map();\r\n getForm(rowIndex: number): FormGroup {\r\n const key = `${rowIndex}_`;\r\n let form = this.cellForms.get(key);\r\n\r\n if (!form) {\r\n form = new FormGroup({});\r\n this.cellForms.set(key, form);\r\n }\r\n return form;\r\n }\r\n\r\n\r\n async handleCreateEditAction(btn: ButtonConfig) {\r\n try {\r\n if (btn.action) {\r\n // Execute the provided action\r\n await btn.action(null); // You can pass row or context here\r\n } else {\r\n // Fallback to emitting event\r\n if(btn.actionName == 'cancel'){\r\n this.back();\r\n }\r\n else{\r\n this.action.emit({\r\n name: btn.actionName ?? 'cancel',\r\n row: null!, // provide row if available\r\n });\r\n }\r\n }\r\n } catch (err) {\r\n console.error('Button action error', err);\r\n }\r\n }\r\n\r\n\r\nonAction(act: ActionDef<any>, model: any) {\r\n if (act.action) {\r\n act.action(model);\r\n } else {\r\n // this.action.emit({ name: act.name, row:model });\r\n this.emitAction({ name: act.name, row:model });\r\n }\r\n }\r\n\r\n emitAction(event: { name: string; row: any | null }): void {\r\n switch (event.name) {\r\n case 'edit':\r\n this.dialog.openForm(\"edit\",event.row);\r\n break;\r\n case 'delete':\r\n this.onDelete(event.row!);\r\n break;\r\n default :\r\n this.action.emit(event);\r\n break;\r\n }\r\n}\r\n\r\nonDelete(item: any): void {\r\n const id = item[this.idField];\r\n\r\n this.swalService.confirm(\r\n 'تأكيد الحذف',\r\n 'هل تريد حذف هذا السجل فعلاً؟',\r\n 'نعم، احذف',\r\n 'إلغاء'\r\n ).then((result) => {\r\n if (result.isConfirmed) {\r\n this.service.delete(id).subscribe({\r\n next: () => {\r\n this.swalService.success('تم الحذف بنجاح');\r\n this.back();\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n\r\n }\r\n });\r\n }\r\n });\r\n}\r\n afterSave(event: any) {\r\n this.model = event.response;\r\n\r\n // set the id from backend response\r\n this.currentId = event.response[this.idField];\r\n\r\n if (this.isCreateMode) {\r\n this.goToMode('view');\r\n } else if (this.isEditMode) {\r\n this.goToMode('view');\r\n }\r\n}\r\n\r\n\r\n\r\ngoToMode(mode: 'view' | 'edit' | 'create') {\r\n const tree = this.router.parseUrl(this.router.url);\r\n const segments = tree.root.children['primary']?.segments.map(s => s.path) ?? [];\r\n\r\n let newSegments: string[];\r\n\r\n if (mode === 'create') {\r\n // always navigate to \"add\"\r\n newSegments = [\r\n ...segments.filter(s => !['view', 'edit', 'add'].includes(s)),\r\n 'add',\r\n ];\r\n } else {\r\n // if in \"add\" mode, replace it with the new id\r\n if (segments.includes('add')) {\r\n newSegments = [\r\n ...segments.filter(s => s !== 'add'),\r\n String(this.currentId),\r\n mode,\r\n ];\r\n } else {\r\n const idIndex = segments.findIndex(s => s === String(this.currentId));\r\n if (idIndex === -1) {\r\n newSegments = [...segments, String(this.currentId), mode];\r\n } else {\r\n newSegments = segments.slice(0, idIndex + 1);\r\n newSegments.push(mode);\r\n }\r\n }\r\n }\r\n\r\n this.router.navigate(newSegments);\r\n this.refresh();\r\n}\r\n\r\n\r\nbackToList(){\r\n this.router.navigate(['../']);\r\n }\r\nback(){\r\n // this.router.navigate(['..']);\r\n this._location.back()\r\n }\r\n loadList() {\r\n this.loading = true;\r\n const filters = {\r\n maxResultCount: this.pageSize,\r\n skipCount: this.pageIndex * this.pageSize,\r\n sorting: this.sort,\r\n ...this.currentFilters,\r\n ...this.pageFilters,\r\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\r\n };\r\n if(this.query){\r\n filters['query'] = this.query;\r\n }\r\n if(this.currentId){\r\n filters[this.idField] = this.currentId;\r\n }\r\n this.service.getList(filters).subscribe({\r\n next: (res: PaginatedResult<any>) => {\r\n this.list = res.items;\r\n this.totalRecords = res.totalCount;\r\n this.loading = false;\r\n\r\n if(this.list.length > 0){\r\n this.model = this.list[0];\r\n this.model_ = this.list[0];\r\n }\r\n // set model_ to current id item\r\n // const found = this.list.find(x => x[this.idField] == this.currentId);\r\n // if (found) {\r\n // this.model_ = found;\r\n // }\r\n },\r\n error: err => {\r\n console.error('Error loading list', err);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n next() {\r\n if (!this.currentId) return;\r\n\r\n // increment currentId numerically\r\n // const newId = Number(this.currentId) + 1;\r\n // this.currentId = newId;\r\n // use goToMode to navigate and keep mode\r\n const currentMode = this.isEditMode ? 'edit' : 'view';\r\n // this.goToMode(currentMode);\r\n}\r\n\r\nprevious() {\r\n if (!this.currentId) return;\r\n\r\n // decrement currentId numerically\r\n // const newId = Number(this.currentId) - 1;\r\n // if (newId <= 0) return;\r\n\r\n // this.currentId = newId;\r\n\r\n // use goToMode to navigate and keep mode\r\n const currentMode = this.isEditMode ? 'edit' : 'view';\r\n // this.goToMode(currentMode);\r\n}\r\n\r\n\r\n // next() {\r\n // const idx = this.list.findIndex(x => x[this.idField] == this.currentId);\r\n // if (idx >= 0 && idx < this.list.length - 1) {\r\n // const newId = this.list[idx + 1][this.idField];\r\n // this.router.navigate(['../', newId], { relativeTo: this.route });\r\n // }\r\n // }\r\n\r\n // previous() {\r\n // const idx = this.list.findIndex(x => x[this.idField] == this.currentId);\r\n // if (idx > 0) {\r\n // const newId = this.list[idx - 1][this.idField];\r\n // this.router.navigate(['../', newId], { relativeTo: this.route });\r\n // }\r\n // }\r\n}\r\n\r\n","@if (mode === 'detail') {\n<div class=\"w-full flex flex-col gap-3\">\n <!-- overlay -->\n @if (loading) {\n <div \n class=\"absolute inset-0 bg-white/70 flex items-center justify-center z-50\">\n <p-progress-spinner/>\n </div>\n}\n\n <!-- actual content -->\n <!-- Toolbar -->\n @if (showToolbar) {\n <!-- background: transparent; -->\n <p-toolbar style=\"border: 0px;box-shadow: none;\" class=\"toolbar-top bg-white shadow-none border-none rounded-md px-3\">\n <ng-template pTemplate=\"left\">\n <!-- <span class=\"font-semibold text-lg xs:hidden block\">{{ title }}</span> -->\n <app-breadcrumb class=\"xs:block\" [breadcrumb]=\"breadcrumb\"></app-breadcrumb> <!-- xs:block hidden -->\n </ng-template>\n <ng-template pTemplate=\"right\">\n <div class=\"flex gap-2\">\n\n <button\n pButton pRipple\n icon=\"pi pi-chevron-right\"\n class=\"p-button-text p-button-sm fd-btn\"\n pTooltip=\"التالي\"\n (click)=\"next()\"\n ></button>\n <button\n pButton pRipple\n icon=\"pi pi-chevron-left\"\n class=\"p-button-text p-button-sm fd-btn\"\n pTooltip=\"السابق\"\n (click)=\"previous()\"\n ></button>\n </div>\n </ng-template>\n </p-toolbar>\n\n <p-toolbar class=\"toolbar-bottom bg-white shadow rounded-md px-3\">\n\n <ng-template pTemplate=\"left\">\n @if (isViewMode) {\n <div class=\"flex gap-1\">\n @for (action of actions_; track $index) {\n <button\n pButton pRipple\n [icon]=\"action.icon ?? ''\"\n [label]=\"(action.label ?? '') | translate\"\n class=\"fd-btn\"\n (click)=\"onAction(action,model)\"\n ></button>\n }\n </div>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @if (isEditMode || isCreateMode) {\n <div class=\"flex gap-1\">\n @for (btn of createEditActions; track $index) {\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\n @if (btn.type === 'submit' && inlineForm) {\n <lib-generic-button\n [type]=\"'submit'\"\n [loading]=\"inlineForm.loading\"\n [disabled]=\"inlineForm.loading || form.invalid\"\n [icon]=\"btn.icon\"\n [label]=\"btn.label | translate\"\n [variant]=\"btn.variant\"\n [severity]=\"btn.severity\"\n [size]=\"btn.size\"\n [model]=\"btn.splitActions\"\n [permission]=\"btn.permission\"\n (clicked)=\"inlineForm.onSubmit()\"\n ></lib-generic-button>\n }\n @else{\n <lib-generic-button\n [icon]=\"btn.icon\"\n [label]=\"btn.label | translate\"\n [variant]=\"btn.variant\"\n [severity]=\"btn.severity\"\n [size]=\"btn.size\"\n [model]=\"btn.splitActions\"\n [permission]=\"btn.permission\"\n (clicked)=\"handleCreateEditAction(btn)\"\n ></lib-generic-button>\n }\n }\n }\n </div>\n }\n </ng-template>\n\n </p-toolbar>\n}\n\n <!-- Tabs -->\n <ng-template #tabContent let-tab let-i=\"index\">\n <div>\n \n <!-- First tab special handling -->\n @if (tab.fields.length && i === 0) {\n @if(form){\n\n \n <form [formGroup]=\"form\">\n\n @if (isEditMode || isCreateMode) {\n <app-generic-dialog\n #inlineForm\n [form]=\"form\"\n [model]=\"model\"\n [formFields]=\"formFields ?? []\"\n [apiName]=\"apiName\"\n [idField]=\"idField ?? 'id'\"\n [moduleName]=\"moduleName\"\n [displayMode]=\"'inline'\"\n [mode]=\"'form-only'\"\n [forceState]=\"isCreateMode ? 'create':'edit'\"\n (afterSave)=\"afterSave($event)\">\n </app-generic-dialog>\n }\n @else if (isViewMode) {\n <formly-form\n [form]=\"form\"\n [fields]=\"tab.fields\"\n [model]=\"model\">\n </formly-form>\n }\n\n </form>\n }\n }\n\n <!-- باقي التابات -->\n @if (tab.fields.length && i > 0) {\n <formly-form\n [form]=\"getForm(i)\"\n [fields]=\"tab.fields\"\n [model]=\"tab.model || model\">\n </formly-form>\n }\n\n <!-- Custom template -->\n @if (tab.content) {\n <ng-container\n *ngTemplateOutlet=\"tab.content; context: { model: model }\">\n </ng-container>\n }\n\n </div>\n</ng-template>\n@if (useTabs) {\n <p-tabs value=\"0\">\n <p-tablist>\n @for (tab of tabs_; track $index) {\n <p-tab value=\"{{$index}}\">\n <i [class]=\"tab.icon\"></i>\n <span class=\"mr-1 ml-1\">{{ tab.header | translate }}</span>\n </p-tab>\n }\n </p-tablist>\n\n <p-tabpanels>\n @for (tab of tabs_; track $index) {\n <p-tabpanel value=\"{{$index}}\">\n <ng-container\n *ngTemplateOutlet=\"tabContent; context: { $implicit: tab, index: $index }\">\n </ng-container>\n </p-tabpanel>\n }\n </p-tabpanels>\n </p-tabs>\n}\n@else {\n <div class=\"flex flex-column gap-4\">\n @for (tab of tabs_; track $index) {\n\n <!-- Optional header -->\n <!-- <div class=\"font-bold text-lg\">\n <i [class]=\"tab.icon\"></i>\n <span class=\"ml-2\">{{ tab.header | translate }}</span>\n </div> -->\n\n <ng-container\n *ngTemplateOutlet=\"tabContent; context: { $implicit: tab, index: $index }\">\n </ng-container>\n\n }\n </div>\n}\n</div>\n\n<!-- [model]=\"model\" -->\n <app-generic-dialog\n #dialog\n [formFields]=\"formFields ?? []\"\n [apiName]=\"apiName\"\n [idField]=\"idField ??'id'\"\n [moduleName]=\"moduleName\"\n [displayMode]=\"displayMode ?? 'dialog'\"\n (afterSave)=\"afterSave($event)\"\n >\n </app-generic-dialog>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-generic-view.mjs","sources":["../../../../libs/ng.ui.core/generic-view/src/lib/generic-view.ts","../../../../libs/ng.ui.core/generic-view/src/lib/generic-view.html","../../../../libs/ng.ui.core/generic-view/src/lib/generic-view-module.ts","../../../../libs/ng.ui.core/generic-view/src/es.framework-ng.ui.core-generic-view.ts"],"sourcesContent":["import { TooltipModule } from 'primeng/tooltip';\r\nimport { ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Optional, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CommonModule, Location } from '@angular/common';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { FormlyForm, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { TabsModule } from 'primeng/tabs';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { BreadcrumbComponent } from '@es.framework/ng.ui.core/breadcrumb';\r\nimport { BaseService, RestService, SchemaService, SwalService } from '@es.framework/ng.core/services';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ActionDef, ButtonConfig, PaginatedResult } from '@es.framework/ng.core/models';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { DialogService, DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { GenericDialogComponent } from '@es.framework/ng.ui.core/generic-dialog';\r\nimport { GenericButton } from '@es.framework/ng.ui.core/generic-button';\r\n\r\nexport interface DetailTab {\r\n header: string;\r\n icon?: string;\r\n fields: FormlyFieldConfig[];\r\n model?: any;\r\n content?: TemplateRef<any>;\r\n}\r\n\r\n@Component({\r\n selector: 'app-detail-view',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ToolbarModule,\r\n ButtonModule,\r\n TabsModule,\r\n FormlyForm,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslatePipe,\r\n BreadcrumbComponent,\r\n TooltipModule,\r\n GenericDialogComponent,\r\n GenericButton,\r\n ProgressSpinnerModule\r\n ],\r\n providers: [DialogService,BaseService,RestService],\r\n templateUrl: './generic-view.html',\r\n styles:[\r\n `\r\n .toolbar-top {\r\n position: sticky;\r\n top: 0;\r\n z-index: 1000;\r\n}\r\n\r\n.toolbar-bottom {\r\n position: sticky;\r\n top: 48px; \r\n z-index: 999;\r\n}\r\n `\r\n ]\r\n})\r\nexport class GenericViewComponent implements OnInit {\r\n private route = inject(ActivatedRoute);\r\n private router = inject(Router);\r\n private schemaService = inject(SchemaService);\r\n\r\n form = new UntypedFormGroup({});\r\n\r\n @Input() title = '';\r\n @Input() actions: ActionDef<any>[] = [];\r\n @Input() createEditActions: ButtonConfig[] = [];\r\n actions_: ActionDef<any>[] = [];\r\n @Input() tabs: DetailTab[] = [];\r\n @Input() viewMode = true;\r\n @Input() breadcrumb: MenuItem[] | undefined;\r\n @Input() service: BaseService = inject(BaseService);\r\n @Input() formFields: FormlyFieldConfig[] = [];\r\n @Input() apiName = '';\r\n @Input() moduleName = '';\r\n @Input() idField = 'id';\r\n @Input() standaloneMode = false;\r\n @Input() useRouteParams = true;\r\n\r\n @Input() query?: string;\r\n @Input() currentId!: string | number;\r\n@Input() useTabs: boolean = true;\r\n @Input() isViewMode = true; // وضع المشاهدة فقط\r\n @Input() isCreateMode = false; // وضع الاضافة فقط\r\n @Input() isEditMode = false; // وضع التعديل\r\n @Input() model = {};\r\n @Input() displayMode:\r\n | 'drawer'\r\n | 'dialog'\r\n | 'route'\r\n | 'inline'\r\n | Partial<\r\n Record<\r\n 'add' | 'edit' | 'view',\r\n 'drawer' | 'dialog' | 'route' | 'inline'\r\n >\r\n > = 'drawer';\r\n@Input() mode: 'full' | 'form-only' | 'table-only' | 'detail' = 'detail';\r\n\r\n @Output() action = new EventEmitter<{ name: string; row: any }>();\r\n @Output() afterDelete = new EventEmitter<{ record: any; response?: any }>();\r\n\r\n @ViewChild('dialog') dialog!: GenericDialogComponent;\r\n @ViewChild('inlineForm') inlineForm!: GenericDialogComponent;\r\n\r\n tabs_: DetailTab[] = [];\r\n model_: any = {};\r\n\r\n list: any[] = [];\r\n totalRecords = 0;\r\n @Input() loading = false;\r\n @Input() showToolbar = true;\r\n\r\n\r\n // pagination state\r\n pageSize = 10;\r\n pageIndex = 0;\r\n sort = '';\r\n currentFilters: any = {};\r\n pageFilters: any = {};\r\n searchGlobal = '';\r\n private dialogService = inject(DialogService);\r\n private swalService = inject(SwalService);\r\n\r\n _location: Location = inject(Location);\r\n ngOnInit() {\r\n this.init();\r\n }\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig,\r\n ) {\r\nif (config && config.data) {\r\nconst data = config?.data ?? {};\r\n\r\n this.currentId = data.currentId ?? this.currentId;\r\n this.isViewMode = data.isViewMode ?? this.isViewMode;\r\n this.apiName = data.apiName ?? this.apiName;\r\n this.moduleName = data.moduleName ?? this.moduleName;\r\n this.useRouteParams = data.useRouteParams ?? this.useRouteParams;\r\n this.standaloneMode = data.standaloneMode ?? this.standaloneMode;\r\n this.useTabs = data.useTabs ?? this.useTabs;\r\n this.formFields = data.formFields ?? this.formFields;\r\n this.tabs = data.tabs ?? this.tabs;\r\n this.breadcrumb = data.breadcrumb ?? this.breadcrumb; \r\n this.showToolbar = data.showToolbar ?? this.showToolbar; \r\n this.mode = data.mode ?? this.mode; \r\n \r\n}\r\nthis.init();\r\n }\r\n \r\n init() {\r\n \r\n if (this.apiName) {\r\n this.service.moduleName = this.service.moduleName || this.moduleName;\r\n this.service.apiName = this.apiName;\r\n }\r\n\r\n\r\n this.actions_ = this.actions.filter(c=>c.name != 'view');\r\n\r\n if (this.useRouteParams) { \r\n\r\n this.route.paramMap.subscribe(params => {\r\n const id = params.get(this.idField);\r\n if (id) {\r\n this.currentId = id;\r\n if(this.standaloneMode){\r\n this.loadList();\r\n }\r\n }\r\n\r\n this.refresh();\r\n\r\n });\r\n }\r\n else{\r\n if(this.standaloneMode && (this.currentId || this.query)){\r\n this.loadList();\r\n this.initTabs();\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n refresh(){\r\n\r\n // detect mode based on route\r\n const url = this.router.url.toLowerCase();\r\n this.isViewMode = url.includes('/view');\r\n this.isEditMode = url.includes('/edit');\r\n this.isCreateMode = url.includes('/create') || url.endsWith('/new') || url.endsWith('/add');\r\n\r\n this.initTabs();\r\n }\r\n\r\n initTabs(){\r\n this.tabs_ = [];\r\n if(this.tabs.length == 0){\r\n this.tabs.push({\r\n header: 'Details',\r\n fields: []\r\n });\r\n }\r\nfor (let i = 0; i < this.tabs.length; i++) {\r\n const t = this.tabs[i];\r\n this.tabs_.push({\r\n ...t,\r\n fields: [\r\n {\r\n props: { label: '' },\r\n // fieldGroupClassName: 'grid grid-cols-1 md:grid-cols-2 gap-3', // TODO\r\n fieldGroupClassName: '',\r\n fieldGroup:\r\n this.isCreateMode || this.isEditMode\r\n ? this.schemaService.getCreateEditFields(i == 0 ? this.formFields: t.fields,this.isViewMode)\r\n : this.schemaService.getViewFields(i == 0 ? this.formFields : t.fields,this.isViewMode),\r\n },\r\n ],\r\n });\r\n}\r\n// this.loading = false;\r\n }\r\n \r\n private cellForms: Map<string, FormGroup> = new Map();\r\n getForm(rowIndex: number): FormGroup {\r\n const key = `${rowIndex}_`;\r\n let form = this.cellForms.get(key);\r\n\r\n if (!form) {\r\n form = new FormGroup({});\r\n this.cellForms.set(key, form);\r\n }\r\n return form;\r\n }\r\n\r\n\r\n async handleCreateEditAction(btn: ButtonConfig) {\r\n try {\r\n if (btn.action) {\r\n // Execute the provided action\r\n await btn.action(null); // You can pass row or context here\r\n } else {\r\n // Fallback to emitting event\r\n if(btn.actionName == 'cancel'){\r\n this.back();\r\n }\r\n else{\r\n this.action.emit({\r\n name: btn.actionName ?? 'cancel',\r\n row: null!, // provide row if available\r\n });\r\n }\r\n }\r\n } catch (err) {\r\n console.error('Button action error', err);\r\n }\r\n }\r\n\r\n\r\nonAction(act: ActionDef<any>, model: any) {\r\n if (act.action) {\r\n act.action(model);\r\n } else {\r\n // this.action.emit({ name: act.name, row:model });\r\n this.emitAction({ name: act.name, row:model });\r\n }\r\n \r\n }\r\n\r\n emitAction(event: { name: string; row: any | null }): void {\r\n switch (event.name) {\r\n case 'edit':\r\n // this.dialog.openForm(\"edit\",event.row);\r\n this.goToMode('edit');\r\n break;\r\n case 'delete':\r\n this.onDelete(event.row!);\r\n break;\r\n default :\r\n this.action.emit(event);\r\n break;\r\n }\r\n}\r\n\r\nonDelete(item: any): void {\r\n const id = item[this.idField];\r\n\r\n this.swalService.confirm(\r\n 'تأكيد الحذف',\r\n 'هل تريد حذف هذا السجل فعلاً؟',\r\n 'نعم، احذف',\r\n 'إلغاء'\r\n ).then((result) => {\r\n if (result.isConfirmed) {\r\n this.service.delete(id).subscribe({\r\n next: () => {\r\n this.swalService.success('تم الحذف بنجاح');\r\n this.back();\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n\r\n }\r\n });\r\n }\r\n });\r\n}\r\n afterSave(event: any) {\r\n this.model = event.response;\r\n\r\n // set the id from backend response\r\n this.currentId = event.response[this.idField];\r\n\r\n if (this.isCreateMode) {\r\n this.goToMode('view');\r\n } else if (this.isEditMode) {\r\n this.goToMode('view');\r\n }\r\n}\r\n\r\n\r\n\r\ngoToMode(mode: 'view' | 'edit' | 'create') {\r\n const tree = this.router.parseUrl(this.router.url);\r\n const segments = tree.root.children['primary']?.segments.map(s => s.path) ?? [];\r\n\r\n let newSegments: string[];\r\n\r\n if (mode === 'create') {\r\n // always navigate to \"add\"\r\n newSegments = [\r\n ...segments.filter(s => !['view', 'edit', 'add'].includes(s)),\r\n 'add',\r\n ];\r\n } else {\r\n // if in \"add\" mode, replace it with the new id\r\n if (segments.includes('add')) {\r\n newSegments = [\r\n ...segments.filter(s => s !== 'add'),\r\n String(this.currentId),\r\n mode,\r\n ];\r\n } else {\r\n const idIndex = segments.findIndex(s => s === String(this.currentId));\r\n if (idIndex === -1) {\r\n newSegments = [...segments, String(this.currentId), mode];\r\n } else {\r\n newSegments = segments.slice(0, idIndex + 1);\r\n newSegments.push(mode);\r\n }\r\n }\r\n }\r\n\r\n this.router.navigate(newSegments);\r\n this.refresh();\r\n}\r\n\r\n\r\nbackToList(){\r\n this.router.navigate(['../']);\r\n }\r\nback(){\r\n // this.router.navigate(['..']);\r\n this._location.back()\r\n }\r\n loadList() {\r\n this.loading = true;\r\n const filters = {\r\n maxResultCount: this.pageSize,\r\n skipCount: this.pageIndex * this.pageSize,\r\n sorting: this.sort,\r\n ...this.currentFilters,\r\n ...this.pageFilters,\r\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\r\n };\r\n if(this.query){\r\n filters['query'] = this.query;\r\n }\r\n if(this.currentId){\r\n filters[this.idField] = this.currentId;\r\n }\r\n this.service.getList(filters).subscribe({\r\n next: (res: PaginatedResult<any>) => {\r\n this.list = res.items;\r\n this.totalRecords = res.totalCount;\r\n this.loading = false;\r\n\r\n if(this.list.length > 0){\r\n this.model = this.list[0];\r\n this.model_ = this.list[0];\r\n }\r\n // set model_ to current id item\r\n // const found = this.list.find(x => x[this.idField] == this.currentId);\r\n // if (found) {\r\n // this.model_ = found;\r\n // }\r\n },\r\n error: err => {\r\n console.error('Error loading list', err);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n next() {\r\n if (!this.currentId) return;\r\n\r\n // increment currentId numerically\r\n // const newId = Number(this.currentId) + 1;\r\n // this.currentId = newId;\r\n // use goToMode to navigate and keep mode\r\n const currentMode = this.isEditMode ? 'edit' : 'view';\r\n // this.goToMode(currentMode);\r\n}\r\n\r\nprevious() {\r\n if (!this.currentId) return;\r\n\r\n // decrement currentId numerically\r\n // const newId = Number(this.currentId) - 1;\r\n // if (newId <= 0) return;\r\n\r\n // this.currentId = newId;\r\n\r\n // use goToMode to navigate and keep mode\r\n const currentMode = this.isEditMode ? 'edit' : 'view';\r\n // this.goToMode(currentMode);\r\n}\r\n\r\n\r\n // next() {\r\n // const idx = this.list.findIndex(x => x[this.idField] == this.currentId);\r\n // if (idx >= 0 && idx < this.list.length - 1) {\r\n // const newId = this.list[idx + 1][this.idField];\r\n // this.router.navigate(['../', newId], { relativeTo: this.route });\r\n // }\r\n // }\r\n\r\n // previous() {\r\n // const idx = this.list.findIndex(x => x[this.idField] == this.currentId);\r\n // if (idx > 0) {\r\n // const newId = this.list[idx - 1][this.idField];\r\n // this.router.navigate(['../', newId], { relativeTo: this.route });\r\n // }\r\n // }\r\n}\r\n\r\n","@if (mode === 'detail') {\n<div class=\"w-full flex flex-col gap-3\">\n <!-- overlay -->\n @if (loading) {\n <div \n class=\"absolute inset-0 bg-white/70 flex items-center justify-center z-50\">\n <p-progress-spinner/>\n </div>\n}\n\n <!-- actual content -->\n <!-- Toolbar -->\n @if (showToolbar) {\n <!-- background: transparent; -->\n <p-toolbar style=\"border: 0px;box-shadow: none;\" class=\"toolbar-top bg-white shadow-none border-none rounded-md px-3\">\n <ng-template pTemplate=\"left\">\n <!-- <span class=\"font-semibold text-lg xs:hidden block\">{{ title }}</span> -->\n <app-breadcrumb class=\"xs:block\" [breadcrumb]=\"breadcrumb\"></app-breadcrumb> <!-- xs:block hidden -->\n </ng-template>\n <ng-template pTemplate=\"right\">\n <div class=\"flex gap-2\">\n\n <button\n pButton pRipple\n icon=\"pi pi-chevron-right\"\n class=\"p-button-text p-button-sm fd-btn\"\n pTooltip=\"التالي\"\n (click)=\"next()\"\n ></button>\n <button\n pButton pRipple\n icon=\"pi pi-chevron-left\"\n class=\"p-button-text p-button-sm fd-btn\"\n pTooltip=\"السابق\"\n (click)=\"previous()\"\n ></button>\n </div>\n </ng-template>\n </p-toolbar>\n\n <p-toolbar class=\"toolbar-bottom bg-white shadow rounded-md px-3\">\n\n <ng-template pTemplate=\"left\">\n @if (isViewMode) {\n <div class=\"flex gap-1\">\n @for (action of actions_; track $index) {\n <button\n pButton pRipple\n [icon]=\"action.icon ?? ''\"\n [label]=\"(action.label ?? '') | translate\"\n class=\"fd-btn\"\n (click)=\"onAction(action,model)\"\n ></button>\n }\n </div>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @if (isEditMode || isCreateMode) {\n <div class=\"flex gap-1\">\n @for (btn of createEditActions; track $index) {\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\n @if (btn.type === 'submit' && inlineForm) {\n <lib-generic-button\n [type]=\"'submit'\"\n [loading]=\"inlineForm.loading\"\n [disabled]=\"inlineForm.loading || form.invalid\"\n [icon]=\"btn.icon\"\n [label]=\"btn.label | translate\"\n [variant]=\"btn.variant\"\n [severity]=\"btn.severity\"\n [size]=\"btn.size\"\n [model]=\"btn.splitActions\"\n [permission]=\"btn.permission\"\n (clicked)=\"inlineForm.onSubmit()\"\n ></lib-generic-button>\n }\n @else{\n <lib-generic-button\n [icon]=\"btn.icon\"\n [label]=\"btn.label | translate\"\n [variant]=\"btn.variant\"\n [severity]=\"btn.severity\"\n [size]=\"btn.size\"\n [model]=\"btn.splitActions\"\n [permission]=\"btn.permission\"\n (clicked)=\"handleCreateEditAction(btn)\"\n ></lib-generic-button>\n }\n }\n }\n </div>\n }\n </ng-template>\n\n </p-toolbar>\n}\n\n <!-- Tabs -->\n <ng-template #tabContent let-tab let-i=\"index\">\n <div>\n \n <!-- First tab special handling -->\n @if (tab.fields.length && i === 0) {\n @if(form){\n\n \n <form [formGroup]=\"form\">\n\n @if (isEditMode || isCreateMode) {\n <app-generic-dialog\n #inlineForm\n [form]=\"form\"\n [model]=\"model\"\n [formFields]=\"formFields ?? []\"\n [apiName]=\"apiName\"\n [idField]=\"idField ?? 'id'\"\n [moduleName]=\"moduleName\"\n [displayMode]=\"'inline'\"\n [mode]=\"'form-only'\"\n [forceState]=\"isCreateMode ? 'create':'edit'\"\n (afterSave)=\"afterSave($event)\">\n </app-generic-dialog>\n }\n @else if (isViewMode) {\n <formly-form\n [form]=\"form\"\n [fields]=\"tab.fields\"\n [model]=\"model\">\n </formly-form>\n }\n\n </form>\n }\n }\n\n <!-- باقي التابات -->\n @if (tab.fields.length && i > 0) {\n <formly-form\n [form]=\"getForm(i)\"\n [fields]=\"tab.fields\"\n [model]=\"tab.model || model\">\n </formly-form>\n }\n\n <!-- Custom template -->\n @if (tab.content) {\n <ng-container\n *ngTemplateOutlet=\"tab.content; context: { model: model }\">\n </ng-container>\n }\n\n </div>\n</ng-template>\n@if (useTabs) {\n <p-tabs value=\"0\">\n <p-tablist>\n @for (tab of tabs_; track $index) {\n <p-tab value=\"{{$index}}\">\n <i [class]=\"tab.icon\"></i>\n <span class=\"mr-1 ml-1\">{{ tab.header | translate }}</span>\n </p-tab>\n }\n </p-tablist>\n\n <p-tabpanels>\n @for (tab of tabs_; track $index) {\n <p-tabpanel value=\"{{$index}}\">\n <ng-container\n *ngTemplateOutlet=\"tabContent; context: { $implicit: tab, index: $index }\">\n </ng-container>\n </p-tabpanel>\n }\n </p-tabpanels>\n </p-tabs>\n}\n@else {\n <div class=\"flex flex-column gap-4\">\n @for (tab of tabs_; track $index) {\n\n <!-- Optional header -->\n <!-- <div class=\"font-bold text-lg\">\n <i [class]=\"tab.icon\"></i>\n <span class=\"ml-2\">{{ tab.header | translate }}</span>\n </div> -->\n\n <ng-container\n *ngTemplateOutlet=\"tabContent; context: { $implicit: tab, index: $index }\">\n </ng-container>\n\n }\n </div>\n}\n</div>\n\n<!-- [model]=\"model\" -->\n <app-generic-dialog\n #dialog\n [formFields]=\"formFields ?? []\"\n [apiName]=\"apiName\"\n [idField]=\"idField ??'id'\"\n [moduleName]=\"moduleName\"\n [displayMode]=\"displayMode ?? 'dialog'\"\n (afterSave)=\"afterSave($event)\"\n >\n </app-generic-dialog>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@es.framework/ng.ui.core",
3
- "version": "2.0.64",
3
+ "version": "2.0.65",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"