mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Merge commit '65c3d1bf3868ad3e1caec9fc77021735df53f989' into issue-711
This commit is contained in:
@@ -54,7 +54,6 @@
|
|||||||
"requireCamelCaseOrUpperCaseIdentifiers": "ignoreProperties",
|
"requireCamelCaseOrUpperCaseIdentifiers": "ignoreProperties",
|
||||||
"disallowKeywords": ["with"],
|
"disallowKeywords": ["with"],
|
||||||
"disallowMultipleLineStrings": true,
|
"disallowMultipleLineStrings": true,
|
||||||
"validateLineBreaks": "LF",
|
|
||||||
"validateIndentation": 4,
|
"validateIndentation": 4,
|
||||||
"disallowTrailingWhitespace": true,
|
"disallowTrailingWhitespace": true,
|
||||||
"disallowTrailingComma": true,
|
"disallowTrailingComma": true,
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
Submitting Issues
|
Submitting Issues
|
||||||
=================
|
=================
|
||||||
|
|
||||||
If you are submitting a bug, please test and/or fork [this jsfiddle](http://jsfiddle.net/kmbo576p/) demonstrating the issue. Code issues and fringe case bugs that do not include a jsfiddle (or similar) will be closed.
|
If you are submitting a bug, please test and/or fork [this jsfiddle](http://jsfiddle.net/Eonasdan/0Ltv25o8/) demonstrating the issue. Code issues and fringe case bugs that do not include a jsfiddle (or similar) will be closed.
|
||||||
|
|
||||||
|
Issues that are submitted without a description (title only) will be closed with no further explanation.
|
||||||
|
|
||||||
Contributing code
|
Contributing code
|
||||||
=================
|
=================
|
||||||
@@ -22,6 +24,9 @@ Very important notes
|
|||||||
|
|
||||||
* **Pull requests to the `master` branch will be closed.** Please submit all pull requests to the `development` branch.
|
* **Pull requests to the `master` branch will be closed.** Please submit all pull requests to the `development` branch.
|
||||||
* **Do not include the minified files in your pull request.** Don't worry, we'll build them when we cut a release.
|
* **Do not include the minified files in your pull request.** Don't worry, we'll build them when we cut a release.
|
||||||
|
* Pull requests that do not include a description (title only) and the following will be closed:
|
||||||
|
* What the change does
|
||||||
|
* A use case (for new features or enhancements)
|
||||||
|
|
||||||
Grunt tasks
|
Grunt tasks
|
||||||
===========
|
===========
|
||||||
@@ -30,3 +35,4 @@ We use Grunt for managing the build. Here are some useful Grunt tasks:
|
|||||||
|
|
||||||
* `grunt` The default task lints the code and runs the tests. You should make sure you do this before submitting a PR.
|
* `grunt` The default task lints the code and runs the tests. You should make sure you do this before submitting a PR.
|
||||||
* `grunt build` Compiles the less stylesheet and minifies the javascript source in build directory.
|
* `grunt build` Compiles the less stylesheet and minifies the javascript source in build directory.
|
||||||
|
* `grunt build:travis` Compliles and runs the jasmine/travis tests. **All PR's MUST pass tests in place**
|
||||||
|
@@ -24,11 +24,12 @@ module.exports = function (grunt) {
|
|||||||
|
|
||||||
jshint: {
|
jshint: {
|
||||||
all: [
|
all: [
|
||||||
'Gruntfile.js', 'src/js/*.js'
|
'Gruntfile.js', 'src/js/*.js', 'test/*.js'
|
||||||
],
|
],
|
||||||
options: {
|
options: {
|
||||||
'browser' : true,
|
'browser' : true,
|
||||||
'node' : true,
|
'node' : true,
|
||||||
|
'jquery' : true,
|
||||||
'boss' : false,
|
'boss' : false,
|
||||||
'curly' : true,
|
'curly' : true,
|
||||||
'debug' : false,
|
'debug' : false,
|
||||||
@@ -57,15 +58,24 @@ module.exports = function (grunt) {
|
|||||||
'quotmark' : 'single',
|
'quotmark' : 'single',
|
||||||
'globals': {
|
'globals': {
|
||||||
'define': false,
|
'define': false,
|
||||||
'jQuery': false,
|
'moment': false,
|
||||||
'moment': false
|
// Jasmine
|
||||||
|
'jasmine': false,
|
||||||
|
'describe': false,
|
||||||
|
'xdescribe': false,
|
||||||
|
'expect': false,
|
||||||
|
'it': false,
|
||||||
|
'xit': false,
|
||||||
|
'spyOn': false,
|
||||||
|
'beforeEach': false,
|
||||||
|
'afterEach': false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
jscs: {
|
jscs: {
|
||||||
all: [
|
all: [
|
||||||
'Gruntfile.js', 'src/js/*.js'
|
'Gruntfile.js', 'src/js/*.js', 'test/*.js'
|
||||||
],
|
],
|
||||||
options: {
|
options: {
|
||||||
config: '.jscs.json'
|
config: '.jscs.json'
|
||||||
@@ -86,22 +96,49 @@ module.exports = function (grunt) {
|
|||||||
'build/css/bootstrap-datetimepicker.css': 'src/less/bootstrap-datetimepicker-build.less'
|
'build/css/bootstrap-datetimepicker.css': 'src/less/bootstrap-datetimepicker-build.less'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
jasmine: {
|
||||||
|
customTemplate: {
|
||||||
|
src: 'src/js/*.js',
|
||||||
|
options: {
|
||||||
|
specs: 'test/*Spec.js',
|
||||||
|
helpers: 'test/*Helper.js',
|
||||||
|
styles: [
|
||||||
|
'node_modules/bootstrap/dist/css/bootstrap.min.css',
|
||||||
|
'build/css/bootstrap-datetimepicker.min.css'
|
||||||
|
],
|
||||||
|
vendor: [
|
||||||
|
'node_modules/jquery/dist/jquery.min.js',
|
||||||
|
'node_modules/moment/min/moment-with-locales.min.js',
|
||||||
|
'node_modules/bootstrap/dist/js/bootstrap.min.js'
|
||||||
|
],
|
||||||
|
display: 'none',
|
||||||
|
summary: 'true'
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
grunt.loadTasks('tasks');
|
grunt.loadTasks('tasks');
|
||||||
|
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-jasmine');
|
||||||
|
|
||||||
// These plugins provide necessary tasks.
|
// These plugins provide necessary tasks.
|
||||||
require('load-grunt-tasks')(grunt);
|
require('load-grunt-tasks')(grunt);
|
||||||
|
|
||||||
// Default task.
|
// Default task.
|
||||||
grunt.registerTask('default', ['jshint', 'jscs']);
|
grunt.registerTask('default', ['jshint', 'jscs', 'less', 'jasmine']);
|
||||||
|
|
||||||
// travis build task
|
// travis build task
|
||||||
grunt.registerTask('build:travis', [
|
grunt.registerTask('build:travis', [
|
||||||
// code style
|
// code style
|
||||||
'jshint', 'jscs'
|
'jshint', 'jscs',
|
||||||
|
// build
|
||||||
|
'uglify', 'less',
|
||||||
|
// tests
|
||||||
|
'jasmine'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Task to be run when building
|
// Task to be run when building
|
||||||
@@ -131,7 +168,7 @@ module.exports = function (grunt) {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else { //--target=css
|
||||||
grunt.util.spawn({
|
grunt.util.spawn({
|
||||||
cmd: 'src/nuget/nuget.exe',
|
cmd: 'src/nuget/nuget.exe',
|
||||||
args: [
|
args: [
|
||||||
@@ -152,4 +189,6 @@ module.exports = function (grunt) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
grunt.registerTask('test', ['jshint', 'jscs', 'uglify', 'less', 'jasmine']);
|
||||||
};
|
};
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2014 Eonasdan, nikoskalogridis
|
Copyright (c) 2015 Jonathan Peterson (@Eonasdan)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@@ -1,17 +1,25 @@
|
|||||||
# Bootstrap v3 datetimepicker widget  
|
# Bootstrap 3 Date/Time Picker
|
||||||
|
 
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## [View the manual and demos](http://eonasdan.github.io/bootstrap-datetimepicker/)
|
## [View the manual and demos](http://eonasdan.github.io/bootstrap-datetimepicker/)
|
||||||
|
|
||||||
|
#v4
|
||||||
|
v4 is out now! For v4 related bugs and issues see: /Eonasdan/bootstrap-datetimepicker/labels/v4.
|
||||||
|
|
||||||
|
v3 is going into an archive state. Please be sure to check the documents. v4 has breaking changes and is a major rewrite.
|
||||||
|
|
||||||
## Submitting Issues
|
## Submitting Issues
|
||||||
Please test and/or fork [this jsfiddle](http://jsfiddle.net/kmbo576p/) with an example of your issue before you post an issue here.
|
If you have issues, please check the following first:
|
||||||
|
* Have you read the docs?
|
||||||
|
* Do you have the latest version of momentjs?
|
||||||
|
* Do you have the latest version of jQuery?
|
||||||
|
* Please test and/or fork [this jsfiddle](http://jsfiddle.net/Eonasdan/0Ltv25o8/) with an example of your issue before you post an issue here.
|
||||||
|
|
||||||
## Where do you use this?
|
## Where do you use this?
|
||||||
I'd love to know if your public site is using this plugin and list your logo on the documentation site. Please email me `eonasdan at outlook dot com`. Do not submit issue/feature request to this email, they will be ignored.
|
I'd love to know if your public site is using this plugin and list your logo on the documentation site. Please email me `eonasdan at outlook dot com`. Do not submit issue/feature request to this email, they will be **ignored**.
|
||||||
|
|
||||||
## [Installation instructions](https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Installation)
|
## [Installation instructions](http://eonasdan.github.io/bootstrap-datetimepicker/Installing/)
|
||||||
Installation instructions has been moved to the wiki
|
|
||||||
|
|
||||||
## [Change Log](https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log)
|
## [Change Log](http://eonasdan.github.io/bootstrap-datetimepicker/Version%204%20Changelog/)
|
||||||
The change log has moved to the wiki
|
|
||||||
|
@@ -1,13 +1,15 @@
|
|||||||
{
|
{
|
||||||
"name": "eonasdan-bootstrap-datetimepicker",
|
"name": "eonasdan-bootstrap-datetimepicker",
|
||||||
"version": "3.1.3",
|
"version": "4.7.14",
|
||||||
"main": [
|
"main": [
|
||||||
"build/css/bootstrap-datetimepicker.min.css",
|
"build/css/bootstrap-datetimepicker.min.css",
|
||||||
"build/js/bootstrap-datetimepicker.min.js"
|
"build/js/bootstrap-datetimepicker.min.js",
|
||||||
|
"src/less/_bootstrap-datetimepicker.less",
|
||||||
|
"src/less/bootstrap-datetimepicker-build.less",
|
||||||
|
"src/js/bootstrap-datetimepicker.js"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jquery": ">=1.8.3",
|
"jquery": ">=1.8.3",
|
||||||
"bootstrap": ">= 3.0",
|
|
||||||
"moment": ">=2.8.0"
|
"moment": ">=2.8.0"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/Eonasdan/bootstrap-datetimepicker",
|
"homepage": "https://github.com/Eonasdan/bootstrap-datetimepicker",
|
||||||
|
@@ -1,75 +1,76 @@
|
|||||||
/*!
|
/*!
|
||||||
* Datetimepicker for Bootstrap v3
|
* Datetimepicker for Bootstrap 3
|
||||||
//! version : 3.1.3
|
* ! version : 4.7.14
|
||||||
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
||||||
*/
|
*/
|
||||||
.bootstrap-datetimepicker-widget {
|
.bootstrap-datetimepicker-widget {
|
||||||
top: 0;
|
list-style: none;
|
||||||
left: 0;
|
}
|
||||||
width: 250px;
|
.bootstrap-datetimepicker-widget.dropdown-menu {
|
||||||
|
margin: 2px 0;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
margin-top: 1px;
|
width: 19em;
|
||||||
z-index: 99999 !important;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget.timepicker-sbs {
|
@media (min-width: 768px) {
|
||||||
width: 600px;
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget.bottom:before {
|
@media (min-width: 992px) {
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu:before,
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu:after {
|
||||||
content: '';
|
content: '';
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {
|
||||||
border-left: 7px solid transparent;
|
border-left: 7px solid transparent;
|
||||||
border-right: 7px solid transparent;
|
border-right: 7px solid transparent;
|
||||||
border-bottom: 7px solid #ccc;
|
border-bottom: 7px solid #cccccc;
|
||||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||||
position: absolute;
|
|
||||||
top: -7px;
|
top: -7px;
|
||||||
left: 7px;
|
left: 7px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget.bottom:after {
|
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 6px solid transparent;
|
border-left: 6px solid transparent;
|
||||||
border-right: 6px solid transparent;
|
border-right: 6px solid transparent;
|
||||||
border-bottom: 6px solid white;
|
border-bottom: 6px solid white;
|
||||||
position: absolute;
|
|
||||||
top: -6px;
|
top: -6px;
|
||||||
left: 8px;
|
left: 8px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget.top:before {
|
.bootstrap-datetimepicker-widget.dropdown-menu.top:before {
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 7px solid transparent;
|
border-left: 7px solid transparent;
|
||||||
border-right: 7px solid transparent;
|
border-right: 7px solid transparent;
|
||||||
border-top: 7px solid #ccc;
|
border-top: 7px solid #cccccc;
|
||||||
border-top-color: rgba(0, 0, 0, 0.2);
|
border-top-color: rgba(0, 0, 0, 0.2);
|
||||||
position: absolute;
|
|
||||||
bottom: -7px;
|
bottom: -7px;
|
||||||
left: 6px;
|
left: 6px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget.top:after {
|
.bootstrap-datetimepicker-widget.dropdown-menu.top:after {
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 6px solid transparent;
|
border-left: 6px solid transparent;
|
||||||
border-right: 6px solid transparent;
|
border-right: 6px solid transparent;
|
||||||
border-top: 6px solid white;
|
border-top: 6px solid white;
|
||||||
position: absolute;
|
|
||||||
bottom: -6px;
|
bottom: -6px;
|
||||||
left: 7px;
|
left: 7px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget .dow {
|
.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before {
|
||||||
width: 14.2857%;
|
|
||||||
}
|
|
||||||
.bootstrap-datetimepicker-widget.pull-right:before {
|
|
||||||
left: auto;
|
left: auto;
|
||||||
right: 6px;
|
right: 6px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget.pull-right:after {
|
.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after {
|
||||||
left: auto;
|
left: auto;
|
||||||
right: 7px;
|
right: 7px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget > ul {
|
.bootstrap-datetimepicker-widget .list-unstyled {
|
||||||
list-style-type: none;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget a[data-action] {
|
.bootstrap-datetimepicker-widget a[data-action] {
|
||||||
@@ -89,82 +90,238 @@
|
|||||||
.bootstrap-datetimepicker-widget button[data-action] {
|
.bootstrap-datetimepicker-widget button[data-action] {
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator {
|
.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after {
|
||||||
width: 4px;
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Increment Hours";
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget .datepicker > div {
|
.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after {
|
||||||
display: none;
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Increment Minutes";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Decrement Hours";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Decrement Minutes";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Show Hours";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Show Minutes";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Toggle AM/PM";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Clear the picker";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="today"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Set the date to today";
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget .picker-switch {
|
.bootstrap-datetimepicker-widget .picker-switch {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Toggle Date and Time Screens";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch td {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch td span {
|
||||||
|
line-height: 2.5;
|
||||||
|
height: 2.5em;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
.bootstrap-datetimepicker-widget table {
|
.bootstrap-datetimepicker-widget table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td,
|
.bootstrap-datetimepicker-widget table td,
|
||||||
.bootstrap-datetimepicker-widget th {
|
.bootstrap-datetimepicker-widget table th {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td {
|
.bootstrap-datetimepicker-widget table th {
|
||||||
height: 54px;
|
|
||||||
line-height: 54px;
|
|
||||||
width: 54px;
|
|
||||||
}
|
|
||||||
.bootstrap-datetimepicker-widget td.cw {
|
|
||||||
font-size: 10px;
|
|
||||||
height: 20px;
|
|
||||||
line-height: 20px;
|
|
||||||
color: #777777;
|
|
||||||
}
|
|
||||||
.bootstrap-datetimepicker-widget td.day {
|
|
||||||
height: 20px;
|
height: 20px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
width: 20px;
|
width: 20px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td.day:hover,
|
.bootstrap-datetimepicker-widget table th.picker-switch {
|
||||||
.bootstrap-datetimepicker-widget td.hour:hover,
|
width: 145px;
|
||||||
.bootstrap-datetimepicker-widget td.minute:hover,
|
}
|
||||||
.bootstrap-datetimepicker-widget td.second:hover {
|
.bootstrap-datetimepicker-widget table th.disabled,
|
||||||
|
.bootstrap-datetimepicker-widget table th.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #777777;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table th.prev::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Previous Month";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table th.next::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Next Month";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table thead tr:first-child th {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td {
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
width: 54px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.cw {
|
||||||
|
font-size: .8em;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
color: #777777;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.day {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.day:hover,
|
||||||
|
.bootstrap-datetimepicker-widget table td.hour:hover,
|
||||||
|
.bootstrap-datetimepicker-widget table td.minute:hover,
|
||||||
|
.bootstrap-datetimepicker-widget table td.second:hover {
|
||||||
background: #eeeeee;
|
background: #eeeeee;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td.old,
|
.bootstrap-datetimepicker-widget table td.old,
|
||||||
.bootstrap-datetimepicker-widget td.new {
|
.bootstrap-datetimepicker-widget table td.new {
|
||||||
color: #777777;
|
color: #777777;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td.today {
|
.bootstrap-datetimepicker-widget table td.today {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td.today:before {
|
.bootstrap-datetimepicker-widget table td.today:before {
|
||||||
content: '';
|
content: '';
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
border-left: 7px solid transparent;
|
border: 0 0 7px 7px solid transparent;
|
||||||
border-bottom: 7px solid #428bca;
|
border-bottom-color: #337ab7;
|
||||||
border-top-color: rgba(0, 0, 0, 0.2);
|
border-top-color: rgba(0, 0, 0, 0.2);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 4px;
|
bottom: 4px;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td.active,
|
.bootstrap-datetimepicker-widget table td.active,
|
||||||
.bootstrap-datetimepicker-widget td.active:hover {
|
.bootstrap-datetimepicker-widget table td.active:hover {
|
||||||
background-color: #428bca;
|
background-color: #337ab7;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td.active.today:before {
|
.bootstrap-datetimepicker-widget table td.active.today:before {
|
||||||
border-bottom-color: #fff;
|
border-bottom-color: #fff;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td.disabled,
|
.bootstrap-datetimepicker-widget table td.disabled,
|
||||||
.bootstrap-datetimepicker-widget td.disabled:hover {
|
.bootstrap-datetimepicker-widget table td.disabled:hover {
|
||||||
background: none;
|
background: none;
|
||||||
color: #777777;
|
color: #777777;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td span {
|
.bootstrap-datetimepicker-widget table td span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 54px;
|
width: 54px;
|
||||||
height: 54px;
|
height: 54px;
|
||||||
@@ -173,66 +330,37 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td span:hover {
|
.bootstrap-datetimepicker-widget table td span:hover {
|
||||||
background: #eeeeee;
|
background: #eeeeee;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td span.active {
|
.bootstrap-datetimepicker-widget table td span.active {
|
||||||
background-color: #428bca;
|
background-color: #337ab7;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td span.old {
|
.bootstrap-datetimepicker-widget table td span.old {
|
||||||
color: #777777;
|
color: #777777;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget td span.disabled,
|
.bootstrap-datetimepicker-widget table td span.disabled,
|
||||||
.bootstrap-datetimepicker-widget td span.disabled:hover {
|
.bootstrap-datetimepicker-widget table td span.disabled:hover {
|
||||||
background: none;
|
background: none;
|
||||||
color: #777777;
|
color: #777777;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget th {
|
.bootstrap-datetimepicker-widget.usetwentyfour td.hour {
|
||||||
height: 20px;
|
height: 27px;
|
||||||
line-height: 20px;
|
line-height: 27px;
|
||||||
width: 20px;
|
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget th.picker-switch {
|
.input-group.date .input-group-addon {
|
||||||
width: 145px;
|
|
||||||
}
|
|
||||||
.bootstrap-datetimepicker-widget th.next,
|
|
||||||
.bootstrap-datetimepicker-widget th.prev {
|
|
||||||
font-size: 21px;
|
|
||||||
}
|
|
||||||
.bootstrap-datetimepicker-widget th.disabled,
|
|
||||||
.bootstrap-datetimepicker-widget th.disabled:hover {
|
|
||||||
background: none;
|
|
||||||
color: #777777;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
.bootstrap-datetimepicker-widget thead tr:first-child th {
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.bootstrap-datetimepicker-widget thead tr:first-child th:hover {
|
.sr-only {
|
||||||
background: #eeeeee;
|
position: absolute;
|
||||||
}
|
width: 1px;
|
||||||
.input-group.date .input-group-addon span {
|
height: 1px;
|
||||||
display: block;
|
margin: -1px;
|
||||||
cursor: pointer;
|
padding: 0;
|
||||||
width: 16px;
|
overflow: hidden;
|
||||||
height: 16px;
|
clip: rect(0, 0, 0, 0);
|
||||||
}
|
border: 0;
|
||||||
.bootstrap-datetimepicker-widget.left-oriented:before {
|
|
||||||
left: auto;
|
|
||||||
right: 6px;
|
|
||||||
}
|
|
||||||
.bootstrap-datetimepicker-widget.left-oriented:after {
|
|
||||||
left: auto;
|
|
||||||
right: 7px;
|
|
||||||
}
|
|
||||||
.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td {
|
|
||||||
padding: 0px !important;
|
|
||||||
}
|
|
||||||
@media screen and (max-width: 767px) {
|
|
||||||
.bootstrap-datetimepicker-widget.timepicker-sbs {
|
|
||||||
width: 283px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,366 @@
|
|||||||
/*!
|
/*!
|
||||||
* Datetimepicker for Bootstrap v3
|
* Datetimepicker for Bootstrap 3
|
||||||
//! version : 3.1.3
|
* ! version : 4.7.14
|
||||||
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
||||||
*/.bootstrap-datetimepicker-widget{top:0;left:0;width:250px;padding:4px;margin-top:1px;z-index:99999!important;border-radius:4px}.bootstrap-datetimepicker-widget.timepicker-sbs{width:600px}.bootstrap-datetimepicker-widget.bottom:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:7px}.bootstrap-datetimepicker-widget.bottom:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:8px}.bootstrap-datetimepicker-widget.top:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.top:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;position:absolute;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget .dow{width:14.2857%}.bootstrap-datetimepicker-widget.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget>ul{list-style-type:none;margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator{width:4px;padding:0;margin:0}.bootstrap-datetimepicker-widget .datepicker>div{display:none}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget td,.bootstrap-datetimepicker-widget th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget td.cw{font-size:10px;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget td.day:hover,.bootstrap-datetimepicker-widget td.hour:hover,.bootstrap-datetimepicker-widget td.minute:hover,.bootstrap-datetimepicker-widget td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget td.old,.bootstrap-datetimepicker-widget td.new{color:#777}.bootstrap-datetimepicker-widget td.today{position:relative}.bootstrap-datetimepicker-widget td.today:before{content:'';display:inline-block;border-left:7px solid transparent;border-bottom:7px solid #428bca;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget td.active,.bootstrap-datetimepicker-widget td.active:hover{background-color:#428bca;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget td.disabled,.bootstrap-datetimepicker-widget td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget td span:hover{background:#eee}.bootstrap-datetimepicker-widget td span.active{background-color:#428bca;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget td span.old{color:#777}.bootstrap-datetimepicker-widget td span.disabled,.bootstrap-datetimepicker-widget td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget th.picker-switch{width:145px}.bootstrap-datetimepicker-widget th.next,.bootstrap-datetimepicker-widget th.prev{font-size:21px}.bootstrap-datetimepicker-widget th.disabled,.bootstrap-datetimepicker-widget th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget thead tr:first-child th:hover{background:#eee}.input-group.date .input-group-addon span{display:block;cursor:pointer;width:16px;height:16px}.bootstrap-datetimepicker-widget.left-oriented:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.left-oriented:after{left:auto;right:7px}.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody>tr>td{padding:0!important}@media screen and (max-width:767px){.bootstrap-datetimepicker-widget.timepicker-sbs{width:283px}}
|
*/
|
||||||
|
.bootstrap-datetimepicker-widget {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu {
|
||||||
|
margin: 2px 0;
|
||||||
|
padding: 4px;
|
||||||
|
width: 19em;
|
||||||
|
}
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (min-width: 992px) {
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu:before,
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-bottom: 7px solid #cccccc;
|
||||||
|
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||||
|
top: -7px;
|
||||||
|
left: 7px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid white;
|
||||||
|
top: -6px;
|
||||||
|
left: 8px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.top:before {
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-top: 7px solid #cccccc;
|
||||||
|
border-top-color: rgba(0, 0, 0, 0.2);
|
||||||
|
bottom: -7px;
|
||||||
|
left: 6px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.top:after {
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-top: 6px solid white;
|
||||||
|
bottom: -6px;
|
||||||
|
left: 7px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before {
|
||||||
|
left: auto;
|
||||||
|
right: 6px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after {
|
||||||
|
left: auto;
|
||||||
|
right: 7px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .list-unstyled {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget a[data-action] {
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget a[data-action]:active {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .timepicker-hour,
|
||||||
|
.bootstrap-datetimepicker-widget .timepicker-minute,
|
||||||
|
.bootstrap-datetimepicker-widget .timepicker-second {
|
||||||
|
width: 54px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.2em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget button[data-action] {
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Increment Hours";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Increment Minutes";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Decrement Hours";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Decrement Minutes";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Show Hours";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Show Minutes";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Toggle AM/PM";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Clear the picker";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="today"]::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Set the date to today";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Toggle Date and Time Screens";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch td {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch td span {
|
||||||
|
line-height: 2.5;
|
||||||
|
height: 2.5em;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td,
|
||||||
|
.bootstrap-datetimepicker-widget table th {
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table th {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table th.picker-switch {
|
||||||
|
width: 145px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table th.disabled,
|
||||||
|
.bootstrap-datetimepicker-widget table th.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #777777;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table th.prev::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Previous Month";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table th.next::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
content: "Next Month";
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table thead tr:first-child th {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td {
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
width: 54px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.cw {
|
||||||
|
font-size: .8em;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
color: #777777;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.day {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.day:hover,
|
||||||
|
.bootstrap-datetimepicker-widget table td.hour:hover,
|
||||||
|
.bootstrap-datetimepicker-widget table td.minute:hover,
|
||||||
|
.bootstrap-datetimepicker-widget table td.second:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.old,
|
||||||
|
.bootstrap-datetimepicker-widget table td.new {
|
||||||
|
color: #777777;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.today {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.today:before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border: 0 0 7px 7px solid transparent;
|
||||||
|
border-bottom-color: #337ab7;
|
||||||
|
border-top-color: rgba(0, 0, 0, 0.2);
|
||||||
|
position: absolute;
|
||||||
|
bottom: 4px;
|
||||||
|
right: 4px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.active,
|
||||||
|
.bootstrap-datetimepicker-widget table td.active:hover {
|
||||||
|
background-color: #337ab7;
|
||||||
|
color: #ffffff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.active.today:before {
|
||||||
|
border-bottom-color: #fff;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td.disabled,
|
||||||
|
.bootstrap-datetimepicker-widget table td.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #777777;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 54px;
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
margin: 2px 1.5px;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td span:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td span.active {
|
||||||
|
background-color: #337ab7;
|
||||||
|
color: #ffffff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td span.old {
|
||||||
|
color: #777777;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget table td span.disabled,
|
||||||
|
.bootstrap-datetimepicker-widget table td span.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #777777;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
.bootstrap-datetimepicker-widget.usetwentyfour td.hour {
|
||||||
|
height: 27px;
|
||||||
|
line-height: 27px;
|
||||||
|
}
|
||||||
|
.input-group.date .input-group-addon {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.sr-only {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@@ -1,10 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "bootstrap-datetimepicker",
|
"name": "bootstrap-datetimepicker",
|
||||||
"version": "3.1.3",
|
"version": "4.7.14",
|
||||||
"main": ["build/css/bootstrap-datetimepicker.min.css","build/js/bootstrap-datetimepicker.min.js"],
|
"main": ["build/css/bootstrap-datetimepicker.min.css","build/js/bootstrap-datetimepicker.min.js","src/less/_bootstrap-datetimepicker.less","src/less/bootstrap-datetimepicker-build.less","src/js/bootstrap-datetimepicker.js"],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jquery" : ">=1.8.3",
|
"jquery" : ">=1.8.3",
|
||||||
"bootstrap" : ">=3.0",
|
|
||||||
"moment": ">=2.8.0"
|
"moment": ">=2.8.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "eonasdan/bootstrap-datetimepicker",
|
"name": "eonasdan/bootstrap-datetimepicker",
|
||||||
"type": "component",
|
"type": "component",
|
||||||
"version": "3.1.3",
|
"version": "4.7.14",
|
||||||
"description": "Date/time picker widget based on twitter bootstrap",
|
"description": "Date/time picker widget based on twitter bootstrap",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"bootstrap",
|
"bootstrap",
|
||||||
@@ -12,7 +12,6 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"robloach/component-installer": "*",
|
"robloach/component-installer": "*",
|
||||||
"components/jquery": ">=1.9.1",
|
"components/jquery": ">=1.9.1",
|
||||||
"components/bootstrap": "3.*",
|
|
||||||
"moment/moment": ">=2.8"
|
"moment/moment": ">=2.8"
|
||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
@@ -23,7 +22,9 @@
|
|||||||
"files": [
|
"files": [
|
||||||
"build/js/bootstrap-datetimepicker.min.js",
|
"build/js/bootstrap-datetimepicker.min.js",
|
||||||
"build/css/bootstrap-datetimepicker.css",
|
"build/css/bootstrap-datetimepicker.css",
|
||||||
"build/css/bootstrap-datetimepicker.min.css"
|
"build/css/bootstrap-datetimepicker.min.css",
|
||||||
|
"src/less/_bootstrap-datetimepicker.less",
|
||||||
|
"src/less/bootstrap-datetimepicker-build.less"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "bootstrap-datetimepicker",
|
"name": "bootstrap-datetimepicker",
|
||||||
"main": "src/js/bootstrap-datetimepicker.js",
|
"main": "src/js/bootstrap-datetimepicker.js",
|
||||||
"version": "3.1.3",
|
"version": "4.7.14",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/eonasdan/bootstrap-datetimepicker.git"
|
"url": "https://github.com/eonasdan/bootstrap-datetimepicker.git"
|
||||||
@@ -15,21 +15,21 @@
|
|||||||
"datepicker",
|
"datepicker",
|
||||||
"datetimepicker",
|
"datetimepicker",
|
||||||
"timepicker",
|
"timepicker",
|
||||||
"moment"
|
"moment"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"moment": "~2.8.1",
|
"moment": "~2.8.2",
|
||||||
"bootstrap": "^3.0",
|
"bootstrap": "^3.0",
|
||||||
"jquery": "^1.8.3"
|
"jquery": "latest"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"grunt": "latest",
|
"grunt": "latest",
|
||||||
|
"grunt-contrib-jasmine": "^0.7.0",
|
||||||
"grunt-contrib-jshint": "latest",
|
"grunt-contrib-jshint": "latest",
|
||||||
|
"grunt-contrib-less": "latest",
|
||||||
"grunt-contrib-uglify": "latest",
|
"grunt-contrib-uglify": "latest",
|
||||||
"grunt-jscs": "latest",
|
"grunt-jscs": "latest",
|
||||||
"load-grunt-tasks": "latest",
|
|
||||||
"grunt-string-replace": "latest",
|
"grunt-string-replace": "latest",
|
||||||
"grunt-contrib-less": "latest",
|
"load-grunt-tasks": "latest"
|
||||||
"bootstrap": "latest"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
3081
html/js/datetime/src/js/bootstrap-datetimepicker.js
vendored
3081
html/js/datetime/src/js/bootstrap-datetimepicker.js
vendored
File diff suppressed because it is too large
Load Diff
343
html/js/datetime/src/less/_bootstrap-datetimepicker.less
Normal file
343
html/js/datetime/src/less/_bootstrap-datetimepicker.less
Normal file
@@ -0,0 +1,343 @@
|
|||||||
|
/*!
|
||||||
|
* Datetimepicker for Bootstrap 3
|
||||||
|
* ! version : 4.7.14
|
||||||
|
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
||||||
|
*/
|
||||||
|
@bs-datetimepicker-timepicker-font-size: 1.2em;
|
||||||
|
@bs-datetimepicker-active-bg: @btn-primary-bg;
|
||||||
|
@bs-datetimepicker-active-color: @btn-primary-color;
|
||||||
|
@bs-datetimepicker-border-radius: @border-radius-base;
|
||||||
|
@bs-datetimepicker-btn-hover-bg: @gray-lighter;
|
||||||
|
@bs-datetimepicker-disabled-color: @gray-light;
|
||||||
|
@bs-datetimepicker-alternate-color: @gray-light;
|
||||||
|
@bs-datetimepicker-secondary-border-color: #ccc;
|
||||||
|
@bs-datetimepicker-secondary-border-color-rgba: rgba(0, 0, 0, 0.2);
|
||||||
|
@bs-datetimepicker-primary-border-color: white;
|
||||||
|
@bs-datetimepicker-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
|
||||||
|
.bootstrap-datetimepicker-widget {
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
&.dropdown-menu {
|
||||||
|
margin: 2px 0;
|
||||||
|
padding: 4px;
|
||||||
|
width: 19em;
|
||||||
|
|
||||||
|
&.timepicker-sbs {
|
||||||
|
@media (min-width: @screen-sm-min) {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: @screen-md-min) {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: @screen-lg-min) {
|
||||||
|
width: 38em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before, &:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.bottom {
|
||||||
|
&:before {
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-bottom: 7px solid @bs-datetimepicker-secondary-border-color;
|
||||||
|
border-bottom-color: @bs-datetimepicker-secondary-border-color-rgba;
|
||||||
|
top: -7px;
|
||||||
|
left: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid @bs-datetimepicker-primary-border-color;
|
||||||
|
top: -6px;
|
||||||
|
left: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.top {
|
||||||
|
&:before {
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-top: 7px solid @bs-datetimepicker-secondary-border-color;
|
||||||
|
border-top-color: @bs-datetimepicker-secondary-border-color-rgba;
|
||||||
|
bottom: -7px;
|
||||||
|
left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-top: 6px solid @bs-datetimepicker-primary-border-color;
|
||||||
|
bottom: -6px;
|
||||||
|
left: 7px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.pull-right {
|
||||||
|
&:before {
|
||||||
|
left: auto;
|
||||||
|
right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
left: auto;
|
||||||
|
right: 7px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-unstyled {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a[data-action] {
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a[data-action]:active {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timepicker-hour, .timepicker-minute, .timepicker-second {
|
||||||
|
width: 54px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: @bs-datetimepicker-timepicker-font-size;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
button[data-action] {
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="incrementHours"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Increment Hours";
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="incrementMinutes"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Increment Minutes";
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="decrementHours"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Decrement Hours";
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="decrementMinutes"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Decrement Minutes";
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="showHours"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Show Hours";
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="showMinutes"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Show Minutes";
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="togglePeriod"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Toggle AM/PM";
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="clear"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Clear the picker";
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn[data-action="today"]::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Set the date to today";
|
||||||
|
}
|
||||||
|
|
||||||
|
.picker-switch {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Toggle Date and Time Screens";
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
line-height: inherit;
|
||||||
|
|
||||||
|
span {
|
||||||
|
line-height: 2.5;
|
||||||
|
height: 2.5em;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
|
||||||
|
& td,
|
||||||
|
& th {
|
||||||
|
text-align: center;
|
||||||
|
border-radius: @bs-datetimepicker-border-radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
& th {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
|
||||||
|
&.picker-switch {
|
||||||
|
width: 145px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled,
|
||||||
|
&.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: @bs-datetimepicker-disabled-color;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.prev::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Previous Month";
|
||||||
|
}
|
||||||
|
|
||||||
|
&.next::after {
|
||||||
|
.sr-only();
|
||||||
|
content: "Next Month";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& thead tr:first-child th {
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: @bs-datetimepicker-btn-hover-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& td {
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
width: 54px;
|
||||||
|
|
||||||
|
&.cw {
|
||||||
|
font-size: .8em;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
color: @bs-datetimepicker-alternate-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.day {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.day:hover,
|
||||||
|
&.hour:hover,
|
||||||
|
&.minute:hover,
|
||||||
|
&.second:hover {
|
||||||
|
background: @bs-datetimepicker-btn-hover-bg;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.old,
|
||||||
|
&.new {
|
||||||
|
color: @bs-datetimepicker-alternate-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.today {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border: 0 0 7px 7px solid transparent;
|
||||||
|
border-bottom-color: @bs-datetimepicker-active-bg;
|
||||||
|
border-top-color: @bs-datetimepicker-secondary-border-color-rgba;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 4px;
|
||||||
|
right: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active,
|
||||||
|
&.active:hover {
|
||||||
|
background-color: @bs-datetimepicker-active-bg;
|
||||||
|
color: @bs-datetimepicker-active-color;
|
||||||
|
text-shadow: @bs-datetimepicker-text-shadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active.today:before {
|
||||||
|
border-bottom-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled,
|
||||||
|
&.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: @bs-datetimepicker-disabled-color;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 54px;
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
margin: 2px 1.5px;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: @bs-datetimepicker-border-radius;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: @bs-datetimepicker-btn-hover-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: @bs-datetimepicker-active-bg;
|
||||||
|
color: @bs-datetimepicker-active-color;
|
||||||
|
text-shadow: @bs-datetimepicker-text-shadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.old {
|
||||||
|
color: @bs-datetimepicker-alternate-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled,
|
||||||
|
&.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: @bs-datetimepicker-disabled-color;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.usetwentyfour {
|
||||||
|
td.hour {
|
||||||
|
height: 27px;
|
||||||
|
line-height: 27px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group.date {
|
||||||
|
& .input-group-addon {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
@@ -1,5 +1,17 @@
|
|||||||
// Import boostrap variables including default color palette and fonts
|
// Import bootstrap variables including default color palette and fonts
|
||||||
@import "../../node_modules/bootstrap/less/variables.less";
|
@import "../../node_modules/bootstrap/less/variables.less";
|
||||||
|
|
||||||
// Import datepicker component
|
// Import datepicker component
|
||||||
@import "bootstrap-datetimepicker.less";
|
@import "_bootstrap-datetimepicker.less";
|
||||||
|
|
||||||
|
|
||||||
|
.sr-only {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0,0,0,0);
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
@@ -1,294 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Datetimepicker for Bootstrap v3
|
|
||||||
//! version : 3.1.3
|
|
||||||
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
|
||||||
*/
|
|
||||||
.bootstrap-datetimepicker-widget {
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 250px;
|
|
||||||
padding: 4px;
|
|
||||||
margin-top: 1px;
|
|
||||||
z-index: 99999 !important;
|
|
||||||
border-radius: @border-radius-base;
|
|
||||||
|
|
||||||
&.timepicker-sbs {
|
|
||||||
width: 600px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.bottom {
|
|
||||||
&:before {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 7px solid transparent;
|
|
||||||
border-right: 7px solid transparent;
|
|
||||||
border-bottom: 7px solid #ccc;
|
|
||||||
border-bottom-color: rgba(0,0,0,.2);
|
|
||||||
position: absolute;
|
|
||||||
top: -7px;
|
|
||||||
left: 7px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 6px solid transparent;
|
|
||||||
border-right: 6px solid transparent;
|
|
||||||
border-bottom: 6px solid white;
|
|
||||||
position: absolute;
|
|
||||||
top: -6px;
|
|
||||||
left: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.top {
|
|
||||||
&:before {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 7px solid transparent;
|
|
||||||
border-right: 7px solid transparent;
|
|
||||||
border-top: 7px solid #ccc;
|
|
||||||
border-top-color: rgba(0,0,0,.2);
|
|
||||||
position: absolute;
|
|
||||||
bottom: -7px;
|
|
||||||
left: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 6px solid transparent;
|
|
||||||
border-right: 6px solid transparent;
|
|
||||||
border-top: 6px solid white;
|
|
||||||
position: absolute;
|
|
||||||
bottom: -6px;
|
|
||||||
left: 7px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
& .dow {
|
|
||||||
width: 14.2857%;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.pull-right {
|
|
||||||
&:before {
|
|
||||||
left: auto;
|
|
||||||
right: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
left: auto;
|
|
||||||
right: 7px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
>ul {
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
a[data-action] {
|
|
||||||
padding: 6px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
a[data-action]:active {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.timepicker-hour, .timepicker-minute, .timepicker-second {
|
|
||||||
width: 54px;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.2em;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
button[data-action] {
|
|
||||||
padding: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[data-hour-format="12"] .separator {
|
|
||||||
width: 4px;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.datepicker > div {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.picker-switch {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
td,
|
|
||||||
th {
|
|
||||||
text-align: center;
|
|
||||||
border-radius: @border-radius-base;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
|
||||||
height: 54px;
|
|
||||||
line-height: 54px;
|
|
||||||
width: 54px;
|
|
||||||
|
|
||||||
&.cw
|
|
||||||
{
|
|
||||||
font-size: 10px;
|
|
||||||
height: 20px;
|
|
||||||
line-height: 20px;
|
|
||||||
color: @gray-light;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.day
|
|
||||||
{
|
|
||||||
height: 20px;
|
|
||||||
line-height: 20px;
|
|
||||||
width: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.day:hover,
|
|
||||||
&.hour:hover,
|
|
||||||
&.minute:hover,
|
|
||||||
&.second:hover {
|
|
||||||
background: @gray-lighter;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.old,
|
|
||||||
&.new {
|
|
||||||
color: @gray-light;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.today {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
&:before {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 7px solid transparent;
|
|
||||||
border-bottom: 7px solid @btn-primary-bg;
|
|
||||||
border-top-color: rgba(0, 0, 0, 0.2);
|
|
||||||
position: absolute;
|
|
||||||
bottom: 4px;
|
|
||||||
right: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active,
|
|
||||||
&.active:hover {
|
|
||||||
background-color: @btn-primary-bg;
|
|
||||||
color: @btn-primary-color;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active.today:before {
|
|
||||||
border-bottom-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled,
|
|
||||||
&.disabled:hover {
|
|
||||||
background: none;
|
|
||||||
color: @gray-light;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
width: 54px;
|
|
||||||
height: 54px;
|
|
||||||
line-height: 54px;
|
|
||||||
margin: 2px 1.5px;
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: @border-radius-base;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: @gray-lighter;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
background-color: @btn-primary-bg;
|
|
||||||
color: @btn-primary-color;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.old {
|
|
||||||
color: @gray-light;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled,
|
|
||||||
&.disabled:hover {
|
|
||||||
background: none;
|
|
||||||
color: @gray-light;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
height: 20px;
|
|
||||||
line-height: 20px;
|
|
||||||
width: 20px;
|
|
||||||
|
|
||||||
&.picker-switch {
|
|
||||||
width: 145px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.next,
|
|
||||||
&.prev {
|
|
||||||
font-size: @font-size-base * 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled,
|
|
||||||
&.disabled:hover {
|
|
||||||
background: none;
|
|
||||||
color: @gray-light;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
thead tr:first-child th {
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: @gray-lighter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-group {
|
|
||||||
&.date {
|
|
||||||
.input-group-addon span {
|
|
||||||
display: block;
|
|
||||||
cursor: pointer;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bootstrap-datetimepicker-widget.left-oriented {
|
|
||||||
&:before {
|
|
||||||
left: auto;
|
|
||||||
right: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
left: auto;
|
|
||||||
right: 7px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td {
|
|
||||||
padding: 0px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 767px) {
|
|
||||||
.bootstrap-datetimepicker-widget.timepicker-sbs {
|
|
||||||
width: 283px;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -2,7 +2,7 @@
|
|||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>Bootstrap.v3.Datetimepicker.CSS</id>
|
<id>Bootstrap.v3.Datetimepicker.CSS</id>
|
||||||
<version>3.1.2</version>
|
<version>4.0.0</version>
|
||||||
<title>Bootstrap 3 Datetimepicker CSS</title>
|
<title>Bootstrap 3 Datetimepicker CSS</title>
|
||||||
<authors>Eonasdan</authors>
|
<authors>Eonasdan</authors>
|
||||||
<owners>Eonasdan</owners>
|
<owners>Eonasdan</owners>
|
||||||
@@ -12,12 +12,12 @@
|
|||||||
|
|
||||||
For usage, installation and demos see Project Site on GitHub
|
For usage, installation and demos see Project Site on GitHub
|
||||||
|
|
||||||
For CSS version install Bootstrap.v3.Datetimepicker.CSS</description>
|
For LESS version install Bootstrap.v3.Datetimepicker</description>
|
||||||
<releaseNotes>Check the change log on Github at https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log</releaseNotes>
|
<releaseNotes>Check the change log on Github at https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log</releaseNotes>
|
||||||
<tags>bootstrap date time picker datetimepicker datepicker jquery</tags>
|
<tags>bootstrap date time picker datetimepicker datepicker jquery</tags>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="Twitter.Bootstrap.Less" version="3.0.0" />
|
<dependency id="Twitter.Bootstrap.Less" version="3.0.0" />
|
||||||
<dependency id="Moment.js" version="2.8.1" />
|
<dependency id="Moment.js" version="2.8.4" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>Bootstrap.v3.Datetimepicker</id>
|
<id>Bootstrap.v3.Datetimepicker</id>
|
||||||
<version>3.1.2</version>
|
<version>4.0.0</version>
|
||||||
<title>Bootstrap 3 Datetimepicker</title>
|
<title>Bootstrap 3 Datetimepicker</title>
|
||||||
<authors>Eonasdan</authors>
|
<authors>Eonasdan</authors>
|
||||||
<owners>Eonasdan</owners>
|
<owners>Eonasdan</owners>
|
||||||
@@ -17,13 +17,13 @@ For CSS version install Bootstrap.v3.Datetimepicker.CSS</description>
|
|||||||
<tags>bootstrap date time picker datetimepicker datepicker jquery</tags>
|
<tags>bootstrap date time picker datetimepicker datepicker jquery</tags>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="Twitter.Bootstrap.Less" version="3.0.0" />
|
<dependency id="Twitter.Bootstrap.Less" version="3.0.0" />
|
||||||
<dependency id="Moment.js" version="2.8.1" />
|
<dependency id="Moment.js" version="2.8.4" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
<file src="..\..\src\js\bootstrap-datetimepicker.js" target="content\Scripts" />
|
<file src="..\..\src\js\bootstrap-datetimepicker.js" target="content\Scripts" />
|
||||||
<file src="..\..\build\js\bootstrap-datetimepicker.min.js" target="content\Scripts" />
|
<file src="..\..\build\js\bootstrap-datetimepicker.min.js" target="content\Scripts" />
|
||||||
<file src="..\..\src\less\bootstrap-datetimepicker.less" target="content\Content\less" />
|
<file src="..\..\src\less\_bootstrap-datetimepicker.less" target="content\Content\less" />
|
||||||
<file src="..\..\src\less\bootstrap-datetimepicker-build.less" target="content\Content\less" />
|
<file src="..\..\src\less\bootstrap-datetimepicker-build.less" target="content\Content\less" />
|
||||||
<file src="install.ps1" target="tools\" />
|
<file src="install.ps1" target="tools\" />
|
||||||
</files>
|
</files>
|
||||||
|
@@ -1,2 +1,2 @@
|
|||||||
# install.ps1
|
# install.ps1
|
||||||
$DTE.ItemOperations.Navigate("https://github.com/Eonasdan/bootstrap-datetimepicker#change-log", $DTE.vsNavigateOptions.vsNavigateOptionsNewWindow)
|
$DTE.ItemOperations.Navigate("http://eonasdan.github.io/bootstrap-datetimepicker/", $DTE.vsNavigateOptions.vsNavigateOptionsNewWindow)
|
||||||
|
700
html/js/datetime/test/publicApiSpec.js
Normal file
700
html/js/datetime/test/publicApiSpec.js
Normal file
@@ -0,0 +1,700 @@
|
|||||||
|
describe('Plugin initialization and component basic construction', function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
it('loads jquery plugin properly', function () {
|
||||||
|
expect($('<div>').datetimepicker).toBeDefined();
|
||||||
|
expect(typeof $('<div>').datetimepicker).toEqual('function');
|
||||||
|
expect($('<div>').datetimepicker.defaults).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('creates the component with default options on an input element', function () {
|
||||||
|
var dtp = $('<input>');
|
||||||
|
$(document).find('body').append(dtp);
|
||||||
|
|
||||||
|
expect(function () {
|
||||||
|
dtp = dtp.datetimepicker();
|
||||||
|
}).not.toThrow();
|
||||||
|
|
||||||
|
expect(dtp).not.toBe(null);
|
||||||
|
});
|
||||||
|
|
||||||
|
xit('calls destroy when Element that the component is attached is removed', function () {
|
||||||
|
var dtpElement = $('<div>').attr('class', 'row').append($('<div>').attr('class', 'col-md-12').append($('<input>'))),
|
||||||
|
dtp;
|
||||||
|
$(document).find('body').append(dtpElement);
|
||||||
|
dtpElement.datetimepicker();
|
||||||
|
dtp = dtpElement.data('DateTimePicker');
|
||||||
|
spyOn(dtp, 'destroy').and.callThrough();
|
||||||
|
dtpElement.remove();
|
||||||
|
expect(dtp.destroy).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Public API method tests', function () {
|
||||||
|
'use strict';
|
||||||
|
var dtp,
|
||||||
|
dtpElement,
|
||||||
|
dpChangeSpy,
|
||||||
|
dpShowSpy,
|
||||||
|
dpHideSpy,
|
||||||
|
dpErrorSpy;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
dpChangeSpy = jasmine.createSpy('dp.change event Spy');
|
||||||
|
dpShowSpy = jasmine.createSpy('dp.show event Spy');
|
||||||
|
dpHideSpy = jasmine.createSpy('dp.hide event Spy');
|
||||||
|
dpErrorSpy = jasmine.createSpy('dp.error event Spy');
|
||||||
|
dtpElement = $('<input>').attr('id', 'dtp');
|
||||||
|
|
||||||
|
$(document).find('body').append($('<div>').attr('class', 'row').append($('<div>').attr('class', 'col-md-12').append(dtpElement)));
|
||||||
|
$(document).find('body').on('dp.change', dpChangeSpy);
|
||||||
|
$(document).find('body').on('dp.show', dpShowSpy);
|
||||||
|
$(document).find('body').on('dp.hide', dpHideSpy);
|
||||||
|
$(document).find('body').on('dp.error', dpErrorSpy);
|
||||||
|
|
||||||
|
dtpElement.datetimepicker();
|
||||||
|
dtp = dtpElement.data('DateTimePicker');
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
dtp.destroy();
|
||||||
|
dtpElement.remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('configuration option name match to public api function', function () {
|
||||||
|
Object.getOwnPropertyNames($.fn.datetimepicker.defaults).forEach(function (key) {
|
||||||
|
it('has function ' + key + '()', function () {
|
||||||
|
expect(dtp[key]).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('date() function', function () {
|
||||||
|
describe('typechecking', function () {
|
||||||
|
it('accepts a null', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.date(null);
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a string', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.date('2013/05/24');
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a Date object', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.date(new Date());
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a Moment object', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.date(moment());
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept undefined', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.date(undefined);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a number', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.date(0);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a generic Object', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.date({});
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a boolean', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.date(false);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('has no date set upon construction', function () {
|
||||||
|
expect(dtp.date()).toBe(null);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets the date correctly', function () {
|
||||||
|
var timestamp = moment();
|
||||||
|
dtp.date(timestamp);
|
||||||
|
expect(dtp.date().isSame(timestamp)).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('format() function', function () {
|
||||||
|
describe('typechecking', function () {
|
||||||
|
it('accepts a false value', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.format(false);
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a string', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.format('YYYY-MM-DD');
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept undefined', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.format(undefined);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept true', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.format(true);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a generic Object', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.format({});
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('returns no format before format is set', function () {
|
||||||
|
expect(dtp.format()).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets the format correctly', function () {
|
||||||
|
dtp.format('YYYY-MM-DD');
|
||||||
|
expect(dtp.format()).toBe('YYYY-MM-DD');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('destroy() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.destroy).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('toggle() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.toggle).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// describe('functionality', function () {
|
||||||
|
// it('')
|
||||||
|
// });
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('show() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.show).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('emits a show event when called while widget is hidden', function () {
|
||||||
|
dtp.show();
|
||||||
|
expect(dpShowSpy).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not emit a show event when called and widget is already showing', function () {
|
||||||
|
dtp.hide();
|
||||||
|
dtp.show();
|
||||||
|
dpShowSpy.calls.reset();
|
||||||
|
dtp.show();
|
||||||
|
expect(dpShowSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('actually shows the widget', function () {
|
||||||
|
dtp.show();
|
||||||
|
expect($(document).find('body').find('.bootstrap-datetimepicker-widget').length).toEqual(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('hide() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.hide).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('emits a hide event when called while widget is shown', function () {
|
||||||
|
dtp.show();
|
||||||
|
dtp.hide();
|
||||||
|
expect(dpHideSpy).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not emit a hide event when called while widget is hidden', function () {
|
||||||
|
dtp.hide();
|
||||||
|
expect(dpHideSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('actually hides the widget', function () {
|
||||||
|
dtp.show();
|
||||||
|
dtp.hide();
|
||||||
|
expect($(document).find('body').find('.bootstrap-datetimepicker-widget').length).toEqual(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('disable() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.disable).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('enable() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.enable).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('options() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.options).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('disabledDates() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.disabledDates).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('enabledDates() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.enabledDates).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('daysOfWeekDisabled() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.daysOfWeekDisabled).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('maxDate() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.maxDate).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('minDate() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.minDate).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('defaultDate() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.defaultDate).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('returns no defaultDate before defaultDate is set', function () {
|
||||||
|
expect(dtp.defaultDate()).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets the defaultDate correctly', function () {
|
||||||
|
var timestamp = moment();
|
||||||
|
dtp.defaultDate(timestamp);
|
||||||
|
expect(dtp.defaultDate().isSame(timestamp)).toBe(true);
|
||||||
|
expect(dtp.date().isSame(timestamp)).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('triggers a change event upon setting a default date and input field is empty', function () {
|
||||||
|
dtp.date(null);
|
||||||
|
dtp.defaultDate(moment());
|
||||||
|
expect(dpChangeSpy).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not override input value if it already has one', function () {
|
||||||
|
var timestamp = moment();
|
||||||
|
dtp.date(timestamp);
|
||||||
|
dtp.defaultDate(moment().year(2000));
|
||||||
|
expect(dtp.date().isSame(timestamp)).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('locale() function', function () {
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('it has the same locale as the global moment locale with default options', function () {
|
||||||
|
expect(dtp.locale()).toBe(moment.locale());
|
||||||
|
});
|
||||||
|
|
||||||
|
it('it switches to a selected locale without affecting global moment locale', function () {
|
||||||
|
dtp.locale('el');
|
||||||
|
dtp.date(moment());
|
||||||
|
expect(dtp.locale()).toBe('el');
|
||||||
|
expect(dtp.date().locale()).toBe('el');
|
||||||
|
expect(moment.locale()).toBe('en');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('useCurrent() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.useCurrent).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('check type and parameter validity', function () {
|
||||||
|
it('accepts either a boolean value or string', function () {
|
||||||
|
var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute'];
|
||||||
|
|
||||||
|
expect(function () {
|
||||||
|
dtp.useCurrent(false);
|
||||||
|
}).not.toThrow();
|
||||||
|
expect(function () {
|
||||||
|
dtp.useCurrent(true);
|
||||||
|
}).not.toThrow();
|
||||||
|
|
||||||
|
useCurrentOptions.forEach(function (value) {
|
||||||
|
expect(function () {
|
||||||
|
dtp.useCurrent(value);
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(function () {
|
||||||
|
dtp.useCurrent('test');
|
||||||
|
}).toThrow();
|
||||||
|
expect(function () {
|
||||||
|
dtp.useCurrent({});
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('triggers a change event upon show() and input field is empty', function () {
|
||||||
|
dtp.useCurrent(true);
|
||||||
|
dtp.show();
|
||||||
|
expect(dpChangeSpy).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('ignoreReadonly() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.ignoreReadonly).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('stepping() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.stepping).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('collapse() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.collapse).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('icons() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.icons).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('useStrict() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.useStrict).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('sideBySide() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.sideBySide).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('viewMode() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.viewMode).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('widgetPositioning() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.widgetPositioning).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('calendarWeeks() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.calendarWeeks).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('showTodayButton() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.showTodayButton).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('showClear() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.showClear).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('dayViewHeaderFormat() function', function () {
|
||||||
|
describe('typechecking', function () {
|
||||||
|
it('does not accept a false value', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.dayViewHeaderFormat(false);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a string', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.dayViewHeaderFormat('YYYY-MM-DD');
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept undefined', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.dayViewHeaderFormat(undefined);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept true', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.dayViewHeaderFormat(true);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a generic Object', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.dayViewHeaderFormat({});
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('expects dayViewHeaderFormat to be default of MMMM YYYY', function () {
|
||||||
|
expect(dtp.dayViewHeaderFormat()).toBe('MMMM YYYY');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets the dayViewHeaderFormat correctly', function () {
|
||||||
|
dtp.dayViewHeaderFormat('MM YY');
|
||||||
|
expect(dtp.dayViewHeaderFormat()).toBe('MM YY');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('extraFormats() function', function () {
|
||||||
|
describe('typechecking', function () {
|
||||||
|
it('accepts a false value', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.extraFormats(false);
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a string', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.extraFormats('YYYY-MM-DD');
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept undefined', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.extraFormats(undefined);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept true', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.extraFormats(true);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts an Array', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.extraFormats(['YYYY-MM-DD']);
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('functionality', function () {
|
||||||
|
it('returns no extraFormats before extraFormats is set', function () {
|
||||||
|
expect(dtp.extraFormats()).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets the extraFormats correctly', function () {
|
||||||
|
dtp.extraFormats(['YYYY-MM-DD']);
|
||||||
|
expect(dtp.extraFormats()[0]).toBe('YYYY-MM-DD');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('toolbarPlacement() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.toolbarPlacement).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('check type and parameter validity', function () {
|
||||||
|
it('does not accept a false value', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.dayViewHeaderFormat(false);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
it('does not accept a false value', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.dayViewHeaderFormat(false);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
it('accepts a string', function () {
|
||||||
|
var toolbarPlacementOptions = ['default', 'top', 'bottom'];
|
||||||
|
|
||||||
|
toolbarPlacementOptions.forEach(function (value) {
|
||||||
|
expect(function () {
|
||||||
|
dtp.toolbarPlacement(value);
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(function () {
|
||||||
|
dtp.toolbarPlacement('test');
|
||||||
|
}).toThrow();
|
||||||
|
expect(function () {
|
||||||
|
dtp.toolbarPlacement({});
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('widgetParent() function', function () {
|
||||||
|
describe('typechecking', function () {
|
||||||
|
it('accepts a null', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.widgetParent(null);
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a string', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.widgetParent('testDiv');
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a jquery object', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.widgetParent($('#testDiv'));
|
||||||
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept undefined', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.widgetParent(undefined);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a number', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.widgetParent(0);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a generic Object', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.widgetParent({});
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not accept a boolean', function () {
|
||||||
|
expect(function () {
|
||||||
|
dtp.widgetParent(false);
|
||||||
|
}).toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('keepOpen() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.keepOpen).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('inline() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.inline).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('clear() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.clear).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('keyBinds() function', function () {
|
||||||
|
describe('existence', function () {
|
||||||
|
it('is defined', function () {
|
||||||
|
expect(dtp.keyBinds).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Reference in New Issue
Block a user