Skip to content
This repository was archived by the owner on Mar 2, 2018. It is now read-only.

Commit 29a40ab

Browse files
committed
added drawer-like styles for mobile. also added an invisible layer that can be used to close the datepicker. useful in both mobile and desktop
1 parent 1b0c261 commit 29a40ab

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

app/directive-test.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var templateStr = `
1919
[disabled-dates]="date2DisabledDates"
2020
[min-date]="date2MinDate"
2121
[max-date]="date2MaxDate"
22+
[show-close-layer]="true"
2223
date-only="true"/>
2324
date2: {{date2}}
2425
</ng2-utils-2>

src/ng2-datetime-picker.component.ts

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ declare var moment: any;
2222
providers : [Ng2Datetime],
2323
selector : 'ng2-datetime-picker',
2424
template : `
25+
<div class="closing-layer" (click)="close()" *ngIf="showCloseLayer" ></div>
2526
<div class="ng2-datetime-picker">
2627
<div class="close-button" *ngIf="showCloseButton" (click)="close()"></div>
2728
@@ -106,7 +107,7 @@ declare var moment: any;
106107
`,
107108
styles : [
108109
`
109-
@keyframes slideDown {
110+
@keyframes slideDown {
110111
0% {
111112
transform: translateY(-10px);
112113
}
@@ -115,6 +116,15 @@ declare var moment: any;
115116
}
116117
}
117118
119+
@keyframes slideUp {
120+
0% {
121+
transform: translateY(100%);
122+
}
123+
100% {
124+
transform: translateY(0%);
125+
}
126+
}
127+
118128
.ng2-datetime-picker-wrapper {
119129
position: relative;
120130
}
@@ -156,7 +166,7 @@ declare var moment: any;
156166
background: transparent;
157167
border: none;
158168
cursor: pointer;
159-
width: 15px;
169+
width: 25px;
160170
text-align: center;
161171
}
162172
.ng2-datetime-picker > .month > .prev_next:hover {
@@ -235,6 +245,40 @@ declare var moment: any;
235245
.ng2-datetime-picker input[type=range] {
236246
width: 200px;
237247
}
248+
249+
.closing-layer {
250+
display: block;
251+
position: fixed;
252+
top: 0;
253+
left: 0;
254+
bottom: 0;
255+
right: 0;
256+
background: rgba(0,0,0,0);
257+
}
258+
259+
@media (max-width: 767px) {
260+
.ng2-datetime-picker {
261+
position: fixed;
262+
bottom: 0;
263+
left: 0;
264+
right: 0;
265+
animation: slideUp 0.1s ease-in-out;
266+
}
267+
268+
.ng2-datetime-picker .days {
269+
margin: 10px auto;
270+
}
271+
272+
.closing-layer {
273+
display: block;
274+
position: fixed;
275+
top: 0;
276+
left: 0;
277+
bottom: 0;
278+
right: 0;
279+
background: rgba(0,0,0,0.2);
280+
}
281+
}
238282
`
239283
],
240284
encapsulation: ViewEncapsulation.None
@@ -254,6 +298,7 @@ export class Ng2DatetimePickerComponent {
254298
@Input('max-hour') maxHour: number;
255299
@Input('disabled-dates') disabledDates: Date[];
256300
@Input('show-close-button') showCloseButton: boolean;
301+
@Input('show-close-layer') showCloseLayer: boolean;
257302

258303
@Output('selected$') selected$:EventEmitter<any> = new EventEmitter();
259304
@Output('closing$') closing$:EventEmitter<any> = new EventEmitter();
@@ -408,6 +453,7 @@ export class Ng2DatetimePickerComponent {
408453
}
409454

410455
public close() {
456+
console.log('töttöröö');
411457
this.closing$.emit(true);
412458
}
413459
}

src/ng2-datetime-picker.directive.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export class Ng2DatetimePickerDirective implements OnInit, OnChanges {
3939
@Input('min-hour') minHour: Date | number;
4040
@Input('max-hour') maxHour: Date | number;
4141
@Input('disabled-dates') disabledDates: Date[];
42+
@Input('show-close-layer') showCloseLayer: boolean;
4243
@Input() formControlName: string;
4344

4445
@Input('ngModel') ngModel: any;
@@ -243,6 +244,7 @@ export class Ng2DatetimePickerDirective implements OnInit, OnChanges {
243244
component.maxHour = <number>this.maxHour;
244245
component.disabledDates = this.disabledDates;
245246
component.showCloseButton = this.closeOnSelect === "false";
247+
component.showCloseLayer = this.showCloseLayer;
246248

247249
this.styleDatetimePicker();
248250

@@ -263,6 +265,7 @@ export class Ng2DatetimePickerDirective implements OnInit, OnChanges {
263265
};
264266

265267
hideDatetimePicker = (event?): any => {
268+
console.log('what');
266269
if (this.clickedDatetimePicker) {
267270
return false;
268271
} else { /* invoked by function call */

0 commit comments

Comments
 (0)