add datepicker pointer

This commit is contained in:
t1m0n 2015-11-18 11:30:15 +03:00
parent a23309d46c
commit d92f4ccad5
6 changed files with 121 additions and 4 deletions

View File

@ -49,6 +49,38 @@
.datepicker--content { .datepicker--content {
padding: 2px; } padding: 2px; }
.datepicker--pointer {
position: absolute;
background: #fff;
border-top: 1px solid #ddd;
border-right: 1px solid #ddd;
width: 10px;
height: 10px; }
.-top-left- .datepicker--pointer, .-top-center- .datepicker--pointer, .-top-right- .datepicker--pointer {
top: calc(100% - 4px);
transform: rotate(135deg); }
.-right-top- .datepicker--pointer, .-right-center- .datepicker--pointer, .-right-bottom- .datepicker--pointer {
right: calc(100% - 4px);
transform: rotate(225deg); }
.-bottom-left- .datepicker--pointer, .-bottom-center- .datepicker--pointer, .-bottom-right- .datepicker--pointer {
bottom: calc(100% - 4px);
transform: rotate(315deg); }
.-left-top- .datepicker--pointer, .-left-center- .datepicker--pointer, .-left-bottom- .datepicker--pointer {
left: calc(100% - 4px);
transform: rotate(45deg); }
.-top-left- .datepicker--pointer, .-bottom-left- .datepicker--pointer {
left: 8px; }
.-top-right- .datepicker--pointer, .-bottom-right- .datepicker--pointer {
right: 8px; }
.-top-center- .datepicker--pointer, .-bottom-center- .datepicker--pointer {
left: calc(50% - 10px / 2); }
.-left-top- .datepicker--pointer, .-right-top- .datepicker--pointer {
top: 8px; }
.-left-bottom- .datepicker--pointer, .-right-bottom- .datepicker--pointer {
bottom: 8px; }
.-left-center- .datepicker--pointer, .-right-center- .datepicker--pointer {
top: calc(50% - 10px / 2); }
.datepicker--body { .datepicker--body {
display: none; } display: none; }
.datepicker--body.active { .datepicker--body.active {

View File

@ -6,6 +6,7 @@ var Datepicker;
containerBuilt = false, containerBuilt = false,
baseTemplate = '' + baseTemplate = '' +
'<div class="datepicker">' + '<div class="datepicker">' +
'<i class="datepicker--pointer"></i>' +
'<nav class="datepicker--nav"></nav>' + '<nav class="datepicker--nav"></nav>' +
'<div class="datepicker--content"></div>' + '<div class="datepicker--content"></div>' +
'</div>', '</div>',
@ -19,7 +20,7 @@ var Datepicker;
toggleSelected: true, toggleSelected: true,
position: 'bottom left', position: 'bottom left',
offset: 8, offset: 12,
view: 'days', view: 'days',
minView: 'days', minView: 'days',
@ -602,6 +603,7 @@ var Datepicker;
if (this.opts.onChangeView) { if (this.opts.onChangeView) {
this.opts.onChangeView(val) this.opts.onChangeView(val)
} }
this.setPosition(this.opts.position)
} }
return val return val

View File

