blob: 529e459ea6dc68c3983ed2d4d7fbd9a96c979e43 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import React from 'react';
import styled from 'styled-components';
import { dispatch } from '../../libs/reduced-state';
import { useReducedState } from '../../libs/reduced-state/useReducedState';
import store from '../../store';
import { SET_INDENTATION, SET_MAX_LINE_LENGTH, SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS } from '../../store/actions';
import { inputTextColor, textColor } from '../../styleVariables';
import Toggle from '../../components/Toggle';
const AdvancedOptionRowWrapper = styled.div`
padding: 10px;
`;
const AdvancedOptionLabel = styled.div`
height: 20px;
line-height: 20px;
font-size: 15px;
color: ${textColor};
`;
const AdvancedOptionInput = styled.input`
border-radius: 5px;
background: rgba(0, 0, 0, 0.05);
outline: none;
font-size: 16px;
padding: 10px;
border: none;
box-shadow: inset rgba(0, 0, 0, 0.5) 0 0 10px -5px;
color: ${inputTextColor};
display: inline-block;
vertical-align: bottom;
box-sizing: border-box;
height: 40px;
width: 320px;
`;
const AdvancedOptions = () => {
const state = useReducedState(store);
return (
<div>
<AdvancedOptionRowWrapper>
<AdvancedOptionLabel>Indentation</AdvancedOptionLabel>
<AdvancedOptionInput
type="number"
min={0}
max={state.maxLineLength}
value={state.indentation}
onChange={({ target }) => {
dispatch(SET_INDENTATION, target.value);
}}
/>
</AdvancedOptionRowWrapper>
<AdvancedOptionRowWrapper>
<AdvancedOptionLabel>Max line length</AdvancedOptionLabel>
<AdvancedOptionInput
type="number"
min={state.indentation}
value={state.maxLineLength}
onChange={({ target }) => {
dispatch(SET_MAX_LINE_LENGTH, target.value);
}}
/>
</AdvancedOptionRowWrapper>
<AdvancedOptionRowWrapper>
<AdvancedOptionLabel>Dot placement</AdvancedOptionLabel>
<Toggle
height="40px"
width="320px"
checked={state.shouldPlaceDotsAfterLineBreaks}
labels={{
checked: 'After line break',
unchecked: 'Before line break',
}}
onChange={(shouldPlaceDotsAfterLineBreaks) => {
dispatch(SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS, shouldPlaceDotsAfterLineBreaks);
}}
/>
</AdvancedOptionRowWrapper>
</div>
);
};
export default AdvancedOptions;