mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-03 00:59:53 +02:00
Use proper casing for i18n locales (#1998)
This commit is contained in:
@@ -24,12 +24,12 @@ const ComponentErrorFallback = ({ resetErrorBoundary }: ComponentErrorFallbackPr
|
||||
<Group gap="xs">
|
||||
<Icon fill="error" icon="error" size="lg" />
|
||||
<TextTitle fw={600} order={4}>
|
||||
{t('error.genericError', { postProcess: 'sentenceCase' })}
|
||||
{t('error.genericError')}
|
||||
</TextTitle>
|
||||
</Group>
|
||||
<Group grow>
|
||||
<Button onClick={resetErrorBoundary} size="xs" variant="default">
|
||||
{t('common.reload', { postProcess: 'sentenceCase' })}
|
||||
{t('common.reload')}
|
||||
</Button>
|
||||
</Group>
|
||||
</Stack>
|
||||
|
||||
@@ -27,10 +27,10 @@ export const DisplayTypeToggleButton = ({
|
||||
onClick={onToggle}
|
||||
tooltip={{
|
||||
label: isGrid
|
||||
? t('table.config.view.grid', { postProcess: 'sentenceCase' })
|
||||
? t('table.config.view.grid')
|
||||
: isDetail
|
||||
? t('table.config.view.detail', { postProcess: 'sentenceCase' })
|
||||
: t('table.config.view.table', { postProcess: 'sentenceCase' }),
|
||||
? t('table.config.view.detail')
|
||||
: t('table.config.view.table'),
|
||||
}}
|
||||
variant="subtle"
|
||||
{...buttonProps}
|
||||
|
||||
@@ -19,7 +19,7 @@ export const FilterButton = ({ isActive, onClick, ...props }: FilterButtonProps)
|
||||
}}
|
||||
onClick={onClick}
|
||||
tooltip={{
|
||||
label: t('common.filters', { count: 2, postProcess: 'sentenceCase' }),
|
||||
label: t('common.filters', { count: 2 }),
|
||||
...props.tooltip,
|
||||
}}
|
||||
variant="subtle"
|
||||
|
||||
@@ -18,7 +18,7 @@ export const FolderButton = ({ isActive, ...props }: FolderButtonProps) => {
|
||||
...props.iconProps,
|
||||
}}
|
||||
tooltip={{
|
||||
label: t('entity.folder', { count: 1, postProcess: 'sentenceCase' }),
|
||||
label: t('entity.folder', { count: 1 }),
|
||||
...props.tooltip,
|
||||
}}
|
||||
variant="subtle"
|
||||
|
||||
@@ -73,15 +73,11 @@ export const GridConfig = ({
|
||||
<SegmentedControl
|
||||
data={[
|
||||
{
|
||||
label: t('table.config.general.pagination_infinite', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.pagination_infinite'),
|
||||
value: ListPaginationType.INFINITE,
|
||||
},
|
||||
{
|
||||
label: t('table.config.general.pagination_paginate', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.pagination_paginate'),
|
||||
value: ListPaginationType.PAGINATED,
|
||||
},
|
||||
]}
|
||||
@@ -97,7 +93,7 @@ export const GridConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'pagination',
|
||||
label: t('table.config.general.pagination', { postProcess: 'sentenceCase' }),
|
||||
label: t('table.config.general.pagination'),
|
||||
size: 'sm',
|
||||
},
|
||||
{
|
||||
@@ -125,9 +121,7 @@ export const GridConfig = ({
|
||||
id: 'itemsPerPage',
|
||||
label: (
|
||||
<Group>
|
||||
{t('table.config.general.pagination_itemsPerPage', {
|
||||
postProcess: 'sentenceCase',
|
||||
})}
|
||||
{t('table.config.general.pagination_itemsPerPage')}
|
||||
<Badge>{list.itemsPerPage}</Badge>
|
||||
</Group>
|
||||
),
|
||||
@@ -186,7 +180,7 @@ export const GridConfig = ({
|
||||
id: 'itemGap',
|
||||
label: (
|
||||
<Group>
|
||||
{t('table.config.general.gap', { postProcess: 'sentenceCase' })}
|
||||
{t('table.config.general.gap')}
|
||||
<Badge>{grid.itemGap}</Badge>
|
||||
</Group>
|
||||
),
|
||||
@@ -205,12 +199,12 @@ export const GridConfig = ({
|
||||
label: (
|
||||
<Group justify="space-between" w="100%" wrap="nowrap">
|
||||
<Group>
|
||||
{t('table.config.general.itemsPerRow', { postProcess: 'sentenceCase' })}
|
||||
{t('table.config.general.itemsPerRow')}
|
||||
<Badge>{grid.itemsPerRow}</Badge>
|
||||
</Group>
|
||||
<Checkbox
|
||||
checked={grid.itemsPerRowEnabled}
|
||||
label={t('common.enable', { postProcess: 'titleCase' })}
|
||||
label={t('common.enable')}
|
||||
onChange={(e) =>
|
||||
setList(listKey, {
|
||||
grid: { itemsPerRowEnabled: e.target.checked },
|
||||
@@ -227,21 +221,15 @@ export const GridConfig = ({
|
||||
<SegmentedControl
|
||||
data={[
|
||||
{
|
||||
label: t('table.config.general.size_compact', {
|
||||
postProcess: 'titleCase',
|
||||
}),
|
||||
label: t('table.config.general.size_compact'),
|
||||
value: 'compact',
|
||||
},
|
||||
{
|
||||
label: t('table.config.general.size_default', {
|
||||
postProcess: 'titleCase',
|
||||
}),
|
||||
label: t('table.config.general.size_default'),
|
||||
value: 'default',
|
||||
},
|
||||
{
|
||||
label: t('table.config.general.size_large', {
|
||||
postProcess: 'titleCase',
|
||||
}),
|
||||
label: t('table.config.general.size_large'),
|
||||
value: 'large',
|
||||
},
|
||||
]}
|
||||
@@ -256,7 +244,7 @@ export const GridConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'size',
|
||||
label: t('table.config.general.size', { postProcess: 'sentenceCase' }),
|
||||
label: t('table.config.general.size'),
|
||||
size: 'sm',
|
||||
},
|
||||
|
||||
@@ -419,12 +407,10 @@ const GridRowConfig = ({
|
||||
return (
|
||||
<Stack gap="xs">
|
||||
<Group justify="space-between" mb="md">
|
||||
<Text size="sm">{t('common.gridRows', { postProcess: 'sentenceCase' })}</Text>
|
||||
<Text size="sm">{t('common.gridRows')}</Text>
|
||||
<TextInput
|
||||
onChange={(e) => setSearchRows(e.currentTarget.value)}
|
||||
placeholder={t('common.search', {
|
||||
postProcess: 'sentenceCase',
|
||||
})}
|
||||
placeholder={t('common.search')}
|
||||
size="xs"
|
||||
/>
|
||||
</Group>
|
||||
@@ -592,9 +578,7 @@ const GridRowItem = memo(
|
||||
onClick={() => handleMoveUp(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.moveUp', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.moveUp'),
|
||||
}}
|
||||
variant="subtle"
|
||||
/>
|
||||
@@ -604,9 +588,7 @@ const GridRowItem = memo(
|
||||
onClick={() => handleMoveDown(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.moveDown', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.moveDown'),
|
||||
}}
|
||||
variant="subtle"
|
||||
/>
|
||||
@@ -618,9 +600,7 @@ const GridRowItem = memo(
|
||||
onClick={() => handleAlignLeft(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.alignLeft', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.alignLeft'),
|
||||
}}
|
||||
variant={item.align === 'start' ? 'filled' : 'subtle'}
|
||||
/>
|
||||
@@ -630,9 +610,7 @@ const GridRowItem = memo(
|
||||
onClick={() => handleAlignCenter(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.alignCenter', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.alignCenter'),
|
||||
}}
|
||||
variant={item.align === 'center' ? 'filled' : 'subtle'}
|
||||
/>
|
||||
@@ -642,9 +620,7 @@ const GridRowItem = memo(
|
||||
onClick={() => handleAlignRight(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.alignRight', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.alignRight'),
|
||||
}}
|
||||
variant={item.align === 'end' ? 'filled' : 'subtle'}
|
||||
/>
|
||||
|
||||
@@ -407,7 +407,7 @@ export const LibraryHeaderMenu = ({
|
||||
size="md"
|
||||
variant="transparent"
|
||||
>
|
||||
{t('player.albumRadio', { postProcess: 'sentenceCase' })}
|
||||
{t('player.albumRadio')}
|
||||
</Button>
|
||||
)}
|
||||
{onArtistRadio && (
|
||||
@@ -424,7 +424,7 @@ export const LibraryHeaderMenu = ({
|
||||
size="md"
|
||||
variant="transparent"
|
||||
>
|
||||
{t('player.artistRadio', { postProcess: 'sentenceCase' })}
|
||||
{t('player.artistRadio')}
|
||||
</Button>
|
||||
)}
|
||||
</Group>
|
||||
|
||||
@@ -27,7 +27,7 @@ const DISPLAY_TYPES = [
|
||||
label: (
|
||||
<Group align="center" justify="center" p="sm">
|
||||
<Icon icon="layoutTable" size="lg" />
|
||||
{i18n.t('table.config.view.table', { postProcess: 'sentenceCase' }) as string}
|
||||
{i18n.t('table.config.view.table') as string}
|
||||
</Group>
|
||||
),
|
||||
value: ListDisplayType.TABLE,
|
||||
@@ -36,7 +36,7 @@ const DISPLAY_TYPES = [
|
||||
label: (
|
||||
<Group align="center" justify="center" p="sm">
|
||||
<Icon icon="layoutGrid" size="lg" />
|
||||
{i18n.t('table.config.view.grid', { postProcess: 'sentenceCase' }) as string}
|
||||
{i18n.t('table.config.view.grid') as string}
|
||||
</Group>
|
||||
),
|
||||
value: ListDisplayType.GRID,
|
||||
@@ -45,7 +45,7 @@ const DISPLAY_TYPES = [
|
||||
label: (
|
||||
<Group align="center" justify="center" p="sm">
|
||||
<Icon icon="layoutDetail" size="lg" />
|
||||
{i18n.t('table.config.view.detail', { postProcess: 'sentenceCase' }) as string}
|
||||
{i18n.t('table.config.view.detail') as string}
|
||||
</Group>
|
||||
),
|
||||
value: ListDisplayType.DETAIL,
|
||||
@@ -55,7 +55,7 @@ const DISPLAY_TYPES = [
|
||||
// label: (
|
||||
// <Stack align="center" p="sm">
|
||||
// <Icon icon="layoutList" size="lg" />
|
||||
// {i18n.t('table.config.view.list', { postProcess: 'sentenceCase' }) as string}
|
||||
// {i18n.t('table.config.view.list') as string}
|
||||
// </Stack>
|
||||
// ),
|
||||
// value: ListDisplayType.LIST,
|
||||
@@ -148,12 +148,7 @@ export const ListConfigMenu = (props: ListConfigMenuProps) => {
|
||||
return (
|
||||
<>
|
||||
<SettingsButton {...props.buttonProps} onClick={handlers.toggle} />
|
||||
<Modal
|
||||
handlers={handlers}
|
||||
opened={isOpen}
|
||||
size="xl"
|
||||
title={t('common.configure', { postProcess: 'sentenceCase' })}
|
||||
>
|
||||
<Modal handlers={handlers} opened={isOpen} size="xl" title={t('common.configure')}>
|
||||
<Stack gap="xs">
|
||||
{availableDisplayTypes.length > 1 && (
|
||||
<ListConfigTable
|
||||
@@ -174,9 +169,7 @@ export const ListConfigMenu = (props: ListConfigMenuProps) => {
|
||||
/>
|
||||
),
|
||||
id: 'displayType',
|
||||
label: t('table.config.general.displayType', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.displayType'),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
|
||||
@@ -93,10 +93,10 @@ export const ListFiltersModal = ({ isActive, itemType }: ListFiltersProps) => {
|
||||
/>
|
||||
)}
|
||||
|
||||
{t('common.filters', { postProcess: 'sentenceCase' })}
|
||||
{t('common.filters')}
|
||||
</Group>
|
||||
<Button onClick={handleReset} size="compact-sm" variant="subtle">
|
||||
{t('common.reset', { postProcess: 'sentenceCase' })}
|
||||
{t('common.reset')}
|
||||
</Button>
|
||||
</Group>
|
||||
}
|
||||
@@ -159,11 +159,11 @@ export const ListFiltersTitle = ({ itemType }: ListFiltersTitleProps) => {
|
||||
return (
|
||||
<Group justify="space-between" pb={0} pl="md" pr="md" pt="md">
|
||||
<Text fw={500} size="xl">
|
||||
{t('common.filters', { postProcess: 'sentenceCase' })}
|
||||
{t('common.filters')}
|
||||
</Text>
|
||||
<Group gap="xs">
|
||||
<Button onClick={clear} size="compact-sm" variant="subtle">
|
||||
{t('common.reset', { postProcess: 'sentenceCase' })}
|
||||
{t('common.reset')}
|
||||
</Button>
|
||||
{canUnpin && (
|
||||
<ActionIcon
|
||||
|
||||
@@ -133,87 +133,87 @@ export const ListSortByDropdownControlled = ({
|
||||
export const CLIENT_SIDE_SONG_FILTERS = [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: SongListSort.ID,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.album'),
|
||||
value: SongListSort.ALBUM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumArtist'),
|
||||
value: SongListSort.ALBUM_ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.artist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.artist'),
|
||||
value: SongListSort.ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.bpm', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.bpm'),
|
||||
value: SongListSort.BPM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('common.channel', { count: 2, postProcess: 'titleCase' }),
|
||||
name: i18n.t('common.channel', { count: 2 }),
|
||||
value: SongListSort.CHANNELS,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.comment', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.comment'),
|
||||
value: SongListSort.COMMENT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: SongListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.isFavorited'),
|
||||
value: SongListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.genre', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.genre'),
|
||||
value: SongListSort.GENRE,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: SongListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.sortName', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.sortName'),
|
||||
value: SongListSort.SORT_NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.playCount'),
|
||||
value: SongListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.rating'),
|
||||
value: SongListSort.RATING,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: SongListSort.RECENTLY_ADDED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyPlayed'),
|
||||
value: SongListSort.RECENTLY_PLAYED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.releaseYear', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.releaseYear'),
|
||||
value: SongListSort.YEAR,
|
||||
},
|
||||
];
|
||||
@@ -221,72 +221,72 @@ export const CLIENT_SIDE_SONG_FILTERS = [
|
||||
export const CLIENT_SIDE_ALBUM_FILTERS = [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumArtist'),
|
||||
value: AlbumListSort.ALBUM_ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: AlbumListSort.ID,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: AlbumListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.favorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.favorited'),
|
||||
value: AlbumListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: AlbumListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.sortName', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.sortName'),
|
||||
value: AlbumListSort.SORT_NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.playCount'),
|
||||
value: AlbumListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.random'),
|
||||
value: AlbumListSort.RANDOM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.rating'),
|
||||
value: AlbumListSort.RATING,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: AlbumListSort.RECENTLY_ADDED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyPlayed'),
|
||||
value: AlbumListSort.RECENTLY_PLAYED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.releaseDate', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.releaseDate'),
|
||||
value: AlbumListSort.RELEASE_DATE,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.releaseYear', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.releaseYear'),
|
||||
value: AlbumListSort.YEAR,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.songCount'),
|
||||
value: AlbumListSort.SONG_COUNT,
|
||||
},
|
||||
];
|
||||
@@ -297,161 +297,161 @@ const ALBUM_LIST_FILTERS: Partial<
|
||||
[ServerType.JELLYFIN]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumArtist'),
|
||||
value: AlbumListSort.ALBUM_ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: AlbumListSort.ID,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.communityRating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.communityRating'),
|
||||
value: AlbumListSort.COMMUNITY_RATING,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.criticRating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.criticRating'),
|
||||
value: AlbumListSort.CRITIC_RATING,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: AlbumListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.playCount'),
|
||||
value: AlbumListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.random'),
|
||||
value: AlbumListSort.RANDOM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: AlbumListSort.RECENTLY_ADDED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.releaseDate', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.releaseDate'),
|
||||
value: AlbumListSort.RELEASE_DATE,
|
||||
},
|
||||
],
|
||||
[ServerType.NAVIDROME]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumArtist'),
|
||||
value: AlbumListSort.ALBUM_ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: AlbumListSort.ID,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.artist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.artist'),
|
||||
value: AlbumListSort.ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: AlbumListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.mostPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.mostPlayed'),
|
||||
value: AlbumListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: AlbumListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.random'),
|
||||
value: AlbumListSort.RANDOM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.rating'),
|
||||
value: AlbumListSort.RATING,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: AlbumListSort.RECENTLY_ADDED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyPlayed'),
|
||||
value: AlbumListSort.RECENTLY_PLAYED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.songCount'),
|
||||
value: AlbumListSort.SONG_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.favorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.favorited'),
|
||||
value: AlbumListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.releaseYear', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.releaseYear'),
|
||||
value: AlbumListSort.YEAR,
|
||||
},
|
||||
],
|
||||
[ServerType.SUBSONIC]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumArtist'),
|
||||
value: AlbumListSort.ALBUM_ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: AlbumListSort.ID,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.mostPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.mostPlayed'),
|
||||
value: AlbumListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: AlbumListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.random'),
|
||||
value: AlbumListSort.RANDOM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: AlbumListSort.RECENTLY_ADDED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyPlayed'),
|
||||
value: AlbumListSort.RECENTLY_PLAYED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.favorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.favorited'),
|
||||
value: AlbumListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.releaseYear', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.releaseYear'),
|
||||
value: AlbumListSort.YEAR,
|
||||
},
|
||||
],
|
||||
@@ -463,141 +463,141 @@ const SONG_LIST_FILTERS: Partial<
|
||||
[ServerType.JELLYFIN]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.album'),
|
||||
value: SongListSort.ALBUM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumArtist'),
|
||||
value: SongListSort.ALBUM_ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.artist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.artist'),
|
||||
value: SongListSort.ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: SongListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.playCount'),
|
||||
value: SongListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: SongListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.random'),
|
||||
value: SongListSort.RANDOM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: SongListSort.RECENTLY_ADDED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyPlayed'),
|
||||
value: SongListSort.RECENTLY_PLAYED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.releaseDate', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.releaseDate'),
|
||||
value: SongListSort.RELEASE_DATE,
|
||||
},
|
||||
],
|
||||
[ServerType.NAVIDROME]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.album'),
|
||||
value: SongListSort.ALBUM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumArtist'),
|
||||
value: SongListSort.ALBUM_ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.artist', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.artist'),
|
||||
value: SongListSort.ARTIST,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.bpm', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.bpm'),
|
||||
value: SongListSort.BPM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('common.channel', { count: 2, postProcess: 'titleCase' }),
|
||||
name: i18n.t('common.channel', { count: 2 }),
|
||||
value: SongListSort.CHANNELS,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.comment', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.comment'),
|
||||
value: SongListSort.COMMENT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: SongListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.isFavorited'),
|
||||
value: SongListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.genre', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.genre'),
|
||||
value: SongListSort.GENRE,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: SongListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.playCount'),
|
||||
value: SongListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.random'),
|
||||
value: SongListSort.RANDOM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.rating'),
|
||||
value: SongListSort.RATING,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: SongListSort.RECENTLY_ADDED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyPlayed'),
|
||||
value: SongListSort.RECENTLY_PLAYED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.releaseYear', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.releaseYear'),
|
||||
value: SongListSort.YEAR,
|
||||
},
|
||||
],
|
||||
[ServerType.SUBSONIC]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: SongListSort.NAME,
|
||||
},
|
||||
],
|
||||
@@ -609,7 +609,7 @@ const FOLDER_LIST_FILTERS: Partial<
|
||||
[ServerType.JELLYFIN]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: SongListSort.ID,
|
||||
},
|
||||
...(SONG_LIST_FILTERS[ServerType.JELLYFIN] || []),
|
||||
@@ -617,7 +617,7 @@ const FOLDER_LIST_FILTERS: Partial<
|
||||
[ServerType.NAVIDROME]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: SongListSort.ID,
|
||||
},
|
||||
...(SONG_LIST_FILTERS[ServerType.NAVIDROME] || []),
|
||||
@@ -625,7 +625,7 @@ const FOLDER_LIST_FILTERS: Partial<
|
||||
[ServerType.SUBSONIC]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: SongListSort.ID,
|
||||
},
|
||||
...(SONG_LIST_FILTERS[ServerType.SUBSONIC] || []),
|
||||
@@ -646,81 +646,81 @@ const ALBUM_ARTIST_LIST_FILTERS: Partial<
|
||||
[ServerType.JELLYFIN]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.album'),
|
||||
value: AlbumArtistListSort.ALBUM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: AlbumArtistListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: AlbumArtistListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.random'),
|
||||
value: AlbumArtistListSort.RANDOM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: AlbumArtistListSort.RECENTLY_ADDED,
|
||||
},
|
||||
],
|
||||
[ServerType.NAVIDROME]: [
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.albumCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumCount'),
|
||||
value: AlbumArtistListSort.ALBUM_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.isFavorited'),
|
||||
value: AlbumArtistListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.mostPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.mostPlayed'),
|
||||
value: AlbumArtistListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: AlbumArtistListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.rating'),
|
||||
value: AlbumArtistListSort.RATING,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.songCount'),
|
||||
value: AlbumArtistListSort.SONG_COUNT,
|
||||
},
|
||||
],
|
||||
[ServerType.SUBSONIC]: [
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.albumCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumCount'),
|
||||
value: AlbumArtistListSort.ALBUM_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.isFavorited'),
|
||||
value: AlbumArtistListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: AlbumArtistListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.rating'),
|
||||
value: AlbumArtistListSort.RATING,
|
||||
},
|
||||
],
|
||||
@@ -732,81 +732,81 @@ const ARTIST_LIST_FILTERS: Partial<
|
||||
[ServerType.JELLYFIN]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.album'),
|
||||
value: ArtistListSort.ALBUM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: ArtistListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: ArtistListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.random'),
|
||||
value: ArtistListSort.RANDOM,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyAdded'),
|
||||
value: ArtistListSort.RECENTLY_ADDED,
|
||||
},
|
||||
],
|
||||
[ServerType.NAVIDROME]: [
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.albumCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumCount'),
|
||||
value: ArtistListSort.ALBUM_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.isFavorited'),
|
||||
value: ArtistListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.mostPlayed', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.mostPlayed'),
|
||||
value: ArtistListSort.PLAY_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: ArtistListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.rating'),
|
||||
value: ArtistListSort.RATING,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.songCount'),
|
||||
value: ArtistListSort.SONG_COUNT,
|
||||
},
|
||||
],
|
||||
[ServerType.SUBSONIC]: [
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.albumCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.albumCount'),
|
||||
value: ArtistListSort.ALBUM_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.isFavorited'),
|
||||
value: ArtistListSort.FAVORITED,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: ArtistListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.rating'),
|
||||
value: ArtistListSort.RATING,
|
||||
},
|
||||
],
|
||||
@@ -818,21 +818,21 @@ const GENRE_LIST_FILTERS: Partial<
|
||||
[ServerType.JELLYFIN]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: GenreListSort.NAME,
|
||||
},
|
||||
],
|
||||
[ServerType.NAVIDROME]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: GenreListSort.NAME,
|
||||
},
|
||||
],
|
||||
[ServerType.SUBSONIC]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: GenreListSort.NAME,
|
||||
},
|
||||
],
|
||||
@@ -844,56 +844,56 @@ const PLAYLIST_LIST_FILTERS: Partial<
|
||||
[ServerType.JELLYFIN]: [
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: PlaylistListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: PlaylistListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.songCount'),
|
||||
value: PlaylistListSort.SONG_COUNT,
|
||||
},
|
||||
],
|
||||
[ServerType.NAVIDROME]: [
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.duration'),
|
||||
value: PlaylistListSort.DURATION,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: PlaylistListSort.NAME,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.owner', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.owner'),
|
||||
value: PlaylistListSort.OWNER,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.isPublic', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.isPublic'),
|
||||
value: PlaylistListSort.PUBLIC,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.songCount'),
|
||||
value: PlaylistListSort.SONG_COUNT,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.DESC,
|
||||
name: i18n.t('filter.recentlyUpdated', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.recentlyUpdated'),
|
||||
value: PlaylistListSort.UPDATED_AT,
|
||||
},
|
||||
],
|
||||
[ServerType.SUBSONIC]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: PlaylistListSort.NAME,
|
||||
},
|
||||
],
|
||||
@@ -905,36 +905,36 @@ const RADIO_LIST_FILTERS: Partial<
|
||||
[ServerType.JELLYFIN]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: RadioListSort.ID,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: RadioListSort.NAME,
|
||||
},
|
||||
],
|
||||
[ServerType.NAVIDROME]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: RadioListSort.ID,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: RadioListSort.NAME,
|
||||
},
|
||||
],
|
||||
[ServerType.SUBSONIC]: [
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.id'),
|
||||
value: RadioListSort.ID,
|
||||
},
|
||||
{
|
||||
defaultOrder: SortOrder.ASC,
|
||||
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||
name: i18n.t('filter.name'),
|
||||
value: RadioListSort.NAME,
|
||||
},
|
||||
],
|
||||
|
||||
@@ -27,10 +27,7 @@ export const OrderToggleButton = ({
|
||||
}}
|
||||
onClick={onToggle}
|
||||
tooltip={{
|
||||
label:
|
||||
sortOrder === SortOrder.ASC
|
||||
? t('common.ascending', { postProcess: 'sentenceCase' })
|
||||
: t('common.descending', { postProcess: 'sentenceCase' }),
|
||||
label: sortOrder === SortOrder.ASC ? t('common.ascending') : t('common.descending'),
|
||||
}}
|
||||
variant="subtle"
|
||||
{...buttonProps}
|
||||
|
||||
@@ -42,11 +42,11 @@ const PageErrorFallback = ({ error, resetErrorBoundary }: PageErrorFallbackProps
|
||||
<Group gap="xs">
|
||||
<Icon fill="error" icon="error" size="lg" />
|
||||
<TextTitle fw={700} order={3}>
|
||||
{t('error.genericError', { postProcess: 'sentenceCase' })}
|
||||
{t('error.genericError')}
|
||||
</TextTitle>
|
||||
</Group>
|
||||
<Text style={{ wordBreak: 'break-word' }}>
|
||||
{error?.message || t('error.genericError', { postProcess: 'sentenceCase' })}
|
||||
{error?.message || t('error.genericError')}
|
||||
</Text>
|
||||
{process.env.NODE_ENV === 'development' && error?.stack && (
|
||||
<Code
|
||||
@@ -64,10 +64,10 @@ const PageErrorFallback = ({ error, resetErrorBoundary }: PageErrorFallbackProps
|
||||
)}
|
||||
<Group grow>
|
||||
<Button onClick={resetErrorBoundary} size="md" variant="default">
|
||||
{t('common.reload', { postProcess: 'sentenceCase' })}
|
||||
{t('common.reload')}
|
||||
</Button>
|
||||
<Button onClick={handleRefresh} size="md" variant="filled">
|
||||
{t('common.refresh', { postProcess: 'sentenceCase' })}
|
||||
{t('common.refresh')}
|
||||
</Button>
|
||||
</Group>
|
||||
</Stack>
|
||||
|
||||
@@ -24,10 +24,10 @@ const playButtons: {
|
||||
label: (
|
||||
<Stack gap="xs" justify="center">
|
||||
<Text fw={500} ta="center">
|
||||
{i18n.t('player.addNext', { postProcess: 'sentenceCase' })}
|
||||
{i18n.t('player.addNext')}
|
||||
</Text>
|
||||
<Text fw={500} isMuted size="xs" ta="center">
|
||||
{i18n.t('player.holdToShuffle', { postProcess: 'sentenceCase' })}
|
||||
{i18n.t('player.holdToShuffle')}
|
||||
</Text>
|
||||
</Stack>
|
||||
),
|
||||
@@ -40,10 +40,10 @@ const playButtons: {
|
||||
label: (
|
||||
<Stack gap="xs" justify="center">
|
||||
<Text fw={500} ta="center">
|
||||
{i18n.t('player.play', { postProcess: 'sentenceCase' })}
|
||||
{i18n.t('player.play')}
|
||||
</Text>
|
||||
<Text fw={500} isMuted size="xs" ta="center">
|
||||
{i18n.t('player.holdToShuffle', { postProcess: 'sentenceCase' })}
|
||||
{i18n.t('player.holdToShuffle')}
|
||||
</Text>
|
||||
</Stack>
|
||||
),
|
||||
@@ -55,10 +55,10 @@ const playButtons: {
|
||||
label: (
|
||||
<Stack gap="xs" justify="center">
|
||||
<Text fw={500} ta="center">
|
||||
{i18n.t('player.addLast', { postProcess: 'sentenceCase' })}
|
||||
{i18n.t('player.addLast')}
|
||||
</Text>
|
||||
<Text fw={500} isMuted size="xs" ta="center">
|
||||
{i18n.t('player.holdToShuffle', { postProcess: 'sentenceCase' })}
|
||||
{i18n.t('player.holdToShuffle')}
|
||||
</Text>
|
||||
</Stack>
|
||||
),
|
||||
@@ -74,9 +74,9 @@ export const LONG_PRESS_PLAY_BEHAVIOR = {
|
||||
};
|
||||
|
||||
const PLAY_BEHAVIOR_TO_LABEL = {
|
||||
[Play.LAST]: i18n.t('player.addLast', { postProcess: 'sentenceCase' }),
|
||||
[Play.NEXT]: i18n.t('player.addNext', { postProcess: 'sentenceCase' }),
|
||||
[Play.NOW]: i18n.t('player.play', { postProcess: 'sentenceCase' }),
|
||||
[Play.LAST]: i18n.t('player.addLast'),
|
||||
[Play.NEXT]: i18n.t('player.addNext'),
|
||||
[Play.NOW]: i18n.t('player.play'),
|
||||
};
|
||||
|
||||
const TooltipLabel = ({ label }: { label: React.ReactNode | string; type: Play }) => {
|
||||
@@ -86,7 +86,7 @@ const TooltipLabel = ({ label }: { label: React.ReactNode | string; type: Play }
|
||||
{label}
|
||||
</Text>
|
||||
<Text fw={500} isMuted size="xs" ta="center">
|
||||
{i18n.t('player.holdToShuffle', { postProcess: 'sentenceCase' })}
|
||||
{i18n.t('player.holdToShuffle')}
|
||||
</Text>
|
||||
</Stack>
|
||||
);
|
||||
|
||||
@@ -64,7 +64,7 @@ export const PlayTextButton = ({
|
||||
{props.children || (
|
||||
<Group gap="sm" wrap="nowrap">
|
||||
<Icon icon="mediaPlay" size="lg" />
|
||||
{t('player.play', { postProcess: 'sentenceCase' })}
|
||||
{t('player.play')}
|
||||
</Group>
|
||||
)}
|
||||
</Button>
|
||||
@@ -86,7 +86,7 @@ export const PlayNextTextButton = ({ ...props }: TextPlayButtonProps) => {
|
||||
<PlayTextButton {...props} showTooltip={false}>
|
||||
<Group gap="sm" wrap="nowrap">
|
||||
<Icon className={styles.noFill} icon="mediaPlayNext" size="lg" />
|
||||
{t('player.addNext', { postProcess: 'sentenceCase' })}
|
||||
{t('player.addNext')}
|
||||
</Group>
|
||||
</PlayTextButton>
|
||||
);
|
||||
@@ -107,7 +107,7 @@ export const PlayLastTextButton = ({ ...props }: TextPlayButtonProps) => {
|
||||
<PlayTextButton {...props} showTooltip={false}>
|
||||
<Group gap="sm" wrap="nowrap">
|
||||
<Icon className={styles.noFill} icon="mediaPlayLast" size="lg" />
|
||||
{t('player.addLast', { postProcess: 'sentenceCase' })}
|
||||
{t('player.addLast')}
|
||||
</Group>
|
||||
</PlayTextButton>
|
||||
);
|
||||
@@ -128,7 +128,7 @@ export const WideShuffleButton = ({ ...props }: TextPlayButtonProps) => {
|
||||
<PlayTextButton {...props}>
|
||||
<Group gap="sm" wrap="nowrap">
|
||||
<Icon fill="default" icon="mediaShuffle" size="lg" />
|
||||
{t('action.shuffle', { postProcess: 'sentenceCase' })}
|
||||
{t('action.shuffle')}
|
||||
</Group>
|
||||
</PlayTextButton>
|
||||
);
|
||||
|
||||
@@ -19,7 +19,7 @@ export const RefreshButton = ({ loading, onClick, ...props }: RefreshButtonProps
|
||||
loading={loading}
|
||||
onClick={onClick}
|
||||
tooltip={{
|
||||
label: t('common.refresh', { postProcess: 'sentenceCase' }),
|
||||
label: t('common.refresh'),
|
||||
...props.tooltip,
|
||||
}}
|
||||
variant="subtle"
|
||||
|
||||
@@ -48,11 +48,11 @@ const RouterErrorFallback = ({ error, resetErrorBoundary }: RouterErrorFallbackP
|
||||
<Group gap="xs">
|
||||
<Icon fill="error" icon="error" size="lg" />
|
||||
<TextTitle fw={700} order={3}>
|
||||
{t('error.genericError', { postProcess: 'sentenceCase' })}
|
||||
{t('error.genericError')}
|
||||
</TextTitle>
|
||||
</Group>
|
||||
<Text style={{ wordBreak: 'break-word' }}>
|
||||
{error?.message || t('error.genericError', { postProcess: 'sentenceCase' })}
|
||||
{error?.message || t('error.genericError')}
|
||||
</Text>
|
||||
{process.env.NODE_ENV === 'development' && error?.stack && (
|
||||
<Code
|
||||
@@ -70,10 +70,10 @@ const RouterErrorFallback = ({ error, resetErrorBoundary }: RouterErrorFallbackP
|
||||
)}
|
||||
<Group grow>
|
||||
<Button onClick={resetErrorBoundary} size="md" variant="default">
|
||||
{t('common.reload', { postProcess: 'sentenceCase' })}
|
||||
{t('common.reload')}
|
||||
</Button>
|
||||
<Button onClick={handleRefresh} size="md" variant="filled">
|
||||
{t('common.refresh', { postProcess: 'sentenceCase' })}
|
||||
{t('common.refresh')}
|
||||
</Button>
|
||||
</Group>
|
||||
</Stack>
|
||||
|
||||
@@ -98,9 +98,7 @@ export const SaveAsCollectionButton = ({ fullWidth, itemType }: SaveAsCollection
|
||||
<Popover.Target>
|
||||
{fullWidth ? (
|
||||
<Button fullWidth onClick={handleOpen} variant="default">
|
||||
{t('page.collections.saveAsCollection', {
|
||||
postProcess: 'sentenceCase',
|
||||
})}
|
||||
{t('page.collections.saveAsCollection')}
|
||||
</Button>
|
||||
) : (
|
||||
<ActionIcon
|
||||
@@ -108,9 +106,7 @@ export const SaveAsCollectionButton = ({ fullWidth, itemType }: SaveAsCollection
|
||||
iconProps={{ size: 'lg' }}
|
||||
onClick={handleOpen}
|
||||
tooltip={{
|
||||
label: t('page.collections.saveAsCollection', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('page.collections.saveAsCollection'),
|
||||
}}
|
||||
variant="subtle"
|
||||
/>
|
||||
@@ -120,9 +116,7 @@ export const SaveAsCollectionButton = ({ fullWidth, itemType }: SaveAsCollection
|
||||
<form onKeyDown={handleFormKeyDown} onSubmit={handleSubmit} ref={formRef}>
|
||||
<Stack gap="sm">
|
||||
<Text fw={500} size="sm" ta="center">
|
||||
{t('page.collections.overrideExisting', {
|
||||
postProcess: 'sentenceCase',
|
||||
})}
|
||||
{t('page.collections.overrideExisting')}
|
||||
</Text>
|
||||
<div className={styles.list}>
|
||||
<ScrollArea>
|
||||
@@ -146,10 +140,10 @@ export const SaveAsCollectionButton = ({ fullWidth, itemType }: SaveAsCollection
|
||||
<TextInput autoFocus maxLength={128} {...form.getInputProps('name')} />
|
||||
<Group gap="xs" justify="flex-end">
|
||||
<Button onClick={handlers.close} type="button" variant="subtle">
|
||||
{t('common.cancel', { postProcess: 'sentenceCase' })}
|
||||
{t('common.cancel')}
|
||||
</Button>
|
||||
<Button type="submit" variant="filled">
|
||||
{t('common.save', { postProcess: 'sentenceCase' })}
|
||||
{t('common.save')}
|
||||
</Button>
|
||||
</Group>
|
||||
</Stack>
|
||||
|
||||
@@ -15,7 +15,7 @@ export const SettingsButton = ({ ...props }: SettingsButtonProps) => {
|
||||
...props.iconProps,
|
||||
}}
|
||||
tooltip={{
|
||||
label: t('common.configure', { postProcess: 'sentenceCase' }),
|
||||
label: t('common.configure'),
|
||||
...props.tooltip,
|
||||
}}
|
||||
variant="subtle"
|
||||
|
||||
@@ -96,15 +96,11 @@ export const TableConfig = ({
|
||||
<SegmentedControl
|
||||
data={[
|
||||
{
|
||||
label: t('table.config.general.pagination_infinite', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.pagination_infinite'),
|
||||
value: ListPaginationType.INFINITE,
|
||||
},
|
||||
{
|
||||
label: t('table.config.general.pagination_paginate', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.pagination_paginate'),
|
||||
value: ListPaginationType.PAGINATED,
|
||||
},
|
||||
]}
|
||||
@@ -117,7 +113,7 @@ export const TableConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'pagination',
|
||||
label: t('table.config.general.pagination', { postProcess: 'sentenceCase' }),
|
||||
label: t('table.config.general.pagination'),
|
||||
size: 'sm',
|
||||
},
|
||||
{
|
||||
@@ -145,9 +141,7 @@ export const TableConfig = ({
|
||||
id: 'itemsPerPage',
|
||||
label: (
|
||||
<Group>
|
||||
{t('table.config.general.pagination_itemsPerPage', {
|
||||
postProcess: 'sentenceCase',
|
||||
})}
|
||||
{t('table.config.general.pagination_itemsPerPage')}
|
||||
<Badge>{list.itemsPerPage}</Badge>
|
||||
</Group>
|
||||
),
|
||||
@@ -157,21 +151,15 @@ export const TableConfig = ({
|
||||
<SegmentedControl
|
||||
data={[
|
||||
{
|
||||
label: t('table.config.general.size_compact', {
|
||||
postProcess: 'titleCase',
|
||||
}),
|
||||
label: t('table.config.general.size_compact'),
|
||||
value: 'compact',
|
||||
},
|
||||
{
|
||||
label: t('table.config.general.size_default', {
|
||||
postProcess: 'titleCase',
|
||||
}),
|
||||
label: t('table.config.general.size_default'),
|
||||
value: 'default',
|
||||
},
|
||||
{
|
||||
label: t('table.config.general.size_large', {
|
||||
postProcess: 'titleCase',
|
||||
}),
|
||||
label: t('table.config.general.size_large'),
|
||||
value: 'large',
|
||||
},
|
||||
]}
|
||||
@@ -186,9 +174,7 @@ export const TableConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'size',
|
||||
label: t('table.config.general.size', {
|
||||
postProcess: 'titleCase',
|
||||
}),
|
||||
label: t('table.config.general.size'),
|
||||
},
|
||||
{
|
||||
component: (
|
||||
@@ -198,9 +184,7 @@ export const TableConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'enableHeader',
|
||||
label: t('table.config.general.showHeader', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.showHeader'),
|
||||
},
|
||||
{
|
||||
component: (
|
||||
@@ -210,9 +194,7 @@ export const TableConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'enableRowHoverHighlight',
|
||||
label: t('table.config.general.rowHoverHighlight', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.rowHoverHighlight'),
|
||||
},
|
||||
{
|
||||
component: (
|
||||
@@ -222,9 +204,7 @@ export const TableConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'enableAlternateRowColors',
|
||||
label: t('table.config.general.alternateRowColors', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.alternateRowColors'),
|
||||
},
|
||||
{
|
||||
component: (
|
||||
@@ -234,9 +214,7 @@ export const TableConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'enableHorizontalBorders',
|
||||
label: t('table.config.general.horizontalBorders', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.horizontalBorders'),
|
||||
},
|
||||
{
|
||||
component: (
|
||||
@@ -246,9 +224,7 @@ export const TableConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'enableVerticalBorders',
|
||||
label: t('table.config.general.verticalBorders', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.verticalBorders'),
|
||||
},
|
||||
{
|
||||
component: (
|
||||
@@ -260,7 +236,7 @@ export const TableConfig = ({
|
||||
/>
|
||||
),
|
||||
id: 'autoFitColumns',
|
||||
label: t('table.config.general.autoFitColumns', { postProcess: 'sentenceCase' }),
|
||||
label: t('table.config.general.autoFitColumns'),
|
||||
},
|
||||
...(extraOptions || []),
|
||||
];
|
||||
@@ -494,12 +470,10 @@ const TableColumnConfig = ({
|
||||
return (
|
||||
<Stack gap="xs">
|
||||
<Group justify="space-between" mb="md">
|
||||
<Text size="sm">{t('common.tableColumns', { postProcess: 'sentenceCase' })}</Text>
|
||||
<Text size="sm">{t('common.tableColumns')}</Text>
|
||||
<TextInput
|
||||
onChange={(e) => setSearchColumns(e.currentTarget.value)}
|
||||
placeholder={t('common.search', {
|
||||
postProcess: 'sentenceCase',
|
||||
})}
|
||||
placeholder={t('common.search')}
|
||||
size="xs"
|
||||
/>
|
||||
</Group>
|
||||
@@ -684,9 +658,7 @@ const TableColumnItem = memo(
|
||||
onClick={() => handleMoveUp(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.moveUp', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.moveUp'),
|
||||
}}
|
||||
variant="subtle"
|
||||
/>
|
||||
@@ -696,9 +668,7 @@ const TableColumnItem = memo(
|
||||
onClick={() => handleMoveDown(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.moveDown', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.moveDown'),
|
||||
}}
|
||||
variant="subtle"
|
||||
/>
|
||||
@@ -711,9 +681,7 @@ const TableColumnItem = memo(
|
||||
onClick={() => handlePinToLeft(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.pinToLeft', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.pinToLeft'),
|
||||
}}
|
||||
variant={item.pinned === 'left' ? 'filled' : 'subtle'}
|
||||
/>
|
||||
@@ -723,9 +691,7 @@ const TableColumnItem = memo(
|
||||
onClick={() => handlePinToRight(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.pinToRight', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.pinToRight'),
|
||||
}}
|
||||
variant={item.pinned === 'right' ? 'filled' : 'subtle'}
|
||||
/>
|
||||
@@ -738,9 +704,7 @@ const TableColumnItem = memo(
|
||||
onClick={() => handleAlignLeft(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.alignLeft', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.alignLeft'),
|
||||
}}
|
||||
variant={item.align === 'start' ? 'filled' : 'subtle'}
|
||||
/>
|
||||
@@ -750,9 +714,7 @@ const TableColumnItem = memo(
|
||||
onClick={() => handleAlignCenter(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.alignCenter', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.alignCenter'),
|
||||
}}
|
||||
variant={item.align === 'center' ? 'filled' : 'subtle'}
|
||||
/>
|
||||
@@ -762,9 +724,7 @@ const TableColumnItem = memo(
|
||||
onClick={() => handleAlignRight(item)}
|
||||
size="xs"
|
||||
tooltip={{
|
||||
label: t('table.config.general.alignRight', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
label: t('table.config.general.alignRight'),
|
||||
}}
|
||||
variant={item.align === 'end' ? 'filled' : 'subtle'}
|
||||
/>
|
||||
@@ -773,11 +733,7 @@ const TableColumnItem = memo(
|
||||
className={clsx(styles.group, styles.numberInput)}
|
||||
hideControls={false}
|
||||
leftSection={
|
||||
<Tooltip
|
||||
label={t('table.config.general.autosize', {
|
||||
postProcess: 'sentenceCase',
|
||||
})}
|
||||
>
|
||||
<Tooltip label={t('table.config.general.autosize')}>
|
||||
<Checkbox
|
||||
checked={item.autoSize}
|
||||
id={item.id}
|
||||
|
||||
Reference in New Issue
Block a user