UNPKG

@e-group/material-module

Version:
64 lines (58 loc) 2.14 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; import React, { forwardRef, useEffect, useState } from 'react'; import clsx from 'clsx'; import { withStyles, createStyles } from '@material-ui/core'; import Paper from '@material-ui/core/Paper'; import usePrevious from '@e-group/hooks/usePrevious'; import SurveyContext from './SurveyContext'; const styles = () => createStyles({ root: { position: 'relative' } }); const Survey = /*#__PURE__*/forwardRef((props, ref) => { const classes = props.classes, className = props.className, data = props.data, onChange = props.onChange, selectedQuestionIdProp = props.selectedQuestionId, other = _objectWithoutProperties(props, ["classes", "className", "data", "onChange", "selectedQuestionId"]); const _useState = useState(data), _useState2 = _slicedToArray(_useState, 2), questions = _useState2[0], setQuestions = _useState2[1]; const _useState3 = useState(), _useState4 = _slicedToArray(_useState3, 2), selectedQuestionId = _useState4[0], setSelectedQuestionId = _useState4[1]; const prevQuestions = usePrevious(questions); useEffect(() => { if (data) { setQuestions(data); } }, [data]); useEffect(() => { if (onChange && JSON.stringify(questions) !== JSON.stringify(prevQuestions)) { onChange(questions); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [questions]); useEffect(() => { if (selectedQuestionIdProp) { setSelectedQuestionId(selectedQuestionIdProp); } }, [selectedQuestionIdProp]); return /*#__PURE__*/React.createElement(SurveyContext.Provider, { value: { questions, setQuestions, selectedQuestionId, setSelectedQuestionId } }, /*#__PURE__*/React.createElement(Paper, _extends({ ref: ref, className: clsx(className, classes.root) }, other))); }); export default withStyles(styles)(Survey);