/
githubmirror
/
tabler
Обзор
Документация
Войти
/
githubmirror
/
tabler
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
shared/components/parts/Tasks.astro
129 строк
5 KB
Paweł Kuna
Narrow component prop types, remove unused props and dead code (#2838)
10 авг 2026, 00:14
Не верифицирован
10 авг 2026, 00:14
4f7beec
Код
Авторство
О чём код?
--- // task['due-date'] is undefined (field is due_date) — due-date branch never renders. // Avatar offset uses task['users-offset'] (hyphenated key). import Icon from '@ui/Icon.astro' import AvatarList from '@ui/AvatarList.astro' import CardTitle from '@ui/CardTitle.astro' import tasksData from '@data/tasks.json' interface Column { name: string tasks: Record<string, any>[] } interface Props { class?: string } const { class: className } = Astro.props const data = tasksData as unknown as { columns: Column[] } --- <div class={`row${className ? ` ${className}` : ''}`}> { data.columns.map((column) => ( <div class="col-12 col-md-6 col-lg"> <h2 class="mb-3">{column.name}</h2> <div class="mb-4"> <div class="row row-cards"> {column.tasks.map((task) => ( <div class="col-12"> <div class="card card-sm"> {task.color && <div class={`card-status-top bg-${task.color}`} />} {task.starred && ( <div class="ribbon ribbon-top ribbon-bookmark bg-yellow"> <Icon name="star" /> </div> )} <div class="card-body"> <CardTitle>{task.name}</CardTitle> {/* Description may contain markup (e.g. <a>#tag</a>) — rendered with set:html */} {task.description && <div class="text-secondary" set:html={task.description} />} {task.image && ( <div class="ratio ratio-16x9"> <img src={`./${task.image}`} class="rounded object-cover" alt={task.name} /> </div> )} <div class="mt-4"> <div class="row"> <div class="col">{task.users && <AvatarList stacked={true} size="xs" offset={task['users-offset'] ?? 0} limit={task.users} />}</div> {task['due-date'] && ( <div class="col-auto"> <a href="#" class="link-warning"> <Icon name="calendar" /> {task['due-date']} </a> </div> )} <div class="col-auto text-secondary"> <button class={`switch-icon switch-icon-scale${task.favorite ? ' active' : ''}`} data-bs-toggle="switch-icon"> <span class="switch-icon-a text-muted"> <Icon name="heart" /> </span> <span class="switch-icon-b text-red"> <Icon name="heart" class="icon-filled" /> </span> </button> {task.likes ? task.likes : ''} </div> {task.subtasks && ( <div class="col-auto"> <a href="#" class="link-secondary"> <Icon name="activity" /> 1/{task.subtasks.length} </a> </div> )} {task.comments && ( <div class="col-auto"> <a href="#" class="link-secondary"> <Icon name="message" /> {task.comments} </a> </div> )} <div class="col-auto"> <a href="#" class="link-secondary"> <Icon name="share" /> </a> </div> </div> </div> {task.subtasks && ( <div class="divide-y-2 mt-4"> {task.subtasks.map((subtask: { name: string; done?: boolean }) => ( <div> {subtask.done ? ( <Fragment> <Icon name="check" color="muted" /> <span class="text-secondary text-decoration-line-through">{subtask.name}</span> </Fragment> ) : ( <Fragment> <Icon name="check" color="green" /> {subtask.name} </Fragment> )} </div> ))} </div> )} </div> </div> </div> ))} </div> </div> </div> )) } </div>