diff --git a/static/trip.html b/static/trip.html
index cb6f39a..f9d17f4 100644
--- a/static/trip.html
+++ b/static/trip.html
@@ -74,8 +74,6 @@
.room-label { font-weight: bold; font-size: 0.8rem; margin-bottom: 0.2rem; }
.solver-score { font-size: 0.8rem; margin-top: 0.3rem; color: var(--wa-color-neutral-500); }
.swap-group { border-left: 2px solid var(--wa-color-brand-50); padding-left: 0.5rem; margin-bottom: 0.5rem; }
- .swap-group-nav { display: flex; align-items: center; gap: 0.3rem; margin-bottom: 0.3rem; }
- .swap-group-label { font-size: 0.8rem; color: var(--wa-color-neutral-500); min-width: 3rem; text-align: center; }
.divider { border: none; border-top: 1px solid #909090; margin: 0.75rem 0; }
.pref-rows { display: grid; grid-template-columns: auto 1fr; }
.pref-row { display: grid; grid-template-columns: subgrid; grid-column: 1 / -1; align-items: center; gap: 0.5rem; padding: 0.3rem 0.4rem; }
diff --git a/static/trip.js b/static/trip.js
index 7ba4a1c..5ce9d54 100644
--- a/static/trip.js
+++ b/static/trip.js
@@ -541,55 +541,33 @@ document.getElementById('solve-btn').addEventListener('click', async () => {
renderRoomCard(room, container, roomNum++, true);
}
- for (const group of swapGroups) {
+ for (let gi = 0; gi < swapGroups.length; gi++) {
+ const group = swapGroups[gi];
+ const prefix = String.fromCharCode('A'.charCodeAt(0) + gi);
const section = document.createElement('div');
section.className = 'swap-group';
-
- let current = 0;
- const roomsDiv = document.createElement('div');
const baseRoomNum = roomNum;
- const render = () => {
- roomsDiv.innerHTML = '';
+ const tabGroup = document.createElement('wa-tab-group');
+ for (let ci = 0; ci < group.configs.length; ci++) {
+ const tab = document.createElement('wa-tab');
+ tab.slot = 'nav';
+ tab.panel = 'sg-' + gi + '-' + ci;
+ tab.textContent = prefix + (ci + 1);
+ tabGroup.appendChild(tab);
+ }
+ for (let ci = 0; ci < group.configs.length; ci++) {
+ const panel = document.createElement('wa-tab-panel');
+ panel.name = 'sg-' + gi + '-' + ci;
let rn = baseRoomNum;
- for (const room of group.configs[current]) {
- renderRoomCard(room, roomsDiv, rn++, false);
+ for (const room of group.configs[ci]) {
+ renderRoomCard(room, panel, rn++, false);
}
- };
+ tabGroup.appendChild(panel);
+ }
- const nav = document.createElement('div');
- nav.className = 'swap-group-nav';
- const prevBtn = document.createElement('wa-button');
- prevBtn.size = 'small';
- prevBtn.variant = 'text';
- prevBtn.textContent = '\u25c0';
- const lbl = document.createElement('span');
- lbl.className = 'swap-group-label';
- lbl.textContent = '1 of ' + group.configs.length;
- const nextBtn = document.createElement('wa-button');
- nextBtn.size = 'small';
- nextBtn.variant = 'text';
- nextBtn.textContent = '\u25b6';
-
- prevBtn.addEventListener('click', () => {
- current = (current - 1 + group.configs.length) % group.configs.length;
- lbl.textContent = (current + 1) + ' of ' + group.configs.length;
- render();
- });
- nextBtn.addEventListener('click', () => {
- current = (current + 1) % group.configs.length;
- lbl.textContent = (current + 1) + ' of ' + group.configs.length;
- render();
- });
-
- nav.appendChild(prevBtn);
- nav.appendChild(lbl);
- nav.appendChild(nextBtn);
- section.appendChild(nav);
- section.appendChild(roomsDiv);
+ section.appendChild(tabGroup);
container.appendChild(section);
-
- render();
roomNum += group.configs[0].length;
}
}