125 lines
2.9 KiB
JavaScript
125 lines
2.9 KiB
JavaScript
{% block component %}
|
|
{{ name }} = {
|
|
template: "#{{ name }}",
|
|
router_path: "/{{ name }}",
|
|
delimiters: ["[[", "]]"],
|
|
props: {
|
|
items: Array,
|
|
items_headers: Array,
|
|
items_relations: {
|
|
default: function () {
|
|
return {}
|
|
},
|
|
},
|
|
group_by: String,
|
|
hidden_fields: {
|
|
default: function () {
|
|
return []
|
|
},
|
|
},
|
|
non_editable_fields: {
|
|
default: function () {
|
|
return []
|
|
},
|
|
},
|
|
show_item: {
|
|
default: "id",
|
|
},
|
|
show_url: {
|
|
default: "{{ show_url|default:'' }}",
|
|
},
|
|
},
|
|
|
|
data: function() {
|
|
return {
|
|
valid: false,
|
|
dialog: false,
|
|
dialogDelete: false,
|
|
defaultItem: {},
|
|
editedItem: {},
|
|
search: null,
|
|
default_hidden_fields: [{% for field in default_hidden_fields %}"{{ field }}",{% endfor %}],
|
|
rules: {
|
|
required: value => !!value || "{{_('Required') | escapejs}}",
|
|
},
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
editable_fields: function() {
|
|
return this.items_headers.filter(e => e.editable).filter(e => !this.non_editable_fields.includes(e.value))
|
|
},
|
|
|
|
citems_headers: function() {
|
|
return this.items_headers.filter(e => !this.hidden_fields.includes(e.value) && !this.default_hidden_fields.includes(e.value))
|
|
},
|
|
},
|
|
|
|
watch: {
|
|
dialog (val) {
|
|
val || this.close()
|
|
},
|
|
dialogDelete (val) {
|
|
val || this.closeDelete()
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
|
|
formatDate (date) {
|
|
return formatDate(date)
|
|
},
|
|
|
|
showItem (item) {
|
|
this.$router.push({ name: this.show_url, params: { id: item[this.show_item] }})
|
|
},
|
|
|
|
editItem (item) {
|
|
this.editedItem = Object.assign({}, item)
|
|
this.dialog = true
|
|
},
|
|
|
|
deleteItem (item) {
|
|
this.editedItem = Object.assign({}, item)
|
|
this.dialogDelete = true
|
|
},
|
|
|
|
deleteItemConfirm () {
|
|
this.$emit("deleteItem", this.editedItem)
|
|
this.closeDelete()
|
|
|
|
},
|
|
|
|
close () {
|
|
this.dialog = false
|
|
this.editedItem = Object.assign({}, this.defaultItem)
|
|
},
|
|
|
|
closeDelete () {
|
|
this.dialogDelete = false
|
|
this.editedItem = Object.assign({}, this.defaultItem)
|
|
},
|
|
|
|
|
|
save () {
|
|
|
|
const isValid = this.$refs.form.validate()
|
|
if (!isValid) return
|
|
|
|
if (this.editedItem.id == null) {
|
|
|
|
this.$emit("createItem", this.editedItem)
|
|
|
|
} else {
|
|
|
|
this.$emit("editItem", this.editedItem)
|
|
|
|
}
|
|
|
|
this.close()
|
|
},
|
|
}
|
|
}
|
|
|
|
{% endblock %}
|