const Fieldtype = { template: `
`, mixins: [window.Storyblok.plugin], computed: { cols() { if (this.model) { return this.model.thead.length } return 0 } }, data() { return { open: false } }, methods: { initWith() { return { plugin: 'translateable-table', thead: [ {value: 'Head1'}, {value: 'Head2'} ], tbody: [ { component: '_table_row', body: [ { component: '_table_col', value: 'one' }, { component: '_table_col', value: 'two' } ] } ] } }, resetFn(e) { var textarea = e.currentTarget textarea.style.overflowY = 'scroll' textarea.style.height = '42px' }, autogrowFn(e) { var maxAllowedHeight = 300 var newHeight = 0 var hasGrown = false var textarea = e.currentTarget if (textarea.scrollHeight > maxAllowedHeight) { textarea.style.overflowY = 'scroll' newHeight = maxAllowedHeight } else { textarea.style.overflowY = 'hidden' textarea.style.height = 'auto' newHeight = textarea.scrollHeight + 2 hasGrown = true } textarea.style.height = newHeight + 'px' return hasGrown }, moveRow(index, offset) { this.move(this.model.tbody, index, offset) }, move(elements, index, offset) { var newIndex = index + offset if (newIndex > -1 && newIndex < elements.length) { var removedElement = elements.splice(index, 1)[0] elements.splice(newIndex, 0, removedElement) } }, moveCol(index, offset) { this.move(this.model.thead, index, offset) this.model.tbody.forEach((item) => { this.move(item.body, index, offset) }) }, close() { this.$emit('toggle-modal', false) this.open = false }, openOverlay() { this.$emit('toggle-modal', true) this.open = true }, addRow(index) { var row = {component: '_table_row', body: []} for (var i = 0; i < this.cols; i++) { row.body[i] = {component: '_table_col', value: ''} } this.model.tbody.splice(index + 1, 0, row) }, addCol(index) { this.model.thead.splice(index + 1, 0, {value: 'Title'}) this.model.tbody.forEach(function (item) { item.body.splice(index + 1, 0, {component: '_table_col', value: ''}) }) }, removeCol(index) { this.model.thead.splice(index, 1) this.model.tbody.forEach(function (item) { item.body.splice(index, 1) }) }, removeRow(index) { this.model.tbody.splice(index, 1) } }, watch: { 'model': { handler(value) { this.$emit('changed-model', value) }, deep: true } } }