Layout
Easily arrange elements in a grid using CSS grid layout and predefined sizes and spaces.
<script setup lang="ts">import { VLayout, VCard } from '@vonage/vivid-api-vue';</script><template> <VLayout> <VCard headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <template #media><img src="https://picsum.photos/id/1015/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /></template> </VCard> <VCard headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <template #media><img src="https://picsum.photos/id/1016/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /></template> </VCard> <VCard headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <template #media><img src="https://picsum.photos/id/1018/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /></template> </VCard> <VCard headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <template #media><img src="https://picsum.photos/id/1019/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /></template> </VCard> <VCard headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <template #media><img src="https://picsum.photos/id/1055/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /></template> </VCard> <VCard headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <template #media><img src="https://picsum.photos/id/1050/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /></template> </VCard> </VLayout></template>import { registerLayout } from '@vonage/vivid-api';
registerLayout('your-prefix');<script type="module"> import { registerLayout, registerCard } from '@vonage/vivid-api'; registerLayout('your-prefix'); registerCard('your-prefix');</script>
<your-prefix-layout gutters="small"> <your-prefix-card headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <img slot="media" src="https://picsum.photos/id/1015/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /> </your-prefix-card> <your-prefix-card headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <img slot="media" src="https://picsum.photos/id/1016/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /> </your-prefix-card> <your-prefix-card headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <img slot="media" src="https://picsum.photos/id/1018/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /> </your-prefix-card> <your-prefix-card headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <img slot="media" src="https://picsum.photos/id/1019/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /> </your-prefix-card> <your-prefix-card headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <img slot="media" src="https://picsum.photos/id/1055/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /> </your-prefix-card> <your-prefix-card headline="Lorem ipsum" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."> <img slot="media" src="https://picsum.photos/id/1050/300/200" alt="landscape" style="width: 100%; height: 150px; object-fit: cover;" /> </your-prefix-card></your-prefix-layout>Use custom grid-template-columns by setting --layout-grid-template-columns.
This will override the auto-sizing and column-basis attributes. The default value is repeat(<auto-sizing>, minmax(<column-basis>, 1fr)).
<script setup lang="ts">import { VCard, VLayout } from '@vonage/vivid-api-vue';</script>
<template> <VLayout style="--layout-grid-template-columns: 1fr 1fr;" gutters="small"> <VCard elevation="2" /> <VCard elevation="2" /> <VCard elevation="2" /> <VCard elevation="2" /> </VLayout></template><vwc-layout style="--layout-grid-template-columns: 1fr 1fr;" gutters="small"> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card></vwc-layout>Control the grid-template-rows of the layout by setting --layout-grid-template-rows. The default value is min-content.
<script setup lang="ts">import { VCard, VLayout } from '@vonage/vivid-api-vue';</script>
<template> <VLayout style="--layout-grid-template-rows: 80px 40px auto;" gutters="small"> <VCard elevation="2" /> <VCard elevation="2" /> <VCard elevation="2" /> <VCard elevation="2" /> <VCard elevation="2" /> <VCard elevation="2" /> </VLayout></template><vwc-layout style="--layout-grid-template-rows: 80px 40px auto;" gutters="small"> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card></vwc-layout>Layout-column-gap
Use a custom column-gap by setting --layout-column-gap.
This will override the column-spacing attribute.
Layout-row-gap
Use a custom row-gap by setting --layout-row-gap.
This will override the row-spacing attribute.
<script setup lang="ts">import { VCard, VLayout } from '@vonage/vivid-api-vue';</script>
<template> <VLayout style="--layout-column-gap: 0; --layout-row-gap: 0;" gutters="small"> <VCard elevation="2" /> <VCard elevation="2" /> <VCard elevation="2" /> <VCard elevation="2" /> </VLayout></template><vwc-layout style="--layout-column-gap: 0; --layout-row-gap: 0;" gutters="small"> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card> <vwc-card elevation="2"></vwc-card></vwc-layout>| Property | Type | Default | Description |
|---|---|---|---|
| autoSizing | 'fill' | 'fit' | Controls how the grid's behaves with empty column tracks | |
| columnBasis | 'small' | 'medium' | 'large' | 'block' | Controls the `min-width` of columns | |
| columnSpacing | 'small' | 'medium' | 'large' | Controls the size of the spacing between columns | |
| gutters | 'small' | 'medium' | 'large' | Controls the amount of margin around the component | |
| rowSpacing | 'small' | 'medium' | 'large' | sets the initial preferred spacing of a row from predefined available options |
| Property | Type | Default | Description |
|---|---|---|---|
| auto-sizing | 'fill' | 'fit' | Controls how the grid's behaves with empty column tracks | |
| column-basis | 'small' | 'medium' | 'large' | 'block' | Controls the `min-width` of columns | |
| column-spacing | 'small' | 'medium' | 'large' | Controls the size of the spacing between columns | |
| gutters | 'small' | 'medium' | 'large' | Controls the amount of margin around the component | |
| row-spacing | 'small' | 'medium' | 'large' | sets the initial preferred spacing of a row from predefined available options |
| Name | Description |
|---|---|
| default | Default slot. |
| Name | Description |
|---|---|
| default | Default slot. |