vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.1 KiB
50 lines
1.1 KiB
4 years ago
|
import { Col, Row } from '../../components/grid';
|
||
|
import '../../components/grid/style';
|
||
|
function isEmptyElement(c) {
|
||
|
return !(c.tag || (c.text && c.text.trim() !== ''));
|
||
|
}
|
||
|
|
||
|
function filterEmpty(children = []) {
|
||
|
return children.filter(c => !isEmptyElement(c));
|
||
|
}
|
||
|
export default {
|
||
|
props: {
|
||
|
cols: {
|
||
|
type: [Number, String],
|
||
|
default: 2,
|
||
|
},
|
||
|
},
|
||
|
inject: {
|
||
|
demoContext: { default: {} },
|
||
|
},
|
||
|
render() {
|
||
|
const { cols, $slots } = this;
|
||
|
const isSingleCol = cols === 1;
|
||
|
const leftChildren = [];
|
||
|
const rightChildren = [];
|
||
|
const children = filterEmpty($slots.default);
|
||
|
children.forEach((demo, index) => {
|
||
|
if (index % 2 === 0 || isSingleCol) {
|
||
|
leftChildren.push(demo);
|
||
|
} else {
|
||
|
rightChildren.push(demo);
|
||
|
}
|
||
|
});
|
||
|
return (
|
||
|
<Row gutter={16}>
|
||
|
<Col
|
||
|
span={isSingleCol ? 24 : 12}
|
||
|
class={isSingleCol ? 'code-boxes-col-1-1' : 'code-boxes-col-2-1'}
|
||
|
>
|
||
|
{leftChildren}
|
||
|
</Col>
|
||
|
{isSingleCol ? null : (
|
||
|
<Col class="code-boxes-col-2-1" span={12}>
|
||
|
{rightChildren}
|
||
|
</Col>
|
||
|
)}
|
||
|
</Row>
|
||
|
);
|
||
|
},
|
||
|
};
|