feature: allow to prefer single tag selection

This commit is contained in:
Jesse Chan
2020-11-16 21:39:45 +08:00
parent e3fed187ec
commit 3b573e59e9
5 changed files with 44 additions and 1 deletions
@@ -7,6 +7,7 @@ import type {TorrentProperties} from '@shared/types/Torrent';
import {ContextMenu, FormElementAddon, FormRowItem, Portal, SelectItem, Textbox} from '../../../ui';
import Chevron from '../../../ui/icons/Chevron';
import SettingStore from '../../../stores/SettingStore';
import TorrentFilterStore from '../../../stores/TorrentFilterStore';
interface TagSelectProps {
@@ -72,7 +73,11 @@ const TagSelect: FC<TagSelectProps> = ({defaultValue, placeholder, id, label}: T
<Portal>
<ContextMenu
isIn={isOpen}
onClick={(event) => event.nativeEvent.stopImmediatePropagation()}
onClick={(event) => {
if (SettingStore.floodSettings.UITagSelectorMode !== 'single') {
event.nativeEvent.stopImmediatePropagation();
}
}}
overlayProps={{isInteractive: false}}
ref={menuRef}
triggerRef={textboxRef}>
@@ -16,6 +16,7 @@ import type {Language} from '../../../constants/Languages';
class UITab extends SettingsTab {
torrentListViewSize = SettingStore.floodSettings.torrentListViewSize;
selectedLanguage = SettingStore.floodSettings.language;
UITagSelectorMode = SettingStore.floodSettings.UITagSelectorMode;
getLanguageSelectOptions() {
return Object.keys(Languages).map((languageID) => {
@@ -42,8 +43,10 @@ class UITab extends SettingsTab {
if (inputElement.type === 'radio') {
this.torrentListViewSize = formData['ui-torrent-size'] as FloodSettings['torrentListViewSize'];
this.UITagSelectorMode = formData['ui-tag-selector-mode'] as FloodSettings['UITagSelectorMode'];
this.props.onSettingsChange({
torrentListViewSize: this.torrentListViewSize,
UITagSelectorMode: this.UITagSelectorMode,
});
}
@@ -72,6 +75,17 @@ class UITab extends SettingsTab {
{this.getLanguageSelectOptions()}
</Select>
</FormRow>
<ModalFormSectionHeader>
<FormattedMessage id="settings.ui.tag.selector.mode" />
</ModalFormSectionHeader>
<FormRow>
<Radio checked={this.UITagSelectorMode === 'single'} groupID="ui-tag-selector-mode" id="single" width="auto">
<FormattedMessage id="settings.ui.tag.selector.mode.single" />
</Radio>
<Radio checked={this.UITagSelectorMode === 'multi'} groupID="ui-tag-selector-mode" id="multi" width="auto">
<FormattedMessage id="settings.ui.tag.selector.mode.multi" />
</Radio>
</FormRow>
<ModalFormSectionHeader>
<FormattedMessage id="settings.ui.torrent.list" />
</ModalFormSectionHeader>
@@ -1495,6 +1495,24 @@
"value": "Locale"
}
],
"settings.ui.tag.selector.mode": [
{
"type": 0,
"value": "Tag Selector Preference"
}
],
"settings.ui.tag.selector.mode.multi": [
{
"type": 0,
"value": "Multi Selection"
}
],
"settings.ui.tag.selector.mode.single": [
{
"type": 0,
"value": "Single Selection"
}
],
"settings.ui.torrent.context.menu.items.show": [
{
"type": 0,
+3
View File
@@ -195,6 +195,9 @@
"settings.tabs.about": "About",
"settings.ui.locale": "Locale",
"settings.ui.language": "Language",
"settings.ui.tag.selector.mode": "Tag Selector Preference",
"settings.ui.tag.selector.mode.single": "Single Selection",
"settings.ui.tag.selector.mode.multi": "Multi Selection",
"settings.ui.torrent.list": "Torrent List Display",
"settings.ui.torrent.size": "Torrent Size",
"settings.ui.torrent.size.expanded": "Expanded View",
+3
View File
@@ -33,6 +33,9 @@ export interface FloodSettings {
// Last used download destination
torrentDestination?: string;
// Tag selector preference
UITagSelectorMode?: 'single' | 'multi';
// Last used "Add Torrents" tab
UITorrentsAddTab?: 'by-url' | 'by-file' | 'by-creation';
}