list view: single column with date / bucket / tags, larger title
Drops the multi-column compact list in favour of a one-row-per-card layout. Each row: color dot · optional cal/fav icon · title (flex-grows + ellipsis) · up-to-4 tag chips with overflow indicator · bucket name + folder icon · right-aligned date column. Date column picks (in order): due_date → leading YYYY-MM-DD in the title → updated_at/created_at. Termin/geburtstag tags are filtered out of the chip list since they're already represented by the icon + dot. Title font goes from 11px → 14px so the list reads more like a real list than a label cloud. Rows have 8px vertical padding, hover background, and a thin bottom-border. Whole grid is capped at 1100px and centered. chore: bump version to 0.9.4 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
08f73dfd19
commit
7f08dc1a0d
3 files changed
+73
-10
No files matched your search
@@ -521,10 +521,9 @@ export function renderBoard() {
|
||||
const inGroup = !!state.activeGroup;
|
||||
|
||||
if (state.superView) {
|
||||
// Compact multi-column list view — override board grid
|
||||
// Single-column list view — override board grid
|
||||
board.style.display = 'block';
|
||||
const cols = cards.length <= 20 ? 2 : cards.length <= 50 ? 3 : cards.length <= 100 ? 4 : 5;
|
||||
board.innerHTML = `<div class="superview-grid" style="column-count:${cols};">` + cards.map(c => {
|
||||
board.innerHTML = `<div class="superview-grid">` + cards.map(c => {
|
||||
const tags = parseTags(c);
|
||||
const isTermin = tags.includes('termin') || tags.includes('geburtstag');
|
||||
let calCfg = null;
|
||||
@@ -532,10 +531,26 @@ export function renderBoard() {
|
||||
const dotColor = calCfg?.color || c.color;
|
||||
const icon = isTermin ? (calCfg?.icon || 'calendar-dots') : (isFavorite(c.id) ? 'star' : null);
|
||||
const iconColor = isTermin ? dotColor : (isFavorite(c.id) ? '#fbbf24' : 'var(--t-dim)');
|
||||
// Date column: due_date if set, else date prefix in title, else updated/created
|
||||
const dateStr = c.due_date
|
||||
|| ((c.title || '').match(/^\d{4}-\d{2}-\d{2}/)?.[0])
|
||||
|| (c.updated_at || c.created_at || '').substring(0, 10);
|
||||
// Tag chips (excluding termin/geburtstag — those are already
|
||||
// represented by the icon + dot on the left)
|
||||
const visibleTags = tags.filter(t => t !== 'termin' && t !== 'geburtstag');
|
||||
const tagsHtml = visibleTags.length
|
||||
? `<span class="superview-tags">${visibleTags.slice(0, 4).map(t => `<span class="superview-tag">#${esc(t)}</span>`).join('')}${visibleTags.length > 4 ? `<span class="superview-tag superview-tag-more">+${visibleTags.length - 4}</span>` : ''}</span>`
|
||||
: '';
|
||||
const bucketHtml = c.bucket_name
|
||||
? `<span class="superview-bucket"><i class="ph ph-folder"></i>${esc(c.bucket_name)}</span>`
|
||||
: '';
|
||||
return `<div class="superview-item" data-id="${c.id}">
|
||||
<span class="superview-dot" style="background:${dotColor}"></span>
|
||||
${icon ? `<i class="ph ph-${icon} superview-icon" style="color:${iconColor}"></i>` : ''}
|
||||
<span class="superview-title">${esc(c.title)}</span>
|
||||
${tagsHtml}
|
||||
${bucketHtml}
|
||||
<span class="superview-date">${dateStr}</span>
|
||||
</div>`;
|
||||
}).join('') + '</div>';
|
||||
|
||||
|
||||
Reference in new issue
Block a user