diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json
index 00e744d0d..990c6cc47 100644
--- a/src/i18n/locales/en.json
+++ b/src/i18n/locales/en.json
@@ -820,7 +820,8 @@
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"title": "title",
- "trackNumber": "track"
+ "trackNumber": "track",
+ "owner": "owner"
},
"config": {
"general": {
diff --git a/src/renderer/components/item-list/item-table-list/columns/actions-column.tsx b/src/renderer/components/item-list/item-table-list/columns/actions-column.tsx
new file mode 100644
index 000000000..73b1fbde2
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/actions-column.tsx
@@ -0,0 +1,19 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { Icon } from '/@/shared/components/icon/icon';
+
+export const ActionsColumn = (props: ItemTableListInnerColumn) => {
+ const row: any = (props.data as (any | undefined)[])[props.rowIndex];
+
+ if (row !== undefined) {
+ return (
+
+
+
+ );
+ }
+
+ return ;
+};
diff --git a/src/renderer/components/item-list/item-table-list/columns/count-column.tsx b/src/renderer/components/item-list/item-table-list/columns/count-column.tsx
new file mode 100644
index 000000000..d93871b15
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/count-column.tsx
@@ -0,0 +1,23 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnTextContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { Skeleton } from '/@/shared/components/skeleton/skeleton';
+
+export const CountColumn = (props: ItemTableListInnerColumn) => {
+ const row: number | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'number') {
+ return (
+ {row.toLocaleString()}
+ );
+ }
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/components/item-list/item-table-list/columns/date-column.tsx b/src/renderer/components/item-list/item-table-list/columns/date-column.tsx
new file mode 100644
index 000000000..0f3b933d7
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/date-column.tsx
@@ -0,0 +1,50 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnTextContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { formatDateAbsolute, formatDateRelative } from '/@/renderer/utils/format';
+import { Skeleton } from '/@/shared/components/skeleton/skeleton';
+
+export const DateColumn = (props: ItemTableListInnerColumn) => {
+ const row: string | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'string' && row) {
+ return (
+
+ {formatDateAbsolute(row)}
+
+ );
+ }
+
+ return (
+
+
+
+ );
+};
+
+export const RelativeDateColumn = (props: ItemTableListInnerColumn) => {
+ const row: string | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'string') {
+ return (
+
+ {formatDateRelative(row)}
+
+ );
+ }
+
+ if (row === null) {
+ return ;
+ }
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/components/item-list/item-table-list/columns/default-column.tsx b/src/renderer/components/item-list/item-table-list/columns/default-column.tsx
index 7c3d31d53..158a41350 100644
--- a/src/renderer/components/item-list/item-table-list/columns/default-column.tsx
+++ b/src/renderer/components/item-list/item-table-list/columns/default-column.tsx
@@ -1,6 +1,6 @@
import {
ItemTableListInnerColumn,
- TableColumnContainer,
+ TableColumnTextContainer,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { Skeleton } from '/@/shared/components/skeleton/skeleton';
@@ -10,16 +10,16 @@ export const DefaultColumn = (props: ItemTableListInnerColumn) => {
];
if (typeof row === 'string') {
- return {row};
+ return {row};
}
if (typeof row === 'undefined') {
return (
-
+
-
+
);
}
- return null;
+ return ;
};
diff --git a/src/renderer/components/item-list/item-table-list/columns/duration-column.tsx b/src/renderer/components/item-list/item-table-list/columns/duration-column.tsx
index a663834c5..a0e807b2f 100644
--- a/src/renderer/components/item-list/item-table-list/columns/duration-column.tsx
+++ b/src/renderer/components/item-list/item-table-list/columns/duration-column.tsx
@@ -2,7 +2,7 @@ import formatDuration from 'format-duration';
import {
ItemTableListInnerColumn,
- TableColumnContainer,
+ TableColumnTextContainer,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { Skeleton } from '/@/shared/components/skeleton/skeleton';
@@ -12,12 +12,14 @@ export const DurationColumn = (props: ItemTableListInnerColumn) => {
];
if (typeof row === 'number') {
- return {formatDuration(row)};
+ return (
+ {formatDuration(row)}
+ );
}
return (
-
+
-
+
);
};
diff --git a/src/renderer/components/item-list/item-table-list/columns/favorite-column.tsx b/src/renderer/components/item-list/item-table-list/columns/favorite-column.tsx
new file mode 100644
index 000000000..6bf6fd2c4
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/favorite-column.tsx
@@ -0,0 +1,21 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { Icon } from '/@/shared/components/icon/icon';
+
+export const FavoriteColumn = (props: ItemTableListInnerColumn) => {
+ const row: boolean | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'boolean') {
+ return (
+
+
+
+ );
+ }
+
+ return ;
+};
diff --git a/src/renderer/components/item-list/item-table-list/columns/genre-column.tsx b/src/renderer/components/item-list/item-table-list/columns/genre-column.tsx
index 86ebea4c2..3c8e65c49 100644
--- a/src/renderer/components/item-list/item-table-list/columns/genre-column.tsx
+++ b/src/renderer/components/item-list/item-table-list/columns/genre-column.tsx
@@ -1,21 +1,47 @@
import {
ItemTableListInnerColumn,
TableColumnContainer,
+ TableColumnTextContainer,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { Badge } from '/@/shared/components/badge/badge';
+import { Group } from '/@/shared/components/group/group';
+import { Skeleton } from '/@/shared/components/skeleton/skeleton';
import { Genre } from '/@/shared/types/domain-types';
+import { stringToColor } from '/@/shared/utils/string-to-color';
export const GenreColumn = (props: ItemTableListInnerColumn) => {
const row: Genre[] | undefined = (props.data as (Genre[] | undefined)[])[props.rowIndex]?.[
props.columns[props.columnIndex].id
];
+ const genres = (row || []).map((genre) => {
+ const { color, isLight } = stringToColor(genre.name);
+ return { ...genre, color, isLight };
+ });
+
if (Array.isArray(row)) {
return (
- {row.map((genre) => genre?.name).join(', ')}
+
+ {genres.map((genre) => (
+
+ {genre.name}
+
+ ))}
+
);
}
- return null;
+ return (
+
+
+
+ );
};
diff --git a/src/renderer/components/item-list/item-table-list/columns/image-column.tsx b/src/renderer/components/item-list/item-table-list/columns/image-column.tsx
index 8cec634ba..94e376a33 100644
--- a/src/renderer/components/item-list/item-table-list/columns/image-column.tsx
+++ b/src/renderer/components/item-list/item-table-list/columns/image-column.tsx
@@ -2,7 +2,7 @@ import styles from './image-column.module.css';
import {
ItemTableListInnerColumn,
- TableColumnContainer,
+ TableColumnTextContainer,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { Image } from '/@/shared/components/image/image';
import { Skeleton } from '/@/shared/components/skeleton/skeleton';
@@ -14,15 +14,15 @@ export const ImageColumn = (props: ItemTableListInnerColumn) => {
if (typeof row === 'string') {
return (
-
+
-
+
);
}
return (
-
+
-
+
);
};
diff --git a/src/renderer/components/item-list/item-table-list/columns/name-column.tsx b/src/renderer/components/item-list/item-table-list/columns/name-column.tsx
index 99fef4e3c..c8e0bf9eb 100644
--- a/src/renderer/components/item-list/item-table-list/columns/name-column.tsx
+++ b/src/renderer/components/item-list/item-table-list/columns/name-column.tsx
@@ -1,6 +1,6 @@
import {
ItemTableListInnerColumn,
- TableColumnContainer,
+ TableColumnTextContainer,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { Skeleton } from '/@/shared/components/skeleton/skeleton';
@@ -10,12 +10,12 @@ export const NameColumn = (props: ItemTableListInnerColumn) => {
];
if (typeof row === 'string') {
- return {row};
+ return {row};
}
return (
-
+
-
+
);
};
diff --git a/src/renderer/components/item-list/item-table-list/columns/numeric-column.tsx b/src/renderer/components/item-list/item-table-list/columns/numeric-column.tsx
new file mode 100644
index 000000000..84cc8c21d
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/numeric-column.tsx
@@ -0,0 +1,21 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnTextContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { Skeleton } from '/@/shared/components/skeleton/skeleton';
+
+export const NumericColumn = (props: ItemTableListInnerColumn) => {
+ const row: number | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'number') {
+ return {row};
+ }
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/components/item-list/item-table-list/columns/path-column.tsx b/src/renderer/components/item-list/item-table-list/columns/path-column.tsx
new file mode 100644
index 000000000..ec4ba0b0c
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/path-column.tsx
@@ -0,0 +1,24 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnTextContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { Skeleton } from '/@/shared/components/skeleton/skeleton';
+
+export const PathColumn = (props: ItemTableListInnerColumn) => {
+ const row: string | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'string' && row) {
+ const maxLength = 50;
+ const displayPath = row.length > maxLength ? `...${row.slice(-maxLength + 3)}` : row;
+
+ return {displayPath};
+ }
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/components/item-list/item-table-list/columns/rating-column.tsx b/src/renderer/components/item-list/item-table-list/columns/rating-column.tsx
new file mode 100644
index 000000000..5074a1f49
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/rating-column.tsx
@@ -0,0 +1,21 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { Rating } from '/@/shared/components/rating/rating';
+
+export const RatingColumn = (props: ItemTableListInnerColumn) => {
+ const row: null | number | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'number' || row === null) {
+ return (
+
+
+
+ );
+ }
+
+ return ;
+};
diff --git a/src/renderer/components/item-list/item-table-list/columns/row-index-column.tsx b/src/renderer/components/item-list/item-table-list/columns/row-index-column.tsx
index 4eda35446..40832ad5e 100644
--- a/src/renderer/components/item-list/item-table-list/columns/row-index-column.tsx
+++ b/src/renderer/components/item-list/item-table-list/columns/row-index-column.tsx
@@ -1,8 +1,8 @@
import {
ItemTableListInnerColumn,
- TableColumnContainer,
+ TableColumnTextContainer,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
export const RowIndexColumn = (props: ItemTableListInnerColumn) => {
- return {props.rowIndex + 1};
+ return {props.rowIndex + 1};
};
diff --git a/src/renderer/components/item-list/item-table-list/columns/size-column.tsx b/src/renderer/components/item-list/item-table-list/columns/size-column.tsx
new file mode 100644
index 000000000..7f10ca516
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/size-column.tsx
@@ -0,0 +1,24 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnTextContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { formatSizeString } from '/@/renderer/utils/format';
+import { Skeleton } from '/@/shared/components/skeleton/skeleton';
+
+export const SizeColumn = (props: ItemTableListInnerColumn) => {
+ const row: number | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'number') {
+ return (
+ {formatSizeString(row)}
+ );
+ }
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/components/item-list/item-table-list/columns/text-column.tsx b/src/renderer/components/item-list/item-table-list/columns/text-column.tsx
new file mode 100644
index 000000000..9d31656a3
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/columns/text-column.tsx
@@ -0,0 +1,24 @@
+import {
+ ItemTableListInnerColumn,
+ TableColumnTextContainer,
+} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { Skeleton } from '/@/shared/components/skeleton/skeleton';
+
+export const TextColumn = (props: ItemTableListInnerColumn) => {
+ const row: string | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
+ props.columns[props.columnIndex].id
+ ];
+
+ if (typeof row === 'string' && row) {
+ const maxLength = 100;
+ const displayText = row.length > maxLength ? `${row.slice(0, maxLength)}...` : row;
+
+ return {displayText};
+ }
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/components/item-list/item-table-list/item-table-list-column-header.tsx b/src/renderer/components/item-list/item-table-list/item-table-list-column-header.tsx
new file mode 100644
index 000000000..fa362bf19
--- /dev/null
+++ b/src/renderer/components/item-list/item-table-list/item-table-list-column-header.tsx
@@ -0,0 +1,15 @@
+import clsx from 'clsx';
+
+import { ItemTableListColumn } from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
+import { TableColumn } from '/@/shared/types/types';
+
+export const TableColumnHeader = (
+ props: ItemTableListColumn & {
+ children: React.ReactNode;
+ className?: string;
+ containerClassName?: string;
+ type: TableColumn;
+ },
+) => {
+ return
{props.children}
;
+};
diff --git a/src/renderer/components/item-list/item-table-list/item-table-list-column.module.css b/src/renderer/components/item-list/item-table-list/item-table-list-column.module.css
index dbe352067..b903f49e3 100644
--- a/src/renderer/components/item-list/item-table-list/item-table-list-column.module.css
+++ b/src/renderer/components/item-list/item-table-list/item-table-list-column.module.css
@@ -6,6 +6,19 @@
padding: var(--theme-spacing-xs);
}
+.container.center {
+ align-items: center;
+ text-align: center;
+}
+
+.container.left {
+ text-align: left;
+}
+
+.container.right {
+ text-align: right;
+}
+
.content {
display: -webkit-box;
overflow: hidden;
@@ -19,3 +32,23 @@
.container.compact {
padding: var(--theme-spacing-xs);
}
+
+.header-container {
+ background: none;
+}
+
+.header-content {
+ display: flex;
+}
+
+.header-content.center {
+ justify-content: center;
+}
+
+.header-content.left {
+ justify-content: flex-start;
+}
+
+.header-content.right {
+ justify-content: flex-end;
+}
diff --git a/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx b/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx
index 8e66281f1..927b08628 100644
--- a/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx
+++ b/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx
@@ -1,14 +1,29 @@
import clsx from 'clsx';
+import React, { ReactNode } from 'react';
import { CellComponentProps } from 'react-window-v2';
import styles from './item-table-list-column.module.css';
+import i18n from '/@/i18n/i18n';
+import { ActionsColumn } from '/@/renderer/components/item-list/item-table-list/columns/actions-column';
+import { CountColumn } from '/@/renderer/components/item-list/item-table-list/columns/count-column';
+import {
+ DateColumn,
+ RelativeDateColumn,
+} from '/@/renderer/components/item-list/item-table-list/columns/date-column';
import { DefaultColumn } from '/@/renderer/components/item-list/item-table-list/columns/default-column';
import { DurationColumn } from '/@/renderer/components/item-list/item-table-list/columns/duration-column';
+import { FavoriteColumn } from '/@/renderer/components/item-list/item-table-list/columns/favorite-column';
import { GenreColumn } from '/@/renderer/components/item-list/item-table-list/columns/genre-column';
import { ImageColumn } from '/@/renderer/components/item-list/item-table-list/columns/image-column';
+import { NumericColumn } from '/@/renderer/components/item-list/item-table-list/columns/numeric-column';
+import { PathColumn } from '/@/renderer/components/item-list/item-table-list/columns/path-column';
+import { RatingColumn } from '/@/renderer/components/item-list/item-table-list/columns/rating-column';
import { RowIndexColumn } from '/@/renderer/components/item-list/item-table-list/columns/row-index-column';
+import { SizeColumn } from '/@/renderer/components/item-list/item-table-list/columns/size-column';
+import { TextColumn } from '/@/renderer/components/item-list/item-table-list/columns/text-column';
import { CellProps } from '/@/renderer/components/item-list/item-table-list/item-table-list';
+import { Icon } from '/@/shared/components/icon/icon';
import { Text } from '/@/shared/components/text/text';
import { TableColumn } from '/@/shared/types/types';
@@ -21,23 +36,73 @@ export interface ItemTableListInnerColumn extends ItemTableListColumn {
export const ItemTableListColumn = (props: ItemTableListColumn) => {
const type = props.columns[props.columnIndex].id as TableColumn;
+ const isHeaderEnabled = !!props.enableHeader;
+
+ if (isHeaderEnabled && props.rowIndex === 0) {
+ return ;
+ }
+
switch (type) {
+ case TableColumn.ACTIONS:
+ case TableColumn.SKIP:
+ return ;
+
+ case TableColumn.ALBUM_COUNT:
+ case TableColumn.PLAY_COUNT:
+ case TableColumn.SONG_COUNT:
+ return ;
+
+ case TableColumn.BIOGRAPHY:
+ case TableColumn.COMMENT:
+ return ;
+
+ case TableColumn.BIT_RATE:
+ case TableColumn.BPM:
+ case TableColumn.CHANNELS:
+ case TableColumn.DISC_NUMBER:
+ case TableColumn.TRACK_NUMBER:
+ case TableColumn.YEAR:
+ return ;
+
+ case TableColumn.DATE_ADDED:
+ case TableColumn.RELEASE_DATE:
+ return ;
+
case TableColumn.DURATION:
return ;
+
case TableColumn.GENRE:
return ;
+
case TableColumn.IMAGE:
return ;
+
+ case TableColumn.LAST_PLAYED:
+ return ;
+
+ case TableColumn.PATH:
+ return ;
+
case TableColumn.ROW_INDEX:
return ;
+
+ case TableColumn.SIZE:
+ return ;
+
+ case TableColumn.USER_FAVORITE:
+ return ;
+
+ case TableColumn.USER_RATING:
+ return ;
+
default:
return ;
}
};
-const NonMutedColumns = [TableColumn.TITLE];
+const NonMutedColumns = [TableColumn.TITLE, TableColumn.TITLE_COMBINED];
-export const TableColumnContainer = (
+export const TableColumnTextContainer = (
props: ItemTableListColumn & {
children: React.ReactNode;
className?: string;
@@ -48,7 +113,10 @@ export const TableColumnContainer = (
return (
props.handleExpand(e, props.data[props.rowIndex], props.itemType)}
style={props.style}
@@ -63,3 +131,114 @@ export const TableColumnContainer = (
);
};
+
+export const TableColumnContainer = (
+ props: ItemTableListColumn & {
+ children: React.ReactNode;
+ className?: string;
+ containerClassName?: string;
+ type: TableColumn;
+ },
+) => {
+ return (
+ props.handleExpand(e, props.data[props.rowIndex], props.itemType)}
+ style={props.style}
+ >
+ {props.children}
+
+ );
+};
+
+export const TableColumnHeaderContainer = (
+ props: ItemTableListColumn & {
+ className?: string;
+ containerClassName?: string;
+ type: TableColumn;
+ },
+) => {
+ return (
+
+
+ {columnLabelMap[props.type]}
+
+
+ );
+};
+
+const columnLabelMap: Record = {
+ [TableColumn.ACTIONS]: '',
+ [TableColumn.ALBUM]: i18n.t('table.column.album', { postProcess: 'titleCase' }) as string,
+ [TableColumn.ALBUM_ARTIST]: i18n.t('table.column.albumArtist', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.ALBUM_COUNT]: i18n.t('table.column.albumCount', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.ARTIST]: i18n.t('table.column.artist', { postProcess: 'titleCase' }) as string,
+ [TableColumn.BIOGRAPHY]: i18n.t('table.column.biography', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.BIT_RATE]: i18n.t('table.column.bitrate', { postProcess: 'titleCase' }) as string,
+ [TableColumn.BPM]: i18n.t('table.column.bpm', { postProcess: 'titleCase' }) as string,
+ [TableColumn.CHANNELS]: i18n.t('table.column.channels', { postProcess: 'titleCase' }) as string,
+ [TableColumn.CODEC]: i18n.t('table.column.codec', { postProcess: 'titleCase' }) as string,
+ [TableColumn.COMMENT]: i18n.t('table.column.comment', { postProcess: 'titleCase' }) as string,
+ [TableColumn.DATE_ADDED]: i18n.t('table.column.dateAdded', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.DISC_NUMBER]: i18n.t('table.column.discNumber', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.DURATION]: ,
+ [TableColumn.GENRE]: i18n.t('table.column.genre', { postProcess: 'titleCase' }) as string,
+ [TableColumn.ID]: 'ID',
+ [TableColumn.IMAGE]: '',
+ [TableColumn.LAST_PLAYED]: i18n.t('table.column.lastPlayed', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.OWNER]: i18n.t('table.column.owner', { postProcess: 'titleCase' }) as string,
+ [TableColumn.PATH]: i18n.t('table.column.path', { postProcess: 'titleCase' }) as string,
+ [TableColumn.PLAY_COUNT]: i18n.t('table.column.playCount', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.RELEASE_DATE]: i18n.t('table.column.releaseDate', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.ROW_INDEX]: '#',
+ [TableColumn.SIZE]: i18n.t('table.column.size', { postProcess: 'titleCase' }) as string,
+ [TableColumn.SKIP]: '',
+ [TableColumn.SONG_COUNT]: i18n.t('table.column.songCount', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.TITLE]: i18n.t('table.column.title', { postProcess: 'titleCase' }) as string,
+ [TableColumn.TITLE_COMBINED]: i18n.t('table.column.titleCombined', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.TRACK_NUMBER]: i18n.t('table.column.trackNumber', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.USER_FAVORITE]: i18n.t('table.column.favorite', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.USER_RATING]: i18n.t('table.column.rating', {
+ postProcess: 'titleCase',
+ }) as string,
+ [TableColumn.YEAR]: i18n.t('table.column.releaseYear', { postProcess: 'titleCase' }) as string,
+};
diff --git a/src/renderer/components/item-list/item-table-list/item-table-list.module.css b/src/renderer/components/item-list/item-table-list/item-table-list.module.css
index 5c0e60869..ba0fa4893 100644
--- a/src/renderer/components/item-list/item-table-list/item-table-list.module.css
+++ b/src/renderer/components/item-list/item-table-list/item-table-list.module.css
@@ -38,7 +38,7 @@
}
.item-table-pinned-rows-grid-container.with-header {
- background-color: var(--theme-colors-surface);
+ border-bottom: 2px solid var(--theme-colors-border);
}
.item-table-pinned-columns-grid-container {
@@ -55,7 +55,7 @@
}
.item-table-pinned-intersection-grid-container.with-header {
- background-color: var(--theme-colors-surface);
+ border-bottom: 2px solid var(--theme-colors-border);
}
.item-table-pinned-columns-container {
diff --git a/src/shared/types/types.ts b/src/shared/types/types.ts
index eb918fdfd..e0d68b877 100644
--- a/src/shared/types/types.ts
+++ b/src/shared/types/types.ts
@@ -151,7 +151,7 @@ export enum TableColumn {
BIT_RATE = 'bitRate',
BPM = 'bpm',
CHANNELS = 'channels',
- CODEC = 'codec',
+ CODEC = 'container',
COMMENT = 'comment',
DATE_ADDED = 'dateAdded',
DISC_NUMBER = 'discNumber',