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