| Current Path : /home/jeromecohp/www/plugins/system/yooessentials/modules/core/app/fields/ |
| 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>