37 lines
754 B
JavaScript
37 lines
754 B
JavaScript
import each from 'lodash/each'
|
|
import filter from 'lodash/filter'
|
|
|
|
export default {
|
|
emits: ['field-shown', 'field-hidden'],
|
|
|
|
data: () => ({
|
|
visibleFieldsForPanel: {},
|
|
}),
|
|
|
|
created() {
|
|
each(this.panel.fields, field => {
|
|
this.visibleFieldsForPanel[field.attribute] = field.visible
|
|
})
|
|
},
|
|
|
|
methods: {
|
|
handleFieldShown(field) {
|
|
this.visibleFieldsForPanel[field] = true
|
|
this.$emit('field-shown', field)
|
|
},
|
|
|
|
handleFieldHidden(field) {
|
|
this.visibleFieldsForPanel[field] = false
|
|
this.$emit('field-hidden', field)
|
|
},
|
|
},
|
|
|
|
computed: {
|
|
visibleFieldsCount() {
|
|
return Object.entries(
|
|
filter(this.visibleFieldsForPanel, visible => visible === true)
|
|
).length
|
|
},
|
|
},
|
|
}
|