UNPKG

@inkline/inkline

Version:

Inkline is the Vue.js UI/UX Library built for creating your next design system

497 lines (427 loc) 9.88 kB
import { defineComponent, Prop } from 'vue'; import { breakpointKeys } from '@inkline/inkline/constants'; import { breakpointClass, capitalizeFirst } from '@inkline/inkline/helpers'; import { Classes } from '@inkline/inkline/types'; /** * Slot for default row content * @name default * @kind slot */ /** * Justify the content to the start of the row * @name start * @type Boolean * @default false */ /** * Justify the content to the start of the row on extra-small screens * @name start-xs * @type Boolean * @default false */ /** * Justify the content to the start of the row on small screens * @name start-sm * @type Boolean * @default false */ /** * Justify the content to the start of the row on medium screens * @name start-md * @type Boolean * @default false */ /** * Justify the content to the start of the row on large screens * @name start-lg * @type Boolean * @default false */ /** * Justify the content to the start of the row on extra-large screens * @name start-xl * @type Boolean * @default false */ /** * Justify the content to the start of the row on extra-extra-large screens * @name start-xxl * @type Boolean * @default false */ /** * Justify the content to the center of the row * @name center * @type Boolean * @default false */ /** * Justify the content to the center of the row on extra-small screens * @name center-xs * @type Boolean * @default false */ /** * Justify the content to the center of the row on small screens * @name center-sm * @type Boolean * @default false */ /** * Justify the content to the center of the row on medium screens * @name center-md * @type Boolean * @default false */ /** * Justify the content to the center of the row on large screens * @name center-lg * @type Boolean * @default false */ /** * Justify the content to the center of the row on extra-large screens * @name center-xl * @type Boolean * @default false */ /** * Justify the content to the center of the row on extra-extra-large screens * @name center-xxl * @type Boolean * @default false */ /** * Justify the content to the end of the row * @name end * @type Boolean * @default false */ /** * Justify the content to the end of the row on extra-small screens * @name end-xs * @type Boolean * @default false */ /** * Justify the content to the end of the row on small screens * @name end-sm * @type Boolean * @default false */ /** * Justify the content to the end of the row on medium screens * @name end-md * @type Boolean * @default false */ /** * Justify the content to the end of the row on large screens * @name end-lg * @type Boolean * @default false */ /** * Justify the content to the end of the row on extra-large screens * @name end-xl * @type Boolean * @default false */ /** * Justify the content to the end of the row on extra-extra-large screens * @name end-xxl * @type Boolean * @default false */ /** * Align the content to the top of the row * @name top * @type Boolean * @default false */ /** * Align the content to the top of the row on extra-small screens * @name top-xs * @type Boolean * @default false */ /** * Align the content to the top of the row on small screens * @name top-sm * @type Boolean * @default false */ /** * Align the content to the top of the row on medium screens * @name top-md * @type Boolean * @default false */ /** * Align the content to the top of the row on large screens * @name top-lg * @type Boolean * @default false */ /** * Align the content to the top of the row on extra-large screens * @name top-xl * @type Boolean * @default false */ /** * Align the content to the top of the row on extra-extra-large screens * @name top-xxl * @type Boolean * @default false */ /** * Align the content to the middle of the row * @name middle * @type Boolean * @default false */ /** * Align the content to the middle of the row on extra-small screens * @name middle-xs * @type Boolean * @default false */ /** * Align the content to the middle of the row on small screens * @name middle-sm * @type Boolean * @default false */ /** * Align the content to the middle of the row on medium screens * @name middle-md * @type Boolean * @default false */ /** * Align the content to the middle of the row on large screens * @name middle-lg * @type Boolean * @default false */ /** * Align the content to the middle of the row on extra-large screens * @name middle-xl * @type Boolean * @default false */ /** * Align the content to the middle of the row on extra-extra-large screens * @name middle-xxl * @type Boolean * @default false */ /** * Align the content to the bottom of the row * @name bottom * @type Boolean * @default false */ /** * Align the content to the bottom of the row on extra-small screens * @name bottom-xs * @type Boolean * @default false */ /** * Align the content to the bottom of the row on small screens * @name bottom-sm * @type Boolean * @default false */ /** * Align the content to the bottom of the row on medium screens * @name bottom-md * @type Boolean * @default false */ /** * Align the content to the bottom of the row on large screens * @name bottom-lg * @type Boolean * @default false */ /** * Align the content to the bottom of the row on extra-large screens * @name bottom-xl * @type Boolean * @default false */ /** * Align the content to the bottom of the row on extra-extra-large screens * @name bottom-xxl * @type Boolean * @default false */ /** * Justify the content to have space around each item inside the row * @name around * @type Boolean * @default false */ /** * Justify the content to have space around each item inside the row on extra-small screens * @name around-xs * @type Boolean * @default false */ /** * Justify the content to have space around each item inside the row on small screens * @name around-sm * @type Boolean * @default false */ /** * Justify the content to have space around each item inside the row on medium screens * @name around-md * @type Boolean * @default false */ /** * Justify the content to have space around each item inside the row on large screens * @name around-lg * @type Boolean * @default false */ /** * Justify the content to have space around each item inside the row on extra-large screens * @name around-xl * @type Boolean * @default false */ /** * Justify the content to have space around each item inside the row on extra-extra-large screens * @name around-xxl * @type Boolean * @default false */ /** * Justify the content to have space between each item inside the row * @name between * @type Boolean * @default false */ /** * Justify the content to have space between each item inside the row on extra-small screens * @name between-xs * @type Boolean * @default false */ /** * Justify the content to have space between each item inside the row on small screens * @name between-sm * @type Boolean * @default false */ /** * Justify the content to have space between each item inside the row on medium screens * @name between-md * @type Boolean * @default false */ /** * Justify the content to have space between each item inside the row on large screens * @name between-lg * @type Boolean * @default false */ /** * Justify the content to have space between each item inside the row on extra-large screens * @name between-xl * @type Boolean * @default false */ /** * Justify the content to have space between each item inside the row on extra-extra-large screens * @name between-xxl * @type Boolean * @default false */ /** * Order the content in reverse order inside the row * @name reverse * @type Boolean * @default false */ /** * Order the content in reverse order inside the row on extra-small screens * @name reverse-xs * @type Boolean * @default false */ /** * Order the content in reverse order inside the row on small screens * @name reverse-sm * @type Boolean * @default false */ /** * Order the content in reverse order inside the row on medium screens * @name reverse-md * @type Boolean * @default false */ /** * Order the content in reverse order inside the row on large screens * @name reverse-lg * @type Boolean * @default false */ /** * Order the content in reverse order inside the row on extra-large screens * @name reverse-xl * @type Boolean * @default false */ /** * Order the content in reverse order inside the row on extra-extra-large screens * @name reverse-xxl * @type Boolean * @default false */ const properties: { [key: string]: Prop<any> } = {}; for (const breakpoint of breakpointKeys) { for (const property of ['start', 'center', 'end', 'top', 'middle', 'bottom', 'around', 'between', 'reverse']) { properties[`${property}${capitalizeFirst(breakpoint)}`] = { type: Boolean, default: false }; } } const componentName = 'IRow'; export default defineComponent({ name: componentName, props: { noGutter: { type: Boolean, default: false }, noCollapse: { type: Boolean, default: false }, ...properties }, computed: { classes (): Classes { const responsiveClasses = Object.keys(properties) .reduce((acc: { [key: string]: boolean }, property) => { if ((this as any)[property]) { acc[breakpointClass(`-${property}`, (this as any)[property])] = true; } return acc; }, {}); return { '-no-gutter': this.noGutter, '-no-collapse': this.noCollapse, ...responsiveClasses }; } } });