ui-lib/lib/ui/tab.js
Tsanie e07342a257 fix: tooltip issue about customer follower
change: Grid.export optimized (compression with `deflate`)
feature: ui-tab
feature: Popup.closable
2024-03-12 13:36:54 +08:00

43 lines
1.4 KiB
JavaScript

import "./css/tab.scss";
/**
* Tab 页创建参数类
* @typedef TabOption
* @property {HTMLElement} container - 父容器
*/
import { createElement } from "../functions";
/**
* 创建 Tab 页
* @param {TabOption | HTMLElement} options - 创建选项
*/
export function createTab(options) {
if (options instanceof HTMLElement) {
options = { container: options };
}
let container;
if (options?.container instanceof HTMLElement) {
container = options.container;
if (!container.classList.contains('ui-tab-container')) {
container.classList.add('ui-tab-container');
}
} else {
container = createElement('div', 'ui-tab-container');
}
container.replaceChildren(
createElement('div', header => {
header.className = 'ui-tab-header';
header.addEventListener('click', e => {
const title = e.target;
if (title.classList.contains('ui-tab-title')) {
// title
header.querySelectorAll('.ui-tab-title').forEach(t => t === title ? t.classList.add('selected') : t.classList.remove('selected'));
// pages
const page = title.dataset.for;
container.querySelectorAll('[data-page]').forEach(p => p.style.display = p.dataset.page === page ? 'block' : '');
}
});
})
);
}