Entendendo o Components json
O components.json é um arquivo que possui uma estrutura do tipo JSON e usado pelo editor de views para exibir informações e configurações de suas propriedades, eventos e responsividades de cada componente (Figura 1). É através dele que se consegue adicionar mais recursos a um componente, permitindo sua customização sem a necessidade de configurá-lo via código.
Dentre alguns exemplos da necessidade do components.json no Cronapp, estão:
Alteração do nome e ícone exibido no componente usando o editor de views;
Personalização de elementos e atributos no template de forma visual;
Internacionalização do controle;
Inclusão de eventos a elementos do controle e outros.
Estrutura do arquivo
A estrutura do components.json é baseada em JSON (JavaScript Object Notation - Notação de Objetos JavaScript) que possui uma formatação simples e de fácil leitura e escrita, tanto para computadores quanto para humanos. Foi criado para facilitar a comunicação entre sistemas, independente da linguagem usada.
Os componentes padrões do Cronapp possuem seus próprios arquivos que terminam com a extensão components.json e seus diretórios mudam conforme o tipo de componente - ou seja, se o tipo é web ou mobile (Figura 2.1).
Os arquivos components.json só serão mostrados quando o modo avançado estiver habilitado.
Componente mobile:
src/main/mobileapp/www/node_modules/cronapp-framework-mobile-js/components/Componente web:
src/main/webapp/node_modules/cronapp-framework-js/components/
O Cronapp permite criar componentes visuais e para cada novo componente, são criados os arquivos *.template.html e *.components.json. Ambos arquivos devem ficar no mesmo diretório (destaque na Figura 2.2).
Propriedades do arquivo
As propriedades nesses arquivos mudam conforme o componente.
Principais propriedades
São aquelas encontradas na maioria dos componentes.
Propriedade | Objetivo | Possíveis valores |
|---|---|---|
| Atributo id do componente HTML. |
|
| Nome do componente que aparecerá na aba controle do editor de views quando a IDE estiver no idioma português (Brasil). |
|
| Nome do componente que aparecerá na aba controle do editor de views quando a IDE estiver no idioma inglês (EUA). |
|
| Define o ícone do controle que aparecerá no editor de views. OBS.: Diferente da aplicação que permite o uso dos ícones Glyphicons, font awesome icon e Material Design Icons, os botões dos componentes no editor de views permite apenas o Material Design Icons. |
|
| Endereço do template do componente na IDE. |
|
properties | Lista as diretivas Angular, elementos HTML ou propriedades do Cronapp para permitir sua edição nas propriedades do componente no editor de views. | Consulte o tópico properties. |
| Lista os elementos HTML que compõem o template, possibilitando selecioná-los e personaliza-los no editor de views. Essa seleção pode ser feita utilizando as subabas dentro das abas Propriedades no editor de views ou selecionando o componente na tela, abrindo o ícone do cadeado e selecionando novamente os elementos internos do componente. | Para cada elemento informado na lista:
|
| Define o tooltip que será exibido quando o cursor do mouse estiver posicionado sobre o botão do componente visual na paleta de controles do Editor de views. É possível definir um texto para cada uma das línguas disponíveis (português ou inglês) ou usar um valor genérico que será exibido independente da língua. | É possível utilizar uma opção ou todas.
|
| Define quais categorias da paleta de controle serão exibidos o botão do componente visual. Não é obrigado que um componente esteja associado a uma categoria, mas caso isso ocorra, ele será listado apenas na categoria "Todos". Existem algumas categorias padronizadas do Cronapp (lista abaixo), porém é possível criar uma nova categoria apenas informando o novo nome na lista. Valores padrão:
| É possível utilizar uma opção ou todas.
|
Outras propriedades
A utilização dessas propriedades varia de acordo com o componente.
Propriedade | Objetivo | Possíveis valores |
|---|---|---|
Lista de propriedades customizadas nos atributos CSS dos componentes. | Consulte o tópico attributesForPreview. | |
| Adiciona uma tag <div> em torno do template do componente, facilitando a modificação da diagramação. |
|
Lista as diretivas Angular, elementos HTML ou exclusivas do Cronapp para permitir sua edição nas propriedades dos subcomponentes (filhos) do componente no editor de views. | Consulte o tópico childrenProperties. | |
| Possui uma lista (editor) com os endereços de arquivos CSS específica para esse controle. |
|
| Sinaliza qual o caminho do html que será exibido no designtime. |
|
| Sinaliza qual diretiva ele irá usar. |
|
| Força o agrupamento dos componentes HTML no template, permitindo a seleção de todos os subcomponentes de uma só vez. |
|
Define características para algumas propriedades e regras para elementos do componente. | Consulte o tópico handleRules. | |
| Informa qual componente HTML receberá o texto do campo Sugestão no editor de views. | Possui em seu interior o valor "selector" onde será informado o componente HTML.
|
| Abre a janela de configuração especificada quando o componente é arrastado para a área de edição da view. | Nome do atributo.
|
| Abre a janela de configuração especificada quando o componente recebe um duplo click na área de edição da view. | Nome do atributo.
|
| Oculta ou exibe o controle no editor de views. |
|
| Define o tamanho do campo em número de linhas. |
|
| Template HTML do componente. Por este ser um arquivo JSON, será necessário utilizar caracteres de escape para utilizar alguns caracteres. Exemplo: “\n”e “\”” |
|
| Nome do componente que aparecerá no editor de views quando não houver internacionalização (propriedades: text_en_US e text_pt_BR). |
|
| Adiciona uma tag <div> em torno do template do componente. |
|
attributesForPreview
Lista de propriedades customizadas para os atributos CSS dos componentes. Veja a tabela de opções dessa propriedade após o código de exemplo.
crn-text.components.json
"attributesForPreview": [
{
"name": "xattr-position",
"type": "btngroup",
"target": "class",
"values": [
{
"key": "text-left",
"value": "Standard",
"icon": "mdi mdi-ray-start"
}
]
}
]Propriedade | Objetivo | Possíveis valores |
|---|---|---|
| Nome da propriedade que terá suas características alteradas. |
|
| Define a forma que será exibida as opções da propriedade. Normalmente são utilizados o grupo de botões ou seletor de itens. |
|
| Informa o atributo ou elemento que será customizado. Normalmente utilizado para adicionar class ou style. |
|
Lista das opções da propriedade. | Consulte o tópico values. |
values
Lista das opções da propriedade values do attributesForPreview.
Propriedade | Objetivo | Possíveis valores (exemplos) |
|---|---|---|
| Classe CSS que será adicionado no template após o usuário escolher o value. |
|
| Nome da opção que será exibida para o usuário. |
|
| Define o ícone que será exibido ao lado do nome da opção. |
|
| Exibe um quadrado com a cor especificada ao lado do nome da opção. Observação: Utilizar apenas quando |
|
childrenProperties
Responsável por criar propriedades distintas entre subcomponentes dentro de um componente. Veja a tabela de opções dessa propriedade após o código de exemplo.
Trecho de código do arquivo crn-dynamic-menu.components.json
"childrenProperties": [
{
"name": "options",
"selector": "cron-dynamic-menu",
"displayName_pt_BR": "Configuração",
"displayName_en_US": "Configuration",
"type": "text",
"order": 1,
"mandatory": true
}
]Propriedade | Objetivo | Possíveis valores |
|---|---|---|
| Nome do campo que aparecerá na aba propriedades do editor de views quando a IDE estiver no idioma inglês (EUA). |
|
| Nome do campo que aparecerá na aba propriedades do editor de views quando a IDE estiver no idioma português (BR). |
|
| Exibe o ícone Editar expressão ao lado do nome do campo e ao clicar é aberta uma caixa de texto para a edição da expressão ou inserção de Fonte de dados. |
|
| Define uma propriedade como preenchimento obrigatório, adicionando contorno vermelho à propriedade quando vazia. |
|
| Informa o atributo do elemento HTML que será manipulado em um campo do editor de views. |
|
| Executa comando em JavaScript para atualizar o componente na tela sempre que uma alteração for feita. | Com o comando javascript:function() { /* função JavaScript */ }
|
| Executa comando em JavaScript para salvar sempre que uma opção for selecionada ou ação tomada no componente. | Com o comando javascript:function() { /* função JavaScript */ }
|
| Informa qual atributo do elemento HTML será selecionado para manipulação. |
|
| Define a forma de como o subcomponente irá se comportar como permitir apenas texto, seletor ou importação de fonte de dados. |
|