Skip to content

Commit 938980e

Browse files
committed
Added ignore limits flag and open direction checking
1 parent 2c0a606 commit 938980e

File tree

8 files changed

+67
-21
lines changed

8 files changed

+67
-21
lines changed

demo/index.html

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
$min.DatePickerX.init({
1515
mondayFirst: true,
16-
minDate : new Date(2016, 2, 1),
16+
minDate : new Date(2017, 8, 13),
1717
maxDate : $max
1818
});
1919

@@ -46,12 +46,14 @@
4646
<input type="text" name="realDPX-min" placeholder="Choice start date">
4747
</label>
4848

49-
<label class="real">
50-
<input type="text" name="realDPX-max" placeholder="Choice end date">
51-
</label>
49+
<div style="margin-top: 80vh;">
50+
<label class="real">
51+
<input type="text" name="realDPX-max" placeholder="Choice end date">
52+
</label>
53+
</div>
5254

5355

54-
<label>
56+
<label class="date-picker-x-container">
5557
<input type="text" name="dp">
5658
<div class="date-picker-x active" data-dpx-type="day">
5759
<div class="dpx-title-box">
@@ -117,7 +119,7 @@
117119
</div>
118120
</label>
119121

120-
<label>
122+
<label class="date-picker-x-container">
121123
<input type="text" name="dp">
122124
<div class="date-picker-x active" data-dpx-type="month">
123125
<div class="dpx-title-box">
@@ -149,7 +151,7 @@
149151
</div>
150152
</label>
151153

152-
<label>
154+
<label class="date-picker-x-container">
153155
<input type="text" name="dp">
154156
<div class="date-picker-x active" data-dpx-type="year">
155157
<div class="dpx-title-box">

dist/css/DatePickerX.css

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@
99
* @copyright 2016 Avrora Team www.avrora.team
1010
* @license MIT
1111
* @tutorial http://datepickerx.avrora.team
12-
* @version 1.0.1
12+
* @version 1.0.2
1313
*/
1414

15+
.date-picker-x-container {
16+
position: relative;
17+
}
18+
1519
.date-picker-x {
1620
background: #444;
1721
box-sizing: content-box;
@@ -20,6 +24,7 @@
2024
font: 18px/1 Arial;
2125
padding: 10px;
2226
position: absolute;
27+
top: 100%;
2328
-webkit-transform: translateY(15px);
2429
transform: translateY(15px);
2530
-webkit-user-select: none;
@@ -40,6 +45,19 @@
4045
position: absolute;
4146
}
4247

48+
.date-picker-x.to-top {
49+
bottom: 100%;
50+
top: initial;
51+
-webkit-transform: translateY(-15px);
52+
transform: translateY(-15px);
53+
}
54+
55+
.date-picker-x.to-top::before {
56+
border-width: 10px 10px 0;
57+
bottom: initial;
58+
top: 100%;
59+
}
60+
4361
.date-picker-x.active {
4462
display: block;
4563
}
@@ -71,7 +89,6 @@
7189
font-size: 22px;
7290
line-height: 50px;
7391
text-align: center;
74-
-webkit-transition: .2s;
7592
transition: .2s;
7693
width: 50px;
7794
}

dist/css/DatePickerX.min.css

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/DatePickerX.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* @copyright 2016 Avrora Team www.avrora.team
1010
* @license MIT
1111
* @tutorial http://datepickerx.avrora.team
12-
* @version 1.0.1
12+
* @version 1.0.2
1313
*/
1414

1515
!function()
@@ -205,6 +205,10 @@
205205
mode = 2;
206206
draw();
207207
elements.container.classList.add('active');
208+
elements.container.classList.remove('to-top');
209+
210+
var bcr = elements.container.getBoundingClientRect();
211+
bcr.bottom > window.innerHeight && bcr.top > elements.container.offsetHeight && elements.container.classList.add('to-top');
208212

209213
openedDPX && openedDPX !== elements.container && openedDPX.classList.remove('active');
210214
openedDPX = elements.container;
@@ -449,6 +453,7 @@
449453
}
450454

