voyager-admin/voyager

View on GitHub
resources/assets/components/Formfields/Tags/Builder.vue

Summary

Maintainability
Test Coverage
<template>
    <div v-if="action == 'list-options'">
        <div class="input-group mt-2">
            <label class="label">{{ __('voyager::formfields.tags.display_amount') }}</label>
            <input type="number" :min="0" :max="10000" class="input w-full" v-model.number="options.display_amount">
        </div>
        <div class="input-group mt-2">
            <label class="label">{{ __('voyager::generic.color') }}</label>
            <ColorPicker v-model="options.color" />
        </div>
    </div>
    <div v-else-if="action == 'view-options'">
        <div class="input-group mt-2">
            <label class="label">{{ __('voyager::generic.min') }}</label>
            <input type="number" :min="0" :max="1000" class="input w-full" v-model.number="options.min">
        </div>
        <div class="input-group mt-2">
            <label class="label">{{ __('voyager::generic.max') }}</label>
            <input type="number" :min="1" :max="10000" class="input w-full" v-model.number="options.max">
        </div>
        <div class="input-group mt-2">
            <label class="label">{{ __('voyager::formfields.tags.allow_reordering') }}</label>
            <input type="checkbox" class="input" v-model="options.reordering">
        </div>
        <div class="input-group mt-2">
            <label class="label">{{ __('voyager::formfields.tags.allow_duplicates') }}</label>
            <input type="checkbox" class="input" v-model="options.duplicates">
        </div>
        <div class="input-group mt-2">
            <label class="label">{{ __('voyager::formfields.tags.allow_empty') }}</label>
            <input type="checkbox" class="input" v-model="options.empty">
        </div>
        <div class="input-group mt-2">
            <label class="label">{{ __('voyager::generic.color') }}</label>
            <ColorPicker v-model="options.color" />
        </div>
    </div>
    <div v-else-if="action == 'view'">
        <TagInput
            v-model="dummyModel"
            :min="options.min"
            :max="options.max"
            :reordering="options.reordering"
            :duplicates="options.duplicates"
            :empty="options.empty"
            :badgeColor="options.color"
            :class="options.classes"
        />
    </div>
</template>

<script>
import formfieldBuilder from '@mixins/formfield-builder';

export default {
    mixins: [formfieldBuilder],
    computed: {
        defaultListOptions() {
            return {
                display_amount: 0,
                color: 'accent',
            };
        },
        defaultViewOptions() {
            return {
                min: 0,
                max: 0,
                reordering: true,
                duplicates: false,
                empty: false,
                color: 'accent',
            };
        },
    },
    data() {
        return {
            dummyModel: [],
        };
    }
}
</script>