反应大日历,向事件添加引导程序弹出窗口?

恶魔

看起来您可以为react日历组件创建自定义组件。我在看这个例子:

https://github.com/intljusticemission/react-big-calendar/blob/master/examples/demos/customView.js

但是尚不清楚如何创建自定义事件组件。我也浏览了文档,但没有明确的示例:

http://intljusticemission.github.io/react-big-calendar/examples/index.html#prop-components

我特别想为每个事件创建一个工具提示,以显示更详细的事件描述。

谁能指出一个人在哪里为react-big-calendar创建自定义组件的示例?

更新:这是日历和在月视图中呈现的一些事件的图像。我在想,自定义事件肯定应该包括“ rbc-event”和“ rbc-event-content”。要添加引导工具提示,我正在自定义事件组件中考虑以下内容:

在此处输入图片说明

这是在react-big-calendar源代码中创建事件单元组件的位置。

    return _react2.default.createElement(
              'div',
              _extends({}, props, {
                style: _extends({}, props.style, style),
                className: (0, _classnames2.default)('rbc-event', className, xClassName, {
                  'rbc-selected': selected,
                  'rbc-event-allday': isAllDay || _dates2.default.diff(start, _dates2.default.ceil(end, 'day'), 'day') > 1,
                  'rbc-event-continues-prior': continuesPrior,
                  'rbc-event-continues-after': continuesAfter
                }),
                onClick: function onClick() {
                  return onSelect(event);
                }
              }),
              _react2.default.createElement(
                'div',
                { className: 'rbc-event-content', title: title },
                Component ? _react2.default.createElement(Component, { event: event, title: title }) : title
              )
    );
  }
});

exports.default = EventCell;
module.exports = exports['default'];

我决定尝试扩展EventCell组件,当我将其作为事件组件prop传入时,该事件不再具有任何内容。不确定如何将事件详细信息传递到EventCell组件内部的'rcb-event'div中。见下文..

import React, { PropTypes } from 'react';
import MyCalendar from '../components/bigCalendar';
import _ from 'lodash';
import EventCell from 'react-big-calendar/lib/EventCell.js';

class MyEvent extends React.Component {
    constructor(props){
        super(props)
    }
    render(){
        return (
            <div className="testing">
                <EventCell />
            </div>
        );
    }
}

let components = {
    event: MyEvent
}

在这里,我将刚刚创建的组件对象传递给MyCalendar演示组件:

export default class Calendar extends React.Component {
    constructor(props) {
        super(props);

        var eventsList = Object.keys(props).map(function(k){
            return props[k];
        });

        eventsList.map(function(event){
            event["start"] = new Date(event["start"])
            event["end"] = new Date(event["end"])
        })

        this.state = {
            events: eventsList
        };
    };

    render() {
        return (
            <div>
                <MyCalendar components={components} events={this.state.events}/>
            </div>
        );
    }
}

并且,最后通过prop将组件对象传递给表示组件。确实可以在视图中成功渲染,但是正如我之前所说-没有内容。

const MyCalendar = props => (
    <div className="calendar-container">
        <BigCalendar
            selectable
            popup
            components={props.components}
            views={{month: true, week: true, day: true}}
            events={props.events}
            onSelectEvent={event => onSelectEvent(event)}
            eventPropGetter={eventStyleGetter}
            scrollToTime={new Date(1970, 1, 1, 6)}
            defaultView='month'
            defaultDate={new Date(2015, 3, 12)}
            />
    </div>
);

MyCalendar.propTypes = {
    events: PropTypes.array.isRequired,
    components: PropTypes.object.isRequired
};

似乎我应该以另一种方式走下去...有什么建议吗?

恶魔

这是我想出的,我敢肯定它可以清除-但是可以。

创建自定义事件组件,其中包括弹出窗口内容。

import React, { PropTypes } from 'react';
import MyCalendar from '../components/bigCalendar';
import _ from 'lodash';

