diff --git a/app/controllers/api/templates_controller.rb b/app/controllers/api/templates_controller.rb
index 3ba50a89..8bf8a1a2 100644
--- a/app/controllers/api/templates_controller.rb
+++ b/app/controllers/api/templates_controller.rb
@@ -52,11 +52,13 @@ module Api
end
def template_params
- params.require(:template).permit(:name,
- schema: [%i[attachment_uuid name]],
- submitters: [%i[name uuid]],
- fields: [[:uuid, :submitter_uuid, :name, :type, :required,
- { options: [], areas: [%i[x y w h cell_w attachment_uuid page]] }]])
+ params.require(:template).permit(
+ :name,
+ schema: [%i[attachment_uuid name]],
+ submitters: [%i[name uuid]],
+ fields: [[:uuid, :submitter_uuid, :name, :type, :required, :readonly, :default_value,
+ { options: [], areas: [%i[x y w h cell_w attachment_uuid page]] }]]
+ )
end
end
end
diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue
index 026ceb1e..86eb7f09 100644
--- a/app/javascript/submission_form/form.vue
+++ b/app/javascript/submission_form/form.vue
@@ -513,9 +513,15 @@ export default {
mounted () {
this.submittedValues = JSON.parse(JSON.stringify(this.values))
+ this.fields.forEach((field) => {
+ if (field.default_value && !field.readonly) {
+ this.values[field.uuid] = field.default_value
+ }
+ })
+
if (this.goToLast) {
- const requiredEmptyStepIndex = this.stepFields.indexOf(this.stepFields.find((fields) => fields.some((f) => f.required && !this.values[f.uuid])))
- const lastFilledStepIndex = this.stepFields.indexOf([...this.stepFields].reverse().find((fields) => fields.some((f) => !!this.values[f.uuid]))) + 1
+ const requiredEmptyStepIndex = this.stepFields.indexOf(this.stepFields.find((fields) => fields.some((f) => f.required && !this.submittedValues[f.uuid])))
+ const lastFilledStepIndex = this.stepFields.indexOf([...this.stepFields].reverse().find((fields) => fields.some((f) => !!this.submittedValues[f.uuid]))) + 1
const indexesList = [this.stepFields.length - 1]
diff --git a/app/javascript/template_builder/area.vue b/app/javascript/template_builder/area.vue
index 8a860a35..bcad7d00 100644
--- a/app/javascript/template_builder/area.vue
+++ b/app/javascript/template_builder/area.vue
@@ -95,18 +95,27 @@
+
+
+ {{ field.default_value }}
+
+
@@ -192,30 +201,30 @@ export default {
},
borderColors () {
return [
- 'border-red-500',
- 'border-sky-500',
- 'border-emerald-500',
- 'border-yellow-300',
- 'border-purple-600',
- 'border-pink-500',
- 'border-cyan-500',
- 'border-orange-500',
- 'border-lime-500',
- 'border-indigo-500'
+ 'border-red-500/50',
+ 'border-sky-500/50',
+ 'border-emerald-500/50',
+ 'border-yellow-300/50',
+ 'border-purple-600/50',
+ 'border-pink-500/50',
+ 'border-cyan-500/50',
+ 'border-orange-500/50',
+ 'border-lime-500/50',
+ 'border-indigo-500/50'
]
},
bgColors () {
return [
- 'bg-red-100',
- 'bg-sky-100',
- 'bg-emerald-100',
- 'bg-yellow-100',
- 'bg-purple-100',
- 'bg-pink-100',
- 'bg-cyan-100',
- 'bg-orange-100',
- 'bg-lime-100',
- 'bg-indigo-100'
+ 'bg-red-100/50',
+ 'bg-sky-100/50',
+ 'bg-emerald-100/50',
+ 'bg-yellow-100/50',
+ 'bg-purple-100/50',
+ 'bg-pink-100/50',
+ 'bg-cyan-100/50',
+ 'bg-orange-100/50',
+ 'bg-lime-100/50',
+ 'bg-indigo-100/50'
]
},
isSelected () {
@@ -269,6 +278,8 @@ export default {
}
},
maybeUpdateOptions () {
+ delete this.field.default_value
+
if (!['radio', 'multiple', 'select'].includes(this.field.type)) {
delete this.field.options
}
diff --git a/app/javascript/template_builder/field.vue b/app/javascript/template_builder/field.vue
index 6218bf36..75295455 100644
--- a/app/javascript/template_builder/field.vue
+++ b/app/javascript/template_builder/field.vue
@@ -53,7 +53,6 @@
class="flex items-center space-x-1"
>
-