Your IP : 216.73.216.229


Current Path : /home/jeromecohp/www/plugins/system/yooessentials/modules/core/app/fields/
Upload File :
Current File : /home/jeromecohp/www/plugins/system/yooessentials/modules/core/app/fields/ButtonPanelField.vue

<template>
    <button
        v-bind="attributes"
        :class="{ 'yo-button-medium': attributes.class === 'yo-form-medium' }"
        class="uk-button yo-button-panel uk-width-1-1"
        type="button"
        @click.prevent="open"
    >
        {{ $t(field.text || 'Open') }}
    </button>
</template>

<script>
import yootheme from 'yootheme';
import { isString } from 'uikit-util';

export default {
    extends: yootheme.fields.components.FieldText,

    inject: {
        Sidebar: { default: {} },
        Builder: { default: undefined },
        $node: { default: undefined },
    },

    methods: {
        open() {
            this.$trigger('openPanel', {
                ...this.getPanel(),
                props: {
                    node: this.$node,
                    builder: this.Builder,
                    values: this.values,
                },
            });
        },

        getPanel() {
            let panel = this.field.panel;

            if (!panel) {
                throw new Error('Invalid Panel');
            }

            if (isString(panel)) {
                // get panel from current panel, fallback to global panels
                panel = this.Sidebar?.panel?.panels?.[panel] || this.Sidebar?.panels?.[panel];
            }

            if (!panel) {
                throw new Error(`Panel Not Found: ${this.field.panel}`);
            }

            panel = {
                name: this.field.panel,
                title: this.field.panel,
                ...panel,
                component: this.Sidebar?.panel?.component,
            };

            return panel;
        },
    },
};
</script>