mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-05-18 23:32:44 +00:00
episode streams panel title missing resolved
This commit is contained in:
parent
d567c3b914
commit
62f03fa7a4
3 changed files with 82 additions and 22 deletions
|
|
@ -19,6 +19,9 @@ const StreamsList = ({ className, video, ...props }) => {
|
||||||
const onAddonSelected = React.useCallback((event) => {
|
const onAddonSelected = React.useCallback((event) => {
|
||||||
setSelectedAddon(event.value);
|
setSelectedAddon(event.value);
|
||||||
}, []);
|
}, []);
|
||||||
|
const backButtonOnClick = React.useCallback(() => {
|
||||||
|
window.history.back();
|
||||||
|
}, []);
|
||||||
const streamsByAddon = React.useMemo(() => {
|
const streamsByAddon = React.useMemo(() => {
|
||||||
return props.streams
|
return props.streams
|
||||||
.filter((streams) => streams.content.type === 'Ready')
|
.filter((streams) => streams.content.type === 'Ready')
|
||||||
|
|
@ -92,15 +95,32 @@ const StreamsList = ({ className, video, ...props }) => {
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
{
|
<div className={styles['select-choices-wrapper']}>
|
||||||
Object.keys(streamsByAddon).length > 1 ?
|
{ video ? (
|
||||||
<Multiselect
|
<React.Fragment>
|
||||||
{...selectableOptions}
|
<Button className={classnames(styles['button-container'], styles['back-button-container'])} tabIndex={-1} onClick={backButtonOnClick}>
|
||||||
className={styles['select-input-container']}
|
<Icon className={styles['icon']} name={'chevron-back'} />
|
||||||
/>
|
</Button>
|
||||||
|
<div className={styles['episode-title']}>
|
||||||
|
{`S${video?.season}E${video?.episode} ${(video?.title)?.toLowerCase()?.replace(/\b\w/g, (char) => char.toUpperCase())}
|
||||||
|
`}
|
||||||
|
</div>
|
||||||
|
</React.Fragment>
|
||||||
|
)
|
||||||
:
|
:
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
Object.keys(streamsByAddon).length > 1 ? (
|
||||||
|
<Multiselect
|
||||||
|
{...selectableOptions}
|
||||||
|
className={styles['select-input-container']}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
:
|
||||||
|
null
|
||||||
|
}
|
||||||
|
</div>
|
||||||
<div className={styles['streams-container']}>
|
<div className={styles['streams-container']}>
|
||||||
{filteredStreams.map((stream, index) => (
|
{filteredStreams.map((stream, index) => (
|
||||||
<Stream
|
<Stream
|
||||||
|
|
|
||||||
|
|
@ -40,27 +40,67 @@
|
||||||
color: var(--primary-foreground-color);
|
color: var(--primary-foreground-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.select-choices-wrapper {
|
||||||
.select-input-container {
|
display: flex;
|
||||||
flex: 0 0 auto;
|
align-items: center;
|
||||||
|
z-index: 1;
|
||||||
margin: 1em 1em 0 1em;
|
margin: 1em 1em 0 1em;
|
||||||
background: none;
|
gap: 0 0.5em;
|
||||||
|
overflow: visible;
|
||||||
|
|
||||||
&:hover, &:focus, &:global(.active) {
|
.back-button-container {
|
||||||
background-color: var(--overlay-color);
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
padding: 1em;
|
||||||
|
max-height: 3em;
|
||||||
|
.icon {
|
||||||
|
width: 1.5em;
|
||||||
|
height: 1.5em;
|
||||||
|
color: var(--primary-foreground-color);
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
&:hover, &:global(.active) {
|
||||||
|
background-color: var(--overlay-color);
|
||||||
|
opacity: 1;
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
color: var(--primary-foreground-color);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
& >.multiselect-label {
|
.episode-title {
|
||||||
|
min-width: 45%;
|
||||||
color: var(--primary-foreground-color);
|
color: var(--primary-foreground-color);
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
& >.multiselect-icon {
|
.select-input-container {
|
||||||
color: var(--primary-foreground-color);
|
min-width: 40%;
|
||||||
}
|
flex: 0 0 auto;
|
||||||
|
flex-grow: 1;
|
||||||
.multiselect-menu-container {
|
background: none;
|
||||||
max-height: calc(3.2rem * 7);
|
&:hover, &:focus, &:global(.active) {
|
||||||
overflow: auto;
|
background-color: var(--overlay-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
& >.multiselect-label {
|
||||||
|
color: var(--primary-foreground-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
& >.multiselect-icon {
|
||||||
|
color: var(--primary-foreground-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.multiselect-menu-container {
|
||||||
|
max-height: calc(3.2rem * 7);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w
|
||||||
<div className={styles['info-container']}>
|
<div className={styles['info-container']}>
|
||||||
<div className={styles['title-container']}>
|
<div className={styles['title-container']}>
|
||||||
{episode !== null && !isNaN(episode) ? `${episode}. ` : null}
|
{episode !== null && !isNaN(episode) ? `${episode}. ` : null}
|
||||||
{typeof title === 'string' && title.length > 0 ? title : id}
|
{typeof title === 'string' && title.length > 0 ? title.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase()) : id}
|
||||||
</div>
|
</div>
|
||||||
<div className={styles['flex-row-container']}>
|
<div className={styles['flex-row-container']}>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue