adhamlucas / store-framework

https://lab.github.com/vtex-trainings/store-framework
0 stars 0 forks source link

Advanced menu with Flex Layout #24

Open github-learning-lab[bot] opened 4 years ago

github-learning-lab[bot] commented 4 years ago

Menu avançado com Flex Layout

:sparkles: Branch: menuflex

Introdução

Como vimos no último passo, um Submenu aceita como children qualquer bloco do Store Framework.

A partir desse entendimento, podemos melhorar a configuração do Menu feita na atividade anterior, incrementando seu conteúdo com o uso do Flex Layout.

Atividade

De acordo com o que foi praticado na atividade anterior e o que foi aprendido sobre Flex Layout, vamos aplicar o Flex Layout no Submenu de Major Appliance.

  1. No arquivo menu.jsonc, remova o bloco de código em que são definidos vtex.menu@2.x:submenu#major e seus filhos. Essas declarações serão feitas num novo arquivo em breve:

    "vtex.menu@2.x:submenu#major": {
          "children":[ "vtex.menu@2.x:menu#major" ]
      },
    "vtex.menu@2.x:menu#major": {
        "children": [
            "menu-item#refrigerators",
            "menu-item#ovens",
            "menu-item#washers"
        ],
        "props": {
            "orientation": "vertical"
        }
    },
  2. Crie o arquivo menu-flex.jsonc, o código de bloco acima precisa estar neste arquivo; flex-layout.row#major estará na lista de children do bloco vtex.menu@2.x:submenu#major e será definido como:

    {
      ...
      "flex-layout.row#major": {
        "children": [
          "flex-layout.col#menu",
          "flex-layout.col#img"
        ]
      },
      ...
    }
  3. Agora temos que declarar os blocos definidos em flex-layout.row#major. Para começar, declare o bloco flex-layout.col#menu com vtex.menu@2.x:menu#major como children;

  4. Faça o mesmo para o bloco flex-layout.col#img, o declarando com image#menu e rich-text#header como children e as seguintes props:

    ...
    "props":{
      "paddingRight": 4,
      "horizontalAlign": "right"
    }
    ...
  5. Por último, vamos declarar o image#menu passado como children no último passo. Para isso, use o código abaixo:

    ...
    "image#menu": {
      "props": {
        "src": "https://appliancetheme.vteximg.com.br/arquivos/menu-washer.jpg",
        "link": {
          "url": "/small-appliances/coffee-makers"
        },
        "alt": "Coffee Makers Collection",
        "maxWidth": "200px"
      }
    }

:information_source: Lembre-se de acessar a documentação do Flex Layout e do Menu caso tenha alguma dúvida durante a atividade.

Resultado esperado:


:no_entry_sign: Perdido?

Há algum problema com esse passo? Que tal nos enviar um feedback? :pray:

Criar feedback


Se ainda tiver dúvida sobre como enviar sua resposta, você pode rever aqui.

github-learning-lab[bot] commented 4 years ago

Você terminou este passo com sucesso!

Vá para o próximo passo

vtex-course-hub[bot] commented 4 years ago

You did great! :grin:

Results

:white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark:

Tests

:white_check_mark: Getting the file :white_check_mark: Code compilation: menu.jsonc :white_check_mark: Code compilation: menu-flex.jsonc :white_check_mark: Major appliances submenu must contain a flex-layout row as children :white_check_mark: flex-layout row must be correctly stated :white_check_mark: flex-layout row must contain two cols as children :white_check_mark: flex-layout columns must be correctly stated :white_check_mark: flex-layout colum must contain major appliances menu as children :white_check_mark: flex-layout colum must contain image and rich-text as children :white_check_mark: flex-layout colum must contain correct props :white_check_mark: flex-layout colum must contain correct props :white_check_mark: image component must be correctly stated :white_check_mark: image component must contain correct props