aboutsummaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
authorLibravatar Mahadevan Sreenivasan <mahadevan_sv@yahoo.com>2020-04-14 14:56:16 +0530
committerLibravatar GitHub <noreply@github.com>2020-04-14 10:26:16 +0100
commit100016e38098ff389b2d6899dee76413da26f2ae (patch)
treebcb0f69ef87b4fb91905da2a58538d3e8cc828e5 /src/components
parentNew Crowdin translations (#495) (diff)
downloadferdium-app-100016e38098ff389b2d6899dee76413da26f2ae.tar.gz
ferdium-app-100016e38098ff389b2d6899dee76413da26f2ae.tar.zst
ferdium-app-100016e38098ff389b2d6899dee76413da26f2ae.zip
Expose Dark Reader settings (#568)
* feat: Expose DarkReader settings to users - In the service model, expose an object darkReaderSetting which contains brightness, contrast and sepia values. - In EditServiceScreen, provide 3 form options for brightness, contrast and Sepia. Additionally onSubmit() form, capture the darkreader settings data onto formdata.darkReaderSettings to update in the service - In EditServiceForm, if darkModeEnabled is checked, show 3 sliders for controlling darkreader settings - Create a new Slider control and customize it according to the application's theme and dark theme. - In Webview Recipe, load the darkReader settings from service settings and pass it to the darkReader library. * feat: Darkreader settings - Lint fixes * feat: DarkReader settings - refactor code in editservicescreen.js Co-Authored-By: Sampath Kumar Krishnan <sampath3493@gmail.com> * feat: Darkreader settings - Fix a crash where service.darkReaderSettings is null while creating a new service - Remove isDarkModeEnabled prop to EditServiceForm as it is no longer required. * fix: Update EditServiceScreen - Set the default value of darkReader Brightness, Contrast and Sepia to undefined as per @vantezzen 's suggestion. - Updated the check provided by @mahadevans87 Co-authored-by: Sampath Kumar Krishnan <sampath3493@gmail.com> Co-authored-by: Sampath Kumar Krishnan <sampathBlam@users.noreply.github.com>
Diffstat (limited to 'src/components')
-rw-r--r--src/components/settings/services/EditServiceForm.js17
-rw-r--r--src/components/ui/Slider.js65
2 files changed, 81 insertions, 1 deletions
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 98051d78f..bb4f4a76f 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -12,6 +12,7 @@ import Service from '../../../models/Service';
12import Tabs, { TabItem } from '../../ui/Tabs'; 12import Tabs, { TabItem } from '../../ui/Tabs';
13import Input from '../../ui/Input'; 13import Input from '../../ui/Input';
14import Toggle from '../../ui/Toggle'; 14import Toggle from '../../ui/Toggle';
15import Slider from '../../ui/Slider';
15import Button from '../../ui/Button'; 16import Button from '../../ui/Button';
16import ImageUpload from '../../ui/ImageUpload'; 17import ImageUpload from '../../ui/ImageUpload';
17import Select from '../../ui/Select'; 18import Select from '../../ui/Select';
@@ -105,6 +106,10 @@ const messages = defineMessages({
105 id: 'settings.service.form.headlineGeneral', 106 id: 'settings.service.form.headlineGeneral',
106 defaultMessage: '!!!General', 107 defaultMessage: '!!!General',
107 }, 108 },
109 headlineDarkReaderSettings: {
110 id: 'settings.service.form.headlineDarkReaderSettings',
111 defaultMessage: '!!!DarkReader Settings',
112 },
108 iconDelete: { 113 iconDelete: {
109 id: 'settings.service.form.iconDelete', 114 id: 'settings.service.form.iconDelete',
110 defaultMessage: '!!!Delete', 115 defaultMessage: '!!!Delete',
@@ -359,8 +364,18 @@ export default @observer class EditServiceForm extends Component {
359 364
360 <div className="settings__settings-group"> 365 <div className="settings__settings-group">
361 <h3>{intl.formatMessage(messages.headlineGeneral)}</h3> 366 <h3>{intl.formatMessage(messages.headlineGeneral)}</h3>
362 <Toggle field={form.$('isDarkModeEnabled')} />
363 <Toggle field={form.$('isEnabled')} /> 367 <Toggle field={form.$('isEnabled')} />
368 <Toggle field={form.$('isDarkModeEnabled')} />
369 {form.$('isDarkModeEnabled').value
370 && (
371 <>
372 <h3>{intl.formatMessage(messages.headlineDarkReaderSettings)}</h3>
373 <Slider field={form.$('darkReaderBrightness')} />
374 <Slider field={form.$('darkReaderContrast')} />
375 <Slider field={form.$('darkReaderSepia')} />
376 </>
377 )
378 }
364 </div> 379 </div>
365 </div> 380 </div>
366 <div className="service-icon"> 381 <div className="service-icon">
diff --git a/src/components/ui/Slider.js b/src/components/ui/Slider.js
new file mode 100644
index 000000000..b00a6a3f8
--- /dev/null
+++ b/src/components/ui/Slider.js
@@ -0,0 +1,65 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import classnames from 'classnames';
5import { Field } from 'mobx-react-form';
6
7export default @observer class Slider extends Component {
8 static propTypes = {
9 field: PropTypes.instanceOf(Field).isRequired,
10 className: PropTypes.string,
11 showLabel: PropTypes.bool,
12 disabled: PropTypes.bool,
13 };
14
15 static defaultProps = {
16 className: '',
17 showLabel: true,
18 disabled: false,
19 };
20
21 onChange(e) {
22 const { field } = this.props;
23
24 field.onChange(e);
25 }
26
27 render() {
28 const {
29 field,
30 className,
31 showLabel,
32 disabled,
33 } = this.props;
34
35 if (field.value === '' && field.default !== '') {
36 field.value = field.default;
37 }
38
39 return (
40 <div
41 className={classnames([
42 'franz-form__field',
43 'franz-form__slider-wrapper',
44 className,
45 ])}
46 >
47 <div className="slider-container">
48 <input
49 className="slider"
50 type="range"
51 id={field.id}
52 name={field.name}
53 value={field.value}
54 min="1"
55 max="100"
56 onChange={e => (!disabled ? this.onChange(e) : null)}
57 />
58 </div>
59
60 {field.error && <div className={field.error}>{field.error}</div>}
61 {field.label && showLabel && <label className="franz-form__label" htmlFor={field.id}>{field.label}</label>}
62 </div>
63 );
64 }
65}