cleanup and refactor
This commit is contained in:
1 parent
5f9db690a4
commit
73da8fb849
10 files changed
+91
-97
No files matched your search
+20
-23
@@ -2,10 +2,9 @@
|
||||
|
||||
import { $, esc, api } from './util.js';
|
||||
import { state, sortedCards, parseTags, tagChipHtml, getChildren, getRecent, getFavorites, isFavorite, SORT_MODES, SORT_ICONS, CARD_COLORS } from './state.js';
|
||||
import { stripMd, getTodos, firstImage, leadingImage } from './markdown.js';
|
||||
import { stripMd, getTodos, firstImage, leadingImage, renderMd, addCodeCopyButtons, formatTodoItems } from './markdown.js';
|
||||
import { pushReorder, pushCardEdit, pushBatch, snapshotCard } from './undo.js';
|
||||
import { getCalConfig } from './caldav.js';
|
||||
import { renderMd, addCodeCopyButtons, formatTodoItems } from './markdown.js';
|
||||
import { addProvider as addNotifProvider, render as renderNotifs } from './notifications.js';
|
||||
import { bindCheckboxes, bindDetailImageFullscreen } from './detail.js';
|
||||
|
||||
@@ -22,13 +21,11 @@ const boardPreviewTitle = $('board-preview-title');
|
||||
const boardPreviewColor = $('board-preview-color');
|
||||
const boardPreviewTags = $('board-preview-tags');
|
||||
const boardPreviewMeta = $('board-preview-meta');
|
||||
let boardSplitOpen = localStorage.getItem('hyprcrd-board-split') === '1';
|
||||
let boardPreviewCardId = null;
|
||||
let activeDragEl = null;
|
||||
let dragGhost = null;
|
||||
|
||||
// ── Multi-select ──
|
||||
const selectedIds = new Set();
|
||||
const selectedIds = state.selectedIds;
|
||||
const selectBar = $('select-bar');
|
||||
const selectCount = $('select-count');
|
||||
|
||||
@@ -263,8 +260,8 @@ export function updateSortUI() {
|
||||
|
||||
function showBoardPreview(cardId) {
|
||||
const card = state.cards.find(c => c.id == cardId);
|
||||
if (!card || !boardSplitOpen) return;
|
||||
boardPreviewCardId = cardId;
|
||||
if (!card || !state.boardSplitOpen) return;
|
||||
state.boardPreviewCardId = cardId;
|
||||
$('board-preview-empty')?.classList.add('hidden');
|
||||
$('board-preview-content')?.classList.remove('hidden');
|
||||
if (boardPreviewColor) boardPreviewColor.style.background = card.color;
|
||||
@@ -296,12 +293,12 @@ function showBoardPreview(cardId) {
|
||||
|
||||
function closeBoardPreview() {
|
||||
boardPreview?.classList.add('hidden');
|
||||
boardSplitOpen = false;
|
||||
state.boardSplitOpen = false;
|
||||
localStorage.setItem('hyprcrd-board-split', '0');
|
||||
const btn = $('board-split-toggle');
|
||||
if (btn) btn.classList.remove('text-t-accent');
|
||||
board.querySelectorAll('.board-card').forEach(el => el.classList.remove('preview-active'));
|
||||
boardPreviewCardId = null;
|
||||
state.boardPreviewCardId = null;
|
||||
resetBoardPreview();
|
||||
}
|
||||
|
||||
@@ -313,26 +310,26 @@ function resetBoardPreview() {
|
||||
}
|
||||
|
||||
function toggleBoardSplit() {
|
||||
boardSplitOpen = !boardSplitOpen;
|
||||
localStorage.setItem('hyprcrd-board-split', boardSplitOpen ? '1' : '0');
|
||||
boardPreview?.classList.toggle('hidden', !boardSplitOpen);
|
||||
state.boardSplitOpen = !state.boardSplitOpen;
|
||||
localStorage.setItem('hyprcrd-board-split', state.boardSplitOpen ? '1' : '0');
|
||||
boardPreview?.classList.toggle('hidden', !state.boardSplitOpen);
|
||||
const btn = $('board-split-toggle');
|
||||
if (btn) btn.classList.toggle('text-t-accent', boardSplitOpen);
|
||||
if (!boardSplitOpen) {
|
||||
if (btn) btn.classList.toggle('text-t-accent', state.boardSplitOpen);
|
||||
if (!state.boardSplitOpen) {
|
||||
board.querySelectorAll('.board-card').forEach(el => el.classList.remove('preview-active'));
|
||||
boardPreviewCardId = null;
|
||||
state.boardPreviewCardId = null;
|
||||
}
|
||||
}
|
||||
|
||||
$('board-split-toggle')?.addEventListener('click', toggleBoardSplit);
|
||||
$('board-preview-close')?.addEventListener('click', closeBoardPreview);
|
||||
$('board-preview-edit')?.addEventListener('click', () => {
|
||||
const card = state.cards.find(c => c.id == boardPreviewCardId);
|
||||
const card = state.cards.find(c => c.id == state.boardPreviewCardId);
|
||||
if (card) window._openModal(card);
|
||||
});
|
||||
|
||||
// Init split state
|
||||
if (boardSplitOpen) {
|
||||
if (state.boardSplitOpen) {
|
||||
boardPreview?.classList.remove('hidden');
|
||||
const btn = $('board-split-toggle');
|
||||
if (btn) btn.classList.add('text-t-accent');
|
||||
@@ -559,7 +556,7 @@ export function renderBoard() {
|
||||
}
|
||||
|
||||
board.querySelectorAll('.superview-item[data-id]').forEach(el => {
|
||||
el.addEventListener('click', () => { clearHover(); if (boardSplitOpen) showBoardPreview(el.dataset.id); else window._openDetail(el.dataset.id); });
|
||||
el.addEventListener('click', () => { clearHover(); if (state.boardSplitOpen) showBoardPreview(el.dataset.id); else window._openDetail(el.dataset.id); });
|
||||
el.addEventListener('dblclick', () => { clearHover(); const card = state.cards.find(c => c.id == el.dataset.id); if (card) window._openModal(card); });
|
||||
el.addEventListener('contextmenu', e => { e.preventDefault(); clearHover(); const card = state.cards.find(c => c.id == el.dataset.id); if (card) window._showContextMenu(e.clientX, e.clientY, card); });
|
||||
|
||||
@@ -645,10 +642,10 @@ export function renderBoard() {
|
||||
if (fc) fc.textContent = `${cards.length} card${cards.length !== 1 ? 's' : ''} · ${state.cards.length} total`;
|
||||
|
||||
// Refresh split preview if open
|
||||
if (boardSplitOpen && boardPreviewCardId) {
|
||||
const stillExists = state.cards.some(c => c.id == boardPreviewCardId);
|
||||
if (stillExists) showBoardPreview(boardPreviewCardId);
|
||||
else { boardPreviewCardId = null; resetBoardPreview(); }
|
||||
if (state.boardSplitOpen && state.boardPreviewCardId) {
|
||||
const stillExists = state.cards.some(c => c.id == state.boardPreviewCardId);
|
||||
if (stillExists) showBoardPreview(state.boardPreviewCardId);
|
||||
else { state.boardPreviewCardId = null; resetBoardPreview(); }
|
||||
}
|
||||
|
||||
// Notification banner
|
||||
@@ -912,7 +909,7 @@ function bindCardEvents() {
|
||||
if (clickTimer) return;
|
||||
clickTimer = setTimeout(() => {
|
||||
clickTimer = null;
|
||||
if (boardSplitOpen) { showBoardPreview(id); }
|
||||
if (state.boardSplitOpen) { showBoardPreview(id); }
|
||||
else if (localStorage.getItem('hyprcrd-click-action') === 'edit') {
|
||||
const card = state.cards.find(c => c.id == id);
|
||||
if (card) window._openModal(card);
|
||||
|
||||
Reference in new issue
Block a user