fx-form-builder-wrapper 0.0.39 → 0.0.40
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.
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { FxUtils } from '@instantsys-labs/fx';
|
|
2
3
|
import { BehaviorSubject } from 'rxjs';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@instantsys-labs/fx";
|
|
@@ -28,6 +29,9 @@ export class FxBuilderWrapperService {
|
|
|
28
29
|
getComponent(selector) {
|
|
29
30
|
return this.fxComponentRegistry.getComponent(selector);
|
|
30
31
|
}
|
|
32
|
+
getInitializedFxForm() {
|
|
33
|
+
return FxUtils.createNewForm();
|
|
34
|
+
}
|
|
31
35
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperService, deps: [{ token: i1.FxComponentRegistryService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
32
36
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperService, providedIn: 'root' });
|
|
33
37
|
}
|
|
@@ -37,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37
41
|
providedIn: 'root'
|
|
38
42
|
}]
|
|
39
43
|
}], ctorParameters: () => [{ type: i1.FxComponentRegistryService }] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZngtYnVpbGRlci13cmFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBdUQsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBVyxNQUFNLE1BQU0sQ0FBQzs7O0FBS2hELE1BQU0sT0FBTyx1QkFBdUI7SUFFZDtJQURiLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBYSxJQUFJLENBQUMsQ0FBQztJQUMxRCxZQUFvQixtQkFBK0M7UUFBL0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE0QjtJQUFJLENBQUM7SUFFakUsdUJBQXVCLENBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsU0FBZ0M7UUFFOUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUU7WUFDOUQsYUFBYSxFQUFFLFFBQVE7WUFDdkIsV0FBVyxFQUFFO2dCQUNYLEtBQUs7Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsTUFBTSxFQUFFO29CQUNOLEVBQUUsRUFBRSxJQUFJO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxFQUFFO29CQUNULFFBQVEsRUFBRSxRQUFRO29CQUNsQixRQUFRLEVBQUUsRUFBRTtvQkFDWixNQUFNLEVBQUUsRUFBRTtpQkFDWDthQUNGO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVNLFlBQVksQ0FBQyxRQUFnQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixPQUFPLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNqQyxDQUFDO3dHQTdCUSx1QkFBdUI7NEdBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGeEJhc2VDb21wb25lbnQsIEZ4Q29tcG9uZW50UmVnaXN0cnlTZXJ2aWNlLCBGeEZvcm0sIEZ4VXRpbHMgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2Z4JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB7XHJcbiAgcHVibGljIHZhcmlhYmxlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueSB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnhDb21wb25lbnRSZWdpc3RyeTogRnhDb21wb25lbnRSZWdpc3RyeVNlcnZpY2UpIHsgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJDdXN0b21Db21wb25lbnQodGl0bGU6IHN0cmluZywgc2VsZWN0b3I6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPEZ4QmFzZUNvbXBvbmVudD5cclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMuZnhDb21wb25lbnRSZWdpc3RyeS5yZWdpc3RlckNvbXBvbmVudChzZWxlY3RvciwgY29tcG9uZW50LCB7XHJcbiAgICAgIHJlZ2lzdGVyaW5nQXM6IFwiQ1VTVE9NXCIsXHJcbiAgICAgIGxpYnJhcnlJdGVtOiB7XHJcbiAgICAgICAgdGl0bGUsXHJcbiAgICAgICAgaWNvbjogJ2ZhLWV5ZScsXHJcbiAgICAgICAgZnhEYXRhOiB7XHJcbiAgICAgICAgICBpZDogbnVsbCxcclxuICAgICAgICAgIG5hbWU6IHNlbGVjdG9yLFxyXG4gICAgICAgICAgdmFsdWU6IFwiXCIsXHJcbiAgICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXHJcbiAgICAgICAgICBlbGVtZW50czogW10sXHJcbiAgICAgICAgICBldmVudHM6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDb21wb25lbnQoc2VsZWN0b3I6IHN0cmluZyk6IFR5cGU8RnhCYXNlQ29tcG9uZW50PiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5meENvbXBvbmVudFJlZ2lzdHJ5LmdldENvbXBvbmVudChzZWxlY3Rvcik7XHJcbiAgfVxyXG5cclxuICAgcHVibGljIGdldEluaXRpYWxpemVkRnhGb3JtKCk6IEZ4Rm9ybSB7XHJcbiAgICAgIHJldHVybiBGeFV0aWxzLmNyZWF0ZU5ld0Zvcm0oKTsgXHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, inject, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, Subject, takeUntil } from 'rxjs';
|
|
4
3
|
import * as i1 from '@instantsys-labs/fx';
|
|
5
|
-
import { FxBaseComponent, FxStringSetting, FxValidatorService, FxComponent, FxMode, FxSelectSetting,
|
|
4
|
+
import { FxUtils, FxBaseComponent, FxStringSetting, FxValidatorService, FxComponent, FxMode, FxSelectSetting, FxScope, FxComponentBuilder, FxFormComponent } from '@instantsys-labs/fx';
|
|
5
|
+
import { BehaviorSubject, Subject, takeUntil } from 'rxjs';
|
|
6
6
|
import * as i2 from '@angular/common';
|
|
7
7
|
import { CommonModule } from '@angular/common';
|
|
8
8
|
import * as i1$1 from '@angular/forms';
|
|
@@ -43,6 +43,9 @@ class FxBuilderWrapperService {
|
|
|
43
43
|
getComponent(selector) {
|
|
44
44
|
return this.fxComponentRegistry.getComponent(selector);
|
|
45
45
|
}
|
|
46
|
+
getInitializedFxForm() {
|
|
47
|
+
return FxUtils.createNewForm();
|
|
48
|
+
}
|
|
46
49
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperService, deps: [{ token: i1.FxComponentRegistryService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
47
50
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperService, providedIn: 'root' });
|
|
48
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fx-form-builder-wrapper.mjs","sources":["../../../projects/fx-builder-wrapper/src/lib/fx-builder-wrapper.service.ts","../../../projects/fx-builder-wrapper/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.ts","../../../projects/fx-builder-wrapper/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.html","../../../projects/fx-builder-wrapper/src/lib/panel/configuration-panel/configuration-panel.component.ts","../../../projects/fx-builder-wrapper/src/lib/panel/configuration-panel/configuration-panel.component.html","../../../projects/fx-builder-wrapper/src/lib/panel/settings-panel/settings-panel.component.ts","../../../projects/fx-builder-wrapper/src/lib/panel/settings-panel/settings-panel.component.html","../../../projects/fx-builder-wrapper/src/lib/components/dynamic-table/dynamic-table.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/dynamic-table/dynamic-table.component.html","../../../projects/fx-builder-wrapper/src/lib/components/toggle-button/toggle-button.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/toggle-button/toggle-button.component.html","../../../projects/fx-builder-wrapper/src/lib/components/uploader/uploader.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/uploader/uploader.component.html","../../../projects/fx-builder-wrapper/src/lib/components/toggle/toggle.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/toggle/toggle.component.html","../../../projects/fx-builder-wrapper/src/lib/fx-builder-wrapper.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/fx-form-component/fx-form-component.component.ts","../../../projects/fx-builder-wrapper/src/public-api.ts","../../../projects/fx-builder-wrapper/src/fx-form-builder-wrapper.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\r\nimport { FxBaseComponent, FxComponentRegistryService } from '@instantsys-labs/fx';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FxBuilderWrapperService {\r\n public variables$ = new BehaviorSubject<any | null>(null);\r\n constructor(private fxComponentRegistry: FxComponentRegistryService) { }\r\n\r\n public registerCustomComponent(title: string, selector: string, component: Type<FxBaseComponent>\r\n ): void {\r\n this.fxComponentRegistry.registerComponent(selector, component, {\r\n registeringAs: \"CUSTOM\",\r\n libraryItem: {\r\n title,\r\n icon: 'fa-eye',\r\n fxData: {\r\n id: null,\r\n name: selector,\r\n value: \"\",\r\n selector: selector,\r\n elements: [],\r\n events: []\r\n }\r\n },\r\n })\r\n }\r\n\r\n public getComponent(selector: string): Type<FxBaseComponent> | undefined {\r\n return this.fxComponentRegistry.getComponent(selector);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule, Validators, FormBuilder, FormsModule } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { BehaviorSubject, take } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-dispatch-to-clinic',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent],\r\n templateUrl: './dispatch-to-clinic.component.html'\r\n})\r\nexport class DispatchToClinicComponent extends FxBaseComponent {\r\n private fb = inject(FormBuilder);\r\n\r\n public clinicAddress$: BehaviorSubject<any> = new BehaviorSubject<any>({});\r\n\r\n public dispatchForm: FormGroup = this.fb.group({\r\n courierName: ['', Validators.required],\r\n trackingNumber: ['', Validators.required],\r\n trackingUrl: ['', [Validators.required, Validators.pattern('https?://.+')]],\r\n notes: ['', Validators.required]\r\n })\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n\r\n this.onInit.subscribe(() => {\r\n this._register(this.dispatchForm);\r\n });\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [new FxStringSetting({ key: 'heading-text', $title: 'Heading Text', value: 'My Default Value' })];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n\r\n public copyToClipboard(address: any): void {\r\n navigator.clipboard.writeText(address);\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <section\r\n class=\"justify-content-around lg:justify-content-between w-full white-color border-1 border-solid stroke_light_grey p-3 mb-3 mt-3\">\r\n <form [formGroup]=\"dispatchForm\">\r\n <div class=\"grid\">\r\n <!-- Courier Name -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"courierName\" class=\"input-title\">Courier Name</label>\r\n <input autocomplete=\"off\" formControlName=\"courierName\" type=\"text\" id=\"courierName\"\r\n name=\"courierName\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter courier name\" />\r\n\r\n <!-- validation -->\r\n <small *ngIf=\"dispatchForm.get('courierName')?.invalid && dispatchForm.get('courierName')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Courier Name is required.\r\n </small>\r\n <!-- validation -->\r\n </div>\r\n <!-- Courier Name -->\r\n\r\n <!-- Tracking Number -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingNumber\" class=\"input-title\">Tracking Number</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingNumber\" type=\"text\" id=\"trackingNumber\"\r\n name=\"trackingNumber\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking number\" />\r\n <small\r\n *ngIf=\"dispatchForm.get('trackingNumber')?.invalid && dispatchForm.get('trackingNumber')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Tracking Number is required.\r\n </small>\r\n </div>\r\n <!-- Tracking Number -->\r\n\r\n <!-- Tracking URL -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingUrl\" class=\"input-title\">Tracking URL</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingUrl\" type=\"text\" id=\"trackingUrl\"\r\n name=\"trackingUrl\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking url\" />\r\n <small *ngIf=\"dispatchForm.get('trackingUrl')?.invalid && dispatchForm.get('trackingUrl')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['required']\">Tracking URL is\r\n required.</span>\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['pattern']\">Invalid URL format.</span>\r\n </small>\r\n </div>\r\n <!-- Tracking URL -->\r\n\r\n <!-- Notes -->\r\n <div class=\"col-12 md:col-6 input-container\">\r\n <label for=\"notes\" class=\"input-title\">Notes</label>\r\n <textarea autocomplete=\"off\" formControlName=\"notes\" rows=\"5\" id=\"notes\" name=\"notes\"\r\n class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter notes\"></textarea>\r\n <small *ngIf=\"dispatchForm.get('notes')?.invalid && dispatchForm.get('notes')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Notes are required.\r\n </small>\r\n </div>\r\n <!-- Notes -->\r\n\r\n <!-- Address with Copy Icon -->\r\n <div class=\"col-12 md:col-6 pt-0\">\r\n <div class=\"mb-1\">Address</div>\r\n <ng-container *ngIf=\"(clinicAddress$ | async) as address\">\r\n <address #completeAddress>{{address?.street}}, {{address?.state}}, {{address?.postalCode}}\r\n <i class=\"pi pi-copy cursor-pointer text-xl text-secondary-color\"\r\n (click)=\"copyToClipboard(completeAddress.textContent)\"></i>\r\n </address>\r\n </ng-container>\r\n </div>\r\n <!-- Address with Copy Icon -->\r\n </div>\r\n </form>\r\n </section>\r\n</fx-component>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { FormArray, FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'fx-configuration-panel',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, ButtonModule, DialogModule, InputTextModule, FormsModule, DropdownModule, ButtonModule],\r\n templateUrl: './configuration-panel.component.html',\r\n styleUrl: './configuration-panel.component.css',\r\n})\r\nexport class ConfigurationPanelComponent implements OnInit{\r\n @Input() visible: boolean = false;\r\n @Output() isVisible = new EventEmitter<boolean>();\r\n @Output() configuration = new EventEmitter<any>();\r\n\r\n public rows: number = 1;\r\n public enableAPI: boolean = false;\r\n public api: string = '';\r\n\r\n public dynamicForm: FormGroup;\r\n public columnTypes: string[] = ['text', 'input-text', 'input-number', 'dropdown', 'smart-dropdown', 'checkbox', 'radio', 'radio-group', 'file-upload', 'textarea'];\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.dynamicForm = this.fb.group({\r\n columns: this.fb.array([])\r\n });\r\n }\r\n ngOnInit(): void {\r\n this.addColumn();\r\n }\r\n\r\n get columns(): FormArray {\r\n return this.dynamicForm.get('columns') as FormArray;\r\n }\r\n\r\n // **🔹 Add Column Dynamically**\r\n public addColumn(): void {\r\n const columnFormGroup = this.fb.group({\r\n header: ['', Validators.required],\r\n cellType: ['', Validators.required],\r\n placeholder: '',\r\n options: this.fb.array([]),\r\n apiUrl: '',\r\n valueKey: '',\r\n labelKey: '',\r\n className: '',\r\n apiKey: ''\r\n });\r\n this.columns.push(columnFormGroup);\r\n }\r\n\r\n \r\n public removeColumn(index: number): void {\r\n if (this.columns.length > 1) {\r\n this.columns.removeAt(index);\r\n }\r\n }\r\n\r\n // **🔹 Duplicate Column**\r\n public duplicateColumn(index: number): void {\r\n const currentColumn = this.columns.at(index).value;\r\n const duplicateColumn = this.fb.group({\r\n header: [currentColumn.header, Validators.required],\r\n cellType: [currentColumn.cellType, Validators.required],\r\n placeholder: [currentColumn.placeholder],\r\n apiUrl: [currentColumn.apiUrl],\r\n valueKey: [currentColumn.valueKey],\r\n labelKey: [currentColumn.labelKey],\r\n className: [currentColumn.className],\r\n apiKey: [currentColumn.apiKey],\r\n options: this.fb.array(\r\n currentColumn.options.map((option: any) => this.fb.group({\r\n optionName: [option.optionName, Validators.required],\r\n optionValue: [option.optionValue, Validators.required]\r\n }))\r\n )\r\n });\r\n this.columns.insert(index + 1, duplicateColumn);\r\n }\r\n\r\n // **🔹 Add Options Dynamically**\r\n public addOption(columnIndex: number): void {\r\n const optionGroup = this.fb.group({\r\n optionName: ['', Validators.required],\r\n optionValue: ['', Validators.required]\r\n });\r\n\r\n this.getOptions(columnIndex).push(optionGroup);\r\n }\r\n\r\n // **🔹 Get Options FormArray for a Specific Column**\r\n public getOptions(columnIndex: number): FormArray {\r\n return this.columns.at(columnIndex).get('options') as FormArray;\r\n }\r\n\r\n // **🔹 Close Dialog**\r\n public closeDialog(): void {\r\n this.isVisible.emit(false);\r\n }\r\n\r\n // **🔹 Save Configuration**\r\n public saveConfiguration(): void {\r\n this.configuration.emit({\r\n rows: this.rows,\r\n columns: this.dynamicForm.value?.columns,\r\n enableAPI: this.enableAPI,\r\n api: this.api\r\n });\r\n this.isVisible.emit(false);\r\n }\r\n\r\n public onSubmit(): void {\r\n console.log(\"Value columns formArray\", this.dynamicForm.value);\r\n }\r\n}\r\n","<p-dialog header=\"Edit Configurations\" [modal]=\"true\" [draggable]=\"false\" [(visible)]=\"visible\" [style]=\"{width: '70rem'}\" class=\"customDialogClass\">\r\n <!-- <ng-template pTemplate=\"header\">\r\n <div class=\"flex p-2 bg-white border-2\">\r\n <p class=\"text-base\">Edit Configurations</p>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"flex flex-col gap-4 bg-white p-2 border-2 border-gray-200\">\r\n <div class=\"flex items-center gap-4 mb-8 w-full\">\r\n <div class=\"w-1/3\">\r\n <label for=\"rows\" class=\"font-semibold w-24\">Rows</label>\r\n <input type=\"text\" [disabled]=\"enableAPI\" [(ngModel)]=\"rows\" placeholder=\"rows\" class=\"form__input\" id=\"name\" autocomplete=\"rows\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n <label for=\"enableAPI\" class=\"font-semibold w-24\">Enable API</label>\r\n <input type=\"checkbox\" [(ngModel)]=\"enableAPI\" placeholder=\"API Url\" id=\"enableAPI\" autocomplete=\"enableAPI\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n @if (enableAPI) {\r\n <ng-container>\r\n <label for=\"api\" class=\"font-semibold w-24\">API</label>\r\n <input type=\"text\" [(ngModel)]=\"api\" placeholder=\"Enter API Url\" id=\"api\" class=\"form__input\" autocomplete=\"api\" />\r\n </ng-container>\r\n }\r\n </div> \r\n \r\n </div>\r\n <!-- <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n \r\n \r\n </div> -->\r\n \r\n <div class=\"flex flex-wrap gap-4 mb-8\">\r\n \r\n <div class=\"w-full flex items-center justify-between\">\r\n <p class=\"text-sm font-semibold\">Columns:</p>\r\n <!-- <button type=\"button\" (click)=\"addColumn()\" class=\"custom-save-button\">Add Column</button> -->\r\n </div>\r\n \r\n <div class=\"w-full overflow-x-auto\">\r\n <form [formGroup]=\"dynamicForm\" (ngSubmit)=\"onSubmit()\">\r\n <!-- Flex container with nowrap to keep all columns in a single row -->\r\n <div formArrayName=\"columns\" class=\"flex gap-4 flex-nowrap whitespace-nowrap\">\r\n <div *ngFor=\"let column of columns.controls; let i = index\" [formGroupName]=\"i\" \r\n class=\"border p-4 rounded-lg min-w-[20rem] flex-shrink-0 card-width\">\r\n <div class=\"top-2 right-2 flex gap-2 justify-end\">\r\n <button type=\"button\" (click)=\"duplicateColumn(i)\" \r\n class=\"bg-green-500 text-white px-3 py-1 rounded-md hover:bg-green-600\">\r\n ➕\r\n </button>\r\n <button type=\"button\" (click)=\"removeColumn(i)\" \r\n class=\"text-white px-3 py-1 rounded-md hover:bg-red-600\" *ngIf=\"columns.length>1\">\r\n ❌\r\n </button>\r\n </div>\r\n <!-- Columns in a Single Row -->\r\n <div class=\"grid grid-cols-1 gap-4 items-center mb-2\">\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Name:</label>\r\n <input formControlName=\"header\" placeholder=\"Enter Column Name\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Type:</label>\r\n <select formControlName=\"cellType\" class=\"w-full border rounded-md px-3 py-2\">\r\n <option *ngFor=\"let type of columnTypes\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n </div>\r\n @if (enableAPI) {\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">API Value Key:</label>\r\n <input formControlName=\"apiKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n }\r\n \r\n </div>\r\n <div *ngIf=\"['radio-group', 'dropdown'].includes(column.value.cellType)\" class=\"mt-2\">\r\n\r\n <label class=\"font-semibold\">Options:</label>\r\n \r\n <div formArrayName=\"options\">\r\n <div *ngFor=\"let option of getOptions(i).controls; let j = index\" [formGroupName]=\"j\" \r\n class=\"grid grid-cols-1 gap-4 items-center mt-2\">\r\n <input formControlName=\"optionName\" placeholder=\"Enter Option Name\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <input formControlName=\"optionValue\" placeholder=\"Enter Option Value\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <button type=\"button\" (click)=\"getOptions(i).removeAt(j)\" \r\n class=\"col-span-2 bg-red-500 text-white px-2 py-1 rounded-md hover:bg-red-600\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <button type=\"button\" (click)=\"addOption(i)\" class=\"custom-save-button justify-end\">Add Option</button>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"['smart-dropdown'].includes(column.value.cellType)\" class=\"grid grid-cols-1 gap-4 mt-4\">\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">API Url:</label>\r\n <input formControlName=\"apiUrl\" placeholder=\"Enter API URL\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Value Key:</label>\r\n <input formControlName=\"valueKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Label Key:</label>\r\n <input formControlName=\"labelKey\" placeholder=\"Enter Label Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <!-- <hr class=\"mt-3 mx-2 mb-0 opacity-10\"> -->\r\n <!-- <div class=\"flex justify-end gap-4 w-full\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\" />\r\n <p-button styleClass=\"border border-indigo-600\" label=\"Save\" (click)=\"saveConfiguration()\" />\r\n </div> -->\r\n <div class=\"flex justify-center my-3\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\"\r\n styleClass=\"border-gray-400\" />\r\n <p-button label=\"Attach\" label=\"Save\" (click)=\"saveConfiguration()\" \r\n styleClass=\"cta_buttons text-medium button_text_white secondary-color border-1 stroke_secondary no_hightlight no_hightlight_stroke h-max mr-2 w-6rem custom-save-button\"\r\n />\r\n </div>\r\n </ng-template>\r\n</p-dialog>","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FxComponent, FxData, FxMode, FxSettingComponent, FxSettingsService, FxUtils } from '@instantsys-labs/fx';\r\nimport { Dialog } from 'primeng/dialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { ConfigurationPanelComponent } from '../configuration-panel/configuration-panel.component';\r\n\r\n@Component({\r\n selector: 'fx-settings-panel',\r\n standalone: true,\r\n imports: [CommonModule, ButtonModule, InputTextModule, ConfigurationPanelComponent],\r\n templateUrl: './settings-panel.component.html',\r\n styleUrl: './settings-panel.component.css'\r\n})\r\nexport class SettingsPanelComponent extends FxComponent implements OnInit {\r\n @Output() configuration = new EventEmitter<any>();\r\n public visible: boolean = false;\r\n\r\n public openSettingDialog(): void {\r\n this.visible = true;\r\n }\r\n}\r\n","<fx-configuration-panel [visible]=\"visible\" (isVisible)=\"visible = $event\" (configuration)=\"configuration.emit($event)\"></fx-configuration-panel>\r\n\r\n<div class=\"fx-element\">\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"fxData.$fxForm?.$mode !== FxMode.VIEW\">\r\n <div class=\"fx-overlay border-gray-400 border rounded cursor-pointer\" (click)=\"onElementSelect(fxData)\"\r\n (dblclick)=\"openSettingDialog()\">\r\n <div class=\"fx-actions flex justify-between\">\r\n\r\n <div class=\"bg-gray-700 text-gray-300 px-2 rounded-t ml-2 text-xs flex justify-center items-center\">\r\n <div>#{{ fxData.name }}-<span class=\"text-xs italic\">{{ fxData.id }}</span></div>\r\n </div>\r\n\r\n <div class=\"flex justify-around items-end mr-2\">\r\n <div class=\"cursor-pointer bg-secondary text-white w-8 mr-1 text-center rounded-t\" title=\"Settings\"\r\n (click)=\"fxSettingService.openSetting(fxData)\">\r\n <i class=\"fa fa-cog text-xs\"></i>\r\n </div>\r\n <div (click)=\"deleteElement(fxData)\"\r\n class=\"cursor-pointer bg-red-600 text-white w-8 mr-1 text-center rounded-t\" title=\"Delete\">\r\n <i class=\"fa fa-times text-xs\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container #dynamicComponentContainer></ng-container>\r\n </ng-container>\r\n</div>","import { AfterViewInit, ChangeDetectorRef, Component, inject, Input, NgZone, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FxBaseComponent, FxMode, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { SettingsPanelComponent } from '../../panel/settings-panel/settings-panel.component';\r\nimport { FxBuilderWrapperService } from '../../fx-builder-wrapper.service';\r\nimport {Subject, takeUntil } from 'rxjs';\r\n\r\nexport interface TableColumnConfig {\r\n header: string;\r\n cellType: 'text' | 'input-text' | 'input-number' | 'dropdown' | 'smart-dropdown' | 'checkbox' | 'radio' | 'radio-group' | 'file-upload' | 'textarea';\r\n placeholder?: string;\r\n options?: string[];\r\n apiUrl?: string;\r\n valueKey?: string;\r\n labelKey?: string;\r\n className?: string;\r\n}\r\nexport interface TableConfig {\r\n columns: TableColumnConfig[];\r\n rows: any[];\r\n}\r\n@Component({\r\n selector: 'fx-dynamic-table',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, SettingsPanelComponent, ReactiveFormsModule],\r\n templateUrl: './dynamic-table.component.html',\r\n styleUrl: './dynamic-table.component.css',\r\n})\r\n\r\nexport class DynamicTableComponent extends FxBaseComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() tableRows: Array<any> = [];\r\n @Input() previewType: FxMode = FxMode.VIEW;\r\n @Input() tableConfig: any = {\r\n columns: [\r\n { header: 'Column 1', cellType: 'text' },\r\n { header: 'Column 2', cellType: 'text' },\r\n { header: 'Column 3', cellType: 'text' },\r\n { header: 'Column 4', cellType: 'text' },\r\n { header: 'Column 5', cellType: 'text' },\r\n ],\r\n};\r\n\r\n private destroy$ = new Subject<Boolean>();\r\n public uploadedImages: Array<string | null> = [];\r\n public tableFormControl = new FormControl();\r\n public smartDropdownOptions: { [key: string]: Array<{ name: string, value: string }> } = {};\r\n private http = inject(HttpClient);\r\n constructor(private cdr: ChangeDetectorRef, private fxBuilderWrapperService: FxBuilderWrapperService) {\r\n super(cdr);\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.tableFormControl);\r\n })\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.fxBuilderWrapperService.variables$.pipe(\r\n takeUntil(this.destroy$)).subscribe((variables: any) => {\r\n if(variables) {\r\n let dynamicTableValues: any;\r\n for(const [key, value] of Object.entries(variables)) {\r\n if(key.includes('dynamic-table')) {\r\n dynamicTableValues = value;\r\n }\r\n }\r\n if(Object.keys(dynamicTableValues).length) {\r\n // const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;\r\n const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;\r\n dynamicTableValues?.rows?.forEach((item: any, index: number) => {\r\n this.uploadedImages[index] = item[fileHeaderName] ? item[fileHeaderName]: null;\r\n })\r\n this.tableConfig = dynamicTableValues;\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n }\r\n })\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n if(this.fxData?.value && Object.keys(this.fxData?.value)?.length != 0) {\r\n this.tableConfig = this.fxData.value;\r\n this.fetchSmartDropdownData();\r\n }\r\n }, 100)\r\n }\r\n \r\n protected fetchSmartDropdownData(): void {\r\n this.tableConfig.columns\r\n .filter((column: TableColumnConfig) => column.cellType === 'smart-dropdown' && column?.apiUrl)\r\n .forEach((column: TableColumnConfig) => {\r\n this.http.get<any>(column.apiUrl!).subscribe((response: any) => {\r\n this.smartDropdownOptions[column.header] = response.map((item: any) => ({\r\n value: item[column.valueKey!],\r\n name: item[column.labelKey!],\r\n }));\r\n });\r\n });\r\n }\r\n\r\n public uploadImage(event: Event, rowIndex: number): void {\r\n const file = (event.target as HTMLInputElement).files?.[0];\r\n if (file) {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n this.uploadedImages[rowIndex] = reader.result as string;\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'column-size', $title: 'No. of columns', value: 1 }),\r\n new FxStringSetting({ key: 'table-config', $title: 'Table Configuration', value: {} }),\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n\r\n public getArray(count: number): number[] {\r\n return Array.from({ length: count });\r\n }\r\n\r\n public onChangeConfiguration(event: any): void { \r\n const columns = event.columns.map((col: any) => {\r\n return {\r\n header: col?.header,\r\n cellType: col?.cellType,\r\n placeholder: col?.placeholder,\r\n options: col?.options,\r\n apiUrl: col?.apiUrl,\r\n valueKey: col?.valueKey,\r\n labelKey: col?.labelKey,\r\n className: col?.className,\r\n apiKey: col?.apiKey\r\n }\r\n });\r\n if(!event?.enableAPI) {\r\n this.tableConfig.columns = columns;\r\n // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => ({ name: `SKU-${index + 1}`, age: index % 2 !== 0, gender: 'male' }))\r\n // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => {\r\n // const rows = columns.map((c: any) => {\r\n // return {\r\n // c?.header: null\r\n // }\r\n // })\r\n // return rows\r\n // })\r\n this.tableConfig.rows = Array.from({ length: +event?.rows }, (_, index) => {\r\n return columns.reduce((acc: any, c: any) => {\r\n acc[c?.header] = ''; // Initialize each column key with null\r\n return acc;\r\n }, {});\r\n });\r\n \r\n this.fetchSmartDropdownData();\r\n }\r\n if(event?.enableAPI) {\r\n this.drawTable(event, columns)\r\n this.tableConfig = {\r\n columns: columns,\r\n rows: []\r\n };\r\n }\r\n\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n\r\n private updateSettings(): void{\r\n if(this.fxData.settings){\r\n for(let setting of this.fxData.settings){\r\n if(setting.key === 'table-config'){\r\n setting.value = this.tableConfig;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public drawTable(event: any, columns: any): void {\r\n let rows;\r\n this.http.get(event.api).subscribe((res: any) => {\r\n if(res) {\r\n rows = res.map((item: any) => {\r\n const newObj: Record<string, any> = {};\r\n columns.forEach((col: any) => {\r\n newObj[col.header] = item[col.apiKey];\r\n });\r\n return newObj;\r\n });\r\n this.tableConfig = {\r\n columns,\r\n rows\r\n }\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n })\r\n }\r\n\r\n public deleteFile(file: any, index: number): void {\r\n this.uploadedImages.splice(index, 1, null);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<fx-settings-panel [fxData]=\"fxData\" (configuration)=\"onChangeConfiguration($event)\">\r\n <div style=\"padding: 0 1.5rem;\" *ngIf=\"fxData\">\r\n <table style=\"width: 100%;\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of tableConfig.columns\">{{ column.header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of tableConfig.rows; let rowIndex = index\">\r\n <td style=\"text-align: left;\" *ngFor=\"let column of tableConfig.columns\">\r\n <ng-container [ngSwitch]=\"column.cellType\">\r\n <span [class]=\"column?.className\" *ngSwitchCase=\"'text'\">{{row[column.header]}}</span>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-text'\" type=\"text\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-number'\" type=\"number\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <select [class]=\"column?.className\" *ngSwitchCase=\"'dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <option *ngFor=\"let option of column?.options\" [value]=\"option?.optionValue\"> \r\n {{ option?.optionName }}\r\n </option>\r\n </select>\r\n \r\n <select [class]=\"column?.className\" style=\"width: 60%;\" *ngSwitchCase=\"'smart-dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <option *ngFor=\"let option of smartDropdownOptions[column.header]\" [value]=\"option?.value\">\r\n {{option?.name }}\r\n </option>\r\n </select>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'checkbox'\" type=\"checkbox\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input name=\"radio-{{rowIndex}}\" [class]=\"column?.className\" *ngSwitchCase=\"'radio'\" type=\"radio\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <div [class]=\"column?.className\" style=\"display: flex; justify-content: center; gap: 10px;\"\r\n *ngSwitchCase=\"'radio-group'\">\r\n <label *ngFor=\"let option of column.options\">\r\n <input name=\"radio-group-{{rowIndex}}\" type=\"radio\" [value]=\"option?.optionName\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n {{ option?.optionName }}\r\n </label>\r\n </div>\r\n \r\n <ng-container *ngSwitchCase=\"'file-upload'\">\r\n <div style=\"display: flex; flex-direction: column; align-items: center;\">\r\n <img width=\"100\" *ngIf=\"uploadedImages[rowIndex]\" [src]=\"uploadedImages[rowIndex]\"\r\n alt=\"Uploaded Image\" (click)=\"deleteFile(uploadedImages[rowIndex], rowIndex)\"/>\r\n <input [class]=\"column?.className\" type=\"file\" name=\"file\" #uploadFile [(ngModel)]=\"row[column.header]\" hidden multiple\r\n (change)=\"uploadImage($event, rowIndex)\" />\r\n <button (click)=\"uploadFile.click()\">Upload</button>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea [class]=\"column?.className\" name=\"\" id=\"\" cols=\"30\" rows=\"2\"></textarea>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</fx-settings-panel>","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxIconSetting, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\n\r\n@Component({\r\n selector: 'lib-toggle-button',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, ReactiveFormsModule, FormsModule],\r\n templateUrl: './toggle-button.component.html',\r\n styleUrl: './toggle-button.component.css'\r\n})\r\nexport class ToggleButtonComponent extends FxBaseComponent { \r\n public toggleBtnControl = new UntypedFormControl(false);\r\n public isToggled = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.toggleBtnControl);\r\n })\r\n }\r\n\r\n public toggle(): void {\r\n this.isToggled = !this.toggleBtnControl.value;\r\n this.toggleBtnControl.setValue(this.isToggled);\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'classes', $title: 'Classes', value: '' }),\r\n new FxStringSetting({ key: 'active-text', $title: 'Active Text', value: 'On' }),\r\n new FxStringSetting({ key: 'inactive-text', $title: 'Inactive Text', value: 'Off' }),\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <button\r\n class=\"custom-toggle-btn\"\r\n [class]=\"setting('classes') ? setting('classes'): ''\"\r\n [class.active]=\"toggleBtnControl.value\"\r\n (click)=\"toggle()\"\r\n >\r\n {{ toggleBtnControl.value ? setting('active-text') : setting('inactive-text') }}\r\n </button>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSelectSetting, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { v4 as uuidv4} from 'uuid';\r\n\r\n@Component({\r\n selector: 'fx-uploader',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule],\r\n templateUrl: './uploader.component.html',\r\n styleUrl: './uploader.component.css'\r\n})\r\nexport class UploaderComponent extends FxBaseComponent {\r\n public uploadFileControl = new UntypedFormControl();\r\n public uploadedFiles: Array<any> = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr)\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.uploadFileControl);\r\n })\r\n }\r\n\r\n public onFileSelected(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files) {\r\n for(let i = 0; i < input?.files?.length; i++) {\r\n const file = input.files[i];\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n this.uploadedFiles.push({\r\n file: file,\r\n previewUrl: e.target?.result,\r\n name: file?.name,\r\n id: uuidv4()\r\n })\r\n this.uploadFileControl.setValue(this.uploadedFiles)\r\n }\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n }\r\n\r\n public deleteFile(id: string): void {\r\n this.uploadedFiles = this.uploadedFiles.filter(file => file?.id !== id);\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'upload-text', $title: 'Upload Text', value: 'Upload File'}),\r\n new FxSelectSetting({key: 'multiple-upload', $title: 'Multiple Upload', value: false}, [{option: 'Enable', value: true}, {option: 'Disable', value: false}])\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload\">\r\n <button type=\"button\" (click)=\"fileInput.click()\">\r\n {{setting('upload-text')}}\r\n </button>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [multiple]=\"setting('multiple-upload')\"\r\n (change)=\"onFileSelected($event)\"\r\n [formControl]=\"uploadFileControl\"\r\n hidden\r\n />\r\n <div class=\"file-list\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div (click)=\"deleteFile(file?.id)\" *ngFor=\"let file of uploadedFiles\">\r\n <img class=\"file-thumbnail\" style=\"border-radius: 4px\" [src]=\"file?.previewUrl\" alt=\"\">\r\n <!-- <p>{{file?.name}}</p> -->\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\n\r\n@Component({\r\n selector: 'fx-toggle',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.css'\r\n})\r\nexport class ToggleComponent extends FxBaseComponent {\r\n public toggleControl = new FormControl<boolean>(false)\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr)\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.toggleControl);\r\n })\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'accept', $title: 'Accept Text', value: 'Yes' }),\r\n new FxStringSetting({ key: 'reject', $title: 'Reject Text', value: 'No' })\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <div style=\"display: flex;\">\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"true\">\r\n <span class=\"mt-1\">{{setting('accept')}}</span>\r\n </label>\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"false\">\r\n <span class=\"mt-1\">{{setting('reject')}}</span>\r\n </label>\r\n </div>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FxBuilderConfiguration, FxComponentBuilder, FxForm, FxMode, FxScope, FxUtils } from '@instantsys-labs/fx';\r\nimport { DispatchToClinicComponent } from './custom-controls/dispatch-to-clinic/dispatch-to-clinic.component';\r\nimport { FxBuilderWrapperService } from './fx-builder-wrapper.service';\r\nimport { DynamicTableComponent } from './components/dynamic-table/dynamic-table.component';\r\nimport { ToggleButtonComponent } from './components/toggle-button/toggle-button.component';\r\nimport { UploaderComponent } from './components/uploader/uploader.component';\r\nimport { ToggleComponent } from './components/toggle/toggle.component';\r\n\r\n@Component({\r\n selector: 'fx-builder-wrapper',\r\n standalone: true,\r\n imports: [CommonModule, FxComponentBuilder],\r\n template: `\r\n <fx-component-builder \r\n #componentBuilder \r\n [fx-form]=\"fxForm\" \r\n [configuration]=\"fxConfiguration\" \r\n [scope]=\"FxScope.BUILDER\"\r\n >\r\n </fx-component-builder>\r\n `,\r\n styleUrl: './form-builder.css',\r\n})\r\nexport class FxBuilderWrapperComponent implements OnInit {\r\n @ViewChild('componentBuilder') componentBuilder!: FxComponentBuilder;\r\n @Input({ alias: 'fx-form', required: true }) fxForm: FxForm = FxUtils.createNewForm();\r\n public fxMode: FxMode = FxMode.EDIT;\r\n public fxConfiguration: FxBuilderConfiguration = {\r\n settings: true,\r\n logics: true,\r\n customControls: true,\r\n }\r\n\r\n protected readonly FxScope = FxScope;\r\n protected readonly FxMode = FxMode;\r\n\r\n constructor(private fxWrapperService: FxBuilderWrapperService) { }\r\n\r\n public ngOnInit(): void {\r\n if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {\r\n this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {\r\n this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {\r\n this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);\r\n }\r\n };\r\n\r\n public getParsedForm(): FxForm {\r\n return this.componentBuilder.getParsedForm();\r\n }\r\n\r\n public getInitializedFxForm(): FxForm {\r\n return FxUtils.createNewForm(); \r\n }\r\n}\r\n\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { FxForm, FxFormComponent } from '@instantsys-labs/fx';\r\nimport { DispatchToClinicComponent } from '../../custom-controls/dispatch-to-clinic/dispatch-to-clinic.component';\r\nimport { FxBuilderWrapperService } from '../../fx-builder-wrapper.service';\r\nimport { DynamicTableComponent } from '../dynamic-table/dynamic-table.component';\r\nimport { ToggleButtonComponent } from '../toggle-button/toggle-button.component';\r\nimport { UploaderComponent } from '../uploader/uploader.component';\r\nimport { ToggleComponent } from '../toggle/toggle.component';\r\n\r\n@Component({\r\n selector: 'fx-form-component',\r\n standalone: true,\r\n imports: [CommonModule, FxFormComponent],\r\n template: `\r\n <fx-form \r\n [fxForm]=\"fxForm\" \r\n [value]=\"variables\" \r\n (onSubmit)=\"onSubmit($event)\" \r\n #form\r\n >\r\n </fx-form>\r\n `,\r\n})\r\nexport class FxFormWrapperComponent implements OnChanges, OnInit {\r\n @ViewChild('form') form!: FxFormComponent;\r\n @Input() fxForm!: FxForm;\r\n @Input() variables: any;\r\n @Output() fxFormSubmit = new EventEmitter<any>();\r\n\r\n constructor(private fxWrapperService: FxBuilderWrapperService) { }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void { \r\n if('variables' in changes && !changes['fxForm']) {\r\n this.fxWrapperService.variables$.next(this.variables);\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {\r\n this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {\r\n this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {\r\n this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);\r\n }\r\n }\r\n\r\n public onSubmit(event: any): void {\r\n this.fxFormSubmit.emit(event);\r\n }\r\n\r\n public submit(): void {\r\n this.form.submit();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of fx-builder-wrapper\r\n */\r\n\r\nexport * from './lib/fx-builder-wrapper.service';\r\nexport * from './lib/fx-builder-wrapper.component'; // builder // admin\r\nexport * from './lib/components/fx-form-component/fx-form-component.component'; // form preview\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i1.FxBuilderWrapperService","i3","uuidv4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fx-form-builder-wrapper.mjs","sources":["../../../projects/fx-builder-wrapper/src/lib/fx-builder-wrapper.service.ts","../../../projects/fx-builder-wrapper/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.ts","../../../projects/fx-builder-wrapper/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.html","../../../projects/fx-builder-wrapper/src/lib/panel/configuration-panel/configuration-panel.component.ts","../../../projects/fx-builder-wrapper/src/lib/panel/configuration-panel/configuration-panel.component.html","../../../projects/fx-builder-wrapper/src/lib/panel/settings-panel/settings-panel.component.ts","../../../projects/fx-builder-wrapper/src/lib/panel/settings-panel/settings-panel.component.html","../../../projects/fx-builder-wrapper/src/lib/components/dynamic-table/dynamic-table.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/dynamic-table/dynamic-table.component.html","../../../projects/fx-builder-wrapper/src/lib/components/toggle-button/toggle-button.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/toggle-button/toggle-button.component.html","../../../projects/fx-builder-wrapper/src/lib/components/uploader/uploader.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/uploader/uploader.component.html","../../../projects/fx-builder-wrapper/src/lib/components/toggle/toggle.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/toggle/toggle.component.html","../../../projects/fx-builder-wrapper/src/lib/fx-builder-wrapper.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/fx-form-component/fx-form-component.component.ts","../../../projects/fx-builder-wrapper/src/public-api.ts","../../../projects/fx-builder-wrapper/src/fx-form-builder-wrapper.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\r\nimport { FxBaseComponent, FxComponentRegistryService, FxForm, FxUtils } from '@instantsys-labs/fx';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FxBuilderWrapperService {\r\n public variables$ = new BehaviorSubject<any | null>(null);\r\n constructor(private fxComponentRegistry: FxComponentRegistryService) { }\r\n\r\n public registerCustomComponent(title: string, selector: string, component: Type<FxBaseComponent>\r\n ): void {\r\n this.fxComponentRegistry.registerComponent(selector, component, {\r\n registeringAs: \"CUSTOM\",\r\n libraryItem: {\r\n title,\r\n icon: 'fa-eye',\r\n fxData: {\r\n id: null,\r\n name: selector,\r\n value: \"\",\r\n selector: selector,\r\n elements: [],\r\n events: []\r\n }\r\n },\r\n })\r\n }\r\n\r\n public getComponent(selector: string): Type<FxBaseComponent> | undefined {\r\n return this.fxComponentRegistry.getComponent(selector);\r\n }\r\n\r\n public getInitializedFxForm(): FxForm {\r\n return FxUtils.createNewForm(); \r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule, Validators, FormBuilder, FormsModule } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { BehaviorSubject, take } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-dispatch-to-clinic',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent],\r\n templateUrl: './dispatch-to-clinic.component.html'\r\n})\r\nexport class DispatchToClinicComponent extends FxBaseComponent {\r\n private fb = inject(FormBuilder);\r\n\r\n public clinicAddress$: BehaviorSubject<any> = new BehaviorSubject<any>({});\r\n\r\n public dispatchForm: FormGroup = this.fb.group({\r\n courierName: ['', Validators.required],\r\n trackingNumber: ['', Validators.required],\r\n trackingUrl: ['', [Validators.required, Validators.pattern('https?://.+')]],\r\n notes: ['', Validators.required]\r\n })\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n\r\n this.onInit.subscribe(() => {\r\n this._register(this.dispatchForm);\r\n });\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [new FxStringSetting({ key: 'heading-text', $title: 'Heading Text', value: 'My Default Value' })];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n\r\n public copyToClipboard(address: any): void {\r\n navigator.clipboard.writeText(address);\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <section\r\n class=\"justify-content-around lg:justify-content-between w-full white-color border-1 border-solid stroke_light_grey p-3 mb-3 mt-3\">\r\n <form [formGroup]=\"dispatchForm\">\r\n <div class=\"grid\">\r\n <!-- Courier Name -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"courierName\" class=\"input-title\">Courier Name</label>\r\n <input autocomplete=\"off\" formControlName=\"courierName\" type=\"text\" id=\"courierName\"\r\n name=\"courierName\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter courier name\" />\r\n\r\n <!-- validation -->\r\n <small *ngIf=\"dispatchForm.get('courierName')?.invalid && dispatchForm.get('courierName')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Courier Name is required.\r\n </small>\r\n <!-- validation -->\r\n </div>\r\n <!-- Courier Name -->\r\n\r\n <!-- Tracking Number -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingNumber\" class=\"input-title\">Tracking Number</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingNumber\" type=\"text\" id=\"trackingNumber\"\r\n name=\"trackingNumber\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking number\" />\r\n <small\r\n *ngIf=\"dispatchForm.get('trackingNumber')?.invalid && dispatchForm.get('trackingNumber')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Tracking Number is required.\r\n </small>\r\n </div>\r\n <!-- Tracking Number -->\r\n\r\n <!-- Tracking URL -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingUrl\" class=\"input-title\">Tracking URL</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingUrl\" type=\"text\" id=\"trackingUrl\"\r\n name=\"trackingUrl\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking url\" />\r\n <small *ngIf=\"dispatchForm.get('trackingUrl')?.invalid && dispatchForm.get('trackingUrl')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['required']\">Tracking URL is\r\n required.</span>\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['pattern']\">Invalid URL format.</span>\r\n </small>\r\n </div>\r\n <!-- Tracking URL -->\r\n\r\n <!-- Notes -->\r\n <div class=\"col-12 md:col-6 input-container\">\r\n <label for=\"notes\" class=\"input-title\">Notes</label>\r\n <textarea autocomplete=\"off\" formControlName=\"notes\" rows=\"5\" id=\"notes\" name=\"notes\"\r\n class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter notes\"></textarea>\r\n <small *ngIf=\"dispatchForm.get('notes')?.invalid && dispatchForm.get('notes')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Notes are required.\r\n </small>\r\n </div>\r\n <!-- Notes -->\r\n\r\n <!-- Address with Copy Icon -->\r\n <div class=\"col-12 md:col-6 pt-0\">\r\n <div class=\"mb-1\">Address</div>\r\n <ng-container *ngIf=\"(clinicAddress$ | async) as address\">\r\n <address #completeAddress>{{address?.street}}, {{address?.state}}, {{address?.postalCode}}\r\n <i class=\"pi pi-copy cursor-pointer text-xl text-secondary-color\"\r\n (click)=\"copyToClipboard(completeAddress.textContent)\"></i>\r\n </address>\r\n </ng-container>\r\n </div>\r\n <!-- Address with Copy Icon -->\r\n </div>\r\n </form>\r\n </section>\r\n</fx-component>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { FormArray, FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'fx-configuration-panel',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, ButtonModule, DialogModule, InputTextModule, FormsModule, DropdownModule, ButtonModule],\r\n templateUrl: './configuration-panel.component.html',\r\n styleUrl: './configuration-panel.component.css',\r\n})\r\nexport class ConfigurationPanelComponent implements OnInit{\r\n @Input() visible: boolean = false;\r\n @Output() isVisible = new EventEmitter<boolean>();\r\n @Output() configuration = new EventEmitter<any>();\r\n\r\n public rows: number = 1;\r\n public enableAPI: boolean = false;\r\n public api: string = '';\r\n\r\n public dynamicForm: FormGroup;\r\n public columnTypes: string[] = ['text', 'input-text', 'input-number', 'dropdown', 'smart-dropdown', 'checkbox', 'radio', 'radio-group', 'file-upload', 'textarea'];\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.dynamicForm = this.fb.group({\r\n columns: this.fb.array([])\r\n });\r\n }\r\n ngOnInit(): void {\r\n this.addColumn();\r\n }\r\n\r\n get columns(): FormArray {\r\n return this.dynamicForm.get('columns') as FormArray;\r\n }\r\n\r\n // **🔹 Add Column Dynamically**\r\n public addColumn(): void {\r\n const columnFormGroup = this.fb.group({\r\n header: ['', Validators.required],\r\n cellType: ['', Validators.required],\r\n placeholder: '',\r\n options: this.fb.array([]),\r\n apiUrl: '',\r\n valueKey: '',\r\n labelKey: '',\r\n className: '',\r\n apiKey: ''\r\n });\r\n this.columns.push(columnFormGroup);\r\n }\r\n\r\n \r\n public removeColumn(index: number): void {\r\n if (this.columns.length > 1) {\r\n this.columns.removeAt(index);\r\n }\r\n }\r\n\r\n // **🔹 Duplicate Column**\r\n public duplicateColumn(index: number): void {\r\n const currentColumn = this.columns.at(index).value;\r\n const duplicateColumn = this.fb.group({\r\n header: [currentColumn.header, Validators.required],\r\n cellType: [currentColumn.cellType, Validators.required],\r\n placeholder: [currentColumn.placeholder],\r\n apiUrl: [currentColumn.apiUrl],\r\n valueKey: [currentColumn.valueKey],\r\n labelKey: [currentColumn.labelKey],\r\n className: [currentColumn.className],\r\n apiKey: [currentColumn.apiKey],\r\n options: this.fb.array(\r\n currentColumn.options.map((option: any) => this.fb.group({\r\n optionName: [option.optionName, Validators.required],\r\n optionValue: [option.optionValue, Validators.required]\r\n }))\r\n )\r\n });\r\n this.columns.insert(index + 1, duplicateColumn);\r\n }\r\n\r\n // **🔹 Add Options Dynamically**\r\n public addOption(columnIndex: number): void {\r\n const optionGroup = this.fb.group({\r\n optionName: ['', Validators.required],\r\n optionValue: ['', Validators.required]\r\n });\r\n\r\n this.getOptions(columnIndex).push(optionGroup);\r\n }\r\n\r\n // **🔹 Get Options FormArray for a Specific Column**\r\n public getOptions(columnIndex: number): FormArray {\r\n return this.columns.at(columnIndex).get('options') as FormArray;\r\n }\r\n\r\n // **🔹 Close Dialog**\r\n public closeDialog(): void {\r\n this.isVisible.emit(false);\r\n }\r\n\r\n // **🔹 Save Configuration**\r\n public saveConfiguration(): void {\r\n this.configuration.emit({\r\n rows: this.rows,\r\n columns: this.dynamicForm.value?.columns,\r\n enableAPI: this.enableAPI,\r\n api: this.api\r\n });\r\n this.isVisible.emit(false);\r\n }\r\n\r\n public onSubmit(): void {\r\n console.log(\"Value columns formArray\", this.dynamicForm.value);\r\n }\r\n}\r\n","<p-dialog header=\"Edit Configurations\" [modal]=\"true\" [draggable]=\"false\" [(visible)]=\"visible\" [style]=\"{width: '70rem'}\" class=\"customDialogClass\">\r\n <!-- <ng-template pTemplate=\"header\">\r\n <div class=\"flex p-2 bg-white border-2\">\r\n <p class=\"text-base\">Edit Configurations</p>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"flex flex-col gap-4 bg-white p-2 border-2 border-gray-200\">\r\n <div class=\"flex items-center gap-4 mb-8 w-full\">\r\n <div class=\"w-1/3\">\r\n <label for=\"rows\" class=\"font-semibold w-24\">Rows</label>\r\n <input type=\"text\" [disabled]=\"enableAPI\" [(ngModel)]=\"rows\" placeholder=\"rows\" class=\"form__input\" id=\"name\" autocomplete=\"rows\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n <label for=\"enableAPI\" class=\"font-semibold w-24\">Enable API</label>\r\n <input type=\"checkbox\" [(ngModel)]=\"enableAPI\" placeholder=\"API Url\" id=\"enableAPI\" autocomplete=\"enableAPI\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n @if (enableAPI) {\r\n <ng-container>\r\n <label for=\"api\" class=\"font-semibold w-24\">API</label>\r\n <input type=\"text\" [(ngModel)]=\"api\" placeholder=\"Enter API Url\" id=\"api\" class=\"form__input\" autocomplete=\"api\" />\r\n </ng-container>\r\n }\r\n </div> \r\n \r\n </div>\r\n <!-- <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n \r\n \r\n </div> -->\r\n \r\n <div class=\"flex flex-wrap gap-4 mb-8\">\r\n \r\n <div class=\"w-full flex items-center justify-between\">\r\n <p class=\"text-sm font-semibold\">Columns:</p>\r\n <!-- <button type=\"button\" (click)=\"addColumn()\" class=\"custom-save-button\">Add Column</button> -->\r\n </div>\r\n \r\n <div class=\"w-full overflow-x-auto\">\r\n <form [formGroup]=\"dynamicForm\" (ngSubmit)=\"onSubmit()\">\r\n <!-- Flex container with nowrap to keep all columns in a single row -->\r\n <div formArrayName=\"columns\" class=\"flex gap-4 flex-nowrap whitespace-nowrap\">\r\n <div *ngFor=\"let column of columns.controls; let i = index\" [formGroupName]=\"i\" \r\n class=\"border p-4 rounded-lg min-w-[20rem] flex-shrink-0 card-width\">\r\n <div class=\"top-2 right-2 flex gap-2 justify-end\">\r\n <button type=\"button\" (click)=\"duplicateColumn(i)\" \r\n class=\"bg-green-500 text-white px-3 py-1 rounded-md hover:bg-green-600\">\r\n ➕\r\n </button>\r\n <button type=\"button\" (click)=\"removeColumn(i)\" \r\n class=\"text-white px-3 py-1 rounded-md hover:bg-red-600\" *ngIf=\"columns.length>1\">\r\n ❌\r\n </button>\r\n </div>\r\n <!-- Columns in a Single Row -->\r\n <div class=\"grid grid-cols-1 gap-4 items-center mb-2\">\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Name:</label>\r\n <input formControlName=\"header\" placeholder=\"Enter Column Name\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Type:</label>\r\n <select formControlName=\"cellType\" class=\"w-full border rounded-md px-3 py-2\">\r\n <option *ngFor=\"let type of columnTypes\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n </div>\r\n @if (enableAPI) {\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">API Value Key:</label>\r\n <input formControlName=\"apiKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n }\r\n \r\n </div>\r\n <div *ngIf=\"['radio-group', 'dropdown'].includes(column.value.cellType)\" class=\"mt-2\">\r\n\r\n <label class=\"font-semibold\">Options:</label>\r\n \r\n <div formArrayName=\"options\">\r\n <div *ngFor=\"let option of getOptions(i).controls; let j = index\" [formGroupName]=\"j\" \r\n class=\"grid grid-cols-1 gap-4 items-center mt-2\">\r\n <input formControlName=\"optionName\" placeholder=\"Enter Option Name\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <input formControlName=\"optionValue\" placeholder=\"Enter Option Value\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <button type=\"button\" (click)=\"getOptions(i).removeAt(j)\" \r\n class=\"col-span-2 bg-red-500 text-white px-2 py-1 rounded-md hover:bg-red-600\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <button type=\"button\" (click)=\"addOption(i)\" class=\"custom-save-button justify-end\">Add Option</button>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"['smart-dropdown'].includes(column.value.cellType)\" class=\"grid grid-cols-1 gap-4 mt-4\">\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">API Url:</label>\r\n <input formControlName=\"apiUrl\" placeholder=\"Enter API URL\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Value Key:</label>\r\n <input formControlName=\"valueKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Label Key:</label>\r\n <input formControlName=\"labelKey\" placeholder=\"Enter Label Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <!-- <hr class=\"mt-3 mx-2 mb-0 opacity-10\"> -->\r\n <!-- <div class=\"flex justify-end gap-4 w-full\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\" />\r\n <p-button styleClass=\"border border-indigo-600\" label=\"Save\" (click)=\"saveConfiguration()\" />\r\n </div> -->\r\n <div class=\"flex justify-center my-3\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\"\r\n styleClass=\"border-gray-400\" />\r\n <p-button label=\"Attach\" label=\"Save\" (click)=\"saveConfiguration()\" \r\n styleClass=\"cta_buttons text-medium button_text_white secondary-color border-1 stroke_secondary no_hightlight no_hightlight_stroke h-max mr-2 w-6rem custom-save-button\"\r\n />\r\n </div>\r\n </ng-template>\r\n</p-dialog>","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FxComponent, FxData, FxMode, FxSettingComponent, FxSettingsService, FxUtils } from '@instantsys-labs/fx';\r\nimport { Dialog } from 'primeng/dialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { ConfigurationPanelComponent } from '../configuration-panel/configuration-panel.component';\r\n\r\n@Component({\r\n selector: 'fx-settings-panel',\r\n standalone: true,\r\n imports: [CommonModule, ButtonModule, InputTextModule, ConfigurationPanelComponent],\r\n templateUrl: './settings-panel.component.html',\r\n styleUrl: './settings-panel.component.css'\r\n})\r\nexport class SettingsPanelComponent extends FxComponent implements OnInit {\r\n @Output() configuration = new EventEmitter<any>();\r\n public visible: boolean = false;\r\n\r\n public openSettingDialog(): void {\r\n this.visible = true;\r\n }\r\n}\r\n","<fx-configuration-panel [visible]=\"visible\" (isVisible)=\"visible = $event\" (configuration)=\"configuration.emit($event)\"></fx-configuration-panel>\r\n\r\n<div class=\"fx-element\">\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"fxData.$fxForm?.$mode !== FxMode.VIEW\">\r\n <div class=\"fx-overlay border-gray-400 border rounded cursor-pointer\" (click)=\"onElementSelect(fxData)\"\r\n (dblclick)=\"openSettingDialog()\">\r\n <div class=\"fx-actions flex justify-between\">\r\n\r\n <div class=\"bg-gray-700 text-gray-300 px-2 rounded-t ml-2 text-xs flex justify-center items-center\">\r\n <div>#{{ fxData.name }}-<span class=\"text-xs italic\">{{ fxData.id }}</span></div>\r\n </div>\r\n\r\n <div class=\"flex justify-around items-end mr-2\">\r\n <div class=\"cursor-pointer bg-secondary text-white w-8 mr-1 text-center rounded-t\" title=\"Settings\"\r\n (click)=\"fxSettingService.openSetting(fxData)\">\r\n <i class=\"fa fa-cog text-xs\"></i>\r\n </div>\r\n <div (click)=\"deleteElement(fxData)\"\r\n class=\"cursor-pointer bg-red-600 text-white w-8 mr-1 text-center rounded-t\" title=\"Delete\">\r\n <i class=\"fa fa-times text-xs\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container #dynamicComponentContainer></ng-container>\r\n </ng-container>\r\n</div>","import { AfterViewInit, ChangeDetectorRef, Component, inject, Input, NgZone, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FxBaseComponent, FxMode, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { SettingsPanelComponent } from '../../panel/settings-panel/settings-panel.component';\r\nimport { FxBuilderWrapperService } from '../../fx-builder-wrapper.service';\r\nimport {Subject, takeUntil } from 'rxjs';\r\n\r\nexport interface TableColumnConfig {\r\n header: string;\r\n cellType: 'text' | 'input-text' | 'input-number' | 'dropdown' | 'smart-dropdown' | 'checkbox' | 'radio' | 'radio-group' | 'file-upload' | 'textarea';\r\n placeholder?: string;\r\n options?: string[];\r\n apiUrl?: string;\r\n valueKey?: string;\r\n labelKey?: string;\r\n className?: string;\r\n}\r\nexport interface TableConfig {\r\n columns: TableColumnConfig[];\r\n rows: any[];\r\n}\r\n@Component({\r\n selector: 'fx-dynamic-table',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, SettingsPanelComponent, ReactiveFormsModule],\r\n templateUrl: './dynamic-table.component.html',\r\n styleUrl: './dynamic-table.component.css',\r\n})\r\n\r\nexport class DynamicTableComponent extends FxBaseComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() tableRows: Array<any> = [];\r\n @Input() previewType: FxMode = FxMode.VIEW;\r\n @Input() tableConfig: any = {\r\n columns: [\r\n { header: 'Column 1', cellType: 'text' },\r\n { header: 'Column 2', cellType: 'text' },\r\n { header: 'Column 3', cellType: 'text' },\r\n { header: 'Column 4', cellType: 'text' },\r\n { header: 'Column 5', cellType: 'text' },\r\n ],\r\n};\r\n\r\n private destroy$ = new Subject<Boolean>();\r\n public uploadedImages: Array<string | null> = [];\r\n public tableFormControl = new FormControl();\r\n public smartDropdownOptions: { [key: string]: Array<{ name: string, value: string }> } = {};\r\n private http = inject(HttpClient);\r\n constructor(private cdr: ChangeDetectorRef, private fxBuilderWrapperService: FxBuilderWrapperService) {\r\n super(cdr);\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.tableFormControl);\r\n })\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.fxBuilderWrapperService.variables$.pipe(\r\n takeUntil(this.destroy$)).subscribe((variables: any) => {\r\n if(variables) {\r\n let dynamicTableValues: any;\r\n for(const [key, value] of Object.entries(variables)) {\r\n if(key.includes('dynamic-table')) {\r\n dynamicTableValues = value;\r\n }\r\n }\r\n if(Object.keys(dynamicTableValues).length) {\r\n // const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;\r\n const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;\r\n dynamicTableValues?.rows?.forEach((item: any, index: number) => {\r\n this.uploadedImages[index] = item[fileHeaderName] ? item[fileHeaderName]: null;\r\n })\r\n this.tableConfig = dynamicTableValues;\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n }\r\n })\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n if(this.fxData?.value && Object.keys(this.fxData?.value)?.length != 0) {\r\n this.tableConfig = this.fxData.value;\r\n this.fetchSmartDropdownData();\r\n }\r\n }, 100)\r\n }\r\n \r\n protected fetchSmartDropdownData(): void {\r\n this.tableConfig.columns\r\n .filter((column: TableColumnConfig) => column.cellType === 'smart-dropdown' && column?.apiUrl)\r\n .forEach((column: TableColumnConfig) => {\r\n this.http.get<any>(column.apiUrl!).subscribe((response: any) => {\r\n this.smartDropdownOptions[column.header] = response.map((item: any) => ({\r\n value: item[column.valueKey!],\r\n name: item[column.labelKey!],\r\n }));\r\n });\r\n });\r\n }\r\n\r\n public uploadImage(event: Event, rowIndex: number): void {\r\n const file = (event.target as HTMLInputElement).files?.[0];\r\n if (file) {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n this.uploadedImages[rowIndex] = reader.result as string;\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'column-size', $title: 'No. of columns', value: 1 }),\r\n new FxStringSetting({ key: 'table-config', $title: 'Table Configuration', value: {} }),\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n\r\n public getArray(count: number): number[] {\r\n return Array.from({ length: count });\r\n }\r\n\r\n public onChangeConfiguration(event: any): void { \r\n const columns = event.columns.map((col: any) => {\r\n return {\r\n header: col?.header,\r\n cellType: col?.cellType,\r\n placeholder: col?.placeholder,\r\n options: col?.options,\r\n apiUrl: col?.apiUrl,\r\n valueKey: col?.valueKey,\r\n labelKey: col?.labelKey,\r\n className: col?.className,\r\n apiKey: col?.apiKey\r\n }\r\n });\r\n if(!event?.enableAPI) {\r\n this.tableConfig.columns = columns;\r\n // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => ({ name: `SKU-${index + 1}`, age: index % 2 !== 0, gender: 'male' }))\r\n // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => {\r\n // const rows = columns.map((c: any) => {\r\n // return {\r\n // c?.header: null\r\n // }\r\n // })\r\n // return rows\r\n // })\r\n this.tableConfig.rows = Array.from({ length: +event?.rows }, (_, index) => {\r\n return columns.reduce((acc: any, c: any) => {\r\n acc[c?.header] = ''; // Initialize each column key with null\r\n return acc;\r\n }, {});\r\n });\r\n \r\n this.fetchSmartDropdownData();\r\n }\r\n if(event?.enableAPI) {\r\n this.drawTable(event, columns)\r\n this.tableConfig = {\r\n columns: columns,\r\n rows: []\r\n };\r\n }\r\n\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n\r\n private updateSettings(): void{\r\n if(this.fxData.settings){\r\n for(let setting of this.fxData.settings){\r\n if(setting.key === 'table-config'){\r\n setting.value = this.tableConfig;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public drawTable(event: any, columns: any): void {\r\n let rows;\r\n this.http.get(event.api).subscribe((res: any) => {\r\n if(res) {\r\n rows = res.map((item: any) => {\r\n const newObj: Record<string, any> = {};\r\n columns.forEach((col: any) => {\r\n newObj[col.header] = item[col.apiKey];\r\n });\r\n return newObj;\r\n });\r\n this.tableConfig = {\r\n columns,\r\n rows\r\n }\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n })\r\n }\r\n\r\n public deleteFile(file: any, index: number): void {\r\n this.uploadedImages.splice(index, 1, null);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<fx-settings-panel [fxData]=\"fxData\" (configuration)=\"onChangeConfiguration($event)\">\r\n <div style=\"padding: 0 1.5rem;\" *ngIf=\"fxData\">\r\n <table style=\"width: 100%;\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of tableConfig.columns\">{{ column.header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of tableConfig.rows; let rowIndex = index\">\r\n <td style=\"text-align: left;\" *ngFor=\"let column of tableConfig.columns\">\r\n <ng-container [ngSwitch]=\"column.cellType\">\r\n <span [class]=\"column?.className\" *ngSwitchCase=\"'text'\">{{row[column.header]}}</span>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-text'\" type=\"text\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-number'\" type=\"number\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <select [class]=\"column?.className\" *ngSwitchCase=\"'dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <option *ngFor=\"let option of column?.options\" [value]=\"option?.optionValue\"> \r\n {{ option?.optionName }}\r\n </option>\r\n </select>\r\n \r\n <select [class]=\"column?.className\" style=\"width: 60%;\" *ngSwitchCase=\"'smart-dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <option *ngFor=\"let option of smartDropdownOptions[column.header]\" [value]=\"option?.value\">\r\n {{option?.name }}\r\n </option>\r\n </select>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'checkbox'\" type=\"checkbox\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input name=\"radio-{{rowIndex}}\" [class]=\"column?.className\" *ngSwitchCase=\"'radio'\" type=\"radio\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <div [class]=\"column?.className\" style=\"display: flex; justify-content: center; gap: 10px;\"\r\n *ngSwitchCase=\"'radio-group'\">\r\n <label *ngFor=\"let option of column.options\">\r\n <input name=\"radio-group-{{rowIndex}}\" type=\"radio\" [value]=\"option?.optionName\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n {{ option?.optionName }}\r\n </label>\r\n </div>\r\n \r\n <ng-container *ngSwitchCase=\"'file-upload'\">\r\n <div style=\"display: flex; flex-direction: column; align-items: center;\">\r\n <img width=\"100\" *ngIf=\"uploadedImages[rowIndex]\" [src]=\"uploadedImages[rowIndex]\"\r\n alt=\"Uploaded Image\" (click)=\"deleteFile(uploadedImages[rowIndex], rowIndex)\"/>\r\n <input [class]=\"column?.className\" type=\"file\" name=\"file\" #uploadFile [(ngModel)]=\"row[column.header]\" hidden multiple\r\n (change)=\"uploadImage($event, rowIndex)\" />\r\n <button (click)=\"uploadFile.click()\">Upload</button>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea [class]=\"column?.className\" name=\"\" id=\"\" cols=\"30\" rows=\"2\"></textarea>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</fx-settings-panel>","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxIconSetting, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\n\r\n@Component({\r\n selector: 'lib-toggle-button',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, ReactiveFormsModule, FormsModule],\r\n templateUrl: './toggle-button.component.html',\r\n styleUrl: './toggle-button.component.css'\r\n})\r\nexport class ToggleButtonComponent extends FxBaseComponent { \r\n public toggleBtnControl = new UntypedFormControl(false);\r\n public isToggled = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.toggleBtnControl);\r\n })\r\n }\r\n\r\n public toggle(): void {\r\n this.isToggled = !this.toggleBtnControl.value;\r\n this.toggleBtnControl.setValue(this.isToggled);\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'classes', $title: 'Classes', value: '' }),\r\n new FxStringSetting({ key: 'active-text', $title: 'Active Text', value: 'On' }),\r\n new FxStringSetting({ key: 'inactive-text', $title: 'Inactive Text', value: 'Off' }),\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <button\r\n class=\"custom-toggle-btn\"\r\n [class]=\"setting('classes') ? setting('classes'): ''\"\r\n [class.active]=\"toggleBtnControl.value\"\r\n (click)=\"toggle()\"\r\n >\r\n {{ toggleBtnControl.value ? setting('active-text') : setting('inactive-text') }}\r\n </button>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSelectSetting, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { v4 as uuidv4} from 'uuid';\r\n\r\n@Component({\r\n selector: 'fx-uploader',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule],\r\n templateUrl: './uploader.component.html',\r\n styleUrl: './uploader.component.css'\r\n})\r\nexport class UploaderComponent extends FxBaseComponent {\r\n public uploadFileControl = new UntypedFormControl();\r\n public uploadedFiles: Array<any> = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr)\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.uploadFileControl);\r\n })\r\n }\r\n\r\n public onFileSelected(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files) {\r\n for(let i = 0; i < input?.files?.length; i++) {\r\n const file = input.files[i];\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n this.uploadedFiles.push({\r\n file: file,\r\n previewUrl: e.target?.result,\r\n name: file?.name,\r\n id: uuidv4()\r\n })\r\n this.uploadFileControl.setValue(this.uploadedFiles)\r\n }\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n }\r\n\r\n public deleteFile(id: string): void {\r\n this.uploadedFiles = this.uploadedFiles.filter(file => file?.id !== id);\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'upload-text', $title: 'Upload Text', value: 'Upload File'}),\r\n new FxSelectSetting({key: 'multiple-upload', $title: 'Multiple Upload', value: false}, [{option: 'Enable', value: true}, {option: 'Disable', value: false}])\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload\">\r\n <button type=\"button\" (click)=\"fileInput.click()\">\r\n {{setting('upload-text')}}\r\n </button>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [multiple]=\"setting('multiple-upload')\"\r\n (change)=\"onFileSelected($event)\"\r\n [formControl]=\"uploadFileControl\"\r\n hidden\r\n />\r\n <div class=\"file-list\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div (click)=\"deleteFile(file?.id)\" *ngFor=\"let file of uploadedFiles\">\r\n <img class=\"file-thumbnail\" style=\"border-radius: 4px\" [src]=\"file?.previewUrl\" alt=\"\">\r\n <!-- <p>{{file?.name}}</p> -->\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\n\r\n@Component({\r\n selector: 'fx-toggle',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.css'\r\n})\r\nexport class ToggleComponent extends FxBaseComponent {\r\n public toggleControl = new FormControl<boolean>(false)\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr)\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.toggleControl);\r\n })\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'accept', $title: 'Accept Text', value: 'Yes' }),\r\n new FxStringSetting({ key: 'reject', $title: 'Reject Text', value: 'No' })\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <div style=\"display: flex;\">\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"true\">\r\n <span class=\"mt-1\">{{setting('accept')}}</span>\r\n </label>\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"false\">\r\n <span class=\"mt-1\">{{setting('reject')}}</span>\r\n </label>\r\n </div>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FxBuilderConfiguration, FxComponentBuilder, FxForm, FxMode, FxScope, FxUtils } from '@instantsys-labs/fx';\r\nimport { DispatchToClinicComponent } from './custom-controls/dispatch-to-clinic/dispatch-to-clinic.component';\r\nimport { FxBuilderWrapperService } from './fx-builder-wrapper.service';\r\nimport { DynamicTableComponent } from './components/dynamic-table/dynamic-table.component';\r\nimport { ToggleButtonComponent } from './components/toggle-button/toggle-button.component';\r\nimport { UploaderComponent } from './components/uploader/uploader.component';\r\nimport { ToggleComponent } from './components/toggle/toggle.component';\r\n\r\n@Component({\r\n selector: 'fx-builder-wrapper',\r\n standalone: true,\r\n imports: [CommonModule, FxComponentBuilder],\r\n template: `\r\n <fx-component-builder \r\n #componentBuilder \r\n [fx-form]=\"fxForm\" \r\n [configuration]=\"fxConfiguration\" \r\n [scope]=\"FxScope.BUILDER\"\r\n >\r\n </fx-component-builder>\r\n `,\r\n styleUrl: './form-builder.css',\r\n})\r\nexport class FxBuilderWrapperComponent implements OnInit {\r\n @ViewChild('componentBuilder') componentBuilder!: FxComponentBuilder;\r\n @Input({ alias: 'fx-form', required: true }) fxForm: FxForm = FxUtils.createNewForm();\r\n public fxMode: FxMode = FxMode.EDIT;\r\n public fxConfiguration: FxBuilderConfiguration = {\r\n settings: true,\r\n logics: true,\r\n customControls: true,\r\n }\r\n\r\n protected readonly FxScope = FxScope;\r\n protected readonly FxMode = FxMode;\r\n\r\n constructor(private fxWrapperService: FxBuilderWrapperService) { }\r\n\r\n public ngOnInit(): void {\r\n if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {\r\n this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {\r\n this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {\r\n this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);\r\n }\r\n };\r\n\r\n public getParsedForm(): FxForm {\r\n return this.componentBuilder.getParsedForm();\r\n }\r\n\r\n public getInitializedFxForm(): FxForm {\r\n return FxUtils.createNewForm(); \r\n }\r\n}\r\n\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { FxForm, FxFormComponent } from '@instantsys-labs/fx';\r\nimport { DispatchToClinicComponent } from '../../custom-controls/dispatch-to-clinic/dispatch-to-clinic.component';\r\nimport { FxBuilderWrapperService } from '../../fx-builder-wrapper.service';\r\nimport { DynamicTableComponent } from '../dynamic-table/dynamic-table.component';\r\nimport { ToggleButtonComponent } from '../toggle-button/toggle-button.component';\r\nimport { UploaderComponent } from '../uploader/uploader.component';\r\nimport { ToggleComponent } from '../toggle/toggle.component';\r\n\r\n@Component({\r\n selector: 'fx-form-component',\r\n standalone: true,\r\n imports: [CommonModule, FxFormComponent],\r\n template: `\r\n <fx-form \r\n [fxForm]=\"fxForm\" \r\n [value]=\"variables\" \r\n (onSubmit)=\"onSubmit($event)\" \r\n #form\r\n >\r\n </fx-form>\r\n `,\r\n})\r\nexport class FxFormWrapperComponent implements OnChanges, OnInit {\r\n @ViewChild('form') form!: FxFormComponent;\r\n @Input() fxForm!: FxForm;\r\n @Input() variables: any;\r\n @Output() fxFormSubmit = new EventEmitter<any>();\r\n\r\n constructor(private fxWrapperService: FxBuilderWrapperService) { }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void { \r\n if('variables' in changes && !changes['fxForm']) {\r\n this.fxWrapperService.variables$.next(this.variables);\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {\r\n this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {\r\n this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {\r\n this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);\r\n }\r\n }\r\n\r\n public onSubmit(event: any): void {\r\n this.fxFormSubmit.emit(event);\r\n }\r\n\r\n public submit(): void {\r\n this.form.submit();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of fx-builder-wrapper\r\n */\r\n\r\nexport * from './lib/fx-builder-wrapper.service';\r\nexport * from './lib/fx-builder-wrapper.component'; // builder // admin\r\nexport * from './lib/components/fx-form-component/fx-form-component.component'; // form preview\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i1.FxBuilderWrapperService","i3","uuidv4"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Type } from '@angular/core';
|
|
2
|
-
import { FxBaseComponent, FxComponentRegistryService } from '@instantsys-labs/fx';
|
|
2
|
+
import { FxBaseComponent, FxComponentRegistryService, FxForm } from '@instantsys-labs/fx';
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class FxBuilderWrapperService {
|
|
@@ -8,6 +8,7 @@ export declare class FxBuilderWrapperService {
|
|
|
8
8
|
constructor(fxComponentRegistry: FxComponentRegistryService);
|
|
9
9
|
registerCustomComponent(title: string, selector: string, component: Type<FxBaseComponent>): void;
|
|
10
10
|
getComponent(selector: string): Type<FxBaseComponent> | undefined;
|
|
11
|
+
getInitializedFxForm(): FxForm;
|
|
11
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<FxBuilderWrapperService, never>;
|
|
12
13
|
static ɵprov: i0.ɵɵInjectableDeclaration<FxBuilderWrapperService>;
|
|
13
14
|
}
|