UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 8.03 kB
{"version":3,"file":"VCol.mjs","names":["makeTagProps","capitalize","computed","h","genericComponent","breakpoints","breakpointProps","reduce","props","val","type","Boolean","String","Number","default","offsetProps","orderProps","propMap","col","Object","keys","offset","order","breakpointClass","prop","className","undefined","breakpoint","replace","toLowerCase","ALIGN_SELF_VALUES","VCol","name","cols","alignSelf","validator","str","includes","setup","slots","classes","classList","forEach","value","push","hasColClasses","some","startsWith","tag","class"],"sources":["../../../src/components/VGrid/VCol.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 breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Record<string, Prop<boolean | string | number, false>>)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + capitalize(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Record<string, Prop<string | number, null>>)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + capitalize(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Record<string, Prop<string | number, null>>)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className: string = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n if (type === 'col') {\n className = 'v-' + className\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert <v-col sm></v-col> to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .v-col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch'] as const\n\nexport const VCol = genericComponent()({\n name: 'VCol',\n\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String as PropType<typeof ALIGN_SELF_VALUES[number]>,\n default: null,\n validator: (str: any) => ALIGN_SELF_VALUES.includes(str),\n },\n\n ...makeTagProps(),\n },\n\n setup (props, { slots }) {\n const classes = computed(() => {\n const classList: any[] = []\n\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('v-col-'))\n\n classList.push({\n // Default to .v-col if no other col-{bp}-* classes generated nor `cols` specified.\n 'v-col': !hasColClasses || !props.cols,\n [`v-col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n return classList\n })\n\n return () => h(props.tag, {\n class: classes.value,\n }, slots.default?.())\n },\n})\n\nexport type VCol = InstanceType<typeof VCol>\n"],"mappings":"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"}