K356/k356/items/templates/components/DynField/vue.js

48 lines
1.5 KiB
JavaScript

DynField = {
template: "#DynField",
router_path: "/",
delimiters: ["[[", "]]"],
props: {
field: {
default: null,
},
item: {
default: function() {
return {}
},
}
},
data: function() {
return {
test: null,
modal: null,
rules: {
required: value => !!value || "{{_('Required') | escapejs}}",
email: value => {
const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return pattern.test(value) || "{{_('Invalid E-mail') | escapejs}}"
},
uuid: value => {
const pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
return pattern.test(value) || "{{_('Invalid UUID') | escapejs}}"
},
ipv4: value => {
const pattern = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/
return pattern.test(value) || "{{_('Invalid IPv4') | escapejs}}"
},
},
}
},
computed: {
field_type: function() {
if (this.item?.property?.type == undefined) {
return "v-textarea"
}
return this.item?.property?.type
},
}
}