Por: @hugoc
Publicado em: 2018-09-17

Documentação dos componentes IMD (Itflex Material Design)

Para ajudar no desenvolvimento dos componentes imd e também no auxílio de como usa-los, com isso veio a necessidade de criar uma documentação iterativa

A pesquisa

Em cima da necessidade apontada foi feito o estudo de duas bibliotecas que auxiliam na documentação

Para aprofundar mais os testes foi levado em conta:

  • facilidade de implantação no projeto atual
  • facilidade de desevolvimento das docs
  • layout limpo e de fácil leitura
  • interatividade com os componentes

Vue Design System

Não foi realizado muitos testes em cima da biblioteca pois já na implantação no projeto atual foi identificado dificuldades:

  • projeto da doc deve ficar em projeto separado
  • difícil implantação

Vue Styleguidist

A biblioteca escolhida para o desenvolvimento pois atendeu a maior parte dos pontos listados a cima.

Instalação

Foi fácil,  apenas seguir o guia na doc da própria biblioteca, criando os arquivos de conf de acordo com o que deseja no seu projeto. O Styleguidist já tem integração com o vuetify e i18n basta apenas criar os confs conforme esta na doc.

Criando doc do componente

Após instalar e apontar para o diretório do projeto dos componentes, parte da coleta e criação da informações de cada componente a lib faz automaticamente, como titulo e props.

A documentação é feita dentro do código do própio componente com comentários e tags específicas todas estão documentadas no repositório da lib. Segue algumas usadas nos testes:

Descrição do componente:

/**
  * itflex material designe button.
  * @version 1.0.0
  */
export default {
}

Descrição das props:

props: {
  /**
    * Posicione o elemento absolutamente.
    */
  absolute: {
    type: Boolean,
    required: false,
    default: false,
  },
  /**
    * Vue Router router-link prop.
    */
  append: {
    type: Boolean,
    required: false,
    default: false,
  },
},

Descrição dos métodos e eventos:

methods: {
  clickEvent() {
    this.$emit('click')
    /**
    * É chamado quando o usuário clica no botão.
    *
    * @public
    */
    clickEvent() {
        /**
        * Emite evento de click.
        *
        * @event click
        */
        this.$emit('click')
  },
},

Para adicionar como componente deve ser usado e gerar a iteratividade na página da documentação, existem duas formas, uma dentro do arquivo do próprio componente ou criando um Readme.md dentro da pasta do componente. Na pesquisa foi feito com a segunda opção, para ficar mais separado e melhor entendimento.

Readme.md

Botão básico:

<template>
    <div>
        <imd-button color="primary" @click="clickPrimaryEvent">primary</imd-button>
        <imd-button color="secondary" @click="clickSecondaryEvent">secondary</imd-button>
        <imd-button color="error" @click="clickErrorEvent">error</imd-button>
        <imd-button color="warning" @click="clickWarningEvent">warning</imd-button>
    </div>
</template>

<script>
export default {
  methods: {
    clickPrimaryEvent() {
        alert('Primary')
    },
    clickSecondaryEvent() {
        alert('Secondary')
    },
    clickErrorEvent() {
        alert('Error')
    },
    clickWarningEvent() {
        alert('Warning')
    },
  }
}
</script>

Fazendo isso ele gera o componente e o código para iteração direto com o componente.