Skip to content

Latest commit

 

History

History
executable file
·
313 lines (251 loc) · 9.96 KB

INPUTS.md

File metadata and controls

executable file
·
313 lines (251 loc) · 9.96 KB

Vstack Inputs

Aqui apenas descreveremos as configurações mais aprofundadas de inputs, porém se deseja entender sobre a utilização Leia mais sobre Resources

Vale lembrar que todos os campos abaixo exceto o card, possuem algumas configurações em comum, são elas :

  • default (opcional), esse campo dará valor inicial ao input;
  • description (opcional), descrição que aparecerá abaixo do nome do campo (label);
  • field (obrigatório), é o índice que o valor do campo será adicionado ao form_data;
  • custom_message (opcional), define as mensagens customizadas para regras de validação do input;


Tipos de inputs

Card

Card de agrupamento de fields

use marcusvbda\vstack\Fields\Card;

...
new Card('Informações',$fields),
...

input



Text

Input comum de texto/número, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\Text;

...
new Text([
    "label" => "Nome", //obrigatório
    "type" => "text", //opcional, default 'text'
    "field" => "name", //obrigatório
    "description" => "Nome do veículo", //opcional
    "prepend" => "depois", //opcional
    "append" => "antes", //opcional
    "mask" => ["##:##:##"], //opcional
    "visible" => true, //opcional, default true
    "show_value_length" => true, //opcional, default false
    "rules" => ["required"], //opcional, default []
    "custom_message" => ["required" => "Campo obrigatório."]  //opcional, default []
]),
...

Resource Inicial

  • type, segue a nomenclatura de type input do HTML5;
  • append, oque aparecerá no início do input;
  • prepend, oque aparecerá no fim do input;
  • mask, array de mascaras do VueMask;
  • visible, define se o campo deve ser oculto ou não;
  • show_value_length, define se o contado de caracteres até o limite máximo deve aparecer ou não abaixo do input;


Textarea

Input textarea comum, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\TextArea;

...
new TextArea([
    "label" => "Descrição", //obrigatório
    "field" => "description", //obrigatório
    "rows" => 6, //opcional, default 3
    "description" => "Descrição do veículo", //opcional
    "visible" => true, //opcional, default true
    "show_value_length" => true, //opcional, default false
    "rules" => ["required"], //opcional, default []
    "custom_message" => ["required" => "Campo obrigatório."]  //opcional, default []
]),
...

input

  • rows, define quantas linhas o input terá por padrão;
  • visible, define se o campo deve ser oculto ou não;
  • show_value_length, define se o contado de caracteres até o limite máximo deve aparecer ou não abaixo do input;


Checkbox

Input checkbox, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\Check;

...
new Check([
    "label" => "Ativo", //obrigatório
    "field" => "enabled", //obrigatório
    "description" => "Descrição do campo", //obrigatório
]),
...

input

  • field, é o índice que o valor do campo será adicionado ao form_data;


Radio

Input radio, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\Radio;

...
new Radio([
    "label" => "Tipo", //obrigatório
    "field" => "type", //obrigatório
    "description" => "Descrição do campo", //obrigatório
    // "options" => ["Carro", "Moto", "Caminhão"], //obrigatório
    "options" => [
        ["value" => "car", "label" => "Carro"],
        ["value" => "bike", "label" => "Moto"],
        ["value" => "truck", "label" => "Caminhão"],
    ], //obrigatório
    "rules" => ["required"], //opcional, default []
    "custom_message" => ["required" => "Campo obrigatório."]  //opcional, default []
]),
...

input

  • options, as opções que serão listadas ( pode ser listada das 2 formas apresentadas no exemplo );


CustomComponent

HTML customizado, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\CustomComponent;

...
new CustomComponent("<h1>Teste</h1>"),
...

input



Upload

Input upload, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\Upload;

...
new Upload([
    "label" => "Avatar", //obrigatório
    "field" => "photo", //obrigatório
    "description" => "Descrição do campo", //obrigatório
    "preview" => true, //opcional, default true
    "accept" => "image/*", //opcional, default "image/*"
    // "multiple" => false, //opcional, default false
    // "upload_route" => "upload", //opcional, default Config("vstack.default_upload_route")
    "file_size_limit" => "1024", //opcional, default "2048"
    //"style" => "gallery", //opcional, default "gallery" ou "file"
    "rules" => ["required"], //opcional, default []
    "custom_message" => ["required" => "Campo obrigatório."]  //opcional, default [],
    //"auto_set_name" => true // opcional, default true
])
...

