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

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.
Files changed (27) hide show
  1. package/fesm2022/es.framework-ng.ui.core-checkbox.mjs +72 -58
  2. package/fesm2022/es.framework-ng.ui.core-checkbox.mjs.map +1 -1
  3. package/fesm2022/es.framework-ng.ui.core-form-button.mjs +38 -27
  4. package/fesm2022/es.framework-ng.ui.core-form-button.mjs.map +1 -1
  5. package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs +14 -1
  6. package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs.map +1 -1
  7. package/fesm2022/es.framework-ng.ui.core-generic-crud-report.mjs +22 -0
  8. package/fesm2022/es.framework-ng.ui.core-generic-crud-report.mjs.map +1 -0
  9. package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs +1 -1
  10. package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
  11. package/fesm2022/es.framework-ng.ui.core-generic-listbox.mjs +291 -0
  12. package/fesm2022/es.framework-ng.ui.core-generic-listbox.mjs.map +1 -0
  13. package/fesm2022/es.framework-ng.ui.core-generic-view.mjs +108 -131
  14. package/fesm2022/es.framework-ng.ui.core-generic-view.mjs.map +1 -1
  15. package/fesm2022/es.framework-ng.ui.core-input.mjs +2 -0
  16. package/fesm2022/es.framework-ng.ui.core-input.mjs.map +1 -1
  17. package/fesm2022/es.framework-ng.ui.core-repeat.mjs +62 -50
  18. package/fesm2022/es.framework-ng.ui.core-repeat.mjs.map +1 -1
  19. package/generic-crud-report/README.md +3 -0
  20. package/generic-listbox/README.md +3 -0
  21. package/package.json +9 -1
  22. package/types/es.framework-ng.ui.core-checkbox.d.ts +1 -0
  23. package/types/es.framework-ng.ui.core-form-button.d.ts +11 -3
  24. package/types/es.framework-ng.ui.core-formly-ui-all.d.ts +2 -1
  25. package/types/es.framework-ng.ui.core-generic-crud-report.d.ts +10 -0
  26. package/types/es.framework-ng.ui.core-generic-listbox.d.ts +72 -0
  27. package/types/es.framework-ng.ui.core-generic-view.d.ts +17 -6
