adding checkbox for me (fill now)

pull/150/merge^2
iozeey 2 years ago
parent 135b0206c2
commit 8956467814

@ -75,6 +75,26 @@
>
</div>
<!-- show my_check prefill -->
<div
v-else-if="field.type === 'my_check'"
class="flex absolute items-center h-full w-full justify-center"
:style="{ ...computedStyle, backgroundColor: 'transparent' }"
:class="{'cursor-default ': !submittable}"
>
<span
style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; font-size: 1.4rem"
class="w-full h-full"
>
<component
:is="fieldIcons[field.type]"
width="100%"
height="100%"
class="h-full"
/>
</span>
</div>
<div
v-else
class="flex absolute lg:text-base"
@ -322,7 +342,8 @@ export default {
my_text: 'Text',
my_signature: 'My Signature',
my_initials: 'My Initials',
my_date: 'Date'
my_date: 'Date',
my_check: 'Check'
}
},
fieldIcons () {
@ -339,7 +360,8 @@ export default {
cells: IconColumns3,
multiple: IconChecks,
phone: IconPhoneCheck,
redact: IconBarrierBlock
redact: IconBarrierBlock,
my_check: IconCheck
}
},
image () {

@ -66,7 +66,7 @@
@focus="$refs.areas.scrollIntoField(currentField)"
/>
</div>
<div v-if="['my_text', 'my_signature', 'my_initials', 'my_date'].includes(currentField.type)">
<div v-if="['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(currentField.type)">
<!-- do nothing on this side just chill for now -->
</div>
<DateStep
@ -692,7 +692,7 @@ export default {
stepPromise().then(async () => {
const emptyRequiredField = this.stepFields.find((fields, index) => {
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(fields[0].type)) {
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(fields[0].type)) {
fields[0].required = 'false'
return false
} else {

@ -40,7 +40,7 @@
@pointerdown.stop
>
<FieldSubmitter
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)"
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)"
v-model="field.submitter_uuid"
class="border-r"
:compact="true"
@ -51,7 +51,7 @@
@click="selectedAreaRef.value = area"
/>
<FieldType
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)"
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)"
v-model="field.type"
:button-width="27"
:editable="editable"
@ -71,7 +71,7 @@
@blur="onNameBlur"
>{{ optionIndexText }} {{ field.name || defaultName }}</span>
<div
v-if="isNameFocus && !['checkbox', 'phone', 'redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)"
v-if="isNameFocus && !['checkbox', 'phone', 'redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)"
class="flex items-center ml-1.5"
>
<input
@ -171,6 +171,26 @@
style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; background-color: transparent;"
>
</div>
<!-- show my_check prefill -->
<div
v-else-if="field.type === 'my_check'"
class="flex items-center h-full w-full justify-center"
style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; background-color: transparent;"
:class="{'cursor-default ': !submittable}"
>
<span
style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; font-size: 1.4rem"
class="w-full h-full"
>
<component
:is="fieldIcons[field.type]"
width="100%"
height="100%"
class="h-full"
/>
</span>
</div>
<div
v-else
class="flex items-center h-full w-full"

@ -452,7 +452,7 @@ export default {
submitter_uuid: this.selectedSubmitter.uuid,
type
}
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(type)) {
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(type)) {
field.required = false
}
if (['select', 'multiple', 'radio'].includes(type)) {
@ -612,7 +612,7 @@ export default {
submitter_uuid: this.selectedSubmitter.uuid,
areas: [area]
}
if (['redact', 'my_text', 'my_signature', 'my_initials'].includes(field.type)) {
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)) {
field.required = false
}
this.template.fields.push(field)
@ -632,7 +632,7 @@ export default {
...this.dragField
}
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)) {
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)) {
field.required = false
}
if (['select', 'multiple', 'radio'].includes(field.type)) {
@ -655,7 +655,7 @@ export default {
} else if (previousField?.areas?.length) {
baseArea = previousField.areas[previousField.areas.length - 1]
} else {
if (['checkbox'].includes(field.type)) {
if (['checkbox', 'my_check'].includes(field.type)) {
baseArea = {
w: area.maskW / 30 / area.maskW,
h: area.maskW / 30 / area.maskW * (area.maskW / area.maskH)

@ -31,7 +31,7 @@
/>
</div>
<div
v-if="isNameFocus && !['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)"
v-if="isNameFocus && !['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)"
class="flex items-center relative"
>
<template v-if="field.type != 'phone'">
@ -164,7 +164,7 @@
Draw New Area
</a>
</li>
<li v-if="field.areas?.length === 1 && ['date', 'signature', 'initials', 'text', 'cells', 'my_text', 'redact', 'my_signature', 'my_initials', 'my_date'].includes(field.type)">
<li v-if="field.areas?.length === 1 && ['date', 'signature', 'initials', 'text', 'cells', 'my_text', 'redact', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)">
<a
href="#"
class="text-sm py-1 px-2"

@ -46,7 +46,7 @@
</template>
<script>
import { IconTextSize, IconWritingSign, IconCalendarEvent, IconPhoto, IconCheckbox, IconPaperclip, IconSelect, IconCircleDot, IconChecks, IconColumns3, IconPhoneCheck, IconBarrierBlock, IconLetterCaseUpper, IconTextResize } from '@tabler/icons-vue'
import { IconTextSize, IconWritingSign, IconCalendarEvent, IconPhoto, IconCheckbox, IconPaperclip, IconSelect, IconCircleDot, IconChecks, IconColumns3, IconPhoneCheck, IconBarrierBlock, IconLetterCaseUpper, IconTextResize, IconCheck } from '@tabler/icons-vue'
export default {
name: 'FiledTypeDropdown',
inject: ['withPhone'],
@ -96,7 +96,8 @@ export default {
my_text: 'Text',
my_signature: 'My Signature',
my_initials: 'My Initials',
my_date: 'Date'
my_date: 'Date',
my_check: 'check'
}
},
fieldIcons () {
@ -117,7 +118,8 @@ export default {
my_text: IconTextResize,
my_signature: IconWritingSign,
my_initials: IconLetterCaseUpper,
my_date: IconCalendarEvent
my_date: IconCalendarEvent,
my_check: IconCheck
}
}
},

@ -72,7 +72,7 @@
:key="type"
>
<div
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date'].includes(type)"
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(type)"
>
<button
v-if="withPhone || type != 'phone'"
@ -131,7 +131,7 @@
:key="type"
>
<div
v-if="['my_text', 'my_signature', 'my_initials', 'my_date'].includes(type)"
v-if="['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(type)"
>
<button
draggable="true"
@ -303,7 +303,7 @@ export default {
submitter_uuid: this.selectedSubmitter.uuid,
type
}
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(type)) {
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(type)) {
field.required = false
}
if (['select', 'multiple', 'radio'].includes(type)) {

@ -10,7 +10,7 @@
</a>
<% end %>
</div>
<% elsif field['type'] == 'checkbox' %>
<% elsif field['type'].in?(%w[checkbox my_check]) %>
<div class="w-full flex items-center justify-center">
<%= svg_icon('check', class: "aspect-square #{area['w'] > area['h'] ? '!w-auto !h-full' : '!w-full !h-auto'}") %>
</div>
@ -31,10 +31,7 @@
<% end %>
</div>
<% elsif field['type'] == 'date' %>
<div class="flex items-center px-0.5">
<%= l(Date.parse(value), format: :long, locale: local_assigns[:locale]) %>
</div>
<% elsif field['type'] == 'my_date' %>
<% elsif ['data', 'my_date'].include?(field['type']) %>
<div class="flex items-center px-0.5">
<%= l(Date.parse(value), format: :long, locale: local_assigns[:locale]) %>
</div>

@ -59,8 +59,9 @@
<%= render 'submissions/annotation', annot: %>
<% end %>
<% fields_index.dig(document.uuid, index)&.each do |(area, field)| %>
<% if ['my_text', 'my_signature', 'my_initials', 'my_date'].include?(field['type']) %>
<% if ['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].include?(field['type']) %>
<% value = @submission.template.values[field['uuid']] %>
<% value = 'my_check' if ['my_check'].include?(field['type']) %>
<% else %>
<% value = values[field['uuid']] %>
<% end %>

@ -1,5 +1,5 @@
<% data_attachments = attachments_index.values.select { |e| e.record_id == submitter.id }.to_json(only: %i[uuid], methods: %i[url filename content_type]) %>
<% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| ['my_text', 'my_signature', 'my_initials', 'my_data'].include?(f['type']) || f['submitter_uuid'] == submitter.uuid }.to_json %>
<% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| ['my_text', 'my_signature', 'my_initials', 'my_data', 'my_check'].include?(f['type']) || f['submitter_uuid'] == submitter.uuid }.to_json %>
<% completed_button_params = submitter.submission.template.account.account_configs.find_by(key: AccountConfig::FORM_COMPLETED_BUTTON_KEY)&.value || {} %>
<% templateValues = submitter.submission.template.values %>
<% template_attachments = ActiveStorage::Attachment.where(record: submitter.submission.template, name: :attachments).preload(:blob).index_by(&:uuid) %>

@ -33,7 +33,7 @@ module Submissions
pdfs_index = build_pdfs_index(submitter)
submitter.submission.template_fields.each do |field|
unless ['my_text', 'my_signature', 'my_initials', 'my_date'].include?(field['type'])
unless ['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].include?(field['type'])
next if field['submitter_uuid'] != submitter.uuid
end
field.fetch('areas', []).each do |area|
@ -146,7 +146,8 @@ module Submissions
layouter.fit(items, area['w'] * width, height_diff.positive? ? box_height : area['h'] * height)
.draw(canvas, (area['x'] * width) + TEXT_LEFT_MARGIN,
height - (area['y'] * height) + height_diff - TEXT_TOP_MARGIN)
when ->(type) { type == 'checkbox' || (type.in?(%w[multiple radio]) && area['option_uuid'].present?) }
when ->(type) { type == 'checkbox' || type == 'my_check' || (type.in?(%w[multiple radio]) && area['option_uuid'].present?) }
value=true if field['type'] == 'my_check'
if field['type'].in?(%w[multiple radio])
option = field['options']&.find { |o| o['uuid'] == area['option_uuid'] }

Loading…
Cancel
Save