@es.framework/ng.ui.core 2.0.65 → 2.0.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/attachments/README.md +3 -3
- package/base-crud/README.md +3 -3
- package/breadcrumb/README.md +3 -3
- package/checkbox/README.md +3 -3
- package/collapsible/README.md +3 -3
- package/color-picker/README.md +3 -3
- package/column-settings-popover/README.md +3 -3
- package/custom-switch/README.md +3 -3
- package/datepicker/README.md +3 -3
- package/deactivation-reason/README.md +3 -3
- package/excel-import/README.md +3 -3
- package/fesm2022/es.framework-ng.ui.core-attachments.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-attachments.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-base-crud.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs +108 -108
- package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-checkbox.mjs +54 -54
- package/fesm2022/es.framework-ng.ui.core-checkbox.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-collapsible.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-color-picker.mjs +44 -44
- package/fesm2022/es.framework-ng.ui.core-color-picker.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-custom-switch.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-datepicker.mjs +178 -178
- package/fesm2022/es.framework-ng.ui.core-datepicker.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs +46 -46
- package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-excel-import.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs +624 -624
- package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-form-button.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-form-field.mjs +80 -80
- package/fesm2022/es.framework-ng.ui.core-form-field.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-form-template.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-image.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs +44 -44
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs +92 -92
- package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-button.mjs +24 -24
- package/fesm2022/es.framework-ng.ui.core-formly-button.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-presets.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs +366 -366
- package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs +16 -16
- package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-ui.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs +16 -16
- package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-assets.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs +38 -38
- package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-button.mjs +8 -2
- package/fesm2022/es.framework-ng.ui.core-generic-button.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-card.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-card.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs +14 -3
- package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-listbox.mjs +64 -64
- package/fesm2022/es.framework-ng.ui.core-generic-listbox.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs +68 -68
- package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-report.mjs +19 -3
- package/fesm2022/es.framework-ng.ui.core-generic-report.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs +442 -442
- package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-search.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-search.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-selector.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-table.mjs +16 -8
- package/fesm2022/es.framework-ng.ui.core-generic-table.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-generic-view.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-generic-view.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs +106 -106
- package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-input-switch.mjs +58 -58
- package/fesm2022/es.framework-ng.ui.core-input-switch.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs +26 -26
- package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-input.mjs +64 -64
- package/fesm2022/es.framework-ng.ui.core-input.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-label-type.mjs +16 -16
- package/fesm2022/es.framework-ng.ui.core-label-type.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs +22 -22
- package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-query-type.mjs +14 -14
- package/fesm2022/es.framework-ng.ui.core-query-type.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-radio.mjs +30 -30
- package/fesm2022/es.framework-ng.ui.core-radio.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-repeat.mjs +354 -354
- package/fesm2022/es.framework-ng.ui.core-repeat.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-select.mjs +84 -84
- package/fesm2022/es.framework-ng.ui.core-select.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-tabs.mjs +14 -14
- package/fesm2022/es.framework-ng.ui.core-tabs.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-tag-type.mjs +80 -80
- package/fesm2022/es.framework-ng.ui.core-tag-type.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-text-editor.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-textarea.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core-wrappers.mjs +118 -118
- package/fesm2022/es.framework-ng.ui.core-wrappers.mjs.map +1 -1
- package/fesm2022/es.framework-ng.ui.core.mjs +2 -2
- package/fesm2022/es.framework-ng.ui.core.mjs.map +1 -1
- package/filter-templates/README.md +3 -3
- package/form-button/README.md +3 -3
- package/form-field/README.md +3 -3
- package/form-template/README.md +3 -3
- package/formly-avatar-image/README.md +3 -3
- package/formly-avatar-label/README.md +3 -3
- package/formly-button/README.md +3 -3
- package/formly-button-selector/README.md +3 -3
- package/formly-presets/README.md +3 -3
- package/formly-prime-icon-picker/README.md +3 -3
- package/formly-split-button/README.md +3 -3
- package/formly-ui/README.md +3 -3
- package/formly-ui-all/README.md +3 -3
- package/formly-username-with-domain/README.md +3 -3
- package/generic-assets/README.md +3 -3
- package/generic-autocomplete/README.md +3 -3
- package/generic-button/README.md +3 -3
- package/generic-card/README.md +3 -3
- package/generic-crud-table/README.md +3 -3
- package/generic-dialog/README.md +3 -3
- package/generic-errormessage/README.md +3 -3
- package/generic-formly-fields/README.md +3 -3
- package/generic-loadingspinner/README.md +3 -3
- package/generic-report/README.md +3 -3
- package/generic-search/README.md +3 -3
- package/generic-search-advanced/README.md +3 -3
- package/generic-selector/README.md +3 -3
- package/generic-table/README.md +3 -3
- package/generic-view/README.md +3 -3
- package/header-wrapper/README.md +3 -3
- package/icon-picker/README.md +3 -3
- package/input/README.md +3 -3
- package/input-switch/README.md +3 -3
- package/input-with-icon/README.md +3 -3
- package/label-type/README.md +3 -3
- package/loading-skeletons/README.md +3 -3
- package/odata-query-builder/README.md +3 -3
- package/package.json +1 -1
- package/query-type/README.md +3 -3
- package/radio/README.md +3 -3
- package/repeat/README.md +3 -3
- package/select/README.md +3 -3
- package/sidebar-cards/README.md +3 -3
- package/sidebar-toggles/README.md +3 -3
- package/styles.css +0 -0
- package/tabs/README.md +3 -3
- package/tag-type/README.md +3 -3
- package/text-editor/README.md +3 -3
- package/textarea/README.md +3 -3
- package/types/es.framework-ng.ui.core-generic-button.d.ts +3 -1
- package/types/es.framework-ng.ui.core-generic-crud-table.d.ts +1 -0
- package/types/es.framework-ng.ui.core-generic-report.d.ts +1 -0
- package/types/es.framework-ng.ui.core-generic-table.d.ts +1 -1
- package/wrappers/README.md +3 -3
|
@@ -18,11 +18,11 @@ class GenericErrormessage {
|
|
|
18
18
|
/** نص رسالة الخطأ */
|
|
19
19
|
text = '';
|
|
20
20
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericErrormessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericErrormessage, isStandalone: true, selector: "lib-generic-errormessage", inputs: { text: "text" }, ngImport: i0, template: " \n@if (text) {\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\n}", styles: [""] });
|
|
21
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericErrormessage, isStandalone: true, selector: "lib-generic-errormessage", inputs: { text: "text" }, ngImport: i0, template: " \r\n@if (text) {\r\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\r\n}", styles: [""] });
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericErrormessage, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
|
-
args: [{ selector: 'lib-generic-errormessage', imports: [], template: " \n@if (text) {\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\n}" }]
|
|
25
|
+
args: [{ selector: 'lib-generic-errormessage', imports: [], template: " \r\n@if (text) {\r\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\r\n}" }]
|
|
26
26
|
}], propDecorators: { text: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-generic-errormessage.mjs","sources":["../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage-module.ts","../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage.ts","../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage.html","../../../../libs/ng.ui.core/generic-errormessage/src/es.framework-ng.ui.core-generic-errormessage.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericErrormessageModule {}\n","import { Component, Input } from '@angular/core';\n\n\n@Component({\n selector: 'lib-generic-errormessage',\n imports: [],\n templateUrl: './generic-errormessage.html',\n styleUrl: './generic-errormessage.css'\n})\nexport class GenericErrormessage {\n /** نص رسالة الخطأ */\n @Input() text: string = '';\n}\n"," \n@if (text) {\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,mBAAmB,CAAA;;IAErB,IAAI,GAAW,EAAE;uGAFf,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8GCThC,
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-generic-errormessage.mjs","sources":["../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage-module.ts","../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage.ts","../../../../libs/ng.ui.core/generic-errormessage/src/lib/generic-errormessage.html","../../../../libs/ng.ui.core/generic-errormessage/src/es.framework-ng.ui.core-generic-errormessage.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class GenericErrormessageModule {}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'lib-generic-errormessage',\r\n imports: [],\r\n templateUrl: './generic-errormessage.html',\r\n styleUrl: './generic-errormessage.css'\r\n})\r\nexport class GenericErrormessage {\r\n /** نص رسالة الخطأ */\r\n @Input() text: string = '';\r\n}\r\n"," \r\n@if (text) {\r\n<div class=\"bg-red-100 border border-red-300 text-red-800 px-4 py-3 rounded my-4\"> {{ text }} </div>\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,mBAAmB,CAAA;;IAErB,IAAI,GAAW,EAAE;uGAFf,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8GCThC,yIAGC,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDMY,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,WAC1B,EAAE,EAAA,QAAA,EAAA,yIAAA,EAAA;;sBAMX;;;AEXH;;AAEG;;;;"}
|
|
@@ -36,7 +36,7 @@ class GenericFormlyFields {
|
|
|
36
36
|
return field.templateOptions?.['icon'] || null;
|
|
37
37
|
}
|
|
38
38
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericFormlyFields, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: GenericFormlyFields, isStandalone: true, selector: "lib-generic-formly-fields", inputs: { form: "form", fields: "fields", model: "model", options: "options" }, ngImport: i0, template: "<!-- \u064A\u0631\u0633\u0645 \u062D\u0642\u0648\u0644 Formly \u062F\u0627\u062E\u0644 \u0627\u0644\u0640 form \u0627\u0644\u0645\u0648\u062C\u0648\u062F -->\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n</formly-form>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }] });
|
|
39
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: GenericFormlyFields, isStandalone: true, selector: "lib-generic-formly-fields", inputs: { form: "form", fields: "fields", model: "model", options: "options" }, ngImport: i0, template: "<!-- \u064A\u0631\u0633\u0645 \u062D\u0642\u0648\u0644 Formly \u062F\u0627\u062E\u0644 \u0627\u0644\u0640 form \u0627\u0644\u0645\u0648\u062C\u0648\u062F -->\r\n<formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n</formly-form>\r\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }] });
|
|
40
40
|
}
|
|
41
41
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericFormlyFields, decorators: [{
|
|
42
42
|
type: Component,
|
|
@@ -44,7 +44,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
44
44
|
ReactiveFormsModule,
|
|
45
45
|
FormsModule,
|
|
46
46
|
FormlyForm
|
|
47
|
-
], template: "<!-- \u064A\u0631\u0633\u0645 \u062D\u0642\u0648\u0644 Formly \u062F\u0627\u062E\u0644 \u0627\u0644\u0640 form \u0627\u0644\u0645\u0648\u062C\u0648\u062F -->\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n</formly-form>\n" }]
|
|
47
|
+
], template: "<!-- \u064A\u0631\u0633\u0645 \u062D\u0642\u0648\u0644 Formly \u062F\u0627\u062E\u0644 \u0627\u0644\u0640 form \u0627\u0644\u0645\u0648\u062C\u0648\u062F -->\r\n<formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n</formly-form>\r\n" }]
|
|
48
48
|
}], propDecorators: { form: [{
|
|
49
49
|
type: Input
|
|
50
50
|
}], fields: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-generic-formly-fields.mjs","sources":["../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields-module.ts","../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields.ts","../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields.html","../../../../libs/ng.ui.core/generic-formly-fields/src/es.framework-ng.ui.core-generic-formly-fields.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericFormlyFieldsModule {}\n","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { ReactiveFormsModule, FormGroup, FormsModule } from '@angular/forms';\nimport { FormlyFormOptions, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\n\n@Component({\n selector: 'lib-generic-formly-fields',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n FormsModule,\n FormlyForm\n],\n templateUrl: './generic-formly-fields.html',\n})\nexport class GenericFormlyFields {\n /** الـ FormGroup الذي يُدار خارجيًا */\n @Input() form!: FormGroup;\n\n /** حقول Formly */\n @Input() fields: FormlyFieldConfig[] = [];\n\n /** النموذج (object) الذي سيُربط بالحقول */\n @Input() model: any = {};\n\n /** خيارات Formly (validation, hideExpression, ...) */\n @Input() options: FormlyFormOptions = {};\n\n // ngOnInit() {\n // // ما من حاجة هنا: يفترض أن form مُهيّأ في الخارج\n // }\n\n // ngOnChanges(changes: SimpleChanges) {\n // // لو احتجت تتعامل مع تغيّر الحقول أو الموديل، هنا المكان\n // }\n\n // دالة مساعدة للوصول الآمن لخصائص الحقل\n getFieldIcon(field: FormlyFieldConfig): string | null {\n return field.templateOptions?.['icon'] || null;\n }\n}\n","<!-- يرسم حقول Formly داخل الـ form الموجود -->\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\">\n</formly-form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCUY,mBAAmB,CAAA;;AAErB,IAAA,IAAI;;IAGJ,MAAM,GAAwB,EAAE;;IAGhC,KAAK,GAAQ,EAAE;;IAGf,OAAO,GAAsB,EAAE;;;;;;;;AAWxC,IAAA,YAAY,CAAC,KAAwB,EAAA;QACnC,OAAO,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,IAAI;IAChD;uGAxBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,qKCfhC,
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-generic-formly-fields.mjs","sources":["../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields-module.ts","../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields.ts","../../../../libs/ng.ui.core/generic-formly-fields/src/lib/generic-formly-fields.html","../../../../libs/ng.ui.core/generic-formly-fields/src/es.framework-ng.ui.core-generic-formly-fields.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class GenericFormlyFieldsModule {}\r\n","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\nimport { ReactiveFormsModule, FormGroup, FormsModule } from '@angular/forms';\r\nimport { FormlyFormOptions, FormlyFieldConfig, FormlyForm } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'lib-generic-formly-fields',\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FormlyForm\r\n],\r\n templateUrl: './generic-formly-fields.html',\r\n})\r\nexport class GenericFormlyFields {\r\n /** الـ FormGroup الذي يُدار خارجيًا */\r\n @Input() form!: FormGroup;\r\n\r\n /** حقول Formly */\r\n @Input() fields: FormlyFieldConfig[] = [];\r\n\r\n /** النموذج (object) الذي سيُربط بالحقول */\r\n @Input() model: any = {};\r\n\r\n /** خيارات Formly (validation, hideExpression, ...) */\r\n @Input() options: FormlyFormOptions = {};\r\n\r\n // ngOnInit() {\r\n // // ما من حاجة هنا: يفترض أن form مُهيّأ في الخارج\r\n // }\r\n\r\n // ngOnChanges(changes: SimpleChanges) {\r\n // // لو احتجت تتعامل مع تغيّر الحقول أو الموديل، هنا المكان\r\n // }\r\n\r\n // دالة مساعدة للوصول الآمن لخصائص الحقل\r\n getFieldIcon(field: FormlyFieldConfig): string | null {\r\n return field.templateOptions?.['icon'] || null;\r\n }\r\n}\r\n","<!-- يرسم حقول Formly داخل الـ form الموجود -->\r\n<formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields\"\r\n [model]=\"model\"\r\n [options]=\"options\">\r\n</formly-form>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAF1B,YAAY,CAAA,EAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCUY,mBAAmB,CAAA;;AAErB,IAAA,IAAI;;IAGJ,MAAM,GAAwB,EAAE;;IAGhC,KAAK,GAAQ,EAAE;;IAGf,OAAO,GAAsB,EAAE;;;;;;;;AAWxC,IAAA,YAAY,CAAC,KAAwB,EAAA;QACnC,OAAO,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,IAAI;IAChD;uGAxBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,qKCfhC,sSAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,+BACX,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAID,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACP,mBAAmB;wBACnB,WAAW;wBACX;AACH,qBAAA,EAAA,QAAA,EAAA,sSAAA,EAAA;;sBAKE;;sBAGA;;sBAGA;;sBAGA;;;AE1BH;;AAEG;;;;"}
|
|
@@ -203,76 +203,76 @@ class GenericListboxTypeComponent extends FieldType {
|
|
|
203
203
|
this.valueChangeSubscription.unsubscribe();
|
|
204
204
|
}
|
|
205
205
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericListboxTypeComponent, deps: [{ token: i1.BaseService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
206
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: GenericListboxTypeComponent, isStandalone: true, selector: "formly-generic-listbox", providers: [DialogService, BaseService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
207
|
-
<div class="flex flex-col gap-2 w-full">
|
|
208
|
-
<div class="flex gap-1 items-center mb-1" *ngIf="props.canAdd && props.formFields">
|
|
209
|
-
<p-button icon="pi pi-plus" [label]="'ADD_NEW' | translate" size="small" severity="primary" (click)="onAddNewClick()" />
|
|
210
|
-
</div>
|
|
211
|
-
|
|
212
|
-
<p-listbox
|
|
213
|
-
[options]="options_"
|
|
214
|
-
[ngModel]="selectedItem"
|
|
215
|
-
(ngModelChange)="onSelectionChange($event)"
|
|
216
|
-
[formlyAttributes]="field"
|
|
217
|
-
[multiple]="props.multiple"
|
|
218
|
-
[checkbox]="props.multiple"
|
|
219
|
-
[filter]="props.filters !== false"
|
|
220
|
-
[optionLabel]="optionLabel"
|
|
221
|
-
[disabled]="!!props.disabled"
|
|
222
|
-
[listStyle]="{'max-height': props.listHeight || '250px'}"
|
|
223
|
-
(onFilter)="onFilterSearch($event)"
|
|
224
|
-
class="w-full"
|
|
225
|
-
[emptyMessage]="getEmptyMessage() | translate">
|
|
226
|
-
|
|
227
|
-
<ng-template let-item pTemplate="item">
|
|
228
|
-
<div class="flex flex-col">
|
|
229
|
-
<span [innerHTML]="getFormattedLabel(item)"></span>
|
|
230
|
-
</div>
|
|
231
|
-
</ng-template>
|
|
232
|
-
</p-listbox>
|
|
233
|
-
|
|
234
|
-
<app-generic-dialog #dialog [formFields]="props.formFields ?? []" [apiName]="props.serviceName" [moduleName]="props.moduleName"
|
|
235
|
-
[idField]="props.idField ?? 'id'" [displayMode]="'dialog'" (afterSave)="afterSave($event)">
|
|
236
|
-
</app-generic-dialog>
|
|
237
|
-
</div>
|
|
206
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: GenericListboxTypeComponent, isStandalone: true, selector: "formly-generic-listbox", providers: [DialogService, BaseService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
207
|
+
<div class="flex flex-col gap-2 w-full">
|
|
208
|
+
<div class="flex gap-1 items-center mb-1" *ngIf="props.canAdd && props.formFields">
|
|
209
|
+
<p-button icon="pi pi-plus" [label]="'ADD_NEW' | translate" size="small" severity="primary" (click)="onAddNewClick()" />
|
|
210
|
+
</div>
|
|
211
|
+
|
|
212
|
+
<p-listbox
|
|
213
|
+
[options]="options_"
|
|
214
|
+
[ngModel]="selectedItem"
|
|
215
|
+
(ngModelChange)="onSelectionChange($event)"
|
|
216
|
+
[formlyAttributes]="field"
|
|
217
|
+
[multiple]="props.multiple"
|
|
218
|
+
[checkbox]="props.multiple"
|
|
219
|
+
[filter]="props.filters !== false"
|
|
220
|
+
[optionLabel]="optionLabel"
|
|
221
|
+
[disabled]="!!props.disabled"
|
|
222
|
+
[listStyle]="{'max-height': props.listHeight || '250px'}"
|
|
223
|
+
(onFilter)="onFilterSearch($event)"
|
|
224
|
+
class="w-full"
|
|
225
|
+
[emptyMessage]="getEmptyMessage() | translate">
|
|
226
|
+
|
|
227
|
+
<ng-template let-item pTemplate="item">
|
|
228
|
+
<div class="flex flex-col">
|
|
229
|
+
<span [innerHTML]="getFormattedLabel(item)"></span>
|
|
230
|
+
</div>
|
|
231
|
+
</ng-template>
|
|
232
|
+
</p-listbox>
|
|
233
|
+
|
|
234
|
+
<app-generic-dialog #dialog [formFields]="props.formFields ?? []" [apiName]="props.serviceName" [moduleName]="props.moduleName"
|
|
235
|
+
[idField]="props.idField ?? 'id'" [displayMode]="'dialog'" (afterSave)="afterSave($event)">
|
|
236
|
+
</app-generic-dialog>
|
|
237
|
+
</div>
|
|
238
238
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: ListboxModule }, { kind: "component", type: i3.Listbox, selector: "p-listbox, p-listBox, p-list-box", inputs: ["hostName", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "ariaLabel", "selectOnFocus", "searchLocale", "focusOnHover", "filterMessage", "filterFields", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "scrollHeight", "tabindex", "multiple", "styleClass", "listStyle", "listStyleClass", "readonly", "checkbox", "filter", "filterBy", "filterMatchMode", "filterLocale", "metaKeySelection", "dataKey", "showToggleAll", "optionLabel", "optionValue", "optionGroupChildren", "optionGroupLabel", "optionDisabled", "ariaFilterLabel", "filterPlaceHolder", "emptyFilterMessage", "emptyMessage", "group", "options", "filterValue", "selectAll", "striped", "highlightOnSelect", "checkmark", "dragdrop", "dropListData", "fluid"], outputs: ["onChange", "onClick", "onDblClick", "onFilter", "onFocus", "onBlur", "onSelectAllChange", "onLazyLoad", "onDrop"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["form", "service", "formFields", "model", "apiName", "moduleName", "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: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
239
239
|
}
|
|
240
240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericListboxTypeComponent, decorators: [{
|
|
241
241
|
type: Component,
|
|
242
242
|
args: [{
|
|
243
243
|
selector: 'formly-generic-listbox',
|
|
244
|
-
template: `
|
|
245
|
-
<div class="flex flex-col gap-2 w-full">
|
|
246
|
-
<div class="flex gap-1 items-center mb-1" *ngIf="props.canAdd && props.formFields">
|
|
247
|
-
<p-button icon="pi pi-plus" [label]="'ADD_NEW' | translate" size="small" severity="primary" (click)="onAddNewClick()" />
|
|
248
|
-
</div>
|
|
249
|
-
|
|
250
|
-
<p-listbox
|
|
251
|
-
[options]="options_"
|
|
252
|
-
[ngModel]="selectedItem"
|
|
253
|
-
(ngModelChange)="onSelectionChange($event)"
|
|
254
|
-
[formlyAttributes]="field"
|
|
255
|
-
[multiple]="props.multiple"
|
|
256
|
-
[checkbox]="props.multiple"
|
|
257
|
-
[filter]="props.filters !== false"
|
|
258
|
-
[optionLabel]="optionLabel"
|
|
259
|
-
[disabled]="!!props.disabled"
|
|
260
|
-
[listStyle]="{'max-height': props.listHeight || '250px'}"
|
|
261
|
-
(onFilter)="onFilterSearch($event)"
|
|
262
|
-
class="w-full"
|
|
263
|
-
[emptyMessage]="getEmptyMessage() | translate">
|
|
264
|
-
|
|
265
|
-
<ng-template let-item pTemplate="item">
|
|
266
|
-
<div class="flex flex-col">
|
|
267
|
-
<span [innerHTML]="getFormattedLabel(item)"></span>
|
|
268
|
-
</div>
|
|
269
|
-
</ng-template>
|
|
270
|
-
</p-listbox>
|
|
271
|
-
|
|
272
|
-
<app-generic-dialog #dialog [formFields]="props.formFields ?? []" [apiName]="props.serviceName" [moduleName]="props.moduleName"
|
|
273
|
-
[idField]="props.idField ?? 'id'" [displayMode]="'dialog'" (afterSave)="afterSave($event)">
|
|
274
|
-
</app-generic-dialog>
|
|
275
|
-
</div>
|
|
244
|
+
template: `
|
|
245
|
+
<div class="flex flex-col gap-2 w-full">
|
|
246
|
+
<div class="flex gap-1 items-center mb-1" *ngIf="props.canAdd && props.formFields">
|
|
247
|
+
<p-button icon="pi pi-plus" [label]="'ADD_NEW' | translate" size="small" severity="primary" (click)="onAddNewClick()" />
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
<p-listbox
|
|
251
|
+
[options]="options_"
|
|
252
|
+
[ngModel]="selectedItem"
|
|
253
|
+
(ngModelChange)="onSelectionChange($event)"
|
|
254
|
+
[formlyAttributes]="field"
|
|
255
|
+
[multiple]="props.multiple"
|
|
256
|
+
[checkbox]="props.multiple"
|
|
257
|
+
[filter]="props.filters !== false"
|
|
258
|
+
[optionLabel]="optionLabel"
|
|
259
|
+
[disabled]="!!props.disabled"
|
|
260
|
+
[listStyle]="{'max-height': props.listHeight || '250px'}"
|
|
261
|
+
(onFilter)="onFilterSearch($event)"
|
|
262
|
+
class="w-full"
|
|
263
|
+
[emptyMessage]="getEmptyMessage() | translate">
|
|
264
|
+
|
|
265
|
+
<ng-template let-item pTemplate="item">
|
|
266
|
+
<div class="flex flex-col">
|
|
267
|
+
<span [innerHTML]="getFormattedLabel(item)"></span>
|
|
268
|
+
</div>
|
|
269
|
+
</ng-template>
|
|
270
|
+
</p-listbox>
|
|
271
|
+
|
|
272
|
+
<app-generic-dialog #dialog [formFields]="props.formFields ?? []" [apiName]="props.serviceName" [moduleName]="props.moduleName"
|
|
273
|
+
[idField]="props.idField ?? 'id'" [displayMode]="'dialog'" (afterSave)="afterSave($event)">
|
|
274
|
+
</app-generic-dialog>
|
|
275
|
+
</div>
|
|
276
276
|
`,
|
|
277
277
|
providers: [DialogService, BaseService],
|
|
278
278
|
standalone: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-generic-listbox.mjs","sources":["../../../../libs/ng.ui.core/generic-listbox/src/lib/generic-listbox.module.ts","../../../../libs/ng.ui.core/generic-listbox/src/lib/generic-listbox.component.ts","../../../../libs/ng.ui.core/generic-listbox/src/es.framework-ng.ui.core-generic-listbox.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericListboxModule {}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Observable, Subscription } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ListboxModule } from 'primeng/listbox';\nimport { ButtonModule } from 'primeng/button';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { FormlyFieldConfig, FieldType, FormlyAttributes, FieldTypeConfig } from '@ngx-formly/core';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { FormlyFieldProps } from '@ngx-formly/primeng/form-field';\nimport { BaseService, FilterGroup, LocalizationService, QueryParameters, QueryParser } from '@es.framework/ng.core/services';\nimport { GenericDialogComponent } from '@es.framework/ng.ui.core/generic-dialog';\n\ninterface GenericListboxProps extends FormlyFieldProps {\n moduleName: string;\n serviceName: string;\n listEndpoint?: string | ((model: any) => string);\n labelField?: string;\n labelFieldEn?: string;\n valueField?: string;\n useMultiLang?: boolean;\n multiple?: boolean;\n offline?: boolean;\n offlineItems?: any[];\n offlineItems$?: Observable<any[]>;\n onSelect?: (field: FormlyFieldConfig, event?: any) => void;\n offlineDataFn?: (query?: string) => any[];\n query?: Record<string, any> | QueryParameters;\n fixedFilters?: Record<string, any>;\n canAdd?: boolean;\n formFields?: FormlyFieldConfig[];\n afterSave?: (field: FormlyFieldConfig, event?: any) => void;\n formatter?: (row: any, value?: any) => string;\n listHeight?: string;\n filters?: boolean;\n idField?: string;\n}\n\n@Component({\n selector: 'formly-generic-listbox',\n template: `\n <div class=\"flex flex-col gap-2 w-full\">\n <div class=\"flex gap-1 items-center mb-1\" *ngIf=\"props.canAdd && props.formFields\">\n <p-button icon=\"pi pi-plus\" [label]=\"'ADD_NEW' | translate\" size=\"small\" severity=\"primary\" (click)=\"onAddNewClick()\" />\n </div>\n\n <p-listbox\n [options]=\"options_\"\n [ngModel]=\"selectedItem\"\n (ngModelChange)=\"onSelectionChange($event)\"\n [formlyAttributes]=\"field\"\n [multiple]=\"props.multiple\"\n [checkbox]=\"props.multiple\"\n [filter]=\"props.filters !== false\"\n [optionLabel]=\"optionLabel\"\n [disabled]=\"!!props.disabled\"\n [listStyle]=\"{'max-height': props.listHeight || '250px'}\"\n (onFilter)=\"onFilterSearch($event)\"\n class=\"w-full\"\n [emptyMessage]=\"getEmptyMessage() | translate\">\n\n <ng-template let-item pTemplate=\"item\">\n <div class=\"flex flex-col\">\n <span [innerHTML]=\"getFormattedLabel(item)\"></span>\n </div>\n </ng-template>\n </p-listbox>\n\n <app-generic-dialog #dialog [formFields]=\"props.formFields ?? []\" [apiName]=\"props.serviceName\" [moduleName]=\"props.moduleName\"\n [idField]=\"props.idField ?? 'id'\" [displayMode]=\"'dialog'\" (afterSave)=\"afterSave($event)\">\n </app-generic-dialog>\n </div>\n `,\n providers: [DialogService, BaseService],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, ListboxModule, FormlyAttributes, TranslatePipe, ButtonModule, GenericDialogComponent]\n})\nexport class GenericListboxTypeComponent extends FieldType<FieldTypeConfig<GenericListboxProps>> implements OnInit, OnDestroy {\n @ViewChild('dialog') dialog!: GenericDialogComponent;\n options_: any[] = [];\n selectedItem: any;\n loading = false;\n private _offlineList: any[] = [];\n private translateService = inject(LocalizationService);\n private sanitizer: DomSanitizer = inject(DomSanitizer);\n api: BaseService | any;\n private valueChangeSubscription!: Subscription;\n\n constructor(private svc: BaseService, private cdr: ChangeDetectorRef) { super(); }\n\n get optionLabel(): string {\n if (this.props.useMultiLang) {\n return this.translateService.currentLang === 'en' ? (this.props.labelFieldEn || 'name') : (this.props.labelField || 'name');\n }\n return this.props.labelField || 'name';\n }\n\n ngOnInit() {\n this.api = this.svc;\n this.api.apiName = this.props.serviceName;\n this.api.moduleName = this.props.moduleName;\n\n // تحميل البيانات لأول مرة\n this.search({ query: '' });\n\n this.valueChangeSubscription = this.formControl.valueChanges.subscribe(() => {\n this.syncSelectionWithControl();\n });\n }\n\n onFilterSearch(event: any) {\n if (!this.props.offline) {\n this.search({ query: event.filter });\n }\n }\n\n onSelectionChange(val: any) {\n const vf = this.props.valueField || 'id';\n this.selectedItem = val;\n\n if (this.props.multiple) {\n const values = Array.isArray(val) ? val.map(i => i[vf]) : [];\n this.formControl.setValue(values);\n } else {\n this.formControl.setValue(val ? val[vf] : null);\n }\n\n if (this.props.onSelect) {\n this.props.onSelect(this.field, { item: val });\n }\n }\n\n private syncSelectionWithControl() {\n const val = this.formControl.value;\n const vf = this.props.valueField || 'id';\n\n if (val == null || (Array.isArray(val) && val.length === 0)) {\n this.selectedItem = this.props.multiple ? [] : null;\n } else if (this.props.multiple && Array.isArray(val)) {\n this.selectedItem = this.options_.filter(opt => val.includes(opt[vf]));\n } else {\n this.selectedItem = this.options_.find(opt => opt[vf] === val);\n }\n this.cdr.detectChanges();\n }\n\n // الدالة التي طلبتها بنفس الآلية البسيطة\n search(event: { query: string }) {\n const q = event.query?.toString() || '';\n const lf = this.optionLabel;\n\n // --- أولاً: حالة الـ Offline (البحث المحلي) ---\n if (this.props.offline) {\n if (this.props.offlineDataFn) {\n // إذا كان هناك دالة مخصصة لجلب البيانات محلياً\n this.options_ = this.props.offlineDataFn(q);\n } else {\n // البحث الافتراضي في المصفوفة المخزنة\n this.options_ = this._offlineList.filter(item => {\n const searchStr = q.toLowerCase();\n // يبحث في الحقل المعرف كـ labelField\n return item[lf]?.toString().toLowerCase().includes(searchStr) ||\n // أو يبحث في id إذا كان البحث نصياً مطابقاً\n item[this.props.valueField || 'id']?.toString().toLowerCase() === searchStr;\n });\n }\n this.syncSelectionWithControl();\n this.cdr.detectChanges();\n return; // إنهاء الدالة هنا لأننا في وضع الأوفلاين\n }\n\n // --- ثانياً: حالة الـ Online (طلب API) ---\n this.loading = true;\n const fixedFilters = this.getFixedFilters(q);\n\n const queryParams: QueryParameters = {\n filters: [],\n top: this.props.query?.['top'] ?? 20,\n skip: this.props.query?.['skip'] ?? 0,\n orderBy: this.props.query?.['orderBy'] || [],\n expand: this.props.query?.['expand'] || [],\n select: this.props.query?.['select'] || [],\n };\n\n let dynamicFilters: any[] = [];\n if (this.props.query && this.props.query['filters']) {\n const f = this.props.query['filters'];\n // هنا يتم تمرير searchText للدالة التي أرسلتها أنت في الـ Config\n dynamicFilters = typeof f === 'function' ? f(q, this.field, this.model) : f;\n }\n\n if (dynamicFilters.length === 0) {\n const mainGroup: FilterGroup = { logicalOperator: 'and', conditions: [] };\n if (q) mainGroup.conditions.push({ field: lf, operator: 'contains', value: q });\n\n Object.keys(fixedFilters || {}).forEach(key => {\n if (fixedFilters[key] != null) mainGroup.conditions.push({ field: key, operator: 'eq', value: fixedFilters[key] });\n });\n\n if (mainGroup.conditions.length > 0) queryParams.filters.push(mainGroup);\n } else {\n dynamicFilters.forEach((fg) => {\n queryParams.filters.push({ ...fg, groupLogicalOperator: fg.groupLogicalOperator || 'and' });\n });\n\n if (Object.keys(fixedFilters || {}).length > 0) {\n queryParams.filters.push({\n logicalOperator: 'and',\n groupLogicalOperator: 'and',\n conditions: Object.keys(fixedFilters).map(k => ({ field: k, operator: 'eq', value: fixedFilters[k] }))\n });\n }\n }\n\n let listEndpoint = this.props.listEndpoint;\n if (typeof listEndpoint === 'function') listEndpoint = listEndpoint(this.model);\n\n this.api.getList({ 'query': QueryParser.toString(queryParams) }, listEndpoint)\n .pipe(finalize(() => {\n this.loading = false;\n this.cdr.detectChanges();\n }))\n .subscribe({\n next: (res: any) => {\n this.options_ = res.items ?? res ?? [];\n this.syncSelectionWithControl();\n this.cdr.detectChanges();\n },\n error: () => {\n this.options_ = [];\n this.cdr.detectChanges();\n }\n });\n }\n\n getFixedFilters(query: string = ''): any {\n const ff = this.props.fixedFilters;\n return typeof ff === 'function' ? ff(query, this.field) : (ff || {});\n }\n\n getFormattedLabel(item: any): SafeHtml {\n if (!item) return '';\n const label = this.props.formatter ? this.props.formatter(item) : (item[this.optionLabel] || '');\n return this.sanitizer.bypassSecurityTrustHtml(label);\n }\n\n getEmptyMessage(): string {\n return this.loading ? 'LOADING_DATA_MESSAGE' : 'NO_RESULTS_FOUND';\n }\n\n onAddNewClick() { this.dialog.openForm(\"create\"); }\n\n afterSave(event: any) {\n this.search({ query: '' });\n if (this.props.afterSave) this.props.afterSave(this.field, { item: event.record });\n }\n\n ngOnDestroy() {\n if (this.valueChangeSubscription) this.valueChangeSubscription.unsubscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-generic-listbox.mjs","sources":["../../../../libs/ng.ui.core/generic-listbox/src/lib/generic-listbox.module.ts","../../../../libs/ng.ui.core/generic-listbox/src/lib/generic-listbox.component.ts","../../../../libs/ng.ui.core/generic-listbox/src/es.framework-ng.ui.core-generic-listbox.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericListboxModule {}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { FormlyFieldConfig, FieldType, FormlyAttributes, FieldTypeConfig } from '@ngx-formly/core';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { FormlyFieldProps } from '@ngx-formly/primeng/form-field';\r\nimport { BaseService, FilterGroup, LocalizationService, QueryParameters, QueryParser } from '@es.framework/ng.core/services';\r\nimport { GenericDialogComponent } from '@es.framework/ng.ui.core/generic-dialog';\r\n\r\ninterface GenericListboxProps extends FormlyFieldProps {\r\n moduleName: string;\r\n serviceName: string;\r\n listEndpoint?: string | ((model: any) => string);\r\n labelField?: string;\r\n labelFieldEn?: string;\r\n valueField?: string;\r\n useMultiLang?: boolean;\r\n multiple?: boolean;\r\n offline?: boolean;\r\n offlineItems?: any[];\r\n offlineItems$?: Observable<any[]>;\r\n onSelect?: (field: FormlyFieldConfig, event?: any) => void;\r\n offlineDataFn?: (query?: string) => any[];\r\n query?: Record<string, any> | QueryParameters;\r\n fixedFilters?: Record<string, any>;\r\n canAdd?: boolean;\r\n formFields?: FormlyFieldConfig[];\r\n afterSave?: (field: FormlyFieldConfig, event?: any) => void;\r\n formatter?: (row: any, value?: any) => string;\r\n listHeight?: string;\r\n filters?: boolean;\r\n idField?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-generic-listbox',\r\n template: `\r\n <div class=\"flex flex-col gap-2 w-full\">\r\n <div class=\"flex gap-1 items-center mb-1\" *ngIf=\"props.canAdd && props.formFields\">\r\n <p-button icon=\"pi pi-plus\" [label]=\"'ADD_NEW' | translate\" size=\"small\" severity=\"primary\" (click)=\"onAddNewClick()\" />\r\n </div>\r\n\r\n <p-listbox\r\n [options]=\"options_\"\r\n [ngModel]=\"selectedItem\"\r\n (ngModelChange)=\"onSelectionChange($event)\"\r\n [formlyAttributes]=\"field\"\r\n [multiple]=\"props.multiple\"\r\n [checkbox]=\"props.multiple\"\r\n [filter]=\"props.filters !== false\"\r\n [optionLabel]=\"optionLabel\"\r\n [disabled]=\"!!props.disabled\"\r\n [listStyle]=\"{'max-height': props.listHeight || '250px'}\"\r\n (onFilter)=\"onFilterSearch($event)\"\r\n class=\"w-full\"\r\n [emptyMessage]=\"getEmptyMessage() | translate\">\r\n\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex flex-col\">\r\n <span [innerHTML]=\"getFormattedLabel(item)\"></span>\r\n </div>\r\n </ng-template>\r\n </p-listbox>\r\n\r\n <app-generic-dialog #dialog [formFields]=\"props.formFields ?? []\" [apiName]=\"props.serviceName\" [moduleName]=\"props.moduleName\"\r\n [idField]=\"props.idField ?? 'id'\" [displayMode]=\"'dialog'\" (afterSave)=\"afterSave($event)\">\r\n </app-generic-dialog>\r\n </div>\r\n `,\r\n providers: [DialogService, BaseService],\r\n standalone: true,\r\n imports: [FormsModule, ReactiveFormsModule, ListboxModule, FormlyAttributes, TranslatePipe, ButtonModule, GenericDialogComponent]\r\n})\r\nexport class GenericListboxTypeComponent extends FieldType<FieldTypeConfig<GenericListboxProps>> implements OnInit, OnDestroy {\r\n @ViewChild('dialog') dialog!: GenericDialogComponent;\r\n options_: any[] = [];\r\n selectedItem: any;\r\n loading = false;\r\n private _offlineList: any[] = [];\r\n private translateService = inject(LocalizationService);\r\n private sanitizer: DomSanitizer = inject(DomSanitizer);\r\n api: BaseService | any;\r\n private valueChangeSubscription!: Subscription;\r\n\r\n constructor(private svc: BaseService, private cdr: ChangeDetectorRef) { super(); }\r\n\r\n get optionLabel(): string {\r\n if (this.props.useMultiLang) {\r\n return this.translateService.currentLang === 'en' ? (this.props.labelFieldEn || 'name') : (this.props.labelField || 'name');\r\n }\r\n return this.props.labelField || 'name';\r\n }\r\n\r\n ngOnInit() {\r\n this.api = this.svc;\r\n this.api.apiName = this.props.serviceName;\r\n this.api.moduleName = this.props.moduleName;\r\n\r\n // تحميل البيانات لأول مرة\r\n this.search({ query: '' });\r\n\r\n this.valueChangeSubscription = this.formControl.valueChanges.subscribe(() => {\r\n this.syncSelectionWithControl();\r\n });\r\n }\r\n\r\n onFilterSearch(event: any) {\r\n if (!this.props.offline) {\r\n this.search({ query: event.filter });\r\n }\r\n }\r\n\r\n onSelectionChange(val: any) {\r\n const vf = this.props.valueField || 'id';\r\n this.selectedItem = val;\r\n\r\n if (this.props.multiple) {\r\n const values = Array.isArray(val) ? val.map(i => i[vf]) : [];\r\n this.formControl.setValue(values);\r\n } else {\r\n this.formControl.setValue(val ? val[vf] : null);\r\n }\r\n\r\n if (this.props.onSelect) {\r\n this.props.onSelect(this.field, { item: val });\r\n }\r\n }\r\n\r\n private syncSelectionWithControl() {\r\n const val = this.formControl.value;\r\n const vf = this.props.valueField || 'id';\r\n\r\n if (val == null || (Array.isArray(val) && val.length === 0)) {\r\n this.selectedItem = this.props.multiple ? [] : null;\r\n } else if (this.props.multiple && Array.isArray(val)) {\r\n this.selectedItem = this.options_.filter(opt => val.includes(opt[vf]));\r\n } else {\r\n this.selectedItem = this.options_.find(opt => opt[vf] === val);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // الدالة التي طلبتها بنفس الآلية البسيطة\r\n search(event: { query: string }) {\r\n const q = event.query?.toString() || '';\r\n const lf = this.optionLabel;\r\n\r\n // --- أولاً: حالة الـ Offline (البحث المحلي) ---\r\n if (this.props.offline) {\r\n if (this.props.offlineDataFn) {\r\n // إذا كان هناك دالة مخصصة لجلب البيانات محلياً\r\n this.options_ = this.props.offlineDataFn(q);\r\n } else {\r\n // البحث الافتراضي في المصفوفة المخزنة\r\n this.options_ = this._offlineList.filter(item => {\r\n const searchStr = q.toLowerCase();\r\n // يبحث في الحقل المعرف كـ labelField\r\n return item[lf]?.toString().toLowerCase().includes(searchStr) ||\r\n // أو يبحث في id إذا كان البحث نصياً مطابقاً\r\n item[this.props.valueField || 'id']?.toString().toLowerCase() === searchStr;\r\n });\r\n }\r\n this.syncSelectionWithControl();\r\n this.cdr.detectChanges();\r\n return; // إنهاء الدالة هنا لأننا في وضع الأوفلاين\r\n }\r\n\r\n // --- ثانياً: حالة الـ Online (طلب API) ---\r\n this.loading = true;\r\n const fixedFilters = this.getFixedFilters(q);\r\n\r\n const queryParams: QueryParameters = {\r\n filters: [],\r\n top: this.props.query?.['top'] ?? 20,\r\n skip: this.props.query?.['skip'] ?? 0,\r\n orderBy: this.props.query?.['orderBy'] || [],\r\n expand: this.props.query?.['expand'] || [],\r\n select: this.props.query?.['select'] || [],\r\n };\r\n\r\n let dynamicFilters: any[] = [];\r\n if (this.props.query && this.props.query['filters']) {\r\n const f = this.props.query['filters'];\r\n // هنا يتم تمرير searchText للدالة التي أرسلتها أنت في الـ Config\r\n dynamicFilters = typeof f === 'function' ? f(q, this.field, this.model) : f;\r\n }\r\n\r\n if (dynamicFilters.length === 0) {\r\n const mainGroup: FilterGroup = { logicalOperator: 'and', conditions: [] };\r\n if (q) mainGroup.conditions.push({ field: lf, operator: 'contains', value: q });\r\n\r\n Object.keys(fixedFilters || {}).forEach(key => {\r\n if (fixedFilters[key] != null) mainGroup.conditions.push({ field: key, operator: 'eq', value: fixedFilters[key] });\r\n });\r\n\r\n if (mainGroup.conditions.length > 0) queryParams.filters.push(mainGroup);\r\n } else {\r\n dynamicFilters.forEach((fg) => {\r\n queryParams.filters.push({ ...fg, groupLogicalOperator: fg.groupLogicalOperator || 'and' });\r\n });\r\n\r\n if (Object.keys(fixedFilters || {}).length > 0) {\r\n queryParams.filters.push({\r\n logicalOperator: 'and',\r\n groupLogicalOperator: 'and',\r\n conditions: Object.keys(fixedFilters).map(k => ({ field: k, operator: 'eq', value: fixedFilters[k] }))\r\n });\r\n }\r\n }\r\n\r\n let listEndpoint = this.props.listEndpoint;\r\n if (typeof listEndpoint === 'function') listEndpoint = listEndpoint(this.model);\r\n\r\n this.api.getList({ 'query': QueryParser.toString(queryParams) }, listEndpoint)\r\n .pipe(finalize(() => {\r\n this.loading = false;\r\n this.cdr.detectChanges();\r\n }))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.options_ = res.items ?? res ?? [];\r\n this.syncSelectionWithControl();\r\n this.cdr.detectChanges();\r\n },\r\n error: () => {\r\n this.options_ = [];\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n getFixedFilters(query: string = ''): any {\r\n const ff = this.props.fixedFilters;\r\n return typeof ff === 'function' ? ff(query, this.field) : (ff || {});\r\n }\r\n\r\n getFormattedLabel(item: any): SafeHtml {\r\n if (!item) return '';\r\n const label = this.props.formatter ? this.props.formatter(item) : (item[this.optionLabel] || '');\r\n return this.sanitizer.bypassSecurityTrustHtml(label);\r\n }\r\n\r\n getEmptyMessage(): string {\r\n return this.loading ? 'LOADING_DATA_MESSAGE' : 'NO_RESULTS_FOUND';\r\n }\r\n\r\n onAddNewClick() { this.dialog.openForm(\"create\"); }\r\n\r\n afterSave(event: any) {\r\n this.search({ query: '' });\r\n if (this.props.afterSave) this.props.afterSave(this.field, { item: event.record });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.valueChangeSubscription) this.valueChangeSubscription.unsubscribe();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -17,11 +17,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
17
17
|
class GenericLoadingspinner {
|
|
18
18
|
loading = false;
|
|
19
19
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericLoadingspinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericLoadingspinner, isStandalone: true, selector: "lib-generic-loadingspinner", inputs: { loading: "loading" }, ngImport: i0, template: "@if (loading) {\n <div class=\"flex justify-center items-center my-6\">\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\n </svg>\n <span class=\"ml-2 text-gray-700\">\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644...</span>\n </div>\n}\n", styles: [""] });
|
|
20
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: GenericLoadingspinner, isStandalone: true, selector: "lib-generic-loadingspinner", inputs: { loading: "loading" }, ngImport: i0, template: "@if (loading) {\r\n <div class=\"flex justify-center items-center my-6\">\r\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\r\n </svg>\r\n <span class=\"ml-2 text-gray-700\">\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644...</span>\r\n </div>\r\n}\r\n", styles: [""] });
|
|
21
21
|
}
|
|
22
22
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: GenericLoadingspinner, decorators: [{
|
|
23
23
|
type: Component,
|
|
24
|
-
args: [{ selector: 'lib-generic-loadingspinner', imports: [], template: "@if (loading) {\n <div class=\"flex justify-center items-center my-6\">\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\n </svg>\n <span class=\"ml-2 text-gray-700\">\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644...</span>\n </div>\n}\n" }]
|
|
24
|
+
args: [{ selector: 'lib-generic-loadingspinner', imports: [], template: "@if (loading) {\r\n <div class=\"flex justify-center items-center my-6\">\r\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\r\n </svg>\r\n <span class=\"ml-2 text-gray-700\">\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644...</span>\r\n </div>\r\n}\r\n" }]
|
|
25
25
|
}], propDecorators: { loading: [{
|
|
26
26
|
type: Input
|
|
27
27
|
}] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-generic-loadingspinner.mjs","sources":["../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner-module.ts","../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner.ts","../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner.html","../../../../libs/ng.ui.core/generic-loadingspinner/src/es.framework-ng.ui.core-generic-loadingspinner.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericLoadingspinnerModule {}\n","import { Component, Input } from '@angular/core';\n\n\n@Component({\n selector: 'lib-generic-loadingspinner',\n imports: [],\n templateUrl: './generic-loadingspinner.html',\n styleUrl: './generic-loadingspinner.css'\n})\nexport class GenericLoadingspinner {\n@Input() loading = false;\n}\n\n\n\n\n","@if (loading) {\n <div class=\"flex justify-center items-center my-6\">\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\n </svg>\n <span class=\"ml-2 text-gray-700\">جاري التحميل...</span>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAF5B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAF5B,YAAY,CAAA,EAAA,CAAA;;2FAEX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,qBAAqB,CAAA;IACzB,OAAO,GAAG,KAAK;uGADX,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,sHCTlC,
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-generic-loadingspinner.mjs","sources":["../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner-module.ts","../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner.ts","../../../../libs/ng.ui.core/generic-loadingspinner/src/lib/generic-loadingspinner.html","../../../../libs/ng.ui.core/generic-loadingspinner/src/es.framework-ng.ui.core-generic-loadingspinner.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n})\r\nexport class GenericLoadingspinnerModule {}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'lib-generic-loadingspinner',\r\n imports: [],\r\n templateUrl: './generic-loadingspinner.html',\r\n styleUrl: './generic-loadingspinner.css'\r\n})\r\nexport class GenericLoadingspinner {\r\n@Input() loading = false;\r\n}\r\n\r\n\r\n\r\n\r\n","@if (loading) {\r\n <div class=\"flex justify-center items-center my-6\">\r\n <svg class=\"w-8 h-8 animate-spin text-blue-500\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8H4z\"></path>\r\n </svg>\r\n <span class=\"ml-2 text-gray-700\">جاري التحميل...</span>\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAF5B,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAF5B,YAAY,CAAA,EAAA,CAAA;;2FAEX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCIY,qBAAqB,CAAA;IACzB,OAAO,GAAG,KAAK;uGADX,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,sHCTlC,4hBASA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDAa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,WAC7B,EAAE,EAAA,QAAA,EAAA,4hBAAA,EAAA;;sBAKZ;;;AEVD;;AAEG;;;;"}
|
|
@@ -91,40 +91,40 @@ class TabbedSearchComponent {
|
|
|
91
91
|
return groups;
|
|
92
92
|
}
|
|
93
93
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabbedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
94
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: TabbedSearchComponent, isStandalone: true, selector: "app-tabbed-search", inputs: { fields: "fields", model: "model", form: "form" }, outputs: { onSearch: "onSearch", onReset: "onReset", paginationChange: "paginationChange" }, ngImport: i0, template: `
|
|
95
|
-
<div class="bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4">
|
|
96
|
-
<div class="max-h-[220px] overflow-y-auto overflow-x-hidden pr-2
|
|
97
|
-
touch-pan-y overscroll-contain
|
|
98
|
-
scrollbar-thin scrollbar-thumb-slate-300">
|
|
99
|
-
<form [formGroup]="form">
|
|
100
|
-
<formly-form
|
|
101
|
-
[form]="form"
|
|
102
|
-
[fields]="fields"
|
|
103
|
-
[model]="model">
|
|
104
|
-
</formly-form>
|
|
105
|
-
</form>
|
|
106
|
-
</div>
|
|
107
|
-
|
|
108
|
-
<div class="flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2">
|
|
109
|
-
<div class="flex items-center gap-1.5">
|
|
110
|
-
<p-button
|
|
111
|
-
icon="pi pi-search"
|
|
112
|
-
[outlined]="true"
|
|
113
|
-
severity="secondary"
|
|
114
|
-
styleClass="!rounded-lg !py-1.5"
|
|
115
|
-
(onClick)="onSubmit()">
|
|
116
|
-
</p-button>
|
|
117
|
-
|
|
118
|
-
<p-button
|
|
119
|
-
icon="pi pi-refresh"
|
|
120
|
-
[outlined]="true"
|
|
121
|
-
severity="secondary"
|
|
122
|
-
styleClass="!rounded-lg !py-1.5"
|
|
123
|
-
(onClick)="Reset()">
|
|
124
|
-
</p-button>
|
|
125
|
-
</div>
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
94
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: TabbedSearchComponent, isStandalone: true, selector: "app-tabbed-search", inputs: { fields: "fields", model: "model", form: "form" }, outputs: { onSearch: "onSearch", onReset: "onReset", paginationChange: "paginationChange" }, ngImport: i0, template: `
|
|
95
|
+
<div class="bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4">
|
|
96
|
+
<div class="max-h-[220px] overflow-y-auto overflow-x-hidden pr-2
|
|
97
|
+
touch-pan-y overscroll-contain
|
|
98
|
+
scrollbar-thin scrollbar-thumb-slate-300">
|
|
99
|
+
<form [formGroup]="form">
|
|
100
|
+
<formly-form
|
|
101
|
+
[form]="form"
|
|
102
|
+
[fields]="fields"
|
|
103
|
+
[model]="model">
|
|
104
|
+
</formly-form>
|
|
105
|
+
</form>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<div class="flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2">
|
|
109
|
+
<div class="flex items-center gap-1.5">
|
|
110
|
+
<p-button
|
|
111
|
+
icon="pi pi-search"
|
|
112
|
+
[outlined]="true"
|
|
113
|
+
severity="secondary"
|
|
114
|
+
styleClass="!rounded-lg !py-1.5"
|
|
115
|
+
(onClick)="onSubmit()">
|
|
116
|
+
</p-button>
|
|
117
|
+
|
|
118
|
+
<p-button
|
|
119
|
+
icon="pi pi-refresh"
|
|
120
|
+
[outlined]="true"
|
|
121
|
+
severity="secondary"
|
|
122
|
+
styleClass="!rounded-lg !py-1.5"
|
|
123
|
+
(onClick)="Reset()">
|
|
124
|
+
</p-button>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
128
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.LegacyFormlyForm, selector: "formly-form" }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TranslateModule }] });
|
|
129
129
|
}
|
|
130
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabbedSearchComponent, decorators: [{
|
|
@@ -139,40 +139,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
139
139
|
ButtonModule,
|
|
140
140
|
TranslateModule
|
|
141
141
|
],
|
|
142
|
-
template: `
|
|
143
|
-
<div class="bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4">
|
|
144
|
-
<div class="max-h-[220px] overflow-y-auto overflow-x-hidden pr-2
|
|
145
|
-
touch-pan-y overscroll-contain
|
|
146
|
-
scrollbar-thin scrollbar-thumb-slate-300">
|
|
147
|
-
<form [formGroup]="form">
|
|
148
|
-
<formly-form
|
|
149
|
-
[form]="form"
|
|
150
|
-
[fields]="fields"
|
|
151
|
-
[model]="model">
|
|
152
|
-
</formly-form>
|
|
153
|
-
</form>
|
|
154
|
-
</div>
|
|
155
|
-
|
|
156
|
-
<div class="flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2">
|
|
157
|
-
<div class="flex items-center gap-1.5">
|
|
158
|
-
<p-button
|
|
159
|
-
icon="pi pi-search"
|
|
160
|
-
[outlined]="true"
|
|
161
|
-
severity="secondary"
|
|
162
|
-
styleClass="!rounded-lg !py-1.5"
|
|
163
|
-
(onClick)="onSubmit()">
|
|
164
|
-
</p-button>
|
|
165
|
-
|
|
166
|
-
<p-button
|
|
167
|
-
icon="pi pi-refresh"
|
|
168
|
-
[outlined]="true"
|
|
169
|
-
severity="secondary"
|
|
170
|
-
styleClass="!rounded-lg !py-1.5"
|
|
171
|
-
(onClick)="Reset()">
|
|
172
|
-
</p-button>
|
|
173
|
-
</div>
|
|
174
|
-
</div>
|
|
175
|
-
</div>
|
|
142
|
+
template: `
|
|
143
|
+
<div class="bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4">
|
|
144
|
+
<div class="max-h-[220px] overflow-y-auto overflow-x-hidden pr-2
|
|
145
|
+
touch-pan-y overscroll-contain
|
|
146
|
+
scrollbar-thin scrollbar-thumb-slate-300">
|
|
147
|
+
<form [formGroup]="form">
|
|
148
|
+
<formly-form
|
|
149
|
+
[form]="form"
|
|
150
|
+
[fields]="fields"
|
|
151
|
+
[model]="model">
|
|
152
|
+
</formly-form>
|
|
153
|
+
</form>
|
|
154
|
+
</div>
|
|
155
|
+
|
|
156
|
+
<div class="flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2">
|
|
157
|
+
<div class="flex items-center gap-1.5">
|
|
158
|
+
<p-button
|
|
159
|
+
icon="pi pi-search"
|
|
160
|
+
[outlined]="true"
|
|
161
|
+
severity="secondary"
|
|
162
|
+
styleClass="!rounded-lg !py-1.5"
|
|
163
|
+
(onClick)="onSubmit()">
|
|
164
|
+
</p-button>
|
|
165
|
+
|
|
166
|
+
<p-button
|
|
167
|
+
icon="pi pi-refresh"
|
|
168
|
+
[outlined]="true"
|
|
169
|
+
severity="secondary"
|
|
170
|
+
styleClass="!rounded-lg !py-1.5"
|
|
171
|
+
(onClick)="Reset()">
|
|
172
|
+
</p-button>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
176
|
`
|
|
177
177
|
}]
|
|
178
178
|
}], propDecorators: { fields: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.framework-ng.ui.core-generic-report-tabs.mjs","sources":["../../../../libs/ng.ui.core/generic-report-tabs/src/lib/generic-report-tabs.component.ts","../../../../libs/ng.ui.core/generic-report-tabs/src/es.framework-ng.ui.core-generic-report-tabs.ts"],"sourcesContent":["import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule, FormlyFieldConfig } from '@ngx-formly/core';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { QueryBuilderService } from '@es.framework/ng.ui.core/generic-search-advanced';\n\n@Component({\n selector: 'app-tabbed-search',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyModule,\n ButtonModule,\n TranslateModule\n ],\n template: `\n <div class=\"bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4\">\n <div class=\"max-h-[220px] overflow-y-auto overflow-x-hidden pr-2\n touch-pan-y overscroll-contain\n scrollbar-thin scrollbar-thumb-slate-300\">\n <form [formGroup]=\"form\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\">\n </formly-form>\n </form>\n </div>\n\n <div class=\"flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2\">\n <div class=\"flex items-center gap-1.5\">\n <p-button\n icon=\"pi pi-search\"\n [outlined]=\"true\"\n severity=\"secondary\"\n styleClass=\"!rounded-lg !py-1.5\"\n (onClick)=\"onSubmit()\">\n </p-button>\n\n <p-button\n icon=\"pi pi-refresh\"\n [outlined]=\"true\"\n severity=\"secondary\"\n styleClass=\"!rounded-lg !py-1.5\"\n (onClick)=\"Reset()\">\n </p-button>\n </div>\n </div>\n </div>\n `\n})\nexport class TabbedSearchComponent {\n @Input() fields: FormlyFieldConfig[] = [];\n @Input() model: any = {};\n @Input() form = new FormGroup({});\n @Output() onSearch = new EventEmitter<any>();\n @Output() onReset = new EventEmitter<void>();\n @Output() paginationChange = new EventEmitter<any>();\n private queryBuilder = inject(QueryBuilderService);\n\n\n\n onSubmit() {\n\n\n this.model.advancedFilters = this.generateAdvancedFilters(this.fields, this.model);\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.fields);\n // Generate query string using the unified method\n\n const queryString = this.queryBuilder.toODataQueryString(odataParams);\n if(this.model?.pagination && this.model?.pagination?.top){\n this.paginationChange.emit({\n top:this.model?.pagination?.top,\n });\n }\n this.onSearch.emit(\n {\n query:queryString,\n }\n );\n\n }\n\n Reset() {\n this.form.reset();\n this.model = {};\n this.onReset.emit();\n }\n\nprivate generateAdvancedFilters(fields: FormlyFieldConfig[], model: any) {\n const groups: any[] = [];\n\n // نتأكد أن المعالجة فقط داخل الـ tab-type\n fields\n .filter(f => f.type === 'tab-type')\n .forEach(tabField => {\n // tabField.fieldGroup هو مجموعة التبويبات\n tabField.fieldGroup?.forEach(tab => {\n // tab.fieldGroup هو مجموعة الحقول داخل كل تبويب\n function traverse(fields: FormlyFieldConfig[]) {\n fields.forEach(field => {\n if (field.fieldGroup) {\n traverse(field.fieldGroup);\n return;\n }\n\n const key = field.key as string;\n const value = model[key];\n const keydb = field.props?.['keydb'];\n\n // console.log('Processing field in tab-type:', key, 'value:', value, 'keydb:', keydb);\n\n if (keydb && value !== undefined && value !== null && value !== '') {\n groups.push({\n logicalOperator: 'and',\n groupLogicalOperator: 'and',\n conditions: [\n {\n field: keydb,\n operator: field.props?.['operator'] || 'eq',\n value: value instanceof Date ? value.toISOString().split('T')[0] : value\n }\n ]\n });\n return;\n }\n\n if (value === undefined || value === null || value === '') return;\n\n groups.push({\n logicalOperator: 'and',\n groupLogicalOperator: 'and',\n conditions: [\n {\n field: key,\n operator: field.props?.['operator'] || 'eq',\n value\n }\n ]\n });\n });\n }\n\n traverse(tab.fieldGroup || []);\n });\n });\n\n return groups;\n}\n\n\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-generic-report-tabs.mjs","sources":["../../../../libs/ng.ui.core/generic-report-tabs/src/lib/generic-report-tabs.component.ts","../../../../libs/ng.ui.core/generic-report-tabs/src/es.framework-ng.ui.core-generic-report-tabs.ts"],"sourcesContent":["import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyModule, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { QueryBuilderService } from '@es.framework/ng.ui.core/generic-search-advanced';\r\n\r\n@Component({\r\n selector: 'app-tabbed-search',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n ButtonModule,\r\n TranslateModule\r\n ],\r\n template: `\r\n <div class=\"bg-white dark:bg-slate-900 p-3 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm mb-4\">\r\n <div class=\"max-h-[220px] overflow-y-auto overflow-x-hidden pr-2\r\n touch-pan-y overscroll-contain\r\n scrollbar-thin scrollbar-thumb-slate-300\">\r\n <form [formGroup]=\"form\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"fields\"\r\n [model]=\"model\">\r\n </formly-form>\r\n </form>\r\n </div>\r\n\r\n <div class=\"flex items-center justify-between mt-2 pt-2 border-t border-slate-100 dark:border-slate-800 gap-2\">\r\n <div class=\"flex items-center gap-1.5\">\r\n <p-button\r\n icon=\"pi pi-search\"\r\n [outlined]=\"true\"\r\n severity=\"secondary\"\r\n styleClass=\"!rounded-lg !py-1.5\"\r\n (onClick)=\"onSubmit()\">\r\n </p-button>\r\n\r\n <p-button\r\n icon=\"pi pi-refresh\"\r\n [outlined]=\"true\"\r\n severity=\"secondary\"\r\n styleClass=\"!rounded-lg !py-1.5\"\r\n (onClick)=\"Reset()\">\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class TabbedSearchComponent {\r\n @Input() fields: FormlyFieldConfig[] = [];\r\n @Input() model: any = {};\r\n @Input() form = new FormGroup({});\r\n @Output() onSearch = new EventEmitter<any>();\r\n @Output() onReset = new EventEmitter<void>();\r\n @Output() paginationChange = new EventEmitter<any>();\r\n private queryBuilder = inject(QueryBuilderService);\r\n\r\n\r\n\r\n onSubmit() {\r\n\r\n\r\n this.model.advancedFilters = this.generateAdvancedFilters(this.fields, this.model);\r\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.fields);\r\n // Generate query string using the unified method\r\n\r\n const queryString = this.queryBuilder.toODataQueryString(odataParams);\r\n if(this.model?.pagination && this.model?.pagination?.top){\r\n this.paginationChange.emit({\r\n top:this.model?.pagination?.top,\r\n });\r\n }\r\n this.onSearch.emit(\r\n {\r\n query:queryString,\r\n }\r\n );\r\n\r\n }\r\n\r\n Reset() {\r\n this.form.reset();\r\n this.model = {};\r\n this.onReset.emit();\r\n }\r\n\r\nprivate generateAdvancedFilters(fields: FormlyFieldConfig[], model: any) {\r\n const groups: any[] = [];\r\n\r\n // نتأكد أن المعالجة فقط داخل الـ tab-type\r\n fields\r\n .filter(f => f.type === 'tab-type')\r\n .forEach(tabField => {\r\n // tabField.fieldGroup هو مجموعة التبويبات\r\n tabField.fieldGroup?.forEach(tab => {\r\n // tab.fieldGroup هو مجموعة الحقول داخل كل تبويب\r\n function traverse(fields: FormlyFieldConfig[]) {\r\n fields.forEach(field => {\r\n if (field.fieldGroup) {\r\n traverse(field.fieldGroup);\r\n return;\r\n }\r\n\r\n const key = field.key as string;\r\n const value = model[key];\r\n const keydb = field.props?.['keydb'];\r\n\r\n // console.log('Processing field in tab-type:', key, 'value:', value, 'keydb:', keydb);\r\n\r\n if (keydb && value !== undefined && value !== null && value !== '') {\r\n groups.push({\r\n logicalOperator: 'and',\r\n groupLogicalOperator: 'and',\r\n conditions: [\r\n {\r\n field: keydb,\r\n operator: field.props?.['operator'] || 'eq',\r\n value: value instanceof Date ? value.toISOString().split('T')[0] : value\r\n }\r\n ]\r\n });\r\n return;\r\n }\r\n\r\n if (value === undefined || value === null || value === '') return;\r\n\r\n groups.push({\r\n logicalOperator: 'and',\r\n groupLogicalOperator: 'and',\r\n conditions: [\r\n {\r\n field: key,\r\n operator: field.props?.['operator'] || 'eq',\r\n value\r\n }\r\n ]\r\n });\r\n });\r\n }\r\n\r\n traverse(tab.fieldGroup || []);\r\n });\r\n });\r\n\r\n return groups;\r\n}\r\n\r\n\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|