refactor(Discover): use modal to display filters instead of Filters component

This commit is contained in:
Tim 2022-02-18 14:16:05 +01:00
parent 9dbd3dc929
commit 585fca48b0
2 changed files with 29 additions and 66 deletions

View file

@ -9,7 +9,6 @@ const { AddonDetailsModal, Button, MainNavBars, MetaItem, Image, MetaPreview, Mu
const useDiscover = require('./useDiscover'); const useDiscover = require('./useDiscover');
const useSelectableInputs = require('./useSelectableInputs'); const useSelectableInputs = require('./useSelectableInputs');
const styles = require('./styles'); const styles = require('./styles');
const { Filters } = require('stremio/common');
const Discover = ({ urlParams, queryParams }) => { const Discover = ({ urlParams, queryParams }) => {
const { core } = useServices(); const { core } = useServices();
@ -107,9 +106,6 @@ const Discover = ({ urlParams, queryParams }) => {
: :
<PaginationInput label={'1'} className={classnames(styles['pagination-input'], styles['pagination-input-placeholder'])} /> <PaginationInput label={'1'} className={classnames(styles['pagination-input'], styles['pagination-input-placeholder'])} />
} }
<Filters className={styles['filters']}>
{ renderMultiselectsInputs() }
</Filters>
</div> </div>
: :
null null
@ -194,24 +190,10 @@ const Discover = ({ urlParams, queryParams }) => {
</div> </div>
{ {
inputsModalOpen && discover.defaultRequest ? inputsModalOpen && discover.defaultRequest ?
<ModalDialog title={'Catalog filters'} className={styles['selectable-inputs-modal-container']} onCloseRequest={closeInputsModal}> <ModalDialog title={'Catalog filters'} className={styles['selectable-inputs-modal']} onCloseRequest={closeInputsModal}>
{selectInputs.map(({ title, isRequired, options, selected, renderLabelText, onSelect }, index) => ( <div className={styles['selectable-input-container']}>
<div key={index} className={styles['selectable-input-container']}> { renderMultiselectsInputs() }
<div className={styles['select-input-label']} title={title}> </div>
{title}
{isRequired ? '*' : null}
</div>
<Multiselect
className={styles['select-input']}
mode={'modal'}
title={title}
options={options}
selected={selected}
renderLabelText={renderLabelText}
onSelect={onSelect}
/>
</div>
))}
</ModalDialog> </ModalDialog>
: :
null null

View file

@ -18,6 +18,11 @@
pagination-label: label; pagination-label: label;
} }
:import('~stremio/common/ModalDialog/styles.less') {
selectable-inputs-modal-container: modal-dialog-container;
selectable-inputs-modal-content: modal-dialog-content;
}
.discover-container { .discover-container {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -39,7 +44,7 @@
flex: none; flex: none;
align-self: stretch; align-self: stretch;
display: flex; display: flex;
flex-direction: row; flex-direction: row-reverse;
padding: 1.5rem; padding: 1.5rem;
overflow: visible; overflow: visible;
@ -79,7 +84,6 @@
justify-content: center; justify-content: center;
width: 3.5rem; width: 3.5rem;
height: 3.5rem; height: 3.5rem;
margin-left: 1.5rem;
background-color: @color-background; background-color: @color-background;
.filter-icon { .filter-icon {
@ -246,48 +250,25 @@
} }
} }
.selectable-inputs-modal-container { .selectable-inputs-modal {
.selectable-input-container { .selectable-inputs-modal-container {
display: flex; overflow: visible;
flex-direction: row;
align-items: center;
&:not(:last-child) { .selectable-inputs-modal-content {
margin-bottom: 1rem; overflow-y: visible !important;
} overflow: visible;
.select-input-label { .selectable-input-container {
flex: none; display: flex;
width: 10rem; gap: 1em;
max-height: 2.4em; flex-direction: column;
margin-right: 1.5rem; overflow: visible;
font-size: 1.1rem;
color: @color-background-dark2-90;
}
.select-input { .select-input {
flex: none; height: 3.5em;
width: 15rem; }
height: 3.5rem;
background-color: @color-surface-light2;
&:hover, &:focus {
background-color: @color-surface-light3;
} }
}
&:focus {
outline-color: @color-background-dark2;
}
.multiselect-label {
font-weight: normal;
color: @color-background-dark2-90;
}
.multiselect-icon {
fill: @color-background-dark2-90;
}
}
} }
} }
@ -470,6 +451,10 @@
display: none; display: none;
} }
.filter-container {
display: flex;
}
.spacing { .spacing {
display: none; display: none;
} }
@ -477,10 +462,6 @@
.pagination-input { .pagination-input {
margin-left: 0; margin-left: 0;
} }
.filters {
display: block;
}
} }
.meta-items-container { .meta-items-container {