451455
// DPX init
456+
input.parentNode.classList.add('date-picker-x-container');
452457
input.classList.add('date-picker-x-input');
453458
input.readOnly = true;
454459
createElements();
@@ -480,10 +485,11 @@
480485
* If passed not Date object, method will try to convert it to date.
481486
* If passed null, method will clear date.
482487
*
483-
* @param {*} dt Date object
488+
* @param {*} dt Date object
489+
* @param {Boolean} [ignoreLimits=false] If passed true min and max limits will be ignored
484490
* @returns {Boolean}
485491
*/
486-
setValue: function(dt)
492+
setValue: function(dt, ignoreLimits)
487493
{
488494
if (!inited) {
489495
return console.error('DatePickerX, remove: Date picker doesn\'t init yet.') && false;
@@ -499,7 +505,7 @@
499505
return console.error('DatePickerX, setValue: Can\'t convert argument to date.') && false;
500506
}
501507

502-
if (dt.getTime() < getMinDate().getTime() || dt.getTime() > getMaxDate().getTime()) {
508+
if (!ignoreLimits && (dt.getTime() < getMinDate().getTime() || dt.getTime() > getMaxDate().getTime())) {
503509
return console.error('DatePickerX, setValue: Date out of acceptable range.') && false;
504510
}
505511

dist/js/DatePickerX.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "DatePickerX",
33
"title": "DatePickerX",
44
"description": "Cool light visual date picker on pure JavaScript",
5-
"version": "1.0.1",
5+
"version": "1.0.2",
66
"homepage": "https://datepickerx.avrora.team",
77
"repository": {
88
"type": "git",

src/js/DatePickerX.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@
191191
mode = 2;
192192
draw();
193193
elements.container.classList.add('active');
194+
elements.container.classList.remove('to-top');
195+
196+
var bcr = elements.container.getBoundingClientRect();
197+
bcr.bottom > window.innerHeight && bcr.top > elements.container.offsetHeight && elements.container.classList.add('to-top');
194198

195199
openedDPX && openedDPX !== elements.container && openedDPX.classList.remove('active');
196200
openedDPX = elements.container;
@@ -435,6 +439,7 @@
435439
}
436440

437441
// DPX init
442+
input.parentNode.classList.add('date-picker-x-container');
438443
input.classList.add('date-picker-x-input');
439444
input.readOnly = true;
440445
createElements();
@@ -466,10 +471,11 @@
466471
* If passed not Date object, method will try to convert it to date.
467472
* If passed null, method will clear date.
468473
*
469-
* @param {*} dt Date object
474+
* @param {*} dt Date object
475+
* @param {Boolean} [ignoreLimits=false] If passed true min and max limits will be ignored
470476
* @returns {Boolean}
471477
*/
472-
setValue: function(dt)
478+
setValue: function(dt, ignoreLimits)
473479
{
474480
if (!inited) {
475481
return console.error('DatePickerX, remove: Date picker doesn\'t init yet.') && false;
@@ -485,7 +491,7 @@
485491
return console.error('DatePickerX, setValue: Can\'t convert argument to date.') && false;
486492
}
487493

488-
if (dt.getTime() < getMinDate().getTime() || dt.getTime() > getMaxDate().getTime()) {
494+
if (!ignoreLimits && (dt.getTime() < getMinDate().getTime() || dt.getTime() > getMaxDate().getTime())) {
489495
return console.error('DatePickerX, setValue: Date out of acceptable range.') && false;
490496
}
491497

src/sass/DatePickerX.scss

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
@import "variables";
22

3+
.date-picker-x-container {
4+
position: relative;
5+
}
36
.date-picker-x {
47
background: $dpxBackgroundColor;
58
box-sizing: content-box;
@@ -8,6 +11,7 @@
811
font: 18px/1 Arial;
912
padding: 10px;
1013
position: absolute;
14+
top: 100%;
1115
transform: translateY(15px);
1216
user-select: none;
1317
width: $dpxDaySize * 7;
@@ -22,6 +26,17 @@
2226
left: 20px;
2327
position: absolute;
2428
}
29+
&.to-top {
30+
bottom: 100%;
31+
top: initial;
32+
transform: translateY(-15px);
33+
34+
&::before {
35+
border-width: 10px 10px 0;
36+
bottom: initial;
37+
top: 100%;
38+
}
39+
}
2540
&.active {
2641
display: block;
2742
}

0 commit comments

Comments
 (0)