import React from 'react'; import PropTypes from 'prop-types'; import { translate } from 'react-i18next'; import SlackNotification from './SlackNotification'; import GrantSelector from './SavePageControls/GrantSelector'; class SavePageControls extends React.PureComponent { constructor(props) { super(props); this.state = { pageId: this.props.pageId, }; this.getCurrentOptionsToSave = this.getCurrentOptionsToSave.bind(this); this.submit = this.submit.bind(this); } componentWillMount() { } getCurrentOptionsToSave() { const slackNotificationOptions = this.refs.slackNotification.getCurrentOptionsToSave(); const grantSelectorOptions = this.refs.grantSelector.getCurrentOptionsToSave(); return Object.assign(slackNotificationOptions, grantSelectorOptions); } /** * update pageId of state * @param {string} pageId */ setPageId(pageId) { this.setState({pageId}); } submit() { this.props.onSubmit(); } render() { const { t } = this.props; const label = this.state.pageId == null ? t('Create') : t('Update'); return (
{ if (this.refs.grantSelector == null) { this.refs.grantSelector = elem.getWrappedInstance(); } }} grant={this.props.grant} grantGroupId={this.props.grantGroupId} grantGroupName={this.props.grantGroupName} />
); } } SavePageControls.propTypes = { t: PropTypes.func.isRequired, // i18next crowi: PropTypes.object.isRequired, onSubmit: PropTypes.func.isRequired, pageId: PropTypes.string, // for SlackNotification pagePath: PropTypes.string, slackChannels: PropTypes.string, // for GrantSelector grant: PropTypes.number, grantGroupId: PropTypes.string, grantGroupName: PropTypes.string, }; export default translate()(SavePageControls);