element-plus
Version:
A Component Library for Vue 3
1 lines • 4.8 kB
Source Map (JSON)
{"version":3,"file":"col.mjs","sources":["../../../../../../packages/components/col/src/col.ts"],"sourcesContent":["import { defineComponent, computed, inject, h, renderSlot } from 'vue'\nimport { buildProps, definePropType, mutable } from '@element-plus/utils/props'\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\n\ntype SizeObject = {\n span?: number\n offset?: number\n}\ntype Size = number | SizeObject\n\nexport const colProps = buildProps({\n tag: {\n type: String,\n default: 'div',\n },\n span: {\n type: Number,\n default: 24,\n },\n offset: {\n type: Number,\n default: 0,\n },\n pull: {\n type: Number,\n default: 0,\n },\n push: {\n type: Number,\n default: 0,\n },\n xs: {\n type: definePropType<Size>([Number, Object]),\n default: () => mutable({} as const),\n },\n sm: {\n type: definePropType<Size>([Number, Object]),\n default: () => mutable({} as const),\n },\n md: {\n type: definePropType<Size>([Number, Object]),\n default: () => mutable({} as const),\n },\n lg: {\n type: definePropType<Size>([Number, Object]),\n default: () => mutable({} as const),\n },\n xl: {\n type: definePropType<Size>([Number, Object]),\n default: () => mutable({} as const),\n },\n} as const)\nexport type ColProps = ExtractPropTypes<typeof colProps>\n\nexport default defineComponent({\n name: 'ElCol',\n props: colProps,\n\n setup(props, { slots }) {\n const { gutter } = inject('ElRow', { gutter: { value: 0 } })\n\n const style = computed<CSSProperties>(() => {\n if (gutter.value) {\n return {\n paddingLeft: `${gutter.value / 2}px`,\n paddingRight: `${gutter.value / 2}px`,\n }\n }\n return {}\n })\n\n const classList = computed(() => {\n const classes: string[] = []\n\n const pos = ['span', 'offset', 'pull', 'push'] as const\n pos.forEach((prop) => {\n const size = props[prop]\n if (typeof size === 'number') {\n if (prop === 'span') classes.push(`el-col-${props[prop]}`)\n else if (size > 0) classes.push(`el-col-${prop}-${props[prop]}`)\n }\n })\n\n const sizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const\n sizes.forEach((size) => {\n if (typeof props[size] === 'number') {\n classes.push(`el-col-${size}-${props[size]}`)\n } else if (typeof props[size] === 'object') {\n const sizeProps = props[size]\n Object.keys(sizeProps).forEach((prop) => {\n classes.push(\n prop !== 'span'\n ? `el-col-${size}-${prop}-${sizeProps[prop]}`\n : `el-col-${size}-${sizeProps[prop]}`\n )\n })\n }\n })\n // this is for the fix\n if (gutter.value) {\n classes.push('is-guttered')\n }\n\n return classes\n })\n\n return () =>\n h(\n props.tag,\n {\n class: ['el-col', classList.value],\n style: style.value,\n },\n [renderSlot(slots, 'default')]\n )\n },\n})\n"],"names":[],"mappings":";;;MAUa,WAAW,WAAW;AAAA,EACjC,KAAK;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,IAAI;AAAA,IACF,MAAM,eAAqB,CAAC,QAAQ;AAAA,IACpC,SAAS,MAAM,QAAQ;AAAA;AAAA,EAEzB,IAAI;AAAA,IACF,MAAM,eAAqB,CAAC,QAAQ;AAAA,IACpC,SAAS,MAAM,QAAQ;AAAA;AAAA,EAEzB,IAAI;AAAA,IACF,MAAM,eAAqB,CAAC,QAAQ;AAAA,IACpC,SAAS,MAAM,QAAQ;AAAA;AAAA,EAEzB,IAAI;AAAA,IACF,MAAM,eAAqB,CAAC,QAAQ;AAAA,IACpC,SAAS,MAAM,QAAQ;AAAA;AAAA,EAEzB,IAAI;AAAA,IACF,MAAM,eAAqB,CAAC,QAAQ;AAAA,IACpC,SAAS,MAAM,QAAQ;AAAA;AAAA;AAK3B,UAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EAEP,MAAM,OAAO,EAAE,SAAS;AACtB,UAAM,EAAE,WAAW,OAAO,SAAS,EAAE,QAAQ,EAAE,OAAO;AAEtD,UAAM,QAAQ,SAAwB,MAAM;AAC1C,UAAI,OAAO,OAAO;AAChB,eAAO;AAAA,UACL,aAAa,GAAG,OAAO,QAAQ;AAAA,UAC/B,cAAc,GAAG,OAAO,QAAQ;AAAA;AAAA;AAGpC,aAAO;AAAA;AAGT,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,UAAoB;AAE1B,YAAM,MAAM,CAAC,QAAQ,UAAU,QAAQ;AACvC,UAAI,QAAQ,CAAC,SAAS;AACpB,cAAM,OAAO,MAAM;AACnB,YAAI,OAAO,SAAS,UAAU;AAC5B,cAAI,SAAS;AAAQ,oBAAQ,KAAK,UAAU,MAAM;AAAA,mBACzC,OAAO;AAAG,oBAAQ,KAAK,UAAU,QAAQ,MAAM;AAAA;AAAA;AAI5D,YAAM,QAAQ,CAAC,MAAM,MAAM,MAAM,MAAM;AACvC,YAAM,QAAQ,CAAC,SAAS;AACtB,YAAI,OAAO,MAAM,UAAU,UAAU;AACnC,kBAAQ,KAAK,UAAU,QAAQ,MAAM;AAAA,mBAC5B,OAAO,MAAM,UAAU,UAAU;AAC1C,gBAAM,YAAY,MAAM;AACxB,iBAAO,KAAK,WAAW,QAAQ,CAAC,SAAS;AACvC,oBAAQ,KACN,SAAS,SACL,UAAU,QAAQ,QAAQ,UAAU,UACpC,UAAU,QAAQ,UAAU;AAAA;AAAA;AAAA;AAMxC,UAAI,OAAO,OAAO;AAChB,gBAAQ,KAAK;AAAA;AAGf,aAAO;AAAA;AAGT,WAAO,MACL,EACE,MAAM,KACN;AAAA,MACE,OAAO,CAAC,UAAU,UAAU;AAAA,MAC5B,OAAO,MAAM;AAAA,OAEf,CAAC,WAAW,OAAO;AAAA;AAAA;;;;"}