diff --git a/homework/homework.css b/homework/homework.css index a4de72d..ec34b6d 100644 --- a/homework/homework.css +++ b/homework/homework.css @@ -200,6 +200,108 @@ body { background-color: var(--card-card); } +/* Checkbox oszlop stílusai */ +.checkbox-header { + width: 50px; + text-align: center; + font-size: 16px; +} + +.checkbox-cell { + width: 50px; + text-align: center; + padding: 8px !important; +} + +.homework-checkbox { + width: 20px; + height: 20px; + cursor: pointer; + appearance: none; + border: 2px solid var(--accent-30); + border-radius: 4px; + background-color: var(--card-card); + position: relative; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; +} + +.homework-checkbox:hover { + border-color: var(--accent); + background-color: var(--accent-15); + transform: scale(1.05); +} + +.homework-checkbox:checked { + background-color: var(--accent); + border-color: var(--accent); +} + +.homework-checkbox:checked::after { + content: '✓'; + color: white; + font-size: 14px; + font-weight: bold; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.homework-checkbox:focus { + outline: 2px solid var(--accent); + outline-offset: 2px; +} + +.homework-checkbox:active { + transform: scale(0.95); +} + +/* Megjelölt házi feladatok stílusai */ +.table-row.user-completed { + opacity: 0.6; + background-color: var(--accent-15) !important; +} + +.table-row.user-completed .table-cell { + color: var(--text-secondary); +} + +.table-row.user-completed .status-badge.completed { + background-color: var(--success); + color: white; +} + + + +/* Mobil nézet checkbox stílusai */ +@media (max-width: 768px) { + .checkbox-header { + width: 40px; + font-size: 14px; + } + + .checkbox-cell { + width: 40px; + padding: 6px !important; + } + + .homework-checkbox { + width: 18px; + height: 18px; + } + + .homework-checkbox:checked::after { + font-size: 12px; + } + + .table-row.user-completed { + opacity: 0.7; + } +} + .filter-content { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); diff --git a/homework/homework.js b/homework/homework.js index 989974d..c01a2d2 100644 --- a/homework/homework.js +++ b/homework/homework.js @@ -119,17 +119,10 @@ function isTomorrow(dateStr) { async function transformHomeworkPage() { const { basicData, homeworkItems, groupedHomework } = await collectHomeworkData(); - - // Biztonságos DOM létrehozás innerHTML helyett document.body.innerHTML = ''; - - // Fő konténer létrehozása const kretaContainer = document.createElement('div'); kretaContainer.className = 'kreta-container'; - - // Header hozzáadása const headerDiv = document.createElement('div'); - // Biztonságos HTML parsing DOMParser használatával const parser = new DOMParser(); const headerDoc = parser.parseFromString(createTemplate.header(), 'text/html'); const headerContent = headerDoc.body; @@ -137,12 +130,9 @@ async function transformHomeworkPage() { headerDiv.appendChild(headerContent.firstChild); } kretaContainer.appendChild(headerDiv); - - // Main elem létrehozása const main = document.createElement('main'); main.className = 'kreta-main'; - - // Filter card létrehozása + const filterCard = document.createElement('div'); filterCard.className = 'filter-card'; @@ -154,8 +144,7 @@ async function transformHomeworkPage() { const filterContent = document.createElement('div'); filterContent.className = 'filter-content'; - - // Subject filter + const subjectGroup = document.createElement('div'); subjectGroup.className = 'filter-group'; const subjectLabel = document.createElement('label'); @@ -179,8 +168,7 @@ async function transformHomeworkPage() { subjectGroup.appendChild(subjectLabel); subjectGroup.appendChild(subjectSelect); - - // Teacher filter + const teacherGroup = document.createElement('div'); teacherGroup.className = 'filter-group'; const teacherLabel = document.createElement('label'); @@ -204,8 +192,7 @@ async function transformHomeworkPage() { teacherGroup.appendChild(teacherLabel); teacherGroup.appendChild(teacherSelect); - - // Deadline filter + const deadlineGroup = document.createElement('div'); deadlineGroup.className = 'filter-group'; const deadlineLabel = document.createElement('label'); @@ -236,8 +223,7 @@ async function transformHomeworkPage() { filterCard.appendChild(filterHeader); filterCard.appendChild(filterContent); - - // Stats overview + const statsOverview = document.createElement('div'); statsOverview.className = 'stats-overview'; statsOverview.id = 'statsOverview'; @@ -266,8 +252,7 @@ async function transformHomeworkPage() { statCard.appendChild(statLabel); statsOverview.appendChild(statCard); }); - - // Homework container + const homeworkContainer = document.createElement('div'); homeworkContainer.className = 'homework-container'; @@ -280,6 +265,7 @@ async function transformHomeworkPage() { const headerRow = document.createElement('tr'); const headers = [ + '✓', LanguageManager.t('homework.due_date'), LanguageManager.t('homework.subject'), LanguageManager.t('homework.description'), @@ -287,9 +273,12 @@ async function transformHomeworkPage() { LanguageManager.t('homework.status') ]; - headers.forEach(headerText => { + headers.forEach((headerText, index) => { const th = document.createElement('th'); th.textContent = headerText; + if (index === 0) { + th.className = 'checkbox-header'; + } headerRow.appendChild(th); }); @@ -297,12 +286,9 @@ async function transformHomeworkPage() { const tbody = document.createElement('tbody'); tbody.id = 'homeworkTableBody'; - - // Biztonságos HTML tartalom hozzáadása const homeworkHTML = generateHomeworkHTML(homeworkItems); if (homeworkHTML.trim()) { - // Biztonságos HTML parsing DOMParser használatával - table kontextusban const parser = new DOMParser(); const doc = parser.parseFromString(`