From a3174cca6d206d4ad160a9e18d77b003ae868b3c Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 18 Feb 2022 14:27:34 +0100 Subject: [PATCH] refactor(Library): use modal instead of Filters --- src/routes/Library/Library.js | 21 ++++++++++---- src/routes/Library/styles.less | 53 +++++++++++++++++++++++++++++++--- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/src/routes/Library/Library.js b/src/routes/Library/Library.js index f154d75e9..7ff0374ef 100644 --- a/src/routes/Library/Library.js +++ b/src/routes/Library/Library.js @@ -3,12 +3,12 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); +const Icon = require('@stremio/stremio-icons/dom'); const NotFound = require('stremio/routes/NotFound'); -const { Button, Multiselect, MainNavBars, LibItem, Image, PaginationInput, useProfile, routesRegexp } = require('stremio/common'); +const { Button, Multiselect, MainNavBars, LibItem, Image, ModalDialog, PaginationInput, useProfile, routesRegexp, useBinaryState } = require('stremio/common'); const useLibrary = require('./useLibrary'); const useSelectableInputs = require('./useSelectableInputs'); const styles = require('./styles'); -const { Filters } = require('stremio/common'); function withModel(Library) { const withModel = ({ urlParams, queryParams }) => { @@ -47,6 +47,7 @@ const Library = ({ model, urlParams, queryParams }) => { const profile = useProfile(); const library = useLibrary(model, urlParams, queryParams); const [typeSelect, sortSelect, paginationInput] = useSelectableInputs(library); + const [inputsModalOpen, openInputsModal, closeInputsModal] = useBinaryState(false); const multiselectInputs = <> @@ -67,9 +68,9 @@ const Library = ({ model, urlParams, queryParams }) => { : } - - { multiselectInputs } - + : null @@ -115,6 +116,16 @@ const Library = ({ model, urlParams, queryParams }) => { } + { + inputsModalOpen ? + +
+ { multiselectInputs } +
+
+ : + null + } ); }; diff --git a/src/routes/Library/styles.less b/src/routes/Library/styles.less index ded44c5a5..52289420f 100644 --- a/src/routes/Library/styles.less +++ b/src/routes/Library/styles.less @@ -14,6 +14,12 @@ pagination-label: label; } +:import('~stremio/common/ModalDialog/styles.less') { + selectable-inputs-modal-container: modal-dialog-container; + selectable-inputs-modal-content: modal-dialog-content; +} + + .library-container { width: 100%; height: 100%; @@ -56,6 +62,23 @@ } } + .filter-container { + flex: none; + display: none; + align-items: center; + justify-content: center; + width: 3.5rem; + height: 3.5rem; + background-color: @color-background; + + .filter-icon { + flex: none; + width: 1.4rem; + height: 1.4rem; + fill: @color-secondaryvariant1-90; + } + } + .spacing { flex: 1; } @@ -173,6 +196,28 @@ } } +.selectable-inputs-modal { + .selectable-inputs-modal-container { + overflow: visible; + + .selectable-inputs-modal-content { + overflow-y: visible !important; + overflow: visible; + + .selectable-input-container { + display: flex; + gap: 1em; + flex-direction: column; + overflow: visible; + + .select-input-container { + height: 3.5em; + } + } + } + } +} + @media only screen and (min-width: @large) { .library-container { .library-content { @@ -262,6 +307,10 @@ display: none; } + .filter-container { + display: flex; + } + .spacing { display: none; } @@ -269,10 +318,6 @@ .pagination-input { margin-left: 0; } - - .filters { - display: block; - } } .meta-items-container {