@ -11,12 +11,29 @@
<div class="contents"> <div class="contents">
<article> <article>
<div class="calendar"></div> <div class="calendar"></div>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<input type="text" name="start" placeholder="Start"/> <input type="text" name="start" placeholder="Start"/>
<input type="text" name="end" placeholder="End"/> <input type="text" name="end" placeholder="End"/>
<br/> <br/>
<br/> <br/>
<button>Update</button> <button>Update</button>
</article> </article>
</div> </div>
<script type="text/javascript" src="dist/js/datepicker.js"></script> <script type="text/javascript" src="dist/js/datepicker.js"></script>
@ -32,6 +49,7 @@
} }
}) })
$end.datepicker({ $end.datepicker({
position: 'right top',
onSelect: function (format, date) { onSelect: function (format, date) {
$start.data('datepicker') $start.data('datepicker')
.update('maxDate', date) .update('maxDate', date)

View File

@ -6,6 +6,7 @@ var Datepicker;
containerBuilt = false, containerBuilt = false,
baseTemplate = '' + baseTemplate = '' +
'<div class="datepicker">' + '<div class="datepicker">' +
'<i class="datepicker--pointer"></i>' +
'<nav class="datepicker--nav"></nav>' + '<nav class="datepicker--nav"></nav>' +
'<div class="datepicker--content"></div>' + '<div class="datepicker--content"></div>' +
'</div>', '</div>',
@ -19,7 +20,7 @@ var Datepicker;
toggleSelected: true, toggleSelected: true,
position: 'bottom left', position: 'bottom left',
offset: 8, offset: 12,
view: 'days', view: 'days',
minView: 'days', minView: 'days',
@ -602,6 +603,7 @@ var Datepicker;
if (this.opts.onChangeView) { if (this.opts.onChangeView) {
this.opts.onChangeView(val) this.opts.onChangeView(val)
} }
this.setPosition(this.opts.position)
} }
return val return val

View File

@ -12,7 +12,7 @@
.datepicker { .datepicker {
background: #fff; background: #fff;
border: 1px solid $colorGrey; border: 1px solid $borderColor;
border-radius: $datepickerBorderRadius; border-radius: $datepickerBorderRadius;
box-sizing: content-box; box-sizing: content-box;
width: $datepickerWidth; width: $datepickerWidth;
@ -56,6 +56,66 @@
padding: $datepickerPadding; padding: $datepickerPadding;
} }
// Pointer
// -------------------------------------------------
$pointerHalfSize: $pointerSize / 2 - 1;
.datepicker--pointer {
position: absolute;
background: #fff;
border-top: 1px solid $borderColor;
border-right: 1px solid $borderColor;
width: $pointerSize;
height: $pointerSize;
// Main axis
// -------------------------
.-top-left- &, .-top-center- &, .-top-right- & {
top: calc(100% - #{$pointerHalfSize});
transform: rotate(135deg);
}
.-right-top- &, .-right-center- &, .-right-bottom- & {
right: calc(100% - #{$pointerHalfSize});
transform: rotate(225deg);
}
.-bottom-left- &, .-bottom-center- &, .-bottom-right- & {
bottom: calc(100% - #{$pointerHalfSize});
transform: rotate(315deg);
}
.-left-top- &, .-left-center- &, .-left-bottom- & {
left: calc(100% - #{$pointerHalfSize});
transform: rotate(45deg);
}
// Secondary axis
// -------------------------
.-top-left- &, .-bottom-left- & {
left: $pointerOffset;
}
.-top-right- &, .-bottom-right- & {
right: $pointerOffset;
}
.-top-center- &, .-bottom-center- & {
left: calc(50% - #{$pointerSize} / 2);
}
.-left-top- &, .-right-top- & {
top: $pointerOffset;
}
.-left-bottom- &, .-right-bottom- & {
bottom: $pointerOffset;
}
.-left-center- &, .-right-center- & {
top: calc(50% - #{$pointerSize} / 2);
}
}
// Body // Body
// ------------------------------------------------- // -------------------------------------------------

View File

@ -8,14 +8,17 @@ $textColor: #333;
$navigationHeight: 32px; $navigationHeight: 32px;
$navigationButtonsOffset: 1px; $navigationButtonsOffset: 1px;
$pointerSize: 10px;
$pointerOffset: 8px;
// Colors // Colors
$colorGrey: #ddd; $colorGrey: #ddd;
$colorAnotherMonth: #ddd; $colorAnotherMonth: #ddd;
$colorCellHover: #eee; $colorCellHover: #eee;
$colorCellCurrent: #60C4F5; $colorCellCurrent: #60C4F5;
$colorCellSelected: skyblue; $colorCellSelected: skyblue;
$colorCellWeekend: ''; $colorCellWeekend: '';
$borderColor: $colorGrey;
$bgButton: #f2f2f2; $bgButton: #f2f2f2;
$bgButtonHover: darken($bgButton, 3); $bgButtonHover: darken($bgButton, 3);