Início
NexoPOS

Personalização do Rodapé

A partir do NexoPOS 5.3, você pode renderizar componentes Vue personalizados no rodapé de qualquer objeto de configurações. A ideia é permitir interagir com o formulário atual que está sendo renderizado. Normalmente, você usará isso para (entre outras coisas):

  • restaurar configurações padrão
  • salvar as configurações de forma diferente
  • etc.

Requisitos

Antes de carregar um componente personalizado no rodapé de configurações, você deve injetar esse componente primeiro. Ao definir seu componente, o componente de configurações fornecerá uma propriedade “parent” para esse componente, para que você possa acessar o formulário de configurações a partir do seu componente e, eventualmente, recarregar as configurações, se necessário (o console.log será seu melhor amigo).

<script type="module">
  nsExtraComponents.myExtraComponent = defineComponent({
      props: [ 'parent' ],
      template: `<ns-button>Hello World</ns-button>`,
      mounted() {
          // this.parent.loadSettingsForm() : Use this to refresh the form.
      }
  });
</script>

Definir classe de configuração do componente

Se o seu módulo definir classes de configurações, usaremos isso para adicionar nossos botões personalizados. Uma classe de configurações típica terá esta aparência:

<?php
namespace Modules\MyModule\Settings;

use App\Services\SettingsPage;
use App\Classes\SettingForm;

class ModuleSettings extends SettingsPage
{
    const IDENTIFIER = 'my-module-settings';
    const AUTOLAOD = true;
  
    public function __construct()
    {
          $this->form   =   SettingForm::form(
              title: __m( 'Your Setting Title', 'MyModule' ),
              description: __m( 'Your module settings description', 'MyModule' ),
              tabs: SettingForm::tabs(
                  SettingForm::tab(
                      label: __m( 'Base Settings', 'MyModule' ),
                      identifier: 'base-settings',
                      fields: SettingForm::fields(
                          FormInput::text(
                              label: __( 'Email' ),
                              name: 'email'
                          )
                      )
                  )
              )
          );
    }
}

Agora, vamos adicionar à seção “tab” uma nova subseção “footer”, que oferece suporte a “extraComponents”, o qual definirá um array de strings (que são os nomes dos componentes Vue que você definiu no nsExtraComponents acima). Nas configurações acima, usamos “myExtraComponent” como o nome do nosso componente Vue; é isso que vamos usar.

<?php
namespace Modules\MyModule\Settings;

use App\Services\SettingsPage;
use App\Classes\SettingForm;

class ModuleSettings extends SettingsPage
{
    const IDENTIFIER = 'my-module-settings';
    const AUTOLAOD = true;
  
    public function __construct()
    {
          $this->form   =   SettingForm::form(
              title: __m( 'Your Setting Title', 'MyModule' ),
              description: __m( 'Your module settings description', 'MyModule' ),
              tabs: SettingForm::tabs(
                  SettingForm::tab(
                      label: __m( 'Base Settings', 'MyModule' ),
                      identifier: 'base-settings',
                      footer: SettingForm::tabFooter(
                          extraComponents: [ 'myExtraComponent' ] // <= we define the component here
                      ),
                      fields: SettingForm::fields(
                          FormInput::text(
                              label: __( 'Email' ),
                              name: 'email'
                          )
                      )
                  )
              )
          );
    }
}

Devemos ter uma configuração que pareça assim.

settings-nexopos-footer