TssGrid 例: ソート+フィルタ両載せ multisort + tss-filter
1つのヘッダに ソート(▲▼) と フィルタ(漏斗) を共存させる例。右端に ▲▼ 🔽 が一列に並びます。
・▲▼=ソート(▲昇順/▼降順・点灯中を再クリックで解除・Ctrl+クリックで多段)。本体クリックで列選択。
・🔽(漏斗)=tss-filter のオートフィルタ(クリックで値チェックリスト・複数列AND)。
両立のキモは th に右レーン(padding-right)を確保し、▲▼と漏斗を両方"絶対配置"で右に並べること(<th>は display:flex にできない=table-cellが壊れるため)。▲▼を right:24px、漏斗を right:4px に置けば ラベル … ▲▼ 🔽 の一列になります。
デモ
ソートなし(入力順)
要点(共存レイアウト)
/* <th>はflex不可(table-cellが壊れる)。position:relative のまま右レーンを確保し両方を絶対配置 */
.tssgrid .tg-table thead th[data-c] { position: relative; padding-right: 46px; }
.ms-grp { position: absolute; right: 24px; top: 0; bottom: 0; } /* ソート▲▼ */
.tssgrid thead th .tg-filter-btn { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); } /* 漏斗を▲▼の右隣へ */
const grid = new TssGrid(host, {
headers, columns, data,
plugins: [ TssFilter.plugin() ], // ← フィルタUI(漏斗)
onHeaderRender(th, c) { /* ▲▼ を差し込む(multisort と同じ) */ },
onHeaderClick(c, e) { /* ▲▼ でソート / 本体で列選択 */ },
});