Home Reference Source Repository

src/appComponent/controlSection/threeDimensionControllers/dimensionsController/dimensionsController.js

import { h, Component } from 'preact';
import { connect } from 'preact-redux';

import { removeDimension, changeProperty, addDimension} from './dimensionsActionCreator.js';
import DimensionControllerElement from './dimensionsControllerPresentation.js';

/**
 * present list of products
 * @param {object} state global state which contains all state we created
 * @param {object} ownProps associated property in parent component
 */
const mapStateToProps = (state, ownProps) => {
	return {
		list: state.dimensionsReducer[ownProps.label],
		label:ownProps.label
	}
};

/**
 * present list of products
 * @param {object} dispatch to run a reducer
 * @param {object} ownProps associated property in parent component
 */
const mapDispatchToProps = (dispatch, ownProps) => {
	return {
		onRemove: ({index}) => {
			dispatch(removeDimension({index,label:ownProps.label}));
		},
		onChange: ({name,value,index}) => {
			dispatch(changeProperty({index,name,value,label:ownProps.label}));
		},
		onAddDimension: () => {
			dispatch(addDimension(ownProps.label));
		}
	}
};

/**
 * connect DimensionControllerElement to redux store with above methods
 * @type {object}
 */
const DimensionController = connect(
	mapStateToProps,
	mapDispatchToProps
)(DimensionControllerElement);


export default DimensionController