diff --git a/packages/form-builder/addon/components/cfb-form-editor/question-option.hbs b/packages/form-builder/addon/components/cfb-form-editor/question-option.hbs new file mode 100644 index 000000000..c75299719 --- /dev/null +++ b/packages/form-builder/addon/components/cfb-form-editor/question-option.hbs @@ -0,0 +1,87 @@ +
  • + +
    +
    + {{#if @canReorder}} + + {{/if}} + {{#if (is-empty @row.id)}} + + {{else}} + + {{/if}} +
    +
    + +
    +
    + +
    +
    +
    + {{#if this.showJexl}} +
    + +
    + {{/if}} +
    +
    +
  • \ No newline at end of file diff --git a/packages/form-builder/addon/components/cfb-form-editor/question-option.js b/packages/form-builder/addon/components/cfb-form-editor/question-option.js new file mode 100644 index 000000000..6b4f30ae4 --- /dev/null +++ b/packages/form-builder/addon/components/cfb-form-editor/question-option.js @@ -0,0 +1,6 @@ +import Component from "@glimmer/component"; +import { tracked } from "@glimmer/tracking"; + +export default class CfbFormEditorQuestionOption extends Component { + @tracked showJexl = false; +} diff --git a/packages/form-builder/addon/components/cfb-form-editor/question.js b/packages/form-builder/addon/components/cfb-form-editor/question.js index 2c1d3f0d2..c98d6bc52 100644 --- a/packages/form-builder/addon/components/cfb-form-editor/question.js +++ b/packages/form-builder/addon/components/cfb-form-editor/question.js @@ -363,11 +363,11 @@ export default class CfbFormEditorQuestion extends Component { (changeset.get("options") || []) .filter((option) => option.get("isDirty")) .map(async (option) => { - const { label, slug, isArchived } = option; + const { label, slug, isArchived, isHidden } = option; await this.apollo.mutate({ mutation: saveOptionMutation, - variables: { input: { label, slug, isArchived } }, + variables: { input: { label, slug, isArchived, isHidden } }, }); }), ); @@ -471,6 +471,7 @@ export default class CfbFormEditorQuestion extends Component { label: "", slug: "", isArchived: false, + isHidden: "false", slugUnlinked: false, question: this.model.slug, }, diff --git a/packages/form-builder/addon/components/cfb-form-editor/question/default.hbs b/packages/form-builder/addon/components/cfb-form-editor/question/default.hbs index 2e41fb60e..b6e73d588 100644 --- a/packages/form-builder/addon/components/cfb-form-editor/question/default.hbs +++ b/packages/form-builder/addon/components/cfb-form-editor/question/default.hbs @@ -1,6 +1,8 @@
    <@labelComponent /> + {{! Default values for ChoiceQuestions and MultipleChoiceQuestion options are not updated + when a new one is added because the object returned by `this.field` is too nested to track properly. }}
    {{component (get-widget this.field.question) diff --git a/packages/form-builder/addon/components/cfb-form-editor/question/default.js b/packages/form-builder/addon/components/cfb-form-editor/question/default.js index ee2cb0bca..6b2f9d361 100644 --- a/packages/form-builder/addon/components/cfb-form-editor/question/default.js +++ b/packages/form-builder/addon/components/cfb-form-editor/question/default.js @@ -45,7 +45,16 @@ export default class CfbFormEditorQuestionDefault extends Component { // Format option changesets to match the raw format needed in lib. raw[key] = { edges: raw.options.map((node) => { - return { node }; + return { + node: { + ...node.get("data"), + ...node.get("change"), + // While we want the real value of the option, the option should never + // be hidden in the form-builder. We need to set a value here as no + // value will lead to a Jexl error. + isHidden: "false", + }, + }; }), }; delete raw.options; diff --git a/packages/form-builder/addon/components/cfb-form-editor/question/options.hbs b/packages/form-builder/addon/components/cfb-form-editor/question/options.hbs index 4b540ab6b..eeaca4e65 100644 --- a/packages/form-builder/addon/components/cfb-form-editor/question/options.hbs +++ b/packages/form-builder/addon/components/cfb-form-editor/question/options.hbs @@ -8,80 +8,14 @@ class="uk-list uk-list-divider uk-form-controls uk-margin-small-top" > {{#each @value as |row i|}} -
  • - -
    -
    - {{#if this.canReorder}} - - {{/if}} - {{#if (is-empty row.id)}} - - {{else}} - - {{/if}} -
    -
    - -
    -
    - -
    -
    -
    -
  • + {{/each}}