0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-18 02:21:47 -05:00

Initial hover styling for TableRow

This commit is contained in:
Daniël van der Winden 2024-10-14 16:21:02 +02:00
parent 9a680bd3fb
commit 1504163925

View file

@ -1,7 +1,7 @@
import clsx from 'clsx';
import React, {forwardRef} from 'react';
export const tableRowHoverBgClasses = '-mx-4 px-4 hover:bg-grey-50 dark:hover:bg-grey-950';
export const tableRowHoverBgClasses = 'before:absolute before:inset-x-[-16px] before:top-0 before:bottom-0 before:bg-grey-50 before:opacity-0 hover:before:opacity-100 before:rounded-md before:transition-opacity dark:before:bg-grey-950';
export interface TableRowProps {
id?: string;
@ -28,23 +28,25 @@ const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRo
separator = (separator === undefined) ? true : separator;
const tableRowClasses = clsx(
'group/table-row',
'group/table-row relative',
bgOnHover && tableRowHoverBgClasses,
onClick && 'cursor-pointer',
separator ? 'border-b border-grey-100 last-of-type:border-b-transparent hover:border-grey-200 dark:border-grey-950 dark:hover:border-grey-900' : 'border-y border-none first-of-type:hover:border-t-transparent',
separator ? 'border-b border-grey-100 last-of-type:border-b-transparent dark:border-grey-950' : 'border-y border-none first-of-type:hover:border-t-transparent',
className
);
return (
<tr ref={ref} className={tableRowClasses} data-testid={testId} id={id} style={style} onClick={handleClick}>
{children}
{action &&
<td className={`w-[1%] whitespace-nowrap p-0 hover:cursor-pointer`}>
<div className={`visible flex items-center justify-end py-3 pr-6 ${hideActions ? 'group-hover/table-row:visible md:invisible' : ''}`}>
{action}
</div>
</td>
}
<td className="p-0" colSpan={1000}>
<div className="relative z-10 flex items-center">
<div className="grow py-2">{children}</div>
{action &&
<div className={`flex items-center justify-end p-2${hideActions ? 'opacity-0 group-hover/table-row:opacity-100' : ''}`}>
{action}
</div>
}
</div>
</td>
</tr>
);
});