Skip to content
This repository was archived by the owner on May 19, 2025. It is now read-only.

Commit 6b5fc70

Browse files
committed
Mark active predefined range when active
1 parent 864202b commit 6b5fc70

File tree

6 files changed

+62
-30
lines changed

6 files changed

+62
-30
lines changed

lib/DateRange.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ var DateRange = (function (_Component) {
188188
ranges && _react2['default'].createElement(_PredefinedRangesJs2['default'], {
189189
format: format,
190190
ranges: ranges,
191+
range: range,
191192
theme: styles,
192193
onSelect: this.handleSelect.bind(this),
193194
onlyClasses: onlyClasses,

lib/PredefinedRanges.js

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ var PredefinedRanges = (function (_Component) {
4848

4949
var range = this.props.ranges[name];
5050

51-
// BECAUSE FUCK MOMENT
5251
this.props.onSelect({
5352
startDate: (0, _utilsParseInputJs2['default'])(range['startDate']),
5453
endDate: (0, _utilsParseInputJs2['default'])(range['endDate'])
@@ -59,36 +58,46 @@ var PredefinedRanges = (function (_Component) {
5958
value: function renderRangeList(classes) {
6059
var _this = this;
6160

62-
var ranges = this.props.ranges;
61+
var _props = this.props;
62+
var ranges = _props.ranges;
63+
var range = _props.range;
6364
var styles = this.styles;
6465

6566
return Object.keys(ranges).map((function (name) {
67+
var active = (0, _utilsParseInputJs2['default'])(ranges[name].startDate).isSame(range.startDate) && (0, _utilsParseInputJs2['default'])(ranges[name].endDate).isSame(range.endDate);
68+
69+
var style = _extends({}, styles['PredefinedRangesItem'], active ? styles['PredefinedRangesItemActive'] : {});
70+
6671
return _react2['default'].createElement(
6772
'a',
6873
{
6974
href: '#',
7075
key: 'range-' + name,
71-
className: classes.predefinedRangeItem,
72-
style: styles['PredefinedRangeItem'],
73-
onClick: _this.handleSelect.bind(_this, name) },
76+
className: classes.predefinedRangesItem + (active ? ' active' : ''),
77+
style: style,
78+
onClick: _this.handleSelect.bind(_this, name)
79+
},
7480
name
7581
);
7682
}).bind(this));
7783
}
7884
}, {
7985
key: 'render',
8086
value: function render() {
81-
var _props = this.props;
82-
var style = _props.style;
83-
var onlyClasses = _props.onlyClasses;
84-
var classNames = _props.classNames;
87+
var _props2 = this.props;
88+
var style = _props2.style;
89+
var onlyClasses = _props2.onlyClasses;
90+
var classNames = _props2.classNames;
8591
var styles = this.styles;
8692

8793
var classes = _extends({}, _stylesJs.defaultClasses, classNames);
8894

8995
return _react2['default'].createElement(
9096
'div',
91-
{ style: onlyClasses ? undefined : _extends({}, styles['PredefinedRanges'], style), className: classes.predefinedRanges },
97+
{
98+
style: onlyClasses ? undefined : _extends({}, styles['PredefinedRanges'], style),
99+
className: classes.predefinedRanges
100+
},
92101
this.renderRangeList(classes)
93102
);
94103
}

lib/styles.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var defaultClasses = {
1010
calendar: 'rdr-Calendar',
1111
dateRange: 'rdr-DateRange',
1212
predefinedRanges: 'rdr-PredefinedRanges',
13-
predefinedRangesItem: 'rdr-PredefinedRangeItem',
13+
predefinedRangesItem: 'rdr-PredefinedRangesItem',
1414
monthAndYear: 'rdr-MonthAndYear',
1515
weekDays: 'rdr-WeekDays',
1616
weekDay: 'rdr-WeekDay',
@@ -19,9 +19,6 @@ var defaultClasses = {
1919
dayActive: 'is-selected',
2020
dayPassive: 'is-passive',
2121
dayInRange: 'is-inRange',
22-
dayStartEdge : 'is-startEdge',
23-
dayEndEdge : 'is-endEdge',
24-
dayToday : 'is-today',
2522
monthAndYearWrapper: 'rdr-MonthAndYear-innerWrapper',
2623
prevButton: 'rdr-MonthAndYear-button prev',
2724
nextButton: 'rdr-MonthAndYear-button next',
@@ -152,7 +149,7 @@ var defaultTheme = {
152149
verticalAlign: 'top'
153150
},
154151

155-
PredefinedRangeItem: {
152+
PredefinedRangesItem: {
156153
display: 'block',
157154
fontSize: 12,
158155
color: '#2c3e50',
@@ -161,6 +158,10 @@ var defaultTheme = {
161158
background: '#ecf0f1',
162159
textDecoration: 'none',
163160
marginBottom: 6
161+
},
162+
163+
PredefinedRangesItemActive: {
164+
color: '#E74C3C'
164165
}
165166
};
166167

@@ -225,6 +226,8 @@ exports['default'] = function () {
225226

226227
PredefinedRanges: _extends({}, defaultTheme.PredefinedRanges, customTheme.PredefinedRanges),
227228

228-
PredefinedRangeItem: _extends({}, defaultTheme.PredefinedRangeItem, customTheme.PredefinedRangeItem)
229+
PredefinedRangesItem: _extends({}, defaultTheme.PredefinedRangesItem, customTheme.PredefinedRangesItem),
230+
231+
PredefinedRangesItemActive: _extends({}, defaultTheme.PredefinedRangesItemActive, customTheme.PredefinedRangesItemActive)
229232
};
230-
};
233+
};

src/DateRange.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ class DateRange extends Component {
120120
<PredefinedRanges
121121
format={ format }
122122
ranges={ ranges }
123+
range={ range }
123124
theme={ styles }
124125
onSelect={this.handleSelect.bind(this)}
125126
onlyClasses={ onlyClasses }

src/PredefinedRanges.js

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, { Component, PropTypes } from 'react';
22
import moment from 'moment';
3-
43
import parseInput from './utils/parseInput.js';
54
import { defaultClasses } from './styles.js';
65

@@ -17,25 +16,35 @@ class PredefinedRanges extends Component {
1716

1817
const range = this.props.ranges[name];
1918

20-
// BECAUSE FUCK MOMENT
2119
this.props.onSelect({
2220
startDate : parseInput(range['startDate']),
2321
endDate : parseInput(range['endDate']),
2422
});
2523
}
2624

2725
renderRangeList(classes) {
28-
const { ranges } = this.props;
26+
const { ranges, range } = this.props;
2927
const { styles } = this;
3028

3129
return Object.keys(ranges).map(name => {
30+
const active = (
31+
parseInput(ranges[name].startDate).isSame(range.startDate) &&
32+
parseInput(ranges[name].endDate).isSame(range.endDate)
33+
);
34+
35+
const style = {
36+
...styles['PredefinedRangesItem'],
37+
...(active ? styles['PredefinedRangesItemActive'] : {}),
38+
};
39+
3240
return (
3341
<a
3442
href='#'
3543
key={'range-' + name}
36-
className={classes.predefinedRangeItem}
37-
style={styles['PredefinedRangeItem']}
38-
onClick={this.handleSelect.bind(this, name)}>
44+
className={classes.predefinedRangesItem + (active ? ' active' : '')}
45+
style={ style }
46+
onClick={this.handleSelect.bind(this, name)}
47+
>
3948
{name}
4049
</a>
4150
);
@@ -49,8 +58,11 @@ class PredefinedRanges extends Component {
4958
const classes = { ...defaultClasses, ...classNames };
5059

5160
return (
52-
<div style={onlyClasses ? undefined : { ...styles['PredefinedRanges'], ...style }} className={classes.predefinedRanges}>
53-
{this.renderRangeList(classes)}
61+
<div
62+
style={onlyClasses ? undefined : { ...styles['PredefinedRanges'], ...style }}
63+
className={ classes.predefinedRanges }
64+
>
65+
{ this.renderRangeList(classes) }
5466
</div>
5567
);
5668
}

src/styles.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export const defaultClasses = {
22
calendar : 'rdr-Calendar',
33
dateRange : 'rdr-DateRange',
44
predefinedRanges : 'rdr-PredefinedRanges',
5-
predefinedRangesItem : 'rdr-PredefinedRangeItem',
5+
predefinedRangesItem : 'rdr-PredefinedRangesItem',
66
monthAndYear : 'rdr-MonthAndYear',
77
weekDays : 'rdr-WeekDays',
88
weekDay : 'rdr-WeekDay',
@@ -143,7 +143,7 @@ const defaultTheme = {
143143
verticalAlign : 'top',
144144
},
145145

146-
PredefinedRangeItem : {
146+
PredefinedRangesItem : {
147147
display : 'block',
148148
fontSize : 12,
149149
color : '#2c3e50',
@@ -152,8 +152,12 @@ const defaultTheme = {
152152
background : '#ecf0f1',
153153
textDecoration: 'none',
154154
marginBottom : 6,
155-
}
156-
}
155+
},
156+
157+
PredefinedRangesItemActive : {
158+
color : '#E74C3C',
159+
},
160+
};
157161

158162
export default (customTheme = {}) => {
159163

@@ -219,6 +223,8 @@ export default (customTheme = {}) => {
219223

220224
PredefinedRanges : { ...defaultTheme.PredefinedRanges, ...customTheme.PredefinedRanges },
221225

222-
PredefinedRangeItem : { ...defaultTheme.PredefinedRangeItem, ...customTheme.PredefinedRangeItem }
226+
PredefinedRangesItem : { ...defaultTheme.PredefinedRangesItem, ...customTheme.PredefinedRangesItem },
227+
228+
PredefinedRangesItemActive : { ...defaultTheme.PredefinedRangesItemActive, ...customTheme.PredefinedRangesItemActive }
223229
}
224230
}

0 commit comments

Comments
 (0)