1.0.7 • Published 3 years ago

dinamic-grid v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

dinamic-grid

Este pacote mudou de repositório, pesquise por @dynamic/react-grid

Instalação

    npm install --save dinamic-grid
    yarn add dinamic-grid

DEMO

Grid dinâmica para react, responsíva e inspirada na grade do material-ui, no entanto trazendo maiores simplicidades, funcionalidades e customizações.

Essa lib foi inspirada na Grid do material-ui, contendo atribuições semelhantes.

Imagem de exemplo

Props

NomevalorDescrição
rowtrue/falseSe atribuído, indica ao componente que ele deve ser uma linha
xs, xs-m, sm, sm-m, md, md-m, lg, lg-m, xlrecomendável: 0...12 (mas pode ser do 0 ao infinito, porém isso é loucura)São os breakpoints padrão, mas você pode customizar e criar os seus (mais tarde veremos isso).
spacing0...infinityDefinido na tag Grid com props row. Indica o Espaçamento das colunas, vai de 0 ao infinito. Padrão 0
directionrow row-reverse column column-reverse inherit initial unsetvalores do flex-direction
justifycenter flex-start flex-end space-between space-around inherit initial unsetvalores do justify-content
aligncenter flex-start flex-end space-between space-around stretch inherit initial unsetvalores do align-content
alignItemsnormal stretch center start end flex-start flex-end self-start self-end baseline first baseline last baseline safe center unsafe center inherit initial unsetvalores do align-items
wrapnowrap wrap wrap-reverse inherit initial unsetvalores do flex-wrap
selfauto center flex-start flex-end baseline stretch inherit initial unsetvalores do align-self. Padrão wrap
order0...infinityvalores do order

Ramificações dos breakpoints

eu também posso colocar ramificações de breakpoints para as props mencionadas acima, exemplo:

    import Grid from 'dinamic-grid'

    <Grid row spacing={2} ou spacing={{xs:1, sm:4, md:3, /*...*/}}>
        <Grid order={1} ou order={{xs:1, sm:2, md:4, /*...*/}}>
        </Grid>
    </Grid>

    <Grid row direction='row' ou direction={{xs:'row', sm:'row-reverse', md:'column-reverse', /*...*/}}>
        <Grid xs={12} md={6}>
        </Grid>
    </Grid>
    

Isso vale para todas as props acima, exceto a props row

breakpoints

Por padrão há os seguintes pontos de quebra:

    {
        xs: 0,
        'xs-m': 300,
        sm: 600,
        'sm-m': 780,
        md: 960,
        'md-m': 1120,
        lg: 1280,
        'lg-m': 1600,
        xl: 1920
    }

No entanto vc pode criar seus próprios pontos:

    import {WithBreakpoints} from 'dinamic-grid'

    let Grid = WithBreakpoints({
        xs:0,
        sm:400,
        jsIsLife:600,
        reactIsGood:1000
    })

    <Grid row>
        ...
    </Grid>

você também pode usar window.breakpoints = {/.../} que o dinamic-grid irá detectar automaticamente, mas não é recomendo; caso vc esteja usando react pode ser, mas se for next não recomendo devido a problemas relacionados à renderizações do lado do servidor, pra reverter isso no lugar de window vc pode usar globalThis, mas aí surge também questões relacionadas à versão javascript ou node.

Grade Aninhada

As propriedades row e (os breakpoints) são independentes. Elas podem ser combinadas.

    <Grid row>
        <Grid row xs={12} md={6}>
            <Grid lg={5}>
                ...
            </Grid>
        </Grid>
    </Grid>

Limitações

Margem negativa

Há uma limitação com a margem negativa que usamos para implementar o espaçamento entre itens. Uma barra de rolagem horizontal irá aparecer se uma margem negativa vai além do <body>. Existem 2 soluções disponíveis:

  1. Não usar o recurso de espaçamento e implementá-lo no espaço do usuário spacing={0} (Padrão).
  2. Aplicando padding ao pai com pelo menos 4 vezes o valor de espaçamento aplicado ao filho:
    <body>
        <div style={{ padding: 20 }}>
            <Grid row spacing={5}>
                //...
            </Grid>
        </div>
    </body>

Leiaute Automático

Ambas as 4 colunas abaixo vão ter larguras automáticas, há um flex-grow:1 definido por padrão, basta definir como true o valor do primeiro breakpoint:

    <Grid row spacing={2}>
        <Grid xs>xs</Grid>
        <Grid xs>xs</Grid>
        <Grid xs>xs</Grid>
        <Grid xs>xs</Grid>
    </Grid>

Utilidades públicas

úteis para serem usadas com styled-components

    import {media, mapMedia, breakpoints} from 'dinamic-grid'


    let Container = styled.div(props => media(breakpoints)({
        padding: 30,
        color: 'red',
        display: props.style.display,
        // --------------------------------------
        width: {xs:20, md:'50%', sm:'100vw'}
        //ou
        width: mapMedia({xs:20, sm:30, md:40}, [key, val] => `calc(100px - ${val}px)`) // retorno {xs:'calc(100px - 20px)', sm:'calc(100px - 30px)', md:'calc(100px - 40px)'}
        //ou 
        width: mapMedia({xs:20, sm:30, md:40}, [key, val] => [`${key}-m`, `calc(100px - ${val}px)`]) // retorno {xs-m:'calc(100px - 20px)', sm-m:'calc(100px - 30px)', ...}
    }))

    //...

    <Container 
        style={{
            display: {
                xs:'flex', 
                sm:'block', 
                md:'none', 
                /*...*/
            }
        }}
    >
        ...
    </Container>
1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.2

3 years ago

1.0.3

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago