UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 8.07 kB
{"version":3,"file":"VRow.mjs","names":["makeTagProps","capitalize","computed","h","genericComponent","breakpoints","ALIGNMENT","SPACE","makeRowProps","prefix","def","reduce","props","val","ALIGN_VALUES","alignValidator","str","includes","alignProps","type","String","default","validator","JUSTIFY_VALUES","justifyValidator","justifyProps","ALIGN_CONTENT_VALUES","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","undefined","breakpoint","replace","toLowerCase","VRow","name","dense","Boolean","noGutters","setup","slots","classes","classList","forEach","value","push","tag","class"],"sources":["../../../src/components/VGrid/VRow.ts"],"sourcesContent":["// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { capitalize, computed, h } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { Prop, PropType } from 'vue'\n\nconst breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl'] as const // no xs\n\nconst ALIGNMENT = ['start', 'end', 'center'] as const\n\nconst SPACE = ['space-between', 'space-around', 'space-evenly'] as const\n\nfunction makeRowProps <T> (prefix: string, def: () => Prop<T, null>) {\n return breakpoints.reduce((props, val) => {\n props[prefix + capitalize(val)] = def()\n return props\n }, {} as Record<string, Prop<T, null>>)\n}\n\nconst ALIGN_VALUES = [...ALIGNMENT, 'baseline', 'stretch'] as const\nconst alignValidator = (str: any) => ALIGN_VALUES.includes(str)\nconst alignProps = makeRowProps('align', () => ({\n type: String as PropType<typeof ALIGN_VALUES[number]>,\n default: null,\n validator: alignValidator,\n}))\n\nconst JUSTIFY_VALUES = [...ALIGNMENT, ...SPACE] as const\nconst justifyValidator = (str: any) => JUSTIFY_VALUES.includes(str)\nconst justifyProps = makeRowProps('justify', () => ({\n type: String as PropType<typeof JUSTIFY_VALUES[number]>,\n default: null,\n validator: justifyValidator,\n}))\n\nconst ALIGN_CONTENT_VALUES = [...ALIGNMENT, ...SPACE, 'stretch'] as const\nconst alignContentValidator = (str: any) => ALIGN_CONTENT_VALUES.includes(str)\nconst alignContentProps = makeRowProps('alignContent', () => ({\n type: String as PropType<typeof ALIGN_CONTENT_VALUES[number]>,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nexport const VRow = genericComponent()({\n name: 'VRow',\n\n props: {\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String as PropType<typeof ALIGN_VALUES[number]>,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String as PropType<typeof ALIGN_CONTENT_VALUES[number]>,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String as PropType<typeof ALIGN_CONTENT_VALUES[number]>,\n default: null,\n validator: alignContentValidator,\n },\n\n ...alignContentProps,\n ...makeTagProps(),\n },\n\n setup (props, { slots }) {\n const classes = computed(() => {\n const classList: any[] = []\n\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'v-row--no-gutters': props.noGutters,\n 'v-row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n return classList\n })\n\n return () => h(props.tag, {\n class: ['v-row', classes.value],\n }, slots.default?.())\n },\n})\n\nexport type VRow = InstanceType<typeof VRow>\n"],"mappings":"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"}