1.0.0 • Published 4 years ago

ibg-layout-base v1.0.0

Weekly downloads
-
License
-
Repository
-
Last release
4 years ago

Layout Padrão

Componente Vue.js para renderização do layout padrão IBG



Uso básico

<layout-base v-model="modelo">
    <!-- Conteúdo da página -->
</layout-base>
import { LayoutBaseModel } from '@ui/layout-base'

export default {
  name: 'app',
  data () {
    return {
      modelo: new LayoutBaseModel()
    }
  },
  beforeMount () {
    // Atribuição das informações do layout
    this.modelo.navbar.title = "Título do sistema"
    this.modelo.menu.config.menuStartsOpened = true
  }
}

Componentes

layout-base

Componente principal para o layout.

<layout-base v-model="modelo">
    ...
</layout-base>
  • v-model

    Objecto principal que completa as informações do layout

    Tipo: LayoutBaseModel

  • Slots

    • menu-lateral-itens

      Slot para para incluir itens de menu na forma declarativa (html) Os componentes aceitos são:

      <layout-base v-model="modelo">
          <template slot="menu-lateral-itens">
          ...
          </template>
      </layout-base>
    • menu-superior-itens

      Slot para para incluir conteúdo na barra superior. O conteúdo é inserido ao lado esquerdo dos itens do menu superior.

      <layout-base v-model="modelo">
          <template slot="menu-superior-itens">
          ...
          </template>
      </layout-base>
    • breadcrumb-custom-area

      Slot para para incluir conteúdo dentro do container do breadcrumb.

      <layout-base v-model="modelo">
          <template slot="breadcrumb-custom-area">
          ...
          </template>
      </layout-base>
    • titulo-customizado

      Slot para para incluir um título de sistema customizado.

      <layout-base v-model="modelo">
          <template slot="titulo-customizado">
          ...
          </template>
      </layout-base>

s-link-item

Componente para criação de item de menu do tipo link (\\)

  • Slots

    • icon: Slot para a atribuição do ícone do item de menu
  • Props

    PropriedadeDescriçãoTipo
    show-new-labelExibir flag indicando que é um novo item no menuBoolean

s-router-link-item

Componente para criação de item de menu do tipo router (router-link)

  • Slots

    • icon: Slot para a atribuição do ícone do item de menu
  • Props

    PropriedadeDescriçãoTipo
    route-configConfiguração da rotaObject
    show-new-labelExibir flag indicando que é um novo item no menuBoolean
  • O atributo name deve ser o mesmo definido na configuração da rota

s-group-link-item

Componente para criação de um agrupador de itens de menu.

  • Slots

    • icon: Slot para a atribuição do ícone do item de menu
  • Props

    PropriedadeDescriçãoTipo
    show-new-labelExibir flag indicando que é um novo item no menuBoolean

Forma declarativa do menu lateral

<layout-base v-model="modelo">
    <template slot="menu-lateral-itens">
        <!-- s-link-item -->
        <s-link-item label="Pagina" path="http://localhost:8080/pagina/">
          <font-awesome-icon icon="user" slot="icon"/>
        </s-link-item>

        <!-- s-router-link-item -->
        <s-router-link-item label="Página Exemplo" :route-config="{ name: 'NomeDaRota', params: {} }">
          <font-awesome-icon icon="user" slot="icon"/>
        </s-router-link-item>

        <!-- s-group-link-item -->
        <s-group-link-item label="Agrupador de link itens" :show-new-label="true">
          <font-awesome-icon icon="bell" slot="icon"/>
          <s-link-item label="Pagina" path="http://localhost:8080/pagina/">
            <font-awesome-icon icon="user" slot="icon"/>
          </s-link-item>
        </s-group-link-item>
    </template>
    ...
</layout-base>
  • Todos os itens de menu aceitam como filhos outros itens de menu, incluindo itens de mesmo tipo

Models

LayoutBaseModel

Tipo: Object

PropriedadeDescriçãoTipo
menuObjeto referente ao menu lateralMenuModel
navbarObjeto referente a barra superiorNavbarModel
userObjeto referente ao usuárioUserModel
breadcrumbObjeto referente ao breadcrumbBreadcrumbModel
configObjeto de configuração geral do layoutConfigModel