input

  • preview, se ao clicado no link do input deve aparecer um preview de imagem;
  • accept, arquivos aceitos para o input html 5;
  • multiple, se o input aceitar multiplos arquivos/imagens;
  • upload_route, rota que será feito upload, por padrão o sistema utilizará a rota vinda de Config("vstack.default_upload_route");
  • file_size_limit, tamanho máximo aceito;
  • style, define se o input aparecerá no modo galeria ou lista de arquivo (exemplo de cima é galeria, em baixo lista de arquivos);
  • auto_set_name, define se antes de efetuar o upload vai ser perguntando o nome que deseja dar ao arquivo ou se irá definir uma hash unica para o nome do arquivo

input



BelongsTo

Input Select, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\BelongsTo;

...
new BelongsTo([
    "label" => "Categoria", //obrigatório
    "description" => "Como gostaria de categorizar",  //obrigatório
    "field" => "category_id",  //obrigatório
    "multiple" => false, // opcional, default false
    "model" => Category::class, 
    "model_fields" => ["id" => "id", "name" => "title"], // opcional, default  ["id" => "id", "name" => "name"]
    //"options" => [
    //    ["id" => 1, "value" => "Categoria 1"],
    //    ["id" => 2, "value" => "Categoria 2"],
    //],
    "rules" => ["required"], //opcional, default []
    "custom_message" => ["required" => "Campo obrigatório."]  //opcional, default []
]),
...

input input

  • options, as opções que serão listadas ( no caso de usar options, o carregamento é síncrono, sendo assim, caso as opções venham da base de dados é preciso fazer a busca e converter para array no padrão do exemplo );
  • model, desta forma o carregamento das opções acontece de forma assíncrona, ou seja, via ajax pós carregamento da página ( ideal para opções vindas da base de dados );
  • model_fields é um gabarito do model, o componente precisa de um id e um name, caso esses atributos na tabela sejam diferentes deste padrão deve-se definir no gabarito qual será o id e qual será o name da opção;


Tags

Input Tags, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\Tags;

...
new Tags([
    "label" => "Categorias", //obrigatório
    "description" => "Como gostaria de categorizar",  //opcional
    "field" => "category_id",  //obrigatório
    "rules" => ["required"], //opcional, default []
    "custom_message" => ["required" => "Campo obrigatório."]  //opcional, default []
])
...

input



HtmlEditor

Input HtmlEditor, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\HtmlEditor;

...
new HtmlEditor([
    "label" => "Conteúdo da Página",  //obrigatório
    "field" => "body", //obrigatório
    //"mode" => "webpage", //opcional, default webpage, pode ser newsletter
    "description" => "Oque será exibido ao acessar a página",
    //"blocks" => [
    //    "hello_world_test" => [
    //        "label"  => "Hello World",
    //        "attributes" =>  [
    //            "class" => "class-test"
    //        ],
    //        "content" =>  "<h1>Hello World TESTE</h1>"
    //    ]
    //], //opcional, default [], adiciona custom blocks no editor
    "rules" => ["required"], //opcional, default []
    "custom_message" => ["required" => "Campo obrigatório."]  //opcional, default []
]),
...

input

  • blocks, array de objetos com os atributos, label, attributes e content (html), que adicionará ao editor um bloco com as características definidas;


ResourceTree

Input ResourceTree, abaixo um exemplo de utilização :

use marcusvbda\vstack\Fields\ResourceTree;

...
new ResourceTree([
    'parent_resource' => 'cursos', //obrigatório
    'resource' => 'questoes', // obrigatório
    'relation' => 'questions',// obrigatório
    'foreign_key' => 'courseId',// obrigatório
    'label_index' => 'title',// opcional, default name
    //'template' => 'seu conteúdo aqui' // opcional, default irá mostrar o valor do label_index
]),
...

input

  • parent_resource, define para o componente qual é o nome do resource que está o iniciando;
  • resource, define para o componente qual é o nome do resource que ele carregará os dados ( os inputs de cadastro/edição devem ser configurados normalmente em fields do resource em questão );
  • foreign_key, fk do relacionamento do resource;
  • label_index, o input que será mostrado como label na listagem;
  • template, caso queira mostrar um elemento diferente e personalizado utilize este atributo