Advertisement
Guest User

class properties

a guest
Dec 11th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { connect } from 'react-redux';
  4.  
  5. import PageNumberingColorPicker from 'components/generic/pageNumberingColorPicker/PageNumberingColorPicker';
  6. import { showInformationModal } from 'actions/commonActions';
  7. import { closeColorPickerModal, updatePageNumberingSettings } from 'actions/editorActions';
  8.  
  9. import { getColorPickerModalType } from 'selectors/editorSelectors';
  10. import { getSelectedColorsPaletteWithPrimary } from 'selectors/editorToolbarSelectors';
  11. import { getLeftNumberingColor, getRightNumberingColor } from 'selectors/spreadSettingsSelectors';
  12.  
  13. import { findColorInPalettesByRGB } from 'utils/palettes/findColorInPalettes';
  14. import keysCodes from 'constants/keysCodes';
  15. import FontColorPickerTypes from 'constants/fontColorPickerTypes';
  16.  
  17. import './ColorPickerModalDialog.less';
  18.  
  19. class ColorPickerModalDialog extends React.Component {
  20.  
  21.   state = {
  22.     selectedColor: this.getSelectedColor()
  23.   };
  24.  
  25.   componentDidMount() {
  26.     this.onKeyDownListener = this.handleKeyDown;
  27.     document.addEventListener('keydown', this.onKeyDownListener);
  28.   }
  29.  
  30.   componentWillUnmount() {
  31.     document.removeEventListener('keydown', this.onKeyDownListener);
  32.     this.onKeyDownListener = null;
  33.   }
  34.  
  35.   getSelectedColor = () => {
  36.     switch (this.props.colorPickerModalType) {
  37.       case FontColorPickerTypes.LEFT_FONT_COLOR: {
  38.         return this.props.leftNumberingColor.get('rgb');
  39.       }
  40.       case FontColorPickerTypes.RIGHT_FONT_COLOR: {
  41.         return this.props.rightNumberingColor.get('rgb');
  42.       }
  43.     }
  44.   };
  45.  
  46.   handleKeyDown = (event) => {
  47.     if (event.keyCode === keysCodes.escape) {
  48.       this.onClose();
  49.     }
  50.   };
  51.  
  52.   setFontColor = (selectedColor) => {
  53.     this.setState({ selectedColor });
  54.   };
  55.  
  56.   onClose = () => {
  57.     this.props.closeColorPickerModal();
  58.   };
  59.  
  60.   onSave(colorChanged, selectedColor, palette, colorPickerModalType) {
  61.     if (colorChanged) {
  62.       const colorId = findColorInPalettesByRGB(selectedColor, palette).get('id');
  63.       this.props.updatePageNumberingSettings({key: colorPickerModalType, value: colorId});
  64.       this.onClose();
  65.     }
  66.   }
  67.  
  68.   render() {
  69.     const { selectedColor } = this.state;
  70.     const { palette, colorPickerModalType } = this.props;
  71.     const colorChanged = selectedColor !== this.getSelectedColor();
  72.  
  73.     return (
  74.       <div className='color-picker-modal-dialog' id='color-picker-modal-dialog'>
  75.         <div className='color-picker-modal-dialog__container'>
  76.           <div className='modal-content'>
  77.             <PageNumberingColorPicker
  78.               selectedColor={selectedColor}
  79.               onSelectColor={this.setFontColor}
  80.               onSave={this.onSave.bind(this, colorChanged, selectedColor, palette, colorPickerModalType)}
  81.               onClose={this.onClose}
  82.               palette={palette}
  83.               disabled={!colorChanged}
  84.             />
  85.           </div>
  86.         </div>
  87.       </div>
  88.     );
  89.   }
  90. }
  91.  
  92. ColorPickerModalDialog.propTypes = {
  93.   palette: PropTypes.object.isRequired,
  94.   colorPickerModalType: PropTypes.string.isRequired,
  95.   leftNumberingColor: PropTypes.object.isRequired,
  96.   rightNumberingColor: PropTypes.object.isRequired,
  97.   showInformationModal: PropTypes.func.isRequired,
  98.   closeColorPickerModal: PropTypes.func.isRequired,
  99.   updatePageNumberingSettings: PropTypes.func.isRequired
  100. };
  101.  
  102. const mapStateToProps = (appState) => ({
  103.   palette: getSelectedColorsPaletteWithPrimary(appState),
  104.   colorPickerModalType: getColorPickerModalType(appState),
  105.   leftNumberingColor: getLeftNumberingColor(appState),
  106.   rightNumberingColor: getRightNumberingColor(appState)
  107. });
  108.  
  109. const mapActionsToProps = {
  110.   showInformationModal,
  111.   closeColorPickerModal,
  112.   updatePageNumberingSettings
  113. };
  114.  
  115. export default connect(
  116.   mapStateToProps,
  117.   mapActionsToProps
  118. )(ColorPickerModalDialog);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement