Skip to content

Commit 988c28d

Browse files
nateha1984martijnrusschen
authored andcommitted
Adds title attribute to clear button (Hacker0x01#1317)
* Adds title attribute to clear button * Changes title attribute to be configurable, adds test, updates docs * Updates clear button to be a button and removes it from tab order
1 parent 5eee56f commit 988c28d

File tree

4 files changed

+33
-4
lines changed

4 files changed

+33
-4
lines changed

docs/datepicker.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ General datepicker component.
1010
| `calendarClassName` | `string` | | |
1111
| `children` | `node` | | |
1212
| `className` | `string` | | |
13+
| `clearButtonTitle` | `string` | | |
1314
| `customInput` | `element` | | |
1415
| `customInputRef` | `string` | `'ref'` | The property used to pass the ref callback |
1516
| `dateFormat` | `union(string\|array)` | `'L'` | |

src/index.jsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ export default class DatePicker extends React.Component {
128128
minTime: PropTypes.object,
129129
maxTime: PropTypes.object,
130130
excludeTimes: PropTypes.array,
131-
useShortMonthInDropdown: PropTypes.bool
131+
useShortMonthInDropdown: PropTypes.bool,
132+
clearButtonTitle: PropTypes.string
132133
};
133134

134135
static get defaultProps() {
@@ -588,10 +589,11 @@ export default class DatePicker extends React.Component {
588589
renderClearButton = () => {
589590
if (this.props.isClearable && this.props.selected != null) {
590591
return (
591-
<a
592+
<button
592593
className="react-datepicker__close-icon"
593-
href="javascript:void(0)"
594594
onClick={this.onClearClick}
595+
title={this.props.clearButtonTitle}
596+
tabIndex={-1}
595597
/>
596598
);
597599
} else {

test/datepicker_test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,21 @@ describe("DatePicker", () => {
337337
expect(datePicker.state.inputValue).to.be.null;
338338
});
339339

340+
it("should set the title attribute on the clear button if clearButtonTitle is supplied", () => {
341+
const datePicker = TestUtils.renderIntoDocument(
342+
<DatePicker
343+
selected={utils.newDate("2018-03-19")}
344+
isClearable
345+
clearButtonTitle="clear button"
346+
/>
347+
);
348+
const clearButtonText = TestUtils.findRenderedDOMComponentWithClass(
349+
datePicker,
350+
"react-datepicker__close-icon"
351+
).getAttribute("title");
352+
expect(clearButtonText).to.equal("clear button");
353+
});
354+
340355
it("should save time from the selected date", () => {
341356
const selected = utils.newDate("2015-12-20 10:11:12");
342357
let date;

test/week_number_test.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
import React from "react";
22
import WeekNumber from "../src/week_number";
33
import { shallow } from "enzyme";
4+
import sinon from "sinon";
45

56
function renderWeekNumber(weekNumber, props = {}) {
67
return shallow(<WeekNumber weekNumber={weekNumber} {...props} />);
78
}
89

910
describe("WeekNumber", () => {
11+
let shallowWeekNumber;
1012
describe("rendering", () => {
1113
it("should render the specified Week Number", () => {
1214
const weekNumber = 1;
13-
const shallowWeekNumber = renderWeekNumber(weekNumber);
15+
shallowWeekNumber = renderWeekNumber(weekNumber);
1416
expect(
1517
shallowWeekNumber.hasClass("react-datepicker__week-number")
1618
).to.equal(true);
1719
expect(shallowWeekNumber.text()).to.equal(weekNumber + "");
1820
});
21+
22+
it("should call the onClick function if it is defined", () => {
23+
const onClick = sinon.spy();
24+
shallowWeekNumber = shallow(
25+
<WeekNumber weekNumber={1} onClick={onClick} />
26+
);
27+
shallowWeekNumber.instance().handleClick({});
28+
expect(onClick).to.have.property("callCount", 1);
29+
});
1930
});
2031
});

0 commit comments

Comments
 (0)