Skip to content

Commit 8cbb0d5

Browse files
committed
Merge branch 'release/2.3.0'
2 parents 2996f5c + 0d66622 commit 8cbb0d5

File tree

7 files changed

+8569
-4610
lines changed

7 files changed

+8569
-4610
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
5+
---
6+
7+
**Describe the bug**
8+
A clear and concise description of what the bug is.
9+
10+
**To Reproduce**
11+
Steps to reproduce the behavior:
12+
13+
[React Collapsible JSFiddle Template](https://jsfiddle.net/982f3LL7)
14+
15+
1. Go to '...'
16+
2. Click on '....'
17+
3. Scroll down to '....'
18+
4. See error
19+
20+
**Expected behavior**
21+
A clear and concise description of what you expected to happen.
22+
23+
**Screenshots**
24+
If applicable, add screenshots to help explain your problem.
25+
26+
**Additional context**
27+
Add any other context about the problem here.

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[![Npm Version](https://img.shields.io/npm/v/react-collapsible.svg?style=flat-square)](https://www.npmjs.com/package/react-collapsible) [![License](https://img.shields.io/npm/l/react-collapsible.svg?style=flat-square)](https://github.com/glennflanagan/react-collapsible/blob/develop/LICENSE.md) [![Downloads Per Week](https://img.shields.io/npm/dw/react-collapsible.svg?style=flat-square)](https://npmcharts.com/compare/react-collapsible)
2+
13
# React Responsive Collapsible Section Component (Collapsible)
24

35
React component to wrap content in Collapsible element with trigger to open and close.
@@ -176,5 +178,12 @@ $ npm run example
176178

177179
This will run the webpack build and open the example.
178180

181+
## Issues
182+
183+
Please create an issue for any bug or feature requests.
184+
185+
Here is a plain [JSFiddle](https://jsfiddle.net/sm7n31p1/1/) to use for replicating bugs.
186+
187+
179188
## Licence
180189
React Responsive Collapsible Section Component is [MIT licensed](LICENSE.md)

__tests__/index.js

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Tests for Collapsible.
2+
import React from 'react';
3+
import { configure, shallow, mount, render } from 'enzyme';
4+
import Adapter from 'enzyme-adapter-react-16';
5+
6+
import Collapsible from '../src/Collapsible';
7+
8+
configure({ adapter: new Adapter() });
9+
10+
const dummyEvent = { preventDefault: () => {}};
11+
12+
describe('<Collapsbile />', () => {
13+
it('renders an element with the class `.Collapsible`.', () => {
14+
const wrapper = shallow(<Collapsible />);
15+
expect(wrapper.is('.Collapsible')).toEqual(true);
16+
});
17+
18+
it('renders Collapsible with trigger text.', () => {
19+
const wrapper = shallow(<Collapsible trigger='Hello World'/> )
20+
expect(wrapper.find('span').text()).toEqual('Hello World')
21+
});
22+
23+
it('given a closed Collapsible fires the onOpening prop when clicked to open', () => {
24+
const mockOnOpening = jest.fn();
25+
const collapsbile = shallow(<Collapsible trigger='Hello World' onOpening={mockOnOpening}/> );
26+
const trigger = collapsbile.find('.Collapsible__trigger');
27+
28+
expect(trigger).toHaveLength(1);
29+
trigger.simulate('click', dummyEvent);
30+
expect(mockOnOpening.mock.calls).toHaveLength(1);
31+
});
32+
33+
it('given an open Collapsible fires the onClosing prop when clicked to close', () => {
34+
const mockOnClosing = jest.fn();
35+
const collapsbile = mount(<Collapsible open trigger='Hello World' onClosing={mockOnClosing}/> );
36+
const trigger = collapsbile.find('.Collapsible__trigger');
37+
38+
expect(trigger).toHaveLength(1);
39+
trigger.simulate('click', dummyEvent);
40+
expect(mockOnClosing.mock.calls).toHaveLength(1);
41+
});
42+
43+
it('given a closed Collapsible it fires the onOpen prop after the transistion', () => {
44+
const mockOnOpen = jest.fn();
45+
const collapsbile = shallow(<Collapsible open trigger='Hello World' onOpen={mockOnOpen}>Some Content</Collapsible> );
46+
const outer = collapsbile.find('.Collapsible__contentOuter');
47+
48+
expect(outer).toHaveLength(1);
49+
outer.simulate('transitionEnd', dummyEvent);
50+
expect(mockOnOpen.mock.calls).toHaveLength(1);
51+
});
52+
53+
it('given an open Collapsible it fires the onClose prop after the transistion', () => {
54+
const mockOnClose = jest.fn();
55+
const collapsbile = shallow(<Collapsible trigger='Hello World' onClose={mockOnClose}>Some Content</Collapsible> );
56+
const outer = collapsbile.find('.Collapsible__contentOuter');
57+
58+
expect(outer).toHaveLength(1);
59+
outer.simulate('transitionEnd', dummyEvent);
60+
expect(mockOnClose.mock.calls).toHaveLength(1);
61+
});
62+
63+
it('given a Collapsible with the handleTriggerClick prop, the handleTriggerClick prop gets fired', () => {
64+
const mockHandleTriggerClick = jest.fn();
65+
const collapsbile = shallow(<Collapsible handleTriggerClick={mockHandleTriggerClick} trigger="Hello world" />);
66+
const trigger = collapsbile.find('.Collapsible__trigger');
67+
68+
expect(trigger).toHaveLength(1);
69+
trigger.simulate('click', dummyEvent);
70+
expect(mockHandleTriggerClick.mock.calls).toHaveLength(1);
71+
})
72+
})

index.d.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
declare class Collapsible extends React.Component<CollapsibleProps> {}
2+
declare namespace Collapsible {}
3+
4+
interface CollapsibleProps extends React.HTMLProps<Collapsible> {
5+
transitionTime?: number
6+
transitionCloseTime?: number | null
7+
triggerTagName?: string
8+
easing?: string
9+
open?: boolean
10+
classParentString?: string
11+
openedClassName?: string
12+
triggerStyle?: null | Object
13+
triggerClassName?: string
14+
triggerOpenedClassName?: string
15+
contentOuterClassName?: string
16+
contentInnerClassName?: string
17+
accordionPosition?: string | number
18+
handleTriggerClick?: (accordionPosition?: string | number) => void
19+
onOpen?: () => void
20+
onClose?: () => void
21+
onOpening?: () => void
22+
onClosing?: () => void
23+
trigger: string | React.ReactElement<any>
24+
triggerWhenOpen?: string | React.ReactElement<any>
25+
triggerDisabled?: false
26+
lazyRender?: boolean
27+
overflowWhenOpen?:
28+
| 'hidden'
29+
| 'visible'
30+
| 'auto'
31+
| 'scroll'
32+
| 'inherit'
33+
| 'initial'
34+
| 'unset'
35+
triggerSibling?: React.ReactElement<any>
36+
className?: string
37+
tabIndex?: null | number
38+
}
39+
40+
declare module 'react-collapsible' {
41+
export default Collapsible
42+
}

0 commit comments

Comments
 (0)