Skip to content

Commit 0856cd8

Browse files
authored
0.20.0
0.20.0
1 parent 8cf6f57 commit 0856cd8

24 files changed

+786
-482
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,22 @@ and this project adheres (more or less) to [Semantic Versioning](http://semver.o
77

88
## Unreleased
99

10+
### 0.20.0
11+
12+
### improvements
13+
* eliminate extra renders on every scroll - #357 [acemac](https://github.com/acemac)
14+
15+
### Fixed
16+
* When the `date` prop on a `CustomMarker` changes the marker will now move on the timeline - #421 [kevinmanncito](https://github.com/kevinmanncito) [ilaiwi](https://github.com/ilaiwi)
17+
* Header has a bounce effect - #311 [acemac](https://github.com/acemac)
18+
19+
####dev
20+
21+
* update to `react-testing-library` version 5
22+
* remove deprecated `toBeInDom`
23+
24+
25+
1026
### 0.19.0
1127

1228
### Added

README.md

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -540,37 +540,26 @@ let items = [
540540

541541
itemRenderer: ({
542542
item,
543-
timelineContext,
544543
itemContext,
545544
getItemProps,
546-
getResizeProps,
545+
getResizeProps
547546
}) => {
548547
const { left: leftResizeProps, right: rightResizeProps } = getResizeProps()
549548
return (
550-
<div
551-
{...getItemProps(item.itemProps) }
552-
>
553-
{itemContext.useResizeHandle && itemContext.showInnerContentsRender ? (
554-
<div {...leftResizeProps} />
555-
) : (
556-
''
557-
)}
558-
559-
{itemContext.showInnerContentsRender && <div
549+
<div {...getItemProps(item.itemProps)}>
550+
{itemContext.useResizeHandle ? <div {...leftResizeProps} /> : ''}
551+
552+
<div
560553
className="rct-item-content"
561-
style={{maxHeight: `${itemContext.dimensions.height}`}}
554+
style={{ maxHeight: `${itemContext.dimensions.height}` }}
562555
>
563556
{itemContext.title}
564-
</div>}
565-
557+
</div>
566558

567-
{itemContext.useResizeHandle && itemContext.showInnerContentsRender ? (
568-
<div {...rightResizeProps} />
569-
) : (
570-
''
571-
)}
559+
{itemContext.useResizeHandle ? <div {...rightResizeProps} /> : ''}
572560
</div>
573-
)
561+
)}
562+
574563
}
575564
```
576565

@@ -787,15 +776,8 @@ You need to include the `Timeline.css` file, either via static file reference or
787776

788777
## How can I have items with different colors?
789778

790-
[Items](https://github.com/namespace-ee/react-calendar-timeline#items) have a "className" parameter. For example if you have "standard" items and "analysis" items, then you can just add an "analysis" class for your analysis items and then change the css backgroundColor property for them.
791-
792-
You will then need to override the default CSS rule:
793-
794-
```css
795-
.react-calendar-timeline .rct-items .rct-item.analysis {
796-
background-color: #68efad;
797-
}
798-
```
779+
Now you can use item renderer for rendering items with different colors [itemRenderer](https://github.com/namespace-ee/react-calendar-timeline#itemrenderer).
780+
Please refer to [examples](https://github.com/namespace-ee/react-calendar-timeline/tree/master/examples#custom-item-rendering) for a sandbox example
799781

800782
## How can I add a sidebar on the right?
801783

__tests__/components/Header/Header.test.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const defaultProps = {
2222
stickyHeader: true,
2323
headerLabelGroupHeight: 15,
2424
headerLabelHeight: 15,
25-
registerScroll: () => {},
25+
scrollHeaderRef: () => {},
2626
headerRef: () => {}
2727
}
2828

@@ -33,6 +33,23 @@ const selectors = {
3333

3434
describe('Header', () => {
3535
describe('timeline-elements-header', () => {
36+
it('accepts scrollHeaderRef callback', () => {
37+
const scrollHeaderRef = jest.fn()
38+
39+
const props = {
40+
...defaultProps,
41+
scrollHeaderRef: scrollHeaderRef
42+
}
43+
44+
mount(<Header {...props} />)
45+
46+
expect(scrollHeaderRef).toHaveBeenCalledTimes(1)
47+
48+
const mockCallParam = scrollHeaderRef.mock.calls[0][0]
49+
50+
expect(mockCallParam.dataset.testid).toBe('header')
51+
})
52+
3653
it('accepts headerRef callback', () => {
3754
const headerRefMock = jest.fn()
3855

__tests__/components/Header/TimelineElementsHeader.test.js

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const defaultProps = {
1616
subHeaderLabelFormats: {},
1717
headerLabelGroupHeight: 0,
1818
headerLabelHeight: 0,
19-
registerScroll: () => {}
19+
scrollHeaderRef: () => {}
2020
}
2121

2222
describe('Header', () => {
@@ -37,42 +37,20 @@ describe('Header', () => {
3737
expect(mouseDownMock).not.toHaveBeenCalled()
3838
})
3939

40-
describe('scroll sync', () => {
41-
it('call to registerScroll listener updates scrollLeft of root element', () => {
42-
const registerScrollMock = jest.fn()
43-
const props = {
44-
...defaultProps,
45-
registerScroll: registerScrollMock
46-
}
40+
it('accepts scrollHeaderRef callback', () => {
41+
const scrollHeaderRef = jest.fn()
4742

48-
const wrapper = mount(<TimelineElementsHeader {...props} />)
43+
const props = {
44+
...defaultProps,
45+
scrollHeaderRef: scrollHeaderRef
46+
}
4947

50-
expect(wrapper.getDOMNode().scrollLeft).toBe(0)
48+
mount(<TimelineElementsHeader {...props} />)
5149

52-
const scrollListener = registerScrollMock.mock.calls[0][0]
50+
expect(scrollHeaderRef).toHaveBeenCalledTimes(1)
5351

54-
const scrollX = 100
52+
const mockCallParam = scrollHeaderRef.mock.calls[0][0]
5553

56-
scrollListener(scrollX)
57-
58-
expect(wrapper.getDOMNode().scrollLeft).toBe(scrollX)
59-
})
60-
it('scrollLeft is not set if scrollX is null', () => {
61-
const registerScrollMock = jest.fn()
62-
const props = {
63-
...defaultProps,
64-
registerScroll: registerScrollMock
65-
}
66-
67-
const wrapper = mount(<TimelineElementsHeader {...props} />)
68-
69-
expect(wrapper.getDOMNode().scrollLeft).toBe(0)
70-
71-
const scrollListener = registerScrollMock.mock.calls[0][0]
72-
73-
scrollListener(undefined)
74-
75-
expect(wrapper.getDOMNode().scrollLeft).toBe(0)
76-
})
54+
expect(mockCallParam.dataset.testid).toBe('header')
7755
})
7856
})

__tests__/components/Markers/CursorMarker.test.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from 'react'
2-
import { render, Simulate } from 'react-testing-library'
2+
import { render, fireEvent, cleanup } from 'react-testing-library'
33
import 'jest-dom/extend-expect'
44
import TimelineMarkers from 'lib/markers/public/TimelineMarkers'
55
import CursorMarker from 'lib/markers/public/CursorMarker'
@@ -14,6 +14,7 @@ import { MarkerCanvasProvider } from 'lib/markers/MarkerCanvasContext'
1414
*/
1515

1616
describe('CursorMarker', () => {
17+
afterEach(cleanup)
1718
const defaultCursorMarkerTestId = 'default-cursor-marker'
1819
it('renders one', () => {
1920
const subscribeToMouseOverMock = jest.fn()
@@ -34,7 +35,7 @@ describe('CursorMarker', () => {
3435
isCursorOverCanvas: true
3536
})
3637

37-
expect(getByTestId(defaultCursorMarkerTestId)).toBeInTheDOM()
38+
expect(getByTestId(defaultCursorMarkerTestId)).toBeInTheDocument()
3839
})
3940

4041
it('renders with custom renderer', () => {
@@ -58,7 +59,7 @@ describe('CursorMarker', () => {
5859
isCursorOverCanvas: true
5960
})
6061

61-
expect(getByTestId(customDataIdSelector)).toBeInTheDOM()
62+
expect(getByTestId(customDataIdSelector)).toBeInTheDocument()
6263
})
6364

6465
it('styles.left based on callback leftOffset', () => {
@@ -150,10 +151,10 @@ describe('CursorMarker', () => {
150151
isCursorOverCanvas: true
151152
})
152153

153-
expect(queryByTestId(defaultCursorMarkerTestId)).toBeInTheDOM()
154+
expect(queryByTestId(defaultCursorMarkerTestId)).toBeInTheDocument()
154155

155-
Simulate.click(getByText('Hide Cursor Marker'))
156+
fireEvent.click(getByText('Hide Cursor Marker'))
156157

157-
expect(queryByTestId(defaultCursorMarkerTestId)).not.toBeInTheDOM()
158+
expect(queryByTestId(defaultCursorMarkerTestId)).not.toBeInTheDocument()
158159
})
159160
})

__tests__/components/Markers/CustomMarker.test.js

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import React from 'react'
2-
import { render, Simulate } from 'react-testing-library'
2+
import { render, fireEvent, cleanup } from 'react-testing-library'
33
import 'jest-dom/extend-expect'
44
import TimelineMarkers from 'lib/markers/public/TimelineMarkers'
55
import CustomMarker from 'lib/markers/public/CustomMarker'
66
import { RenderWrapper } from 'test-utility/marker-renderer'
77

88
describe('CustomMarker', () => {
9+
afterEach(cleanup)
910
const defaultCustomMarkerTestId = 'default-customer-marker-id'
1011
it('renders one', () => {
1112
const { getByTestId } = render(
@@ -16,7 +17,7 @@ describe('CustomMarker', () => {
1617
</RenderWrapper>
1718
)
1819

19-
expect(getByTestId(defaultCustomMarkerTestId)).toBeInTheDOM()
20+
expect(getByTestId(defaultCustomMarkerTestId)).toBeInTheDocument()
2021
})
2122
it('render multiple', () => {
2223
const { queryAllByTestId } = render(
@@ -43,7 +44,7 @@ describe('CustomMarker', () => {
4344
</RenderWrapper>
4445
)
4546

46-
expect(getByTestId(customDataIdSelector)).toBeInTheDOM()
47+
expect(getByTestId(customDataIdSelector)).toBeInTheDocument()
4748
})
4849

4950
it('is passed styles with left corresponding to passed in date', () => {
@@ -110,10 +111,26 @@ describe('CustomMarker', () => {
110111

111112
const { queryByTestId, getByText } = render(<RemoveCustomMarker />)
112113

113-
expect(queryByTestId(defaultCustomMarkerTestId)).toBeInTheDOM()
114+
expect(queryByTestId(defaultCustomMarkerTestId)).toBeInTheDocument()
114115

115-
Simulate.click(getByText('Hide Custom Marker'))
116+
fireEvent.click(getByText('Hide Custom Marker'))
116117

117-
expect(queryByTestId(defaultCustomMarkerTestId)).not.toBeInTheDOM()
118+
expect(queryByTestId(defaultCustomMarkerTestId)).not.toBeInTheDocument()
119+
})
120+
it('updates marker location after passing new date', ()=>{
121+
const { getByTestId, rerender } = render(
122+
<RenderWrapper>
123+
<TimelineMarkers>
124+
<CustomMarker date={1000} />
125+
</TimelineMarkers>
126+
</RenderWrapper>)
127+
const positionLeftBeforeChange = getByTestId(defaultCustomMarkerTestId).style.left
128+
rerender(<RenderWrapper>
129+
<TimelineMarkers>
130+
<CustomMarker date={2000} />
131+
</TimelineMarkers>
132+
</RenderWrapper>)
133+
const positionLeftAfterChange = getByTestId(defaultCustomMarkerTestId).style.left
134+
expect(positionLeftBeforeChange).not.toEqual(positionLeftAfterChange)
118135
})
119136
})

__tests__/components/Markers/TodayMarker.test.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from 'react'
2-
import { render, Simulate } from 'react-testing-library'
2+
import { render, fireEvent, cleanup } from 'react-testing-library'
33
import 'jest-dom/extend-expect'
44
import { RenderWrapper } from 'test-utility/marker-renderer'
55
import TimelineMarkers from 'lib/markers/public/TimelineMarkers'
@@ -8,6 +8,7 @@ import TodayMarker from 'lib/markers/public/TodayMarker'
88
const defaultTestId = 'default-today-line'
99

1010
describe('TodayMarker', () => {
11+
afterEach(cleanup)
1112
it('is present', () => {
1213
const { getByTestId } = render(
1314
<RenderWrapper>
@@ -17,7 +18,7 @@ describe('TodayMarker', () => {
1718
</RenderWrapper>
1819
)
1920

20-
expect(getByTestId(defaultTestId)).toBeInTheDOM()
21+
expect(getByTestId(defaultTestId)).toBeInTheDocument()
2122
})
2223

2324
it('is removed after initial render', () => {
@@ -44,11 +45,11 @@ describe('TodayMarker', () => {
4445

4546
const { queryByTestId, getByText } = render(<RemoveTodayMarker />)
4647

47-
expect(queryByTestId(defaultTestId)).toBeInTheDOM()
48+
expect(queryByTestId(defaultTestId)).toBeInTheDocument()
4849

49-
Simulate.click(getByText('Hide Today'))
50+
fireEvent.click(getByText('Hide Today'))
5051

51-
expect(queryByTestId(defaultTestId)).not.toBeInTheDOM()
52+
expect(queryByTestId(defaultTestId)).not.toBeInTheDocument()
5253
})
5354

5455
it('allows for custom renderer', () => {
@@ -62,7 +63,7 @@ describe('TodayMarker', () => {
6263
</RenderWrapper>
6364
)
6465

65-
expect(getByTestId(dataTestId)).toBeInTheDOM()
66+
expect(getByTestId(dataTestId)).toBeInTheDocument()
6667
})
6768

6869
it('custom renderer is passed styles and date', () => {

0 commit comments

Comments
 (0)