@es.framework/ng.ui.core 2.0.58
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 -0
- package/attachments/README.md +3 -0
- package/base-crud/README.md +3 -0
- package/breadcrumb/README.md +3 -0
- package/checkbox/README.md +3 -0
- package/collapsible/README.md +3 -0
- package/color-picker/README.md +3 -0
- package/column-settings-popover/README.md +3 -0
- package/custom-switch/README.md +3 -0
- package/datepicker/README.md +3 -0
- package/deactivation-reason/README.md +3 -0
- package/excel-import/README.md +3 -0
- package/fesm2022/es.framework-ng.ui.core-attachments.mjs +217 -0
- package/fesm2022/es.framework-ng.ui.core-attachments.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-base-crud.mjs +370 -0
- package/fesm2022/es.framework-ng.ui.core-base-crud.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs +145 -0
- package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-checkbox.mjs +131 -0
- package/fesm2022/es.framework-ng.ui.core-checkbox.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-collapsible.mjs +90 -0
- package/fesm2022/es.framework-ng.ui.core-collapsible.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-color-picker.mjs +87 -0
- package/fesm2022/es.framework-ng.ui.core-color-picker.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs +183 -0
- package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-custom-switch.mjs +119 -0
- package/fesm2022/es.framework-ng.ui.core-custom-switch.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-datepicker.mjs +519 -0
- package/fesm2022/es.framework-ng.ui.core-datepicker.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs +144 -0
- package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-excel-import.mjs +566 -0
- package/fesm2022/es.framework-ng.ui.core-excel-import.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs +386 -0
- package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-form-button.mjs +62 -0
- package/fesm2022/es.framework-ng.ui.core-form-button.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-form-field.mjs +155 -0
- package/fesm2022/es.framework-ng.ui.core-form-field.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-form-template.mjs +37 -0
- package/fesm2022/es.framework-ng.ui.core-form-template.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-image.mjs +132 -0
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-image.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs +89 -0
- package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs +195 -0
- package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-button.mjs +73 -0
- package/fesm2022/es.framework-ng.ui.core-formly-button.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-presets.mjs +201 -0
- package/fesm2022/es.framework-ng.ui.core-formly-presets.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs +542 -0
- package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs +62 -0
- package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs +422 -0
- package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-ui.mjs +48 -0
- package/fesm2022/es.framework-ng.ui.core-formly-ui.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs +85 -0
- package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-assets.mjs +22 -0
- package/fesm2022/es.framework-ng.ui.core-generic-assets.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs +173 -0
- package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-button.mjs +150 -0
- package/fesm2022/es.framework-ng.ui.core-generic-button.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-card.mjs +218 -0
- package/fesm2022/es.framework-ng.ui.core-generic-card.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs +929 -0
- package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs +321 -0
- package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs +35 -0
- package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs +63 -0
- package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs +34 -0
- package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs +196 -0
- package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-report.mjs +556 -0
- package/fesm2022/es.framework-ng.ui.core-generic-report.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs +2995 -0
- package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-search.mjs +103 -0
- package/fesm2022/es.framework-ng.ui.core-generic-search.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-selector.mjs +684 -0
- package/fesm2022/es.framework-ng.ui.core-generic-selector.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-table.mjs +388 -0
- package/fesm2022/es.framework-ng.ui.core-generic-table.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-generic-view.mjs +465 -0
- package/fesm2022/es.framework-ng.ui.core-generic-view.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs +31 -0
- package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs +205 -0
- package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-input-switch.mjs +102 -0
- package/fesm2022/es.framework-ng.ui.core-input-switch.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs +67 -0
- package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-input.mjs +250 -0
- package/fesm2022/es.framework-ng.ui.core-input.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-label-type.mjs +184 -0
- package/fesm2022/es.framework-ng.ui.core-label-type.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs +66 -0
- package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs +307 -0
- package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-query-type.mjs +162 -0
- package/fesm2022/es.framework-ng.ui.core-query-type.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-radio.mjs +120 -0
- package/fesm2022/es.framework-ng.ui.core-radio.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-repeat.mjs +290 -0
- package/fesm2022/es.framework-ng.ui.core-repeat.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-select.mjs +179 -0
- package/fesm2022/es.framework-ng.ui.core-select.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs +52 -0
- package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs +53 -0
- package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-tabs.mjs +57 -0
- package/fesm2022/es.framework-ng.ui.core-tabs.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-tag-type.mjs +209 -0
- package/fesm2022/es.framework-ng.ui.core-tag-type.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-text-editor.mjs +58 -0
- package/fesm2022/es.framework-ng.ui.core-text-editor.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-textarea.mjs +93 -0
- package/fesm2022/es.framework-ng.ui.core-textarea.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core-wrappers.mjs +245 -0
- package/fesm2022/es.framework-ng.ui.core-wrappers.mjs.map +1 -0
- package/fesm2022/es.framework-ng.ui.core.mjs +20 -0
- package/fesm2022/es.framework-ng.ui.core.mjs.map +1 -0
- package/filter-templates/README.md +3 -0
- package/form-button/README.md +3 -0
- package/form-field/README.md +3 -0
- package/form-template/README.md +3 -0
- package/formly-avatar-image/README.md +3 -0
- package/formly-avatar-label/README.md +3 -0
- package/formly-button/README.md +3 -0
- package/formly-button-selector/README.md +3 -0
- package/formly-presets/README.md +3 -0
- package/formly-prime-icon-picker/README.md +3 -0
- package/formly-split-button/README.md +3 -0
- package/formly-ui/README.md +3 -0
- package/formly-ui-all/README.md +3 -0
- package/formly-username-with-domain/README.md +3 -0
- package/generic-assets/README.md +3 -0
- package/generic-autocomplete/README.md +3 -0
- package/generic-button/README.md +3 -0
- package/generic-card/README.md +3 -0
- package/generic-crud-table/README.md +3 -0
- package/generic-dialog/README.md +3 -0
- package/generic-errormessage/README.md +3 -0
- package/generic-formly-fields/README.md +3 -0
- package/generic-loadingspinner/README.md +3 -0
- package/generic-report/README.md +3 -0
- package/generic-report-tabs/README.md +0 -0
- package/generic-search/README.md +3 -0
- package/generic-search-advanced/README.md +3 -0
- package/generic-selector/README.md +3 -0
- package/generic-table/README.md +3 -0
- package/generic-view/README.md +3 -0
- package/header-wrapper/README.md +3 -0
- package/icon-picker/README.md +3 -0
- package/input/README.md +3 -0
- package/input-switch/README.md +3 -0
- package/input-with-icon/README.md +3 -0
- package/label-type/README.md +3 -0
- package/loading-skeletons/README.md +3 -0
- package/odata-query-builder/README.md +3 -0
- package/package.json +264 -0
- package/query-type/README.md +3 -0
- package/radio/README.md +3 -0
- package/repeat/README.md +3 -0
- package/select/README.md +3 -0
- package/sidebar-cards/README.md +3 -0
- package/sidebar-toggles/README.md +3 -0
- package/styles.css +2 -0
- package/tabs/README.md +3 -0
- package/tag-type/README.md +3 -0
- package/text-editor/README.md +3 -0
- package/textarea/README.md +3 -0
- package/types/es.framework-ng.ui.core-attachments.d.ts +38 -0
- package/types/es.framework-ng.ui.core-base-crud.d.ts +74 -0
- package/types/es.framework-ng.ui.core-breadcrumb.d.ts +17 -0
- package/types/es.framework-ng.ui.core-checkbox.d.ts +33 -0
- package/types/es.framework-ng.ui.core-collapsible.d.ts +18 -0
- package/types/es.framework-ng.ui.core-color-picker.d.ts +16 -0
- package/types/es.framework-ng.ui.core-column-settings-popover.d.ts +46 -0
- package/types/es.framework-ng.ui.core-custom-switch.d.ts +19 -0
- package/types/es.framework-ng.ui.core-datepicker.d.ts +23 -0
- package/types/es.framework-ng.ui.core-deactivation-reason.d.ts +32 -0
- package/types/es.framework-ng.ui.core-excel-import.d.ts +69 -0
- package/types/es.framework-ng.ui.core-filter-templates.d.ts +57 -0
- package/types/es.framework-ng.ui.core-form-button.d.ts +17 -0
- package/types/es.framework-ng.ui.core-form-field.d.ts +30 -0
- package/types/es.framework-ng.ui.core-form-template.d.ts +16 -0
- package/types/es.framework-ng.ui.core-formly-avatar-image.d.ts +18 -0
- package/types/es.framework-ng.ui.core-formly-avatar-label.d.ts +36 -0
- package/types/es.framework-ng.ui.core-formly-button-selector.d.ts +35 -0
- package/types/es.framework-ng.ui.core-formly-button.d.ts +20 -0
- package/types/es.framework-ng.ui.core-formly-presets.d.ts +37 -0
- package/types/es.framework-ng.ui.core-formly-prime-icon-picker.d.ts +45 -0
- package/types/es.framework-ng.ui.core-formly-split-button.d.ts +23 -0
- package/types/es.framework-ng.ui.core-formly-ui-all.d.ts +40 -0
- package/types/es.framework-ng.ui.core-formly-ui.d.ts +13 -0
- package/types/es.framework-ng.ui.core-formly-username-with-domain.d.ts +19 -0
- package/types/es.framework-ng.ui.core-generic-assets.d.ts +10 -0
- package/types/es.framework-ng.ui.core-generic-autocomplete.d.ts +41 -0
- package/types/es.framework-ng.ui.core-generic-button.d.ts +39 -0
- package/types/es.framework-ng.ui.core-generic-card.d.ts +93 -0
- package/types/es.framework-ng.ui.core-generic-crud-table.d.ts +293 -0
- package/types/es.framework-ng.ui.core-generic-dialog.d.ts +93 -0
- package/types/es.framework-ng.ui.core-generic-errormessage.d.ts +17 -0
- package/types/es.framework-ng.ui.core-generic-formly-fields.d.ts +26 -0
- package/types/es.framework-ng.ui.core-generic-loadingspinner.d.ts +16 -0
- package/types/es.framework-ng.ui.core-generic-report-tabs.d.ts +21 -0
- package/types/es.framework-ng.ui.core-generic-report.d.ts +121 -0
- package/types/es.framework-ng.ui.core-generic-search-advanced.d.ts +305 -0
- package/types/es.framework-ng.ui.core-generic-search.d.ts +36 -0
- package/types/es.framework-ng.ui.core-generic-selector.d.ts +99 -0
- package/types/es.framework-ng.ui.core-generic-table.d.ts +84 -0
- package/types/es.framework-ng.ui.core-generic-view.d.ts +97 -0
- package/types/es.framework-ng.ui.core-header-wrapper.d.ts +15 -0
- package/types/es.framework-ng.ui.core-icon-picker.d.ts +30 -0
- package/types/es.framework-ng.ui.core-input-switch.d.ts +16 -0
- package/types/es.framework-ng.ui.core-input-with-icon.d.ts +17 -0
- package/types/es.framework-ng.ui.core-input.d.ts +47 -0
- package/types/es.framework-ng.ui.core-label-type.d.ts +38 -0
- package/types/es.framework-ng.ui.core-loading-skeletons.d.ts +17 -0
- package/types/es.framework-ng.ui.core-odata-query-builder.d.ts +87 -0
- package/types/es.framework-ng.ui.core-query-type.d.ts +37 -0
- package/types/es.framework-ng.ui.core-radio.d.ts +38 -0
- package/types/es.framework-ng.ui.core-repeat.d.ts +31 -0
- package/types/es.framework-ng.ui.core-select.d.ts +42 -0
- package/types/es.framework-ng.ui.core-sidebar-cards.d.ts +25 -0
- package/types/es.framework-ng.ui.core-sidebar-toggles.d.ts +25 -0
- package/types/es.framework-ng.ui.core-tabs.d.ts +17 -0
- package/types/es.framework-ng.ui.core-tag-type.d.ts +34 -0
- package/types/es.framework-ng.ui.core-text-editor.d.ts +16 -0
- package/types/es.framework-ng.ui.core-textarea.d.ts +36 -0
- package/types/es.framework-ng.ui.core-wrappers.d.ts +36 -0
- package/types/es.framework-ng.ui.core.d.ts +8 -0
- package/wrappers/README.md +3 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { NgModule, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import * as i3 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i1 from '@angular/forms';
|
|
6
|
+
import { UntypedFormControl, ReactiveFormsModule } from '@angular/forms';
|
|
7
|
+
import * as i1$1 from '@ngx-formly/core';
|
|
8
|
+
import { FieldType, FormlyModule } from '@ngx-formly/core';
|
|
9
|
+
import * as i2 from 'primeng/radiobutton';
|
|
10
|
+
import { RadioButtonModule } from 'primeng/radiobutton';
|
|
11
|
+
import * as i4 from '@ngx-formly/core/select';
|
|
12
|
+
import { FormlySelectModule } from '@ngx-formly/core/select';
|
|
13
|
+
import { FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';
|
|
14
|
+
|
|
15
|
+
class RadioModule {
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: RadioModule, imports: [CommonModule] });
|
|
18
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RadioModule, imports: [CommonModule] });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RadioModule, decorators: [{
|
|
21
|
+
type: NgModule,
|
|
22
|
+
args: [{
|
|
23
|
+
imports: [CommonModule],
|
|
24
|
+
}]
|
|
25
|
+
}] });
|
|
26
|
+
|
|
27
|
+
class FormlyFieldRadio extends FieldType {
|
|
28
|
+
get disabledControl() {
|
|
29
|
+
return new UntypedFormControl({ value: this.formControl.value, disabled: true });
|
|
30
|
+
}
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyFieldRadio, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: FormlyFieldRadio, isStandalone: false, selector: "formly-field-primeng-radio", usesInheritance: true, ngImport: i0, template: `
|
|
33
|
+
@for (option of props.options | formlySelectOptions: field | async; track option; let index = $index) {
|
|
34
|
+
<div
|
|
35
|
+
class="p-field-radiobutton"
|
|
36
|
+
>
|
|
37
|
+
<p-radioButton
|
|
38
|
+
[name]="field.name || id"
|
|
39
|
+
[formControl]="option.disabled ? disabledControl : formControl"
|
|
40
|
+
[value]="option.value"
|
|
41
|
+
[inputId]="id + index"
|
|
42
|
+
>
|
|
43
|
+
</p-radioButton>
|
|
44
|
+
<label [for]="id + index" class="ml-2">{{ option.label }}</label>
|
|
45
|
+
</div>
|
|
46
|
+
}
|
|
47
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.RadioButton, selector: "p-radioButton, p-radiobutton, p-radio-button", inputs: ["value", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "styleClass", "autofocus", "binary", "variant", "size"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.LegacyFormlySelectOptionsPipe, name: "formlySelectOptions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyFieldRadio, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{
|
|
52
|
+
selector: 'formly-field-primeng-radio',
|
|
53
|
+
template: `
|
|
54
|
+
@for (option of props.options | formlySelectOptions: field | async; track option; let index = $index) {
|
|
55
|
+
<div
|
|
56
|
+
class="p-field-radiobutton"
|
|
57
|
+
>
|
|
58
|
+
<p-radioButton
|
|
59
|
+
[name]="field.name || id"
|
|
60
|
+
[formControl]="option.disabled ? disabledControl : formControl"
|
|
61
|
+
[value]="option.value"
|
|
62
|
+
[inputId]="id + index"
|
|
63
|
+
>
|
|
64
|
+
</p-radioButton>
|
|
65
|
+
<label [for]="id + index" class="ml-2">{{ option.label }}</label>
|
|
66
|
+
</div>
|
|
67
|
+
}
|
|
68
|
+
`,
|
|
69
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
70
|
+
standalone: false
|
|
71
|
+
}]
|
|
72
|
+
}] });
|
|
73
|
+
|
|
74
|
+
function withFormlyFieldRadio() {
|
|
75
|
+
return {
|
|
76
|
+
types: [
|
|
77
|
+
{
|
|
78
|
+
name: 'radio',
|
|
79
|
+
component: FormlyFieldRadio,
|
|
80
|
+
wrappers: ['form-field'],
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
class FormlyRadioModule {
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
88
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: FormlyRadioModule, declarations: [FormlyFieldRadio], imports: [CommonModule,
|
|
89
|
+
ReactiveFormsModule,
|
|
90
|
+
RadioButtonModule,
|
|
91
|
+
FormlyFormFieldModule,
|
|
92
|
+
FormlySelectModule, i1$1.FormlyModule] });
|
|
93
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyRadioModule, imports: [CommonModule,
|
|
94
|
+
ReactiveFormsModule,
|
|
95
|
+
RadioButtonModule,
|
|
96
|
+
FormlyFormFieldModule,
|
|
97
|
+
FormlySelectModule,
|
|
98
|
+
FormlyModule.forChild(withFormlyFieldRadio())] });
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyRadioModule, decorators: [{
|
|
101
|
+
type: NgModule,
|
|
102
|
+
args: [{
|
|
103
|
+
declarations: [FormlyFieldRadio],
|
|
104
|
+
imports: [
|
|
105
|
+
CommonModule,
|
|
106
|
+
ReactiveFormsModule,
|
|
107
|
+
RadioButtonModule,
|
|
108
|
+
FormlyFormFieldModule,
|
|
109
|
+
FormlySelectModule,
|
|
110
|
+
FormlyModule.forChild(withFormlyFieldRadio()),
|
|
111
|
+
],
|
|
112
|
+
}]
|
|
113
|
+
}] });
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Generated bundle index. Do not edit.
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
export { FormlyFieldRadio, FormlyRadioModule, RadioModule, withFormlyFieldRadio };
|
|
120
|
+
//# sourceMappingURL=es.framework-ng.ui.core-radio.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-radio.mjs","sources":["../../../../libs/ng.ui.core/radio/src/lib/radio-module.ts","../../../../libs/ng.ui.core/radio/src/lib/radio.type.ts","../../../../libs/ng.ui.core/radio/src/lib/radio.config.ts","../../../../libs/ng.ui.core/radio/src/lib/radio.module.ts","../../../../libs/ng.ui.core/radio/src/es.framework-ng.ui.core-radio.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class RadioModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { FieldType, FieldTypeConfig, FormlyFieldConfig } from '@ngx-formly/core';\n\nimport { FormlyFieldProps } from '@es.framework/ng.ui.core/form-field';\n\ntype RadioProps = FormlyFieldProps;\n\nexport interface FormlyRadioFieldConfig extends FormlyFieldConfig<RadioProps> {\n type: 'radio' | Type<FormlyFieldRadio>;\n}\n\n@Component({\n selector: 'formly-field-primeng-radio',\n template: `\n @for (option of props.options | formlySelectOptions: field | async; track option; let index = $index) {\n <div\n class=\"p-field-radiobutton\"\n >\n <p-radioButton\n [name]=\"field.name || id\"\n [formControl]=\"option.disabled ? disabledControl : formControl\"\n [value]=\"option.value\"\n [inputId]=\"id + index\"\n >\n </p-radioButton>\n <label [for]=\"id + index\" class=\"ml-2\">{{ option.label }}</label>\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:false\n})\nexport class FormlyFieldRadio extends FieldType<FieldTypeConfig<RadioProps>> {\n get disabledControl() {\n return new UntypedFormControl({ value: this.formControl.value, disabled: true });\n }\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldRadio } from './radio.type';\n\nexport function withFormlyFieldRadio(): ConfigOption {\n return {\n types: [\n {\n name: 'radio',\n component: FormlyFieldRadio,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlySelectModule } from '@ngx-formly/core/select';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { FormlyFieldRadio } from './radio.type';\nimport { withFormlyFieldRadio } from './radio.config';\nimport { FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\n\n@NgModule({\n declarations: [FormlyFieldRadio],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n RadioButtonModule,\n\n FormlyFormFieldModule,\n FormlySelectModule,\n FormlyModule.forChild(withFormlyFieldRadio()),\n ],\n})\nexport class FormlyRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;MAMa,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAFZ,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,WAAW,YAFZ,YAAY,CAAA,EAAA,CAAA;;2FAEX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;AC4BK,MAAO,gBAAiB,SAAQ,SAAsC,CAAA;AAC1E,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClF;uGAHW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBjB;;;;;;;;;;;;;;;AAeP,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeP,IAAA,CAAA;oBACH,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAC;AACZ,iBAAA;;;SC7Be,oBAAoB,GAAA;IAClC,OAAO;AACL,QAAA,KAAK,EAAE;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,SAAS,EAAE,gBAAgB;gBAC3B,QAAQ,EAAE,CAAC,YAAY,CAAC;AACzB,aAAA;AACF,SAAA;KACF;AACH;;MCSa,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAjB,iBAAiB,EAAA,YAAA,EAAA,CAXb,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAE7B,YAAY;YACZ,mBAAmB;YACnB,iBAAiB;YAEjB,qBAAqB;YACrB,kBAAkB,EAAAA,IAAA,CAAA,YAAA,CAAA,EAAA,CAAA;AAIT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAT1B,YAAY;YACZ,mBAAmB;YACnB,iBAAiB;YAEjB,qBAAqB;YACrB,kBAAkB;AAClB,YAAA,YAAY,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAA,EAAA,CAAA;;2FAGpC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;AAChC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,iBAAiB;wBAEjB,qBAAqB;wBACrB,kBAAkB;AAClB,wBAAA,YAAY,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;AAC9C,qBAAA;AACF,iBAAA;;;ACrBD;;AAEG;;;;"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { NgModule, Component } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { TranslatePipe } from '@es.framework/ng.core/pipes';
|
|
5
|
+
import { FieldArrayType, FormlyField } from '@ngx-formly/core';
|
|
6
|
+
|
|
7
|
+
class RepeatModule {
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RepeatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: RepeatModule, imports: [CommonModule] });
|
|
10
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RepeatModule, imports: [CommonModule] });
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RepeatModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
imports: [CommonModule],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
|
|
19
|
+
class RepeatTypeComponent extends FieldArrayType {
|
|
20
|
+
cdr;
|
|
21
|
+
// Return columns of the first row (for table headers)
|
|
22
|
+
getFirstRowColumns() {
|
|
23
|
+
return this.field.fieldGroup?.[0]?.fieldGroup ?? [];
|
|
24
|
+
}
|
|
25
|
+
// ✅ NEW VERSION OF YOUR FUNCTION
|
|
26
|
+
// getFirstRowColumns(): FormlyFieldConfig[] {
|
|
27
|
+
// const group = this.field.fieldGroup?.[0]?.fieldGroup ?? [];
|
|
28
|
+
// return group.map(f => ({
|
|
29
|
+
// ...f,
|
|
30
|
+
// type: 'label-type', // 🔥 force label-type here
|
|
31
|
+
// readonly: true,
|
|
32
|
+
// disabled: true,
|
|
33
|
+
// }));
|
|
34
|
+
// }
|
|
35
|
+
constructor(cdr) {
|
|
36
|
+
super();
|
|
37
|
+
this.cdr = cdr;
|
|
38
|
+
}
|
|
39
|
+
ngOnInit() {
|
|
40
|
+
// Subscribe to each FormArray changes
|
|
41
|
+
// if (this.formControl instanceof FormArray) {
|
|
42
|
+
this.field.formControl.valueChanges.subscribe(() => {
|
|
43
|
+
// Force Angular to detect changes
|
|
44
|
+
this.field.fieldGroup = [...this.field.fieldGroup ?? []];
|
|
45
|
+
this.cdr.detectChanges();
|
|
46
|
+
});
|
|
47
|
+
// }
|
|
48
|
+
}
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RepeatTypeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: RepeatTypeComponent, isStandalone: true, selector: "formly-repeat-section", usesInheritance: true, ngImport: i0, template: `
|
|
51
|
+
<div class="overflow-auto bg-gray-100 border border-gray-300">
|
|
52
|
+
@if ((field.fieldGroup ?? []).length > 0) {
|
|
53
|
+
<table class="table-auto w-full border border-gray-300">
|
|
54
|
+
<thead>
|
|
55
|
+
<tr class="bg-gray-100 text-gray-700 text-sm">
|
|
56
|
+
<th class="w-8"></th>
|
|
57
|
+
@for (col of getFirstRowColumns(); track col) {
|
|
58
|
+
<th class="text-center border">@if (!col.hide) {<span>{{ (col.props?.label ?? '') | translate }}</span>}</th>
|
|
59
|
+
<!-- <th class="text-center border"><formly-field [field]="col"></formly-field></th> -->
|
|
60
|
+
}
|
|
61
|
+
<th class="w-10"></th>
|
|
62
|
+
</tr>
|
|
63
|
+
</thead>
|
|
64
|
+
<tbody>
|
|
65
|
+
@for (row of field.fieldGroup; track row; let rowIndex = $index) {
|
|
66
|
+
<tr class="border-t">
|
|
67
|
+
<td class="bg-[#fffbea] text-center text-gray-400 px-2"><i class="pi pi-bars"></i></td>
|
|
68
|
+
@for (col of row.fieldGroup; track col) {
|
|
69
|
+
<td class="bg-[#fffbea]">
|
|
70
|
+
<formly-field [field]="col"></formly-field>
|
|
71
|
+
</td>
|
|
72
|
+
}
|
|
73
|
+
<td class="text-center px-2 bg-[#fffbea]">
|
|
74
|
+
@if ((rowIndex !== 0 || field.props?.['canDeleteFirstRow']) && !(field.props?.['delete']?.hidden ?? false)) {
|
|
75
|
+
<button type="button" (click)="remove(rowIndex)" class="text-red-600 hover:text-red-800">
|
|
76
|
+
<i class="pi pi-trash"></i>
|
|
77
|
+
</button>
|
|
78
|
+
}
|
|
79
|
+
</td>
|
|
80
|
+
</tr>
|
|
81
|
+
}
|
|
82
|
+
</tbody>
|
|
83
|
+
</table>
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@if (!(field.props?.['add']?.hidden ?? false)) {
|
|
87
|
+
<div class="flex justify-end">
|
|
88
|
+
<button
|
|
89
|
+
type="button"
|
|
90
|
+
class="inline-flex items-center gap-1 px-4 py-2 bg-primary-600 text-white text-sm font-medium hover:bg-primary-500 transition-colors duration-200 shadow-sm"
|
|
91
|
+
(click)="add()"
|
|
92
|
+
>
|
|
93
|
+
<span class="text-lg">+</span>
|
|
94
|
+
</button>
|
|
95
|
+
</div>
|
|
96
|
+
}
|
|
97
|
+
</div>
|
|
98
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RepeatTypeComponent, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{
|
|
103
|
+
selector: 'formly-repeat-section',
|
|
104
|
+
standalone: true,
|
|
105
|
+
imports: [FormlyField, TranslatePipe],
|
|
106
|
+
template: `
|
|
107
|
+
<div class="overflow-auto bg-gray-100 border border-gray-300">
|
|
108
|
+
@if ((field.fieldGroup ?? []).length > 0) {
|
|
109
|
+
<table class="table-auto w-full border border-gray-300">
|
|
110
|
+
<thead>
|
|
111
|
+
<tr class="bg-gray-100 text-gray-700 text-sm">
|
|
112
|
+
<th class="w-8"></th>
|
|
113
|
+
@for (col of getFirstRowColumns(); track col) {
|
|
114
|
+
<th class="text-center border">@if (!col.hide) {<span>{{ (col.props?.label ?? '') | translate }}</span>}</th>
|
|
115
|
+
<!-- <th class="text-center border"><formly-field [field]="col"></formly-field></th> -->
|
|
116
|
+
}
|
|
117
|
+
<th class="w-10"></th>
|
|
118
|
+
</tr>
|
|
119
|
+
</thead>
|
|
120
|
+
<tbody>
|
|
121
|
+
@for (row of field.fieldGroup; track row; let rowIndex = $index) {
|
|
122
|
+
<tr class="border-t">
|
|
123
|
+
<td class="bg-[#fffbea] text-center text-gray-400 px-2"><i class="pi pi-bars"></i></td>
|
|
124
|
+
@for (col of row.fieldGroup; track col) {
|
|
125
|
+
<td class="bg-[#fffbea]">
|
|
126
|
+
<formly-field [field]="col"></formly-field>
|
|
127
|
+
</td>
|
|
128
|
+
}
|
|
129
|
+
<td class="text-center px-2 bg-[#fffbea]">
|
|
130
|
+
@if ((rowIndex !== 0 || field.props?.['canDeleteFirstRow']) && !(field.props?.['delete']?.hidden ?? false)) {
|
|
131
|
+
<button type="button" (click)="remove(rowIndex)" class="text-red-600 hover:text-red-800">
|
|
132
|
+
<i class="pi pi-trash"></i>
|
|
133
|
+
</button>
|
|
134
|
+
}
|
|
135
|
+
</td>
|
|
136
|
+
</tr>
|
|
137
|
+
}
|
|
138
|
+
</tbody>
|
|
139
|
+
</table>
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@if (!(field.props?.['add']?.hidden ?? false)) {
|
|
143
|
+
<div class="flex justify-end">
|
|
144
|
+
<button
|
|
145
|
+
type="button"
|
|
146
|
+
class="inline-flex items-center gap-1 px-4 py-2 bg-primary-600 text-white text-sm font-medium hover:bg-primary-500 transition-colors duration-200 shadow-sm"
|
|
147
|
+
(click)="add()"
|
|
148
|
+
>
|
|
149
|
+
<span class="text-lg">+</span>
|
|
150
|
+
</button>
|
|
151
|
+
</div>
|
|
152
|
+
}
|
|
153
|
+
</div>
|
|
154
|
+
`,
|
|
155
|
+
}]
|
|
156
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
157
|
+
|
|
158
|
+
class RepeatTableViewType extends FieldArrayType {
|
|
159
|
+
get columns() {
|
|
160
|
+
const group = this.field?.fieldArray?.fieldGroup || [];
|
|
161
|
+
return group.map((f) => ({
|
|
162
|
+
key: f.key,
|
|
163
|
+
label: f.props?.label || f.key
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
get rows() {
|
|
167
|
+
return this.model || [];
|
|
168
|
+
}
|
|
169
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RepeatTableViewType, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
170
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: RepeatTableViewType, isStandalone: true, selector: "formly-repeat-table-view", usesInheritance: true, ngImport: i0, template: `
|
|
171
|
+
<div class="mb-0">
|
|
172
|
+
|
|
173
|
+
<!-- <label class="block text-lg font-semibold mb-3">
|
|
174
|
+
{{ field.props?.label }}
|
|
175
|
+
</label> -->
|
|
176
|
+
|
|
177
|
+
<div class="overflow-x-auto rounded-xl border">
|
|
178
|
+
<table class="min-w-full bg-white border-collapse">
|
|
179
|
+
|
|
180
|
+
<thead class="bg-gray-100">
|
|
181
|
+
<tr>
|
|
182
|
+
<!-- text-left -->
|
|
183
|
+
@for (col of columns; track col) {
|
|
184
|
+
<th
|
|
185
|
+
class="px-4 py-3 text-right font-medium border-b"
|
|
186
|
+
>
|
|
187
|
+
{{ col.label | translate }}
|
|
188
|
+
</th>
|
|
189
|
+
}
|
|
190
|
+
</tr>
|
|
191
|
+
</thead>
|
|
192
|
+
|
|
193
|
+
<tbody>
|
|
194
|
+
@for (row of rows; track row; let i = $index) {
|
|
195
|
+
<tr
|
|
196
|
+
class="border-b hover:bg-gray-50">
|
|
197
|
+
@for (col of columns; track col) {
|
|
198
|
+
<td
|
|
199
|
+
class="px-4 py-2">
|
|
200
|
+
{{ row[col.key] }}
|
|
201
|
+
</td>
|
|
202
|
+
}
|
|
203
|
+
</tr>
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
@if (!rows || rows.length === 0) {
|
|
207
|
+
<tr>
|
|
208
|
+
<td [attr.colspan]="columns.length"
|
|
209
|
+
class="text-center py-6 text-gray-400">
|
|
210
|
+
No data
|
|
211
|
+
</td>
|
|
212
|
+
</tr>
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
</tbody>
|
|
216
|
+
|
|
217
|
+
</table>
|
|
218
|
+
</div>
|
|
219
|
+
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
`, isInline: true, dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
223
|
+
}
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RepeatTableViewType, decorators: [{
|
|
225
|
+
type: Component,
|
|
226
|
+
args: [{
|
|
227
|
+
selector: 'formly-repeat-table-view',
|
|
228
|
+
template: `
|
|
229
|
+
<div class="mb-0">
|
|
230
|
+
|
|
231
|
+
<!-- <label class="block text-lg font-semibold mb-3">
|
|
232
|
+
{{ field.props?.label }}
|
|
233
|
+
</label> -->
|
|
234
|
+
|
|
235
|
+
<div class="overflow-x-auto rounded-xl border">
|
|
236
|
+
<table class="min-w-full bg-white border-collapse">
|
|
237
|
+
|
|
238
|
+
<thead class="bg-gray-100">
|
|
239
|
+
<tr>
|
|
240
|
+
<!-- text-left -->
|
|
241
|
+
@for (col of columns; track col) {
|
|
242
|
+
<th
|
|
243
|
+
class="px-4 py-3 text-right font-medium border-b"
|
|
244
|
+
>
|
|
245
|
+
{{ col.label | translate }}
|
|
246
|
+
</th>
|
|
247
|
+
}
|
|
248
|
+
</tr>
|
|
249
|
+
</thead>
|
|
250
|
+
|
|
251
|
+
<tbody>
|
|
252
|
+
@for (row of rows; track row; let i = $index) {
|
|
253
|
+
<tr
|
|
254
|
+
class="border-b hover:bg-gray-50">
|
|
255
|
+
@for (col of columns; track col) {
|
|
256
|
+
<td
|
|
257
|
+
class="px-4 py-2">
|
|
258
|
+
{{ row[col.key] }}
|
|
259
|
+
</td>
|
|
260
|
+
}
|
|
261
|
+
</tr>
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
@if (!rows || rows.length === 0) {
|
|
265
|
+
<tr>
|
|
266
|
+
<td [attr.colspan]="columns.length"
|
|
267
|
+
class="text-center py-6 text-gray-400">
|
|
268
|
+
No data
|
|
269
|
+
</td>
|
|
270
|
+
</tr>
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
</tbody>
|
|
274
|
+
|
|
275
|
+
</table>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
</div>
|
|
279
|
+
|
|
280
|
+
`,
|
|
281
|
+
imports: [TranslatePipe],
|
|
282
|
+
}]
|
|
283
|
+
}] });
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Generated bundle index. Do not edit.
|
|
287
|
+
*/
|
|
288
|
+
|
|
289
|
+
export { RepeatModule, RepeatTableViewType, RepeatTypeComponent };
|
|
290
|
+
//# sourceMappingURL=es.framework-ng.ui.core-repeat.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-repeat.mjs","sources":["../../../../libs/ng.ui.core/repeat/src/lib/repeat-module.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-section.type.ts","../../../../libs/ng.ui.core/repeat/src/lib/repeat-table-view.type.ts","../../../../libs/ng.ui.core/repeat/src/es.framework-ng.ui.core-repeat.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class RepeatModule {}\n","import { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FieldArrayType, FormlyField, FormlyFieldConfig } from '@ngx-formly/core';\n\nimport { FormArray } from '@angular/forms';\n\n@Component({\n selector: 'formly-repeat-section',\n standalone: true,\n imports: [FormlyField, TranslatePipe],\n template: `\n <div class=\"overflow-auto bg-gray-100 border border-gray-300\">\n @if ((field.fieldGroup ?? []).length > 0) {\n <table class=\"table-auto w-full border border-gray-300\">\n <thead>\n <tr class=\"bg-gray-100 text-gray-700 text-sm\">\n <th class=\"w-8\"></th>\n @for (col of getFirstRowColumns(); track col) {\n <th class=\"text-center border\">@if (!col.hide) {<span>{{ (col.props?.label ?? '') | translate }}</span>}</th>\n <!-- <th class=\"text-center border\"><formly-field [field]=\"col\"></formly-field></th> -->\n }\n <th class=\"w-10\"></th>\n </tr>\n </thead>\n <tbody>\n @for (row of field.fieldGroup; track row; let rowIndex = $index) {\n <tr class=\"border-t\">\n <td class=\"bg-[#fffbea] text-center text-gray-400 px-2\"><i class=\"pi pi-bars\"></i></td>\n @for (col of row.fieldGroup; track col) {\n <td class=\"bg-[#fffbea]\">\n <formly-field [field]=\"col\"></formly-field>\n </td>\n }\n <td class=\"text-center px-2 bg-[#fffbea]\">\n @if ((rowIndex !== 0 || field.props?.['canDeleteFirstRow']) && !(field.props?.['delete']?.hidden ?? false)) {\n <button type=\"button\" (click)=\"remove(rowIndex)\" class=\"text-red-600 hover:text-red-800\">\n <i class=\"pi pi-trash\"></i>\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n \n @if (!(field.props?.['add']?.hidden ?? false)) {\n <div class=\"flex justify-end\">\n <button\n type=\"button\"\n class=\"inline-flex items-center gap-1 px-4 py-2 bg-primary-600 text-white text-sm font-medium hover:bg-primary-500 transition-colors duration-200 shadow-sm\"\n (click)=\"add()\"\n >\n <span class=\"text-lg\">+</span>\n </button>\n </div>\n }\n </div>\n `,\n})\nexport class RepeatTypeComponent extends FieldArrayType implements OnInit {\n // Return columns of the first row (for table headers)\n getFirstRowColumns() {\n return this.field.fieldGroup?.[0]?.fieldGroup ?? [];\n }\n // ✅ NEW VERSION OF YOUR FUNCTION\n // getFirstRowColumns(): FormlyFieldConfig[] {\n // const group = this.field.fieldGroup?.[0]?.fieldGroup ?? [];\n\n // return group.map(f => ({\n // ...f,\n // type: 'label-type', // 🔥 force label-type here\n // readonly: true,\n // disabled: true,\n // }));\n // }\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n ngOnInit() {\n\n // Subscribe to each FormArray changes\n // if (this.formControl instanceof FormArray) {\n this.field.formControl.valueChanges.subscribe(() => {\n // Force Angular to detect changes\n\n this.field.fieldGroup = [...this.field.fieldGroup ?? []];\n this.cdr.detectChanges();\n });\n // }\n }\n}\n","\nimport { Component } from '@angular/core';\nimport { FieldArrayType } from '@ngx-formly/core';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\n\n@Component({\n selector: 'formly-repeat-table-view',\n template: `\n <div class=\"mb-0\">\n \n <!-- <label class=\"block text-lg font-semibold mb-3\">\n {{ field.props?.label }}\n </label> -->\n \n <div class=\"overflow-x-auto rounded-xl border\">\n <table class=\"min-w-full bg-white border-collapse\">\n \n <thead class=\"bg-gray-100\">\n <tr>\n <!-- text-left -->\n @for (col of columns; track col) {\n <th\n class=\"px-4 py-3 text-right font-medium border-b\"\n >\n {{ col.label | translate }}\n </th>\n }\n </tr>\n </thead>\n \n <tbody>\n @for (row of rows; track row; let i = $index) {\n <tr\n class=\"border-b hover:bg-gray-50\">\n @for (col of columns; track col) {\n <td\n class=\"px-4 py-2\">\n {{ row[col.key] }}\n </td>\n }\n </tr>\n }\n \n @if (!rows || rows.length === 0) {\n <tr>\n <td [attr.colspan]=\"columns.length\"\n class=\"text-center py-6 text-gray-400\">\n No data\n </td>\n </tr>\n }\n \n </tbody>\n \n </table>\n </div>\n \n </div>\n \n `,\n imports: [TranslatePipe],\n})\nexport class RepeatTableViewType extends FieldArrayType {\n\n get columns() {\n const group = (this.field?.fieldArray as any)?.fieldGroup || [];\n return group.map((f :any)=> ({\n key: f.key as string,\n label: f.props?.label || f.key\n }));\n }\n\n get rows() {\n return this.model || [];\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { NgModule, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import * as i4 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i1$1 from '@ngx-formly/core';
|
|
6
|
+
import { FieldType, FormlyAttributes, FormlyModule } from '@ngx-formly/core';
|
|
7
|
+
import * as i3 from 'primeng/select';
|
|
8
|
+
import { SelectModule as SelectModule$1 } from 'primeng/select';
|
|
9
|
+
import { FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';
|
|
10
|
+
import * as i1 from '@angular/forms';
|
|
11
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
12
|
+
import { DatePickerModule } from 'primeng/datepicker';
|
|
13
|
+
import * as i5 from '@ngx-formly/core/select';
|
|
14
|
+
import { FormlySelectModule as FormlySelectModule$1 } from '@ngx-formly/core/select';
|
|
15
|
+
import { TranslatePipe } from '@es.framework/ng.core/pipes';
|
|
16
|
+
import * as i2 from 'primeng/api';
|
|
17
|
+
|
|
18
|
+
class SelectModule {
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: SelectModule, imports: [CommonModule] });
|
|
21
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectModule, imports: [CommonModule] });
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectModule, decorators: [{
|
|
24
|
+
type: NgModule,
|
|
25
|
+
args: [{
|
|
26
|
+
imports: [CommonModule],
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
|
|
30
|
+
class FormlyFieldSelect extends FieldType {
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyFieldSelect, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: FormlyFieldSelect, isStandalone: true, selector: "formly-field-primeng-select", usesInheritance: true, ngImport: i0, template: `
|
|
33
|
+
<p-select
|
|
34
|
+
[options]="(props.options | formlySelectOptions: field | async) ?? []"
|
|
35
|
+
[formControl]="formControl"
|
|
36
|
+
[formlyAttributes]="field"
|
|
37
|
+
[showClear]="!props.required"
|
|
38
|
+
[appendTo]="props.appendTo"
|
|
39
|
+
[filter]="props.filter"
|
|
40
|
+
[filterBy]="props.filterBy ?? 'label'"
|
|
41
|
+
[optionLabel]="'label'"
|
|
42
|
+
[optionValue]="'value'"
|
|
43
|
+
(onChange)="props.change && props.change(field, $event)"
|
|
44
|
+
[placeholder]="(props['placeholder'] ?? '')| translate"
|
|
45
|
+
[styleClass]="'w-full rounded-none block'"
|
|
46
|
+
>
|
|
47
|
+
<!-- Template for each option in the dropdown -->
|
|
48
|
+
<ng-template let-option pTemplate="item">
|
|
49
|
+
<div class="flex items-center gap-2">
|
|
50
|
+
<!-- Example: add an icon if option has one -->
|
|
51
|
+
@if (option.icon) {
|
|
52
|
+
|
|
53
|
+
<i [class]="option.icon"></i>
|
|
54
|
+
}
|
|
55
|
+
<span>{{ option.label | translate }}</span>
|
|
56
|
+
<!-- Example: show description -->
|
|
57
|
+
@if (option.description) {
|
|
58
|
+
|
|
59
|
+
<small class="text-gray-500"> - {{ option.description | translate}}</small>
|
|
60
|
+
}
|
|
61
|
+
</div>
|
|
62
|
+
</ng-template>
|
|
63
|
+
|
|
64
|
+
<!-- Template for selected value -->
|
|
65
|
+
<ng-template let-selected pTemplate="selectedItem">
|
|
66
|
+
<div class="flex items-center gap-2">
|
|
67
|
+
@if (selected?.icon) {
|
|
68
|
+
<i [class]="selected.icon"></i>
|
|
69
|
+
}
|
|
70
|
+
<span>{{ selected?.label | translate}}</span>
|
|
71
|
+
</div>
|
|
72
|
+
</ng-template>
|
|
73
|
+
</p-select>
|
|
74
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: FormlyFormFieldModule }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: SelectModule$1 }, { kind: "component", type: i3.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormlySelectModule$1 }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.LegacyFormlySelectOptionsPipe, name: "formlySelectOptions" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlyFieldSelect, decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{
|
|
79
|
+
selector: 'formly-field-primeng-select',
|
|
80
|
+
template: `
|
|
81
|
+
<p-select
|
|
82
|
+
[options]="(props.options | formlySelectOptions: field | async) ?? []"
|
|
83
|
+
[formControl]="formControl"
|
|
84
|
+
[formlyAttributes]="field"
|
|
85
|
+
[showClear]="!props.required"
|
|
86
|
+
[appendTo]="props.appendTo"
|
|
87
|
+
[filter]="props.filter"
|
|
88
|
+
[filterBy]="props.filterBy ?? 'label'"
|
|
89
|
+
[optionLabel]="'label'"
|
|
90
|
+
[optionValue]="'value'"
|
|
91
|
+
(onChange)="props.change && props.change(field, $event)"
|
|
92
|
+
[placeholder]="(props['placeholder'] ?? '')| translate"
|
|
93
|
+
[styleClass]="'w-full rounded-none block'"
|
|
94
|
+
>
|
|
95
|
+
<!-- Template for each option in the dropdown -->
|
|
96
|
+
<ng-template let-option pTemplate="item">
|
|
97
|
+
<div class="flex items-center gap-2">
|
|
98
|
+
<!-- Example: add an icon if option has one -->
|
|
99
|
+
@if (option.icon) {
|
|
100
|
+
|
|
101
|
+
<i [class]="option.icon"></i>
|
|
102
|
+
}
|
|
103
|
+
<span>{{ option.label | translate }}</span>
|
|
104
|
+
<!-- Example: show description -->
|
|
105
|
+
@if (option.description) {
|
|
106
|
+
|
|
107
|
+
<small class="text-gray-500"> - {{ option.description | translate}}</small>
|
|
108
|
+
}
|
|
109
|
+
</div>
|
|
110
|
+
</ng-template>
|
|
111
|
+
|
|
112
|
+
<!-- Template for selected value -->
|
|
113
|
+
<ng-template let-selected pTemplate="selectedItem">
|
|
114
|
+
<div class="flex items-center gap-2">
|
|
115
|
+
@if (selected?.icon) {
|
|
116
|
+
<i [class]="selected.icon"></i>
|
|
117
|
+
}
|
|
118
|
+
<span>{{ selected?.label | translate}}</span>
|
|
119
|
+
</div>
|
|
120
|
+
</ng-template>
|
|
121
|
+
</p-select>
|
|
122
|
+
`,
|
|
123
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
124
|
+
standalone: true,
|
|
125
|
+
imports: [CommonModule,
|
|
126
|
+
ReactiveFormsModule,
|
|
127
|
+
DatePickerModule,
|
|
128
|
+
FormlyFormFieldModule, FormlyAttributes, SelectModule$1, FormlySelectModule$1, TranslatePipe]
|
|
129
|
+
}]
|
|
130
|
+
}] });
|
|
131
|
+
|
|
132
|
+
function withFormlyFieldSelect() {
|
|
133
|
+
return {
|
|
134
|
+
types: [
|
|
135
|
+
{
|
|
136
|
+
name: 'select',
|
|
137
|
+
component: FormlyFieldSelect,
|
|
138
|
+
wrappers: ['form-field'],
|
|
139
|
+
},
|
|
140
|
+
{ name: 'enum', extends: 'select' },
|
|
141
|
+
],
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
class FormlySelectModule {
|
|
146
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlySelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
147
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: FormlySelectModule, imports: [CommonModule,
|
|
148
|
+
ReactiveFormsModule,
|
|
149
|
+
SelectModule$1,
|
|
150
|
+
FormlyFormFieldModule,
|
|
151
|
+
FormlySelectModule$1, i1$1.FormlyModule] });
|
|
152
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlySelectModule, imports: [CommonModule,
|
|
153
|
+
ReactiveFormsModule,
|
|
154
|
+
SelectModule$1,
|
|
155
|
+
FormlyFormFieldModule,
|
|
156
|
+
FormlySelectModule$1,
|
|
157
|
+
FormlyModule.forChild(withFormlyFieldSelect())] });
|
|
158
|
+
}
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FormlySelectModule, decorators: [{
|
|
160
|
+
type: NgModule,
|
|
161
|
+
args: [{
|
|
162
|
+
// declarations: [FormlyFieldSelect],
|
|
163
|
+
imports: [
|
|
164
|
+
CommonModule,
|
|
165
|
+
ReactiveFormsModule,
|
|
166
|
+
SelectModule$1,
|
|
167
|
+
FormlyFormFieldModule,
|
|
168
|
+
FormlySelectModule$1,
|
|
169
|
+
FormlyModule.forChild(withFormlyFieldSelect()),
|
|
170
|
+
],
|
|
171
|
+
}]
|
|
172
|
+
}] });
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Generated bundle index. Do not edit.
|
|
176
|
+
*/
|
|
177
|
+
|
|
178
|
+
export { FormlyFieldSelect, FormlySelectModule, SelectModule, withFormlyFieldSelect };
|
|
179
|
+
//# sourceMappingURL=es.framework-ng.ui.core-select.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.core-select.mjs","sources":["../../../../libs/ng.ui.core/select/src/lib/select-module.ts","../../../../libs/ng.ui.core/select/src/lib/select.type.ts","../../../../libs/ng.ui.core/select/src/lib/select.config.ts","../../../../libs/ng.ui.core/select/src/lib/select.module.ts","../../../../libs/ng.ui.core/select/src/es.framework-ng.ui.core-select.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class SelectModule {}\n","import { Component, ChangeDetectionStrategy, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyAttributes, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyFieldSelectProps } from '@ngx-formly/core/select';\nimport { Select, SelectModule } from 'primeng/select';\nimport { FormlyFieldProps, FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\n\ninterface SelectProps extends FormlyFieldProps, FormlyFieldSelectProps {\n appendTo?: Select['appendTo'];\n filter?: boolean;\n filterBy?: string;\n}\n\nexport interface FormlySelectFieldConfig extends FormlyFieldConfig<SelectProps> {\n type: 'select' | Type<FormlyFieldSelect>;\n}\n\n@Component({\n selector: 'formly-field-primeng-select',\n template: `\n <p-select\n [options]=\"(props.options | formlySelectOptions: field | async) ?? []\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [showClear]=\"!props.required\"\n [appendTo]=\"props.appendTo\"\n [filter]=\"props.filter\"\n [filterBy]=\"props.filterBy ?? 'label'\"\n [optionLabel]=\"'label'\"\n [optionValue]=\"'value'\"\n (onChange)=\"props.change && props.change(field, $event)\"\n [placeholder]=\"(props['placeholder'] ?? '')| translate\"\n [styleClass]=\"'w-full rounded-none block'\"\n >\n <!-- Template for each option in the dropdown -->\n <ng-template let-option pTemplate=\"item\">\n <div class=\"flex items-center gap-2\">\n <!-- Example: add an icon if option has one -->\n @if (option.icon) {\n\n <i [class]=\"option.icon\"></i>\n }\n <span>{{ option.label | translate }}</span>\n <!-- Example: show description -->\n @if (option.description) {\n\n <small class=\"text-gray-500\"> - {{ option.description | translate}}</small>\n }\n </div>\n </ng-template>\n\n <!-- Template for selected value -->\n <ng-template let-selected pTemplate=\"selectedItem\">\n <div class=\"flex items-center gap-2\">\n @if (selected?.icon) {\n <i [class]=\"selected.icon\"></i>\n }\n <span>{{ selected?.label | translate}}</span>\n </div>\n </ng-template>\n </p-select>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone:true,\n imports:[CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,FormlyAttributes,SelectModule,FormlyCoreSelectModule,TranslatePipe]\n\n})\nexport class FormlyFieldSelect extends FieldType<FieldTypeConfig<SelectProps>> {}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldSelect } from './select.type';\n\nexport function withFormlyFieldSelect(): ConfigOption {\n return {\n types: [\n {\n name: 'select',\n component: FormlyFieldSelect,\n wrappers: ['form-field'],\n },\n { name: 'enum', extends: 'select' },\n ],\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { SelectModule } from 'primeng/select';\nimport { FormlySelectModule as FormlyCoreSelectModule } from '@ngx-formly/core/select';\n\nimport { FormlyFieldSelect } from './select.type';\nimport { withFormlyFieldSelect } from './select.config';\nimport { FormlyFormFieldModule } from '@es.framework/ng.ui.core/form-field';\n\n@NgModule({\n // declarations: [FormlyFieldSelect],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SelectModule,\n FormlyFormFieldModule,\n FormlyCoreSelectModule,\n FormlyModule.forChild(withFormlyFieldSelect()),\n ],\n})\nexport class FormlySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectModule","FormlyCoreSelectModule","i1"],"mappings":";;;;;;;;;;;;;;;;;MAMa,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAFb,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,YAAY,YAFb,YAAY,CAAA,EAAA,CAAA;;2FAEX,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;ACqEK,MAAO,iBAAkB,SAAQ,SAAuC,CAAA;uGAAjE,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnDlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAC,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAACA,cAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAACC,oBAAsB,sKAAC,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAG/E,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArD7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC9C,oBAAA,UAAU,EAAC,IAAI;oBAChB,OAAO,EAAC,CAAC,YAAY;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB,EAAC,gBAAgB,EAACD,cAAY,EAACC,oBAAsB,EAAC,aAAa;AAE3F,iBAAA;;;SCtEe,qBAAqB,GAAA;IACnC,OAAO;AACL,QAAA,KAAK,EAAE;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,CAAC,YAAY,CAAC;AACzB,aAAA;AACD,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AACpC,SAAA;KACF;AACH;;MCQa,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAR3B,YAAY;YACZ,mBAAmB;YACnBD,cAAY;YACZ,qBAAqB;YACrBC,oBAAsB,EAAAC,IAAA,CAAA,YAAA,CAAA,EAAA,CAAA;AAIb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAR3B,YAAY;YACZ,mBAAmB;YACnBF,cAAY;YACZ,qBAAqB;YACrBC,oBAAsB;AACtB,YAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAA,EAAA,CAAA;;2FAGrC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;;AAER,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnBD,cAAY;wBACZ,qBAAqB;wBACrBC,oBAAsB;AACtB,wBAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;AAC/C,qBAAA;AACF,iBAAA;;;ACrBD;;AAEG;;;;"}
|