PopinFixedHeader.jsx 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import React from 'react'
  2. import classnames from 'classnames'
  3. import PropTypes from 'prop-types'
  4. class PopinFixedHeader extends React.Component {
  5. constructor (props) {
  6. super(props)
  7. this.state = {
  8. editTitle: false,
  9. editTitleValue: ''
  10. }
  11. }
  12. componentDidUpdate (prevProps) {
  13. if (prevProps.title !== this.props.title) this.setState({editTitleValue: this.props.title})
  14. }
  15. onChangeTitle = e => {
  16. const newTitle = e.target.value
  17. this.setState({editTitleValue: newTitle})
  18. }
  19. handleClickChangeTitleBtn = () => {
  20. if (this.state.editTitle) this.props.onValidateChangeTitle(this.state.editTitleValue)
  21. this.setState(prevState => ({editTitle: !prevState.editTitle}))
  22. }
  23. render () {
  24. const { customClass, customColor, faIcon, title, idRoleUserWorkspace, onClickCloseBtn } = this.props
  25. return (
  26. <div className={classnames('wsContentGeneric__header', `${customClass}__header`)} style={{backgroundColor: customColor}}>
  27. <div className={classnames('wsContentGeneric__header__icon', `${customClass}__header__icon`)}>
  28. <i className={`fa fa-${faIcon}`} />
  29. </div>
  30. <div className={classnames('wsContentGeneric__header__title mr-auto', `${customClass}__header__title`)}>
  31. {this.state.editTitle
  32. ? <input className='wsContentGeneric__header__title__editiontitle editiontitle' value={this.state.editTitleValue} onChange={this.onChangeTitle} />
  33. : <div>{title}</div>
  34. }
  35. </div>
  36. {idRoleUserWorkspace >= 2 &&
  37. <div
  38. className={classnames('wsContentGeneric__header__edittitle', `${customClass}__header__changetitle`)}
  39. onClick={this.handleClickChangeTitleBtn}
  40. >
  41. {this.state.editTitle ? <i className='fa fa-check' title='Valider le Titre' /> : <i className='fa fa-pencil' title='Modifier le Titre' />}
  42. </div>
  43. }
  44. <div
  45. className={classnames('wsContentGeneric__header__close', `${customClass}__header__close`)}
  46. onClick={onClickCloseBtn}
  47. >
  48. <i className='fa fa-times' />
  49. </div>
  50. </div>
  51. )
  52. }
  53. }
  54. export default PopinFixedHeader
  55. PopinFixedHeader.propTypes = {
  56. faIcon: PropTypes.string.isRequired,
  57. onClickCloseBtn: PropTypes.func.isRequired,
  58. customClass: PropTypes.string,
  59. customColor: PropTypes.string,
  60. title: PropTypes.string,
  61. idRoleUserWorkspace: PropTypes.number,
  62. onValidateChangeTitle: PropTypes.func
  63. }
  64. PopinFixedHeader.defaultProps = {
  65. customClass: '',
  66. customColor: '',
  67. title: '',
  68. idRoleUserWorkspace: 1,
  69. onChangeTitle: () => {}
  70. }