|
|
|
@ -74,6 +74,66 @@
|
|
|
|
{{ t('default_value') }}
|
|
|
|
{{ t('default_value') }}
|
|
|
|
</label>
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
|
|
|
v-if="['text', 'cells'].includes(field.type)"
|
|
|
|
|
|
|
|
class="py-1.5 px-1 relative"
|
|
|
|
|
|
|
|
@click.stop
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<select
|
|
|
|
|
|
|
|
class="select select-bordered select-xs w-full max-w-xs h-7 !outline-0 font-normal bg-transparent"
|
|
|
|
|
|
|
|
@change="onChangeValidation"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<option
|
|
|
|
|
|
|
|
:selected="!field.validation"
|
|
|
|
|
|
|
|
value=""
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
{{ t('none') }}
|
|
|
|
|
|
|
|
</option>
|
|
|
|
|
|
|
|
<option
|
|
|
|
|
|
|
|
v-for="(key, value) in validations"
|
|
|
|
|
|
|
|
:key="key"
|
|
|
|
|
|
|
|
:selected="field.validation?.pattern ? value === field.validation.pattern : value === 'none'"
|
|
|
|
|
|
|
|
:value="value"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
{{ t(key) }}
|
|
|
|
|
|
|
|
</option>
|
|
|
|
|
|
|
|
<option
|
|
|
|
|
|
|
|
:selected="field.validation && !validations[field.validation.pattern]"
|
|
|
|
|
|
|
|
:value="validations[field.validation?.pattern] || !field.validation?.pattern ? 'custom' : field.validation?.pattern"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
{{ t('custom') }}
|
|
|
|
|
|
|
|
</option>
|
|
|
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
<label
|
|
|
|
|
|
|
|
:style="{ backgroundColor }"
|
|
|
|
|
|
|
|
class="absolute -top-1 left-2.5 px-1 h-4"
|
|
|
|
|
|
|
|
style="font-size: 8px"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
{{ t('validation') }}
|
|
|
|
|
|
|
|
</label>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
|
|
|
v-if="['text', 'cells'].includes(field.type) && field.validation && !validations[field.validation.pattern]"
|
|
|
|
|
|
|
|
class="py-1.5 px-1 relative"
|
|
|
|
|
|
|
|
@click.stop
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<input
|
|
|
|
|
|
|
|
ref="validationCustom"
|
|
|
|
|
|
|
|
v-model="field.validation.pattern"
|
|
|
|
|
|
|
|
:placeholder="t('regexp_validation')"
|
|
|
|
|
|
|
|
dir="auto"
|
|
|
|
|
|
|
|
class="input input-bordered input-xs w-full max-w-xs h-7 !outline-0 bg-transparent"
|
|
|
|
|
|
|
|
@blur="save"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<label
|
|
|
|
|
|
|
|
v-if="field.validation.pattern"
|
|
|
|
|
|
|
|
:style="{ backgroundColor }"
|
|
|
|
|
|
|
|
class="absolute -top-1 left-2.5 px-1 h-4"
|
|
|
|
|
|
|
|
style="font-size: 8px"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
{{ t('regexp_validation') }}
|
|
|
|
|
|
|
|
</label>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
v-if="field.type === 'date'"
|
|
|
|
v-if="field.type === 'date'"
|
|
|
|
class="py-1.5 px-1 relative"
|
|
|
|
class="py-1.5 px-1 relative"
|
|
|
|
@ -393,6 +453,17 @@ export default {
|
|
|
|
|
|
|
|
|
|
|
|
return formats
|
|
|
|
return formats
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
validations () {
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
|
|
|
'^[0-9]{3}-[0-9]{2}-[0-9]{4}$': 'ssn',
|
|
|
|
|
|
|
|
'^[0-9]{2}-[0-9]{7}$': 'ein',
|
|
|
|
|
|
|
|
'^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$': 'email',
|
|
|
|
|
|
|
|
'^https?://.*': 'url',
|
|
|
|
|
|
|
|
'^[0-9]{5}(?:-[0-9]{4})?$': 'zip',
|
|
|
|
|
|
|
|
'^[0-9]+$': 'numbers_only',
|
|
|
|
|
|
|
|
'^[a-zA-Z]+$': 'letters_only'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
sortedAreas () {
|
|
|
|
sortedAreas () {
|
|
|
|
return (this.field.areas || []).sort((a, b) => {
|
|
|
|
return (this.field.areas || []).sort((a, b) => {
|
|
|
|
return this.schemaAttachmentsIndexes[a.attachment_uuid] - this.schemaAttachmentsIndexes[b.attachment_uuid]
|
|
|
|
return this.schemaAttachmentsIndexes[a.attachment_uuid] - this.schemaAttachmentsIndexes[b.attachment_uuid]
|
|
|
|
@ -400,6 +471,20 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
methods: {
|
|
|
|
|
|
|
|
onChangeValidation (event) {
|
|
|
|
|
|
|
|
if (event.target.value === 'custom') {
|
|
|
|
|
|
|
|
this.field.validation = { pattern: '' }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.$nextTick(() => this.$refs.validationCustom.focus())
|
|
|
|
|
|
|
|
} else if (event.target.value) {
|
|
|
|
|
|
|
|
this.field.validation ||= {}
|
|
|
|
|
|
|
|
this.field.validation.pattern = event.target.value
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
delete this.field.validation
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.save()
|
|
|
|
|
|
|
|
},
|
|
|
|
copyToAllPages (field) {
|
|
|
|
copyToAllPages (field) {
|
|
|
|
const areaString = JSON.stringify(field.areas[0])
|
|
|
|
const areaString = JSON.stringify(field.areas[0])
|
|
|
|
|
|
|
|
|
|
|
|
|