class MyEvent extends React.Component {
    constructor(props){
        super(props)
    }
    componentDidMount(){
        MyGlobal.popOver();
    }
    render(){
        return (
        <div>
            <div    className="custom_event_content"
                    data-toggle="popover"
                    data-placement="top"
                    data-popover-content={"#custom_event_" + this.props.event.id}
                    tabIndex="0"
                    >
                {this.props.event.title}
            </div>

            <div className="hidden" id={"custom_event_" + this.props.event.id} >
              <div className="popover-heading">
                {this.props.event.driver}
              </div>

              <div className="popover-body">
                {this.props.event.title}<br/>
              </div>
            </div>
        </div>
        );
    }
}

let components = {
    event: MyEvent
}

export default class Calendar extends React.Component {
    constructor(props) {
        super(props);

        var eventsList = Object.keys(props).map(function(k){
            return props[k];
        });

        eventsList.map(function(event){
            event["start"] = new Date(event["start"])
            event["end"] = new Date(event["end"])
        })

        this.state = {
            events: eventsList
        };
    };

    render() {
        return (
            <div>
                <MyCalendar components={components} events={this.state.events}/>
            </div>
        );
    }
}

添加事件监听器:

MyGlobal.popOver = function(){
    $('body').on('click', function (e) {
        //did not click a popover toggle or popover
        if ($(e.target).data('toggle') !== 'popover'
            && $(e.target).parents('.popover.in').length === 0) {
            $('[data-toggle="popover"]').popover('hide');
        }
    });

    $("[data-toggle=popover]").popover({
        html : true,
        container: 'body',
        content: function() {
            var content = $(this).attr("data-popover-content");
            return $(content).children(".popover-body").html();
        },
        title: function() {
            var title = $(this).attr("data-popover-content");
            return $(title).children(".popover-heading").html();
        }
    });
}

将自定义道具传递给MyCalendar演示组件:

const MyCalendar = props => (
    <div className="calendar-container">
        <BigCalendar
            selectable
            popup
            components={props.components}
            views={{month: true, week: true, day: true}}
            events={props.events}
            onSelectEvent={event => onSelectEvent(event)}
            eventPropGetter={eventStyleGetter}
            scrollToTime={new Date(1970, 1, 1, 6)}
            defaultView='month'
            defaultDate={new Date(2015, 3, 12)}
            />
    </div>
);

MyCalendar.propTypes = {
    events: PropTypes.array.isRequired,
    components: PropTypes.object.isRequired
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法处理来自引导程序弹出窗口内容的事件

来自分类Dev

带引导程序弹出窗口的淘汰赛事件

来自分类Dev

动态添加的引导程序弹出窗口不起作用

来自分类Dev

反应事件处理程序。向数组添加值

来自分类Dev

在引导弹出窗口中使用全日历

来自分类Dev

引导程序弹出窗口(bootbox)中的Javascript事件不起作用

来自分类Dev

引导程序弹出窗口(bootbox)中的Javascript事件不起作用

来自分类Dev

添加了一个带有引导程序的可点击弹出窗口,但每个弹出窗口都是相同的

来自分类Dev

如何更改引导程序弹出窗口的宽度

来自分类Dev

引导程序弹出窗口太窄

来自分类Dev

填充角度ui引导程序弹出窗口

来自分类Dev

引导程序5弹出窗口失败

来自分类Dev

随机显示弹出窗口引导程序模态

来自分类Dev

在引导程序中使用按钮弹出窗口

来自分类Dev

如何向AlloyUI Scheduler的事件弹出窗口添加自定义按钮?

来自分类Dev

将HTML添加到弹出窗口的标题中(角形引导程序)

来自分类Dev

Mapbox - 向图层添加弹出事件

来自分类Dev

PowerShell日历弹出窗口

来自分类Dev

引导程序向表添加行

来自分类Dev

向JSP添加引导程序模板

来自分类Dev

PHP Google日历Api向定期事件添加提醒

来自分类Dev

角引导程序弹出窗口几秒钟后隐藏

来自分类Dev

单击按钮时启用/禁用引导程序弹出窗口

来自分类Dev

更改引导程序弹出窗口背景色

来自分类Dev

使用引导程序可视化弹出窗口

来自分类Dev

关闭引导程序模式弹出窗口时的方法调用

来自分类Dev

带有UI引导程序的弹出窗口中的Year Picker

来自分类Dev

我正在尝试从引导程序创建默认弹出窗口

来自分类Dev

没有得到角度的UI引导程序弹出窗口

Related 相关文章

热门标签

归档