2025-07-03 13:54:01 +08:00
|
|
|
|
class cy_tabs {
|
2025-08-21 16:34:30 +08:00
|
|
|
|
constructor(boxElm, clickTabCallBack, sdk) {
|
|
|
|
|
let elm
|
|
|
|
|
if(typeof boxElm === 'string') {
|
|
|
|
|
elm = document.getElementById(boxElm);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
elm = boxElm
|
|
|
|
|
}
|
|
|
|
|
// let elm = document.getElementById(id);
|
2025-08-08 15:31:11 +08:00
|
|
|
|
let pane = elm.getElementsByTagName('DIV-cy-tab-pane')
|
2025-07-03 13:54:01 +08:00
|
|
|
|
|
2025-08-08 15:31:11 +08:00
|
|
|
|
let tabTop = `<div class="DIV-cy-tab-top">`
|
|
|
|
|
let tabContent = `<div class="DIV-cy-tab-content">`
|
|
|
|
|
let tabindex = 0
|
|
|
|
|
for (let i = 0; i < pane.length; i++) {
|
|
|
|
|
let flag = false
|
|
|
|
|
if (sdk && sdk.tabHide && Array.isArray(sdk.tabHide)) {
|
|
|
|
|
for (let m = 0; m < sdk.tabHide.length; m++) {
|
|
|
|
|
if (pane[i].getAttribute('label') === sdk.tabHide[m]) {
|
|
|
|
|
flag = true
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (flag) {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
let style = 'display: none;'
|
|
|
|
|
let active = ''
|
|
|
|
|
if (tabindex == 0) {
|
|
|
|
|
style = ''
|
|
|
|
|
active = 'is-active'
|
|
|
|
|
}
|
|
|
|
|
tabTop = tabTop + `
|
2025-07-03 13:54:01 +08:00
|
|
|
|
<div class="DIV-cy-tab-pane-title">
|
|
|
|
|
<div class="DIV-cy-tab-pane-title-p `+ active + `" tabindex="` + tabindex + `"><span>` + pane[i].getAttribute('label') + `</span></div>
|
|
|
|
|
</div>
|
|
|
|
|
`
|
2025-08-08 15:31:11 +08:00
|
|
|
|
tabContent = tabContent + `<div class="DIV-cy-tab-content-pane ${pane[i].className}" style="` + style + `">` + pane[i].innerHTML + `</div>`
|
|
|
|
|
tabindex++
|
|
|
|
|
}
|
|
|
|
|
tabTop = tabTop + `</div>`
|
|
|
|
|
tabContent = tabContent + `</div>`
|
2025-07-03 13:54:01 +08:00
|
|
|
|
|
2025-08-08 15:31:11 +08:00
|
|
|
|
let BoxElm = document.createElement('div');
|
2025-08-21 16:34:30 +08:00
|
|
|
|
if(typeof boxElm === 'string') {
|
|
|
|
|
BoxElm.setAttribute('id', boxElm)
|
|
|
|
|
}
|
2025-08-08 15:31:11 +08:00
|
|
|
|
BoxElm.setAttribute('class', 'DIV-cy-tabs')
|
|
|
|
|
BoxElm.innerHTML = tabTop + tabContent
|
|
|
|
|
elm.parentNode.insertBefore(BoxElm, elm);
|
|
|
|
|
elm.parentNode.removeChild(elm);
|
2025-07-03 13:54:01 +08:00
|
|
|
|
|
2025-08-08 15:31:11 +08:00
|
|
|
|
// 点击事件
|
|
|
|
|
let tabs = BoxElm.getElementsByClassName('DIV-cy-tab-pane-title-p')
|
|
|
|
|
for (let i = 0; i < tabs.length; i++) {
|
|
|
|
|
tabs[i].addEventListener('click', (e) => {
|
|
|
|
|
let tabindex = e.target.getAttribute('tabindex')
|
|
|
|
|
let contentElm = BoxElm.getElementsByClassName('DIV-cy-tab-content-pane')
|
|
|
|
|
clickTabCallBack && clickTabCallBack(tabindex)
|
|
|
|
|
for (let i = 0; i < contentElm.length; i++) {
|
|
|
|
|
if (i === parseInt(tabindex)) {
|
|
|
|
|
contentElm[i].style.display = ''
|
|
|
|
|
tabs[i].className = 'DIV-cy-tab-pane-title-p is-active'
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
contentElm[i].style.display = 'none'
|
|
|
|
|
tabs[i].className = 'DIV-cy-tab-pane-title-p'
|
|
|
|
|
}
|
2025-07-03 13:54:01 +08:00
|
|
|
|
}
|
2025-08-08 15:31:11 +08:00
|
|
|
|
contentElm[parseInt(tabindex)].style.display = ''
|
|
|
|
|
})
|
2025-07-03 13:54:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-08-08 15:31:11 +08:00
|
|
|
|
this.clickTabCallBack = clickTabCallBack
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clickTabCallBack() {
|
|
|
|
|
if (this.clickTabCallBack) {
|
|
|
|
|
this.clickTabCallBack()
|
2025-07-03 13:54:01 +08:00
|
|
|
|
}
|
2025-08-08 15:31:11 +08:00
|
|
|
|
}
|
2025-07-03 13:54:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-08-08 15:31:11 +08:00
|
|
|
|
export default cy_tabs
|