react-popover icon indicating copy to clipboard operation
react-popover copied to clipboard

how to pass action into popover body?

Open thisroot opened this issue 6 years ago • 2 comments

Hi, i try to pass close action into to popover body, but it cant work fo me. Where i get mistake?


togglePopover(toState) {
    const popoverIsOpen =
      typeof toState === 'boolean' ? toState : !this.state.popoverIsOpen;
    this.setState({
      popoverIsOpen,
    });
  }

...
    const popoverProps = {
      isOpen: this.state.popoverIsOpen,
      preferPlace: 'end',
      onOuterAction: e => {
        this.togglePopover(false);
      },
      body: [
        <div key="b" className={cx('popover-body')}>
          <div>
            <ChangeDayForm
              date={date}
              dayName={dayName}
              dayNum={dayNum}
              dayTypeId={dayTypeId}
              dayTypeName={dayTypeName}
              dayStart={dayStart}
              dayStop={dayStop}
              onCloseCard={e => this.togglePopover(false)}
            />
          </div>
        </div>,
      ],
    };

class ChangeDayForm extends Component {
  constructor(props) {
    super(props);
  }

  render() {
 
   ...
    return (
   ....
              <Button onClick={this.props.onCloseCard}>Отмена</Button>
    );
  }
}

thisroot avatar Jan 17 '18 16:01 thisroot

Same problem over here. Tried passing markup to body prop using string and array syntax but still cant register actions/events.

jhardin293 avatar Apr 27 '18 00:04 jhardin293

Create an external component, then render it inside the popoverProps.body.

const Test = () => (
    <div key="b" onClick={() => console.log('works')}>
      Popover contents
    </div>
);

....

const popoverProps = {
    ...
    body: <Test />,
  };

valentinvoilean avatar Jan 27 '20 19:01 valentinvoilean