@@ -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 { Component, EventEmitter, inject, Input, OnInit, 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, 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 { 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 templateUrl: './generic-view.html',\r\n})\r\nexport class GenericViewComponent implements OnInit {\r\n private route = inject(ActivatedRoute);\r\n private router = inject(Router);\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() 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' = 'full';\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 currentId!: string | number;\r\n list: any[] = [];\r\n totalRecords = 0;\r\n @Input() loading = false;\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 swalService = inject(SwalService);\r\n\r\n _location: Location = inject(Location);\r\n\r\n ngOnInit() {\r\n this.loading = true;\r\n if (this.apiName) {\r\n this.service.apiName = this.apiName;\r\n this.service.moduleName = this.moduleName;\r\n }\r\n\r\n\r\n this.actions_ = this.actions.filter(c=>c.name != 'view');\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\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.tabs_ = [];\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.getCreateEditFields(i == 0 ? this.formFields: t.fields)\r\n : this.getViewFields(i == 0 ? this.formFields : t.fields),\r\n },\r\n ],\r\n });\r\n}\r\nthis.loading = false;\r\n }\r\n // as form\r\n getCreateEditFields(fields: FormlyFieldConfig[] = []): FormlyFieldConfig[] {\r\n return fields.map(f => ({\r\n ...f,\r\n props: { ...f.props, readonly: this.viewMode, disabled: this.viewMode },\r\n }));\r\n }\r\n getViewFields(fields: FormlyFieldConfig[] = []): FormlyFieldConfig[] {\r\n const flatten = (fields: FormlyFieldConfig[]): FormlyFieldConfig[] =>\r\n fields.flatMap((field:any) => {\r\n\r\n /* 1. GROUP / PANEL / WRAPPER */\r\n if (field.fieldGroup?.length) {\r\n const children = flatten(field.fieldGroup);\r\n\r\n if (!children.length) return [];\r\n\r\n return [{\r\n ...field,\r\n wrappers: field.wrappers,\r\n props: { ...field.props },\r\n fieldGroupClassName: field.fieldGroupClassName,\r\n fieldGroup: children\r\n }];\r\n }\r\n\r\n /* 2. FIELD ARRAY (REPEAT / TABLE / MULTI) */\r\n const fieldArrayConfig =\r\n typeof field.fieldArray === 'function'\r\n ? field.fieldArray(field)\r\n : field.fieldArray;\r\n\r\n if (field.fieldArray) {\r\n\r\n if (field.props?.['view']?.hidden) return [];\r\n\r\n const children = flatten(fieldArrayConfig?.fieldGroup || []);\r\n\r\n if (!children.length) return [];\r\n\r\n return [{\r\n ...field,\r\n type: field.props?.['view']?.type || field.type,\r\n readonly: this.viewMode,\r\n disabled: this.viewMode,\r\n fieldArray: {\r\n ...fieldArrayConfig,\r\n fieldGroup: children\r\n }\r\n }];\r\n }\r\n\r\n /* 3. SINGLE FIELD */\r\n if (!field.props || field.props['view']?.hidden) return [];\r\n\r\n const type =\r\n field.props['view']?.type ||\r\n field.props['table']?.type ||\r\n field.props['filter']?.type ||\r\n 'custom-label-type';\r\n\r\n return [{\r\n type,\r\n key: field.key,\r\n readonly: this.viewMode,\r\n disabled: this.viewMode,\r\n wrappers: field.wrappers ?? ['field-wrapper'],\r\n className: field.className,\r\n props: {\r\n ...field.props,\r\n ...(field.props['view']?.props ||\r\n field.props['table']?.props ||\r\n field.props['filter']?.props ||\r\n {}),\r\n },\r\n expressions:\r\n field.props['view']?.expressions ||\r\n field.props['table']?.expressions ||\r\n field.props['filter']?.expressions\r\n }];\r\n });\r\n\r\n return flatten(fields);\r\n}\r\n\r\n // getViewFields(fields: FormlyFieldConfig[] = []): FormlyFieldConfig[] {\r\n // const flatten = (fields: FormlyFieldConfig[]): FormlyFieldConfig[] =>\r\n // fields.flatMap(field => {\r\n // if (field.fieldGroup?.length) return flatten(field.fieldGroup);\r\n // if (!field.props\r\n // || field.props['view']?.hidden\r\n // // || field.props['table']?.hidden\r\n // ) return [];\r\n\r\n // const type = field.props['view']?.type || field.props['table']?.type || 'custom-label-type';\r\n // return [{\r\n // type,\r\n // key: field['key'],\r\n // readonly: this.viewMode,\r\n // disabled: this.viewMode,\r\n // wrappers: field.wrappers ?? ['field-wrapper'],\r\n // props: {\r\n // ...field.props,\r\n // ...(field.props['view']?.props || field.props['table']?.props),\r\n // },\r\n // expressions: field.props['view']?.expressions || field.props['view']?.expressions,\r\n // }];\r\n // });\r\n\r\n // return flatten(fields);\r\n // }\r\n\r\n // Use a map to store form groups for each row and column\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\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 // 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","\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 <p-toolbar style=\"background: transparent;border: 0px;box-shadow: none;\" class=\"bg-transparent 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 <p-toolbar class=\"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 <!-- Tabs -->\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 }}</span>\n </p-tab>\n }\n </p-tablist>\n <p-tabpanels>\n @for (tab of tabs_; track $index) {\n <p-tabpanel value=\"{{$index}}\">\n\n <!-- Formly fields -->\n <!-- border border-surface p-4-->\n <div class=\"\">\n @if (tab.fields.length && $index === 0) {\n\n @if (form) {\n <form [formGroup]=\"form\">\n @if (tab.fields.length && $index === 0 ) {\n @if (isEditMode || isCreateMode) {\n <app-generic-dialog\n #inlineForm\n [form]=\"form\"\n [model]=\"model\"\n [formFields]=\"formFields ?? []\"\n [apiName]=\"apiName\"\n [moduleName]=\"moduleName\"\n [idField]=\"idField ??'id'\"\n [displayMode]=\"'inline'\"\n [mode]=\"'form-only'\"\n [forceState]=\"isCreateMode ? 'create':'edit'\"\n (afterSave)=\"afterSave($event)\"\n >\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 @if (tab.fields.length && $index > 0) {\n\n\n <formly-form\n [form]=\"getForm($index)\"\n [fields]=\"tab.fields\"\n [model]=\"tab.model || model\"\n ></formly-form>\n\n }\n\n <!-- Custom template -->\n @if (tab.content) {\n <ng-container\n *ngTemplateOutlet=\"tab.content; context: { model: model }\">\n </ng-container>\n }\n </div>\n </p-tabpanel>\n }\n </p-tabpanels>\n</p-tabs>\n</div>\n\n<!-- [model]=\"model\" -->\n<app-generic-dialog\n #dialog\n [formFields]=\"formFields ?? []\"\n [apiName]=\"apiName\"\n [moduleName]=\"moduleName\"\n [idField]=\"idField ??'id'\"\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 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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"}
@@ -58,6 +58,7 @@ class FormlyFieldInput extends FieldType {
58
58
  <p-inputNumber
59
59
  [formControl]="formControl"
60
60
  [formlyAttributes]="field"
61
+ [readonly]="props['readonly'] || false"
61
62
  class="w-full rounded-none block"
62
63
  [min]="props['min'] || 0"
63
64
  [showButtons]="props['showButtons'] ?? false"
@@ -95,6 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
95
96
  <p-inputNumber
96
97
  [formControl]="formControl"
97
98
  [formlyAttributes]="field"
99
+ [readonly]="props['readonly'] || false"
98
100
  class="w-full rounded-none block"
99
101
  [min]="props['min'] || 0"
100
102
  [showButtons]="props['showButtons'] ?? false"
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-input.mjs","sources":["../../../../libs/ng.ui.core/input/src/lib/input-module.ts","../../../../libs/ng.ui.core/input/src/lib/input.type.ts","../../../../libs/ng.ui.core/input/src/lib/input.config.ts","../../../../libs/ng.ui.core/input/src/lib/input.module.ts","../../../../libs/ng.ui.core/input/src/lib/advanced-input.config.ts","../../../../libs/ng.ui.core/input/src/es.framework-ng.ui.core-input.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class InputModule {}\n","import { Component, ChangeDetectionStrategy, Type, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { FormlyFieldProps } from '@es.framework/ng.ui.core/form-field';\nimport { InputNumber } from 'primeng/inputnumber';\n\ninterface InputProps extends FormlyFieldProps {\n showButtons?: boolean;\n autofocus?: boolean;\n useGrouping?: boolean;\n}\n\nexport interface FormlyInputFieldConfig extends FormlyFieldConfig<InputProps> {\n type: 'input' | Type<FormlyFieldInput>;\n}\n\n@Component({\n selector: 'formly-field-primeng-input',\n template: `\n @if (props.type !== 'number') {\n <input\n pInputText\n [type]=\"props['type'] || 'text'\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n class=\"w-full rounded-none block\"\n #inputElement\n />\n } @else {\n <p-inputNumber\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n class=\"w-full rounded-none block\"\n [min]=\"props['min'] || 0\"\n [showButtons]=\"props['showButtons'] ?? false\"\n buttonLayout=\"horizontal\"\n spinnerMode=\"horizontal\"\n [useGrouping]=\"props['useGrouping']\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n #inputNumberElement>\n <ng-template #incrementbuttonicon>\n <span class=\"pi pi-plus\"></span>\n </ng-template>\n <ng-template #decrementbuttonicon>\n <span class=\"pi pi-minus\"></span>\n </ng-template>\n </p-inputNumber>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyAttributes,\n InputTextModule,\n TranslatePipe,\n InputNumber\n]\n})\nexport class FormlyFieldInput extends FieldType<FieldTypeConfig<InputProps>> implements AfterViewInit {\n @ViewChild('inputElement') inputElement?: ElementRef<HTMLInputElement>;\n @ViewChild('inputNumberElement') inputNumberElement?: any; // p-inputNumber component reference\n\n ngAfterViewInit() {\n if (this.props.autofocus) {\n setTimeout(() => {\n if (this.props.type === 'number' && this.inputNumberElement?.el?.nativeElement) {\n // Focus for p-inputNumber\n this.inputNumberElement.el.nativeElement.querySelector('input')?.focus();\n } else if (this.inputElement?.nativeElement) {\n // Focus for regular input\n this.inputElement.nativeElement.focus();\n }\n });\n }\n }\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldInput } from './input.type';\n\nexport function withFormlyFieldInput(): ConfigOption {\n return {\n types: [\n {\n name: 'input',\n component: FormlyFieldInput,\n wrappers: ['form-field'],\n },\n { name: 'string', extends: 'input' },\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { FormlyFieldInput } from './input.type';\nimport { withFormlyFieldInput } from './input.config';\nimport { FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\n// import { FormlyFormFieldModule } from '../../components/form-field';\n\n@NgModule({\n // declarations: [FormlyFieldInput],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldInput()),\n ],\n})\nexport class FormlyInputModule {}\n","\r\nimport { ConfigOption } from \"@ngx-formly/core\";\r\nimport { FormlyFieldInput } from \"./input.type\";\r\n\r\n\r\nexport function withFormlyFieldAdvancedInput(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'advanced-input',\r\n component: FormlyFieldInput,\r\n wrappers: ['form-field'],\r\n },\r\n ],\r\n };\r\n}\r\n\r\nexport function withFormlyFieldString(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'string',\r\n extends: 'input',\r\n },\r\n ],\r\n };\r\n}\r\n\r\nexport function withFormlyFieldNumber(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'number',\r\n extends: 'input',\r\n defaultOptions: {\r\n props: {\r\n type: 'number',\r\n },\r\n },\r\n },\r\n ],\r\n };\r\n}\r\n\r\nexport function withFormlyFieldInteger(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'integer',\r\n extends: 'input',\r\n defaultOptions: {\r\n props: {\r\n type: 'number',\r\n },\r\n },\r\n },\r\n ],\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["FormlyFormFieldModule","i1"],"mappings":"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"}
1
+ {"version":3,"file":"es.framework-ng.ui.core-input.mjs","sources":["../../../../libs/ng.ui.core/input/src/lib/input-module.ts","../../../../libs/ng.ui.core/input/src/lib/input.type.ts","../../../../libs/ng.ui.core/input/src/lib/input.config.ts","../../../../libs/ng.ui.core/input/src/lib/input.module.ts","../../../../libs/ng.ui.core/input/src/lib/advanced-input.config.ts","../../../../libs/ng.ui.core/input/src/es.framework-ng.ui.core-input.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class InputModule {}\n","import { Component, ChangeDetectionStrategy, Type, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { FormlyFieldProps } from '@es.framework/ng.ui.core/form-field';\nimport { InputNumber } from 'primeng/inputnumber';\n\ninterface InputProps extends FormlyFieldProps {\n showButtons?: boolean;\n autofocus?: boolean;\n useGrouping?: boolean;\n}\n\nexport interface FormlyInputFieldConfig extends FormlyFieldConfig<InputProps> {\n type: 'input' | Type<FormlyFieldInput>;\n}\n\n@Component({\n selector: 'formly-field-primeng-input',\n template: `\n @if (props.type !== 'number') {\n <input\n pInputText\n [type]=\"props['type'] || 'text'\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n class=\"w-full rounded-none block\"\n #inputElement\n />\n } @else {\n <p-inputNumber\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [readonly]=\"props['readonly'] || false\"\n class=\"w-full rounded-none block\"\n [min]=\"props['min'] || 0\"\n [showButtons]=\"props['showButtons'] ?? false\"\n buttonLayout=\"horizontal\"\n spinnerMode=\"horizontal\"\n [useGrouping]=\"props['useGrouping']\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n #inputNumberElement>\n <ng-template #incrementbuttonicon>\n <span class=\"pi pi-plus\"></span>\n </ng-template>\n <ng-template #decrementbuttonicon>\n <span class=\"pi pi-minus\"></span>\n </ng-template>\n </p-inputNumber>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyAttributes,\n InputTextModule,\n TranslatePipe,\n InputNumber\n]\n})\nexport class FormlyFieldInput extends FieldType<FieldTypeConfig<InputProps>> implements AfterViewInit {\n @ViewChild('inputElement') inputElement?: ElementRef<HTMLInputElement>;\n @ViewChild('inputNumberElement') inputNumberElement?: any; // p-inputNumber component reference\n\n ngAfterViewInit() {\n if (this.props.autofocus) {\n setTimeout(() => {\n if (this.props.type === 'number' && this.inputNumberElement?.el?.nativeElement) {\n // Focus for p-inputNumber\n this.inputNumberElement.el.nativeElement.querySelector('input')?.focus();\n } else if (this.inputElement?.nativeElement) {\n // Focus for regular input\n this.inputElement.nativeElement.focus();\n }\n });\n }\n }\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldInput } from './input.type';\n\nexport function withFormlyFieldInput(): ConfigOption {\n return {\n types: [\n {\n name: 'input',\n component: FormlyFieldInput,\n wrappers: ['form-field'],\n },\n { name: 'string', extends: 'input' },\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { FormlyFieldInput } from './input.type';\nimport { withFormlyFieldInput } from './input.config';\nimport { FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\n// import { FormlyFormFieldModule } from '../../components/form-field';\n\n@NgModule({\n // declarations: [FormlyFieldInput],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldInput()),\n ],\n})\nexport class FormlyInputModule {}\n","\r\nimport { ConfigOption } from \"@ngx-formly/core\";\r\nimport { FormlyFieldInput } from \"./input.type\";\r\n\r\n\r\nexport function withFormlyFieldAdvancedInput(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'advanced-input',\r\n component: FormlyFieldInput,\r\n wrappers: ['form-field'],\r\n },\r\n ],\r\n };\r\n}\r\n\r\nexport function withFormlyFieldString(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'string',\r\n extends: 'input',\r\n },\r\n ],\r\n };\r\n}\r\n\r\nexport function withFormlyFieldNumber(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'number',\r\n extends: 'input',\r\n defaultOptions: {\r\n props: {\r\n type: 'number',\r\n },\r\n },\r\n },\r\n ],\r\n };\r\n}\r\n\r\nexport function withFormlyFieldInteger(): ConfigOption {\r\n return {\r\n types: [\r\n {\r\n name: 'integer',\r\n extends: 'input',\r\n defaultOptions: {\r\n props: {\r\n type: 'number',\r\n },\r\n },\r\n },\r\n ],\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["FormlyFormFieldModule","i1"],"mappings":"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"}
@@ -142,15 +142,17 @@ class RepeatTypeComponent extends FieldArrayType {
142
142
  <table class="w-full border-collapse table-auto">
143
143
  <thead>
144
144
  <tr class="bg-[#f2f2f2] border-b border-[#d1d1d1]">
145
- <th class="w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]"></th>
145
+ <th class="sticky right-0 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]"></th>
146
+
147
+ <th class="sticky right-12 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]"></th>
146
148
  @for (col of getFirstRowColumns(); track col) {
147
- @if (!col.hide) {
148
- <th style="text-align: initial;" class="px-3 py-2 text-[12px] font-semibold text-[#444] border-r border-[#d1d1d1] bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2] whitespace-nowrap">
149
+ <!-- @if (!col.hide) { -->
150
+
151
+ <th [class.hidden]="col.className?.includes('hidden') || col.hide" style="text-align: initial;" class="px-3 py-2 text-[12px] font-semibold text-[#444] border-r border-[#d1d1d1] bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2] whitespace-nowrap" >
149
152
  {{ (col.props?.label ?? '') | translate }}
150
153
  </th>
151
- }
154
+
152
155
  }
153
- <th class="w-12 bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2]"></th>
154
156
  </tr>
155
157
  </thead>
156
158
 
@@ -163,30 +165,33 @@ class RepeatTypeComponent extends FieldArrayType {
163
165
 
164
166
  <div *cdkDragPlaceholder class="bg-blue-50 border-2 border-dashed border-blue-200 h-10"></div>
165
167
 
166
- <td class="text-center border-r border-[#e0e0e0] bg-[#f6f6f6] py-0 px-2 cursor-move" cdkDragHandle>
167
- <div class="flex items-center gap-1">
168
- <i class="pi pi-bars text-[10px] text-gray-300"></i>
169
- <span class="text-[10px] text-gray-400 font-mono">{{ (currentPage * pageSize) + rowIndex + 1 }}</span>
170
- </div>
171
- </td>
168
+ <td class="sticky right-0 z-10 text-center border-r border-[#e0e0e0] bg-[#f6f6f6] py-0 px-2 cursor-move" cdkDragHandle>
169
+ <div class="flex items-center gap-1">
170
+ <i class="pi pi-bars text-[10px] text-gray-300"></i>
171
+ <span class="text-[10px] text-gray-400 font-mono">{{ (currentPage * pageSize) + rowIndex + 1 }}</span>
172
+ </div>
173
+ </td>
174
+
175
+ <td class="sticky right-12 z-10 px-2 py-0 text-center bg-[#fcfcfc] w-12 border-r border-[#e0e0e0]">
176
+ @if (canDelete(rowIndex) && !(field.props?.['delete']?.hidden ?? false)) {
177
+ <button type="button" (click)="remove(rowIndex)" class="p-2 text-gray-400 hover:text-red-600 transition-colors">
178
+ <i class="pi pi-trash text-[13px]"></i>
179
+ </button>
180
+ }
181
+ </td>
172
182
 
173
183
  @for (col of row.fieldGroup; track col) {
174
- @if (!col.hide) {
175
- <td class="p-0 border-r border-[#e0e0e0] align-middle min-w-[150px]">
184
+ <!-- @if (!col.hide) { -->
185
+
186
+ <td [class.hidden]="col.className?.includes('hidden') || col.hide" class="p-0 border-r border-[#e0e0e0] align-middle min-w-[150px]">
176
187
  <div class="dx-field-cell">
177
188
  <formly-field [field]="col"></formly-field>
178
189
  </div>
179
190
  </td>
180
- }
191
+
181
192
  }
182
193
 
183
- <td class="px-2 py-0 text-center bg-[#fcfcfc] w-12 border-l border-[#e0e0e0]">
184
- @if (canDelete(rowIndex) && !(field.props?.['delete']?.hidden ?? false)) {
185
- <button type="button" (click)="remove(rowIndex)" class="p-2 text-gray-400 hover:text-red-600 transition-colors">
186
- <i class="pi pi-trash text-[13px]"></i>
187
- </button>
188
- }
189
- </td>
194
+
190
195
  </tr>
191
196
  }
192
197
  </tbody>
@@ -196,10 +201,11 @@ class RepeatTypeComponent extends FieldArrayType {
196
201
  <tfoot>
197
202
  <tr class="bg-[#f9f9f9] border-t-2 border-[#d1d1d1] font-bold text-[12px]">
198
203
  <td class="border-r border-[#e0e0e0] bg-[#eee]"></td>
204
+ <td class="border-r border-[#e0e0e0] bg-[#eee]"></td>
199
205
 
200
206
  @for (col of getFirstRowColumns(); track col) {
201
- @if (!col.hide) {
202
- <td class="px-3 py-1 border-r border-[#e0e0e0] text-[#333]">
207
+ <!-- @if (!col.hide) { -->
208
+ <td [class.hidden]="col.className?.includes('hidden') || col.hide" class="px-3 py-1 border-r border-[#e0e0e0] text-[#333]">
203
209
  @if (getFooterConfig(col.key); as cfg) {
204
210
  <div class="flex flex-col leading-tight">
205
211
  <span class="text-[8px] text-gray-400 uppercase tracking-tighter">
@@ -211,7 +217,7 @@ class RepeatTypeComponent extends FieldArrayType {
211
217
  </div>
212
218
  }
213
219
  </td>
214
- }
220
+
215
221
  }
216
222
  <td class="bg-[#eee]"></td>
217
223
  </tr>
@@ -238,7 +244,7 @@ class RepeatTypeComponent extends FieldArrayType {
238
244
  </div>
239
245
  </div>
240
246
  </div>
241
- `, isInline: true, styles: [""], dependencies: [{ kind: "component", type: FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
247
+ `, isInline: true, styles: [".right-12{right:38px}\n"], dependencies: [{ kind: "component", type: FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
242
248
  }
243
249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RepeatTypeComponent, decorators: [{
244
250
  type: Component,
@@ -265,15 +271,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
265
271
  <table class="w-full border-collapse table-auto">
266
272
  <thead>
267
273
  <tr class="bg-[#f2f2f2] border-b border-[#d1d1d1]">
268
- <th class="w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]"></th>
274
+ <th class="sticky right-0 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]"></th>
275
+
276
+ <th class="sticky right-12 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]"></th>
269
277
  @for (col of getFirstRowColumns(); track col) {
270
- @if (!col.hide) {
271
- <th style="text-align: initial;" class="px-3 py-2 text-[12px] font-semibold text-[#444] border-r border-[#d1d1d1] bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2] whitespace-nowrap">
278
+ <!-- @if (!col.hide) { -->
279
+
280
+ <th [class.hidden]="col.className?.includes('hidden') || col.hide" style="text-align: initial;" class="px-3 py-2 text-[12px] font-semibold text-[#444] border-r border-[#d1d1d1] bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2] whitespace-nowrap" >
272
281
  {{ (col.props?.label ?? '') | translate }}
273
282
  </th>
274
- }
283
+
275
284
  }
276
- <th class="w-12 bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2]"></th>
277
285
  </tr>
278
286
  </thead>
279
287
 
@@ -286,30 +294,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
286
294
 
287
295
  <div *cdkDragPlaceholder class="bg-blue-50 border-2 border-dashed border-blue-200 h-10"></div>
288
296
 
289
- <td class="text-center border-r border-[#e0e0e0] bg-[#f6f6f6] py-0 px-2 cursor-move" cdkDragHandle>
290
- <div class="flex items-center gap-1">
291
- <i class="pi pi-bars text-[10px] text-gray-300"></i>
292
- <span class="text-[10px] text-gray-400 font-mono">{{ (currentPage * pageSize) + rowIndex + 1 }}</span>
293
- </div>
294
- </td>
297
+ <td class="sticky right-0 z-10 text-center border-r border-[#e0e0e0] bg-[#f6f6f6] py-0 px-2 cursor-move" cdkDragHandle>
298
+ <div class="flex items-center gap-1">
299
+ <i class="pi pi-bars text-[10px] text-gray-300"></i>
300
+ <span class="text-[10px] text-gray-400 font-mono">{{ (currentPage * pageSize) + rowIndex + 1 }}</span>
301
+ </div>
302
+ </td>
303
+
304
+ <td class="sticky right-12 z-10 px-2 py-0 text-center bg-[#fcfcfc] w-12 border-r border-[#e0e0e0]">
305
+ @if (canDelete(rowIndex) && !(field.props?.['delete']?.hidden ?? false)) {
306
+ <button type="button" (click)="remove(rowIndex)" class="p-2 text-gray-400 hover:text-red-600 transition-colors">
307
+ <i class="pi pi-trash text-[13px]"></i>
308
+ </button>
309
+ }
310
+ </td>
295
311
 
296
312
  @for (col of row.fieldGroup; track col) {
297
- @if (!col.hide) {
298
- <td class="p-0 border-r border-[#e0e0e0] align-middle min-w-[150px]">
313
+ <!-- @if (!col.hide) { -->
314
+
315
+ <td [class.hidden]="col.className?.includes('hidden') || col.hide" class="p-0 border-r border-[#e0e0e0] align-middle min-w-[150px]">
299
316
  <div class="dx-field-cell">
300
317
  <formly-field [field]="col"></formly-field>
301
318
  </div>
302
319
  </td>
303
- }
320
+
304
321
  }
305
322
 
306
- <td class="px-2 py-0 text-center bg-[#fcfcfc] w-12 border-l border-[#e0e0e0]">
307
- @if (canDelete(rowIndex) && !(field.props?.['delete']?.hidden ?? false)) {
308
- <button type="button" (click)="remove(rowIndex)" class="p-2 text-gray-400 hover:text-red-600 transition-colors">
309
- <i class="pi pi-trash text-[13px]"></i>
310
- </button>
311
- }
312
- </td>
323
+
313
324
  </tr>
314
325
  }
315
326
  </tbody>
@@ -319,10 +330,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
319
330
  <tfoot>
320
331
  <tr class="bg-[#f9f9f9] border-t-2 border-[#d1d1d1] font-bold text-[12px]">
321
332
  <td class="border-r border-[#e0e0e0] bg-[#eee]"></td>
333
+ <td class="border-r border-[#e0e0e0] bg-[#eee]"></td>
322
334
 
323
335
  @for (col of getFirstRowColumns(); track col) {
324
- @if (!col.hide) {
325
- <td class="px-3 py-1 border-r border-[#e0e0e0] text-[#333]">
336
+ <!-- @if (!col.hide) { -->
337
+ <td [class.hidden]="col.className?.includes('hidden') || col.hide" class="px-3 py-1 border-r border-[#e0e0e0] text-[#333]">
326
338
  @if (getFooterConfig(col.key); as cfg) {
327
339
  <div class="flex flex-col leading-tight">
328
340
  <span class="text-[8px] text-gray-400 uppercase tracking-tighter">
@@ -334,7 +346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
334
346
  </div>
335
347
  }
336
348
  </td>
337
- }
349
+
338
350
  }
339
351
  <td class="bg-[#eee]"></td>
340
352
  </tr>
@@ -361,7 +373,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
361
373
  </div>
362
374
  </div>
363
375
  </div>
364
- ` }]
376
+ `, styles: [".right-12{right:38px}\n"] }]
365
377
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
366
378
 
367
379
  class RepeatTableViewType extends FieldArrayType {
@@ -1 +1 @@
1
- {"version":3,"file":"es.framework-ng.ui.core-repeat.mjs","sources":["../../../../libs/ng.ui.core/repeat/src/lib/repeat-module.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-section.type.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-table-view.type.ts","../../../../libs/ng.ui.core/repeat/src/es.framework-ng.ui.core-repeat.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class RepeatModule {}\n","import { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { ChangeDetectorRef, Component, OnInit, signal, computed } from '@angular/core';\nimport { FieldArrayType, FormlyField, FormlyFieldConfig } from '@ngx-formly/core';\nimport { DragDropModule, moveItemInArray, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'formly-repeat-section',\n standalone: true,\n imports: [FormlyField, TranslatePipe, DragDropModule, FormsModule],\n template: `\n <div class=\"dx-grid-container shadow-md border border-[#c1c1c1] bg-white text-[#333] rounded-sm overflow-hidden\">\n \n <div class=\"bg-gradient-to-b from-[#fdfdfd] to-[#ececec] border-b border-[#c1c1c1] px-3 py-1.5 flex items-center justify-between gap-4\">\n <span class=\"text-[11px] font-bold uppercase tracking-tight text-[#555]\">{{ field.props?.label || '' }}</span>\n \n @if (field.props?.['enableSearch']) {\n <div class=\"relative flex items-center\">\n <i class=\"pi pi-search absolute left-2 text-[10px] text-gray-400\"></i>\n <input \n [(ngModel)]=\"searchQuery\" \n (input)=\"onSearch()\"\n [placeholder]=\"'Search' | translate\" \n class=\"pl-7 pr-2 py-1 text-[11px] border border-[#ccc] rounded-sm focus:border-[#0078d7] outline-none w-48 transition-all\"\n />\n </div>\n }\n </div>\n\n <div class=\"overflow-x-auto min-h-[100px]\">\n <table class=\"w-full border-collapse table-auto\">\n <thead>\n <tr class=\"bg-[#f2f2f2] border-b border-[#d1d1d1]\">\n <th class=\"w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]\"></th>\n @for (col of getFirstRowColumns(); track col) {\n @if (!col.hide) {\n <th style=\"text-align: initial;\" class=\"px-3 py-2 text-[12px] font-semibold text-[#444] border-r border-[#d1d1d1] bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2] whitespace-nowrap\">\n {{ (col.props?.label ?? '') | translate }}\n </th>\n }\n }\n <th class=\"w-12 bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2]\"></th>\n </tr>\n </thead>\n \n <tbody cdkDropList (cdkDropListDropped)=\"onDrop($event)\" [cdkDropListData]=\"field.fieldGroup\">\n @for (row of displayedRows(); track row; let rowIndex = $index) {\n <tr cdkDrag \n [id]=\"'row-' + rowIndex\"\n [class.bg-yellow-50]=\"isMatched(row)\"\n class=\"dx-row border-b border-[#e0e0e0] hover:bg-[#eff4ff] transition-colors bg-white\">\n \n <div *cdkDragPlaceholder class=\"bg-blue-50 border-2 border-dashed border-blue-200 h-10\"></div>\n\n <td class=\"text-center border-r border-[#e0e0e0] bg-[#f6f6f6] py-0 px-2 cursor-move\" cdkDragHandle>\n <div class=\"flex items-center gap-1\">\n <i class=\"pi pi-bars text-[10px] text-gray-300\"></i>\n <span class=\"text-[10px] text-gray-400 font-mono\">{{ (currentPage * pageSize) + rowIndex + 1 }}</span>\n </div>\n </td>\n \n @for (col of row.fieldGroup; track col) {\n @if (!col.hide) {\n <td class=\"p-0 border-r border-[#e0e0e0] align-middle min-w-[150px]\">\n <div class=\"dx-field-cell\">\n <formly-field [field]=\"col\"></formly-field>\n </div>\n </td>\n }\n }\n\n <td class=\"px-2 py-0 text-center bg-[#fcfcfc] w-12 border-l border-[#e0e0e0]\">\n @if (canDelete(rowIndex) && !(field.props?.['delete']?.hidden ?? false)) {\n <button type=\"button\" (click)=\"remove(rowIndex)\" class=\"p-2 text-gray-400 hover:text-red-600 transition-colors\">\n <i class=\"pi pi-trash text-[13px]\"></i>\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n\n \n@if (field.props?.['showFooterTotals']) {\n <tfoot>\n <tr class=\"bg-[#f9f9f9] border-t-2 border-[#d1d1d1] font-bold text-[12px]\">\n <td class=\"border-r border-[#e0e0e0] bg-[#eee]\"></td>\n \n @for (col of getFirstRowColumns(); track col) {\n @if (!col.hide) {\n <td class=\"px-3 py-1 border-r border-[#e0e0e0] text-[#333]\">\n @if (getFooterConfig(col.key); as cfg) {\n <div class=\"flex flex-col leading-tight\">\n <span class=\"text-[8px] text-gray-400 uppercase tracking-tighter\">\n {{ cfg.label | translate }}\n </span>\n <span class=\"text-[#005a9e]\">\n {{ calculateTotal(col.key, cfg.type) }}\n </span>\n </div>\n }\n </td>\n }\n }\n <td class=\"bg-[#eee]\"></td>\n </tr>\n </tfoot>\n}\n </table>\n </div>\n\n <div class=\"p-2 border-t border-[#c1c1c1] bg-[#f3f3f3] flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n @if (!(field.props?.['add']?.hidden ?? false)) {\n <button type=\"button\" (click)=\"add()\" class=\"flex items-center gap-2 px-4 py-1.5 rounded-sm border border-primary-500 bg-primary-600 text-white text-[11px] font-medium hover:bg-primary-700 shadow-sm transition-all\">\n <i class=\"pi pi-plus text-[10px]\"></i>\n <span>{{ 'Add' | translate }}</span>\n </button>\n }\n </div>\n\n <div class=\"flex items-center gap-1 text-[11px] text-gray-600\">\n <button (click)=\"nextPage()\" [disabled]=\"currentPage >= totalPages() - 1\" class=\"px-2 py-1 border border-gray-300 bg-white disabled:opacity-50\"><i class=\"pi pi-chevron-right text-[9px]\"></i></button>\n <span class=\"px-2\"> {{ currentPage + 1 }} - {{ totalPages() }}</span>\n <button (click)=\"prevPage()\" [disabled]=\"currentPage === 0\" class=\"px-2 py-1 border border-gray-300 bg-white disabled:opacity-50\"><i class=\"pi pi-chevron-left text-[9px]\"></i></button>\n \n </div>\n </div>\n </div>\n `,\n styles: [`\n :host ::ng-deep {\n .dx-field-cell .form-control, .dx-field-cell input, .dx-field-cell select {\n @apply w-full bg-transparent border-none px-3 py-2 text-[13px] outline-none;\n border-radius: 0; box-shadow: none !important;\n }\n .dx-field-cell:focus-within { @apply bg-white ring-1 ring-inset ring-[#0078d7]; box-shadow: inset 0 0 0 1px #0078d7; }\n .dx-row:nth-child(even) { background-color: #fafafa; }\n .cdk-drag-preview { @apply shadow-2xl border border-blue-200 bg-white opacity-90; display: table; width: 100%; }\n }\n `]\n})\nexport class RepeatTypeComponent extends FieldArrayType implements OnInit {\n searchQuery = '';\n currentPage = 0;\n pageSize = 10;\n\n constructor(private cdr: ChangeDetectorRef) { super(); }\n\n ngOnInit() {\n this.field.formControl.valueChanges.subscribe(() => {\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n });\n }\n\n getFirstRowColumns() {\n return this.field.fieldGroup?.[0]?.fieldGroup ?? [];\n }\n\n // Row visibility / Delete Protection logic\n canDelete(index: number): boolean {\n const isFirst = index === 0 && this.currentPage === 0;\n const isSecond = index === 1 && this.currentPage === 0;\n \n if (isFirst && !this.field.props?.['canDeleteFirstRow']) return false;\n if (isSecond && !this.field.props?.['canDeleteSecondRow']) return false;\n \n return true;\n }\n\n // Pagination Logic\n totalPages() {\n return Math.ceil((this.field.fieldGroup?.length || 0) / this.pageSize) || 1;\n }\n\n displayedRows() {\n const start = this.currentPage * this.pageSize;\n return (this.field.fieldGroup || []).slice(start, start + this.pageSize);\n }\n\n nextPage() { if (this.currentPage < this.totalPages() - 1) this.currentPage++; }\n prevPage() { if (this.currentPage > 0) this.currentPage--; }\n\n // Totals Logic\n // inside RepeatTypeComponent class\n\ngetFooterConfig(columnKey: any) {\n // Access footer configuration defined in the field props\n const footerConfigs = this.field.props?.['footerConfig'];\n if (!footerConfigs) return null;\n \n // Find config for this specific key (e.g., { key: 'amount', label: 'Sum', type: 'sum' })\n return footerConfigs.find((c: any) => c.key === columnKey);\n}\n\ncalculateTotal(key: any, type: 'sum' | 'avg' | 'count' = 'sum'): string {\n const values = (this.formControl.value || [])\n .map((v: any) => parseFloat(v[key]))\n .filter((v: number) => !isNaN(v));\n\n if (values.length === 0) return '0.00';\n\n let result = 0;\n switch (type) {\n case 'avg':\n result = values.reduce((a:any, b:any) => a + b, 0) / values.length;\n break;\n case 'count':\n return values.length.toString();\n case 'sum':\n default:\n result = values.reduce((a:any, b:any) => a + b, 0);\n break;\n }\n\n // Format as enterprise currency/number\n return result.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n}\n\n // Search Logic\n onSearch() {\n if (!this.searchQuery) return;\n const index = (this.field.fieldGroup || []).findIndex(row => \n JSON.stringify(row.model).toLowerCase().includes(this.searchQuery.toLowerCase())\n );\n \n if (index !== -1) {\n this.currentPage = Math.floor(index / this.pageSize);\n // Optional: Scroll to matched row after a small timeout\n setTimeout(() => {\n document.getElementById(`row-${index % this.pageSize}`)?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }, 100);\n }\n }\n\n isMatched(row: FormlyFieldConfig): boolean {\n if (!this.searchQuery) return false;\n return JSON.stringify(row.model).toLowerCase().includes(this.searchQuery.toLowerCase());\n }\n\n onDrop(event: CdkDragDrop<any[]> | any) {\n moveItemInArray(this.field.fieldGroup as any[], event.previousIndex, event.currentIndex);\n const formArray = this.formControl as any;\n const temp = formArray.at(event.previousIndex);\n formArray.removeAt(event.previousIndex);\n formArray.insert(event.currentIndex, temp);\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n }\n}","\nimport { Component } from '@angular/core';\nimport { FieldArrayType } from '@ngx-formly/core';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\n\n@Component({\n selector: 'formly-repeat-table-view',\n template: `\n <div class=\"mb-0\">\n \n <!-- <label class=\"block text-lg font-semibold mb-3\">\n {{ field.props?.label }}\n </label> -->\n \n <div class=\"overflow-x-auto rounded-xl border\">\n <table class=\"min-w-full bg-white border-collapse\">\n \n <thead class=\"bg-gray-100\">\n <tr>\n <!-- text-left -->\n @for (col of columns; track col) {\n <th\n class=\"px-4 py-3 text-right font-medium border-b\"\n >\n {{ col.label | translate }}\n </th>\n }\n </tr>\n </thead>\n \n <tbody>\n @for (row of rows; track row; let i = $index) {\n <tr\n class=\"border-b hover:bg-gray-50\">\n @for (col of columns; track col) {\n <td\n class=\"px-4 py-2\">\n {{ row[col.key] }}\n </td>\n }\n </tr>\n }\n \n @if (!rows || rows.length === 0) {\n <tr>\n <td [attr.colspan]=\"columns.length\"\n class=\"text-center py-6 text-gray-400\">\n No data\n </td>\n </tr>\n }\n \n </tbody>\n \n </table>\n </div>\n \n </div>\n \n `,\n imports: [TranslatePipe],\n})\nexport class RepeatTableViewType extends FieldArrayType {\n\n get columns() {\n const group = (this.field?.fieldArray as any)?.fieldGroup || [];\n return group.map((f :any)=> ({\n key: f.key as string,\n label: f.props?.label || f.key\n }));\n }\n\n get rows() {\n return this.model || [];\n }\n\n}\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-repeat.mjs","sources":["../../../../libs/ng.ui.core/repeat/src/lib/repeat-module.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-section.type.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-table-view.type.ts","../../../../libs/ng.ui.core/repeat/src/es.framework-ng.ui.core-repeat.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class RepeatModule {}\n","import { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { ChangeDetectorRef, Component, OnInit, signal, computed } from '@angular/core';\nimport { FieldArrayType, FormlyField, FormlyFieldConfig } from '@ngx-formly/core';\nimport { DragDropModule, moveItemInArray, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'formly-repeat-section',\n standalone: true,\n imports: [FormlyField, TranslatePipe, DragDropModule, FormsModule],\n template: `\n <div class=\"dx-grid-container shadow-md border border-[#c1c1c1] bg-white text-[#333] rounded-sm overflow-hidden\">\n \n <div class=\"bg-gradient-to-b from-[#fdfdfd] to-[#ececec] border-b border-[#c1c1c1] px-3 py-1.5 flex items-center justify-between gap-4\">\n <span class=\"text-[11px] font-bold uppercase tracking-tight text-[#555]\">{{ field.props?.label || '' }}</span>\n \n @if (field.props?.['enableSearch']) {\n <div class=\"relative flex items-center\">\n <i class=\"pi pi-search absolute left-2 text-[10px] text-gray-400\"></i>\n <input \n [(ngModel)]=\"searchQuery\" \n (input)=\"onSearch()\"\n [placeholder]=\"'Search' | translate\" \n class=\"pl-7 pr-2 py-1 text-[11px] border border-[#ccc] rounded-sm focus:border-[#0078d7] outline-none w-48 transition-all\"\n />\n </div>\n }\n </div>\n\n <div class=\"overflow-x-auto min-h-[100px]\">\n <table class=\"w-full border-collapse table-auto\">\n <thead>\n <tr class=\"bg-[#f2f2f2] border-b border-[#d1d1d1]\">\n <th class=\"sticky right-0 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]\"></th>\n \n <th class=\"sticky right-12 z-10 w-12 border-r border-[#d1d1d1] bg-[#f2f2f2]\"></th>\n @for (col of getFirstRowColumns(); track col) {\n <!-- @if (!col.hide) { -->\n \n <th [class.hidden]=\"col.className?.includes('hidden') || col.hide\" style=\"text-align: initial;\" class=\"px-3 py-2 text-[12px] font-semibold text-[#444] border-r border-[#d1d1d1] bg-gradient-to-b from-[#fdfdfd] to-[#f2f2f2] whitespace-nowrap\" >\n {{ (col.props?.label ?? '') | translate }}\n </th>\n \n }\n </tr>\n </thead>\n \n <tbody cdkDropList (cdkDropListDropped)=\"onDrop($event)\" [cdkDropListData]=\"field.fieldGroup\">\n @for (row of displayedRows(); track row; let rowIndex = $index) {\n <tr cdkDrag \n [id]=\"'row-' + rowIndex\"\n [class.bg-yellow-50]=\"isMatched(row)\"\n class=\"dx-row border-b border-[#e0e0e0] hover:bg-[#eff4ff] transition-colors bg-white\">\n \n <div *cdkDragPlaceholder class=\"bg-blue-50 border-2 border-dashed border-blue-200 h-10\"></div>\n\n <td class=\"sticky right-0 z-10 text-center border-r border-[#e0e0e0] bg-[#f6f6f6] py-0 px-2 cursor-move\" cdkDragHandle>\n <div class=\"flex items-center gap-1\">\n <i class=\"pi pi-bars text-[10px] text-gray-300\"></i>\n <span class=\"text-[10px] text-gray-400 font-mono\">{{ (currentPage * pageSize) + rowIndex + 1 }}</span>\n </div>\n </td>\n\n <td class=\"sticky right-12 z-10 px-2 py-0 text-center bg-[#fcfcfc] w-12 border-r border-[#e0e0e0]\">\n @if (canDelete(rowIndex) && !(field.props?.['delete']?.hidden ?? false)) {\n <button type=\"button\" (click)=\"remove(rowIndex)\" class=\"p-2 text-gray-400 hover:text-red-600 transition-colors\">\n <i class=\"pi pi-trash text-[13px]\"></i>\n </button>\n }\n </td>\n \n @for (col of row.fieldGroup; track col) {\n <!-- @if (!col.hide) { -->\n \n <td [class.hidden]=\"col.className?.includes('hidden') || col.hide\" class=\"p-0 border-r border-[#e0e0e0] align-middle min-w-[150px]\">\n <div class=\"dx-field-cell\">\n <formly-field [field]=\"col\"></formly-field>\n </div>\n </td>\n \n }\n\n \n </tr>\n }\n </tbody>\n\n \n@if (field.props?.['showFooterTotals']) {\n <tfoot>\n <tr class=\"bg-[#f9f9f9] border-t-2 border-[#d1d1d1] font-bold text-[12px]\">\n <td class=\"border-r border-[#e0e0e0] bg-[#eee]\"></td>\n <td class=\"border-r border-[#e0e0e0] bg-[#eee]\"></td>\n \n @for (col of getFirstRowColumns(); track col) {\n <!-- @if (!col.hide) { -->\n <td [class.hidden]=\"col.className?.includes('hidden') || col.hide\" class=\"px-3 py-1 border-r border-[#e0e0e0] text-[#333]\">\n @if (getFooterConfig(col.key); as cfg) {\n <div class=\"flex flex-col leading-tight\">\n <span class=\"text-[8px] text-gray-400 uppercase tracking-tighter\">\n {{ cfg.label | translate }}\n </span>\n <span class=\"text-[#005a9e]\">\n {{ calculateTotal(col.key, cfg.type) }}\n </span>\n </div>\n }\n </td>\n \n }\n <td class=\"bg-[#eee]\"></td>\n </tr>\n </tfoot>\n}\n </table>\n </div>\n\n <div class=\"p-2 border-t border-[#c1c1c1] bg-[#f3f3f3] flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n @if (!(field.props?.['add']?.hidden ?? false)) {\n <button type=\"button\" (click)=\"add()\" class=\"flex items-center gap-2 px-4 py-1.5 rounded-sm border border-primary-500 bg-primary-600 text-white text-[11px] font-medium hover:bg-primary-700 shadow-sm transition-all\">\n <i class=\"pi pi-plus text-[10px]\"></i>\n <span>{{ 'Add' | translate }}</span>\n </button>\n }\n </div>\n\n <div class=\"flex items-center gap-1 text-[11px] text-gray-600\">\n <button (click)=\"nextPage()\" [disabled]=\"currentPage >= totalPages() - 1\" class=\"px-2 py-1 border border-gray-300 bg-white disabled:opacity-50\"><i class=\"pi pi-chevron-right text-[9px]\"></i></button>\n <span class=\"px-2\"> {{ currentPage + 1 }} - {{ totalPages() }}</span>\n <button (click)=\"prevPage()\" [disabled]=\"currentPage === 0\" class=\"px-2 py-1 border border-gray-300 bg-white disabled:opacity-50\"><i class=\"pi pi-chevron-left text-[9px]\"></i></button>\n \n </div>\n </div>\n </div>\n `,\n styles: [`\n :host ::ng-deep {\n .dx-field-cell .form-control, .dx-field-cell input, .dx-field-cell select {\n @apply w-full bg-transparent border-none px-3 py-2 text-[13px] outline-none;\n border-radius: 0; box-shadow: none !important;\n }\n .dx-field-cell:focus-within { @apply bg-white ring-1 ring-inset ring-[#0078d7]; box-shadow: inset 0 0 0 1px #0078d7; }\n .dx-row:nth-child(even) { background-color: #fafafa; }\n .cdk-drag-preview { @apply shadow-2xl border border-blue-200 bg-white opacity-90; display: table; width: 100%; }\n }\n .right-12{\n right: 38px\n }\n `]\n})\nexport class RepeatTypeComponent extends FieldArrayType implements OnInit {\n searchQuery = '';\n currentPage = 0;\n pageSize = 10;\n\n constructor(private cdr: ChangeDetectorRef) { super(); }\n\n ngOnInit() {\n this.field.formControl.valueChanges.subscribe(() => {\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n });\n }\n\n getFirstRowColumns() {\n return this.field.fieldGroup?.[0]?.fieldGroup ?? [];\n }\n\n // Row visibility / Delete Protection logic\n canDelete(index: number): boolean {\n const isFirst = index === 0 && this.currentPage === 0;\n const isSecond = index === 1 && this.currentPage === 0;\n \n if (isFirst && !this.field.props?.['canDeleteFirstRow']) return false;\n if (isSecond && !this.field.props?.['canDeleteSecondRow']) return false;\n \n return true;\n }\n\n // Pagination Logic\n totalPages() {\n return Math.ceil((this.field.fieldGroup?.length || 0) / this.pageSize) || 1;\n }\n\n displayedRows() {\n const start = this.currentPage * this.pageSize;\n return (this.field.fieldGroup || []).slice(start, start + this.pageSize);\n }\n\n nextPage() { if (this.currentPage < this.totalPages() - 1) this.currentPage++; }\n prevPage() { if (this.currentPage > 0) this.currentPage--; }\n\n // Totals Logic\n // inside RepeatTypeComponent class\n\ngetFooterConfig(columnKey: any) {\n // Access footer configuration defined in the field props\n const footerConfigs = this.field.props?.['footerConfig'];\n if (!footerConfigs) return null;\n \n // Find config for this specific key (e.g., { key: 'amount', label: 'Sum', type: 'sum' })\n return footerConfigs.find((c: any) => c.key === columnKey);\n}\n\ncalculateTotal(key: any, type: 'sum' | 'avg' | 'count' = 'sum'): string {\n const values = (this.formControl.value || [])\n .map((v: any) => parseFloat(v[key]))\n .filter((v: number) => !isNaN(v));\n \n\n if (values.length === 0) return '0.00';\n\n let result = 0;\n switch (type) {\n case 'avg':\n result = values.reduce((a:any, b:any) => a + b, 0) / values.length;\n break;\n case 'count':\n return values.length.toString();\n case 'sum':\n default:\n result = values.reduce((a:any, b:any) => a + b, 0);\n break;\n }\n\n // Format as enterprise currency/number\n return result.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n}\n\n // Search Logic\n onSearch() {\n if (!this.searchQuery) return;\n const index = (this.field.fieldGroup || []).findIndex(row => \n JSON.stringify(row.model).toLowerCase().includes(this.searchQuery.toLowerCase())\n );\n \n if (index !== -1) {\n this.currentPage = Math.floor(index / this.pageSize);\n // Optional: Scroll to matched row after a small timeout\n setTimeout(() => {\n document.getElementById(`row-${index % this.pageSize}`)?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }, 100);\n }\n }\n\n isMatched(row: FormlyFieldConfig): boolean {\n if (!this.searchQuery) return false;\n return JSON.stringify(row.model).toLowerCase().includes(this.searchQuery.toLowerCase());\n }\n\n onDrop(event: CdkDragDrop<any[]> | any) {\n moveItemInArray(this.field.fieldGroup as any[], event.previousIndex, event.currentIndex);\n const formArray = this.formControl as any;\n const temp = formArray.at(event.previousIndex);\n formArray.removeAt(event.previousIndex);\n formArray.insert(event.currentIndex, temp);\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n }\n}","\nimport { Component } from '@angular/core';\nimport { FieldArrayType } from '@ngx-formly/core';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\n\n@Component({\n selector: 'formly-repeat-table-view',\n template: `\n <div class=\"mb-0\">\n \n <!-- <label class=\"block text-lg font-semibold mb-3\">\n {{ field.props?.label }}\n </label> -->\n \n <div class=\"overflow-x-auto rounded-xl border\">\n <table class=\"min-w-full bg-white border-collapse\">\n \n <thead class=\"bg-gray-100\">\n <tr>\n <!-- text-left -->\n @for (col of columns; track col) {\n <th\n class=\"px-4 py-3 text-right font-medium border-b\"\n >\n {{ col.label | translate }}\n </th>\n }\n </tr>\n </thead>\n \n <tbody>\n @for (row of rows; track row; let i = $index) {\n <tr\n class=\"border-b hover:bg-gray-50\">\n @for (col of columns; track col) {\n <td\n class=\"px-4 py-2\">\n {{ row[col.key] }}\n </td>\n }\n </tr>\n }\n \n @if (!rows || rows.length === 0) {\n <tr>\n <td [attr.colspan]=\"columns.length\"\n class=\"text-center py-6 text-gray-400\">\n No data\n </td>\n </tr>\n }\n \n </tbody>\n \n </table>\n </div>\n \n </div>\n \n `,\n imports: [TranslatePipe],\n})\nexport class RepeatTableViewType extends FieldArrayType {\n\n get columns() {\n const group = (this.field?.fieldArray as any)?.fieldGroup || [];\n return group.map((f :any)=> ({\n key: f.key as string,\n label: f.props?.label || f.key\n }));\n }\n\n get rows() {\n return this.model || [];\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ # @es.framework/ng.ui.core/generic-crud-report
2
+
3
+ Secondary entry point of `@es.framework/ng.ui.core`. It can be used by importing from `@es.framework/ng.ui.core/generic-crud-report`.
@@ -0,0 +1,3 @@
1
+ # @es.framework/ng.ui.core/generic-listbox
2
+
3
+ Secondary entry point of `@es.framework/ng.ui.core`. It can be used by importing from `@es.framework/ng.ui.core/generic-listbox`.