From 98784779b53c92e78897bbe99da28016173a1d56 Mon Sep 17 00:00:00 2001 From: Botzy Date: Tue, 11 Mar 2025 19:31:46 +0200 Subject: [PATCH 1/6] refactor(StreamsList): replace Multiselect with MultiselectMenu --- src/routes/MetaDetails/StreamsList/StreamsList.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js index bcb5cb015..b30297c0f 100644 --- a/src/routes/MetaDetails/StreamsList/StreamsList.js +++ b/src/routes/MetaDetails/StreamsList/StreamsList.js @@ -5,7 +5,7 @@ const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); const { default: Icon } = require('@stremio/stremio-icons/react'); -const { Button, Image, Multiselect } = require('stremio/components'); +const { Button, Image, MultiselectMenu } = require('stremio/components'); const { useServices } = require('stremio/services'); const Stream = require('./Stream'); const styles = require('./styles'); @@ -20,9 +20,9 @@ const StreamsList = ({ className, video, ...props }) => { const profile = useProfile(); const streamsContainerRef = React.useRef(null); const [selectedAddon, setSelectedAddon] = React.useState(ALL_ADDONS_KEY); - const onAddonSelected = React.useCallback((event) => { + const onAddonSelected = React.useCallback((value) => { streamsContainerRef.current.scrollTo({ top: 0, left: 0, behavior: platform.name === 'ios' ? 'smooth' : 'instant' }); - setSelectedAddon(event.value); + setSelectedAddon(value); }, [platform]); const showInstallAddonsButton = React.useMemo(() => { return !profile || profile.auth === null || profile.auth?.user?.isNewUser === true; @@ -76,7 +76,6 @@ const StreamsList = ({ className, video, ...props }) => { }, [streamsByAddon, selectedAddon]); const selectableOptions = React.useMemo(() => { return { - title: 'Select Addon', options: [ { value: ALL_ADDONS_KEY, @@ -89,7 +88,10 @@ const StreamsList = ({ className, video, ...props }) => { title: streamsByAddon[transportUrl].addon.manifest.name, })) ], - selected: [selectedAddon], + selectedOption: { + label: selectedAddon === ALL_ADDONS_KEY ? t('ALL_ADDONS') : streamsByAddon[selectedAddon]?.addon.manifest.name, + value: selectedAddon + }, onSelect: onAddonSelected }; }, [streamsByAddon, selectedAddon]); @@ -111,7 +113,7 @@ const StreamsList = ({ className, video, ...props }) => { } { Object.keys(streamsByAddon).length > 1 ? - From 5365c1739ee09b3e75c1ded936d715d937bb9770 Mon Sep 17 00:00:00 2001 From: Botzy Date: Tue, 11 Mar 2025 19:43:04 +0200 Subject: [PATCH 2/6] fix(MultiselectMenu): keep background color when state is open --- src/components/MultiselectMenu/MultiselectMenu.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/MultiselectMenu/MultiselectMenu.less b/src/components/MultiselectMenu/MultiselectMenu.less index b09a0d916..88ae83d1b 100644 --- a/src/components/MultiselectMenu/MultiselectMenu.less +++ b/src/components/MultiselectMenu/MultiselectMenu.less @@ -34,7 +34,7 @@ } } - &:hover { + &:hover, .open { background-color: var(--overlay-color); } } \ No newline at end of file From a21e5698c8e8fe3e5c28cd3b02b92f82457cea8e Mon Sep 17 00:00:00 2001 From: Botzy Date: Tue, 11 Mar 2025 20:45:18 +0200 Subject: [PATCH 3/6] refactor(Library): replace Multiselect with MultiselectMenu --- .../MultiselectMenu/MultiselectMenu.less | 2 +- src/components/MultiselectMenu/MultiselectMenu.tsx | 2 +- src/routes/Library/Library.js | 4 ++-- src/routes/Library/styles.less | 1 + src/routes/Library/useSelectableInputs.js | 14 +++++++------- src/routes/MetaDetails/StreamsList/styles.less | 2 +- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/components/MultiselectMenu/MultiselectMenu.less b/src/components/MultiselectMenu/MultiselectMenu.less index 88ae83d1b..c26c2480e 100644 --- a/src/components/MultiselectMenu/MultiselectMenu.less +++ b/src/components/MultiselectMenu/MultiselectMenu.less @@ -34,7 +34,7 @@ } } - &:hover, .open { + &:hover, &.active { background-color: var(--overlay-color); } } \ No newline at end of file diff --git a/src/components/MultiselectMenu/MultiselectMenu.tsx b/src/components/MultiselectMenu/MultiselectMenu.tsx index 55b818d80..8f41278e7 100644 --- a/src/components/MultiselectMenu/MultiselectMenu.tsx +++ b/src/components/MultiselectMenu/MultiselectMenu.tsx @@ -27,7 +27,7 @@ const MultiselectMenu = ({ className, title, options, selectedOption, onSelect } }; return ( -
+