let isShow = false
|
let items = []
|
let globalDropdownWrapper = null
|
|
function getDropdownRoot(width = 372, top = "100%") {
|
let dropdownWrapper = document.createElement("div");
|
dropdownWrapper.style.width = width + "px";
|
dropdownWrapper.style.height = '400px'
|
dropdownWrapper.style.position = "absolute"
|
dropdownWrapper.style.background = "#fafafa"
|
dropdownWrapper.style.top = top;
|
dropdownWrapper.style.left = "0"
|
dropdownWrapper.style.zIndex = "999"
|
dropdownWrapper.style.display = "none"
|
dropdownWrapper.style.overflowY = "auto"
|
dropdownWrapper.style.boxSizing = "border-box"
|
dropdownWrapper.style.border = "2px solid #eeeeee"
|
dropdownWrapper.style.borderRadius = "10px"
|
dropdownWrapper.id = "dropdown-root";
|
dropdownWrapper.classList.add("dropdown-root")
|
globalDropdownWrapper = dropdownWrapper
|
return dropdownWrapper
|
}
|
|
|
function getIsShow() {
|
return isShow;
|
}
|
|
function setDropdownContent(dataList, type, callback) {
|
clearNodes();
|
let dropItems = document.createElement("div");
|
dropItems.style.display = "flex"
|
dropItems.style.flexDirection = "row"
|
dropItems.style.flex = "1"
|
dropItems.style.gap = "20px 20px"
|
dropItems.style.padding = "10px"
|
dropItems.style.flexWrap = "wrap"
|
|
// 可扩展其他类型
|
switch (type) {
|
case "icon": createIconCardItem([dropItems], dataList); break;
|
default: console.error("未知type类型"); return;
|
}
|
globalDropdownWrapper.addEventListener("click", function (e) {
|
callback.call(e)
|
})
|
globalDropdownWrapper.appendChild(dropItems)
|
}
|
|
function createIconCardItem(dropItems, dataList) {
|
for (let data of dataList) {
|
let dropItem = document.createElement("div")
|
dropItem.classList.add("dropItem")
|
dropItem.style.display = "flex"
|
dropItem.style.flexDirection = "column"
|
dropItem.style.justifyContent = "center"
|
dropItem.style.alignItems = "center"
|
dropItem.style.padding = "5px"
|
dropItem.style.width = "96px";
|
dropItem.style.height = "96px";
|
dropItem.style.boxSizing = "border-box";
|
|
let image = document.createElement("img");
|
image.src = data.imgUrl;
|
image.style.objectFit = "contain"
|
image.style.maxWidth = "100%"
|
image.style.height = "80%"
|
image.style.display = "block"
|
|
let span = document.createElement("span");
|
span.setAttribute('databinding', true)
|
span.setAttribute('data-value', data.imgValue)
|
span.innerText = data.imgName;
|
span.style.maxWidth = "100%" // 限制最大宽度
|
span.style.height = "20%"
|
span.style.overflow = "hidden" // 溢出隐藏
|
span.style.textOverflow = "ellipsis" // 文本溢出显示省略号
|
span.style.whiteSpace = "nowrap" // 防止文本换行
|
span.style.fontSize = "0.8em" // 调整字体大小
|
|
dropItem.appendChild(image)
|
dropItem.appendChild(span)
|
|
dropItems[0].appendChild(dropItem);
|
}
|
}
|
|
|
function clearNodes() {
|
while (globalDropdownWrapper.firstChild) {
|
globalDropdownWrapper.removeChild(globalDropdownWrapper.firstChild); // 删除第一个子节点
|
}
|
}
|
|
function hideDropdown() {
|
document.getElementById("dropdown-root").style.display = 'none'
|
isShow = false
|
}
|
|
function showDropdown() {
|
document.getElementById("dropdown-root").style.display = 'block'
|
isShow = true
|
}
|
|
function changeDropdownShow() {
|
if (isShow === true) {
|
hideDropdown()
|
isShow = false
|
} else {
|
showDropdown()
|
isShow = true
|
}
|
}
|
|
window.addEventListener("resize", function () {
|
globalDropdownWrapper.style.width = "calc(25vw)"
|
})
|