From 7915d75e258132f64cea14f2a4d0695eb49942f3 Mon Sep 17 00:00:00 2001 From: Travis Tidwell Date: Thu, 7 Mar 2024 16:11:42 -0600 Subject: [PATCH] FIO-8023: Fixing issues with the parent traversal on deeply nested components within nested forms. --- src/process/__tests__/process.test.ts | 985 ++++++++++++++++++++++++++ src/utils/formUtil.ts | 22 +- 2 files changed, 1005 insertions(+), 2 deletions(-) diff --git a/src/process/__tests__/process.test.ts b/src/process/__tests__/process.test.ts index e6847316..bb17faf9 100644 --- a/src/process/__tests__/process.test.ts +++ b/src/process/__tests__/process.test.ts @@ -67,6 +67,991 @@ describe('Process Tests', () => { */ describe('Process Tests', () => { + it('Should submit data within a nested form.', async () => { + const form = { + _id: { + }, + title: "parent-fio-8023", + name: "parentFio8023", + path: "parentfio8023", + type: "form", + display: "wizard", + tags: [ + ], + deleted: null, + access: [ + { + type: "read_all", + roles: [ + { + }, + { + }, + { + }, + ], + }, + ], + submissionAccess: [ + ], + owner: { + }, + components: [ + { + title: "Nested Wizard", + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + collapsible: false, + key: "page1", + type: "panel", + label: "Nested Wizard", + tableView: false, + components: [ + { + label: "HTML", + attrs: [ + { + attr: "", + value: "", + }, + ], + content: "- Nested Wizard inside Parent Form\n
- Nested Wizard pages should follow the Parent Wizard page\n
- No Nested Wizard pages should display in a Parent Wizard page\n
- Should not be able to submit the Parent Wizard until all the Child and Parent field validation is satisified", + refreshOnChange: false, + key: "html", + type: "htmlelement", + tableView: false, + input: false, + }, + { + label: "Parent Text", + tableView: true, + validate: { + required: true, + }, + key: "parentText", + type: "textfield", + input: true, + }, + { + label: "Parent Number", + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: "plain", + validate: { + required: true, + }, + key: "parentNumber", + type: "number", + input: true, + }, + { + label: "Signature", + tableView: false, + validate: { + required: true, + }, + key: "signature", + type: "signature", + input: true, + }, + ], + input: false, + }, + { + title: "Nested EditGrid/DataGrid", + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + collapsible: false, + tableView: false, + key: "page2", + type: "panel", + label: "Page 2", + input: false, + components: [ + { + label: "Form", + tableView: true, + form: "65ea3662705068f84a93c781", + useOriginalRevision: false, + key: "form1", + type: "form", + revision: "1", + input: true, + components: [ + { + title: "Basic Components", + theme: "info", + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + collapsible: false, + key: "page1", + type: "panel", + label: "Basic Components", + tableView: false, + components: [ + { + label: "Number", + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: "plain", + validate: { + required: true, + }, + key: "number", + type: "number", + input: true, + }, + { + label: "Checkbox", + tableView: false, + validate: { + required: true, + }, + key: "checkbox", + type: "checkbox", + input: true, + defaultValue: false, + }, + { + label: "Select Boxes", + optionsLabelPosition: "right", + tableView: false, + values: [ + { + label: "SB - A", + value: "sbA", + shortcut: "", + }, + { + label: "SB - B", + value: "sbB", + shortcut: "", + }, + { + label: "SB - C", + value: "sbC", + shortcut: "", + }, + { + label: "SB - D", + value: "sbD", + shortcut: "", + }, + ], + validate: { + required: true, + }, + key: "selectBoxes1", + type: "selectboxes", + input: true, + inputType: "checkbox", + defaultValue: { + "": false, + sbA: false, + sbB: false, + sbC: false, + sbD: false, + }, + }, + { + label: "Select", + widget: "choicesjs", + tableView: true, + data: { + values: [ + { + label: "SA", + value: "sa", + }, + { + label: "Sb", + value: "sb", + }, + { + label: "SC", + value: "sc", + }, + ], + }, + validate: { + required: true, + }, + key: "select1", + type: "select", + input: true, + }, + { + label: "Select - URL", + widget: "choicesjs", + tableView: true, + dataSrc: "url", + data: { + url: "https://cdn.rawgit.com/mshafrir/2646763/raw/states_titlecase.json", + headers: [ + { + key: "", + value: "", + }, + ], + }, + template: "{{ item.name }}", + validate: { + required: true, + }, + key: "selectUrl", + type: "select", + input: true, + disableLimit: false, + }, + { + label: "Radio", + optionsLabelPosition: "right", + inline: false, + tableView: false, + values: [ + { + label: "Ra", + value: "ra", + shortcut: "", + }, + { + label: "Rb", + value: "rb", + shortcut: "", + }, + { + label: "Rc", + value: "rc", + shortcut: "", + }, + ], + validate: { + required: true, + }, + key: "radio1", + type: "radio", + input: true, + }, + ], + input: false, + }, + { + title: "Advanced", + theme: "primary", + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + collapsible: false, + key: "page2", + type: "panel", + label: "Advanced", + tableView: false, + input: false, + components: [ + { + label: "Email", + tableView: true, + validate: { + required: true, + }, + key: "email", + type: "email", + input: true, + }, + { + label: "Url", + tableView: true, + validate: { + required: true, + }, + key: "url", + type: "url", + input: true, + }, + { + label: "Phone Number", + tableView: true, + validate: { + required: true, + }, + key: "phoneNumber", + type: "phoneNumber", + input: true, + }, + { + label: "Tags", + tableView: false, + validate: { + required: true, + }, + key: "tags", + type: "tags", + input: true, + }, + { + label: "Address", + tableView: false, + provider: "google", + validate: { + required: true, + }, + key: "address", + type: "address", + providerOptions: { + params: { + key: "AIzaSyBNL2e4MnmyPj9zN7SVAe428nCSLP1X144", + region: "", + autocompleteOptions: { + }, + }, + }, + input: true, + components: [ + { + label: "Address 1", + tableView: false, + key: "address1", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "Address 2", + tableView: false, + key: "address2", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "City", + tableView: false, + key: "city", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "State", + tableView: false, + key: "state", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "Country", + tableView: false, + key: "country", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "Zip Code", + tableView: false, + key: "zip", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + ], + }, + { + label: "Date / Time", + tableView: false, + enableMinDateInput: false, + datePicker: { + disableWeekends: false, + disableWeekdays: false, + }, + enableMaxDateInput: false, + validate: { + required: true, + }, + key: "dateTime", + type: "datetime", + input: true, + widget: { + type: "calendar", + displayInTimezone: "viewer", + locale: "en", + useLocaleSettings: false, + allowInput: true, + mode: "single", + enableTime: true, + noCalendar: false, + format: "yyyy-MM-dd hh:mm a", + hourIncrement: 1, + minuteIncrement: 1, + time_24hr: false, + minDate: null, + disableWeekends: false, + disableWeekdays: false, + maxDate: null, + }, + }, + { + label: "Day", + hideInputLabels: false, + inputsLabelPosition: "top", + useLocaleSettings: false, + tableView: false, + fields: { + day: { + hide: false, + required: true, + }, + month: { + hide: false, + required: true, + }, + year: { + hide: false, + required: true, + }, + }, + key: "day", + type: "day", + input: true, + defaultValue: "00/00/0000", + }, + { + label: "Time", + tableView: true, + dataFormat: "HH:mm:ss a", + validate: { + required: true, + }, + key: "time", + type: "time", + input: true, + inputMask: "99:99", + }, + { + label: "Currency", + mask: false, + spellcheck: true, + tableView: false, + currency: "USD", + inputFormat: "plain", + validate: { + required: true, + }, + key: "currency", + type: "currency", + input: true, + delimiter: true, + }, + { + label: "Signature", + tableView: false, + validate: { + required: true, + }, + key: "signature", + type: "signature", + input: true, + }, + ], + }, + { + title: "DataGrid / EditGrid", + theme: "danger", + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + collapsible: false, + key: "page3", + type: "panel", + label: "DataGrid / EditGrid", + tableView: false, + input: false, + components: [ + { + label: "Data Grid", + reorder: false, + addAnotherPosition: "bottom", + defaultOpen: false, + layoutFixed: false, + enableRowGroups: false, + tableView: false, + defaultValue: [ + { + }, + ], + key: "dataGrid", + type: "datagrid", + input: true, + components: [ + { + label: "Checkbox", + tableView: false, + validate: { + required: true, + }, + key: "checkbox", + type: "checkbox", + input: true, + defaultValue: false, + }, + { + label: "Select", + widget: "choicesjs", + tableView: true, + dataSrc: "resource", + data: { + resource: "65e9eb1aee138974f569d619", + }, + valueProperty: "data.text", + template: "{{ item.data.text }}", + validate: { + select: false, + }, + key: "select", + type: "select", + searchField: "data.text__regex", + input: true, + addResource: false, + reference: false, + }, + { + label: "Radio", + optionsLabelPosition: "right", + inline: false, + tableView: false, + values: [ + { + label: "Ra", + value: "ra", + shortcut: "", + }, + { + label: "Rb", + value: "rb", + shortcut: "", + }, + { + label: "Rc", + value: "rc", + shortcut: "", + }, + ], + validate: { + required: true, + }, + key: "radio1", + type: "radio", + input: true, + }, + ], + }, + { + label: "Edit Grid", + tableView: true, + rowDrafts: false, + key: "editGrid", + type: "editgrid", + input: true, + components: [ + { + label: "Date / Time", + tableView: true, + enableMinDateInput: false, + datePicker: { + disableWeekends: false, + disableWeekdays: false, + }, + enableMaxDateInput: false, + validate: { + required: true, + }, + key: "dateTime", + type: "datetime", + input: true, + widget: { + type: "calendar", + displayInTimezone: "viewer", + locale: "en", + useLocaleSettings: false, + allowInput: true, + mode: "single", + enableTime: true, + noCalendar: false, + format: "yyyy-MM-dd hh:mm a", + hourIncrement: 1, + minuteIncrement: 1, + time_24hr: false, + minDate: null, + disableWeekends: false, + disableWeekdays: false, + maxDate: null, + }, + }, + { + label: "Address", + tableView: true, + provider: "google", + key: "address", + type: "address", + providerOptions: { + params: { + key: "AIzaSyBNL2e4MnmyPj9zN7SVAe428nCSLP1X144", + region: "", + autocompleteOptions: { + }, + }, + }, + input: true, + components: [ + { + label: "Address 1", + tableView: false, + key: "address1", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "Address 2", + tableView: false, + key: "address2", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "City", + tableView: false, + key: "city", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "State", + tableView: false, + key: "state", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "Country", + tableView: false, + key: "country", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: "Zip Code", + tableView: false, + key: "zip", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], + settings: { + share: { + theme: "", + showHeader: true, + }, + }, + properties: { + }, + project: { + }, + controller: "", + revisions: "", + submissionRevisions: "", + _vid: 0, + created: "2024-03-07T21:50:03.872Z", + modified: "2024-03-07T21:50:03.879Z", + machineName: "authoring-oaomxjpqpoigtqg:parentFio8023", + __v: 0, + }; + const submission = { + data: { + parentText: "test", + signature: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABgAAAACWCAYAAAAYAUMPAAAAAXNSR0IArs4c6QAAFkZJREFUeF7t3SFsHGcWB/Cv2CAo8MoTnQrCksiVysyuMFLCgwod4KXngBgWpTigsGHLTurKV3YgqlRyJK5UYrz4Tp97u9rsOWvv8+zOm29+Q6Ik+82893sf2v/OzBfz+eV/ioMAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoSuALAUBT89QMAQIECBAgQIAAAQIECBAgQIAAAQIECBC4EhAA2AgECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBAQFAg0PVEgECBAgQIECAAAECBAgQIECAAAECBAgQEADYAwQIECBAgAABAgQIECBAgAABAgQIECBAoEEBAUCDQ9USAQIECBAgQIAAAQIECBAgQIAAAQIECBAQANgDBAgQIECAAAECBAgQIECAAAECBAgQIECgQQEBQIND1RIBAgQIECBAgAABAgQIECBAgAABAgQIEBAA2AMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBAQFAg0PVEgECBAgQIECAAAECBAgQIECAAAECBAgQEADYAwQIECBAgAABAgQIECBAgAABAgQIECBAoEEBAUCDQ9USAQIECBAgQIAAAQIECBAgQIAAAQIECBAQANgDBAgQIECAAAECBAgQIECAAAECBAgQIECgQQEBQIND1RIBAgQIECBAgAABAgQIECBAgAABAgQIEBAA2AMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBAQFAg0PVEgECBAgQIECAAAECBAgQIECAAAECBAgQEADYAwQIECBAgAABAgQIECBAgAABAgQIECBAoEEBAUCDQ9USAQIECBAgQIAAAQIECBAgQIAAAQIECBAQANgDBAgQIECAAAECBAgQIECAAAECBAgQIECgQQEBQIND1RIBAgQIECBAgAABAgQIECBAgAABAgQIEBAA2AMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBAQFAg0PVEgECBAgQIECAAAECBAgQIECAAAECBAgQEADYA6kFjo6+LYeHT8pk8ip1nYojQIAAAQIECBAgQIAAAQIECBAgQIBANgEBQLaJqGcpMJudlz8DgKdlOv2JDAECBAgQIECAAAECBAgQIECAAAECBAhsISAA2ALLR/crsAgA6lXn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dAICgNGNvJR9BgCVdz0E2OZZ/gcH95cTOjk5LpPJqxFOTMsECBAgQIAAAQIECBAgQIAAAQIECBDYXkAAsL3Z4Fc8fPiofPz4+7KPXbwDYB0pGgKsBgD7qHPww9UAAQIECBAgQIAAAQIECBAgQIAAAQIE/icgABjhVnjw4FG5uNhvAFCZ10OAFy+elbdvv984AQHACDeolgkQIECAAAECBAgQIECAAAECBAgQ6ERAANAJ47BOsvqleq18n4/Wmc3Orx5BtDg2PQ5o/bPuABjWPlMtAQIECBAgQIAAAQIECBAgQIAAAQL9CggA+vXv5ep9BgC14etCgMnkuNQwYPUQAPSyPVyUAAECBAgQIECAAAECBAgQIECAAIFGBAQAjQxymzb6DgAWIcDp6dlVGLA4Dg+flOn0/fLv648McgfANlP2WQIECBAgQIAAAQIECBAgQIAAAQIExi4gABjhDsgQACzY6+OAPg0Bnpb6RX891uuczy9HOC0tEyBAgAABAgQIECBAgAABAgQIECBAICYgAIi5DXrV+hfrff+y/vHjb8qHD78uTes7Cerx+vXZ8t82vStg0MNQPAECBAgQIECAAAECBAgQIECAAAECBHYkIADYEWzm064+WifLF+vrIcC6X98hReZ5qo0AAQIECBAgQIAAAQIECBAgQIAAAQLXCQgARrovFo/dWX/xbp8c63cmLGrJElL0aePaBAgQIECAAAECBAgQIECAAAECBAgQ2FZAALCtmM/vTKCGEvWdAOuHX//vjNyJCRAgQIAAAQIECBAgQIAAAQIECBBoWEAA0PBwh9ra0dHfymz2z6vy/fp/qFNUNwECBAgQIECAAAECBAgQIECAAAECfQsIAPqegOtfK1DvBvj55/MymbwiRIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAQEBQADNEgIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAJB9QuojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBAQFAAM0SAgQIECBAgAABAgQIECBAgAABAgQIECCQXUAAkH1C6iNAgAABAgQIECBAgAABAgQIECBAgAABAgEBAUAAzRICBAgQIECAAAECBAgQIECAAAECBAgQIJBdQACQfULqI0CAAAECBAgQIECAAAECBAgQIECAAAECAYH/AuX7sgv4DBgrAAAAAElFTkSuQmCC", + form1: { + form: "65ea3662705068f84a93c781", + owner: "65ea3601c3792e416cabcb2a", + roles: [ + ], + access: [ + ], + metadata: { + selectData: { + form1: { + data: { + select1: { + label: "Sb", + }, + }, + }, + }, + timezone: "America/Chicago", + offset: -360, + origin: "http://localhost:3000", + referrer: "", + browserName: "Netscape", + userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", + pathName: "/", + onLine: true, + headers: { + host: "localhost:3000", + connection: "keep-alive", + "content-length": "9020", + pragma: "no-cache", + "cache-control": "no-cache", + "sec-ch-ua": "\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Brave\";v=\"122\"", + accept: "application/json", + "content-type": "application/json", + "sec-ch-ua-mobile": "?0", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", + "sec-ch-ua-platform": "\"macOS\"", + "sec-gpc": "1", + "accept-language": "en-US,en", + origin: "http://localhost:3000", + "sec-fetch-site": "same-origin", + "sec-fetch-mode": "cors", + "sec-fetch-dest": "empty", + referer: "http://localhost:3000/", + "accept-encoding": "gzip, deflate, br", + }, + }, + data: { + number: 23, + checkbox: true, + selectBoxes1: { + sbA: false, + sbB: true, + sbC: false, + sbD: false, + }, + select1: "sb", + selectUrl: { + name: "Alaska", + abbreviation: "AK", + }, + radio1: "ra", + email: "travis@form.io", + url: "google.com", + phoneNumber: "(234) 234-2342", + tags: "test", + address: { + address_components: [ + { + long_name: "12342", + short_name: "12342", + types: [ + "street_number", + ], + }, + { + long_name: "Coit Road", + short_name: "Coit Rd", + types: [ + "route", + ], + }, + { + long_name: "North Dallas", + short_name: "North Dallas", + types: [ + "neighborhood", + "political", + ], + }, + { + long_name: "Dallas", + short_name: "Dallas", + types: [ + "locality", + "political", + ], + }, + { + long_name: "Dallas County", + short_name: "Dallas County", + types: [ + "administrative_area_level_2", + "political", + ], + }, + { + long_name: "Texas", + short_name: "TX", + types: [ + "administrative_area_level_1", + "political", + ], + }, + { + long_name: "United States", + short_name: "US", + types: [ + "country", + "political", + ], + }, + { + long_name: "75243", + short_name: "75243", + types: [ + "postal_code", + ], + }, + { + long_name: "2308", + short_name: "2308", + types: [ + "postal_code_suffix", + ], + }, + ], + formatted_address: "12342 Coit Rd, Dallas, TX 75243, USA", + geometry: { + location: { + lat: 32.9165814, + lng: -96.76889729999999, + }, + viewport: { + south: 32.9151396697085, + west: -96.7703730302915, + north: 32.9178376302915, + east: -96.76767506970849, + }, + }, + place_id: "ChIJrbdWEhUgTIYRl5rVJe8Zl6A", + plus_code: { + compound_code: "W68J+JC Dallas, TX, USA", + global_code: "8645W68J+JC", + }, + types: [ + "street_address", + ], + formattedPlace: "12342 Coit Rd, Dallas, TX 75243, USA", + }, + dateTime: "2024-03-14T17:00:00.000Z", + day: "03/23/2029", + time: "15:30:00 pm", + currency: 2, + signature: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABgAAAACWCAYAAAAYAUMPAAAAAXNSR0IArs4c6QAAFBBJREFUeF7t3bFuE1kUBuChTk2J8h4gU6ekXInnIAWu7YLUKXbrFJRs5xqLlFugFS9BRZF6V9cro6yJsePjMWfOfCOhFHjunPOdW/n3zDy5u/v6T+cgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIESgk8EQCUmqdmCBAgQIAAAQIECBAgQIAAAQIECBAgQIDASkAAYCMQIECAAAECBAgQIECAAAECBAgQIECAAIGCAgKAgkPVEgECBAgQIECAAAECBAgQIECAAAECBAgQEADYAwQIECBAgAABAgQIECBAgAABAgQIECBAoKCAAKDgULVEgAABAgQIECBAgAABAgQIECBAgAABAgQEAPYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKCAAKDhULREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQGAPUCAAAECBAgQIECAAAECBAgQIECAAAECBAoKCAAKDlVLBAgQIECAAAECBAgQIECAAAECBAgQIEBAAGAPECBAgAABAgQIECBAgAABAgQIECBAgACBggICgIJD1RIBAgQIECBAgAABAgQIECBAgAABAgQIEBAA2AMECBAgQIAAAQIECBAgQIAAAQIECBAgQKCggACg4FC1RIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBAD2AAECBAgQIECAAAECBAgQIECAAAECBAgQKCggACg4VC0RIECAAAECBAgQIECAAAECBAgQIECAAAEBgD1AgAABAgQIECBAgAABAgQIECBAgAABAgQKCggACg5VSwQIECBAgAABAgQIECBAgAABAgQIECBAQABgDxAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYICAoCCQ9USAQIECBAgQIAAAQIECBAgQIAAAQIECBAQANgDBAgQIECAAAECBAgQIECAAAECBAgQIECgoIAAoOBQtUSAAAECBAgQIECAAAECBAgQIECAAAECBAQA9gABAgQIECBAgAABAgQIECBAgAABAgQIECgoIAAoOFQtESBAgAABAgQIECBAgAABAgQIECBAgAABAYA9QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECgoIAAoOVUsECBAgQIAAAQIECBAgQIAAAQIECBAgQEAAYA8QIECAAAECBAgQIECAAAECBAgQIECAAIGCAgKAgkPVEgECBAgQIECAAAECBAgQIECAAAECBAgQEADYAwQIECBAgAABAgQIECBAgAABAgQIECBAoKCAAKDgULVEgAABAgQIECBAgAABAgQIECBAgAABAgQEAPYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKCAAKDhULREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQGAPUCAAAECBAgQIECAAAECBAgQIECAAAECBAoKCAAKDlVLBAgQIECAAAECBAgQIECAAAECBAgQIEBAAGAPECBAgAABAgQIECBAgAABAgQIECBAgACBggICgIJD1RIBAgQIECBAgAABAgQIECBAgAABAgQIEBAA2AMECBAgQIAAAQIECBAgQIAAAQIECBAgQKCggACg4FC1RIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBAD2AAECBAgQIECAAAECBAgQIECAAAECBAgQKCggACg4VC0RIECAAAECBAgQIECAAAECBAgQIECAAAEBgD1AgAABAgQIECBAgAABAgQIECBAgAABAgQKCggACg5VSwQIECBAgAABAgQIECBAgAABAgQIECBAQABgDxAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYICAoCCQ9USAQIECBAgQIAAAQIECBAgQIAAAQIECBAQANgDBAgQIECAAAECBAgQIECAAAECBAgQIECgoIAAoOBQtUSAAAECBAgQIECAAAECBAgQIECAAAECBAQA9gABAgQIECBAgAABAgQIECBAgAABAgQIECgoIAAoOFQtESBAgAABAgQIECBAgAABAgQIECBAgAABAYA9QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECgoIAAoOVUsECBAgQIAAAQIECBAgQIAAAQIECBAgQEAAYA8QIECAAAECBAgQIECAAAECBAgQIECAAIGCAgKAgkPVEgECBAgQIECAAAECBAgQIECAAAECBAgQEADYAwQIECBAgAABAgQIECBAgAABAgQIECBAoKCAAKDgULVEgAABAgQIECBAgAABAgQIECBAgAABAgQEAPYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKCAAKDhULREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQGAPUCAAAECBAgQIECAAAECBAgQIECAAAECBAoKCAAKDlVLBAgQIECAAAECBAgQIECAAAECBAgQIEBAAGAPECBAgAABAgQIECBAgAABAgQIECBAgACBggICgIJD1RIBAgQIECBAgAABAgQIECBAgAABAgQIEBAA2AMECBAgQIAAAQIECBAgQIAAAQIECBAgQKCggACg4FC1RIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBAD2AAECBAgQIECAAAECBAgQIECAAAECBAgQKCggACg4VC0RIECAAAECBAgQIECAAAECBAgQIECAAAEBgD1AgAABAgQIECBAgAABAgQIECBAgAABAgQKCggACg5VSwQIECBAgAABAgQIECBAgAABAgQIECBAQABgD5xMYLn81H38+Kl7+fLF6m87lsvb1d/J5Pnq73R6ebJ6XIgAAQIECBAgQIAAAQIECBAgQIAAAQKVBQQAlaebqLfZ7F03n1/tVdFk8mIVCAgD9uLyIQIECBAgQIAAAQIECBAgQIAAAQIECDwoIACwMU4icHb29KDrrIOAFgo4CBAgQIAAAQIECBAgQIAAAQIECBAgQGB/AQHA/lY+eaBAe/TPxcWrA8/+77QWAEynb1Z/HQQIECBAgAABAgQIECBAgAABAgQIECCwW0AAsNvIJ44g8JhHAP3scoKAIwzDEgQIECBAgAABAgQIECBAgAABAgQIjEJAADCKMedosoUA66O9CHjzaC8Gbi8FbncM7DpaELBYfNj1Mf9PgAABAgQIECBAgAABAgQIECBAgACB0QoIAEY7+tyNt7Dg+vqP7tu3b1sLFQLknqHqCBAgQIAAAQIECBAgQIAAAQIECBD4tQICgF/r7+o7BNrdALPZ1da7As7Pn3VfvvzFkQABAgQIECBAgAABAgQIECBAgAABAgQ2BAQAtsQgBHYFAe1xQF4QPIhRKpIAAQIECBAgQIAAAQIECBAgQIAAgRMJCABOBO0yxxPY9kJhLwg+nrGVCBAgQIAAAQIECBAgQIAAAQIECBAYvoAAYPgzHGUH19e/dzc377vPn//+of+3b9900+nlKF00TYAAAQIECBAgQIAAAQIECBAgQIAAgbWAAMBeGLSAuwEGPT7FEyBAgAABAgQIECBAgAABAgQIECDQo4AAoEdcS59G4GfvB3A3wGlm4CoECBAgQIAAAQIECBAgQIAAAQIECOQTEADkm4mKDhRwN8CBcE4jQIAAAQIECBAgQIAAAQIECBAgQKCkgACg5FjH3dTFxauu3RWweXhJ8Lj3he4JECBAgAABAgQIECBAgAABAgQIjE1AADC2iY+kX48FGsmgtUmAAAECBAgQIECAAAECBAgQIECAwFYBAYDNUVogw2OBWg3L5W23WHwoba05AgQIECBAgAABAgQIECBAgAABAgRyCQgAcs1DNT0JbHssUN8vCW53IrRrt6Pva/VEZ1kCBAgQIECAAAECBAgQIECAAAECBAYqIAAY6OCU/XiBbY8F6vPdAPcDgHYddwE8fm7OIECAAAECBAgQIECAAAECBAgQIEDgMAEBwGFuzhqwwLYgoK9f6J+dPf2udXf3dcBySidAgAABAgQIECBAgAABAgQIECBAYEgCAoAhTUutRxV4KAjo426A+wFAuwOgXcNBgAABAgQIECBAgAABAgQIECBAgACBvgUEAH0LWz+9wENBwDHvBhAApN8CCiRAgAABAgQIECBAgAABAgQIECBQUkAAUHKsmjpEYDZ7183nV99PnUyed4vFn4cs9b9z7r+A+JjBQrgwCxAgQIAAAQIECBAgQIAAAQIECBAgUFpAAFB6vJo7RGAzCIh+ae8OgEOm4BwCBAgQIECAAAECBAgQIECAAAECBKICAoCooPPLCjwUBLRmp9PLvXveXMNLgPem80ECBAgQIECAAAECBAgQIECAAAECBIICAoAgoNNrC2x+gb/u9vz8Wff69W87w4D7v/5vL/9tLwF2ECBAgAABAgQIECBAgAABAgQIECBA4BQCAoBTKLvG4AW2BQHt8UDt2LwroL1Y+Obm/erf+mhf/rcQwEGAAAECBAgQIECAAAECBAgQIECAAIFTCAgATqHsGmUEWhDQvtxfLm9/6Gn95X77/83Dr//LbAGNECBAgAABAgQIECBAgAABAgQIEBiMgABgMKNSaCaBFgS0Yz6/2qssv/7fi8mHCBAgQIAAAQIECBAgQIAAAQIECBA4ooAA4IiYlhqfwD5BQHtM0GNeHDw+RR0TIECAAAECBAgQIECAAAECBAgQINCHgACgD1VrjlJg/egfz/kf5fg1TYAAAQIECBAgQIAAAQIECBAgQCCdgAAg3UgURIAAAQIECBAgQIAAAQIECBAgQIAAAQIE4gICgLihFQgQIECAAAECBAgQIECAAAECBAgQIECAQDoBAUC6kSiIAAECBAgQIECAAAECBAgQIECAAAECBAjEBQQAcUMrECBAgAABAgQIECBAgAABAgQIECBAgACBdAICgHQjURABAgQIECBAgAABAgQIECBAgAABAgQIEIgLCADihlYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLpBAQA6UaiIAIECBAgQIAAAQIECBAgQIAAAQIECBAgEBcQAMQNrUCAAAECBAgQIECAAAECBAgQIECAAAECBNIJCADSjURBBAgQIECAAAECBAgQIECAAAECBAgQIEAgLiAAiBtagQABAgQIECBAgAABAgQIECBAgAABAgQIpBMQAKQbiYIIECBAgAABAgQIECBAgAABAgQIECBAgEBcQAAQN7QCAQIECBAgQIAAAQIECBAgQIAAAQIECBBIJyAASDcSBREgQIAAAQIECBAgQIAAAQIECBAgQIAAgbiAACBuaAUCBAgQIECAAAECBAgQIECAAAECBAgQIJBOQACQbiQKIkCAAAECBAgQIECAAAECBAgQIECAAAECcQEBQNzQCgQIECBAgAABAgQIECBAgAABAgQIECBAIJ2AACDdSBREgAABAgQIECBAgAABAgQIECBAgAABAgTiAgKAuKEVCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAOgEBQLqRKIgAAQIECBAgQIAAAQIECBAgQIAAAQIECMQFBABxQysQIECAAAECBAgQIECAAAECBAgQIECAAIF0AgKAdCNREAECBAgQIECAAAECBAgQIECAAAECBAgQiAsIAOKGViBAgAABAgQIECBAgAABAgQIECBAgAABAukEBADpRqIgAgQIECBAgAABAgQIECBAgAABAgQIECAQFxAAxA2tQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE0gkIANKNREEECBAgQIAAAQIECBAgQIAAAQIECBAgQCAuIACIG1qBAAECBAgQIECAAAECBAgQIECAAAECBAikExAApBuJgggQIECAAAECBAgQIECAAAECBAgQIECAQFxAABA3tAIBAgQIECBAgAABAgQIECBAgAABAgQIEEgnIABINxIFESBAgAABAgQIECBAgAABAgQIECBAgACBuIAAIG5oBQIECBAgQIAAAQIECBAgQIAAAQIECBAgkE5AAJBuJAoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQJxAQFA3NAKBAgQIECAAAECBAgQIECAAAECBAgQIEAgnYAAIN1IFESAAAECBAgQIECAAAECBAgQIECAAAECBOICAoC4oRUIECBAgAABAgQIECBAgAABAgQIECBAgEA6AQFAupEoiAABAgQIECBAgAABAgQIECBAgAABAgQIxAUEAHFDKxAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXQCAoB0I1EQAQIECBAgQIAAAQIECBAgQIAAAQIECBCICwgA4oZWIECAAAECBAgQIECAAAECBAgQIECAAAEC6QQEAOlGoiACBAgQIECAAAECBAgQIECAAAECBAgQIBAXEADEDa1AgAABAgQIECBAgAABAgQIECBAgAABAgTSCQgA0o1EQQQIECBAgAABAgQIECBAgAABAgQIECBAIC4gAIgbWoEAAQIECBAgQIAAAQIECBAgQIAAAQIECKQTEACkG4mCCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAXEAAEDe0AgECBAgQIECAAAECBAgQIECAAAECBAgQSCcgAEg3EgURIECAAAECBAgQIECAAAECBAgQIECAAIG4gAAgbmgFAgQIECBAgAABAgQIECBAgAABAgQIECCQTkAAkG4kCiJAgAABAgQIECBAgAABAgQIECBAgAABAnEBAUDc0AoECBAgQIAAAQIECBAgQIAAAQIECBAgQCCdgAAg3UgURIAAAQIECBAgQIAAAQIECBAgQIAAAQIE4gICgLihFQgQIECAAAECBAgQIECAAAECBAgQIECAQDoBAUC6kSiIAAECBAgQIECAAAECBAgQIECAAAECBAjEBQQAcUMrECBAgAABAgQIECBAgAABAgQIECBAgACBdAICgHQjURABAgQIECBAgAABAgQIECBAgAABAgQIEIgL/AseLFj8GyK16AAAAABJRU5ErkJggg==", + dataGrid: [ + { + checkbox: true, + select: "", + radio1: "rb", + }, + ], + }, + _id: "65ea36dd705068f84a93c9c3", + _fvid: 1, + project: "65ea3620705068f84a93c694", + state: "submitted", + externalIds: [ + ], + created: "2024-03-07T21:51:25.110Z", + modified: "2024-03-07T21:51:25.110Z", + }, + parentNumber: 234, + }, + owner: "65ea3601c3792e416cabcb2a", + access: [ + ], + metadata: { + timezone: "America/Chicago", + offset: -360, + origin: "http://localhost:3000", + referrer: "", + browserName: "Netscape", + userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", + pathName: "/", + onLine: true, + headers: { + "accept-language": "en-US,en", + "cache-control": "no-cache", + connection: "keep-alive", + origin: "http://localhost:3000", + pragma: "no-cache", + referer: "http://localhost:3000/", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-origin", + "sec-gpc": "1", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", + accept: "application/json", + "content-type": "application/json", + "sec-ch-ua": "\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Brave\";v=\"122\"", + "sec-ch-ua-mobile": "?0", + "sec-ch-ua-platform": "\"macOS\"", + host: "localhost:3000", + "accept-encoding": "gzip, deflate, br", + "content-length": "18055", + }, + }, + _vnote: "", + state: "submitted", + form: "65ea368b705068f84a93c87a", + }; + + const errors: any = []; + const context = { + form, + submission, + data: submission.data, + components: form.components, + processors: ProcessTargets.submission, + scope: { errors }, + config: { + server: true + } + }; + processSync(context); + submission.data = context.data; + context.processors = ProcessTargets.evaluator; + processSync(context); + assert.equal(context.scope.errors.length, 0); + }); + it('Should process nested form data correctly', async () => { const submission = { data: { diff --git a/src/utils/formUtil.ts b/src/utils/formUtil.ts index e1ebdbb1..f54c8e80 100644 --- a/src/utils/formUtil.ts +++ b/src/utils/formUtil.ts @@ -369,7 +369,16 @@ export function eachComponent( writable: true, value: JSON.parse(JSON.stringify(parent)) }); - component.parent.path = parent.path; + Object.defineProperty(component.parent, 'parent', { + enumerable: false, + writable: true, + value: parent.parent + }); + Object.defineProperty(component.parent, 'path', { + enumerable: false, + writable: true, + value: parent.path + }); delete component.parent.components; delete component.parent.componentMap; delete component.parent.columns; @@ -447,7 +456,16 @@ export async function eachComponentAsync( writable: true, value: JSON.parse(JSON.stringify(parent)) }); - component.parent.path = parent.path; + Object.defineProperty(component.parent, 'parent', { + enumerable: false, + writable: true, + value: parent.parent + }); + Object.defineProperty(component.parent, 'path', { + enumerable: false, + writable: true, + value: parent.path + }); delete component.parent.components; delete component.parent.componentMap; delete component.parent.columns;