Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | // Types import { CommentDateGroupProps, CommentDateGroup, } from '@/components/CommentDateGroup'; // Utils import { combineClasses } from '@shared/utils'; // Styles import './styles/comment-date-group-list.css'; import { COMMENT_LIST_EMPTY_LABEL } from '@/constants'; export interface CommentDateGroupListProps { groups: CommentDateGroupProps[]; /** Forwarded to every group — controls which comment checkboxes are checked. */ selectedIds?: Set<string>; /** Forwarded to every group — controls which checkboxes show a loading spinner. */ loadingIds?: Set<string>; onToggleSelect?: (commentId: string) => void; emptyLabel?: string; className?: string; } export const CommentDateGroupList = ({ groups, selectedIds, loadingIds, onToggleSelect, emptyLabel = COMMENT_LIST_EMPTY_LABEL, className = '', }: CommentDateGroupListProps) => { const nonEmptyGroups = groups.filter((group) => group.items.length > 0); if (!nonEmptyGroups.length) { return <div className="comment-date-group-list-empty">{emptyLabel}</div>; } return ( <div className={combineClasses('comment-date-group-list-root', className)}> {nonEmptyGroups.map((group) => ( <CommentDateGroup key={group.date} {...group} selectedIds={selectedIds} loadingIds={loadingIds} onToggleSelect={onToggleSelect} /> ))} </div> ); }; |