unite-cms/unite-cms

View on GitHub
src/Bundle/AdminBundle/Resources/assets/vue/components/Fields/Form/_multiField.vue

Summary

Maintainability
Test Coverage
<template>
  <div v-if="field.list_of">
    <div class="uk-margin-small" v-for="(row, key) in val">
      <div class="uk-inline" :class="{ 'span-row' : spanRow, 'remove-button-outside' : removeButtonOutside }">
        <slot :row-value="row" :row-key="key"></slot>
        <a class="uk-form-icon uk-text-danger" :class="{ 'uk-form-icon-flip' : removeButtonFlip }" @click.prevent="removeRow(key)"><icon name="x" /></a>
      </div>
    </div>
    <a @click.prevent="addRow" class="uk-icon-button uk-button-light uk-icon-button-small"><icon name="plus" /></a>
  </div>
  <div v-else>
    <slot :row-value="val" :row-key="null"></slot>
  </div>
</template>
<script>
    import Icon from "../../Icon";
    export default {
        components: { Icon },
        props: {
            val: {},
            spanRow: {
                type: Boolean,
                default: true
            },
            removeButtonOutside: {
                type: Boolean,
                default: true
            },
            removeButtonFlip: {
                type: Boolean,
                default: true
            },
            field: Object
        },
        methods: {
            addRow() {
                this.$emit('addRow');
            },
            removeRow(key) {
                this.$emit('removeRow', key);
            }
        }
    }
</script>
<style scoped lang="scss">
  .uk-inline {
    &.span-row {
      display: block;
    }

    &.remove-button-outside {
      padding-right: 40px;
    }
  }
</style>