mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 12:30:12 +02:00
add detail display type to toggle
This commit is contained in:
@@ -95,7 +95,7 @@ export const AlbumListHeaderFilters = ({ toggleGenreTarget }: { toggleGenreTarge
|
||||
<ListRefreshButton listKey={pageKey as ItemListKey} />
|
||||
</Group>
|
||||
<Group gap="sm" wrap="nowrap">
|
||||
<ListDisplayTypeToggleButton listKey={ItemListKey.ALBUM} />
|
||||
<ListDisplayTypeToggleButton enableDetail listKey={ItemListKey.ALBUM} />
|
||||
<ListConfigMenu
|
||||
detailConfig={{
|
||||
optionsConfig: {
|
||||
|
||||
@@ -16,10 +16,11 @@ export const DisplayTypeToggleButton = ({
|
||||
}: DisplayTypeToggleButtonProps) => {
|
||||
const { t } = useTranslation();
|
||||
const isGrid = displayType === ListDisplayType.GRID;
|
||||
const isDetail = displayType === ListDisplayType.DETAIL;
|
||||
|
||||
return (
|
||||
<ActionIcon
|
||||
icon={isGrid ? 'layoutGrid' : 'layoutTable'}
|
||||
icon={isGrid ? 'layoutGrid' : isDetail ? 'layoutDetail' : 'layoutTable'}
|
||||
iconProps={{
|
||||
size: 'lg',
|
||||
}}
|
||||
@@ -27,7 +28,9 @@ export const DisplayTypeToggleButton = ({
|
||||
tooltip={{
|
||||
label: isGrid
|
||||
? t('table.config.view.grid', { postProcess: 'sentenceCase' })
|
||||
: t('table.config.view.table', { postProcess: 'sentenceCase' }),
|
||||
: isDetail
|
||||
? t('table.config.view.detail', { postProcess: 'sentenceCase' })
|
||||
: t('table.config.view.table', { postProcess: 'sentenceCase' }),
|
||||
}}
|
||||
variant="subtle"
|
||||
{...buttonProps}
|
||||
|
||||
@@ -40,7 +40,7 @@ const DISPLAY_TYPES = [
|
||||
{
|
||||
label: (
|
||||
<Group align="center" justify="center" p="sm">
|
||||
<Icon icon="layoutList" size="lg" />
|
||||
<Icon icon="layoutDetail" size="lg" />
|
||||
{i18n.t('table.config.view.detail', { postProcess: 'sentenceCase' }) as string}
|
||||
</Group>
|
||||
),
|
||||
|
||||
@@ -3,21 +3,50 @@ import { useSettingsStore, useSettingsStoreActions } from '/@/renderer/store';
|
||||
import { ItemListKey, ListDisplayType } from '/@/shared/types/types';
|
||||
|
||||
interface ListDisplayTypeToggleButtonProps {
|
||||
enableDetail?: boolean;
|
||||
listKey: ItemListKey;
|
||||
}
|
||||
|
||||
export const ListDisplayTypeToggleButton = ({ listKey }: ListDisplayTypeToggleButtonProps) => {
|
||||
export const ListDisplayTypeToggleButton = ({
|
||||
enableDetail = false,
|
||||
listKey,
|
||||
}: ListDisplayTypeToggleButtonProps) => {
|
||||
const displayType = useSettingsStore(
|
||||
(state) => state.lists[listKey]?.display,
|
||||
) as ListDisplayType;
|
||||
const { setList } = useSettingsStoreActions();
|
||||
|
||||
const handleToggleDisplayType = () => {
|
||||
const newDisplayType =
|
||||
displayType === ListDisplayType.GRID ? ListDisplayType.TABLE : ListDisplayType.GRID;
|
||||
console.log('enableDetail', enableDetail);
|
||||
let newDisplayType: ListDisplayType;
|
||||
|
||||
if (enableDetail) {
|
||||
if (displayType === ListDisplayType.DETAIL) {
|
||||
newDisplayType = ListDisplayType.TABLE;
|
||||
} else if (displayType === ListDisplayType.TABLE) {
|
||||
newDisplayType = ListDisplayType.GRID;
|
||||
} else if (displayType === ListDisplayType.GRID) {
|
||||
newDisplayType = ListDisplayType.DETAIL;
|
||||
} else {
|
||||
newDisplayType = ListDisplayType.GRID;
|
||||
}
|
||||
} else {
|
||||
if (displayType === ListDisplayType.GRID) {
|
||||
newDisplayType = ListDisplayType.TABLE;
|
||||
} else if (displayType === ListDisplayType.TABLE) {
|
||||
newDisplayType = ListDisplayType.GRID;
|
||||
} else {
|
||||
newDisplayType = ListDisplayType.GRID;
|
||||
}
|
||||
}
|
||||
|
||||
console.log('newDisplayType', newDisplayType);
|
||||
|
||||
setList(listKey, {
|
||||
display: newDisplayType,
|
||||
});
|
||||
|
||||
return;
|
||||
};
|
||||
|
||||
return <DisplayTypeToggleButton displayType={displayType} onToggle={handleToggleDisplayType} />;
|
||||
|
||||
@@ -58,6 +58,7 @@ import {
|
||||
LuInfo,
|
||||
LuKeyboard,
|
||||
LuLayoutGrid,
|
||||
LuLayoutList,
|
||||
LuLibrary,
|
||||
LuList,
|
||||
LuListFilter,
|
||||
@@ -186,6 +187,7 @@ export const AppIcon = {
|
||||
itemSong: LuMusic,
|
||||
keyboard: LuKeyboard,
|
||||
lastPlayed: LuHeadphones,
|
||||
layoutDetail: LuLayoutList,
|
||||
layoutGrid: LuLayoutGrid,
|
||||
layoutList: LuList,
|
||||
layoutTable: LuTable,
|
||||
|
||||
Reference in New Issue
Block a user