m3-academy-template-vtexio/custom/react/components/skuSelector/doc.md
Caroline Moran f2a03c53ae first commit
2022-08-11 09:06:07 -04:00

2.0 KiB

Sku Selector

Dependências

SkuSelectorContext

State

Exemplo do estado do contexto do sku selector

    {
        skus: [
            {
                id: "1",
                name: "blusa preta g",
                price: 12345,
                maxAvailable: 7,
                variants: [
                    {
                        name: "cor",
                        value: "preto"
                    }
                    {
                        name: "tamanho",
                        value: "G"
                    }
                ]
            }
            {
                id: "2",
                name: "blusa preta m",
                price: 12345,
                maxAvailable: 7,
                variants: [
                    {
                        name: "cor",
                        value: "preto"
                    }
                    {
                        name: "tamanho",
                        value: "G"
                    }
                ]
            }
            ...
        ],
        variants: ["cor", "tamanho"], // pode ser qualquer especificação cadastrada
        variantsValues: [
            {
               name: "cor",
               values: ["preto", "vermelho", "azul", "verde"]
            }
            {
               name: "tamanho",
               values: ["GG", "G", "M", "P"]
            }
        ],
        currentSelected: {
            cor: "preto",
            tamanho: "G",
        },
        selectedSku: "1", // id do sku
    }

Actions

Açoes do seletor de sku

    // nome da especificação e seu valor
    type Variant = {
        name: string
        value: string
    }

    type Actions = {
        /*
        Muda o estado de currentSelected com os dados da variante selecionada
        e caso de match com algum sku disponível deverá altera o selectedSku para o sku encontrado
        caso o sku selecionado não possuir o estoque isso é uma regra de view a ser tratada
        */
        selectVariant(variant: Variant): void
    }