@asoftwareworld/form-builder-pro
Version:
ASW Form Builder Pro helps you with rapid development and designed web forms which includes several controls. The key feature of Form Builder is to make your content attractive and effective. We can customize our control at run time and preview the same b
1 lines • 32.9 kB
Source Map (JSON)
{"version":3,"file":"asoftwareworld-form-builder-pro-preview-template.mjs","sources":["../../src/components/preview-template/preview-template.ts","../../src/components/preview-template/preview-template.html","../../src/components/preview-template/preview-template.module.ts","../../src/components/preview-template/public_api.ts","../../src/components/preview-template/asoftwareworld-form-builder-pro-preview-template.ts"],"sourcesContent":["/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { Constants, NotificationService } from '@asoftwareworld/form-builder-pro/common';\nimport { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';\nimport jsPDF from 'jspdf';\nimport html2canvas from 'html2canvas';\nimport { CSSFrameworkEnum } from '@asoftwareworld/form-builder-pro/api';\nimport { AswTranslateService } from '@asoftwareworld/form-builder-pro/core';\n\n@Component({\n selector: 'asw-preview-template',\n templateUrl: './preview-template.html'\n})\nexport class AswPreviewTemplate implements OnInit {\n constants: any = Constants;\n @Input() formContainer: any[] = [];\n @Input() currentLanguage = 'en';\n @Input() cssFramework: CSSFrameworkEnum = CSSFrameworkEnum.Material;\n @Output() buttonClick = new EventEmitter<any[]>();\n @Output() aswModelChange = new EventEmitter<any>();\n @ViewChild('printPdf') printPdf!: ElementRef;\n\n constructor(\n public translate: AswTranslateService,\n private notificationService: NotificationService\n ) {}\n\n ngOnInit(): void {\n this.translate.use(this.currentLanguage);\n }\n\n updatedControl(control: any): void {\n this.updateControlFromContainer(control);\n }\n\n private updateControlFromContainer(draggedItem: any): void {\n this.formContainer.filter((control: any, index: number) => {\n if (control.guid === draggedItem.guid) {\n this.formContainer.splice(index, 1, draggedItem);\n } else {\n this.updateChildControl(control, draggedItem);\n }\n });\n }\n\n private updateChildControl(control: any, draggedItem: any): void {\n control.columns?.forEach((column: any) => {\n column.components.forEach((component: any, childIndex: number) => {\n if (component.guid === draggedItem.guid) {\n column.components.splice(childIndex, 1, draggedItem);\n }\n if (component.controlType === 'columns') {\n this.updateChildControl(component, draggedItem);\n }\n });\n });\n }\n\n buttonClicked(type: string): void {\n if (type === 'reset') {\n this.formContainer = ObjectUtils.resetForm(this.formContainer);\n } else {\n const data = ObjectUtils.validateForm(this.formContainer);\n if (!data.isFormValid) {\n this.notificationService.openNotification('Please fill in the following required fields.' + ' \\n \\n' + data.labels.join(', '), 'Close');\n } else {\n this.buttonClick.emit(this.formContainer);\n }\n }\n }\n\n onSelectionChange(control: any): void {\n this.aswModelChange.emit(control);\n }\n async makePdf() {\n const pdf = new jsPDF('p', 'mm', 'a4');\n\n html2canvas(this.printPdf.nativeElement, { scale: 1 }).then((canvas) => {\n const imgData = canvas.toDataURL('image/png');\n const imgWidth = 210;\n const pageHeight = 295;\n const imgHeight = (canvas.height * imgWidth) / canvas.width;\n let heightLeft = imgHeight;\n let position = 0;\n\n pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);\n heightLeft -= pageHeight;\n\n while (heightLeft >= 0) {\n position = heightLeft - imgHeight;\n pdf.addPage();\n pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);\n heightLeft -= pageHeight;\n }\n\n window.open(pdf.output('bloburl'));\n });\n\n // const htmlElement = this.printPdf.nativeElement;\n // const width = htmlElement.clientWidth;\n // const height = htmlElement.clientHeight;\n // // debugger\n // // const pdf = new jsPDF({ unit: 'in', format: 'a0', orientation: 'portrait' });\n // // pdf.html(htmlElement, {\n // // html2canvas: {\n // // scale: 0.3, //this was my solution, you have to adjust to your size\n // // width: 1000 //for some reason width does nothing\n // // },\n // // callback: (doc: any) => {\n // // window.open(doc.output(\"bloburl\"));\n // // }\n // // });\n\n // html2canvas(htmlElement).then(canvas => {\n // // Few necessary setting options\n // const imgWidth = 208;\n // const pageHeight = 295;\n // const imgHeight = canvas.height * imgWidth / canvas.width;\n // const heightLeft = imgHeight;\n\n // const contentDataURL = canvas.toDataURL('image/png');\n // const pdf = new jsPDF('p', 'mm', 'a4'); // A4 size page of PDF\n // const position = 0;\n // pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight);\n // window.open(pdf.output('bloburl')) // Generated PDF\n // });\n // var ratio = width / height;\n // html2canvas(htmlElement)\n // .then((successRef: any) => {\n // var doc = new jsPDF('p', 'pt', 'a4');\n // var img = successRef.toDataURL('image/png');\n\n // // Add image Canvas to PDF\n // const bufferX = 5;\n // const bufferY = 5;\n // const imgProps = (<any>doc).getImageProperties(img);\n // const pdfWidth = doc.internal.pageSize.getWidth() - 2 * bufferX;\n // const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;\n // doc.addImage(\n // img,\n // 'PNG',\n // bufferX,\n // bufferY,\n // pdfWidth,\n // pdfHeight,\n // undefined,\n // 'FAST'\n // );\n // return doc;\n // })\n // .then((doc: any) => {\n // window.open(doc.output('bloburl'));\n // });\n }\n}\n","<!-- <div class=\"asw-row\">\r\n <div class=\"asw-col-md-12 text-right\">\r\n <button mat-raised-button \r\n type=\"button\"\r\n class=\"asw-button asw-button-secondary asw-button-sm float-end mb-2\" (click)=\"makePdf()\">Download Pdf\r\n </button> \r\n </div>\r\n</div> -->\r\n<div class=\"asw-row\" #printPdf>\r\n <div class=\"asw-col-md-12\">\r\n <mat-card>\r\n <mat-card-content>\r\n <ng-container *ngFor=\"let control of formContainer\">\r\n <ng-container *ngTemplateOutlet=\"childContainer, context:{control:control}\"></ng-container>\r\n </ng-container>\r\n <ng-template #childContainer let-control=\"control\">\r\n <ng-container [ngSwitch]=\"control.controlType\">\r\n <ng-container *ngIf=\"!control.columns; else layout\">\r\n <ng-container *ngSwitchCase=\"'autocomplete'\">\r\n <asw-autocomplete \r\n [control]=\"control\"\r\n [CSSFramework]=\"cssFramework\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </asw-autocomplete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'header'\">\r\n <asw-header [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n </asw-header>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'qr-code'\">\r\n <asw-qrcode [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n </asw-qrcode>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <asw-image [control]=\"control\"\r\n [CSSFramework]=\"cssFramework\"\r\n (imageUpdateEvent)=\"updatedControl($event)\">\r\n </asw-image>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textfield'\">\r\n <asw-textfield [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (aswModelChange)=\"onSelectionChange($event)\">\r\n </asw-textfield>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'email'\">\r\n <asw-textfield [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (aswModelChange)=\"onSelectionChange($event)\">\r\n </asw-textfield>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'url'\">\r\n <asw-textfield [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (aswModelChange)=\"onSelectionChange($event)\">\r\n </asw-textfield>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'phone-number'\">\r\n <asw-textfield [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (aswModelChange)=\"onSelectionChange($event)\">\r\n </asw-textfield>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <asw-number [control]=\"control\"\r\n [formControls]=\"formContainer\"\r\n [CSSFramework]=\"cssFramework\"\r\n (aswModelChange)=\"onSelectionChange($event)\">\r\n </asw-number>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <asw-textfield [control]=\"control\"\r\n [CSSFramework]=\"cssFramework\"\r\n (aswModelChange)=\"onSelectionChange($event)\">\r\n </asw-textfield>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <asw-number [control]=\"control\"\r\n [formControls]=\"formContainer\"\r\n [CSSFramework]=\"cssFramework\"\r\n (aswModelChange)=\"onSelectionChange($event)\">\r\n </asw-number>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'calculation'\">\r\n <asw-calculation [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (aswModelChange)=\"onSelectionChange($event)\">\r\n </asw-calculation>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <asw-select [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </asw-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'multi-select'\">\r\n <asw-multi-select [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </asw-multi-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <asw-radio-button [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </asw-radio-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <asw-checkbox [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </asw-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'datepicker'\">\r\n <asw-datepicker [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (dateChange)=\"onSelectionChange($event)\">\r\n </asw-datepicker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'daterange'\">\r\n <asw-datepicker [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (dateChange)=\"onSelectionChange($event)\">\r\n </asw-datepicker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <asw-button [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (buttonClickEvent)=\"buttonClicked($event)\">\r\n </asw-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'paragraph'\">\r\n <asw-paragraph [control]=\"control\">\r\n </asw-paragraph>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'divider'\">\r\n <asw-divider [control]=\"control\">\r\n </asw-divider>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'slide-toggle'\">\r\n <asw-slide-toggle [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </asw-slide-toggle>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'gps'\">\r\n <asw-gps [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n (gpsAddressChange)=\"onSelectionChange($event)\">\r\n </asw-gps>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'signature'\">\r\n <asw-signature [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n </asw-signature>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'drawing'\">\r\n <asw-drawing [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n </asw-drawing>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fileupload'\">\r\n <asw-fileupload [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n </asw-fileupload>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #layout>\r\n <ng-container *ngSwitchCase=\"'columns'\">\r\n <div class=\"asw-row\">\r\n <div class=\"asw-col-{{column.size}}-{{column.width}}\" *ngFor=\"let column of control.columns\">\r\n <ng-container *ngFor=\"let component of column.components\">\r\n <ng-container *ngTemplateOutlet=\"childContainer, context:{control:component}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n</div>","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { CommonModule } from '@angular/common';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { NotificationService } from '@asoftwareworld/form-builder-pro/common';\nimport { AswAutocompleteModule } from '@asoftwareworld/form-builder-pro/form-control/autocomplete';\nimport { AswButtonModule } from '@asoftwareworld/form-builder-pro/form-control/button';\nimport { AswCalculationModule } from '@asoftwareworld/form-builder-pro/form-control/calculation';\nimport { AswCheckboxModule } from '@asoftwareworld/form-builder-pro/form-control/checkbox';\nimport { AswDatepickerModule } from '@asoftwareworld/form-builder-pro/form-control/datepicker';\nimport { AswDividerModule } from '@asoftwareworld/form-builder-pro/form-control/divider';\nimport { AswDrawingModule } from '@asoftwareworld/form-builder-pro/form-control/drawing';\nimport { AswFileUploadModule } from '@asoftwareworld/form-builder-pro/form-control/fileupload';\nimport { AswGpsModule } from '@asoftwareworld/form-builder-pro/form-control/gps';\nimport { AswHeaderModule } from '@asoftwareworld/form-builder-pro/form-control/header';\nimport { AswImageModule } from '@asoftwareworld/form-builder-pro/form-control/image';\nimport { AswMultiSelectModule } from '@asoftwareworld/form-builder-pro/form-control/multi-select';\nimport { AswNumberModule } from '@asoftwareworld/form-builder-pro/form-control/number';\nimport { AswParagraphModule } from '@asoftwareworld/form-builder-pro/form-control/paragraph';\nimport { QrCodeModule } from '@asoftwareworld/form-builder-pro/form-control/qrcode';\nimport { AswRadioButtonModule } from '@asoftwareworld/form-builder-pro/form-control/radio-button';\nimport { AswSelectModule } from '@asoftwareworld/form-builder-pro/form-control/select';\nimport { AswSignatureModule } from '@asoftwareworld/form-builder-pro/form-control/signature';\nimport { AswSlideToggleModule } from '@asoftwareworld/form-builder-pro/form-control/slide-toggle';\nimport { AswTextFieldModule } from '@asoftwareworld/form-builder-pro/form-control/textfield';\nimport { AswPreviewTemplate } from './preview-template';\nimport { AswLicense, WatermarkService } from '@asoftwareworld/form-builder-pro/core';\n\nexport function initializeLicense(): () => Promise<void> {\n return () => {\n AswLicense.validateLicense();\n return Promise.resolve();\n };\n}\n\n@NgModule({\n declarations: [AswPreviewTemplate],\n exports: [AswPreviewTemplate],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n AswAutocompleteModule,\n AswButtonModule,\n AswCheckboxModule,\n AswDatepickerModule,\n AswDividerModule,\n AswDrawingModule,\n AswGpsModule,\n AswHeaderModule,\n AswImageModule,\n AswMultiSelectModule,\n AswParagraphModule,\n AswSelectModule,\n AswSignatureModule,\n AswSlideToggleModule,\n AswTextFieldModule,\n AswRadioButtonModule,\n MatSnackBarModule,\n MatCardModule,\n QrCodeModule,\n AswNumberModule,\n AswCalculationModule,\n AswFileUploadModule\n ],\n providers: [\n NotificationService,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeLicense,\n multi: true\n },\n WatermarkService,\n provideHttpClient(withInterceptorsFromDi())\n ]\n})\nexport class AswPreviewTemplateModule {\n constructor(private watermarkService: WatermarkService) {\n // Call the showWatermark method when the module is loaded\n const isValid = AswLicense.isDisplayWatermark();\n if (isValid) {\n this.watermarkService.showWatermark();\n }\n }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nexport * from './preview-template';\nexport * from './preview-template.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}