diff --git a/src/components/itemContextMenu.js b/src/components/itemContextMenu.js index a90effb336..28dc31226c 100644 --- a/src/components/itemContextMenu.js +++ b/src/components/itemContextMenu.js @@ -1,5 +1,6 @@ import browser from '../scripts/browser'; import { copy } from '../scripts/clipboard'; +import dom from '../scripts/dom'; import globalize from '../scripts/globalize'; import actionsheet from './actionSheet/actionSheet'; import { appHost } from './apphost'; @@ -115,6 +116,16 @@ export function getCommands(options) { } } + // Multiselect is currrently only ran on long clicks of card components + // This disables Select on any context menu not originating from a card i.e songs + if (options.positionTo && (dom.parentWithClass(options.positionTo, 'card') !== null)) { + commands.push({ + name: globalize.translate('Select'), + id: 'multiSelect', + icon: 'library_add_check' + }); + } + if ((item.Type === 'Timer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { commands.push({ name: globalize.translate('CancelRecording'), @@ -432,6 +443,12 @@ function executeCommand(item, id, options) { itemMediaInfo.show(itemId, serverId).then(getResolveFunction(resolve, id), getResolveFunction(resolve, id)); }); break; + case 'multiSelect': + import('./multiSelect/multiSelect').then(({ startMultiSelect: startMultiSelect }) => { + const card = dom.parentWithClass(options.positionTo, 'card'); + startMultiSelect(card); + }); + break; case 'refresh': refresh(apiClient, item); getResolveFunction(resolve, id)(); diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 44e82f2e5c..e2b39af691 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1685,6 +1685,7 @@ "Interview": "Interview", "Scene": "Scene", "Sample": "Sample", + "Select": "Select", "ThemeSong": "Theme Song", "ThemeVideo": "Theme Video", "EnableEnhancedNvdecDecoderHelp": "Experimental NVDEC implementation, do not enable this option unless you encounter decoding errors.",