117 lines
3.7 KiB
JavaScript
117 lines
3.7 KiB
JavaScript
export default {
|
|
name: 'ElDescriptionsRow',
|
|
props: {
|
|
row: {
|
|
type: Array
|
|
}
|
|
},
|
|
inject: ['elDescriptions'],
|
|
render(h) {
|
|
const { elDescriptions } = this;
|
|
const row = (this.row || []).map(item => {
|
|
return {
|
|
...item,
|
|
label: item.slots.label || item.props.label,
|
|
...['labelClassName', 'contentClassName', 'labelStyle', 'contentStyle'].reduce((res, key) => {
|
|
res[key] = item.props[key] || elDescriptions[key];
|
|
return res;
|
|
}, {})
|
|
};
|
|
});
|
|
if (elDescriptions.direction === 'vertical') {
|
|
return (
|
|
<tbody>
|
|
<tr class="el-descriptions-row">
|
|
{
|
|
row.map(item => {
|
|
return (
|
|
<th
|
|
class={{
|
|
'el-descriptions-item__cell': true,
|
|
'el-descriptions-item__label': true,
|
|
'has-colon': elDescriptions.border ? false : elDescriptions.colon,
|
|
'is-bordered-label': elDescriptions.border,
|
|
[item.labelClassName]: true
|
|
}}
|
|
style={item.labelStyle}
|
|
colSpan={item.props.span}
|
|
>{item.label}</th>
|
|
);
|
|
})
|
|
}
|
|
</tr>
|
|
<tr class="el-descriptions-row">
|
|
{
|
|
row.map(item =>{
|
|
return (
|
|
<td
|
|
class={['el-descriptions-item__cell', 'el-descriptions-item__content', item.contentClassName]}
|
|
style={item.contentStyle}
|
|
colSpan={item.props.span}
|
|
>{item.slots.default}</td>
|
|
);
|
|
})
|
|
}
|
|
</tr>
|
|
</tbody>
|
|
);
|
|
}
|
|
if (elDescriptions.border) {
|
|
return (
|
|
<tbody>
|
|
<tr class="el-descriptions-row">
|
|
{
|
|
row.map(item=> {
|
|
return ([
|
|
<th
|
|
class={{
|
|
'el-descriptions-item__cell': true,
|
|
'el-descriptions-item__label': true,
|
|
'is-bordered-label': elDescriptions.border,
|
|
[item.labelClassName]: true
|
|
}}
|
|
style={item.labelStyle}
|
|
colSpan="1"
|
|
>{item.label}</th>,
|
|
<td
|
|
class={['el-descriptions-item__cell', 'el-descriptions-item__content', item.contentClassName]}
|
|
style={item.contentStyle}
|
|
colSpan={item.props.span * 2 - 1}
|
|
>{item.slots.default}</td>
|
|
]);
|
|
})
|
|
}
|
|
</tr>
|
|
</tbody>
|
|
);
|
|
}
|
|
return (
|
|
<tbody>
|
|
<tr class="el-descriptions-row">
|
|
{
|
|
row.map(item=> {
|
|
return (
|
|
<td class="el-descriptions-item el-descriptions-item__cell" colSpan={item.props.span}>
|
|
<div class="el-descriptions-item__container">
|
|
<span
|
|
class={{
|
|
'el-descriptions-item__label': true,
|
|
'has-colon': elDescriptions.colon,
|
|
[item.labelClassName]: true
|
|
}}
|
|
style={item.labelStyle}
|
|
>{item.props.label}</span>
|
|
<span
|
|
class={['el-descriptions-item__content', item.contentClassName]}
|
|
style={item.contentStyle}
|
|
>{item.slots.default}</span>
|
|
</div>
|
|
</td>);
|
|
})
|
|
}
|
|
</tr>
|
|
</tbody>
|
|
);
|
|
}
|
|
};
|