mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-17 06:00:20 +02:00
add configuration for column/row borders
This commit is contained in:
@@ -140,6 +140,14 @@
|
|||||||
color: var(--theme-colors-foreground-muted);
|
color: var(--theme-colors-foreground-muted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.row .track-cell-with-vertical-border {
|
||||||
|
border-right: 1px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row .track-cell-vertical-border-visible {
|
||||||
|
border-right-color: var(--theme-colors-border);
|
||||||
|
}
|
||||||
|
|
||||||
.row .track-cell-image {
|
.row .track-cell-image {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-self: stretch;
|
align-self: stretch;
|
||||||
@@ -164,6 +172,14 @@
|
|||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.track-row.track-row-with-horizontal-border {
|
||||||
|
border-top: 1px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.track-row.track-row-horizontal-border-visible {
|
||||||
|
border-top-color: var(--theme-colors-border);
|
||||||
|
}
|
||||||
|
|
||||||
.track-row.track-row-hover-highlight-enabled {
|
.track-row.track-row-hover-highlight-enabled {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,9 @@ interface RowData {
|
|||||||
columnWidthPercents: number[];
|
columnWidthPercents: number[];
|
||||||
controls?: ItemControls;
|
controls?: ItemControls;
|
||||||
data: unknown[];
|
data: unknown[];
|
||||||
|
enableHorizontalBorders: boolean;
|
||||||
enableRowHoverHighlight: boolean;
|
enableRowHoverHighlight: boolean;
|
||||||
|
enableVerticalBorders: boolean;
|
||||||
getItem?: (index: number) => unknown;
|
getItem?: (index: number) => unknown;
|
||||||
internalState: ItemListStateActions;
|
internalState: ItemListStateActions;
|
||||||
isMutatingFavorite: boolean;
|
isMutatingFavorite: boolean;
|
||||||
@@ -68,7 +70,9 @@ interface TrackRowProps {
|
|||||||
columns: ItemTableListColumnConfig[];
|
columns: ItemTableListColumnConfig[];
|
||||||
columnWidthPercents: number[];
|
columnWidthPercents: number[];
|
||||||
controls?: ItemControls;
|
controls?: ItemControls;
|
||||||
|
enableHorizontalBorders: boolean;
|
||||||
enableRowHoverHighlight: boolean;
|
enableRowHoverHighlight: boolean;
|
||||||
|
enableVerticalBorders: boolean;
|
||||||
internalState: ItemListStateActions;
|
internalState: ItemListStateActions;
|
||||||
isMutatingFavorite: boolean;
|
isMutatingFavorite: boolean;
|
||||||
onFavoriteClick: (song: Song) => void;
|
onFavoriteClick: (song: Song) => void;
|
||||||
@@ -85,7 +89,9 @@ const TrackRow = memo(
|
|||||||
columns,
|
columns,
|
||||||
columnWidthPercents,
|
columnWidthPercents,
|
||||||
controls,
|
controls,
|
||||||
|
enableHorizontalBorders,
|
||||||
enableRowHoverHighlight,
|
enableRowHoverHighlight,
|
||||||
|
enableVerticalBorders,
|
||||||
internalState,
|
internalState,
|
||||||
isMutatingFavorite,
|
isMutatingFavorite,
|
||||||
onFavoriteClick,
|
onFavoriteClick,
|
||||||
@@ -189,11 +195,14 @@ const TrackRow = memo(
|
|||||||
<div
|
<div
|
||||||
className={clsx(styles.trackRow, {
|
className={clsx(styles.trackRow, {
|
||||||
[styles.trackRowDragging]: isDragging,
|
[styles.trackRowDragging]: isDragging,
|
||||||
|
[styles.trackRowHorizontalBorderVisible]:
|
||||||
|
enableHorizontalBorders && rowIndex > 0,
|
||||||
[styles.trackRowHoverHighlightEnabled]: enableRowHoverHighlight,
|
[styles.trackRowHoverHighlightEnabled]: enableRowHoverHighlight,
|
||||||
[styles.trackRowSelected]: isSelected,
|
[styles.trackRowSelected]: isSelected,
|
||||||
[styles.trackRowSizeCompact]: size === 'compact',
|
[styles.trackRowSizeCompact]: size === 'compact',
|
||||||
[styles.trackRowSizeDefault]: size === 'default',
|
[styles.trackRowSizeDefault]: size === 'default',
|
||||||
[styles.trackRowSizeLarge]: size === 'large',
|
[styles.trackRowSizeLarge]: size === 'large',
|
||||||
|
[styles.trackRowWithHorizontalBorder]: rowIndex > 0,
|
||||||
})}
|
})}
|
||||||
onClick={handleRowClick}
|
onClick={handleRowClick}
|
||||||
onMouseEnter={() => setIsRowHovered(true)}
|
onMouseEnter={() => setIsRowHovered(true)}
|
||||||
@@ -237,11 +246,15 @@ const TrackRow = memo(
|
|||||||
'\u00A0'
|
'\u00A0'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const isLastColumn = colIndex === columns.length - 1;
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={clsx(styles.trackCell, {
|
className={clsx(styles.trackCell, {
|
||||||
[styles.trackCellImage]: isImageColumn,
|
[styles.trackCellImage]: isImageColumn,
|
||||||
[styles.trackCellMuted]: !isTitleColumn,
|
[styles.trackCellMuted]: !isTitleColumn,
|
||||||
|
[styles.trackCellVerticalBorderVisible]:
|
||||||
|
enableVerticalBorders && !isLastColumn,
|
||||||
|
[styles.trackCellWithVerticalBorder]: !isLastColumn,
|
||||||
})}
|
})}
|
||||||
key={col.id}
|
key={col.id}
|
||||||
role="cell"
|
role="cell"
|
||||||
@@ -265,7 +278,9 @@ const RowContent = memo(
|
|||||||
columnWidthPercents,
|
columnWidthPercents,
|
||||||
controls,
|
controls,
|
||||||
data,
|
data,
|
||||||
|
enableHorizontalBorders,
|
||||||
enableRowHoverHighlight,
|
enableRowHoverHighlight,
|
||||||
|
enableVerticalBorders,
|
||||||
getItem,
|
getItem,
|
||||||
index,
|
index,
|
||||||
internalState,
|
internalState,
|
||||||
@@ -392,7 +407,9 @@ const RowContent = memo(
|
|||||||
columns={trackColumns}
|
columns={trackColumns}
|
||||||
columnWidthPercents={columnWidthPercents}
|
columnWidthPercents={columnWidthPercents}
|
||||||
controls={controls}
|
controls={controls}
|
||||||
|
enableHorizontalBorders={enableHorizontalBorders}
|
||||||
enableRowHoverHighlight={enableRowHoverHighlight}
|
enableRowHoverHighlight={enableRowHoverHighlight}
|
||||||
|
enableVerticalBorders={enableVerticalBorders}
|
||||||
internalState={internalState}
|
internalState={internalState}
|
||||||
isMutatingFavorite={isMutatingFavorite}
|
isMutatingFavorite={isMutatingFavorite}
|
||||||
key={song.id}
|
key={song.id}
|
||||||
@@ -411,7 +428,9 @@ const RowContent = memo(
|
|||||||
prev.index === next.index &&
|
prev.index === next.index &&
|
||||||
prev.data === next.data &&
|
prev.data === next.data &&
|
||||||
prev.columnWidthPercents === next.columnWidthPercents &&
|
prev.columnWidthPercents === next.columnWidthPercents &&
|
||||||
|
prev.enableHorizontalBorders === next.enableHorizontalBorders &&
|
||||||
prev.enableRowHoverHighlight === next.enableRowHoverHighlight &&
|
prev.enableRowHoverHighlight === next.enableRowHoverHighlight &&
|
||||||
|
prev.enableVerticalBorders === next.enableVerticalBorders &&
|
||||||
prev.getItem === next.getItem &&
|
prev.getItem === next.getItem &&
|
||||||
prev.internalState === next.internalState &&
|
prev.internalState === next.internalState &&
|
||||||
prev.isMutatingFavorite === next.isMutatingFavorite &&
|
prev.isMutatingFavorite === next.isMutatingFavorite &&
|
||||||
@@ -508,6 +527,8 @@ export const ItemDetailList = ({
|
|||||||
}, [tableConfig?.columns]);
|
}, [tableConfig?.columns]);
|
||||||
const trackTableSize = tableConfig?.size ?? 'default';
|
const trackTableSize = tableConfig?.size ?? 'default';
|
||||||
const enableRowHoverHighlight = tableConfig?.enableRowHoverHighlight ?? true;
|
const enableRowHoverHighlight = tableConfig?.enableRowHoverHighlight ?? true;
|
||||||
|
const enableHorizontalBorders = tableConfig?.enableHorizontalBorders ?? false;
|
||||||
|
const enableVerticalBorders = tableConfig?.enableVerticalBorders ?? false;
|
||||||
|
|
||||||
const columnWidthPercents = useMemo(() => {
|
const columnWidthPercents = useMemo(() => {
|
||||||
const total = trackColumns.reduce((sum, c) => sum + c.width, 0);
|
const total = trackColumns.reduce((sum, c) => sum + c.width, 0);
|
||||||
@@ -546,7 +567,9 @@ export const ItemDetailList = ({
|
|||||||
columnWidthPercents,
|
columnWidthPercents,
|
||||||
controls,
|
controls,
|
||||||
data: dataSource,
|
data: dataSource,
|
||||||
|
enableHorizontalBorders,
|
||||||
enableRowHoverHighlight,
|
enableRowHoverHighlight,
|
||||||
|
enableVerticalBorders,
|
||||||
getItem,
|
getItem,
|
||||||
internalState,
|
internalState,
|
||||||
isMutatingFavorite,
|
isMutatingFavorite,
|
||||||
@@ -559,7 +582,9 @@ export const ItemDetailList = ({
|
|||||||
columnWidthPercents,
|
columnWidthPercents,
|
||||||
controls,
|
controls,
|
||||||
dataSource,
|
dataSource,
|
||||||
|
enableHorizontalBorders,
|
||||||
enableRowHoverHighlight,
|
enableRowHoverHighlight,
|
||||||
|
enableVerticalBorders,
|
||||||
getItem,
|
getItem,
|
||||||
internalState,
|
internalState,
|
||||||
isMutatingFavorite,
|
isMutatingFavorite,
|
||||||
|
|||||||
Reference in New Issue
Block a user