diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb
index 22af24d9..0059cd9b 100644
--- a/app/controllers/api/submissions_controller.rb
+++ b/app/controllers/api/submissions_controller.rb
@@ -182,12 +182,14 @@ module Api
def submissions_params
permitted_attrs = [
:send_email, :send_sms, :bcc_completed, :completed_redirect_url, :reply_to, :go_to_last,
+ :hide_optional_fields,
:require_phone_2fa, :require_email_2fa, :expire_at, :name,
{
variables: {},
message: %i[subject body],
submitters: [[:send_email, :send_sms, :completed_redirect_url, :uuid, :name, :email, :role,
:completed, :phone, :application_key, :external_id, :reply_to, :go_to_last,
+ :hide_optional_fields,
:require_phone_2fa, :require_email_2fa, :order, :index, :invite_by,
{ metadata: {}, values: {}, roles: [], readonly_fields: [], message: %i[subject body],
fields: [:name, :uuid, :default_value, :value, :title, :description,
diff --git a/app/controllers/api/submitters_controller.rb b/app/controllers/api/submitters_controller.rb
index e56eb8b8..552b6b78 100644
--- a/app/controllers/api/submitters_controller.rb
+++ b/app/controllers/api/submitters_controller.rb
@@ -85,6 +85,7 @@ module Api
submitter_params.permit(
:send_email, :send_sms, :reply_to, :completed_redirect_url, :uuid, :name, :email, :role,
:completed, :phone, :application_key, :external_id, :go_to_last, :require_phone_2fa, :require_email_2fa,
+ :hide_optional_fields,
{ metadata: {}, values: {}, readonly_fields: [], message: %i[subject body],
fields: [[:name, :uuid, :default_value, :value, :required,
:readonly, :validation_pattern, :invalid_message,
diff --git a/app/javascript/form.js b/app/javascript/form.js
index 1fbd54c8..27440c5d 100644
--- a/app/javascript/form.js
+++ b/app/javascript/form.js
@@ -28,6 +28,7 @@ safeRegisterElement('submission-form', class extends HTMLElement {
canSendEmail: this.dataset.canSendEmail === 'true',
previousSignatureValue: this.dataset.previousSignatureValue,
goToLast: this.dataset.goToLast === 'true',
+ hideOptionalFields: this.dataset.hideOptionalFields === 'true',
isDemo: this.dataset.isDemo === 'true',
attribution: this.dataset.attribution !== 'false',
scrollPadding: this.dataset.scrollPadding || '-80px',
diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue
index dc224fad..73d070ea 100644
--- a/app/javascript/submission_form/form.vue
+++ b/app/javascript/submission_form/form.vue
@@ -830,6 +830,11 @@ export default {
required: false,
default: true
},
+ hideOptionalFields: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
isDemo: {
type: Boolean,
required: false,
@@ -1089,7 +1094,7 @@ export default {
const cache = {}
- return sortedFields.reduce((acc, f) => {
+ const steps = sortedFields.reduce((acc, f) => {
const prevStep = acc[acc.length - 1]
if (this.checkFieldConditions(f, cache) && this.checkFieldDocumentsConditions(f)) {
@@ -1102,6 +1107,16 @@ export default {
return acc
}, [])
+
+ if (!this.hideOptionalFields) {
+ return steps
+ }
+
+ const requiredOnlySteps = steps
+ .map((fields) => fields.filter((f) => f.required))
+ .filter((fields) => fields.length)
+
+ return requiredOnlySteps.length ? requiredOnlySteps : steps
},
formulaFields () {
const cache = {}
diff --git a/app/views/submit_form/_submission_form.html.erb b/app/views/submit_form/_submission_form.html.erb
index 0c13d8c7..e36c4023 100644
--- a/app/views/submit_form/_submission_form.html.erb
+++ b/app/views/submit_form/_submission_form.html.erb
@@ -2,4 +2,4 @@
<% data_fields = Submissions.filtered_conditions_fields(submitter).to_json %>
<% invite_submitters = (submitter.submission.template_submitters || submitter.submission.template.submitters).select { |s| s['invite_by_uuid'] == submitter.uuid && submitter.submission.submitters.none? { |e| e.uuid == s['uuid'] } }.to_json %>
<% optional_invite_submitters = (submitter.submission.template_submitters || submitter.submission.template.submitters).select { |s| s['optional_invite_by_uuid'] == submitter.uuid && submitter.submission.submitters.none? { |e| e.uuid == s['uuid'] } }.to_json %>
-
+
diff --git a/docs/openapi.json b/docs/openapi.json
index 9afd740c..ea0edcea 100644
--- a/docs/openapi.json
+++ b/docs/openapi.json
@@ -1715,6 +1715,11 @@
"type": "string",
"description": "Specify Reply-To address to use in the notification emails."
},
+ "hide_optional_fields": {
+ "type": "boolean",
+ "description": "Set `true` to hide optional fields in the guided stepper when viewing the signing form.",
+ "default": false
+ },
"expire_at": {
"type": "string",
"description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
@@ -1793,6 +1798,11 @@
"type": "string",
"description": "Specify Reply-To address to use in the notification emails for this submitter."
},
+ "hide_optional_fields": {
+ "type": "boolean",
+ "description": "Set `true` to hide optional fields in the guided stepper when viewing the signing form.",
+ "default": false
+ },
"completed_redirect_url": {
"type": "string",
"description": "Submitter specific URL to redirect to after the submission completion."
@@ -6529,6 +6539,11 @@
"type": "string",
"description": "Submitter specific URL to redirect to after the submission completion."
},
+ "hide_optional_fields": {
+ "type": "boolean",
+ "description": "Set `true` to hide optional fields in the guided stepper when viewing the signing form.",
+ "default": false
+ },
"require_phone_2fa": {
"type": "boolean",
"description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
diff --git a/lib/params/submission_create_validator.rb b/lib/params/submission_create_validator.rb
index 39b4f3cd..c3646101 100644
--- a/lib/params/submission_create_validator.rb
+++ b/lib/params/submission_create_validator.rb
@@ -40,6 +40,7 @@ module Params
boolean(params, :send_email)
boolean(params, :send_sms)
+ boolean(params, :hide_optional_fields)
type(params, :order, String)
type(params, :completed_redirect_url, String)
type(params, :bcc_completed, String)
@@ -90,6 +91,7 @@ module Params
type(submitter_params, :metadata, Hash)
boolean(submitter_params, :send_email)
boolean(submitter_params, :send_sms)
+ boolean(submitter_params, :hide_optional_fields)
type(submitter_params, :completed_redirect_url, String)
type(submitter_params, :fields, Array)
@@ -109,6 +111,7 @@ module Params
boolean(params, :send_email)
boolean(params, :send_sms)
+ boolean(params, :hide_optional_fields)
type(params, :order, String)
type(params, :completed_redirect_url, String)
type(params, :bcc_completed, String)
diff --git a/lib/submitters.rb b/lib/submitters.rb
index c557dd3e..e1018159 100644
--- a/lib/submitters.rb
+++ b/lib/submitters.rb
@@ -162,6 +162,7 @@ module Submitters
preferences['bcc_completed'] = params['bcc_completed'] if params.key?('bcc_completed')
preferences['reply_to'] = params['reply_to'] if params.key?('reply_to')
preferences['go_to_last'] = params['go_to_last'] if params.key?('go_to_last')
+ preferences['hide_optional_fields'] = params['hide_optional_fields'].in?(TRUE_VALUES) if params.key?('hide_optional_fields')
preferences['completed_redirect_url'] = params['completed_redirect_url'] if params.key?('completed_redirect_url')
preferences