Improve app style
This commit is contained in:
parent
26499533d3
commit
4c0bcd7585
@ -22,8 +22,9 @@ DownloadAndStream.propTypes = {
|
|||||||
|
|
||||||
const DownloadButton = ({ url }) => (
|
const DownloadButton = ({ url }) => (
|
||||||
<h5 className="d-inline">
|
<h5 className="d-inline">
|
||||||
<a href={url} className="badge badge-pill badge-primary m-1">
|
<a href={url} className="btn btn-sm btn-primary m-1">
|
||||||
<span className="fa fa-download"> </span> Download
|
<i className="fa fa-download mr-1" />
|
||||||
|
Download
|
||||||
</a>
|
</a>
|
||||||
</h5>
|
</h5>
|
||||||
);
|
);
|
||||||
@ -37,9 +38,10 @@ const StreamButton = ({ name, url, subtitles }) => {
|
|||||||
<h5 className="d-inline">
|
<h5 className="d-inline">
|
||||||
<a
|
<a
|
||||||
href="#"
|
href="#"
|
||||||
className="badge badge-pill badge-primary m-1 clickable"
|
className="btn btn-sm btn-primary m-1 clickable"
|
||||||
onClick={(e) => { e.preventDefault(); setShowModal(true) }}>
|
onClick={(e) => { e.preventDefault(); setShowModal(true) }}>
|
||||||
<span className="fa fa-play-circle"> </span> Play
|
<i className="fa fa-play-circle mr-1" />
|
||||||
|
Play
|
||||||
</a>
|
</a>
|
||||||
</h5>
|
</h5>
|
||||||
|
|
||||||
|
@ -7,9 +7,10 @@ export const ImdbBadge = ({ imdbId }) => {
|
|||||||
return (
|
return (
|
||||||
<h5 className="d-inline">
|
<h5 className="d-inline">
|
||||||
<a
|
<a
|
||||||
className="badge badge-pill badge-warning m-1"
|
className="btn btn-sm btn-warning m-1"
|
||||||
href={`https://www.imdb.com/title/${imdbId}`}>
|
href={`https://www.imdb.com/title/${imdbId}`}>
|
||||||
IMDb <i className="fa fa-external-link"></i>
|
IMDb
|
||||||
|
<i className="ml-1 fa fa-external-link"></i>
|
||||||
</a>
|
</a>
|
||||||
</h5>
|
</h5>
|
||||||
);
|
);
|
||||||
|
@ -13,7 +13,7 @@ export const ShowMore = ({ children, id, inLibrary }) => {
|
|||||||
<span>
|
<span>
|
||||||
<a
|
<a
|
||||||
onClick={() => setDisplay(true)}
|
onClick={() => setDisplay(true)}
|
||||||
className="badge badge-pill badge-info clickable"
|
className="badge badge-pill badge-secondary clickable"
|
||||||
>
|
>
|
||||||
More options ...
|
More options ...
|
||||||
</a>
|
</a>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import React from "react"
|
import React, { useState } from "react"
|
||||||
import PropTypes from "prop-types"
|
import PropTypes from "prop-types"
|
||||||
import { List } from "immutable"
|
import { List } from "immutable"
|
||||||
|
|
||||||
@ -11,24 +11,37 @@ export const SubtitlesButton = ({
|
|||||||
search,
|
search,
|
||||||
}) => {
|
}) => {
|
||||||
if (inLibrary === false) { return null }
|
if (inLibrary === false) { return null }
|
||||||
|
/* eslint-disable */
|
||||||
|
const [show, setShow] = useState(false);
|
||||||
|
/* eslint-enable */
|
||||||
|
|
||||||
|
const onSelect = (eventKey) => {
|
||||||
|
if (eventKey === null || eventKey != 1) {
|
||||||
|
setShow(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const onToggle = (isOpen, event, metadata) => {
|
||||||
|
// Don't close on select
|
||||||
|
if (metadata && metadata.source !== "select") {
|
||||||
|
setShow(isOpen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const count = (subtitles && subtitles.size !== 0) ? subtitles.size : 0;
|
const count = (subtitles && subtitles.size !== 0) ? subtitles.size : 0;
|
||||||
return (
|
return (
|
||||||
<span className="mr-1 mb-1">
|
<span className="mr-1 mb-1">
|
||||||
<Dropdown drop="up">
|
<Dropdown drop="up" show={show} onToggle={onToggle} onSelect={onSelect}>
|
||||||
<Dropdown.Toggle variant="success">
|
<Dropdown.Toggle variant="secondary" bsPrefix="btn-sm w-md-100">
|
||||||
<i className="fa fa-language mr-1" />
|
<i className="fa fa-commenting mr-1" />
|
||||||
Subtitles
|
Subtitles
|
||||||
<span className="ml-1 badge badge-pill badge-light">
|
<span className="ml-1 badge badge-pill badge-info">
|
||||||
{count}
|
{count}
|
||||||
</span>
|
</span>
|
||||||
</Dropdown.Toggle>
|
</Dropdown.Toggle>
|
||||||
|
|
||||||
<Dropdown.Menu>
|
<Dropdown.Menu>
|
||||||
<Dropdown.Header>
|
<Dropdown.Item eventKey={1} onClick={search} >
|
||||||
<span className="text-warning">Advanced</span>
|
|
||||||
</Dropdown.Header>
|
|
||||||
<Dropdown.Item onClick={search} >
|
|
||||||
<i className={`fa ${ searching ? "fa-spin" : "" } fa-refresh mr-1`} />
|
<i className={`fa ${ searching ? "fa-spin" : "" } fa-refresh mr-1`} />
|
||||||
Automatic search
|
Automatic search
|
||||||
</Dropdown.Item>
|
</Dropdown.Item>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import React from "react"
|
import React, { useState } from "react"
|
||||||
import PropTypes from "prop-types"
|
import PropTypes from "prop-types"
|
||||||
import { List } from "immutable"
|
import { List } from "immutable"
|
||||||
import { connect } from "react-redux"
|
import { connect } from "react-redux"
|
||||||
@ -50,24 +50,39 @@ const torrentsButton = ({
|
|||||||
addTorrent,
|
addTorrent,
|
||||||
url,
|
url,
|
||||||
}) => {
|
}) => {
|
||||||
|
/* eslint-disable */
|
||||||
|
const [show, setShow] = useState(false);
|
||||||
|
/* eslint-enable */
|
||||||
const entries = buildMenuItems(torrents);
|
const entries = buildMenuItems(torrents);
|
||||||
const count = (torrents && torrents.size !== 0) ? torrents.size : 0;
|
const count = (torrents && torrents.size !== 0) ? torrents.size : 0;
|
||||||
|
|
||||||
|
const onSelect = (eventKey) => {
|
||||||
|
// Close the dropdown if the eventkey is not specified
|
||||||
|
if (eventKey === null) {
|
||||||
|
setShow(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const onToggle = (isOpen, event, metadata) => {
|
||||||
|
// Don't close on select
|
||||||
|
if (metadata && metadata.source !== "select") {
|
||||||
|
setShow(isOpen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<span className="mr-1 mb-1">
|
<span className="mr-1 mb-1">
|
||||||
<Dropdown drop="up">
|
<Dropdown drop="up" show={show} onToggle={onToggle} onSelect={onSelect}>
|
||||||
<Dropdown.Toggle variant="primary">
|
<Dropdown.Toggle variant="secondary" bsPrefix="btn-sm w-md-100">
|
||||||
<i className="fa fa-magnet mr-1" />
|
<i className="fa fa-magnet mr-1" />
|
||||||
Torrents
|
Torrents
|
||||||
<span className="ml-1 badge badge-pill badge-light">
|
<span className="ml-1 badge badge-pill badge-info">
|
||||||
{count}
|
{count}
|
||||||
</span>
|
</span>
|
||||||
</Dropdown.Toggle>
|
</Dropdown.Toggle>
|
||||||
|
|
||||||
<Dropdown.Menu>
|
<Dropdown.Menu>
|
||||||
<Dropdown.Header>
|
<Dropdown.Item eventKey={1} onClick={search} >
|
||||||
<span className="text-warning">Advanced</span>
|
|
||||||
</Dropdown.Header>
|
|
||||||
<Dropdown.Item onClick={search} >
|
|
||||||
<i className={`fa ${ searching ? "fa-spin" : "" } fa-refresh mr-1`} />
|
<i className={`fa ${ searching ? "fa-spin" : "" } fa-refresh mr-1`} />
|
||||||
Automatic search
|
Automatic search
|
||||||
</Dropdown.Item>
|
</Dropdown.Item>
|
||||||
|
@ -11,6 +11,10 @@ import Poster from "./poster"
|
|||||||
import Loader from "../loader/loader"
|
import Loader from "../loader/loader"
|
||||||
|
|
||||||
const ListPosters = (props) => {
|
const ListPosters = (props) => {
|
||||||
|
if (props.loading) {
|
||||||
|
return (<Loader />);
|
||||||
|
}
|
||||||
|
|
||||||
let elmts = props.data;
|
let elmts = props.data;
|
||||||
const listSize = elmts !== undefined ? elmts.size : 0;
|
const listSize = elmts !== undefined ? elmts.size : 0;
|
||||||
|
|
||||||
@ -174,10 +178,6 @@ const Posters = (props) => {
|
|||||||
}
|
}
|
||||||
}, [move])
|
}, [move])
|
||||||
|
|
||||||
if (props.loading) {
|
|
||||||
return (<Loader />);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (props.elmts.size === 0) {
|
if (props.elmts.size === 0) {
|
||||||
return (
|
return (
|
||||||
<div className="jumbotron">
|
<div className="jumbotron">
|
||||||
|
@ -2,15 +2,13 @@ import React from "react"
|
|||||||
import Loading from "react-loading"
|
import Loading from "react-loading"
|
||||||
|
|
||||||
const Loader = () => (
|
const Loader = () => (
|
||||||
<div className="row" id="container">
|
<div className="col-12 col-md-6 offset-md-3">
|
||||||
<div className="col-12 col-md-6 offset-md-3">
|
<Loading
|
||||||
<Loading
|
type="bars"
|
||||||
type="bars"
|
height={"100%"}
|
||||||
height={"100%"}
|
width={"100%"}
|
||||||
width={"100%"}
|
color="#EBEBEB"
|
||||||
color="#EBEBEB"
|
/>
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
export default Loader;
|
export default Loader;
|
||||||
|
@ -6,19 +6,17 @@ import { Episode } from "./episode"
|
|||||||
|
|
||||||
export const Season = (props) => {
|
export const Season = (props) => {
|
||||||
const [show, setShow] = useState(false);
|
const [show, setShow] = useState(false);
|
||||||
const visibility = show ? "d-flex flex-column" : "d-none";
|
|
||||||
const icon = show ? "down" : "left"
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="card mb-3">
|
<div className="card mb-3 show-season">
|
||||||
<div className="card-header clickable" onClick={() => setShow(!show)}>
|
<div className="card-header clickable" onClick={() => setShow(!show)}>
|
||||||
<h5 className="m-0">
|
<h5 className="m-0">
|
||||||
Season {props.season}
|
Season {props.season}
|
||||||
<small className="text-primary"> — ({props.data.toList().size} episodes)</small>
|
<small className="text-primary"> — ({props.data.toList().size} episodes)</small>
|
||||||
<i className={`float-right fa fa-chevron-${icon}`}></i>
|
<i className={`float-right fa fa-chevron-${show ? "down" : "left"}`}></i>
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div className={`card-body ${visibility}`}>
|
<div className={`card-body ${show ? "d-flex flex-column" : "d-none"}`}>
|
||||||
{props.data.toList().map(function(episode) {
|
{props.data.toList().map(function(episode) {
|
||||||
let key = `${episode.get("season")}-${episode.get("episode")}`;
|
let key = `${episode.get("season")}-${episode.get("episode")}`;
|
||||||
return (
|
return (
|
||||||
|
@ -7,6 +7,7 @@ import { Season } from "./season"
|
|||||||
export const SeasonsList = (props) => (
|
export const SeasonsList = (props) => (
|
||||||
<div className="col col-12 col-md-10 offset-md-1">
|
<div className="col col-12 col-md-10 offset-md-1">
|
||||||
{props.data.get("seasons").entrySeq().map(function([season, data]) {
|
{props.data.get("seasons").entrySeq().map(function([season, data]) {
|
||||||
|
if (season === 0) { return null }
|
||||||
return (
|
return (
|
||||||
<Season
|
<Season
|
||||||
key={`season-list-key-${season}`}
|
key={`season-list-key-${season}`}
|
||||||
|
@ -13,6 +13,12 @@ $fa-font-path: "~font-awesome/fonts";
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-down(md) {
|
||||||
|
.w-md-100 {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$body-padding-top: $navbar-padding-y + 3rem;
|
$body-padding-top: $navbar-padding-y + 3rem;
|
||||||
|
|
||||||
body {
|
body {
|
||||||
@ -84,6 +90,10 @@ div.show.dropdown.nav-item > div {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.show-season > div.card-body {
|
||||||
|
background-color: rgba($body-bg, .5)
|
||||||
|
}
|
||||||
|
|
||||||
.episode-thumb {
|
.episode-thumb {
|
||||||
img {
|
img {
|
||||||
@include media-breakpoint-down(md) {
|
@include media-breakpoint-down(md) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user