Skip to content

Commit 53e8635

Browse files
author
Ives van Hoorne
committed
Adjust font size
1 parent 1db3693 commit 53e8635

File tree

10 files changed

+124
-30
lines changed

10 files changed

+124
-30
lines changed

src/app/components/Input.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import styled from 'styled-components';
2+
3+
export default styled.input`
4+
background-color: rgba(0, 0, 0, 0.3);
5+
border: none;
6+
outline: none;
7+
border-radius: 4px;
8+
border: 1px solid rgba(0,0,0,.1);
9+
color: white;
10+
padding: 2px 0;
11+
width: inherit;
12+
`;

src/app/components/sandbox/CodeEditor/index.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,13 @@ export default class CodeEditor extends React.PureComponent {
312312
server: typeof CodeMirror.TernServer;
313313

314314
render() {
315-
const { title, canSave, onlyViewMode, modulePath } = this.props;
315+
const {
316+
title,
317+
canSave,
318+
onlyViewMode,
319+
modulePath,
320+
preferences,
321+
} = this.props;
316322

317323
return (
318324
<Container>
@@ -323,7 +329,10 @@ export default class CodeEditor extends React.PureComponent {
323329
path={modulePath}
324330
/>
325331
<CodeContainer>
326-
<div style={{ height: '100%' }} ref={this.getCodeMirror} />
332+
<div
333+
style={{ height: '100%', fontSize: preferences.fontSize || 14 }}
334+
ref={this.getCodeMirror}
335+
/>
327336
</CodeContainer>
328337
</Container>
329338
);

src/app/pages/Sandbox/Editor/Workspace/Preferences/Preference.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import React from 'react';
22
import styled from 'styled-components';
33

4-
import Switch from 'app/components/Switch';
54
import Tooltip from 'app/components/Tooltip';
5+
import PreferenceSwitch from './PreferenceSwitch';
6+
import PreferenceNumber from './PreferenceNumber';
67

78
const Container = styled.div`
89
display: flex;
@@ -14,21 +15,24 @@ const Container = styled.div`
1415

1516
type Props = {
1617
title: string,
17-
enabled: boolean,
18-
onClick: (on: boolean) => void,
18+
value: any,
19+
setValue: (value: any) => any,
1920
tooltip: ?string,
2021
};
2122

2223
export default class Preference extends React.Component {
2324
props: Props;
2425

25-
handleClick = () => {
26-
const { enabled, onClick } = this.props;
27-
onClick(!enabled);
26+
getOptionComponent = (value: boolean | number) => {
27+
if (typeof value === 'boolean') {
28+
return <PreferenceSwitch setValue={this.props.setValue} value={value} />;
29+
}
30+
31+
return <PreferenceNumber setValue={this.props.setValue} value={value} />;
2832
};
2933

3034
render() {
31-
const { title, enabled, tooltip } = this.props;
35+
const { title, value, tooltip } = this.props;
3236

3337
const Title = tooltip
3438
? <Tooltip position="right" title={tooltip}>{title}</Tooltip>
@@ -37,13 +41,9 @@ export default class Preference extends React.Component {
3741
return (
3842
<Container>
3943
{Title}
40-
<Switch
41-
onClick={this.handleClick}
42-
small
43-
offMode
44-
secondary
45-
right={enabled}
46-
/>
44+
<div style={{ width: 48 }}>
45+
{this.getOptionComponent(value)}
46+
</div>
4747
</Container>
4848
);
4949
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import React from 'react';
2+
3+
import Input from 'app/components/Input';
4+
5+
type Props = {
6+
value: boolean,
7+
setValue: boolean => any,
8+
};
9+
10+
export default class PreferenceInput extends React.PureComponent {
11+
props: Props;
12+
13+
handleChange = e => {
14+
const value = e.target.value;
15+
16+
if (!Number.isNaN(+value)) {
17+
this.props.setValue(+value);
18+
}
19+
};
20+
21+
render() {
22+
const { value } = this.props;
23+
return <Input type="number" value={value} onChange={this.handleChange} />;
24+
}
25+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import React from 'react';
2+
import Switch from 'app/components/Switch';
3+
4+
type Props = {
5+
value: boolean,
6+
setValue: boolean => any,
7+
};
8+
9+
export default class PreferenceSwitch extends React.PureComponent {
10+
props: Props;
11+
handleClick = () => {
12+
this.props.setValue(!this.props.value);
13+
};
14+
15+
render() {
16+
const { value } = this.props;
17+
return (
18+
<Switch
19+
onClick={this.handleClick}
20+
small
21+
offMode
22+
secondary
23+
right={value}
24+
/>
25+
);
26+
}
27+
}

src/app/pages/Sandbox/Editor/Workspace/Preferences/index.js

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,39 +36,44 @@ const Preferences = ({ preferences, preferencesActions }: Props) => (
3636
<PreferenceContainer>
3737
<Preference
3838
title="Autocomplete"
39-
enabled={preferences.autoCompleteEnabled}
40-
onClick={preferencesActions.setAutoCompletePreference}
39+
value={preferences.autoCompleteEnabled}
40+
setValue={preferencesActions.setAutoCompletePreference}
4141
/>
4242
<Preference
4343
title="Linter"
4444
tooltip="Made possible by eslint"
45-
enabled={preferences.lintEnabled}
46-
onClick={preferencesActions.setLintPreference}
45+
value={preferences.lintEnabled}
46+
setValue={preferencesActions.setLintPreference}
4747
/>
4848
<Preference
4949
title="Prettify on save"
5050
tooltip="Made possible by Prettier"
51-
enabled={preferences.prettifyOnSaveEnabled}
52-
onClick={preferencesActions.setPrettifyOnSavePreference}
51+
value={preferences.prettifyOnSaveEnabled}
52+
setValue={preferencesActions.setPrettifyOnSavePreference}
5353
/>
5454
<Preference
5555
title="VIM Mode"
56-
enabled={preferences.vimMode}
57-
onClick={preferencesActions.setVimPreference}
56+
value={preferences.vimMode}
57+
setValue={preferencesActions.setVimPreference}
58+
/>
59+
<Preference
60+
title="Font size"
61+
value={preferences.fontSize}
62+
setValue={preferencesActions.setFontSizePreference}
5863
/>
5964
</PreferenceContainer>
6065
<WorkspaceSubtitle>Preview</WorkspaceSubtitle>
6166
<PreferenceContainer>
6267
<Preference
6368
title="Live Preview"
64-
enabled={preferences.livePreviewEnabled}
65-
onClick={preferencesActions.setLivePreview}
69+
value={preferences.livePreviewEnabled}
70+
setValue={preferencesActions.setLivePreview}
6671
tooltip="Only update on save"
6772
/>
6873
<Preference
6974
title="Instant preview"
70-
enabled={preferences.instantPreviewEnabled}
71-
onClick={preferencesActions.setInstantPreview}
75+
value={preferences.instantPreviewEnabled}
76+
setValue={preferencesActions.setInstantPreview}
7277
/>
7378
</PreferenceContainer>
7479
</Container>

src/app/store/preferences/actions.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ import {
77
PRETTIFY_ON_SAVE,
88
LINT_ENABLED,
99
INSTANT_PREVIEW,
10+
FONT_SIZE,
1011
} from './keys';
1112

1213
export const SET_PREFERENCE_AUTOCOMPLETE = 'SET_PREFERENCE_AUTOCOMPLETE';
1314
export const SET_PREFERENCE_VIM_MODE = 'SET_PREFERENCE_VIM_MODE';
15+
export const SET_PREFERENCE_FONT_SIZE = 'SET_PREFERENCE_FONT_SIZE';
1416
export const SET_PREFERENCE_LIVE_PREVIEW = 'SET_PREFERENCE_LIVE_PREVIEW';
1517
export const SET_PREFERENCE_PRETTIFY_ON_SAVE =
1618
'SET_PREFERENCE_PRETTIFY_ON_SAVE';
@@ -83,4 +85,13 @@ export default {
8385
option: instantPreview,
8486
});
8587
},
88+
89+
setFontSizePreference: (fontSize: number) => (dispatch: Function) => {
90+
setOption(FONT_SIZE, fontSize);
91+
92+
dispatch({
93+
type: SET_PREFERENCE_FONT_SIZE,
94+
option: fontSize,
95+
});
96+
},
8697
};

src/app/store/preferences/keys.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ export const LIVE_PREVIEW = 'settings.livepreview';
44
export const INSTANT_PREVIEW = 'settings.instantpreview';
55
export const PRETTIFY_ON_SAVE = 'settings.prettifyonsave';
66
export const LINT_ENABLED = 'settings.lintenabled';
7+
export const FONT_SIZE = 'settings.fontsize';

src/app/store/preferences/reducer.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
SET_PREFERENCE_PRETTIFY_ON_SAVE,
1111
SET_PREFERENCE_LINT,
1212
SET_INSTANT_PREVIEW,
13+
SET_PREFERENCE_FONT_SIZE,
1314
} from './actions';
1415
import {
1516
AUTO_COMPLETE,
@@ -18,12 +19,13 @@ import {
1819
PRETTIFY_ON_SAVE,
1920
LINT_ENABLED,
2021
INSTANT_PREVIEW,
22+
FONT_SIZE,
2123
} from './keys';
2224

2325
const getKey = (key, defaultVal) => {
2426
try {
2527
const result = store.get(key);
26-
return result === undefined ? !!defaultVal : result;
28+
return result === undefined ? defaultVal : result;
2729
} catch (e) {
2830
console.error(e);
2931
return undefined;
@@ -37,6 +39,7 @@ const initialState: Preferences = {
3739
prettifyOnSaveEnabled: getKey(PRETTIFY_ON_SAVE, false),
3840
lintEnabled: getKey(LINT_ENABLED, false),
3941
instantPreviewEnabled: getKey(INSTANT_PREVIEW, false),
42+
fontSize: getKey(FONT_SIZE, 14),
4043
};
4144

4245
export default (state: Preferences = initialState, action): Preferences => {
@@ -53,6 +56,8 @@ export default (state: Preferences = initialState, action): Preferences => {
5356
return { ...state, lintEnabled: action.option };
5457
case SET_INSTANT_PREVIEW:
5558
return { ...state, instantPreviewEnabled: action.option };
59+
case SET_PREFERENCE_FONT_SIZE:
60+
return { ...state, fontSize: action.option };
5661
default: {
5762
return state;
5863
}

src/app/utils/codemirror.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ export const getCodeMirror = (el, doc) => {
3131
background: ${theme.background2()};
3232
color: #e0e0e0;
3333
height: 100%;
34-
font-size: 14px;
3534
font-weight: 500;
3635
}
3736
.cm-s-oceanic div.CodeMirror-selected { background: #374140; }

0 commit comments

Comments
 (0)