birdpaper-ui
Version:
一个通用的 vue3 UI组件库。A common vue3 UI component library.
52 lines (51 loc) • 1.8 kB
JavaScript
import { defineComponent, computed } from "vue";
import { isNull } from "../../utils/util.js";
const _sfc_main = defineComponent({
name: "Col",
props: {
/** 栏位数量 1-24 Number of fields 1-24 */
span: { type: [String, Number], default: 24 },
/** 偏移量 Number of offset*/
offset: { type: [String, Number], default: "" },
// <768px 响应式栅格数或者栅格属性对象
xs: { type: [Object, Number] },
// ≥768px 响应式栅格数或者栅格属性对象
sm: { type: [Object, Number] },
// ≥992px 响应式栅格数或者栅格属性对象
md: { type: [Object, Number] },
// ≥1200px 响应式栅格数或者栅格属性对象
lg: { type: [Object, Number] },
// ≥1920px 响应式栅格数或者栅格属性对象
xl: { type: [Object, Number] }
},
setup(props) {
const name = "col";
const cls = computed(() => {
let className = [`bp-${name}`];
Number(props.span) !== 0 ? className.push(`bp-${name}-${props.span}`) : "";
Number(props.offset) !== 0 ? className.push(`bp-${name}-offset-${props.offset}`) : "";
const responsive = ["xs", "sm", "md", "lg", "xl"];
for (let i = 0; i < responsive.length; i++) {
const item = responsive[i];
if (!props[item])
continue;
if (typeof props[item] === "number") {
className.push(`bp-${name}-${item}-${props[item]}`);
continue;
}
if (!isNull(props[item])) {
props[item].span && className.push(`bp-${name}-${item}-${props[item].span}`);
props[item].offset && className.push(`bp-${name}-${item}-offset-${props[item].offset}`);
}
}
return className;
});
return {
name,
cls
};
}
});
export {
_sfc_main as default
};