UNPKG

formioangular-colfuturo

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.4.

1 lines 72.1 kB
{"version":3,"file":"formioangular-colfuturo-manager.mjs","sources":["../../../projects/angular-formio/manager/src/form-manager.config.ts","../../../projects/angular-formio/manager/src/form-manager.service.ts","../../../projects/angular-formio/manager/src/index/index.component.ts","../../../projects/angular-formio/manager/src/index/index.component.html","../../../projects/angular-formio/manager/src/edit/edit.component.ts","../../../projects/angular-formio/manager/src/edit/edit.component.html","../../../projects/angular-formio/manager/src/create/create.component.ts","../../../projects/angular-formio/manager/src/form/form.component.ts","../../../projects/angular-formio/manager/src/form/form.component.html","../../../projects/angular-formio/manager/src/view/view.component.ts","../../../projects/angular-formio/manager/src/view/view.component.html","../../../projects/angular-formio/manager/src/delete/delete.component.ts","../../../projects/angular-formio/manager/src/delete/delete.component.html","../../../projects/angular-formio/manager/src/submission/edit/edit.component.ts","../../../projects/angular-formio/manager/src/submission/edit/edit.component.html","../../../projects/angular-formio/manager/src/submission/delete/delete.component.ts","../../../projects/angular-formio/manager/src/submission/delete/delete.component.html","../../../projects/angular-formio/manager/src/submission/view/view.component.ts","../../../projects/angular-formio/manager/src/submission/view/view.component.html","../../../projects/angular-formio/manager/src/submission/index/index.component.ts","../../../projects/angular-formio/manager/src/submission/index/index.component.html","../../../projects/angular-formio/manager/src/submission/submission/submission.component.ts","../../../projects/angular-formio/manager/src/submission/submission/submission.component.html","../../../projects/angular-formio/manager/src/form-manager.routes.ts","../../../projects/angular-formio/manager/src/form-manager.module.ts","../../../projects/angular-formio/manager/src/formioangular-colfuturo-manager.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\ntype FormType = 'form' | 'resource';\n\nexport interface FormManagerRouteConfig {\n formIndex?: any;\n formCreate?: any;\n form?: any;\n formView?: any;\n formEdit?: any;\n formEmbed?: any;\n formDelete?: any;\n submissionIndex?: any;\n submission?: any;\n submissionView?: any;\n submissionEdit?: any;\n submissionDelete?: any;\n}\n\n@Injectable()\nexport class FormManagerConfig {\n public tag = '';\n public includeSearch = false;\n public saveDraft = false;\n public type: FormType = 'form';\n public builder?: any;\n public viewer?: string;\n public renderer: any;\n}\n\nexport const DefaultConfiguration = new FormManagerConfig();\n","import { Injectable } from \"@angular/core\";\nimport { FormioAppConfig } from \"formioangular-colfuturo\";\nimport { FormManagerConfig } from \"./form-manager.config\";\nimport { Formio } from \"formiojs-colfuturo\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { FormioAuthService } from \"formioangular-colfuturo/auth\";\nimport _intersection from \"lodash/intersection\";\n\n@Injectable()\nexport class FormManagerService {\n public formio: Formio;\n public access: any;\n public allAccessMap: any;\n public ownAccessMap: any;\n public ready: Promise<any>;\n public formReady: Promise<any>;\n public actionAllowed: any;\n public form = null;\n public formSrc = \"\";\n public perms = { delete: false, edit: false };\n\n constructor(\n public appConfig: FormioAppConfig,\n public config: FormManagerConfig,\n public auth: FormioAuthService\n ) {\n if (this.appConfig && this.appConfig.appUrl) {\n Formio.setBaseUrl(this.appConfig.apiUrl);\n Formio.setProjectUrl(this.appConfig.appUrl);\n } else {\n console.error(\"You must provide an AppConfig within your application!\");\n }\n\n this.allAccessMap = {\n update_all: \"formEdit\",\n delete_all: \"formDelete\",\n };\n this.ownAccessMap = {\n update_own: \"formEdit\",\n delete_own: \"formDelete\",\n };\n this.actionAllowed = (action) => this.isActionAllowed(action);\n this.reset();\n }\n\n isActionAllowed(action: string) {\n return this.access[action];\n }\n\n setAccess() {\n this.access = {\n formCreate: true,\n formView: true,\n formSubmission: true,\n formEdit: true,\n formPermission: true,\n formDelete: true,\n projectSettings: true,\n userManagement: true,\n };\n if (this.auth) {\n this.access = {\n formCreate: false,\n formView: false,\n formSubmission: false,\n formEdit: false,\n formPermission: false,\n formDelete: false,\n projectSettings: false,\n userManagement: false,\n };\n this.ready = this.auth.ready.then(() => {\n let administrator = this.auth.roles[\"administrator\"];\n let formbuilder = this.auth.roles[\"formbuilder\"];\n let formadmin = this.auth.roles[\"formadmin\"];\n\n if (this.auth.user && this.auth.user.roles) {\n this.auth.user.roles.forEach((roleId: string) => {\n if (administrator._id === roleId) {\n this.access.formCreate = true;\n this.access.formView = true;\n this.access.formSubmission = true;\n this.access.formEdit = true;\n this.access.formPermission = true;\n this.access.formDelete = true;\n this.access.projectSettings = true;\n this.access.userManagement = true;\n } else {\n if (formadmin && formadmin._id === roleId) {\n this.access.formCreate =\n this.auth.formAccess.create_all.includes(roleId);\n this.access.formEdit =\n this.auth.formAccess.update_all.includes(roleId);\n this.access.formPermission =\n this.auth.formAccess.update_all.includes(roleId);\n this.access.formDelete =\n this.auth.formAccess.delete_all.includes(roleId);\n this.access.formView =\n this.auth.formAccess.read_all.includes(roleId);\n this.access.formSubmission =\n this.auth.formAccess.read_all.includes(roleId);\n }\n if (formbuilder && formbuilder._id === roleId) {\n this.access.formCreate =\n this.auth.formAccess.create_all.includes(roleId);\n this.access.formEdit =\n this.auth.formAccess.update_all.includes(roleId);\n this.access.formPermission =\n this.auth.formAccess.update_all.includes(roleId);\n this.access.formDelete =\n this.auth.formAccess.delete_all.includes(roleId);\n this.access.formView =\n this.auth.formAccess.read_all.includes(roleId);\n }\n }\n });\n }\n });\n } else {\n this.ready = Promise.resolve(false);\n }\n }\n\n reset(route?: ActivatedRoute) {\n if (route) {\n route.params.subscribe((params) => {\n if (params.id) {\n this.formio = new Formio(`${this.formio.formsUrl}/${params.id}`);\n } else {\n this.reset();\n }\n });\n } else {\n this.formio = new Formio(this.appConfig.appUrl);\n this.setAccess();\n }\n }\n\n hasAccess(roles) {\n if (!this.auth.user) {\n return false;\n }\n return !!_intersection(roles, this.auth.user.roles).length;\n }\n\n setForm(form: any) {\n this.form = form;\n this.formSrc = this.appConfig.appUrl + \"/\" + form.path;\n if (form.access) {\n // Check if they have access here.\n form.access.forEach((access) => {\n // Check for all access.\n if (\n this.allAccessMap[access.type] &&\n !this.access[this.allAccessMap[access.type]]\n ) {\n this.access[this.allAccessMap[access.type]] = this.hasAccess(\n access.roles\n );\n }\n\n // Check for own access.\n if (\n this.auth &&\n this.auth.user &&\n form._id === this.auth.user._id &&\n this.ownAccessMap[access.type] &&\n !this.access[this.ownAccessMap[access.type]]\n ) {\n this.access[this.ownAccessMap[access.type]] = this.hasAccess(\n access.roles\n );\n }\n });\n }\n return form;\n }\n\n loadForm() {\n this.form = null;\n this.formReady = this.formio.loadForm().then((form) => this.setForm(form));\n return this.formReady;\n }\n\n setSubmission(route: ActivatedRoute) {\n return new Promise((resolve) => {\n route.params.subscribe((params) => {\n this.formio = new Formio(`${this.formio.submissionsUrl}/${params.id}`);\n resolve(this.formio);\n });\n });\n }\n\n submissionLoaded(submission: any) {\n this.auth.ready.then(() => {\n this.formio\n .userPermissions(this.auth.user, this.form, submission)\n .then((perms) => {\n this.perms.delete = perms.delete;\n this.perms.edit = perms.edit;\n });\n });\n }\n\n loadForms() {\n return this.formio.loadForms({\n params: {\n tags: this.config.tag,\n },\n });\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n OnInit,\n ViewChild,\n} from \"@angular/core\";\nimport { Router, ActivatedRoute } from \"@angular/router\";\nimport { FormManagerService } from \"../form-manager.service\";\nimport {\n DefaultConfiguration,\n FormManagerConfig,\n} from \"../form-manager.config\";\nimport { FormioGridComponent } from \"formioangular-colfuturo/grid\";\nimport { debounce } from \"lodash\";\n\n@Component({\n templateUrl: \"./index.component.html\",\n styleUrls: [\"./index.component.scss\"],\n})\nexport class FormManagerIndexComponent implements OnInit, AfterViewInit {\n @ViewChild(\"search\") searchElement: ElementRef;\n @ViewChild(FormioGridComponent, { static: false })\n formGrid: FormioGridComponent;\n public gridQuery: any;\n public onSearch;\n constructor(\n public service: FormManagerService,\n public route: ActivatedRoute,\n public router: Router,\n public config: FormManagerConfig\n ) {\n this.config = { ...DefaultConfiguration, ...this.config };\n this.gridQuery = { type: this.config.type, sort: \"title\" };\n if (this.config.tag) {\n this.gridQuery.tags = this.config.tag;\n }\n this.onSearch = debounce(this._onSearch, 300);\n }\n\n loadGrid() {\n this.gridQuery =\n JSON.parse(localStorage.getItem(\"query\")) || this.gridQuery;\n const currentPage = +localStorage.getItem(\"currentPage\") || 0;\n this.formGrid\n .refreshGrid(this.gridQuery)\n .then(() => this.formGrid.setPage(currentPage - 1));\n }\n\n ngOnInit() {\n this.gridQuery = { type: this.config.type, sort: \"title\" };\n if (this.config.tag) {\n this.gridQuery.tags = this.config.tag;\n }\n this.service.reset();\n this.service.ready.then(() => {\n this.loadGrid();\n this.formGrid.footer.pageChanged.subscribe((page) => {\n localStorage.setItem(\"currentPage\", page.page);\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.searchElement.nativeElement.value =\n localStorage.getItem(\"searchInput\") || \"\";\n }\n\n _onSearch() {\n const search = this.searchElement.nativeElement.value;\n if (search.length > 0) {\n this.gridQuery.skip = 0;\n this.gridQuery.title__regex = \"/\" + search + \"/i\";\n this.gridQuery.title__regex = \"/\" + search.trim() + \"/i\";\n } else {\n delete this.gridQuery.title__regex;\n }\n localStorage.setItem(\"query\", JSON.stringify(this.gridQuery));\n localStorage.setItem(\"searchInput\", search);\n this.formGrid.pageChanged({ page: 1, itemPerPage: this.gridQuery.limit });\n }\n\n clearSearch() {\n this.gridQuery = { type: this.config.type, sort: \"title\" };\n if (this.config.tag) {\n this.gridQuery.tags = this.config.tag;\n }\n localStorage.removeItem(\"query\");\n localStorage.removeItem(\"searchInput\");\n localStorage.removeItem(\"currentPage\");\n if (this.searchElement?.nativeElement) {\n this.searchElement.nativeElement.value = \"\";\n }\n this.formGrid.query = this.gridQuery;\n this.formGrid.pageChanged({ page: 1 });\n }\n\n onAction(action: any) {\n this.service.form = null; // Reset previous form data\n this.router.navigate([action.row._id, action.action], {\n relativeTo: this.route,\n });\n }\n\n onSelect(row: any) {\n this.router.navigate([row._id], { relativeTo: this.route });\n }\n\n onCreateItem() {\n this.router.navigate([\"create\"], { relativeTo: this.route });\n }\n}\n","<div role=\"search\" class=\"input-group mb-3\" *ngIf=\"config.includeSearch\">\n <input #search type=\"text\" (keyup)=\"onSearch()\" class=\"form-control\" placeholder=\"Search Forms\" aria-label=\"Search Forms\" aria-describedby=\"button-search\">\n <span *ngIf=\"search && search !== ''\" class=\"form-clear input-group-addon\" (click)=\"clearSearch()\"><span class=\"fa fa-times bi bi-x\"></span></span>\n</div>\n<formio-grid\n *ngIf=\"service.ready\"\n [formio]=\"service.formio\"\n [gridType]=\"'form'\"\n [query]=\"gridQuery\"\n [isActionAllowed]=\"service.actionAllowed\"\n (rowAction)=\"onAction($event)\"\n (rowSelect)=\"onSelect($event)\"\n (createItem)=\"onCreateItem()\"\n></formio-grid>\n","import {\n Component,\n ViewChild,\n ElementRef,\n AfterViewInit,\n ChangeDetectorRef,\n} from \"@angular/core\";\nimport { FormManagerService } from \"../form-manager.service\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { FormManagerConfig } from \"../form-manager.config\";\nimport { FormioAlerts } from \"formioangular-colfuturo\";\nimport { FormBuilderComponent } from \"formioangular-colfuturo\";\nimport _ from \"lodash\";\n\n@Component({\n templateUrl: \"./edit.component.html\",\n})\nexport class FormManagerEditComponent implements AfterViewInit {\n @ViewChild(FormBuilderComponent, { static: false })\n builder: FormBuilderComponent;\n @ViewChild(\"title\", { static: false }) formTitle: ElementRef;\n @ViewChild(\"type\", { static: false }) formType: ElementRef;\n public form: any;\n public loading: Boolean;\n public formReady: Boolean;\n public editMode: Boolean;\n\n constructor(\n public service: FormManagerService,\n public router: Router,\n public route: ActivatedRoute,\n public config: FormManagerConfig,\n public ref: ChangeDetectorRef,\n public alerts: FormioAlerts\n ) {\n this.form = { components: [] };\n this.formReady = false;\n this.loading = false;\n this.editMode = false;\n }\n\n initBuilder(editing) {\n if (editing) {\n this.loading = true;\n this.editMode = true;\n return this.service.formReady\n .then(() => {\n this.form = this.service.form;\n this.formTitle.nativeElement.value = this.service.form.title;\n this.formType.nativeElement.value =\n this.service.form.display || \"form\";\n this.formReady = true;\n this.loading = false;\n this.ref.detectChanges();\n return true;\n })\n .catch((err) => {\n this.alerts.setAlert({ type: \"danger\", message: err.message || err });\n this.loading = false;\n this.ref.detectChanges();\n this.formReady = true;\n });\n } else {\n this.formReady = true;\n return Promise.resolve(true);\n }\n }\n\n ngAfterViewInit() {\n this.route.url.subscribe((url) => {\n setTimeout(() => this.initBuilder(url[0].path === \"edit\"), 0);\n });\n }\n\n onDisplaySelect(event) {\n this.builder.setDisplay(event.target.value);\n }\n\n saveForm() {\n this.loading = true;\n this.form = _.cloneDeep(this.builder.formio.schema);\n this.form.title = this.formTitle.nativeElement.value.trim();\n this.form.display = this.formType.nativeElement.value;\n this.form.components = _.cloneDeep(this.builder.form.components);\n\n if (this.config.tag) {\n this.form.tags = this.form.tags || [];\n this.form.tags.push(this.config.tag);\n this.form.tags = _.uniq(this.form.tags);\n }\n if (this.config.type) {\n this.form.type = this.config.type;\n }\n if (!this.form._id) {\n this.form.name = _.camelCase(this.form.title).toLowerCase();\n this.form.path = this.form.name;\n }\n return this.service.formio\n .saveForm(this.form)\n .then((form) => {\n this.form = this.service.setForm(form);\n this.loading = false;\n return this.form;\n })\n .catch((err) => {\n this.loading = false;\n // Catch if a form is returned as an error. This is a conflict.\n if (err._id && err.type) {\n throw err;\n }\n this.alerts.setAlert({ type: \"danger\", message: err.message || err });\n });\n }\n\n onSave() {\n return this.saveForm().then((form) => {\n if (this.editMode) {\n this.router.navigate([\"../\", \"view\"], { relativeTo: this.route });\n } else {\n this.router.navigate([\"../\", form._id, \"view\"], {\n relativeTo: this.route,\n });\n }\n });\n }\n}\n","<div class=\"loader\" *ngIf=\"loading\"></div>\n<div class=\"form-group row mb-2\">\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" id=\"formTitle\" placeholder=\"Enter a Title\" #title>\n </div>\n <div class=\"col-sm-2\">\n <select class=\"form-control\" id=\"formSelect\" (change)=\"onDisplaySelect($event)\" #type>\n <option value=\"form\">Form</option>\n <option value=\"wizard\">Wizard</option>\n <option value=\"pdf\">PDF</option>\n </select>\n </div>\n <div class=\"col-sm-2\">\n <button class=\"btn btn-primary btn-block\" (click)=\"onSave()\"><i class=\"bi bi-save me-2\"></i>Save Form</button>\n </div>\n</div>\n<formio-alerts [alerts]=\"alerts\"></formio-alerts>\n<form-builder *ngIf=\"formReady\" [formbuilder]=\"config.builder\" [form]=\"form\" #builder></form-builder>\n<button class=\"btn btn-primary\" style=\"margin-top: 10px;\" (click)=\"onSave()\">Save Form</button>\n","import { Component, OnInit } from '@angular/core';\nimport { FormManagerEditComponent } from '../edit/edit.component';\n\n@Component({\n templateUrl: '../edit/edit.component.html'\n})\nexport class FormManagerCreateComponent extends FormManagerEditComponent implements OnInit {\n ngOnInit() {\n this.service.reset();\n }\n}\n","import { Component, OnInit, TemplateRef } from \"@angular/core\";\nimport { FormManagerService } from \"../form-manager.service\";\nimport { FormManagerConfig } from \"../form-manager.config\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { FormioAppConfig } from \"formioangular-colfuturo\";\nimport { BsModalService, BsModalRef } from \"ngx-bootstrap/modal\";\n\n@Component({\n templateUrl: \"./form.component.html\",\n})\nexport class FormManagerFormComponent implements OnInit {\n choice: any = \"isUrl\";\n embedCode: any;\n shareUrl: any;\n projectId: any;\n pathName: any;\n goTo: any = \"\";\n modalRef: BsModalRef;\n constructor(\n public service: FormManagerService,\n public route: ActivatedRoute,\n public appConfig: FormioAppConfig,\n public options: FormManagerConfig,\n private modalService: BsModalService\n ) {}\n\n ngOnInit() {\n this.service.reset(this.route);\n this.service.loadForm().then((form) => {\n this.service.formSrc = this.appConfig.appUrl + \"/\" + form.path;\n this.projectId = form.project;\n this.pathName = form.path;\n this.getShareUrl();\n });\n }\n\n public getShareUrl() {\n const src = this.appConfig.appUrl + \"/\" + this.pathName;\n this.shareUrl = `${this.options.viewer}/#/?src=${encodeURIComponent(src)}`;\n return this.shareUrl;\n }\n\n openEmbed(content: TemplateRef<any>) {\n let goto = \"\";\n if (this.goTo) {\n goto += `if (d && d.formSubmission && d.formSubmission._id) { window.location.href = \"${this.goTo}\";}`;\n }\n let embedCode = '<script type=\"text/javascript\">';\n embedCode += \"(function a(d, w, u) {\";\n embedCode += 'var h = d.getElementsByTagName(\"head\")[0];';\n embedCode += 'var s = d.createElement(\"script\");';\n embedCode += 's.type = \"text/javascript\";';\n embedCode +=\n 's.src = \"' +\n this.options.viewer +\n '/assets/lib/seamless/seamless.parent.min.js\";';\n embedCode += \"s.onload = function b() {\";\n embedCode +=\n 'var f = d.getElementById(\"formio-form-' +\n this.service.formio.formId +\n '\");';\n embedCode += \"if (!f || (typeof w.seamless === u)) {\";\n embedCode += \"return setTimeout(b, 100);\";\n embedCode += \"}\";\n embedCode +=\n \"w.seamless(f, {fallback:false}).receive(function(d, e) {\" + goto + \"});\";\n embedCode += \"};\";\n embedCode += \"h.appendChild(s);\";\n embedCode += \"})(document, window);\";\n embedCode += \"</script>\";\n embedCode += '<iframe id=\"formio-form-' + this.service.formio.formId + '\" ';\n embedCode +=\n 'style=\"width:100%;border:none;\" height=\"800px\" src=\"' +\n this.shareUrl +\n '&iframe=1\"></iframe>';\n this.embedCode = embedCode;\n this.modalRef = this.modalService.show(content, { class: \"modal-lg\" });\n }\n\n choices(string) {\n this.choice = string;\n }\n}\n","<button *ngIf=\"options.viewer\" class=\"float-end btn btn-outline-primary\" (click)=\"openEmbed(content)\"><em class=\"fa fa-share-alt bi bi-share\"></em> Share</button>\n<ul class=\"nav nav-tabs mb-2\">\n <li class=\"nav-item\"><a class=\"nav-link\" routerLink=\"../\"><em class=\"fa fa-chevron-left bi bi-chevron-left\"></em></a></li>\n <li class=\"nav-item\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"view\" routerLinkActive=\"active\"><em class=\"fa fa-pencil bi bi-pencil\"></em> Enter Data</a></li>\n <li class=\"nav-item\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"submission\" routerLinkActive=\"active\"><em class=\"fa fa-list-alt bi bi-table\"></em> View Data</a></li>\n <li *ngIf=\"service.actionAllowed('formEdit')\" class=\"nav-item\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"edit\" routerLinkActive=\"active\"><em class=\"fa fa-edit bi bi-pencil-square\"></em> Edit Form</a></li>\n <li *ngIf=\"service.actionAllowed('formDelete')\" class=\"nav-item\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"delete\" routerLinkActive=\"active\"><span class=\"fa fa-trash bi bi-trash\"></span></a></li>\n</ul>\n<router-outlet></router-outlet>\n<ng-template #content>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\">Share or Embed this form</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modalRef.hide()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <ul class=\"nav nav-tabs mr-auto mb-2\">\n <li class=\"nav-item\">\n <a class=\"nav-link\" [ngClass]=\"{'active': choice === 'isUrl'}\" (click)=\"choices('isUrl')\"><em class=\"fa fa-link bi bi-link\"></em> URL</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" [ngClass]=\"{'active': choice === 'isEmbed'}\" (click)=\"choices('isEmbed')\"><em class=\"fa fa-code bi bi-code-slash\"></em> Embed</a>\n </li>\n </ul>\n <pre *ngIf=\"choice === 'isEmbed'\"><textarea onclick=\"this.focus();this.select()\" readonly=\"readonly\" style=\"width:100%;\" rows=\"8\" [ngModel]=\"embedCode\"></textarea></pre>\n <input *ngIf=\"choice === 'isUrl'\" type=\"text\" onclick=\"this.focus();this.select()\" readonly=\"readonly\" class=\"form-control\" [ngModel]=\"shareUrl\" placeholder=\"https://examples.form.io/example\">\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-light\" (click)=\"modalRef.hide()\">Close</button>\n </div>\n</ng-template>\n","import { Component, OnInit, EventEmitter } from \"@angular/core\";\nimport { FormManagerConfig } from \"../form-manager.config\";\nimport { FormManagerService } from \"../form-manager.service\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { FormioAuthService } from \"formioangular-colfuturo/auth\";\nimport { Formio } from \"formiojs-colfuturo\";\n\n@Component({\n templateUrl: \"./view.component.html\",\n})\nexport class FormManagerViewComponent implements OnInit {\n public submission: any;\n public renderOptions: any;\n public onSuccess: EventEmitter<object> = new EventEmitter();\n public onError: EventEmitter<object> = new EventEmitter();\n public onSubmitDone: EventEmitter<object> = new EventEmitter();\n constructor(\n public service: FormManagerService,\n public router: Router,\n public route: ActivatedRoute,\n public config: FormManagerConfig,\n public auth: FormioAuthService\n ) {\n this.renderOptions = {\n saveDraft: this.config.saveDraft,\n };\n this.submission = { data: {} };\n }\n\n ngOnInit() {\n this.service.formio = new Formio(this.service.formio.formUrl);\n }\n\n onSubmit(submission: any) {\n const isDraft = submission.state === \"draft\";\n this.submission.data = submission.data;\n this.submission.state = isDraft ? submission.state : \"complete\";\n this.service.formio\n .saveSubmission(this.submission)\n .then((saved) => {\n this.onSubmitDone.emit(saved);\n this.onSuccess.emit();\n this.router.navigate([\"../\", \"submission\", saved._id], {\n relativeTo: this.route,\n });\n })\n .catch((err) => this.onError.emit(err));\n }\n}\n","<formio *ngIf=\"service.form\"\n [renderer]=\"config.renderer\"\n [renderOptions]=\"renderOptions\"\n [url]=\"service.formio.formUrl\"\n [form]=\"service.form\"\n [submission]=\"submission\"\n [success]=\"onSuccess\"\n [submitDone]=\"onSubmitDone\"\n [error]=\"onError\"\n (submit)=\"onSubmit($event)\"\n></formio>\n","import { Component } from \"@angular/core\";\nimport { FormManagerService } from \"../form-manager.service\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { FormioAlerts } from \"formioangular-colfuturo\";\nimport { GridService } from \"formioangular-colfuturo/grid\";\n\n@Component({\n templateUrl: \"./delete.component.html\",\n})\nexport class FormManagerDeleteComponent {\n constructor(\n public managerService: FormManagerService,\n public router: Router,\n public route: ActivatedRoute,\n public alerts: FormioAlerts,\n public gridService?: GridService\n ) {}\n\n onDelete() {\n this.managerService.formio\n .deleteForm()\n .then(() => {\n if (this.gridService) {\n const currentPage = +localStorage.getItem(\"currentPage\") || 0;\n const formsNumberPerPage = this.gridService.getFormsPerPage();\n\n if (formsNumberPerPage === 1 && currentPage !== 0) {\n localStorage.setItem(\"currentPage\", `${currentPage - 1}`);\n }\n }\n\n this.router.navigate([\"../../\"], { relativeTo: this.route });\n })\n .catch((err) =>\n this.alerts.setAlert({ type: \"danger\", message: err.message || err })\n );\n }\n\n onCancel() {\n this.router.navigate([\"../\", \"view\"], { relativeTo: this.route });\n }\n}\n","<formio-alerts [alerts]=\"alerts\"></formio-alerts>\n<h3>Are you sure you wish to delete this form?</h3>\n<div class=\"btn-toolbar\">\n <button type=\"button\" (click)=\"onDelete()\" class=\"btn btn-danger\" style=\"margin-right: 10px;\">Yes</button>\n <button type=\"button\" (click)=\"onCancel()\" class=\"btn btn-default\">No</button>\n</div>\n","import { Component } from '@angular/core';\nimport { FormManagerService } from '../../form-manager.service';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n templateUrl: './edit.component.html'\n})\nexport class SubmissionEditComponent {\n constructor(\n public service: FormManagerService,\n public router: Router,\n public route: ActivatedRoute\n ) { }\n\n onSubmit(submission) {\n this.router.navigate(['../../'], {relativeTo: this.route});\n }\n}\n","<formio\n [renderer]=\"service.config.renderer\"\n [src]=\"service.formio.submissionUrl\"\n (submit)=\"onSubmit($event)\"\n (formLoad)=\"service.setForm($event)\"\n (submissionLoad)=\"service.submissionLoaded($event)\"\n></formio>\n","import { Component } from \"@angular/core\";\nimport { FormManagerService } from \"../../form-manager.service\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { FormioAlerts } from \"formioangular-colfuturo\";\n\n@Component({\n templateUrl: \"./delete.component.html\",\n})\nexport class SubmissionDeleteComponent {\n constructor(\n public service: FormManagerService,\n public router: Router,\n public route: ActivatedRoute,\n public alerts: FormioAlerts\n ) {}\n\n onDelete() {\n this.service.formio\n .deleteSubmission()\n .then(() => {\n this.router.navigate([\"../../\"], { relativeTo: this.route });\n })\n .catch((err) =>\n this.alerts.setAlert({ type: \"danger\", message: err.message || err })\n );\n }\n\n onCancel() {\n this.router.navigate([\"../\", \"view\"], { relativeTo: this.route });\n }\n}\n","<formio-alerts [alerts]=\"alerts\"></formio-alerts>\n<h3>Are you sure you wish to delete this record?</h3>\n<div class=\"btn-toolbar\">\n <button type=\"button\" (click)=\"onDelete()\" class=\"btn btn-danger\" style=\"margin-right: 10px;\">Yes</button>\n <button type=\"button\" (click)=\"onCancel()\" class=\"btn btn-default\">No</button>\n</div>\n","import { Component } from '@angular/core';\nimport { FormManagerService } from '../../form-manager.service';\n\n@Component({\n templateUrl: './view.component.html'\n})\nexport class SubmissionViewComponent {\n constructor(public service: FormManagerService) { }\n}\n","<formio\n [renderer]=\"service.config.renderer\"\n [src]=\"service.formio.submissionUrl\"\n [readOnly]=\"true\"\n (formLoad)=\"service.setForm($event)\"\n (submissionLoad)=\"service.submissionLoaded($event)\"\n></formio>\n","import { Component } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { FormManagerService } from '../../form-manager.service';\n\n@Component({\n templateUrl: './index.component.html'\n})\nexport class SubmissionIndexComponent {\n constructor(\n public service: FormManagerService,\n public route: ActivatedRoute,\n public router: Router\n ) {}\n\n onSelect(row: any) {\n this.router.navigate([row._id, 'view'], {relativeTo: this.route});\n }\n}\n","<formio-grid [formio]=\"service.formio\" (rowSelect)=\"onSelect($event)\"></formio-grid>\n","import { Component, OnInit } from '@angular/core';\nimport { FormManagerService } from '../../form-manager.service';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n templateUrl: './submission.component.html'\n})\nexport class SubmissionComponent implements OnInit {\n public downloadUrl: string;\n constructor(\n public service: FormManagerService,\n public route: ActivatedRoute\n ) { }\n\n setDownloadUrl(url) {\n this.downloadUrl = url;\n }\n\n ngOnInit() {\n this.service.setSubmission(this.route).then((formio: any) => {\n formio.getDownloadUrl().then((url) => this.setDownloadUrl(url));\n });\n }\n}\n","<a *ngIf=\"downloadUrl\" [href]=\"downloadUrl\" target=\"_blank\" class=\"pull-right\"><img src=\"https://pro.formview.io/assets/pdf.png\" alt=\"pdfImage\" style=\"height: 2em;\" /></a>\n<ul aria-label=\"Submission\" role=\"navigation\" class=\"nav nav-tabs\" style=\"margin-bottom:10px\">\n <li class=\"nav-item\"><a class=\"nav-link\" routerLink=\"../\"><em class=\"fa fa-chevron-left bi bi-chevron-left\"></em></a></li>\n <li class=\"nav-item\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"view\" routerLinkActive=\"active\"><em class=\"fa fa-eye bi bi-eye\"></em> View</a></li>\n <li class=\"nav-item\" routerLinkActive=\"active\" *ngIf=\"service.perms.edit\"><a class=\"nav-link\" routerLink=\"edit\" routerLinkActive=\"active\"><em class=\"fa fa-edit bi bi-pencil-square\"></em> Edit</a></li>\n <li class=\"nav-item\" routerLinkActive=\"active\" *ngIf=\"service.perms.delete\"><a class=\"nav-link\" routerLink=\"delete\" routerLinkActive=\"active\"><span class=\"fa fa-trash bi bi-trash\"></span></a></li>\n</ul>\n<router-outlet></router-outlet>\n","import { Routes } from '@angular/router';\nimport { FormManagerIndexComponent } from './index/index.component';\nimport { FormManagerCreateComponent } from './create/create.component';\nimport { FormManagerFormComponent } from './form/form.component';\nimport { FormManagerViewComponent } from './view/view.component';\nimport { FormManagerEditComponent } from './edit/edit.component';\nimport { FormManagerDeleteComponent } from './delete/delete.component';\nimport { SubmissionEditComponent } from './submission/edit/edit.component';\nimport { SubmissionDeleteComponent } from './submission/delete/delete.component';\nimport { SubmissionViewComponent } from './submission/view/view.component';\nimport { SubmissionIndexComponent } from './submission/index/index.component';\nimport { SubmissionComponent } from './submission/submission/submission.component';\nimport { FormManagerRouteConfig } from './form-manager.config';\nexport function FormManagerRoutes(config?: FormManagerRouteConfig): Routes {\n return [\n {\n path: '',\n component: config && config.formIndex ? config.formIndex : FormManagerIndexComponent\n },\n {\n path: 'create',\n component: config && config.formCreate ? config.formCreate : FormManagerCreateComponent\n },\n {\n path: ':id',\n component: config && config.form ? config.form : FormManagerFormComponent,\n children: [\n {\n path: '',\n redirectTo: 'view',\n pathMatch: 'full'\n },\n {\n path: 'view',\n component: config && config.formView ? config.formView : FormManagerViewComponent\n },\n {\n path: 'edit',\n component: config && config.formEdit ? config.formEdit : FormManagerEditComponent\n },\n {\n path: 'delete',\n component: config && config.formDelete ? config.formDelete : FormManagerDeleteComponent\n },\n {\n path: 'submission',\n component: config && config.submissionIndex ? config.submissionIndex : SubmissionIndexComponent\n },\n {\n path: 'submission/:id',\n component: config && config.submission ? config.submission : SubmissionComponent,\n children: [\n {\n path: '',\n redirectTo: 'view',\n pathMatch: 'full'\n },\n {\n path: 'view',\n component: config && config.submissionView ? config.submissionView : SubmissionViewComponent\n },\n {\n path: 'edit',\n component: config && config.submissionEdit ? config.submissionEdit : SubmissionEditComponent\n },\n {\n path: 'delete',\n component: config && config.submissionDelete ? config.submissionDelete : SubmissionDeleteComponent\n }\n ]\n }\n ]\n }\n ];\n}\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule } from \"@angular/router\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { FormioModule } from \"formioangular-colfuturo\";\nimport { FormioGrid } from \"formioangular-colfuturo/grid\";\nimport { FormManagerIndexComponent } from \"./index/index.component\";\nimport { FormManagerCreateComponent } from \"./create/create.component\";\nimport { FormManagerFormComponent } from \"./form/form.component\";\nimport { FormManagerViewComponent } from \"./view/view.component\";\nimport { FormManagerEditComponent } from \"./edit/edit.component\";\nimport { FormManagerDeleteComponent } from \"./delete/delete.component\";\nimport { SubmissionComponent } from \"./submission/submission/submission.component\";\nimport { SubmissionEditComponent } from \"./submission/edit/edit.component\";\nimport { SubmissionDeleteComponent } from \"./submission/delete/delete.component\";\nimport { SubmissionViewComponent } from \"./submission/view/view.component\";\nimport { SubmissionIndexComponent } from \"./submission/index/index.component\";\nimport { FormManagerRouteConfig } from \"./form-manager.config\";\nimport { FormManagerRoutes } from \"./form-manager.routes\";\nimport { PaginationModule } from \"ngx-bootstrap/pagination\";\nimport { ModalModule } from \"ngx-bootstrap/modal\";\nimport { extendRouter } from \"formioangular-colfuturo\";\n@NgModule({\n imports: [\n CommonModule,\n FormioModule,\n RouterModule,\n FormsModule,\n FormioGrid,\n ModalModule.forRoot(),\n PaginationModule.forRoot(),\n ],\n declarations: [\n FormManagerIndexComponent,\n FormManagerCreateComponent,\n FormManagerFormComponent,\n FormManagerViewComponent,\n FormManagerEditComponent,\n FormManagerDeleteComponent,\n SubmissionComponent,\n SubmissionEditComponent,\n SubmissionDeleteComponent,\n SubmissionViewComponent,\n SubmissionIndexComponent,\n ],\n})\nexport class FormManagerModule {\n static forChild(config?: FormManagerRouteConfig): any {\n return extendRouter(FormManagerModule, config, FormManagerRoutes);\n }\n static forRoot(config?: FormManagerRouteConfig): any {\n return extendRouter(FormManagerModule, config, FormManagerRoutes);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.FormManagerConfig","i3","i1.FormManagerService","i3.FormManagerConfig","i4","i5","i6","i2","i4.FormManagerConfig"],"mappings":"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