hide optinal fields

pull/582/head
Brsoyan 2 months ago
parent 6ab68cc36b
commit f20d8aa6d6

@ -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,

@ -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,

@ -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',

@ -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 = {}

@ -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 %>
<submission-form data-is-demo="<%= Docuseal.demo? %>" data-schema="<%= schema.to_json %>" data-reuse-signature="<%= configs[:reuse_signature] %>" data-require-signing-reason="<%= configs[:require_signing_reason] %>" data-with-signature-id="<%= configs[:with_signature_id] %>" data-with-field-labels="<%= configs[:with_field_labels] %>" data-with-confetti="<%= configs[:with_confetti] %>" data-completed-redirect-url="<%= submitter.preferences['completed_redirect_url'].presence || submitter.submission.template&.preferences&.dig('completed_redirect_url') %>" data-completed-message="<%= (configs[:completed_message]&.compact_blank.presence || submitter.submission.template&.preferences&.dig('completed_message') || {}).to_json %>" data-completed-button="<%= configs[:completed_button].to_json %>" data-go-to-last="<%= submitter.preferences.key?('go_to_last') ? submitter.preferences['go_to_last'] : submitter.opened_at? %>" data-submitter="<%= submitter.to_json(only: %i[uuid slug name phone email]) %>" data-can-send-email="<%= Accounts.can_send_emails?(submitter.submission.account) %>" data-optional-invite-submitters="<%= optional_invite_submitters %>" data-invite-submitters="<%= invite_submitters %>" data-attachments="<%= data_attachments %>" data-fields="<%= data_fields %>" data-values="<%= submitter.values.to_json %>" data-with-typed-signature="<%= configs[:with_typed_signature] %>" data-previous-signature-value="<%= local_assigns[:signature_attachment]&.uuid %>" data-remember-signature="<%= configs[:prefill_signature] %>" data-dry-run="<%= local_assigns[:dry_run] %>" data-expand="<%= local_assigns[:expand] %>" data-scroll-padding="<%= local_assigns[:scroll_padding] %>" data-language="<%= I18n.locale.to_s.split('-').first %>"></submission-form>
<submission-form data-is-demo="<%= Docuseal.demo? %>" data-schema="<%= schema.to_json %>" data-reuse-signature="<%= configs[:reuse_signature] %>" data-require-signing-reason="<%= configs[:require_signing_reason] %>" data-with-signature-id="<%= configs[:with_signature_id] %>" data-with-field-labels="<%= configs[:with_field_labels] %>" data-with-confetti="<%= configs[:with_confetti] %>" data-completed-redirect-url="<%= submitter.preferences['completed_redirect_url'].presence || submitter.submission.template&.preferences&.dig('completed_redirect_url') %>" data-completed-message="<%= (configs[:completed_message]&.compact_blank.presence || submitter.submission.template&.preferences&.dig('completed_message') || {}).to_json %>" data-completed-button="<%= configs[:completed_button].to_json %>" data-go-to-last="<%= submitter.preferences.key?('go_to_last') ? submitter.preferences['go_to_last'] : submitter.opened_at? %>" data-hide-optional-fields="<%= submitter.preferences['hide_optional_fields'] %>" data-submitter="<%= submitter.to_json(only: %i[uuid slug name phone email]) %>" data-can-send-email="<%= Accounts.can_send_emails?(submitter.submission.account) %>" data-optional-invite-submitters="<%= optional_invite_submitters %>" data-invite-submitters="<%= invite_submitters %>" data-attachments="<%= data_attachments %>" data-fields="<%= data_fields %>" data-values="<%= submitter.values.to_json %>" data-with-typed-signature="<%= configs[:with_typed_signature] %>" data-previous-signature-value="<%= local_assigns[:signature_attachment]&.uuid %>" data-remember-signature="<%= configs[:prefill_signature] %>" data-dry-run="<%= local_assigns[:dry_run] %>" data-expand="<%= local_assigns[:expand] %>" data-scroll-padding="<%= local_assigns[:scroll_padding] %>" data-language="<%= I18n.locale.to_s.split('-').first %>"></submission-form>

@ -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.",

@ -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)

@ -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

Loading…
Cancel
Save