@elite.framework/ng.ui.core 1.0.62 → 1.0.63

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 (28) hide show
  1. package/fesm2022/elite.framework-ng.ui.core-custom-switch.mjs +2 -0
  2. package/fesm2022/elite.framework-ng.ui.core-custom-switch.mjs.map +1 -1
  3. package/fesm2022/elite.framework-ng.ui.core-formly-ui-all.mjs +8 -2
  4. package/fesm2022/elite.framework-ng.ui.core-formly-ui-all.mjs.map +1 -1
  5. package/fesm2022/elite.framework-ng.ui.core-generic-button.mjs +29 -31
  6. package/fesm2022/elite.framework-ng.ui.core-generic-button.mjs.map +1 -1
  7. package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs +124 -8
  8. package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
  9. package/fesm2022/elite.framework-ng.ui.core-generic-dialog.mjs +31 -7
  10. package/fesm2022/elite.framework-ng.ui.core-generic-dialog.mjs.map +1 -1
  11. package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs +1 -1
  12. package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs.map +1 -1
  13. package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs +6 -4
  14. package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs.map +1 -1
  15. package/fesm2022/elite.framework-ng.ui.core-generic-view.mjs +398 -0
  16. package/fesm2022/elite.framework-ng.ui.core-generic-view.mjs.map +1 -0
  17. package/fesm2022/elite.framework-ng.ui.core-label-type.mjs +44 -1
  18. package/fesm2022/elite.framework-ng.ui.core-label-type.mjs.map +1 -1
  19. package/fesm2022/elite.framework-ng.ui.core-wrappers.mjs +44 -1
  20. package/fesm2022/elite.framework-ng.ui.core-wrappers.mjs.map +1 -1
  21. package/generic-crud-table/index.d.ts +13 -2
  22. package/generic-dialog/index.d.ts +2 -2
  23. package/generic-table/index.d.ts +2 -0
  24. package/generic-view/README.md +3 -0
  25. package/generic-view/index.d.ts +96 -0
  26. package/label-type/index.d.ts +9 -1
  27. package/package.json +31 -27
  28. package/wrappers/index.d.ts +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.ui.core-generic-button.mjs","sources":["../tmp-esm2022/generic-button/lib/generic-button-module.js","../tmp-esm2022/generic-button/lib/generic-button.js","../tmp-esm2022/generic-button/elite.framework-ng.ui.core-generic-button.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericButtonModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButtonModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButtonModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButtonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1idXR0b24tbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtYnV0dG9uL3NyYy9saWIvZ2VuZXJpYy1idXR0b24tbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sbUJBQW1CO3VHQUFuQixtQkFBbUI7d0dBQW5CLG1CQUFtQixZQUZwQixZQUFZO3dHQUVYLG1CQUFtQixZQUZwQixZQUFZOzsyRkFFWCxtQkFBbUI7a0JBSC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0J1dHRvbk1vZHVsZSB7fVxuIl19","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { HasPermissionDirective } from '@elite.framework/ng.core/directives';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/button\";\nimport * as i3 from \"primeng/splitbutton\";\nimport * as i4 from \"@ngx-translate/core\";\nexport class GenericButton {\n // permissionChecker = inject(PermissionCheckerService);\n // لو وُجدت هذه المصفوفة، نُستخدم splitButton\n model;\n type = 'button';\n icon = '';\n label = '';\n variant = 'raised';\n severity = 'primary';\n size = 'small';\n iconPosition = 'left';\n disabled = false;\n loading = false;\n ariaLabel;\n extraClasses = ''; // لأي Tailwind إضافي\n permission;\n clicked = new EventEmitter();\n itemClick = new EventEmitter();\n // خريطة أحجام\n sizeMap = {\n small: 'px-2 py-1 text-sm',\n normal: 'px-4 py-2 text-base',\n large: 'px-6 py-3 text-lg',\n };\n // خريطة ألوان للـ raised و rounded\n colorMap = {\n primary: 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500 text-white',\n secondary: 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500 text-white',\n success: 'bg-green-600 hover:bg-green-700 focus:ring-green-500 text-white',\n info: 'bg-teal-600 hover:bg-teal-700 focus:ring-teal-500 text-white',\n warn: 'bg-yellow-500 hover:bg-yellow-600 focus:ring-yellow-400 text-white',\n danger: 'bg-red-600 hover:bg-red-700 focus:ring-red-500 text-white',\n help: 'bg-teal-600 hover:bg-teal-700 focus:ring-teal-500 text-white',\n contrast: 'bg-teal-600 hover:bg-teal-700 focus:ring-teal-500 text-white',\n };\n // خريطة حدوده للـ outlined\n outlinedMap = {\n primary: 'border border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n secondary: 'border border-gray-600 text-gray-600 hover:bg-gray-50 focus:ring-gray-500',\n success: 'border border-green-600 text-green-600 hover:bg-green-50 focus:ring-green-500',\n info: 'border border-teal-600 text-teal-600 hover:bg-teal-50 focus:ring-teal-500',\n help: 'border border-teal-600 text-teal-600 hover:bg-teal-50 focus:ring-teal-500',\n contrast: 'border border-teal-600 text-teal-600 hover:bg-teal-50 focus:ring-teal-500',\n warn: 'border border-yellow-500 text-yellow-500 hover:bg-yellow-50 focus:ring-yellow-400',\n danger: 'border border-red-600 text-red-600 hover:bg-red-50 focus:ring-red-500',\n };\n get twClasses() {\n const base = [\n 'inline-flex items-center justify-center font-medium',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 transition',\n this.sizeMap[this.size]\n ];\n // variant-specific\n if (this.variant === 'outlined') {\n base.push(this.outlinedMap[this.severity]);\n }\n else {\n base.push(this.colorMap[this.severity]);\n }\n if (this.variant === 'text') {\n base.push('bg-transparent hover:bg-gray-100 focus:ring-gray-200 text-gray-700');\n }\n if (this.variant === 'rounded') {\n base.push('rounded-full');\n }\n else {\n base.push('rounded-md');\n }\n if (this.disabled || this.loading) {\n base.push('opacity-50 cursor-not-allowed');\n }\n if (this.extraClasses) {\n base.push(this.extraClasses);\n }\n return base.join(' ');\n }\n onClick() {\n if (!this.disabled && !this.loading) {\n this.clicked.emit();\n }\n }\n onItemClick(evt) {\n this.itemClick.emit(evt);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButton, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: GenericButton, isStandalone: true, selector: \"lib-generic-button\", inputs: { model: \"model\", type: \"type\", icon: \"icon\", label: \"label\", variant: \"variant\", severity: \"severity\", size: \"size\", iconPosition: \"iconPosition\", disabled: \"disabled\", loading: \"loading\", ariaLabel: \"ariaLabel\", extraClasses: \"extraClasses\", permission: \"permission\" }, outputs: { clicked: \"clicked\", itemClick: \"itemClick\" }, ngImport: i0, template: \"\\n\\n<ng-container *hasPermission=\\\"permission ? [permission] : []\\\">\\n <ng-container *ngIf=\\\"model && model?.length; else simpleBtn\\\">\\n <!-- Split Button -->\\n <!-- [class]=\\\"twClasses\\\" -->\\n <!-- [outlined]=\\\"outlined\\\" -->\\n <p-splitButton\\n [label]=\\\"label | translate\\\"\\n [icon]=\\\"loading ? 'pi pi-spin pi-spinner' : icon\\\"\\n [model]=\\\"model || []\\\"\\n [disabled]=\\\"disabled || loading\\\"\\n [severity]=\\\"severity || 'primary'\\\"\\n (onClick)=\\\"onClick()\\\"\\n (onItemClick)=\\\"onItemClick($event)\\\"\\n >\\n </p-splitButton>\\n </ng-container>\\n\\n <ng-template #simpleBtn>\\n <!-- \\u062D\\u0627\\u0644\\u0629 \\u0627\\u0644\\u0632\\u0631\\u0651 \\u0627\\u0644\\u0639\\u0627\\u062F\\u064A -->\\n <button\\n [attr.type]=\\\"type\\\"\\n pButton\\n [icon]=\\\"loading ? 'pi pi-spin pi-spinner' : icon\\\"\\n [label]=\\\"label | translate\\\"\\n [ngClass]=\\\"twClasses\\\"\\n [attr.aria-label]=\\\"(ariaLabel || label) | translate\\\"\\n [disabled]=\\\"disabled || loading\\\" (onClick)=\\\"onClick()\\\"\\n (click)=\\\"onClick()\\\"\\n >\\n\\n <!-- \\u0645\\u062D\\u062A\\u0648\\u0649 \\u0645\\u062E\\u0635\\u0651\\u0635 -->\\n <ng-content *ngIf=\\\"!label && !icon && !loading\\\"></ng-content>\\n </button>\\n </ng-template>\\n </ng-container>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i2.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: SplitButtonModule }, { kind: \"component\", type: i3.SplitButton, selector: \"p-splitbutton, p-splitButton, p-split-button\", inputs: [\"model\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"icon\", \"iconPos\", \"label\", \"tooltip\", \"tooltipOptions\", \"styleClass\", \"menuStyle\", \"menuStyleClass\", \"dropdownIcon\", \"appendTo\", \"dir\", \"expandAriaLabel\", \"showTransitionOptions\", \"hideTransitionOptions\", \"buttonProps\", \"menuButtonProps\", \"autofocus\", \"disabled\", \"tabindex\", \"menuButtonDisabled\", \"buttonDisabled\"], outputs: [\"onClick\", \"onMenuHide\", \"onMenuShow\", \"onDropdownClick\"] }, { kind: \"directive\", type: HasPermissionDirective, selector: \"[hasPermission]\", inputs: [\"hasPermission\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"pipe\", type: i4.TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButton, decorators: [{\n type: Component,\n args: [{ selector: 'lib-generic-button', standalone: true, imports: [CommonModule, ButtonModule, SplitButtonModule, HasPermissionDirective, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n<ng-container *hasPermission=\\\"permission ? [permission] : []\\\">\\n <ng-container *ngIf=\\\"model && model?.length; else simpleBtn\\\">\\n <!-- Split Button -->\\n <!-- [class]=\\\"twClasses\\\" -->\\n <!-- [outlined]=\\\"outlined\\\" -->\\n <p-splitButton\\n [label]=\\\"label | translate\\\"\\n [icon]=\\\"loading ? 'pi pi-spin pi-spinner' : icon\\\"\\n [model]=\\\"model || []\\\"\\n [disabled]=\\\"disabled || loading\\\"\\n [severity]=\\\"severity || 'primary'\\\"\\n (onClick)=\\\"onClick()\\\"\\n (onItemClick)=\\\"onItemClick($event)\\\"\\n >\\n </p-splitButton>\\n </ng-container>\\n\\n <ng-template #simpleBtn>\\n <!-- \\u062D\\u0627\\u0644\\u0629 \\u0627\\u0644\\u0632\\u0631\\u0651 \\u0627\\u0644\\u0639\\u0627\\u062F\\u064A -->\\n <button\\n [attr.type]=\\\"type\\\"\\n pButton\\n [icon]=\\\"loading ? 'pi pi-spin pi-spinner' : icon\\\"\\n [label]=\\\"label | translate\\\"\\n [ngClass]=\\\"twClasses\\\"\\n [attr.aria-label]=\\\"(ariaLabel || label) | translate\\\"\\n [disabled]=\\\"disabled || loading\\\" (onClick)=\\\"onClick()\\\"\\n (click)=\\\"onClick()\\\"\\n >\\n\\n <!-- \\u0645\\u062D\\u062A\\u0648\\u0649 \\u0645\\u062E\\u0635\\u0651\\u0635 -->\\n <ng-content *ngIf=\\\"!label && !icon && !loading\\\"></ng-content>\\n </button>\\n </ng-template>\\n </ng-container>\\n\" }]\n }], propDecorators: { model: [{\n type: Input\n }], type: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }], variant: [{\n type: Input\n }], severity: [{\n type: Input\n }], size: [{\n type: Input\n }], iconPosition: [{\n type: Input\n }], disabled: [{\n type: Input\n }], loading: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], extraClasses: [{\n type: Input\n }], permission: [{\n type: Input\n }], clicked: [{\n type: Output\n }], itemClick: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24vc3JjL2xpYi9nZW5lcmljLWJ1dHRvbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWJ1dHRvbi9zcmMvbGliL2dlbmVyaWMtYnV0dG9uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBVzlDLE1BQU0sT0FBTyxhQUFhO0lBRXhCLHlEQUF5RDtJQUV6RCw2Q0FBNkM7SUFDcEMsS0FBSyxDQUFjO0lBRW5CLElBQUksR0FBa0MsUUFBUSxDQUFDO0lBQy9DLElBQUksR0FBRyxFQUFFLENBQUM7SUFDVixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsT0FBTyxHQUFrQixRQUFRLENBQUM7SUFDbEMsUUFBUSxHQUFtQixTQUFTLENBQUM7SUFDckMsSUFBSSxHQUFlLE9BQU8sQ0FBQztJQUMzQixZQUFZLEdBQWlCLE1BQU0sQ0FBQztJQUNwQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsU0FBUyxDQUFVO0lBQ25CLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBRSxx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RyxZQUFZLG9RQUFFLGlCQUFpQixpbUJBQUMsc0JBQXNCLHNGQUFDLGVBQWU7OzJGQUl0RixhQUFhO2tCQVB6QixTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ04sQ0FBRSxZQUFZLEVBQUcsWUFBWSxFQUFFLGlCQUFpQixFQUFDLHNCQUFzQixFQUFDLGVBQWUsQ0FBQyxtQkFDakYsdUJBQXVCLENBQUMsTUFBTTs4QkFRdEMsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNwbGl0QnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zcGxpdGJ1dHRvbic7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEhhc1Blcm1pc3Npb25EaXJlY3RpdmUgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJ1dHRvblNldmVyaXR5LCBCdXR0b25TaXplLCBCdXR0b25WYXJpYW50LCBJY29uUG9zaXRpb24gfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1nZW5lcmljLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gICBpbXBvcnRzOiBbIENvbW1vbk1vZHVsZSAsIEJ1dHRvbk1vZHVsZSwgU3BsaXRCdXR0b25Nb2R1bGUsSGFzUGVybWlzc2lvbkRpcmVjdGl2ZSxUcmFuc2xhdGVNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtYnV0dG9uLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljQnV0dG9uIHtcblxuICAvLyAgcGVybWlzc2lvbkNoZWNrZXIgPSBpbmplY3QoUGVybWlzc2lvbkNoZWNrZXJTZXJ2aWNlKTtcblxuICAvLyDZhNmIINmI2Y/YrNiv2Kog2YfYsNmHINin2YTZhdi12YHZiNmB2KnYjCDZhtmP2LPYqtiu2K/ZhSBzcGxpdEJ1dHRvblxuICBASW5wdXQoKSBtb2RlbD86IE1lbnVJdGVtW107XG5cbiAgQElucHV0KCkgdHlwZTogJ2J1dHRvbicgfCAnc3VibWl0JyB8ICdyZXNldCcgPSAnYnV0dG9uJztcbiAgQElucHV0KCkgaWNvbiA9ICcnO1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSB2YXJpYW50OiBCdXR0b25WYXJpYW50ID0gJ3JhaXNlZCc7XG4gIEBJbnB1dCgpIHNldmVyaXR5OiBCdXR0b25TZXZlcml0eSA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgc2l6ZTogQnV0dG9uU2l6ZSA9ICdzbWFsbCc7XG4gIEBJbnB1dCgpIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uID0gJ2xlZnQnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgZXh0cmFDbGFzc2VzID0gJyc7ICAvLyDZhNij2YogVGFpbHdpbmQg2KXYttin2YHZilxuICBASW5wdXQoKSBwZXJtaXNzaW9uPzogc3RyaW5nO1xuICBAT3V0cHV0KCkgY2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG5cbiAgLy8g2K7YsdmK2LfYqSDYo9it2KzYp9mFXG4gIHByaXZhdGUgc2l6ZU1hcDogUmVjb3JkPEJ1dHRvblNpemUsc3RyaW5nPiA9IHtcbiAgICBzbWFsbDogJ3B4LTIgcHktMSB0ZXh0LXNtJyxcbiAgICBub3JtYWw6ICdweC00IHB5LTIgdGV4dC1iYXNlJyxcbiAgICBsYXJnZTogJ3B4LTYgcHktMyB0ZXh0LWxnJyxcbiAgfTtcblxuICAvLyDYrtix2YrYt9ipINij2YTZiNin2YYg2YTZhNmAIHJhaXNlZCDZiCByb3VuZGVkXG4gIHByaXZhdGUgY29sb3JNYXA6IFJlY29yZDxCdXR0b25TZXZlcml0eSxzdHJpbmc+ID0ge1xuICAgIHByaW1hcnk6ICAgJ2JnLWJsdWUtNjAwIGhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOnJpbmctYmx1ZS01MDAgdGV4dC13aGl0ZScsXG4gICAgc2Vjb25kYXJ5OiAnYmctZ3JheS02MDAgaG92ZXI6YmctZ3JheS03MDAgZm9jdXM6cmluZy1ncmF5LTUwMCB0ZXh0LXdoaXRlJyxcbiAgICBzdWNjZXNzOiAgICdiZy1ncmVlbi02MDAgaG92ZXI6YmctZ3JlZW4tNzAwIGZvY3VzOnJpbmctZ3JlZW4tNTAwIHRleHQtd2hpdGUnLFxuICAgIGluZm86ICAgICAgJ2JnLXRlYWwtNjAwIGhvdmVyOmJnLXRlYWwtNzAwIGZvY3VzOnJpbmctdGVhbC01MDAgdGV4dC13aGl0ZScsXG4gICAgd2FybjogICAnYmcteWVsbG93LTUwMCBob3ZlcjpiZy15ZWxsb3ctNjAwIGZvY3VzOnJpbmcteWVsbG93LTQwMCB0ZXh0LXdoaXRlJyxcbiAgICBkYW5nZXI6ICAgICdiZy1yZWQtNjAwIGhvdmVyOmJnLXJlZC03MDAgZm9jdXM6cmluZy1yZWQtNTAwIHRleHQtd2hpdGUnLFxuICAgIGhlbHA6ICAgICdiZy10ZWFsLTYwMCBob3ZlcjpiZy10ZWFsLTcwMCBmb2N1czpyaW5nLXRlYWwtNTAwIHRleHQtd2hpdGUnLFxuICAgIGNvbnRyYXN0OiAgICAnYmctdGVhbC02MDAgaG92ZXI6YmctdGVhbC03MDAgZm9jdXM6cmluZy10ZWFsLTUwMCB0ZXh0LXdoaXRlJyxcbiAgfTtcblxuICAvLyDYrtix2YrYt9ipINit2K/ZiNiv2Ycg2YTZhNmAIG91dGxpbmVkXG4gIHByaXZhdGUgb3V0bGluZWRNYXA6IFJlY29yZDxCdXR0b25TZXZlcml0eSxzdHJpbmc+ID0ge1xuICAgIHByaW1hcnk6ICAgJ2JvcmRlciBib3JkZXItYmx1ZS02MDAgdGV4dC1ibHVlLTYwMCBob3ZlcjpiZy1ibHVlLTUwIGZvY3VzOnJpbmctYmx1ZS01MDAnLFxuICAgIHNlY29uZGFyeTogJ2JvcmRlciBib3JkZXItZ3JheS02MDAgdGV4dC1ncmF5LTYwMCBob3ZlcjpiZy1ncmF5LTUwIGZvY3VzOnJpbmctZ3JheS01MDAnLFxuICAgIHN1Y2Nlc3M6ICAgJ2JvcmRlciBib3JkZXItZ3JlZW4tNjAwIHRleHQtZ3JlZW4tNjAwIGhvdmVyOmJnLWdyZWVuLTUwIGZvY3VzOnJpbmctZ3JlZW4tNTAwJyxcbiAgICBpbmZvOiAgICAgICdib3JkZXIgYm9yZGVyLXRlYWwtNjAwIHRleHQtdGVhbC02MDAgaG92ZXI6YmctdGVhbC01MCBmb2N1czpyaW5nLXRlYWwtNTAwJyxcbiAgICBoZWxwOiAgICAgICdib3JkZXIgYm9yZGVyLXRlYWwtNjAwIHRleHQtdGVhbC02MDAgaG92ZXI6YmctdGVhbC01MCBmb2N1czpyaW5nLXRlYWwtNTAwJyxcbiAgICBjb250cmFzdDogICAgICAnYm9yZGVyIGJvcmRlci10ZWFsLTYwMCB0ZXh0LXRlYWwtNjAwIGhvdmVyOmJnLXRlYWwtNTAgZm9jdXM6cmluZy10ZWFsLTUwMCcsXG4gICAgd2FybjogICAnYm9yZGVyIGJvcmRlci15ZWxsb3ctNTAwIHRleHQteWVsbG93LTUwMCBob3ZlcjpiZy15ZWxsb3ctNTAgZm9jdXM6cmluZy15ZWxsb3ctNDAwJyxcbiAgICBkYW5nZXI6ICAgICdib3JkZXIgYm9yZGVyLXJlZC02MDAgdGV4dC1yZWQtNjAwIGhvdmVyOmJnLXJlZC01MCBmb2N1czpyaW5nLXJlZC01MDAnLFxuICB9O1xuXG4gIGdldCB0d0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlID0gW1xuICAgICAgJ2lubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmb250LW1lZGl1bScsXG4gICAgICAnZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLW9mZnNldC0yIHRyYW5zaXRpb24nLFxuICAgICAgdGhpcy5zaXplTWFwW3RoaXMuc2l6ZV1cbiAgICBdO1xuICAgIC8vIHZhcmlhbnQtc3BlY2lmaWNcbiAgICBpZiAodGhpcy52YXJpYW50ID09PSAnb3V0bGluZWQnKSB7XG4gICAgICBiYXNlLnB1c2godGhpcy5vdXRsaW5lZE1hcFt0aGlzLnNldmVyaXR5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJhc2UucHVzaCh0aGlzLmNvbG9yTWFwW3RoaXMuc2V2ZXJpdHldKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ3RleHQnKSB7XG4gICAgICBiYXNlLnB1c2goJ2JnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOnJpbmctZ3JheS0yMDAgdGV4dC1ncmF5LTcwMCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy52YXJpYW50ID09PSAncm91bmRlZCcpIHtcbiAgICAgIGJhc2UucHVzaCgncm91bmRlZC1mdWxsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJhc2UucHVzaCgncm91bmRlZC1tZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgIGJhc2UucHVzaCgnb3BhY2l0eS01MCBjdXJzb3Itbm90LWFsbG93ZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXh0cmFDbGFzc2VzKSB7XG4gICAgICBiYXNlLnB1c2godGhpcy5leHRyYUNsYXNzZXMpO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZS5qb2luKCcgJyk7XG4gIH1cblxuICBvbkNsaWNrKCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5sb2FkaW5nKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gb25JdGVtQ2xpY2soZXZ0OiBhbnkpIHtcbiAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoZXZ0KTtcbiB9XG5cblxufVxuIiwiXG5cbjxuZy1jb250YWluZXIgKmhhc1Blcm1pc3Npb249XCJwZXJtaXNzaW9uID8gW3Blcm1pc3Npb25dIDogW11cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsICYmIG1vZGVsPy5sZW5ndGg7IGVsc2Ugc2ltcGxlQnRuXCI+XG4gICAgICAgPCEtLSBTcGxpdCBCdXR0b24gLS0+XG4gICAgICAgIDwhLS0gW2NsYXNzXT1cInR3Q2xhc3Nlc1wiIC0tPlxuICAgICAgICA8IS0tIFtvdXRsaW5lZF09XCJvdXRsaW5lZFwiIC0tPlxuICAgICAgPHAtc3BsaXRCdXR0b25cbiAgICAgICAgW2xhYmVsXT1cImxhYmVsICB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpY29uXT1cImxvYWRpbmcgPyAncGkgcGktc3BpbiBwaS1zcGlubmVyJyA6IGljb25cIlxuICAgICAgICBbbW9kZWxdPVwibW9kZWwgfHwgW11cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbG9hZGluZ1wiXG4gICAgICAgIFtzZXZlcml0eV09XCJzZXZlcml0eSB8fCAncHJpbWFyeSdcIlxuICAgICAgICAob25DbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgPC9wLXNwbGl0QnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI3NpbXBsZUJ0bj5cbiAgICA8IS0tINit2KfZhNipINin2YTYstix2ZEg2KfZhNi52KfYr9mKIC0tPlxuICAgIDxidXR0b25cbiAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICBwQnV0dG9uXG4gICAgICBbaWNvbl09XCJsb2FkaW5nID8gJ3BpIHBpLXNwaW4gcGktc3Bpbm5lcicgOiBpY29uXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICBbbmdDbGFzc109XCJ0d0NsYXNzZXNcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoYXJpYUxhYmVsIHx8IGxhYmVsKSB8IHRyYW5zbGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbG9hZGluZ1wiIChvbkNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG5cbiAgICAgIDwhLS0g2YXYrdiq2YjZiSDZhdiu2LXZkdi1IC0tPlxuICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhbGFiZWwgJiYgIWljb24gJiYgIWxvYWRpbmdcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24vc3JjL2VsaXRlLmZyYW1ld29yay1uZy51aS5jb3JlLWdlbmVyaWMtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elite.framework-ng.ui.core-generic-button.mjs","sources":["../tmp-esm2022/generic-button/lib/generic-button-module.js","../tmp-esm2022/generic-button/lib/generic-button.js","../tmp-esm2022/generic-button/elite.framework-ng.ui.core-generic-button.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericButtonModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButtonModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButtonModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButtonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1idXR0b24tbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtYnV0dG9uL3NyYy9saWIvZ2VuZXJpYy1idXR0b24tbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sbUJBQW1CO3VHQUFuQixtQkFBbUI7d0dBQW5CLG1CQUFtQixZQUZwQixZQUFZO3dHQUVYLG1CQUFtQixZQUZwQixZQUFZOzsyRkFFWCxtQkFBbUI7a0JBSC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0J1dHRvbk1vZHVsZSB7fVxuIl19","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { HasPermissionDirective } from '@elite.framework/ng.core/directives';\nimport { TranslateModule } from '@ngx-translate/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/button\";\nimport * as i3 from \"primeng/splitbutton\";\nimport * as i4 from \"@ngx-translate/core\";\nexport class GenericButton {\n // permissionChecker = inject(PermissionCheckerService);\n // لو وُجدت هذه المصفوفة، نُستخدم splitButton\n model;\n type = 'button';\n icon = '';\n label = '';\n variant = 'raised';\n severity = 'primary';\n size = 'small';\n iconPosition = 'left';\n disabled = false;\n loading = false;\n ariaLabel;\n extraClasses = ''; // لأي Tailwind إضافي\n permission;\n clicked = new EventEmitter();\n itemClick = new EventEmitter();\n // خريطة أحجام\n sizeMap = {\n small: 'text-sm',\n // normal: 'px-4 py-2 text-base',\n large: 'text-lg',\n };\n // خريطة ألوان للـ raised و rounded\n colorMap = {\n primary: 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500 text-white',\n secondary: 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500 text-white',\n success: 'bg-green-600 hover:bg-green-700 focus:ring-green-500 text-white',\n info: 'bg-teal-600 hover:bg-teal-700 focus:ring-teal-500 text-white',\n warn: 'bg-yellow-500 hover:bg-yellow-600 focus:ring-yellow-400 text-white',\n danger: 'bg-red-600 hover:bg-red-700 focus:ring-red-500 text-white',\n help: 'bg-teal-600 hover:bg-teal-700 focus:ring-teal-500 text-white',\n contrast: 'bg-teal-600 hover:bg-teal-700 focus:ring-teal-500 text-white',\n };\n // خريطة حدوده للـ outlined\n outlinedMap = {\n primary: 'border border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n secondary: 'border border-gray-600 text-gray-600 hover:bg-gray-50 focus:ring-gray-500',\n success: 'border border-green-600 text-green-600 hover:bg-green-50 focus:ring-green-500',\n info: 'border border-teal-600 text-teal-600 hover:bg-teal-50 focus:ring-teal-500',\n help: 'border border-teal-600 text-teal-600 hover:bg-teal-50 focus:ring-teal-500',\n contrast: 'border border-teal-600 text-teal-600 hover:bg-teal-50 focus:ring-teal-500',\n warn: 'border border-yellow-500 text-yellow-500 hover:bg-yellow-50 focus:ring-yellow-400',\n danger: 'border border-red-600 text-red-600 hover:bg-red-50 focus:ring-red-500',\n };\n get twClasses() {\n const base = [\n // 'inline-flex items-center justify-center font-medium',\n // 'focus:outline-none focus:ring-2 focus:ring-offset-2 transition',\n this.sizeMap[this.size]\n ];\n // // variant-specific\n // if (this.variant === 'outlined') {\n // base.push(this.outlinedMap[this.severity]);\n // } else {\n // base.push(this.colorMap[this.severity]);\n // }\n // if (this.variant === 'text') {\n // base.push('bg-transparent hover:bg-gray-100 focus:ring-gray-200 text-gray-700');\n // }\n // if (this.variant === 'rounded') {\n // base.push('rounded-full');\n // } else {\n // base.push('rounded-md');\n // }\n // if (this.disabled || this.loading) {\n // base.push('opacity-50 cursor-not-allowed');\n // }\n // if (this.extraClasses) {\n // base.push(this.extraClasses);\n // }\n return base.join(' ');\n }\n onClick() {\n if (!this.disabled && !this.loading) {\n this.clicked.emit();\n }\n }\n onItemClick(evt) {\n this.itemClick.emit(evt);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButton, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: GenericButton, isStandalone: true, selector: \"lib-generic-button\", inputs: { model: \"model\", type: \"type\", icon: \"icon\", label: \"label\", variant: \"variant\", severity: \"severity\", size: \"size\", iconPosition: \"iconPosition\", disabled: \"disabled\", loading: \"loading\", ariaLabel: \"ariaLabel\", extraClasses: \"extraClasses\", permission: \"permission\" }, outputs: { clicked: \"clicked\", itemClick: \"itemClick\" }, ngImport: i0, template: \"\\n\\n<ng-container *hasPermission=\\\"permission ? [permission] : []\\\">\\n <ng-container *ngIf=\\\"model && model?.length; else simpleBtn\\\">\\n <!-- Split Button -->\\n <!-- [outlined]=\\\"outlined\\\" -->\\n <p-splitButton\\n [class]=\\\"twClasses\\\"\\n [attr.type]=\\\"type\\\"\\n [label]=\\\"label | translate\\\"\\n [icon]=\\\"loading ? 'pi pi-spin pi-spinner' : icon\\\"\\n [model]=\\\"model || []\\\"\\n [disabled]=\\\"disabled || loading\\\"\\n [severity]=\\\"severity || 'primary'\\\"\\n (onClick)=\\\"onClick()\\\"\\n (onItemClick)=\\\"onItemClick($event)\\\"\\n >\\n </p-splitButton>\\n </ng-container>\\n\\n <ng-template #simpleBtn>\\n <!-- \\u062D\\u0627\\u0644\\u0629 \\u0627\\u0644\\u0632\\u0631\\u0651 \\u0627\\u0644\\u0639\\u0627\\u062F\\u064A -->\\n <!-- [size]=\\\"size || 'small'\\\" -->\\n <button\\n [class]=\\\"twClasses\\\"\\n [attr.type]=\\\"type\\\"\\n pButton\\n [icon]=\\\"loading ? 'pi pi-spin pi-spinner' : icon\\\"\\n [label]=\\\"label | translate\\\"\\n [severity]=\\\"severity || 'primary'\\\"\\n [attr.aria-label]=\\\"(ariaLabel || label) | translate\\\"\\n [disabled]=\\\"disabled || loading\\\" (onClick)=\\\"onClick()\\\"\\n (click)=\\\"onClick()\\\"\\n >\\n\\n <!-- \\u0645\\u062D\\u062A\\u0648\\u0649 \\u0645\\u062E\\u0635\\u0651\\u0635 -->\\n <ng-content *ngIf=\\\"!label && !icon && !loading\\\"></ng-content>\\n </button>\\n </ng-template>\\n </ng-container>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i2.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: SplitButtonModule }, { kind: \"component\", type: i3.SplitButton, selector: \"p-splitbutton, p-splitButton, p-split-button\", inputs: [\"model\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"icon\", \"iconPos\", \"label\", \"tooltip\", \"tooltipOptions\", \"styleClass\", \"menuStyle\", \"menuStyleClass\", \"dropdownIcon\", \"appendTo\", \"dir\", \"expandAriaLabel\", \"showTransitionOptions\", \"hideTransitionOptions\", \"buttonProps\", \"menuButtonProps\", \"autofocus\", \"disabled\", \"tabindex\", \"menuButtonDisabled\", \"buttonDisabled\"], outputs: [\"onClick\", \"onMenuHide\", \"onMenuShow\", \"onDropdownClick\"] }, { kind: \"directive\", type: HasPermissionDirective, selector: \"[hasPermission]\", inputs: [\"hasPermission\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"pipe\", type: i4.TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericButton, decorators: [{\n type: Component,\n args: [{ selector: 'lib-generic-button', standalone: true, imports: [CommonModule, ButtonModule, SplitButtonModule, HasPermissionDirective, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n<ng-container *hasPermission=\\\"permission ? [permission] : []\\\">\\n <ng-container *ngIf=\\\"model && model?.length; else simpleBtn\\\">\\n <!-- Split Button -->\\n <!-- [outlined]=\\\"outlined\\\" -->\\n <p-splitButton\\n [class]=\\\"twClasses\\\"\\n [attr.type]=\\\"type\\\"\\n [label]=\\\"label | translate\\\"\\n [icon]=\\\"loading ? 'pi pi-spin pi-spinner' : icon\\\"\\n [model]=\\\"model || []\\\"\\n [disabled]=\\\"disabled || loading\\\"\\n [severity]=\\\"severity || 'primary'\\\"\\n (onClick)=\\\"onClick()\\\"\\n (onItemClick)=\\\"onItemClick($event)\\\"\\n >\\n </p-splitButton>\\n </ng-container>\\n\\n <ng-template #simpleBtn>\\n <!-- \\u062D\\u0627\\u0644\\u0629 \\u0627\\u0644\\u0632\\u0631\\u0651 \\u0627\\u0644\\u0639\\u0627\\u062F\\u064A -->\\n <!-- [size]=\\\"size || 'small'\\\" -->\\n <button\\n [class]=\\\"twClasses\\\"\\n [attr.type]=\\\"type\\\"\\n pButton\\n [icon]=\\\"loading ? 'pi pi-spin pi-spinner' : icon\\\"\\n [label]=\\\"label | translate\\\"\\n [severity]=\\\"severity || 'primary'\\\"\\n [attr.aria-label]=\\\"(ariaLabel || label) | translate\\\"\\n [disabled]=\\\"disabled || loading\\\" (onClick)=\\\"onClick()\\\"\\n (click)=\\\"onClick()\\\"\\n >\\n\\n <!-- \\u0645\\u062D\\u062A\\u0648\\u0649 \\u0645\\u062E\\u0635\\u0651\\u0635 -->\\n <ng-content *ngIf=\\\"!label && !icon && !loading\\\"></ng-content>\\n </button>\\n </ng-template>\\n </ng-container>\\n\" }]\n }], propDecorators: { model: [{\n type: Input\n }], type: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }], variant: [{\n type: Input\n }], severity: [{\n type: Input\n }], size: [{\n type: Input\n }], iconPosition: [{\n type: Input\n }], disabled: [{\n type: Input\n }], loading: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], extraClasses: [{\n type: Input\n }], permission: [{\n type: Input\n }], clicked: [{\n type: Output\n }], itemClick: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24vc3JjL2xpYi9nZW5lcmljLWJ1dHRvbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWJ1dHRvbi9zcmMvbGliL2dlbmVyaWMtYnV0dG9uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBWXRELE1BQU0sT0FBTyxhQUFhO0lBRXhCLHlEQUF5RDtJQUV6RCw2Q0FBNkM7SUFDcEMsS0FBSyxDQUFjO0lBRW5CLElBQUksR0FBa0MsUUFBUSxDQUFDO0lBQy9DLElBQUksR0FBRyxFQUFFLENBQUM7SUFDVixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsT0FBTyxHQUFrQixRQUFRLENBQUM7SUFDbEMsUUFBUSxHQUFtQixTQUFTLENBQUM7SUFDckMsSUFBSSxHQUFlLE9BQU8sQ0FBQztJQUMzQixZQUFZLEdBQWlCLE1BQU0sQ0FBQztJQUNwQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsU0FBUyxDQUFVO0lBQ25CLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBRSxx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SSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBTcGxpdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc3BsaXRidXR0b24nO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBIYXNQZXJtaXNzaW9uRGlyZWN0aXZlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25TZXZlcml0eSwgQnV0dG9uU2l6ZSwgQnV0dG9uVmFyaWFudCwgSWNvblBvc2l0aW9uIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XG5cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZ2VuZXJpYy1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgaW1wb3J0czogWyBDb21tb25Nb2R1bGUgLCBCdXR0b25Nb2R1bGUsIFNwbGl0QnV0dG9uTW9kdWxlLEhhc1Blcm1pc3Npb25EaXJlY3RpdmUsVHJhbnNsYXRlTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWJ1dHRvbi5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0J1dHRvbiB7XG5cbiAgLy8gIHBlcm1pc3Npb25DaGVja2VyID0gaW5qZWN0KFBlcm1pc3Npb25DaGVja2VyU2VydmljZSk7XG5cbiAgLy8g2YTZiCDZiNmP2KzYr9iqINmH2LDZhyDYp9mE2YXYtdmB2YjZgdip2Iwg2YbZj9iz2KrYrtiv2YUgc3BsaXRCdXR0b25cbiAgQElucHV0KCkgbW9kZWw/OiBNZW51SXRlbVtdO1xuXG4gIEBJbnB1dCgpIHR5cGU6ICdidXR0b24nIHwgJ3N1Ym1pdCcgfCAncmVzZXQnID0gJ2J1dHRvbic7XG4gIEBJbnB1dCgpIGljb24gPSAnJztcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgdmFyaWFudDogQnV0dG9uVmFyaWFudCA9ICdyYWlzZWQnO1xuICBASW5wdXQoKSBzZXZlcml0eTogQnV0dG9uU2V2ZXJpdHkgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIHNpemU6IEJ1dHRvblNpemUgPSAnc21hbGwnO1xuICBASW5wdXQoKSBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbiA9ICdsZWZ0JztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV4dHJhQ2xhc3NlcyA9ICcnOyAgLy8g2YTYo9mKIFRhaWx3aW5kINil2LbYp9mB2YpcbiAgQElucHV0KCkgcGVybWlzc2lvbj86IHN0cmluZztcbiAgQE91dHB1dCgpIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuXG4gIC8vINiu2LHZiti32Kkg2KPYrdis2KfZhVxuICBwcml2YXRlIHNpemVNYXA6IFJlY29yZDxCdXR0b25TaXplLHN0cmluZz4gPSB7XG4gICAgc21hbGw6ICd0ZXh0LXNtJyxcbiAgICAvLyBub3JtYWw6ICdweC00IHB5LTIgdGV4dC1iYXNlJyxcbiAgICBsYXJnZTogJ3RleHQtbGcnLFxuICB9O1xuXG4gIC8vINiu2LHZiti32Kkg2KPZhNmI2KfZhiDZhNmE2YAgcmFpc2VkINmIIHJvdW5kZWRcbiAgcHJpdmF0ZSBjb2xvck1hcDogUmVjb3JkPEJ1dHRvblNldmVyaXR5LHN0cmluZz4gPSB7XG4gICAgcHJpbWFyeTogICAnYmctYmx1ZS02MDAgaG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6cmluZy1ibHVlLTUwMCB0ZXh0LXdoaXRlJyxcbiAgICBzZWNvbmRhcnk6ICdiZy1ncmF5LTYwMCBob3ZlcjpiZy1ncmF5LTcwMCBmb2N1czpyaW5nLWdyYXktNTAwIHRleHQtd2hpdGUnLFxuICAgIHN1Y2Nlc3M6ICAgJ2JnLWdyZWVuLTYwMCBob3ZlcjpiZy1ncmVlbi03MDAgZm9jdXM6cmluZy1ncmVlbi01MDAgdGV4dC13aGl0ZScsXG4gICAgaW5mbzogICAgICAnYmctdGVhbC02MDAgaG92ZXI6YmctdGVhbC03MDAgZm9jdXM6cmluZy10ZWFsLTUwMCB0ZXh0LXdoaXRlJyxcbiAgICB3YXJuOiAgICdiZy15ZWxsb3ctNTAwIGhvdmVyOmJnLXllbGxvdy02MDAgZm9jdXM6cmluZy15ZWxsb3ctNDAwIHRleHQtd2hpdGUnLFxuICAgIGRhbmdlcjogICAgJ2JnLXJlZC02MDAgaG92ZXI6YmctcmVkLTcwMCBmb2N1czpyaW5nLXJlZC01MDAgdGV4dC13aGl0ZScsXG4gICAgaGVscDogICAgJ2JnLXRlYWwtNjAwIGhvdmVyOmJnLXRlYWwtNzAwIGZvY3VzOnJpbmctdGVhbC01MDAgdGV4dC13aGl0ZScsXG4gICAgY29udHJhc3Q6ICAgICdiZy10ZWFsLTYwMCBob3ZlcjpiZy10ZWFsLTcwMCBmb2N1czpyaW5nLXRlYWwtNTAwIHRleHQtd2hpdGUnLFxuICB9O1xuXG4gIC8vINiu2LHZiti32Kkg2K3Yr9mI2K/ZhyDZhNmE2YAgb3V0bGluZWRcbiAgcHJpdmF0ZSBvdXRsaW5lZE1hcDogUmVjb3JkPEJ1dHRvblNldmVyaXR5LHN0cmluZz4gPSB7XG4gICAgcHJpbWFyeTogICAnYm9yZGVyIGJvcmRlci1ibHVlLTYwMCB0ZXh0LWJsdWUtNjAwIGhvdmVyOmJnLWJsdWUtNTAgZm9jdXM6cmluZy1ibHVlLTUwMCcsXG4gICAgc2Vjb25kYXJ5OiAnYm9yZGVyIGJvcmRlci1ncmF5LTYwMCB0ZXh0LWdyYXktNjAwIGhvdmVyOmJnLWdyYXktNTAgZm9jdXM6cmluZy1ncmF5LTUwMCcsXG4gICAgc3VjY2VzczogICAnYm9yZGVyIGJvcmRlci1ncmVlbi02MDAgdGV4dC1ncmVlbi02MDAgaG92ZXI6YmctZ3JlZW4tNTAgZm9jdXM6cmluZy1ncmVlbi01MDAnLFxuICAgIGluZm86ICAgICAgJ2JvcmRlciBib3JkZXItdGVhbC02MDAgdGV4dC10ZWFsLTYwMCBob3ZlcjpiZy10ZWFsLTUwIGZvY3VzOnJpbmctdGVhbC01MDAnLFxuICAgIGhlbHA6ICAgICAgJ2JvcmRlciBib3JkZXItdGVhbC02MDAgdGV4dC10ZWFsLTYwMCBob3ZlcjpiZy10ZWFsLTUwIGZvY3VzOnJpbmctdGVhbC01MDAnLFxuICAgIGNvbnRyYXN0OiAgICAgICdib3JkZXIgYm9yZGVyLXRlYWwtNjAwIHRleHQtdGVhbC02MDAgaG92ZXI6YmctdGVhbC01MCBmb2N1czpyaW5nLXRlYWwtNTAwJyxcbiAgICB3YXJuOiAgICdib3JkZXIgYm9yZGVyLXllbGxvdy01MDAgdGV4dC15ZWxsb3ctNTAwIGhvdmVyOmJnLXllbGxvdy01MCBmb2N1czpyaW5nLXllbGxvdy00MDAnLFxuICAgIGRhbmdlcjogICAgJ2JvcmRlciBib3JkZXItcmVkLTYwMCB0ZXh0LXJlZC02MDAgaG92ZXI6YmctcmVkLTUwIGZvY3VzOnJpbmctcmVkLTUwMCcsXG4gIH07XG5cbiAgZ2V0IHR3Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSBbXG4gICAgICAvLyAnaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZvbnQtbWVkaXVtJyxcbiAgICAgIC8vICdmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctb2Zmc2V0LTIgdHJhbnNpdGlvbicsXG4gICAgICB0aGlzLnNpemVNYXBbdGhpcy5zaXplXVxuICAgIF07XG4gICAgLy8gLy8gdmFyaWFudC1zcGVjaWZpY1xuICAgIC8vIGlmICh0aGlzLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcpIHtcbiAgICAvLyAgIGJhc2UucHVzaCh0aGlzLm91dGxpbmVkTWFwW3RoaXMuc2V2ZXJpdHldKTtcbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgYmFzZS5wdXNoKHRoaXMuY29sb3JNYXBbdGhpcy5zZXZlcml0eV0pO1xuICAgIC8vIH1cbiAgICAvLyBpZiAodGhpcy52YXJpYW50ID09PSAndGV4dCcpIHtcbiAgICAvLyAgIGJhc2UucHVzaCgnYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy1ncmF5LTIwMCB0ZXh0LWdyYXktNzAwJyk7XG4gICAgLy8gfVxuICAgIC8vIGlmICh0aGlzLnZhcmlhbnQgPT09ICdyb3VuZGVkJykge1xuICAgIC8vICAgYmFzZS5wdXNoKCdyb3VuZGVkLWZ1bGwnKTtcbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgYmFzZS5wdXNoKCdyb3VuZGVkLW1kJyk7XG4gICAgLy8gfVxuICAgIC8vIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZykge1xuICAgIC8vICAgYmFzZS5wdXNoKCdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCcpO1xuICAgIC8vIH1cbiAgICAvLyBpZiAodGhpcy5leHRyYUNsYXNzZXMpIHtcbiAgICAvLyAgIGJhc2UucHVzaCh0aGlzLmV4dHJhQ2xhc3Nlcyk7XG4gICAgLy8gfVxuICAgIHJldHVybiBiYXNlLmpvaW4oJyAnKTtcbiAgfVxuXG4gIG9uQ2xpY2soKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiBvbkl0ZW1DbGljayhldnQ6IGFueSkge1xuICAgdGhpcy5pdGVtQ2xpY2suZW1pdChldnQpO1xuIH1cblxuXG59XG4iLCJcblxuPG5nLWNvbnRhaW5lciAqaGFzUGVybWlzc2lvbj1cInBlcm1pc3Npb24gPyBbcGVybWlzc2lvbl0gOiBbXVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwgJiYgbW9kZWw/Lmxlbmd0aDsgZWxzZSBzaW1wbGVCdG5cIj5cbiAgICAgICA8IS0tIFNwbGl0IEJ1dHRvbiAtLT5cbiAgICAgICAgPCEtLSBbb3V0bGluZWRdPVwib3V0bGluZWRcIiAtLT5cbiAgICAgIDxwLXNwbGl0QnV0dG9uXG4gICAgICBbY2xhc3NdPVwidHdDbGFzc2VzXCJcbiAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFtsYWJlbF09XCJsYWJlbCAgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWNvbl09XCJsb2FkaW5nID8gJ3BpIHBpLXNwaW4gcGktc3Bpbm5lcicgOiBpY29uXCJcbiAgICAgICAgW21vZGVsXT1cIm1vZGVsIHx8IFtdXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvYWRpbmdcIlxuICAgICAgICBbc2V2ZXJpdHldPVwic2V2ZXJpdHkgfHwgJ3ByaW1hcnknXCJcbiAgICAgICAgKG9uQ2xpY2spPVwib25DbGljaygpXCJcbiAgICAgICAgICAob25JdGVtQ2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgIDwvcC1zcGxpdEJ1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNzaW1wbGVCdG4+XG4gICAgPCEtLSDYrdin2YTYqSDYp9mE2LLYsdmRINin2YTYudin2K/ZiiAtLT5cbiAgICAgPCEtLSBbc2l6ZV09XCJzaXplIHx8ICdzbWFsbCdcIiAtLT5cbiAgICA8YnV0dG9uXG4gICAgICBbY2xhc3NdPVwidHdDbGFzc2VzXCJcbiAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICBwQnV0dG9uXG4gICAgICBbaWNvbl09XCJsb2FkaW5nID8gJ3BpIHBpLXNwaW4gcGktc3Bpbm5lcicgOiBpY29uXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICBbc2V2ZXJpdHldPVwic2V2ZXJpdHkgfHwgJ3ByaW1hcnknXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGFyaWFMYWJlbCB8fCBsYWJlbCkgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvYWRpbmdcIiAob25DbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgPlxuXG4gICAgICA8IS0tINmF2K3YqtmI2Ykg2YXYrti12ZHYtSAtLT5cbiAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIWxhYmVsICYmICFpY29uICYmICFsb2FkaW5nXCI+PC9uZy1jb250ZW50PlxuICAgIDwvYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24vc3JjL2VsaXRlLmZyYW1ld29yay1uZy51aS5jb3JlLWdlbmVyaWMtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
@@ -17,10 +17,12 @@ import { DrawerModule } from 'primeng/drawer';
17
17
  import { DialogModule } from 'primeng/dialog';
18
18
  import { UntypedFormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';
19
19
  import { SwalService, BaseService } from '@elite.framework/ng.core/services';
20
- import { GenericTable } from '@elite.framework/ng.ui.core/generic-table';
21
- import { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';
22
20
  import { BreadcrumbComponent } from '@elite.framework/ng.ui.core/breadcrumb';
23
21
  import { GenericSearch } from '@elite.framework/ng.ui.core/generic-search';
22
+ import { ActivatedRoute, Router } from '@angular/router';
23
+ import { GenericTable } from '@elite.framework/ng.ui.core/generic-table';
24
+ import { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';
25
+ import { GenericViewComponent } from '@elite.framework/ng.ui.core/generic-view';
24
26
 
25
27
  class GenericCrudTableModule {
26
28
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -46,12 +48,16 @@ class GenericCrudHeaderComponent {
46
48
  filters;
47
49
  filterModel = {};
48
50
  showSearch = true;
51
+ first = 0; // Add input for current 'first' index
52
+ rows = 10; // Add input for current 'rows' per page
53
+ totalRecords = 0; // Add input for total records
49
54
  // 🟢 Outputs
50
55
  singleItemAction = new EventEmitter();
51
56
  bulkAction = new EventEmitter();
52
57
  search = new EventEmitter();
53
58
  resetSearch = new EventEmitter();
54
59
  action = new EventEmitter();
60
+ paginateChange = new EventEmitter(); // NEW OUTPUT
55
61
  // 🟢 Helpers
56
62
  trackByIdx = (index) => index;
57
63
  // 🟢 Actions
@@ -67,6 +73,31 @@ class GenericCrudHeaderComponent {
67
73
  reset() {
68
74
  this.resetSearch.emit();
69
75
  }
76
+ // Go to previous page
77
+ // 🟢 Actions (Keep or adapt your existing pagination logic)
78
+ totalPages() {
79
+ if (this.totalRecords === 0 || this.rows === 0)
80
+ return 0;
81
+ return Math.ceil(this.totalRecords / this.rows);
82
+ }
83
+ // Go to previous page
84
+ goPrev() {
85
+ const newFirst = Math.max(this.first - this.rows, 0);
86
+ this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT
87
+ }
88
+ // Go to next page
89
+ goNext() {
90
+ const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);
91
+ const newFirst = Math.min(this.first + this.rows, maxFirst);
92
+ this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT
93
+ }
94
+ // Check first/last page
95
+ isFirstPage() {
96
+ return this.first === 0;
97
+ }
98
+ isLastPage() {
99
+ return this.first + this.rows >= this.totalRecords;
100
+ }
70
101
  /**
71
102
  * Handles button click in a unified way.
72
103
  * - If btn.action is defined, execute it.
@@ -91,7 +122,7 @@ class GenericCrudHeaderComponent {
91
122
  }
92
123
  }
93
124
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
94
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudHeaderComponent, isStandalone: true, selector: "app-generic-crud-header", inputs: { mode: "mode", breadcrumb: "breadcrumb", isSingleItemSelected: "isSingleItemSelected", selectedItems: "selectedItems", singleActionButtons: "singleActionButtons", bulkActionButtons: "bulkActionButtons", addButtonConfigs: "addButtonConfigs", filters: "filters", filterModel: "filterModel", showSearch: "showSearch" }, outputs: { singleItemAction: "singleItemAction", bulkAction: "bulkAction", search: "search", resetSearch: "resetSearch", action: "action" }, ngImport: i0, template: "\r\n @if (mode !== 'form-only') {\r\n <div class=\"flex items-start gap-2 justify-between\">\r\n <div>\r\n <app-breadcrumb class=\"xs:block hidden\" [breadcrumb]=\"breadcrumb\"></app-breadcrumb>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-2 justify-end flex-wrap\">\r\n @if (mode === 'full') {\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u0641\u0631\u062F\u0629 -->\r\n <ng-container *ngIf=\"isSingleItemSelected\">\r\n <ng-container *ngFor=\"let btn of singleActionButtons; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onSingleItemAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0645\u062A\u0639\u062F\u062F\u0629 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 -->\r\n <ng-container *ngIf=\"selectedItems.length > 0\">\r\n <ng-container *ngFor=\"let btn of bulkActionButtons; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onInternalBulkAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0625\u0636\u0627\u0641\u0629 -->\r\n <ng-container *ngFor=\"let btn of addButtonConfigs; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"handleButtonClick(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (mode !== 'form-only') {\r\n <div class=\"mt-2 mb-4 flex items-center justify-between\">\r\n\r\n <!-- \u0627\u0644\u0628\u062D\u062B -->\r\n <ng-container *ngIf=\"showSearch && filters; else emptySearch\">\r\n <lib-generic-search\r\n [model]=\"filterModel\"\r\n [fields]=\"filters\"\r\n (search)=\"applySearch($event)\"\r\n (reset)=\"reset()\"\r\n ></lib-generic-search>\r\n </ng-container>\r\n <ng-template #emptySearch></ng-template>\r\n\r\n <!-- \u0623\u062F\u0648\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629 -->\r\n <div class=\"flex items-center gap-3\">\r\n <p-button icon=\"pi pi-refresh\" outlined severity=\"secondary\" (onClick)=\"reset()\" />\r\n <p-divider layout=\"vertical\" class=\"m-0 p-0 xs:block hidden\" />\r\n <p-button icon=\"pi pi-sort\" outlined severity=\"secondary\" class=\"xs:block hidden\" />\r\n <p-button label=\"1 of 15\" outlined severity=\"secondary\" class=\"xs:block hidden\" />\r\n <p-button icon=\"pi pi-chevron-right\" outlined severity=\"secondary\" class=\"xs:block hidden\" />\r\n <p-button icon=\"pi pi-chevron-left\" outlined severity=\"secondary\" class=\"xs:block hidden\" />\r\n </div>\r\n </div>\r\n }\r\n\r\n", dependencies: [{ kind: "component", type: GenericButton, selector: "lib-generic-button", inputs: ["model", "type", "icon", "label", "variant", "severity", "size", "iconPosition", "disabled", "loading", "ariaLabel", "extraClasses", "permission"], outputs: ["clicked", "itemClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: BreadcrumbComponent, selector: "app-breadcrumb", inputs: ["breadcrumb"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: GenericSearch, selector: "lib-generic-search", inputs: ["model", "fields"], outputs: ["search"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i3.Divider, selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
125
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudHeaderComponent, isStandalone: true, selector: "app-generic-crud-header", inputs: { mode: "mode", breadcrumb: "breadcrumb", isSingleItemSelected: "isSingleItemSelected", selectedItems: "selectedItems", singleActionButtons: "singleActionButtons", bulkActionButtons: "bulkActionButtons", addButtonConfigs: "addButtonConfigs", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords" }, outputs: { singleItemAction: "singleItemAction", bulkAction: "bulkAction", search: "search", resetSearch: "resetSearch", action: "action", paginateChange: "paginateChange" }, ngImport: i0, template: "@if (mode !== 'form-only' && mode !== 'detail') {\r\n<div class=\"flex items-start gap-2 justify-between\">\r\n <div>\r\n <app-breadcrumb\r\n class=\"xs:block hidden\"\r\n [breadcrumb]=\"breadcrumb\"\r\n ></app-breadcrumb>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-2 justify-end flex-wrap\">\r\n @if (mode === 'full') {\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u0641\u0631\u062F\u0629 -->\r\n <ng-container *ngIf=\"isSingleItemSelected\">\r\n <ng-container\r\n *ngFor=\"let btn of singleActionButtons; trackBy: trackByIdx\"\r\n >\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onSingleItemAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0645\u062A\u0639\u062F\u062F\u0629 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 -->\r\n <ng-container *ngIf=\"selectedItems.length > 0\">\r\n <ng-container *ngFor=\"let btn of bulkActionButtons; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onInternalBulkAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0625\u0636\u0627\u0641\u0629 -->\r\n <ng-container *ngFor=\"let btn of addButtonConfigs; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"handleButtonClick(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n</div>\r\n} @if (mode !== 'form-only' && mode !== 'detail') {\r\n<div class=\"mt-2 mb-4 flex items-center justify-between\">\r\n <!-- \u0627\u0644\u0628\u062D\u062B -->\r\n <ng-container *ngIf=\"showSearch && filters; else emptySearch\">\r\n <lib-generic-search\r\n [model]=\"filterModel\"\r\n [fields]=\"filters\"\r\n (search)=\"applySearch($event)\"\r\n (reset)=\"reset()\"\r\n ></lib-generic-search>\r\n </ng-container>\r\n <ng-template #emptySearch></ng-template>\r\n\r\n <!-- \u0623\u062F\u0648\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629 -->\r\n <div class=\"flex items-center gap-3\">\r\n <p-button\r\n icon=\"pi pi-refresh\"\r\n outlined\r\n severity=\"secondary\"\r\n (onClick)=\"reset()\"\r\n />\r\n <p-divider layout=\"vertical\" class=\"m-0 p-0 xs:block hidden\" />\r\n <p-button\r\n icon=\"pi pi-sort\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block hidden\"\r\n />\r\n <p-button\r\n label=\"1 of 15\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block hidden\"\r\n />\r\n <p-button\r\n icon=\"pi pi-chevron-right\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block hidden\"\r\n (click)=\"goNext()\"\r\n [disabled]=\"isLastPage()\"\r\n ></p-button>\r\n\r\n <p-button\r\n icon=\"pi pi-chevron-left\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block hidden\"\r\n (click)=\"goPrev()\"\r\n [disabled]=\"isFirstPage()\"\r\n ></p-button>\r\n\r\n\r\n </div>\r\n</div>\r\n}\r\n", dependencies: [{ kind: "component", type: GenericButton, selector: "lib-generic-button", inputs: ["model", "type", "icon", "label", "variant", "severity", "size", "iconPosition", "disabled", "loading", "ariaLabel", "extraClasses", "permission"], outputs: ["clicked", "itemClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: BreadcrumbComponent, selector: "app-breadcrumb", inputs: ["breadcrumb"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: GenericSearch, selector: "lib-generic-search", inputs: ["model", "fields"], outputs: ["search"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i3.Divider, selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
95
126
  }
96
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudHeaderComponent, decorators: [{
97
128
  type: Component,
@@ -103,7 +134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
103
134
  ButtonModule,
104
135
  GenericSearch,
105
136
  DividerModule
106
- ], template: "\r\n @if (mode !== 'form-only') {\r\n <div class=\"flex items-start gap-2 justify-between\">\r\n <div>\r\n <app-breadcrumb class=\"xs:block hidden\" [breadcrumb]=\"breadcrumb\"></app-breadcrumb>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-2 justify-end flex-wrap\">\r\n @if (mode === 'full') {\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u0641\u0631\u062F\u0629 -->\r\n <ng-container *ngIf=\"isSingleItemSelected\">\r\n <ng-container *ngFor=\"let btn of singleActionButtons; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onSingleItemAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0645\u062A\u0639\u062F\u062F\u0629 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 -->\r\n <ng-container *ngIf=\"selectedItems.length > 0\">\r\n <ng-container *ngFor=\"let btn of bulkActionButtons; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onInternalBulkAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0625\u0636\u0627\u0641\u0629 -->\r\n <ng-container *ngFor=\"let btn of addButtonConfigs; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"handleButtonClick(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (mode !== 'form-only') {\r\n <div class=\"mt-2 mb-4 flex items-center justify-between\">\r\n\r\n <!-- \u0627\u0644\u0628\u062D\u062B -->\r\n <ng-container *ngIf=\"showSearch && filters; else emptySearch\">\r\n <lib-generic-search\r\n [model]=\"filterModel\"\r\n [fields]=\"filters\"\r\n (search)=\"applySearch($event)\"\r\n (reset)=\"reset()\"\r\n ></lib-generic-search>\r\n </ng-container>\r\n <ng-template #emptySearch></ng-template>\r\n\r\n <!-- \u0623\u062F\u0648\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629 -->\r\n <div class=\"flex items-center gap-3\">\r\n <p-button icon=\"pi pi-refresh\" outlined severity=\"secondary\" (onClick)=\"reset()\" />\r\n <p-divider layout=\"vertical\" class=\"m-0 p-0 xs:block hidden\" />\r\n <p-button icon=\"pi pi-sort\" outlined severity=\"secondary\" class=\"xs:block hidden\" />\r\n <p-button label=\"1 of 15\" outlined severity=\"secondary\" class=\"xs:block hidden\" />\r\n <p-button icon=\"pi pi-chevron-right\" outlined severity=\"secondary\" class=\"xs:block hidden\" />\r\n <p-button icon=\"pi pi-chevron-left\" outlined severity=\"secondary\" class=\"xs:block hidden\" />\r\n </div>\r\n </div>\r\n }\r\n\r\n" }]
137
+ ], template: "@if (mode !== 'form-only' && mode !== 'detail') {\r\n<div class=\"flex items-start gap-2 justify-between\">\r\n <div>\r\n <app-breadcrumb\r\n class=\"xs:block hidden\"\r\n [breadcrumb]=\"breadcrumb\"\r\n ></app-breadcrumb>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-2 justify-end flex-wrap\">\r\n @if (mode === 'full') {\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u0641\u0631\u062F\u0629 -->\r\n <ng-container *ngIf=\"isSingleItemSelected\">\r\n <ng-container\r\n *ngFor=\"let btn of singleActionButtons; trackBy: trackByIdx\"\r\n >\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onSingleItemAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0645\u062A\u0639\u062F\u062F\u0629 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 -->\r\n <ng-container *ngIf=\"selectedItems.length > 0\">\r\n <ng-container *ngFor=\"let btn of bulkActionButtons; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"onInternalBulkAction(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- \u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0625\u0636\u0627\u0641\u0629 -->\r\n <ng-container *ngFor=\"let btn of addButtonConfigs; trackBy: trackByIdx\">\r\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\r\n <lib-generic-button\r\n [icon]=\"btn.icon\"\r\n [label]=\"btn.label | translate\"\r\n [variant]=\"btn.variant\"\r\n [size]=\"btn.size\"\r\n [severity]=\"btn.severity\"\r\n [model]=\"btn.splitActions\"\r\n [permission]=\"btn.permission\"\r\n (clicked)=\"handleButtonClick(btn)\"\r\n ></lib-generic-button>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n</div>\r\n} @if (mode !== 'form-only' && mode !== 'detail') {\r\n<div class=\"mt-2 mb-4 flex items-center justify-between\">\r\n <!-- \u0627\u0644\u0628\u062D\u062B -->\r\n <ng-container *ngIf=\"showSearch && filters; else emptySearch\">\r\n <lib-generic-search\r\n [model]=\"filterModel\"\r\n [fields]=\"filters\"\r\n (search)=\"applySearch($event)\"\r\n (reset)=\"reset()\"\r\n ></lib-generic-search>\r\n </ng-container>\r\n <ng-template #emptySearch></ng-template>\r\n\r\n <!-- \u0623\u062F\u0648\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629 -->\r\n <div class=\"flex items-center gap-3\">\r\n <p-button\r\n icon=\"pi pi-refresh\"\r\n outlined\r\n severity=\"secondary\"\r\n (onClick)=\"reset()\"\r\n />\r\n <p-divider layout=\"vertical\" class=\"m-0 p-0 xs:block hidden\" />\r\n <p-button\r\n icon=\"pi pi-sort\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block hidden\"\r\n />\r\n <p-button\r\n label=\"1 of 15\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block hidden\"\r\n />\r\n <p-button\r\n icon=\"pi pi-chevron-right\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block hidden\"\r\n (click)=\"goNext()\"\r\n [disabled]=\"isLastPage()\"\r\n ></p-button>\r\n\r\n <p-button\r\n icon=\"pi pi-chevron-left\"\r\n outlined\r\n severity=\"secondary\"\r\n class=\"xs:block hidden\"\r\n (click)=\"goPrev()\"\r\n [disabled]=\"isFirstPage()\"\r\n ></p-button>\r\n\r\n\r\n </div>\r\n</div>\r\n}\r\n" }]
107
138
  }], propDecorators: { mode: [{
108
139
  type: Input
109
140
  }], breadcrumb: [{
@@ -124,6 +155,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
124
155
  type: Input
125
156
  }], showSearch: [{
126
157
  type: Input
158
+ }], first: [{
159
+ type: Input
160
+ }], rows: [{
161
+ type: Input
162
+ }], totalRecords: [{
163
+ type: Input
127
164
  }], singleItemAction: [{
128
165
  type: Output
129
166
  }], bulkAction: [{
@@ -134,6 +171,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
134
171
  type: Output
135
172
  }], action: [{
136
173
  type: Output
174
+ }], paginateChange: [{
175
+ type: Output
137
176
  }] } });
138
177
 
139
178
  /* eslint-disable @angular-eslint/no-output-on-prefix */
@@ -227,6 +266,34 @@ class GenericCrudTableComponent {
227
266
  permission: this.addPermissionName,
228
267
  },
229
268
  ];
269
+ createEditActions = [
270
+ {
271
+ icon: 'pi pi-check',
272
+ label: 'SAVE',
273
+ variant: 'raised',
274
+ severity: 'primary',
275
+ size: 'small',
276
+ actionName: 'save',
277
+ type: 'submit',
278
+ splitActions: [
279
+ {
280
+ label: this.translate.instant('SAVE_AND_ADD'),
281
+ icon: 'pi pi-save',
282
+ actionName: 'saveAndAdd'
283
+ }
284
+ ]
285
+ },
286
+ {
287
+ icon: 'pi pi-times',
288
+ label: 'CANCEL',
289
+ variant: 'raised',
290
+ severity: 'danger',
291
+ size: 'small',
292
+ actionName: 'cancel',
293
+ type: 'button',
294
+ },
295
+ ];
296
+ tabs = [];
230
297
  bulkActionButtons = [];
231
298
  singleActionButtons = [];
232
299
  _selectedRows = [];
@@ -265,17 +332,61 @@ class GenericCrudTableComponent {
265
332
  forceState = null;
266
333
  /** Hide table completely when in form-only mode */
267
334
  get hideTable() {
268
- return (this.mode === 'form-only' || (this.forceState && this.mode !== 'table-only')) ?? false;
335
+ return (this.mode === 'form-only' || this.mode === 'detail' || (this.forceState && this.mode !== 'table-only')) ?? false;
269
336
  }
270
337
  /** Auto-show form when in form-only mode with forceState */
271
338
  get autoShowForm() {
272
339
  return this.mode === 'form-only' && !!this.forceState;
273
340
  }
274
341
  tableClass = 'h-full flex-1 flex flex-col overflow-hidden border border-surface rounded-2xl xs:rounded-2xl p-4 bg-white';
342
+ route = inject(ActivatedRoute);
343
+ router = inject(Router);
344
+ currentId;
275
345
  ngOnInit() {
276
346
  if (this.apiName && this.apiName != '') {
277
347
  this.service.apiName = this.apiName;
278
348
  }
349
+ if (this.apiName) {
350
+ this.service.apiName = this.apiName;
351
+ }
352
+ if (this.tabs.length == 0) {
353
+ this.formFields_ = this.formFields;
354
+ this.tabs.push({ header: 'التفاصيل', icon: 'pi pi-info-circle', fields: this.formFields_, model: this.model });
355
+ }
356
+ this.route.paramMap.subscribe(params => {
357
+ const id = params.get(this.idField);
358
+ if (id) {
359
+ this.currentId = id;
360
+ this.mode = 'detail';
361
+ this.loadDetail(id);
362
+ }
363
+ else {
364
+ this.currentId = undefined;
365
+ }
366
+ });
367
+ }
368
+ // 3. Handle Header's Paginate Change Event
369
+ onHeaderPaginateChange(event) {
370
+ this.first = event.first; // Update the 'first' index
371
+ this.rows = event.rows;
372
+ const lazyLoadEvent = {
373
+ first: this.first,
374
+ rows: this.rows,
375
+ // You'd typically include current sorting and filtering state here
376
+ sortField: this.sortField,
377
+ sortOrder: 1,
378
+ filters: this.filters,
379
+ globalFilter: null, // or your current global filter value
380
+ };
381
+ this.onLazyLoad(lazyLoadEvent);
382
+ }
383
+ loadDetail(id) {
384
+ this.service.getList({ skipCount: 0, maxResultCount: 1, id }).subscribe({
385
+ next: res => {
386
+ const found = res.items.find(x => x[this.idField] == id);
387
+ this.model = found;
388
+ }
389
+ });
279
390
  }
280
391
  // Helper method to open form programmatically
281
392
  openForm(mode, model) {
@@ -358,7 +469,7 @@ class GenericCrudTableComponent {
358
469
  });
359
470
  }
360
471
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
361
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudTableComponent, isStandalone: true, selector: "app-generic-crud-table", inputs: { data: "data", formFields: "formFields", columns: "columns", dialogMaxWidth: "dialogMaxWidth", isViewMode: "isViewMode", displayMode: "displayMode", useConfirmOnSave: "useConfirmOnSave", isEditMode: "isEditMode", drawerVisible: "drawerVisible", dialogVisible: "dialogVisible", model: "model", loading: "loading", errorMsg: "errorMsg", errorMessage: "errorMessage", actions: "actions", actionsMode: "actionsMode", beforeSaveTransform: "beforeSaveTransform", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords", rowSelectable: "rowSelectable", scrollHeight: "scrollHeight", paginator: "paginator", service: "service", apiName: "apiName", idField: "idField", showRowSelectionCheckbox: "showRowSelectionCheckbox", showAddButton: "showAddButton", addPermissionName: "addPermissionName", addButtonConfigs: "addButtonConfigs", bulkActionButtons: "bulkActionButtons", singleActionButtons: "singleActionButtons", breadcrumb: "breadcrumb", mode: "mode", forceState: "forceState", hideTable: "hideTable", autoShowForm: "autoShowForm" }, outputs: { action: "action", bulkAction: "bulkAction", singleAction: "singleAction", afterSave: "afterSave", afterDelete: "afterDelete", beforeSave: "beforeSave", beforeDelete: "beforeDelete", formCancel: "formCancel", formInit: "formInit", dataLoaded: "dataLoaded", selectionChange: "selectionChange", error: "error", search: "search", pageChange: "pageChange", onSearch: "onSearch", visibleChange: "visibleChange", rowSelect: "rowSelect" }, viewQueries: [{ propertyName: "genericTable", first: true, predicate: ["genericTable"], descendants: true }, { propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0, template: "<div\r\n [class]=\"mode !== 'form-only' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"applySearch($event)\"\r\n (resetSearch)=\"applySearch('')\"\r\n/>\r\n\r\n @if (!hideTable) {\r\n <lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (onAddNew)=\"action.emit({ name: 'add', row: null! })\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n ></lib-generic-table>\r\n\r\n }\r\n\r\n <app-generic-dialog\r\n #dialog\r\n [service]=\"service\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [dialogMaxWidth]=\"dialogMaxWidth\"\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [forceState]=\"forceState\"\r\n [drawerVisible]=\"drawerVisible\"\r\n [dialogVisible]=\"dialogVisible\"\r\n [isViewMode]=\"isViewMode\"\r\n [isEditMode]=\"isEditMode\"\r\n [useConfirmOnSave]=\"useConfirmOnSave\"\r\n [loading]=\"loading\"\r\n [errorMsg]=\"errorMsg\"\r\n [errorMessage]=\"errorMessage\"\r\n [beforeSaveTransform]=\"beforeSaveTransform\"\r\n (action)=\"action.emit($event)\"\r\n (afterSave)=\"afterSave.emit($event);onSubmit();\"\r\n (afterDelete)=\"afterDelete.emit($event)\"\r\n (beforeSave)=\"beforeSave.emit($event)\"\r\n (beforeDelete)=\"beforeDelete.emit($event)\"\r\n (formCancel)=\"formCancel.emit()\"\r\n (formInit)=\"formInit.emit($event)\"\r\n (dataLoaded)=\"dataLoaded.emit($event)\"\r\n (selectionChange)=\"selectionChange.emit($event)\"\r\n (error)=\"error.emit($event)\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n >\r\n </app-generic-dialog>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: GenericTable, selector: "lib-generic-table", inputs: ["data", "columns", "loading", "actions", "actionsMode", "first", "rows", "totalRecords", "sortField", "sortOrder", "globalFilterFields", "addButtonConfigs", "scrollHeight", "rowSelectable", "selection", "paginator", "showRowSelectionCheckbox"], outputs: ["action", "pageChange", "onAddNew", "rowSelect", "selectionChange"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: DividerModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "ngmodule", type: DrawerModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MessageModule }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["service", "formFields", "model", "apiName", "idField", "dialogMaxWidth", "displayMode", "mode", "forceState", "drawerVisible", "dialogVisible", "isViewMode", "isEditMode", "useConfirmOnSave", "loading", "errorMsg", "errorMessage", "beforeSaveTransform", "hideTable", "autoShowForm"], outputs: ["action", "afterSave", "afterDelete", "beforeSave", "beforeDelete", "formCancel", "formInit", "dataLoaded", "selectionChange", "error", "visibleChange"] }, { kind: "component", type: GenericCrudHeaderComponent, selector: "app-generic-crud-header", inputs: ["mode", "breadcrumb", "isSingleItemSelected", "selectedItems", "singleActionButtons", "bulkActionButtons", "addButtonConfigs", "filters", "filterModel", "showSearch"], outputs: ["singleItemAction", "bulkAction", "search", "resetSearch", "action"] }] });
472
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudTableComponent, isStandalone: true, selector: "app-generic-crud-table", inputs: { data: "data", formFields: "formFields", columns: "columns", dialogMaxWidth: "dialogMaxWidth", isViewMode: "isViewMode", displayMode: "displayMode", useConfirmOnSave: "useConfirmOnSave", isEditMode: "isEditMode", drawerVisible: "drawerVisible", dialogVisible: "dialogVisible", model: "model", loading: "loading", errorMsg: "errorMsg", errorMessage: "errorMessage", actions: "actions", actionsMode: "actionsMode", beforeSaveTransform: "beforeSaveTransform", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords", rowSelectable: "rowSelectable", scrollHeight: "scrollHeight", paginator: "paginator", service: "service", apiName: "apiName", idField: "idField", showRowSelectionCheckbox: "showRowSelectionCheckbox", showAddButton: "showAddButton", addPermissionName: "addPermissionName", addButtonConfigs: "addButtonConfigs", createEditActions: "createEditActions", tabs: "tabs", bulkActionButtons: "bulkActionButtons", singleActionButtons: "singleActionButtons", breadcrumb: "breadcrumb", mode: "mode", forceState: "forceState", hideTable: "hideTable", autoShowForm: "autoShowForm" }, outputs: { action: "action", bulkAction: "bulkAction", singleAction: "singleAction", afterSave: "afterSave", afterDelete: "afterDelete", beforeSave: "beforeSave", beforeDelete: "beforeDelete", formCancel: "formCancel", formInit: "formInit", dataLoaded: "dataLoaded", selectionChange: "selectionChange", error: "error", search: "search", pageChange: "pageChange", onSearch: "onSearch", visibleChange: "visibleChange", rowSelect: "rowSelect" }, viewQueries: [{ propertyName: "genericTable", first: true, predicate: ["genericTable"], descendants: true }, { propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0, template: "<div\r\n [class]=\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"applySearch($event)\"\r\n (resetSearch)=\"applySearch('')\"\r\n (paginateChange)=\"onHeaderPaginateChange($event)\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n/>\r\n\r\n @if (!hideTable) {\r\n <lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (onAddNew)=\"action.emit({ name: 'add', row: null! })\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n ></lib-generic-table>\r\n\r\n }\r\n\r\n <app-generic-dialog\r\n #dialog\r\n [service]=\"service\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [dialogMaxWidth]=\"dialogMaxWidth\"\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [forceState]=\"forceState\"\r\n [drawerVisible]=\"drawerVisible\"\r\n [dialogVisible]=\"dialogVisible\"\r\n [isViewMode]=\"isViewMode\"\r\n [isEditMode]=\"isEditMode\"\r\n [useConfirmOnSave]=\"useConfirmOnSave\"\r\n [loading]=\"loading\"\r\n [errorMsg]=\"errorMsg\"\r\n [errorMessage]=\"errorMessage\"\r\n [beforeSaveTransform]=\"beforeSaveTransform\"\r\n (action)=\"action.emit($event)\"\r\n (afterSave)=\"afterSave.emit($event);onSubmit();\"\r\n (afterDelete)=\"afterDelete.emit($event)\"\r\n (beforeSave)=\"beforeSave.emit($event)\"\r\n (beforeDelete)=\"beforeDelete.emit($event)\"\r\n (formCancel)=\"formCancel.emit()\"\r\n (formInit)=\"formInit.emit($event)\"\r\n (dataLoaded)=\"dataLoaded.emit($event)\"\r\n (selectionChange)=\"selectionChange.emit($event)\"\r\n (error)=\"error.emit($event)\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n <app-detail-view\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [title]=\"breadcrumb_?.[0]?.label || 'Detail'\"\r\n [service]=\"service\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [actions]=\"actions\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [tabs]=\"tabs\"\r\n [loading]=\"loading\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [createEditActions]=\"createEditActions\"\r\n (action)=\"action.emit($event)\"\r\n >\r\n </app-detail-view>\r\n\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: GenericTable, selector: "lib-generic-table", inputs: ["data", "columns", "loading", "actions", "actionsMode", "first", "rows", "totalRecords", "sortField", "sortOrder", "globalFilterFields", "addButtonConfigs", "scrollHeight", "rowSelectable", "selection", "paginator", "showRowSelectionCheckbox"], outputs: ["action", "pageChange", "onAddNew", "rowSelect", "selectionChange"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: DividerModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "ngmodule", type: DrawerModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MessageModule }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["form", "service", "formFields", "model", "apiName", "idField", "dialogMaxWidth", "displayMode", "mode", "forceState", "drawerVisible", "dialogVisible", "isViewMode", "isEditMode", "useConfirmOnSave", "loading", "errorMsg", "errorMessage", "beforeSaveTransform", "hideTable", "autoShowForm"], outputs: ["action", "afterSave", "afterDelete", "beforeSave", "beforeDelete", "formCancel", "formInit", "dataLoaded", "selectionChange", "error", "visibleChange"] }, { kind: "component", type: GenericCrudHeaderComponent, selector: "app-generic-crud-header", inputs: ["mode", "breadcrumb", "isSingleItemSelected", "selectedItems", "singleActionButtons", "bulkActionButtons", "addButtonConfigs", "filters", "filterModel", "showSearch", "first", "rows", "totalRecords"], outputs: ["singleItemAction", "bulkAction", "search", "resetSearch", "action", "paginateChange"] }, { kind: "component", type: GenericViewComponent, selector: "app-detail-view", inputs: ["title", "actions", "createEditActions", "tabs", "viewMode", "breadcrumb", "service", "formFields", "apiName", "idField", "standaloneMode", "isViewMode", "isCreateMode", "isEditMode", "model", "displayMode", "mode", "loading"], outputs: ["action", "afterDelete"] }] });
362
473
  }
363
474
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudTableComponent, decorators: [{
364
475
  type: Component,
@@ -377,10 +488,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
377
488
  MessageModule,
378
489
  DialogModule,
379
490
  GenericDialogComponent,
380
- GenericCrudHeaderComponent
491
+ GenericCrudHeaderComponent,
492
+ GenericViewComponent
381
493
  ], host: {
382
494
  class: ''
383
- }, template: "<div\r\n [class]=\"mode !== 'form-only' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"applySearch($event)\"\r\n (resetSearch)=\"applySearch('')\"\r\n/>\r\n\r\n @if (!hideTable) {\r\n <lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (onAddNew)=\"action.emit({ name: 'add', row: null! })\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n ></lib-generic-table>\r\n\r\n }\r\n\r\n <app-generic-dialog\r\n #dialog\r\n [service]=\"service\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [dialogMaxWidth]=\"dialogMaxWidth\"\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [forceState]=\"forceState\"\r\n [drawerVisible]=\"drawerVisible\"\r\n [dialogVisible]=\"dialogVisible\"\r\n [isViewMode]=\"isViewMode\"\r\n [isEditMode]=\"isEditMode\"\r\n [useConfirmOnSave]=\"useConfirmOnSave\"\r\n [loading]=\"loading\"\r\n [errorMsg]=\"errorMsg\"\r\n [errorMessage]=\"errorMessage\"\r\n [beforeSaveTransform]=\"beforeSaveTransform\"\r\n (action)=\"action.emit($event)\"\r\n (afterSave)=\"afterSave.emit($event);onSubmit();\"\r\n (afterDelete)=\"afterDelete.emit($event)\"\r\n (beforeSave)=\"beforeSave.emit($event)\"\r\n (beforeDelete)=\"beforeDelete.emit($event)\"\r\n (formCancel)=\"formCancel.emit()\"\r\n (formInit)=\"formInit.emit($event)\"\r\n (dataLoaded)=\"dataLoaded.emit($event)\"\r\n (selectionChange)=\"selectionChange.emit($event)\"\r\n (error)=\"error.emit($event)\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n >\r\n </app-generic-dialog>\r\n</div>\r\n" }]
495
+ }, template: "<div\r\n [class]=\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"applySearch($event)\"\r\n (resetSearch)=\"applySearch('')\"\r\n (paginateChange)=\"onHeaderPaginateChange($event)\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n/>\r\n\r\n @if (!hideTable) {\r\n <lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (onAddNew)=\"action.emit({ name: 'add', row: null! })\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n ></lib-generic-table>\r\n\r\n }\r\n\r\n <app-generic-dialog\r\n #dialog\r\n [service]=\"service\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [dialogMaxWidth]=\"dialogMaxWidth\"\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [forceState]=\"forceState\"\r\n [drawerVisible]=\"drawerVisible\"\r\n [dialogVisible]=\"dialogVisible\"\r\n [isViewMode]=\"isViewMode\"\r\n [isEditMode]=\"isEditMode\"\r\n [useConfirmOnSave]=\"useConfirmOnSave\"\r\n [loading]=\"loading\"\r\n [errorMsg]=\"errorMsg\"\r\n [errorMessage]=\"errorMessage\"\r\n [beforeSaveTransform]=\"beforeSaveTransform\"\r\n (action)=\"action.emit($event)\"\r\n (afterSave)=\"afterSave.emit($event);onSubmit();\"\r\n (afterDelete)=\"afterDelete.emit($event)\"\r\n (beforeSave)=\"beforeSave.emit($event)\"\r\n (beforeDelete)=\"beforeDelete.emit($event)\"\r\n (formCancel)=\"formCancel.emit()\"\r\n (formInit)=\"formInit.emit($event)\"\r\n (dataLoaded)=\"dataLoaded.emit($event)\"\r\n (selectionChange)=\"selectionChange.emit($event)\"\r\n (error)=\"error.emit($event)\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n <app-detail-view\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [title]=\"breadcrumb_?.[0]?.label || 'Detail'\"\r\n [service]=\"service\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [actions]=\"actions\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [tabs]=\"tabs\"\r\n [loading]=\"loading\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [createEditActions]=\"createEditActions\"\r\n (action)=\"action.emit($event)\"\r\n >\r\n </app-detail-view>\r\n\r\n</div>\r\n" }]
384
496
  }], propDecorators: { genericTable: [{
385
497
  type: ViewChild,
386
498
  args: ['genericTable']
@@ -487,6 +599,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
487
599
  type: Input
488
600
  }], addButtonConfigs: [{
489
601
  type: Input
602
+ }], createEditActions: [{
603
+ type: Input
604
+ }], tabs: [{
605
+ type: Input
490
606
  }], bulkActionButtons: [{
491
607
  type: Input
492
608
  }], singleActionButtons: [{