Skip to content

Commit 51304f5

Browse files
mulholojquense
authored andcommitted
feat: add agenda no events msg (jquense#923)
* display message when no events are present * add post-commit, task-created files * attempt at adding `noEventsInRange` to messages * ammend default message * Add custom no agenda events story
1 parent b0a6dd7 commit 51304f5

File tree

12 files changed

+17953
-40
lines changed

12 files changed

+17953
-40
lines changed

package-lock.json

Lines changed: 17877 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@
77
"license": "MIT",
88
"main": "lib/index.js",
99
"style": "lib/css/react-big-calendar.css",
10-
"files": ["lib/", "LICENSE", "README.md", "CHANGELOG.md"],
10+
"files": [
11+
"lib/",
12+
"LICENSE",
13+
"README.md",
14+
"CHANGELOG.md"
15+
],
1116
"keywords": [
1217
"scheduler",
1318
"react-component",
@@ -20,18 +25,13 @@
2025
"clean": "rimraf lib",
2126
"clean:examples": "rimraf examples/static",
2227
"l": "lessc --autoprefix=\"ie >= 10, safari >= 8, last 2 versions\" ",
23-
"less":
24-
"npm run l src/less/styles.less ./lib/css/react-big-calendar.css && npm run less-dnd",
25-
"less-dnd":
26-
"npm run l src/addons/dragAndDrop/styles.less ./lib/addons/dragAndDrop/styles.css",
28+
"less": "npm run l src/less/styles.less ./lib/css/react-big-calendar.css && npm run less-dnd",
29+
"less-dnd": "npm run l src/addons/dragAndDrop/styles.less ./lib/addons/dragAndDrop/styles.css",
2730
"assets": "cpy src/less/* lib/less && npm run assets-addons",
2831
"assets-addons": "cpy addons/**/*.less ../lib/ --cwd=src --parents",
29-
"build":
30-
"npm run clean && babel src --out-dir lib && npm run assets && npm run less",
31-
"build:examples":
32-
"npm run clean:examples && webpack --config examples/webpack.config.js",
33-
"examples":
34-
"npm run clean:examples && webpack-dev-server --inline --hot --config examples/webpack.config.js",
32+
"build": "npm run clean && babel src --out-dir lib && npm run assets && npm run less",
33+
"build:examples": "npm run clean:examples && webpack --config examples/webpack.config.js",
34+
"examples": "npm run clean:examples && webpack-dev-server --inline --hot --config examples/webpack.config.js",
3535
"lint": "eslint src test",
3636
"storybook": "start-storybook -p 9002",
3737
"test": "npm run lint && jest",
@@ -43,7 +43,10 @@
4343
"lint-staged": {
4444
"src/**/*.js": "eslint",
4545
"test/**/*.js": "eslint",
46-
"*.{js,json,css,md}": ["prettier --write", "git add"]
46+
"*.{js,json,css,md}": [
47+
"prettier --write",
48+
"git add"
49+
]
4750
},
4851
"prettier": {
4952
"printWidth": 80,

src/Agenda.js

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,26 +48,32 @@ class Agenda extends React.Component {
4848

4949
return (
5050
<div className="rbc-agenda-view">
51-
<table ref="header" className="rbc-agenda-table">
52-
<thead>
53-
<tr>
54-
<th className="rbc-header" ref="dateCol">
55-
{messages.date}
56-
</th>
57-
<th className="rbc-header" ref="timeCol">
58-
{messages.time}
59-
</th>
60-
<th className="rbc-header">{messages.event}</th>
61-
</tr>
62-
</thead>
63-
</table>
64-
<div className="rbc-agenda-content" ref="content">
65-
<table className="rbc-agenda-table">
66-
<tbody ref="tbody">
67-
{range.map((day, idx) => this.renderDay(day, events, idx))}
68-
</tbody>
69-
</table>
70-
</div>
51+
{events.length !== 0 ? (
52+
<React.Fragment>
53+
<table ref="header" className="rbc-agenda-table">
54+
<thead>
55+
<tr>
56+
<th className="rbc-header" ref="dateCol">
57+
{messages.date}
58+
</th>
59+
<th className="rbc-header" ref="timeCol">
60+
{messages.time}
61+
</th>
62+
<th className="rbc-header">{messages.event}</th>
63+
</tr>
64+
</thead>
65+
</table>
66+
<div className="rbc-agenda-content" ref="content">
67+
<table className="rbc-agenda-table">
68+
<tbody ref="tbody">
69+
{range.map((day, idx) => this.renderDay(day, events, idx))}
70+
</tbody>
71+
</table>
72+
</div>
73+
</React.Fragment>
74+
) : (
75+
<span className="rbc-agenda-empty">{messages.noEventsInRange}</span>
76+
)}
7177
</div>
7278
)
7379
}
@@ -164,6 +170,8 @@ class Agenda extends React.Component {
164170
}
165171

166172
_adjustHeader = () => {
173+
if (!this.refs.tbody) return
174+
167175
let header = this.refs.header
168176
let firstRow = this.refs.tbody.firstChild
169177

src/Calendar.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,7 @@ class Calendar extends React.Component {
689689
date: PropTypes.node,
690690
time: PropTypes.node,
691691
event: PropTypes.node,
692+
noEventsInRange: PropTypes.node,
692693
showMore: PropTypes.func,
693694
}),
694695
}

src/DayColumn.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class DayColumn extends React.Component {
160160
events,
161161
accessors,
162162
slotMetrics,
163-
minimumStartDifference: Math.ceil(step * timeslots / 2),
163+
minimumStartDifference: Math.ceil((step * timeslots) / 2),
164164
})
165165

166166
return styledEvents.map(({ event, style }, idx) => {

src/EventEndingRow.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ class EventEndingRow extends React.Component {
2020
}
2121

2222
render() {
23-
let { segments, slotMetrics: { slots } } = this.props
23+
let {
24+
segments,
25+
slotMetrics: { slots },
26+
} = this.props
2427
let rowSegments = eventLevels(segments).levels[0]
2528

2629
let current = 1,

src/EventRow.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ class EventRow extends React.Component {
1212
...EventRowMixin.defaultProps,
1313
}
1414
render() {
15-
let { segments, slotMetrics: { slots }, className } = this.props
15+
let {
16+
segments,
17+
slotMetrics: { slots },
18+
className,
19+
} = this.props
1620

1721
let lastEnd = 1
1822

src/EventRowMixin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export default {
5858
},
5959

6060
renderSpan(slots, len, key, content = ' ') {
61-
let per = Math.abs(len) / slots * 100 + '%'
61+
let per = (Math.abs(len) / slots) * 100 + '%'
6262

6363
return (
6464
<div

src/Toolbar.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ class Toolbar extends React.Component {
1414
}
1515

1616
render() {
17-
let { localizer: { messages }, label } = this.props
17+
let {
18+
localizer: { messages },
19+
label,
20+
} = this.props
1821

1922
return (
2023
<div className="rbc-toolbar">

src/utils/TimeSlots.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ export function getSlotMetrics({ min: start, max: end, step, timeslots }) {
104104
if (dates.lt(date, start, 'minutes')) return slots[0]
105105

106106
const diffMins = dates.diff(start, date, 'minutes')
107-
return slots[(diffMins - diffMins % step) / step + offset]
107+
return slots[(diffMins - (diffMins % step)) / step + offset]
108108
},
109109

110110
startsBeforeDay(date) {
@@ -129,11 +129,11 @@ export function getSlotMetrics({ min: start, max: end, step, timeslots }) {
129129

130130
const rangeStartMin = positionFromDate(rangeStart)
131131
const rangeEndMin = positionFromDate(rangeEnd)
132-
const top = rangeStartMin / totalMin * 100
132+
const top = (rangeStartMin / totalMin) * 100
133133

134134
return {
135135
top,
136-
height: rangeEndMin / totalMin * 100 - top,
136+
height: (rangeEndMin / totalMin) * 100 - top,
137137
start: positionFromDate(rangeStart),
138138
startDate: rangeStart,
139139
end: positionFromDate(rangeEnd),

src/utils/messages.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ let defaultMessages = {
1414
today: 'today',
1515
agenda: 'agenda',
1616

17+
noEventsInRange: 'There are no events in this range.',
18+
1719
showMore: total => `+${total} more`,
1820
}
1921

stories/Calendar.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,3 +185,15 @@ storiesOf('Big Calendar', module)
185185
/>
186186
)
187187
})
188+
.add('add custom no agenda events label', () => {
189+
return (
190+
<Calendar
191+
defaultView={Calendar.Views.AGENDA}
192+
events={events}
193+
messages={{
194+
noEventsInRange:
195+
'There are no special events in this range [test message]',
196+
}}
197+
/>
198+
)
199+
})

0 commit comments

Comments
 (0)