Skip to content

Simplegrid component #47

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<template>
<CSimpleGrid min-child-width="120px" spacing="40px">
<CBox background="green" height="80px"></CBox>
<CBox background="red" height="80px"></CBox>
<CBox background="blue.900" height="80px"></CBox>
<CBox background="darkorange" height="80px"></CBox>
<CBox background="yellow" height="80px"></CBox>
</CSimpleGrid>
</template>
9 changes: 9 additions & 0 deletions components/content/examples/simplegrid/SimpleGridExample.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<template>
<CSimpleGrid :columns="2" :spacing="10">
<CBox background="green" height="80px"></CBox>
<CBox background="red" height="80px"></CBox>
<CBox background="blue.900" height="80px"></CBox>
<CBox background="darkorange" height="80px"></CBox>
<CBox background="yellow" height="80px"></CBox>
</CSimpleGrid>
</template>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<template>
<CSimpleGrid :columns="[2, null, 3]" spacing="40px">
<CBox background="green" height="80px"></CBox>
<CBox background="red" height="80px"></CBox>
<CBox background="blue.900" height="80px"></CBox>
<CBox background="darkorange" height="80px"></CBox>
<CBox background="yellow" height="80px"></CBox>
</CSimpleGrid>
</template>
9 changes: 9 additions & 0 deletions components/content/examples/simplegrid/SimpleGridSpacing.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<template>
<CSimpleGrid :columns="2" spacing-x="40px" spacing-y="20px">
<CBox background="green" height="80px"></CBox>
<CBox background="red" height="80px"></CBox>
<CBox background="blue.900" height="80px"></CBox>
<CBox background="darkorange" height="80px"></CBox>
<CBox background="yellow" height="80px"></CBox>
</CSimpleGrid>
</template>
91 changes: 91 additions & 0 deletions content/4.components/simplegrid.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
title: SimpleGrid
description: SimpleGrid component
version: 2.0+
---

# SimpleGrid


SimpleGrid is a user-friendly tool for effortlessly creating responsive grid layouts, utilizing a div element with display: grid.

## Import

```js
import { CSimpleGrid } from '@chakra-ui/vue-next';
```

## Usage

Specifying the number of columns for the grid layout.

### Sample Tag :

::showcase
::simple-grid-example{width=full}
::
::

```html
<CSimpleGrid :columns="2" :spacing="10">
<CBox background="green" height="80px"></CBox>
<CBox background="red" height="80px"></CBox>
<CBox background="blue.900" height="80px"></CBox>
<CBox background="darkorange" height="80px"></CBox>
<CBox background="yellow" height="80px"></CBox>
</CSimpleGrid>
```

You can also make it responsive by passing array or object values into the `columns` prop.

::showcase
::simple-grid-responsive{width=full}
::
::

```html
<CSimpleGrid :columns="[2, null, 3]" spacing="40px">
<CBox background="green" height="80px"></CBox>
<CBox background="red" height="80px"></CBox>
<CBox background="blue.900" height="80px"></CBox>
<CBox background="darkorange" height="80px"></CBox>
<CBox background="yellow" height="80px"></CBox>
</CSimpleGrid>
```

### Auto-responsive grid#

To make the grid responsive adjust automatically without passing `columns`, simply pass the `min-child-width` prop to specify the `min-width` a child should have before adjusting the layout.

This uses css grid `auto-fit` and `minmax()` internally.

### Changing the spacing for columns and rows

Simply pass the `spacing` prop to change the row and column spacing between the grid items. `SimpleGrid` also allows you pass `spacing-x` and `spacing-y` to define the space between columns and rows respectively.

::showcase
::simple-grid-spacing{width=full}
::
::

```html
<CSimpleGrid :columns="2" spacing-x="40px" spacing-y="20px">
<CBox background="green" height="80px"></CBox>
<CBox background="red" height="80px"></CBox>
<CBox background="blue.900" height="80px"></CBox>
<CBox background="darkorange" height="80px"></CBox>
<CBox background="yellow" height="80px"></CBox>
</CSimpleGrid>
```

## Props

SimpleGrid composes `Box` so you can pass all the `Box` props and CSS grid props with the addition of these:

| Name | Type | Description |
|------------------|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
| `columns` | `number` | The number of columns |
| `spacing` | `GridProps["gridGap"]` | The gap between the grid items |
| `spacingX` | `GridProps["gridGap"]` | The `column` gap between the grid items |
| `spacingY` | `GridProps["gridGap"]` | The `row` gap between the grid items |
| `minChildWidth` | `CSSProperties["minWidth"]` | The width at which child elements will break into columns. Pass a number for pixel values or a string for any other valid CSS length. |