Skip to content

Instantly share code, notes, and snippets.

@javlc
Last active October 4, 2017 20:54
Show Gist options
  • Save javlc/f16a878da654607f8147415e9cccd723 to your computer and use it in GitHub Desktop.
Save javlc/f16a878da654607f8147415e9cccd723 to your computer and use it in GitHub Desktop.
jquery date range picker
import Ember from 'ember';
export default Ember.Component.extend({
uniqueId: 'my-picker',
didInsertElement() {
$('#two-inputs').dateRangePicker(
{
monthSelect: true,
yearSelect: function(current) {
return [current - 5, current + 5];
},
separator : '<span> to </span>',
getValue: function()
{
if ($('#date-range200').val() && $('#date-range201').val() )
return $('#date-range200').val() + ' to ' + $('#date-range201').val();
else
return '';
},
setValue: function(s,s1,s2)
{
$('#date-range200').val(s1);
$('#date-range201').val(s2);
}
});
}
});
import Ember from 'ember';
export default Ember.Component.extend({
didInsertElement() {
$('#single-input').dateRangePicker(
{
monthSelect: true,
yearSelect: function(current) {
return [current - 5, current + 5];
},
autoClose: true,
singleDate : true,
showShortcuts: false,
singleMonth: true
});
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Date Range Examples'
});
import Ember from 'ember';
export default Ember.Controller.extend({
isRange: true,
isSingle: Ember.computed.not('isRange'),
actions: {
togglePickers() {
this.toggleProperty('isRange');
}
}
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('jquery-picker');
this.route('flatpickr');
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
renderTemplate() {
this.render('flatpickr');
}
});
import Ember from 'ember';
export default Ember.Route.extend({
renderTemplate() {
this.render('jquery-picker');
}
});
body {
margin: 12px 16px;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12pt;
}
.date-picker {
width: 170px;
height: 25px;
padding: 0;
border: 0;
line-height: 25px;
padding-left: 10px;
font-size: 12px;
font-family: Arial, sans-serif;
font-weight: bold;
cursor: pointer;
color: #303030;
position: relative;
z-index: 2;
}
.date-picker-wrapper {
position: absolute;
z-index: 1;
border: 1px solid #bfbfbf;
background-color: #efefef;
padding: 5px 12px;
font-size: 12px;
line-height: 20px;
color: #aaa;
font-family: Arial, sans-serif;
-webkit-box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
-webkit-box-sizing: initial;
box-sizing: initial;
}
.date-picker-wrapper.inline-wrapper {
position: relative;
-webkit-box-shadow: none;
box-shadow: none;
display: inline-block;
}
.date-picker-wrapper.single-date {
width: auto;
}
.date-picker-wrapper.no-shortcuts {
padding-bottom: 12px;
}
.date-picker-wrapper.no-topbar {
padding-top: 12px;
}
.date-picker-wrapper .footer {
font-size: 11px;
padding-top: 3px;
}
.date-picker-wrapper b {
color: #666;
font-weight: 700;
}
.date-picker-wrapper a {
color: #6bb4d6;
text-decoration: underline;
}
.date-picker-wrapper .month-name {
text-transform: uppercase;
}
.date-picker-wrapper .select-wrapper {
position: relative;
overflow: hidden;
display: inline-block;
vertical-align: middle;
}
.date-picker-wrapper .select-wrapper:hover {
text-decoration: underline;
}
.date-picker-wrapper .month-element {
display: inline-block;
vertical-align: middle;
}
.date-picker-wrapper .select-wrapper select {
position: absolute;
margin: 0;
padding: 0;
left: 0;
top: -1px;
font-size: inherit;
font-style: inherit;
font-weight: inherit;
text-transform: inherit;
color: inherit;
cursor: pointer;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: transparent;
border: 0;
outline: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";
filter: alpha(opacity=1);
opacity: 0.01;
}
.date-picker-wrapper .month-wrapper {
border: 1px solid #bfbfbf;
border-radius: 3px;
background-color: #fff;
padding: 5px;
cursor: default;
position: relative;
_overflow: hidden;
}
.date-picker-wrapper .month-wrapper table {
width: 190px;
float: left;
}
.date-picker-wrapper .month-wrapper table.month2 {
width: 190px;
float: left;
}
.date-picker-wrapper .month-wrapper table th,
.date-picker-wrapper .month-wrapper table td {
vertical-align: middle;
text-align: center;
line-height: 14px;
margin: 0px;
padding: 0px;
}
.date-picker-wrapper .month-wrapper table .day {
padding: 5px 0;
line-height: 1;
font-size: 12px;
margin-bottom: 1px;
color: #ccc;
cursor: default;
}
.date-picker-wrapper .month-wrapper table div.day.lastMonth,
.date-picker-wrapper .month-wrapper table div.day.nextMonth {
color: #999;
cursor: default;
}
.date-picker-wrapper .month-wrapper table .day.checked {
background-color: #9cdbf7;
}
.date-picker-wrapper .month-wrapper table .week-name {
height: 20px;
line-height: 20px;
font-weight: 100;
text-transform: uppercase;
}
.date-picker-wrapper .month-wrapper table .day.has-tooltip {
cursor: help !important;
}
.date-picker-wrapper .time label {
white-space: nowrap;
}
.date-picker-wrapper .month-wrapper table .day.toMonth.valid {
color: #333;
cursor: pointer;
}
.date-picker-wrapper .month-wrapper table .day.toMonth.hovering {
background-color: #cdecfa;
}
.date-picker-wrapper .month-wrapper table .day.nextMonth,
.date-picker-wrapper .month-wrapper table .day.lastMonth {
display: none;
}
.date-picker-wrapper .month-wrapper table .day.real-today {
background-color: #ffe684;
}
.date-picker-wrapper .month-wrapper table .day.real-today.checked,
.date-picker-wrapper .month-wrapper table .day.real-today.hovering {
background-color: #70ccd5;
}
.date-picker-wrapper table .caption {
height: 40px;
}
.date-picker-wrapper table .caption .next,
.date-picker-wrapper table .caption .prev {
padding: 0 5px;
cursor: pointer;
}
.date-picker-wrapper table .caption .next:hover,
.date-picker-wrapper table .caption .prev:hover {
background-color: #ccc;
color: white;
}
.date-picker-wrapper .gap {
position: relative;
z-index: 1;
width: 15px;
height: 100%;
background-color: red;
font-size: 0;
line-height: 0;
float: left;
top: -5px;
margin: 0 10px -10px;
visibility: hidden;
height: 0;
}
.date-picker-wrapper .gap .gap-lines {
height: 100%;
overflow: hidden;
}
.date-picker-wrapper .gap .gap-line {
height: 15px;
width: 15px;
position: relative;
}
.date-picker-wrapper .gap .gap-line .gap-1 {
z-index: 1;
height: 0;
border-left: 8px solid white;
border-top: 8px solid #eee;
border-bottom: 8px solid #eee;
}
.date-picker-wrapper .gap .gap-line .gap-2 {
position: absolute;
right: 0;
top: 0px;
z-index: 2;
height: 0;
border-left: 8px solid transparent;
border-top: 8px solid white;
}
.date-picker-wrapper .gap .gap-line .gap-3 {
position: absolute;
right: 0;
top: 8px;
z-index: 2;
height: 0;
border-left: 8px solid transparent;
border-bottom: 8px solid white;
}
.date-picker-wrapper .gap .gap-top-mask {
width: 6px;
height: 1px;
position: absolute;
top: -1px;
left: 1px;
background-color: #eee;
z-index: 3;
}
.date-picker-wrapper .gap .gap-bottom-mask {
width: 6px;
height: 1px;
position: absolute;
bottom: -1px;
left: 7px;
background-color: #eee;
z-index: 3;
}
.date-picker-wrapper .selected-days {
display: none;
}
.date-picker-wrapper .drp_top-bar {
line-height: 1.4;
position: relative;
padding: 10px 40px 10px 0;
}
.date-picker-wrapper .drp_top-bar .error-top {
display: none;
}
.date-picker-wrapper .drp_top-bar .normal-top {
display: none;
}
.date-picker-wrapper .drp_top-bar .default-top {
display: block;
}
.date-picker-wrapper .drp_top-bar.error .default-top {
display: none;
}
.date-picker-wrapper .drp_top-bar.error .error-top {
display: block;
color: red;
}
.date-picker-wrapper .drp_top-bar.normal .default-top {
display: none;
}
.date-picker-wrapper .drp_top-bar.normal .normal-top {
display: block;
}
.date-picker-wrapper .drp_top-bar .apply-btn {
position: absolute;
right: 0px;
top: 6px;
padding: 3px 5px;
margin: 0;
font-size: 12px;
border-radius: 4px;
cursor: pointer;
color: #d9eef7;
border: solid 1px #0076a3;
background: #0095cd;
background: -moz-linear-gradient(top, #00adee, #0078a5);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5');
color: white;
line-height: initial;
}
.date-picker-wrapper .drp_top-bar .apply-btn.disabled {
cursor: pointer;
color: #606060;
border: solid 1px #b7b7b7;
background: #fff;
background: -moz-linear-gradient(top, #fff, #ededed);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed');
}
/*time styling*/
.date-picker-wrapper .time {
position: relative;
}
.date-picker-wrapper.single-month .time {
display: block;
}
.date-picker-wrapper .time input[type=range] {
vertical-align: middle;
width: 129px;
padding: 0;
margin: 0;
height: 20px;
}
.date-picker-wrapper .time1,
.time2 {
width: 180px;
padding: 0 5px;
text-align: center;
}
.date-picker-wrapper .time1 {
float: left;
}
.date-picker-wrapper .time2 {
float: right;
}
.date-picker-wrapper .hour,
.minute {
text-align: right;
}
.date-picker-wrapper .hide {
display: none;
}
.date-picker-wrapper .first-date-selected {
background-color: #49e !important;
color: white !important;
}
.date-picker-wrapper .last-date-selected {
background-color: #49e !important;
color: white !important;
}
.date-picker-wrapper .date-range-length-tip {
position: absolute;
margin-top: -4px;
margin-left: -8px;
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
display: none;
background-color: yellow;
padding: 0 6px;
border-radius: 2px;
font-size: 12px;
line-height: 16px;
-webkit-filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.3));
-moz-filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.3));
-ms-filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.3));
-o-filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.3));
filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.3));
}
.date-picker-wrapper .date-range-length-tip:after {
content: '';
position: absolute;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 4px solid yellow;
left: 50%;
margin-left: -4px;
bottom: -4px;
}
.date-picker-wrapper.two-months.no-gap .month1 .next,
.date-picker-wrapper.two-months.no-gap .month2 .prev {
display: none;
}
.date-picker-wrapper .week-number {
padding: 5px 0;
line-height: 1;
font-size: 12px;
margin-bottom: 1px;
color: #999;
cursor: pointer;
}
.date-picker-wrapper .week-number.week-number-selected {
color: #4499EE;
font-weight: bold;
}
/* Custom updates */
.date-picker-wrapper {
width: 500px;
box-sizing: border-box;
background: #fff;
}
.date-picker-wrapper .drp_top-bar {
width: 55%;
position: absolute;
left: 50%;
transform: translateX(-50%);
background-color: white;
padding: 6px 0 6px 0;
z-index: 1;
}
.date-picker-wrapper .drp_top-bar .default-top {
display: none;
}
.date-picker-wrapper .drp_top-bar.normal .normal-top {
width: 140%;
}
.date-picker-wrapper .drp_top-bar .apply-btn {
top: 250px;
left: 50%;
transform: translateX(-50%);
border: solid 1px #009688;
background: #26a69a;
}
.date-picker-wrapper .month-wrapper {
border: none;
margin: 0;
margin-top: 20px;
padding-bottom: 20px;
}
.date-picker-wrapper.no-shortcuts {
padding: 0;
}
.date-picker-wrapper .month-wrapper table {
width: 230px;
}
.date-picker-wrapper .month-wrapper table.month2 {
width: 230px;
}
.date-picker-wrapper .month-wrapper table td {
height: 25px;
width: 25px;
}
.date-picker-wrapper .month-wrapper table .day {
border-radius: 50%;
font-size: 14px;
line-height: 1.5;
height: 22px;
width: 32px;
margin: 0;
}
.date-picker-wrapper .month-wrapper table .day.toMonth {
margin: 0;
}
.date-picker-wrapper .gap {
margin: 0 5px;
}
.date-picker-wrapper .month-wrapper table .day.real-today {
background-color: transparent;
color: #26a69a !important;
font-weight: bolder;
}
.date-picker-wrapper .month-wrapper table .day.checked {
background-color: #80cbc4;
}
.date-picker-wrapper .month-wrapper table .day.first-date-selected,
.date-picker-wrapper .last-date-selected {
background-color: #26a69a !important;
color: #fff !important;
}
.date-picker-wrapper .month-wrapper table .day.real-today.checked {
background-color: #80cbc4;
}
.date-picker-wrapper .month-wrapper table .day.toMonth.hovering {
background-color: #b2dfdb;
}
.date-picker-wrapper .date-range-length-tip {
}
<h1>{{appName}}</h1>
{{link-to 'jquery date range picker' 'jquery-picker'}} <br>
{{link-to 'flatpickr' 'flatpickr'}}
{{outlet}}
<span id="two-inputs">
<input id="date-range200" size="20" value="">
<span> to </span>
<input id="date-range201" size="20" value="">
</span>
<input id="single-input" size="20" value="">
<h2>Ember Flatpickr</h2>
<div>Flatpickr has a way to add a range using two inputs.
<a href="https://chmln.github.io/flatpickr/plugins/#rangeplugin-beta">Flatpickr Range with two inputs</a><span><b>. ember-flatpickr</b> claims it has added all functionality from flatpickr.</span>
<i>(Review in progress)</i>
</div>
<br>
{{ember-flatpickr onChange=null}}
<br>
<br>
<h2>jQuery Date Range Picker</h2>
{{#if isRange}}
<input type="button" value="Single Picker" {{action 'togglePickers'}}>
<h3>Range picker</h3>
{{jquery-picker}}
{{/if}}
{{#if isSingle}}
<input type="button" value="Range Picker" {{action 'togglePickers'}}>
<h3>Single picker</h3>
{{jquery-single-picker}}
{{/if}}
{
"version": "0.12.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0",
"moment": "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js",
"jquery-date-range-picker": "https://cdnjs.cloudflare.com/ajax/libs/jquery-date-range-picker/0.16.0/jquery.daterangepicker.min.js"
},
"addons": {
"ember-data": "2.12.1",
"ember-flatpickr": "2.0.3"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment