Skip to content

Commit 38885cc

Browse files
author
Josh Habdas
committed
Add Segments component
1 parent 80ccd17 commit 38885cc

4 files changed

Lines changed: 40 additions & 12 deletions

File tree

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import React, {Component} from 'react';
2-
import {Segment} from 'stardust';
2+
import {Segment, Segments} from 'stardust';
33

4-
// TODO: File card to create a Segments wrapper component with appropriate classNames
54
export default class SegmentSegmentsExample extends Component {
65
render() {
76
return (
8-
<div className='ui segments'>
7+
<Segments>
98
<Segment>Top</Segment>
109
<Segment>Middle</Segment>
1110
<Segment>Middle</Segment>
1211
<Segment>Middle</Segment>
1312
<Segment>Bottom</Segment>
14-
</div>
13+
</Segments>
1514
);
1615
}
1716
}

src/elements/Segment/Segments.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@ import React, {Component, PropTypes} from 'react';
22
import classNames from 'classnames';
33
import META from 'src/utils/Meta';
44

5-
export default class Segment extends Component {
5+
export default class Segments extends Component {
66
static propTypes = {
7-
children: PropTypes.node,
7+
children: PropTypes.node.isRequired,
88
className: PropTypes.string,
99
};
1010

1111
static _meta = {
1212
library: META.library.semanticUI,
1313
name: 'Segments',
1414
type: META.type.element,
15+
parent: 'Segment'
1516
};
1617

1718
render() {
19+
const {children} = this.props;
20+
1821
const classes = classNames(
1922
'sd-segments',
2023
'ui',
@@ -24,7 +27,7 @@ export default class Segment extends Component {
2427

2528
return (
2629
<div {...this.props} className={classes}>
27-
{this.props.children}
30+
{children}
2831
</div>
2932
);
3033
}

src/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import Input from 'src/elements/Input/Input';
2626
import List from 'src/elements/List/List';
2727
import ListItem from 'src/elements/List/ListItem';
2828
import Segment from 'src/elements/Segment/Segment';
29+
import Segments from 'src/elements/Segment/Segments';
2930

3031
// Modules
3132
import Checkbox from 'src/modules/Checkbox/Checkbox';
@@ -68,6 +69,7 @@ export default {
6869
List,
6970
ListItem,
7071
Segment,
72+
Segments,
7173

7274
// Modules
7375
Checkbox,
Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,33 @@
11
import React from 'react';
2-
import {Segments} from 'stardust';
2+
import {Segment, Segments} from 'stardust';
33

4-
describe('Segment', () => {
5-
it('renders its children', () => {
6-
render(<Segments>Some text</Segments>)
7-
.assertText('Some text');
4+
describe('Segments', () => {
5+
it('should render children', () => {
6+
const [segmentOne, segmentTwo] = render(
7+
<Segments>
8+
<Segment>Top</Segment>
9+
<Segment>Bottom</Segment>
10+
</Segments>
11+
).scryClass('sd-segment');
12+
13+
segmentOne
14+
.textContent
15+
.should.equal('Top');
16+
segmentTwo
17+
.textContent
18+
.should.equal('Bottom');
19+
});
20+
21+
it('renders expected number of children', () => {
22+
const [component] = render(
23+
<Segments>
24+
<Segment>Top</Segment>
25+
<Segment>Bottom</Segment>
26+
</Segments>
27+
).scryClass('sd-segments');
28+
29+
expect(
30+
component.querySelectorAll('.sd-segment').length
31+
).to.equal(2);
832
});
933
});

0 commit comments

Comments
 (0)