diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index abcfcf59e..20aee78c8 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -1,9 +1,9 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import Icon from 'stremio-icons/dom';
-import { Input, Popup, Checkbox } from 'stremio/common';
-import classnames from 'classnames';
-import styles from './styles';
+const React = require('react');
+const PropTypes = require('prop-types');
+const classnames = require('classnames');
+const { TextInput, Button, Dropdown, Checkbox, MainNavBar } = require('stremio/common');
+const styles = require('./styles');
+const Input = TextInput
const SECTIONS_ORDER = {
'General': 1,
@@ -11,7 +11,7 @@ const SECTIONS_ORDER = {
'Streaming': 3
};
-class Settings extends Component {
+class Settings extends React.Component {
constructor(props) {
super(props);
@@ -128,24 +128,6 @@ class Settings extends Component {
});
}
- activate = (id) => {
- this.setState(({ inputs }) => ({
- inputs: inputs.map((input) => ({
- ...input,
- active: id === input.id
- }))
- }));
- }
-
- deactivate = (id) => {
- this.setState(({ inputs }) => ({
- inputs: inputs.map((input) => ({
- ...input,
- active: id === input.id ? false : input.active
- }))
- }));
- }
-
toggleCheckbox = (id) => {
this.setState(({ inputs }) => ({
inputs: inputs.map((input) => ({
@@ -162,41 +144,29 @@ class Settings extends Component {
return {
inputs: inputs.map((input) => ({
...input,
- value: data.id === input.id ? data.option : input.value,
- active: false
+ value: data.name === input.id ? data.value : input.value,
}))
}
})
}
- renderPopup({ ref, activate, deactivate, active, value, id, options, onClick }) {
+ renderDropdown({ value, id, options, onClick}) {
+ options = options.map(o=>({value: o, label: o}))
return (
-
-
-
- {value}
-
-
-
-
-
- {options.map((option) =>
-
{option}
- )}
-
-
-
+
);
}
render() {
return (
+
+
{this.state.sections.map((section) =>
-
+
)}
@@ -223,10 +193,7 @@ class Settings extends Component {
return (
{input.header ?
{input.header}
: null}
- {this.renderPopup({
- ref: input.ref,
- activate: this.activate,
- deactivate: this.deactivate,
+ {this.renderDropdown({
active: input.active,
id: input.id,
value: input.value,
@@ -239,17 +206,18 @@ class Settings extends Component {
return (
{input.header ?
{input.header}
: null}
-
{input.label}
+
);
} else if (input.type === 'button') {
return (
{input.header ?
{input.header}
: null}
-
- {input.icon ?
: null}
+
);
} else if (input.type === 'checkbox') {
@@ -266,7 +234,7 @@ class Settings extends Component {
{input.header ?
{input.header}
: null}
- {input.icon ?
: null}
+ {/* {input.icon ?
: null} */}
{input.label}
@@ -284,6 +252,7 @@ class Settings extends Component {
)}
+
);
}
}
@@ -309,4 +278,4 @@ Settings.defaultProps = {
settingsConfiguration: []
}
-export default Settings;
+module.exports = Settings;
diff --git a/src/routes/Settings/index.js b/src/routes/Settings/index.js
index 6a02e4e24..0e6819989 100644
--- a/src/routes/Settings/index.js
+++ b/src/routes/Settings/index.js
@@ -1,3 +1,3 @@
-import Settings from './Settings';
+const Settings = require('./Settings');
-export default Settings;
+module.exports = Settings;
diff --git a/src/routes/Settings/styles.less b/src/routes/Settings/styles.less
index 9b7f6e72b..8e3d92883 100644
--- a/src/routes/Settings/styles.less
+++ b/src/routes/Settings/styles.less
@@ -4,280 +4,294 @@
font-size: 14px;
}
-.settings-container {
+.settings-parent-container {
+ display: flex;
+ flex-direction: column;
width: 100%;
height: 100%;
- display: flex;
- flex-direction: row;
+ background-color: var(--color-background);
- .side-menu {
- padding: var(--spacing);
- width: 17em;
- display: flex;
- flex-direction: column;
- background-color: var(--color-backgroundlighter);
-
- .section-label {
- padding: var(--spacing);
- font-size: 1.1em;
- border: calc(var(--focusable-border-size) * 0.5) solid transparent;
- color: var(--color-surfacelight);
- cursor: pointer;
-
- &.selected {
- color: var(--color-surfacelighter);
- background-color: var(--color-background);
-
- &:hover {
- background-color: var(--color-background);
- }
- }
-
- &:focus {
- border-color: var(--color-surfacelighter);
- }
-
- &:hover {
- color: var(--color-surfacelighter);
- background-color: var(--color-surface20);
- border-color: transparent;
- }
- }
+ .nav-bar {
+ flex: none;
+ align-self: stretch;
}
- .scroll-container {
- padding: 0 calc(var(--spacing) * 2);
- flex: 1;
- overflow-y: auto;
+ .settings-container {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: row;
+ background-color: var(--color-backgroundlight);
- .section {
- padding: calc(var(--spacing) * 4) calc(var(--spacing) * 2);
+ .side-menu {
+ padding: var(--spacing);
+ width: 17em;
+ display: flex;
+ flex-direction: column;
+ background-color: var(--color-backgroundlighter);
- .section-header {
- margin: 0 calc(var(--spacing) * 1.5) calc(var(--spacing) * 1.5) calc(var(--spacing) * 1.5);
- font-size: 2em;
- color: var(--color-surfacelighter);
+ .section-label {
+ padding: var(--spacing);
+ font-size: 1.1em;
+ border: calc(var(--focusable-border-size) * 0.5) solid transparent;
+ color: var(--color-surfacelight);
+ cursor: pointer;
+
+ &.selected {
+ color: var(--color-surfacelighter);
+ background-color: var(--color-background);
+
+ &:hover {
+ background-color: var(--color-background);
+ }
+ }
+
+ &:focus {
+ border-color: var(--color-surfacelighter);
+ }
+
+ &:hover {
+ color: var(--color-surfacelighter);
+ background-color: var(--color-surface20);
+ border-color: transparent;
+ }
}
+ }
- .input-container {
- margin: calc(var(--spacing) * 1.5);
- display: flex;
- flex-direction: column;
+ .scroll-container {
+ padding: 0 calc(var(--spacing) * 2);
+ flex: 1;
+ overflow-y: auto;
- .input-header {
- margin-bottom: calc(var(--spacing) * 0.5);
+ .section {
+ padding: calc(var(--spacing) * 4) calc(var(--spacing) * 2);
+
+ .section-header {
+ margin: 0 calc(var(--spacing) * 1.5) calc(var(--spacing) * 1.5) calc(var(--spacing) * 1.5);
+ font-size: 2em;
color: var(--color-surfacelighter);
}
- &.user-container {
- flex-direction: row;
- align-items: center;
+ .input-container {
+ margin: calc(var(--spacing) * 1.5);
+ display: flex;
+ flex-direction: column;
- .avatar {
- margin: 0 var(--spacing);
- width: 4.2em;
- height: 4.2em;
- border-radius: 50%;
- border: var(--focusable-border-size) solid var(--color-primary);
- background-size: cover;
- background-position: center;
- background-repeat: no-repeat;
- }
-
- .email {
+ .input-header {
+ margin-bottom: calc(var(--spacing) * 0.5);
color: var(--color-surfacelighter);
}
- }
- &.select-container {
- .bar-button {
- padding: calc(var(--spacing) * 0.5);
- width: var(--input-width);
- display: flex;
+ &.user-container {
flex-direction: row;
align-items: center;
- justify-content: space-between;
- border: calc(var(--focusable-border-size) * 0.5) solid var(--color-primary);
- cursor: pointer;
- .value {
- width: 100%;
- color: var(--color-surface);
+ .avatar {
+ margin: 0 var(--spacing);
+ width: 4.2em;
+ height: 4.2em;
+ border-radius: 50%;
+ border: var(--focusable-border-size) solid var(--color-primary);
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
}
- .icon {
- width: var(--spacing);
- height: var(--spacing);
- fill: var(--color-surface);
+ .email {
+ color: var(--color-surfacelighter);
}
+ }
- &:focus {
- border-color: var(--color-surfacelighter);
- }
-
- &:hover {
- background-color: var(--color-backgroundlight);
+ &.select-container {
+ .bar-button {
+ padding: calc(var(--spacing) * 0.5);
+ width: var(--input-width);
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ border: calc(var(--focusable-border-size) * 0.5) solid var(--color-primary);
+ cursor: pointer;
.value {
- color: var(--color-surfacelighter);
+ width: 100%;
+ color: var(--color-surface);
}
.icon {
+ width: var(--spacing);
+ height: var(--spacing);
+ fill: var(--color-surface);
+ }
+
+ &:focus {
+ border-color: var(--color-surfacelighter);
+ }
+
+ &:hover {
+ background-color: var(--color-backgroundlight);
+
+ .value {
+ color: var(--color-surfacelighter);
+ }
+
+ .icon {
+ fill: var(--color-surfacelighter);
+ }
+ }
+
+ &:global(.active) {
+ background-color: var(--color-surfacelighter);
+
+ .value {
+ color: var(--color-backgrounddarker);
+ }
+
+ .icon {
+ fill: var(--color-backgrounddarker);
+ }
+ }
+ }
+ }
+
+ &.link-container {
+ margin: var(--spacing) calc(var(--spacing) * 1.5);
+
+ .link {
+ display: block;
+ color: var(--color-secondarylight);
+
+ &:focus {
+ color: var(--color-surface);
+ }
+
+ &:hover {
+ color: var(--color-surfacelighter);
+ }
+ }
+ }
+
+ &.button-container {
+ .button {
+ padding: calc(var(--spacing) * 0.7);
+ width: var(--input-width);
+ min-height: calc(var(--input-width) * 0.09);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: var(--color-primary);
+ border: calc(var(--focusable-border-size) * 0.5) solid transparent;
+ cursor: pointer;
+
+ .icon {
+ width: 1.4em;
+ height: 100%;
+ margin-right: calc(var(--spacing) * 0.5);
fill: var(--color-surfacelighter);
}
- }
-
- &:global(.active) {
- background-color: var(--color-surfacelighter);
-
- .value {
- color: var(--color-backgrounddarker);
- }
-
- .icon {
- fill: var(--color-backgrounddarker);
- }
- }
- }
- }
-
- &.link-container {
- margin: var(--spacing) calc(var(--spacing) * 1.5);
-
- .link {
- display: block;
- color: var(--color-secondarylight);
-
- &:focus {
- color: var(--color-surface);
- }
-
- &:hover {
- color: var(--color-surfacelighter);
- }
- }
- }
-
- &.button-container {
- .button {
- padding: calc(var(--spacing) * 0.7);
- width: var(--input-width);
- min-height: calc(var(--input-width) * 0.09);
- display: flex;
- align-items: center;
- justify-content: center;
- background-color: var(--color-primary);
- border: calc(var(--focusable-border-size) * 0.5) solid transparent;
- cursor: pointer;
-
- .icon {
- width: 1.4em;
- height: 100%;
- margin-right: calc(var(--spacing) * 0.5);
- fill: var(--color-surfacelighter);
- }
-
- .label {
- max-width: 30em;
- color: var(--color-surfacelighter);
- }
-
- &:focus {
- border-color: var(--color-surfacelighter);
- }
-
- &:hover {
- border-color: transparent;
- background-color: var(--color-primarylight);
- }
- }
- }
-
- &.checkbox-container {
- .checkbox {
- --icon-size: 1.2em;
- --icon-color: var(--color-surface);
- --icon-background-color: transparent;
-
- display: flex;
- flex-direction: row;
- align-items: center;
- cursor: pointer;
-
- .label {
- width: 100%;
- margin-left: 0.5em;
- color: var(--color-surfacelight);
- }
-
- &:global(.checked) {
- --icon-color: var(--color-surfacelight);
- --icon-background-color: var(--color-primary);
- }
-
- &:focus, &:hover {
- --icon-color: var(--color-surfacelighter);
.label {
+ max-width: 30em;
+ color: var(--color-surfacelighter);
+ }
+
+ &:focus {
+ border-color: var(--color-surfacelighter);
+ }
+
+ &:hover {
+ border-color: transparent;
+ background-color: var(--color-primarylight);
+ }
+ }
+ }
+
+ &.checkbox-container {
+ .checkbox {
+ --icon-size: 1.2em;
+ --icon-color: var(--color-surface);
+ --icon-background-color: transparent;
+
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ cursor: pointer;
+
+ .label {
+ width: 100%;
+ margin-left: 0.5em;
+ color: var(--color-surfacelight);
+ }
+
+ &:global(.checked) {
+ --icon-color: var(--color-surfacelight);
+ --icon-background-color: var(--color-primary);
+ }
+
+ &:focus, &:hover {
+ --icon-color: var(--color-surfacelighter);
+
+ .label {
+ color: var(--color-surfacelighter);
+ }
+ }
+ }
+ }
+
+ &.text-container {
+ .text {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+
+ .icon {
+ margin-right: calc(var(--spacing) * 0.5);
+ width: var(--spacing);
+ height: var(--spacing);
+ fill: var(--color-signal5);
+ }
+
+ .x-icon {
+ margin-right: calc(var(--spacing) * 0.5);
+ width: var(--spacing);
+ height: var(--spacing);
+ fill: var(--color-signal2);
+ }
+
+ .label {
+ width: 100%;
color: var(--color-surfacelighter);
}
}
}
- }
- &.text-container {
- .text {
- display: flex;
- flex-direction: row;
- align-items: center;
+ &.color-container {
+ .color-picker {
+ width: var(--input-width);
+ height: calc(var(--input-width) * 0.08);
+ border: calc(var(--focusable-border-size) * 0.5) solid transparent;
+ cursor: pointer;
- .icon {
- margin-right: calc(var(--spacing) * 0.5);
- width: var(--spacing);
- height: var(--spacing);
- fill: var(--color-signal5);
- }
+ &:focus {
+ border-color: var(--color-surfacelighter);
+ }
- .x-icon {
- margin-right: calc(var(--spacing) * 0.5);
- width: var(--spacing);
- height: var(--spacing);
- fill: var(--color-signal2);
- }
-
- .label {
- width: 100%;
- color: var(--color-surfacelighter);
+ &:hover {
+ border-color: transparent;
+ }
}
}
}
- &.color-container {
- .color-picker {
- width: var(--input-width);
- height: calc(var(--input-width) * 0.08);
- border: calc(var(--focusable-border-size) * 0.5) solid transparent;
- cursor: pointer;
-
- &:focus {
- border-color: var(--color-surfacelighter);
- }
-
- &:hover {
- border-color: transparent;
- }
- }
+ >:last-child {
+ margin-bottom: 0;
}
}
- >:last-child {
- margin-bottom: 0;
+ >:not(:last-child) {
+ border-bottom: calc(var(--focusable-border-size) * 0.5) solid var(--color-primary);
}
}
-
- >:not(:last-child) {
- border-bottom: calc(var(--focusable-border-size) * 0.5) solid var(--color-primary);
- }
}
}