diff --git a/.github/workflows/dluhc-build-and-publish.yml b/.github/workflows/dluhc-build-and-publish.yml index 41c14dc223..bd9aad6fc6 100644 --- a/.github/workflows/dluhc-build-and-publish.yml +++ b/.github/workflows/dluhc-build-and-publish.yml @@ -13,7 +13,7 @@ on: ] env: - VERSION: "0.1.52" # Manually increment this version when pushing to main + VERSION: "0.1.53" # Manually increment this version when pushing to main IMAGE_NAME_STUB: "digital-form-builder-dluhc-" DOCKER_REGISTRY: ghcr.io IMAGE_REPO_PATH: "ghcr.io/${{github.repository_owner}}" diff --git a/model/src/components/types.ts b/model/src/components/types.ts index d285e74809..bccd50f25a 100644 --- a/model/src/components/types.ts +++ b/model/src/components/types.ts @@ -322,6 +322,10 @@ export interface SelectFieldComponent extends ListFieldBase { export interface MultiInputFieldComponent extends TextFieldBase { type: "MultiInputField"; + options: TextFieldBase["options"] & { + textFieldTitle?: string; + numberFieldTitle?: string; + }; } export type ComponentDef = diff --git a/runner/src/server/forms/test.json b/runner/src/server/forms/test.json index 2fc8c7b498..bc6b102985 100644 --- a/runner/src/server/forms/test.json +++ b/runner/src/server/forms/test.json @@ -481,7 +481,7 @@ "title": "Update form in application store", "type": "savePerPage", "outputConfiguration": { - "savePerPageUrl": "https://webhook.site/ba83e49b-cdd1-46e9-9c04-c89cfa651752" + "savePerPageUrl": "True" } } ], diff --git a/runner/src/server/plugins/engine/components/MultiInputField.ts b/runner/src/server/plugins/engine/components/MultiInputField.ts index ab41c7b7e4..51376fc076 100644 --- a/runner/src/server/plugins/engine/components/MultiInputField.ts +++ b/runner/src/server/plugins/engine/components/MultiInputField.ts @@ -10,26 +10,29 @@ import { } from "../types"; import { FormModel } from "../models"; import { Schema } from "joi"; +import { DataType } from "./types"; export class MultiInputField extends FormComponent { children: ComponentCollection; + dataType = "multiInput" as DataType; constructor(def: InputFieldsComponentsDef, model: FormModel) { super(def, model); + const options: any = this.options; this.children = new ComponentCollection( [ { type: "TextField", name: "type-of-revenue-cost", - title: this.options.textFieldTitle, + title: options.textFieldTitle, schema: {}, options: {}, }, { type: "NumberField", name: "value", - title: this.options.numberFieldTitle, + title: options.numberFieldTitle, schema: {}, options: { prefix: "£", diff --git a/runner/src/server/plugins/engine/components/types.ts b/runner/src/server/plugins/engine/components/types.ts index b5d8fdb938..1eea576c40 100644 --- a/runner/src/server/plugins/engine/components/types.ts +++ b/runner/src/server/plugins/engine/components/types.ts @@ -95,4 +95,5 @@ export type DataType = | "monthYear" | "number" | "file" - | "freeText"; + | "freeText" + | "multiInput"; diff --git a/runner/src/server/plugins/engine/models/submission/WebhookModel.ts b/runner/src/server/plugins/engine/models/submission/WebhookModel.ts index 58d7f801fa..d8e4a78ab9 100644 --- a/runner/src/server/plugins/engine/models/submission/WebhookModel.ts +++ b/runner/src/server/plugins/engine/models/submission/WebhookModel.ts @@ -16,6 +16,8 @@ function answerFromDetailItem(item) { if (typeof item.rawValue === "undefined") return "undefined"; const [month, year] = Object.values(item.rawValue); return format(new Date(`${year}-${month}-1`), "yyyy-MM"); + case "multiInput": + return item.rawValue; default: return item.value; } diff --git a/runner/src/server/plugins/engine/pageControllers/RepeatingFieldPageController.ts b/runner/src/server/plugins/engine/pageControllers/RepeatingFieldPageController.ts index 6bb2dbacab..72f5325d1e 100644 --- a/runner/src/server/plugins/engine/pageControllers/RepeatingFieldPageController.ts +++ b/runner/src/server/plugins/engine/pageControllers/RepeatingFieldPageController.ts @@ -307,6 +307,7 @@ export class RepeatingFieldPageController extends PageController { return partial.length; } + // This will remain in for a a round for backward compatibility. The string awnsers will convert on a submit convertMultiInputStringAnswers(answers) { if (typeof answers === "undefined") { return answers;