Skip to content

Commit 3e28fca

Browse files
Merge pull request #5100 from Qubitza/main
Added option to hide time caption
2 parents f75e1e6 + 342d370 commit 3e28fca

File tree

4 files changed

+80
-14
lines changed

4 files changed

+80
-14
lines changed

docs-site/src/components/Examples/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Default from "../../examples/default";
88
import NoAnchorArrow from "../../examples/noAnchorArrow";
99
import ShowTime from "../../examples/showTime";
1010
import ShowTimeOnly from "../../examples/showTimeOnly";
11+
import HideTimeCaption from "../../examples/hideTimeCaption";
1112
import ExcludeTimes from "../../examples/excludeTimes";
1213
import IncludeTimes from "../../examples/includeTimes";
1314
import InjectTimes from "../../examples/injectTimes";
@@ -487,6 +488,10 @@ export default class exampleComponents extends React.Component {
487488
title: "Select Time Only",
488489
component: ShowTimeOnly,
489490
},
491+
{
492+
title: "Hide Time Caption",
493+
component: HideTimeCaption,
494+
},
490495
{
491496
title: "Show previous months",
492497
component: MultiMonthPrevious,
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
() => {
2+
const [startDate, setStartDate] = useState(new Date());
3+
return (
4+
<DatePicker
5+
selected={startDate}
6+
onChange={(date) => setStartDate(date)}
7+
showTimeSelect
8+
showTimeSelectOnly
9+
timeIntervals={15}
10+
dateFormat="h:mm aa"
11+
showTimeCaption={false}
12+
/>
13+
);
14+
};

src/test/timepicker_test.test.tsx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,41 @@ describe("TimePicker", () => {
316316
expect(onKeyDownSpy).toHaveBeenCalledTimes(1);
317317
});
318318

319+
it("shows custom time caption text", () => {
320+
const { container } = render(
321+
<DatePicker
322+
open
323+
showTimeSelect
324+
showTimeSelectOnly
325+
timeCaption="Custom time"
326+
/>,
327+
);
328+
329+
const header = container.querySelector(
330+
".react-datepicker__header--time--only",
331+
);
332+
333+
expect(header).not.toBeNull();
334+
expect(header?.textContent).toEqual("Custom time");
335+
});
336+
337+
it("hides time caption", () => {
338+
const { container } = render(
339+
<DatePicker
340+
open
341+
showTimeSelect
342+
showTimeSelectOnly
343+
showTimeCaption={false}
344+
/>,
345+
);
346+
347+
const header = container.querySelector(
348+
".react-datepicker__header--time--only",
349+
);
350+
351+
expect(header).toBeNull();
352+
});
353+
319354
function setManually(string: string) {
320355
if (!instance?.input) {
321356
throw new Error("input is null/undefined");

src/time.tsx

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ interface TimeProps
3636
handleOnKeyDown?: React.KeyboardEventHandler<HTMLLIElement>;
3737
locale?: Locale;
3838
showTimeSelectOnly?: boolean;
39+
showTimeCaption?: boolean;
3940
}
4041

4142
interface TimeState {
@@ -48,6 +49,7 @@ export default class Time extends Component<TimeProps, TimeState> {
4849
intervals: 30,
4950
todayButton: null,
5051
timeCaption: "Time",
52+
showTimeCaption: true,
5153
};
5254
}
5355

@@ -250,6 +252,29 @@ export default class Time extends Component<TimeProps, TimeState> {
250252
});
251253
};
252254

255+
renderTimeCaption = (): JSX.Element => {
256+
if (this.props.showTimeCaption === false) {
257+
return <></>;
258+
}
259+
260+
return (
261+
<div
262+
className={`react-datepicker__header react-datepicker__header--time ${
263+
this.props.showTimeSelectOnly
264+
? "react-datepicker__header--time--only"
265+
: ""
266+
}`}
267+
ref={(header: HTMLDivElement) => {
268+
this.header = header;
269+
}}
270+
>
271+
<div className="react-datepicker-time__header">
272+
{this.props.timeCaption}
273+
</div>
274+
</div>
275+
);
276+
};
277+
253278
render() {
254279
const { height } = this.state;
255280

@@ -261,20 +286,7 @@ export default class Time extends Component<TimeProps, TimeState> {
261286
: ""
262287
}`}
263288
>
264-
<div
265-
className={`react-datepicker__header react-datepicker__header--time ${
266-
this.props.showTimeSelectOnly
267-
? "react-datepicker__header--time--only"
268-
: ""
269-
}`}
270-
ref={(header: HTMLDivElement) => {
271-
this.header = header;
272-
}}
273-
>
274-
<div className="react-datepicker-time__header">
275-
{this.props.timeCaption}
276-
</div>
277-
</div>
289+
{this.renderTimeCaption()}
278290
<div className="react-datepicker__time">
279291
<div className="react-datepicker__time-box">
280292
<ul

0 commit comments

Comments
 (0)