Rename "MultiValueButton" props to "SelectButton" props

This commit is contained in:
schroda
2026-06-02 13:39:47 +02:00
parent d8a4227d13
commit 1228b5ac2a
11 changed files with 27 additions and 28 deletions

View File

@@ -13,7 +13,7 @@ import { CustomTooltip } from '@/base/components/CustomTooltip.tsx';
import { Superscript } from '@/base/components/texts/Superscript.tsx'; import { Superscript } from '@/base/components/texts/Superscript.tsx';
import type { ValueToDisplayData } from '@/base/Base.types.ts'; import type { ValueToDisplayData } from '@/base/Base.types.ts';
export interface MultiValueButtonBaseProps<Value extends string | number, MultiValue extends Value | Value[] = Value> { export interface SelectButtonBaseProps<Value extends string | number, MultiValue extends Value | Value[] = Value> {
value: MultiValue; value: MultiValue;
defaultValue?: Value; defaultValue?: Value;
values: Value[]; values: Value[];
@@ -21,18 +21,17 @@ export interface MultiValueButtonBaseProps<Value extends string | number, MultiV
valueToDisplayData: ValueToDisplayData<Value>; valueToDisplayData: ValueToDisplayData<Value>;
} }
export interface MultiValueButtonDefaultableProps< export interface SelectButtonDefaultableProps<
Value extends string | number, Value extends string | number,
MultiValue extends Value | Value[] = Value, MultiValue extends Value | Value[] = Value,
> extends OptionalProperty<MultiValueButtonBaseProps<Value, MultiValue>, 'value'> { > extends OptionalProperty<SelectButtonBaseProps<Value, MultiValue>, 'value'> {
isDefaultable?: boolean; isDefaultable?: boolean;
onDefault?: () => void; onDefault?: () => void;
} }
export type MultiValueButtonProps<Value extends string | number, MultiValue extends Value | Value[] = Value> = export type SelectButtonProps<Value extends string | number, MultiValue extends Value | Value[] = Value> =
| (MultiValueButtonBaseProps<Value, MultiValue> & | (SelectButtonBaseProps<Value, MultiValue> & PropertiesNever<SelectButtonDefaultableProps<Value, MultiValue>>)
PropertiesNever<MultiValueButtonDefaultableProps<Value, MultiValue>>) | SelectButtonDefaultableProps<Value, MultiValue>;
| MultiValueButtonDefaultableProps<Value, MultiValue>;
export const SelectButton = <Value extends string | number, MultiValue extends Value | Value[] = Value>({ export const SelectButton = <Value extends string | number, MultiValue extends Value | Value[] = Value>({
value, value,
@@ -42,7 +41,7 @@ export const SelectButton = <Value extends string | number, MultiValue extends V
valueToDisplayData, valueToDisplayData,
isDefaultable, isDefaultable,
onDefault, onDefault,
}: MultiValueButtonProps<Value, MultiValue>) => { }: SelectButtonProps<Value, MultiValue>) => {
const { t } = useLingui(); const { t } = useLingui();
return ( return (

View File

@@ -22,7 +22,7 @@ import {
READER_PAGE_SCALE_MODE_VALUES, READER_PAGE_SCALE_MODE_VALUES,
} from '@/features/reader/settings/ReaderSettings.constants.tsx'; } from '@/features/reader/settings/ReaderSettings.constants.tsx';
import { CustomIconButton } from '@/base/components/buttons/CustomIconButton.tsx'; import { CustomIconButton } from '@/base/components/buttons/CustomIconButton.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
export const ReaderNavBarDesktopPageScale = ({ export const ReaderNavBarDesktopPageScale = ({
pageScaleMode, pageScaleMode,
@@ -30,7 +30,7 @@ export const ReaderNavBarDesktopPageScale = ({
updateSetting, updateSetting,
...buttonSelectInputProps ...buttonSelectInputProps
}: Pick<IReaderSettingsWithDefaultFlag, 'pageScaleMode' | 'shouldStretchPage'> & }: Pick<IReaderSettingsWithDefaultFlag, 'pageScaleMode' | 'shouldStretchPage'> &
Pick<MultiValueButtonDefaultableProps<ReaderPageScaleMode>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<ReaderPageScaleMode>, 'isDefaultable' | 'onDefault'> & {
updateSetting: <Setting extends keyof Pick<IReaderSettings, 'pageScaleMode' | 'shouldStretchPage'>>( updateSetting: <Setting extends keyof Pick<IReaderSettings, 'pageScaleMode' | 'shouldStretchPage'>>(
setting: Setting, setting: Setting,
value: IReaderSettings[Setting], value: IReaderSettings[Setting],

View File

@@ -14,14 +14,14 @@ import {
READING_DIRECTION_VALUE_TO_DISPLAY_DATA, READING_DIRECTION_VALUE_TO_DISPLAY_DATA,
} from '@/features/reader/settings/ReaderSettings.constants.tsx'; } from '@/features/reader/settings/ReaderSettings.constants.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
export const ReaderNavBarDesktopReadingDirection = ({ export const ReaderNavBarDesktopReadingDirection = ({
readingDirection, readingDirection,
setReadingDirection, setReadingDirection,
...buttonSelectInputProps ...buttonSelectInputProps
}: Pick<IReaderSettingsWithDefaultFlag, 'readingDirection'> & }: Pick<IReaderSettingsWithDefaultFlag, 'readingDirection'> &
Pick<MultiValueButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & {
setReadingDirection: (readingDirection: ReadingDirection) => void; setReadingDirection: (readingDirection: ReadingDirection) => void;
}) => { }) => {
const { t } = useLingui(); const { t } = useLingui();

View File

@@ -14,14 +14,14 @@ import {
READING_MODE_VALUES, READING_MODE_VALUES,
} from '@/features/reader/settings/ReaderSettings.constants.tsx'; } from '@/features/reader/settings/ReaderSettings.constants.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
export const ReaderNavBarDesktopReadingMode = ({ export const ReaderNavBarDesktopReadingMode = ({
readingMode, readingMode,
setReadingMode, setReadingMode,
...buttonSelectInputProps ...buttonSelectInputProps
}: Pick<IReaderSettingsWithDefaultFlag, 'readingMode'> & }: Pick<IReaderSettingsWithDefaultFlag, 'readingMode'> &
Pick<MultiValueButtonDefaultableProps<ReadingMode>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<ReadingMode>, 'isDefaultable' | 'onDefault'> & {
setReadingMode: (mode: ReadingMode) => void; setReadingMode: (mode: ReadingMode) => void;
}) => { }) => {
const { t } = useLingui(); const { t } = useLingui();

View File

@@ -13,7 +13,7 @@ import { SliderInput } from '@/base/components/inputs/SliderInput.tsx';
import { DEFAULT_READER_SETTINGS, PAGE_GAP } from '@/features/reader/settings/ReaderSettings.constants.tsx'; import { DEFAULT_READER_SETTINGS, PAGE_GAP } from '@/features/reader/settings/ReaderSettings.constants.tsx';
import { isContinuousReadingMode } from '@/features/reader/settings/ReaderSettings.utils.tsx'; import { isContinuousReadingMode } from '@/features/reader/settings/ReaderSettings.utils.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
export const ReaderSettingPageGap = ({ export const ReaderSettingPageGap = ({
pageGap, pageGap,
@@ -22,7 +22,7 @@ export const ReaderSettingPageGap = ({
onDefault, onDefault,
updateSetting, updateSetting,
}: Pick<IReaderSettingsWithDefaultFlag, 'pageGap' | 'readingMode'> & }: Pick<IReaderSettingsWithDefaultFlag, 'pageGap' | 'readingMode'> &
Pick<MultiValueButtonDefaultableProps<IReaderSettings['pageGap']>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<IReaderSettings['pageGap']>, 'isDefaultable' | 'onDefault'> & {
updateSetting: (gap: number, commit: boolean) => void; updateSetting: (gap: number, commit: boolean) => void;
}) => { }) => {
const { t } = useLingui(); const { t } = useLingui();

View File

@@ -18,14 +18,14 @@ import {
} from '@/features/reader/settings/ReaderSettings.constants.tsx'; } from '@/features/reader/settings/ReaderSettings.constants.tsx';
import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
export const ReaderSettingPageScaleMode = ({ export const ReaderSettingPageScaleMode = ({
pageScaleMode, pageScaleMode,
setPageScaleMode, setPageScaleMode,
...buttonSelectInputProps ...buttonSelectInputProps
}: Pick<IReaderSettingsWithDefaultFlag, 'pageScaleMode'> & }: Pick<IReaderSettingsWithDefaultFlag, 'pageScaleMode'> &
Pick<MultiValueButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & {
setPageScaleMode: (mode: IReaderSettings['pageScaleMode']) => void; setPageScaleMode: (mode: IReaderSettings['pageScaleMode']) => void;
}) => { }) => {
const { t } = useLingui(); const { t } = useLingui();

View File

@@ -14,7 +14,7 @@ import type { IReaderSettingsWithDefaultFlag } from '@/features/reader/Reader.ty
import { ReadingDirection } from '@/features/reader/Reader.types.ts'; import { ReadingDirection } from '@/features/reader/Reader.types.ts';
import type { ValueToDisplayData } from '@/base/Base.types.ts'; import type { ValueToDisplayData } from '@/base/Base.types.ts';
import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
const VALUE_TO_DISPLAY_DATA: ValueToDisplayData<ReadingDirection> = { const VALUE_TO_DISPLAY_DATA: ValueToDisplayData<ReadingDirection> = {
[ReadingDirection.LTR]: { [ReadingDirection.LTR]: {
@@ -34,7 +34,7 @@ export const ReaderSettingReadingDirection = ({
setReadingDirection, setReadingDirection,
...buttonSelectInputProps ...buttonSelectInputProps
}: Pick<IReaderSettingsWithDefaultFlag, 'readingDirection'> & }: Pick<IReaderSettingsWithDefaultFlag, 'readingDirection'> &
Pick<MultiValueButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & {
setReadingDirection: (readingDirection: ReadingDirection) => void; setReadingDirection: (readingDirection: ReadingDirection) => void;
}) => { }) => {
const { t } = useLingui(); const { t } = useLingui();

View File

@@ -14,14 +14,14 @@ import {
} from '@/features/reader/settings/ReaderSettings.constants.tsx'; } from '@/features/reader/settings/ReaderSettings.constants.tsx';
import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
export const ReaderSettingReadingMode = ({ export const ReaderSettingReadingMode = ({
readingMode, readingMode,
setReadingMode, setReadingMode,
...buttonSelectInputProps ...buttonSelectInputProps
}: Pick<IReaderSettingsWithDefaultFlag, 'readingMode'> & }: Pick<IReaderSettingsWithDefaultFlag, 'readingMode'> &
Pick<MultiValueButtonDefaultableProps<ReadingMode>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<ReadingMode>, 'isDefaultable' | 'onDefault'> & {
setReadingMode: (mode: ReadingMode) => void; setReadingMode: (mode: ReadingMode) => void;
}) => { }) => {
const { t } = useLingui(); const { t } = useLingui();

View File

@@ -16,7 +16,7 @@ import type {
} from '@/features/reader/Reader.types.ts'; } from '@/features/reader/Reader.types.ts';
import type { TapZoneInvertMode } from '@/features/reader/tap-zones/TapZoneLayout.types.ts'; import type { TapZoneInvertMode } from '@/features/reader/tap-zones/TapZoneLayout.types.ts';
import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
enum TapZonesInvertOption { enum TapZonesInvertOption {
NONE, NONE,
@@ -86,7 +86,7 @@ export const ReaderSettingTapZoneInvertMode = ({
setTapZoneInvertMode, setTapZoneInvertMode,
...buttonSelectInputProps ...buttonSelectInputProps
}: Pick<IReaderSettingsWithDefaultFlag, 'tapZoneInvertMode'> & }: Pick<IReaderSettingsWithDefaultFlag, 'tapZoneInvertMode'> &
Pick<MultiValueButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & {
setTapZoneInvertMode: (invert: IReaderSettings['tapZoneInvertMode']) => void; setTapZoneInvertMode: (invert: IReaderSettings['tapZoneInvertMode']) => void;
}) => { }) => {
const { t } = useLingui(); const { t } = useLingui();

View File

@@ -12,7 +12,7 @@ import { TapZoneLayouts } from '@/features/reader/tap-zones/TapZoneLayout.types.
import type { ValueToDisplayData } from '@/base/Base.types.ts'; import type { ValueToDisplayData } from '@/base/Base.types.ts';
import type { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/features/reader/Reader.types.ts'; import type { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/features/reader/Reader.types.ts';
import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
const VALUE_TO_DISPLAY_DATA: ValueToDisplayData<TapZoneLayouts> = { const VALUE_TO_DISPLAY_DATA: ValueToDisplayData<TapZoneLayouts> = {
[TapZoneLayouts.EDGE]: { [TapZoneLayouts.EDGE]: {
@@ -44,7 +44,7 @@ export const ReaderSettingTapZoneLayout = ({
setTapZoneLayout, setTapZoneLayout,
...buttonSelectInputProps ...buttonSelectInputProps
}: Pick<IReaderSettingsWithDefaultFlag, 'tapZoneLayout'> & }: Pick<IReaderSettingsWithDefaultFlag, 'tapZoneLayout'> &
Pick<MultiValueButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<ReadingDirection>, 'isDefaultable' | 'onDefault'> & {
setTapZoneLayout: (layout: TapZoneLayouts) => void; setTapZoneLayout: (layout: TapZoneLayouts) => void;
}) => { }) => {
const { t } = useLingui(); const { t } = useLingui();

View File

@@ -15,7 +15,7 @@ import { SliderInput } from '@/base/components/inputs/SliderInput.tsx';
import { DEFAULT_READER_SETTINGS } from '@/features/reader/settings/ReaderSettings.constants.tsx'; import { DEFAULT_READER_SETTINGS } from '@/features/reader/settings/ReaderSettings.constants.tsx';
import { isReaderWidthEditable } from '@/features/reader/settings/ReaderSettings.utils.tsx'; import { isReaderWidthEditable } from '@/features/reader/settings/ReaderSettings.utils.tsx';
import { ResetButton } from '@/base/components/buttons/ResetButton.tsx'; import { ResetButton } from '@/base/components/buttons/ResetButton.tsx';
import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; import type { SelectButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx';
export const ReaderSettingWidth = ({ export const ReaderSettingWidth = ({
readerWidth, readerWidth,
@@ -25,7 +25,7 @@ export const ReaderSettingWidth = ({
updateSetting, updateSetting,
setTransparent, setTransparent,
}: Pick<IReaderSettings, 'readerWidth' | 'pageScaleMode'> & }: Pick<IReaderSettings, 'readerWidth' | 'pageScaleMode'> &
Pick<MultiValueButtonDefaultableProps<IReaderSettings['readerWidth']['value']>, 'isDefaultable' | 'onDefault'> & { Pick<SelectButtonDefaultableProps<IReaderSettings['readerWidth']['value']>, 'isDefaultable' | 'onDefault'> & {
updateSetting: (...args: Parameters<typeof ReaderService.updateSetting>) => void; updateSetting: (...args: Parameters<typeof ReaderService.updateSetting>) => void;
setTransparent?: (transparent: boolean) => void; setTransparent?: (transparent: boolean) => void;
}) => { }) => {