MenuModel

Tipo: Object

PropriedadeDescriçãoTipo
itensLista com os itens de menuArray
configConfigurações do menu lateralMenuConfigModel
//..
export default {
  //...
  beforeMount () {
    this.modelo.menu.itens = [
      {
        label: 'Router link', // Label do item
        type: MenuItemModelTypes.Route, // Item do tipo Router link
        routeConfig: {name: 'routeName'}, // Configurações da rota
        icon = "user", // Icone do fontawesome svg
        showNewLabel: true, // Flag para exibição do idicador 'NOVO ITEM'
        children: [
          { label: 'Router Link', type: MenuItemModelTypes.Link, path: 'http://url', icon: "user" },
        ]
      },
      {
        label: 'Agrupador de links',
        type: MenuItemModelTypes.Group, // Item do tipo agrupador
        icon = "user",
        children: [
          { // Item do tipo link
            label: 'Anchor Link', type: MenuItemModelTypes.Link, path: 'http://url', icon: "user"
          },
        ]
      }
    ]
    this.modelo.menu.config.menuStartsOpened = true
  }
}

MenuConfigModel

Tipo: Object

PropriedadeDescriçãoTipoDefault
menuStartsOpenedFlag indicando o estado inicial do menu lateral (Aberto/Fechado)Booleanfalse
menuActiveItemPath do item de menu ativoString
saveStateAtiva/Desativa o armazenamento do estado do menuBooleantrue

NavbarModel

Tipo: Object

PropriedadeDescriçãoTipo
titleTítulo do sistemaString
titleUrlLink de direcionamento do click no texto do títuloString
subTitleSubtítulo do sistema (opcional)String
configConfigurações da barra superiorNavbarConfigModel
//..
export default {
  //...
  beforeMount () {
    this.modelo.navbar.title = 'Título do sistema'
    this.modelo.navbar.config.showIBG = true
    this.modelo.navbar.subTitle = 'Subtítulo do sistema'
  }
}

NavbarConfigModel

Tipo: Object

PropriedadeDescriçãoTipoDefault
showColaboradorFlag de exibição para o portal do colaboradorBooleantrue
showIBGFlag de exibição para o portal do IBGBooleanfalse
showAdministrativoFlag de exibição para o portal administrativoBooleanfalse
showMenuFlag para exibir/ocultar o menu lateralBooleantrue
showAppGridFlag para exibir/ocultar o grid de atalhosBooleantrue

UserModel

Tipo: Object

PropriedadeDescriçãoTipo
nomeNome do colaboradorString
matriculaMatrícula do colaboradorInteger
cargoCargo do colaboradorString
lotacaoSetor do colaboradorString
unidadeUnidade do colaboradorString
hrefFotoCaminho físico para a foto do colaboradorString

BreadcrumbModel

Tipo: Object

PropriedadeDescriçãoTipoDefault
itensItens que compõem o breadcrumbArray[]
//...
this.modelo.breadcrumb.itens = [
    { label: 'Nome Sistema', type: BreadcrumbModelTypes.Route , route: {name: 'pageA'} },
    { label: 'Funcionalidade', type: BreadcrumbModelTypes.Link  , path: '/' },
    { label: 'Operação', href: '/' },
]
//...
  • Breadcrumbs não podem ser usados na forma declarativa (html).

ConfigModel

Tipo: Object

PropriedadeDescriçãoTipoDefault
logoutUrlUrl para realizar o logoutStringundefined
loginUrlEndpoint de autenticação do projetoStringhttp://bsbwebdev/services/colaborador/api/identificacao
originDomínio da aplicaçãoStringhttp://localhost:8080

Caso a propriedade loginUrl seja preenchida, o sistema irá buscar os dados do usuário no caminho definido, caso contrário, a propriedade user deve ser definida manualmente.

Types

MenuItemModelTypes

Define os tipos de itens de menu. Usado na definição programática do menu lateral

const MenuItemModelTypes = {
  Group: 0, Route: 1, Link: 2
}

BreadcrumbModelTypes

Define os tipos de breadcrumb. Usado na definição programática do breadcrumb

const BreadcrumbModelTypes = {
  Route: 0, Link: 1
}