import { getVModelHtml, formItemWrapper, colWrapper } from './common/htmlWrapper'
// 创建“el-option”
function createOptionHtml(select) {
let optionHtml = ''
const slot = select.__slot__
if (slot && slot.options && slot.options.length) {
// optionHtml = ``
slot.options.forEach(option => {
optionHtml += `\n`
})
}
return optionHtml
}
// 创建“el-option”
function createOptionHtmlForTable(select) {
const options = []
select.__slot__.options.forEach(option => {
options.push(``)
})
return options.join('\n')
}
// 创建“el-select”
function createSelectHtml(formJson, select, parent) {
const vModel = getVModelHtml(formJson, select, parent)
const placeholder = select.placeholder ? `placeholder="${select.placeholder}"` : ''
const width = select.style && select.style.width ? ':style="{width: \'100%\'}"' : ''
const disabled = select.disabled ? ':disabled=\'true\'' : ''
const filterable = select.filterable ? 'filterable' : ''
const multiple = select.multiple ? 'multiple' : ''
// 创建“el-option”
let optionHtml = select.inTable ? createOptionHtmlForTable(select) : createOptionHtml(select)
// 换行
if (optionHtml) optionHtml = `\n${optionHtml}\n`
return `${optionHtml}`
}
/**
* 获取下拉选择HTML
* @param formJson 表单结构
* @param select 下拉选择组件
* @param parent 父组件(dialog, table...)
* @param isSomeSpanUnequal24 是否有的组件“span”不等于“24”
* @returns {string} 下拉选择HTML
*/
export default function getSelectHtml(formJson, select, parent, isSomeSpanUnequal24) {
// 创建“el-select”
const selectHtml = createSelectHtml(formJson, select, parent)
// 用“el-form-item”包裹“el-select”
let formItemHtml = formItemWrapper(formJson, select, selectHtml)
// span不为24的用“el-col”包裹“el-form-item”
if (isSomeSpanUnequal24) {
formItemHtml = colWrapper(select, formItemHtml)
}
return formItemHtml
}