87 lines
2.0 KiB
Markdown
87 lines
2.0 KiB
Markdown
# Sku Selector
|
|
|
|
## Dependências
|
|
|
|
## SkuSelectorContext
|
|
|
|
### State
|
|
|
|
Exemplo do estado do contexto do sku selector
|
|
|
|
```ts
|
|
{
|
|
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
|
|
|
|
```ts
|
|
// 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
|
|
}
|
|
```
|