From dae310f665e950d7d8bd0a3068fe46534f91abf7 Mon Sep 17 00:00:00 2001 From: g00fy Date: Fri, 14 Jun 2013 10:33:03 +0200 Subject: [PATCH 01/60] bower build --- .bowerrc | 3 - .editorconfig | 21 - .gitattributes | 1 - .jshintrc | 25 - Gruntfile.js | 192 - app/index.html | 91 - app/scripts/module.js | 448 -- app/scripts/template.html | 125 - app/styles/bootstrap.css | 6167 --------------------------- app/styles/date.css | 378 -- bower.json | 4 +- component.json | 13 - dist/index.css => index.css | 0 dist/index.js => index.js | 0 dist/index.min.css => index.min.css | 0 dist/index.min.js => index.min.js | 0 karma-e2e.conf.js | 51 - karma.conf.js | 56 - package.json | 33 - test/runner.html | 10 - 20 files changed, 2 insertions(+), 7616 deletions(-) delete mode 100644 .bowerrc delete mode 100644 .editorconfig delete mode 100644 .gitattributes delete mode 100644 .jshintrc delete mode 100644 Gruntfile.js delete mode 100644 app/index.html delete mode 100644 app/scripts/module.js delete mode 100644 app/scripts/template.html delete mode 100644 app/styles/bootstrap.css delete mode 100644 app/styles/date.css delete mode 100644 component.json rename dist/index.css => index.css (100%) rename dist/index.js => index.js (100%) rename dist/index.min.css => index.min.css (100%) rename dist/index.min.js => index.min.js (100%) delete mode 100644 karma-e2e.conf.js delete mode 100644 karma.conf.js delete mode 100644 package.json delete mode 100644 test/runner.html diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index f594df7..0000000 --- a/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "app/components" -} diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index c2cdfb8..0000000 --- a/.editorconfig +++ /dev/null @@ -1,21 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# editorconfig.org - -root = true - - -[*] - -# Change these settings to your own preference -indent_style = space -indent_size = 2 - -# We recommend you to keep these unchanged -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 2125666..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto \ No newline at end of file diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 64b7ce8..0000000 --- a/.jshintrc +++ /dev/null @@ -1,25 +0,0 @@ -{ - "node": true, - "browser": true, - "es5": true, - "esnext": true, - "bitwise": true, - "camelcase": true, - "curly": true, - "eqeqeq": true, - "immed": true, - "indent": 2, - "latedef": true, - "newcap": true, - "noarg": true, - "quotmark": "single", - "regexp": true, - "undef": true, - "unused": true, - "strict": true, - "trailing": true, - "smarttabs": true, - "globals": { - "angular": false - } -} diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 1682c74..0000000 --- a/Gruntfile.js +++ /dev/null @@ -1,192 +0,0 @@ -'use strict'; -var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet; -var mountFolder = function (connect, dir) { - return connect.static(require('path').resolve(dir)); -}; - -module.exports = function (grunt) { - // load all grunt tasks - require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); - - // configurable paths - var yeomanConfig = { - app : 'app', - dist: 'dist' - }; - - try { - yeomanConfig.app = require('./component.json').appPath || yeomanConfig.app; - } catch (e) { - } - - grunt.initConfig({ - yeoman : yeomanConfig, - watch : { - livereload: { - files: [ - '<%= yeoman.app %>/{,*/}*.html', - '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css', - '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js', - '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' - ], - tasks: ['livereload'] - } - }, - connect: { - options : { - port : 9000, - // Change this to '0.0.0.0' to access the server from outside. - hostname: 'localhost' - }, - livereload: { - options: { - middleware: function (connect) { - return [ - lrSnippet, - mountFolder(connect, '.tmp'), - mountFolder(connect, yeomanConfig.app) - ]; - } - } - }, - test : { - options: { - middleware: function (connect) { - return [ - mountFolder(connect, '.tmp'), - mountFolder(connect, 'test') - ]; - } - } - } - }, - open : { - server: { - url: 'http://localhost:<%= connect.options.port %>' - } - }, - clean : { - dist : { - files: [ - { - dot: true, - src: [ - '.tmp', - '<%= yeoman.dist %>' - ] - } - ] - }, - server: '.tmp' - }, - jshint : { - options: { - jshintrc: '.jshintrc' - }, - all : [ - 'Gruntfile.js', - '<%= yeoman.app %>/scripts/{,*/}*.js' - ] - }, - karma : { - unit: { - configFile: 'karma.conf.js', - singleRun : true - } - }, - cssmin : { - dist: { - expand: true, - cwd : '<%= yeoman.dist %>', - src : ['*.css', '!*.min.css'], - dest : '<%= yeoman.dist %>', - ext : '.min.css' - } - }, - ngmin : { - dist: { - expand: true, - cwd : '<%= yeoman.dist %>', - src : ['*.js', '!*.min.js'], - dest : '<%= yeoman.dist %>', - ext : '.min.js' - } - }, - uglify : { - dist: { - expand: true, - cwd : '<%= yeoman.dist %>', - src : ['*.min.js'], - dest : '<%= yeoman.dist %>', - ext : '.min.js' - } - }, - copy : { - dist: { - files: [ - { - expand : true, - flatten: true, - dot : true, - cwd : '<%= yeoman.app %>', - dest : '<%= yeoman.dist %>', - src : [ - 'styles/date.css' - ] - } - ] - } - }, - ngtemplates: { - dist: { - options: { - base : '<%= yeoman.app %>', - module: 'dateInput' - }, - src : '<%= yeoman.app %>/scripts/*.html', - dest : '.tmp/templates.js' - } - }, - concat: { - options: { - separator: '\n' - }, - js: { - src: ['<%= yeoman.app %>/scripts/module.js','.tmp/templates.js'], - dest: '<%= yeoman.dist %>/index.js' - }, - css: { - src: ['<%= yeoman.app %>/styles/date.css'], - dest: '<%= yeoman.dist %>/index.css' - } - } - }); - - grunt.renameTask('regarde', 'watch'); - - grunt.registerTask('server', [ - 'clean:server', - 'livereload-start', - 'connect:livereload', - 'open', - 'watch' - ]); - - grunt.registerTask('test', [ - 'clean:server', - 'connect:test', - 'karma' - ]); - - grunt.registerTask('build', [ - 'clean:dist', - 'jshint', - 'ngtemplates', - 'concat', - 'cssmin', - 'ngmin', - 'uglify' - ]); - - grunt.registerTask('default', ['build']); -}; diff --git a/app/index.html b/app/index.html deleted file mode 100644 index 8816c27..0000000 --- a/app/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - -
-
-

Calendar

- -

views

-
default
-
<div date-picker="start"></div> 
-
-
year
-
<div date-picker="start"  year></div> 
-
-
month
-
<div date-picker="start month></div> 
-
-
date
-
<div date-picker="start" date></div> 
-
-
hours
-
<div date-picker="start" hours></div> 
-
-
minutes
-
<div date-picker="start" minutes></div> 
-
-
-
-

Input

-
default
-
<input type="datetime" ng-model="model" date-time></div> 
- -
Input format
-
<input type="datetime" ng-model="model" date-time format="long"></div> 
- -
A button
-
<div class="dropdown">
-  <a class="dropdown-toggle btn btn-danger">
-    pick a date: {{(date|date)}}
-  </a>
-  <div class="dropdown-menu" ng-click="$event.preventDefault();$event.stopPropagation()">
-    <div date-picker="date" class="datetimepicker"></div>
-  </div>
-</div>
- -
Date range
-
<div date-range start="start" end="end" ></div> 
-
-
Date range button
- -
d -
- - - - - - - - - - diff --git a/app/scripts/module.js b/app/scripts/module.js deleted file mode 100644 index cc5ed75..0000000 --- a/app/scripts/module.js +++ /dev/null @@ -1,448 +0,0 @@ -(function () { - 'use strict'; - var Module = angular.module('dateInput', []); - - - Module.directive('datePicker', function () { - var viewOptions = ['month', 'date', 'year', 'month', 'hours', 'minutes']; - - function isValidDate(date) { - return date instanceof Date && !isNaN(date.getTime()); - } - - function getVisibleMinutes(date) { - console.time('getVisibleMinutes'); - date = new Date(date || new Date()); - date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours()); - var minutes = []; - var step = 5; - var stop = date.getTime() + 60 * 60 * 1000; - while (date.getTime() < stop) { - minutes.push(date); - date = new Date(date.getTime() + step * 60 * 1000); - } - console.timeEnd('getVisibleMinutes'); - return minutes; - } - - function getVisibleWeeks(date) { - console.time('getVisibleWeeks'); - date = new Date(date || new Date()); - date.setDate(1); - date.setHours(0); - date.setMinutes(0); - date.setSeconds(0); - date.setMilliseconds(0); - - if (date.getDay() === 0) { - date.setDate(-5); - } else { - date.setDate(date.getDate() - (date.getDay() - 1)); - } - if (date.getDate() === 1) { - date.setDate(-6); - } - - - var weeks = []; - while (weeks.length < 6) { - var week = []; - for (var i = 0; i < 7; i++) { - week.push(new Date(date)); - date.setDate(date.getDate() + 1); - } - weeks.push(week); - } - console.timeEnd('getVisibleWeeks'); - return weeks; - } - - - function getVisibleYears(date) { - console.time('getVisibleYears'); - var years = []; - date = new Date(date || new Date()); - date.setFullYear(date.getFullYear() - (date.getFullYear() % 10)); - for (var i = 0; i < 12; i++) { - years.push(new Date(date.getFullYear() + (i - 1), 0, 1)); - } - console.timeEnd('getVisibleYears'); - return years; - } - - function getDaysOfWeek(date) { - console.time('getDaysOfWeek'); - date = new Date(date || new Date()); - date = new Date(date.getFullYear(), date.getMonth(), date.getDate()); - date.setDate(date.getDate() - (date.getDay() - 1)); - var days = []; - for (var i = 0; i < 7; i++) { - days.push(new Date(date)); - date.setDate(date.getDate() + 1); - } - console.timeEnd('getDaysOfWeek'); - return days; - } - - function getVisibleMonths(date) { - console.time('getVisibleMonths'); - date = new Date(date || new Date()); - var year = date.getFullYear(); - var months = []; - for (var month = 0; month < 12; month++) { - months.push(new Date(year, month, 1)); - } - console.timeEnd('getVisibleMonths'); - return months; - } - - function getVisibleHours(date) { - console.time('getVisibleHours'); - date = new Date(date || new Date()); - date.setHours(0); - date.setMinutes(0); - date.setSeconds(0); - date.setMilliseconds(0); - var hours = []; - for (var i = 0; i < 24; i++) { - hours.push(date); - date = new Date(date.getTime() + 60 * 60 * 1000); - } - console.timeEnd('getVisibleHours'); - return hours; - } - - return { - scope : { - date : '=datePicker', - after : '=?', - before: '=?' - }, - link : function (scope, element, attrs) { - - scope.views = []; - for (var attr in attrs) { //noinspection JSUnfilteredForInLoop - if (viewOptions.indexOf(attr) !== -1) { //noinspection JSUnfilteredForInLoop - scope.views.push(attr); - } - } - if (!scope.views.length) { - scope.views = ['date', 'month', 'year', 'hours', 'minutes']; - } - scope.view = scope.views[0]; - - function hasView(view) { - return scope.views.indexOf(view) !== -1; - } - - function ensureDate() { - // we need to return new instance as ngModel $watch watches only for identity - not for equality - if (!(isValidDate(scope.date))) { - scope.date = new Date(2000, 1, 1); - } - scope.date = new Date(scope.date); - } - - function setYear(date) { - ensureDate(); - scope.date.setFullYear(date.getFullYear()); - } - - function setMonth(date) { - setYear(date); - scope.date.setMonth(date.getMonth()); - } - - function setDate(date) { - setMonth(date); - scope.date.setDate(date.getDate()); - } - - function setHours(date) { - setDate(date); - scope.date.setHours(date.getHours()); - } - - function setMinutes(date) { - setHours(date); - scope.date.setMinutes(date.getMinutes()); - } - - scope.setYear = function (date) { - setYear(date); - scope.$emit('setYear', date); - }; - - scope.setMonth = function (date) { - setMonth(date); - scope.$emit('setMonth', date); - }; - - scope.setDate = function (date) { - setDate(date); - scope.$emit('setDate', date); - }; - - scope.setHours = function (date) { - setHours(date); - scope.$emit('setHours', date); - }; - - scope.setMinutes = function (date) { - setMinutes(date); - scope.$emit('setMinutes', date); - }; - - scope.setView = function setView(view) { - if (hasView(view)) { - scope.view = view; - switch (view) { - case 'minutes': - scope.minutes = getVisibleMinutes(scope.visibleDate); - break; - case 'hours' : - scope.hours = getVisibleHours(scope.visibleDate); - break; - case 'date' : - scope.weeks = getVisibleWeeks(scope.visibleDate); - break; - case 'month' : - scope.months = getVisibleMonths(scope.visibleDate); - break; - case 'year' : - scope.years = getVisibleYears(scope.visibleDate); - break; - } - } - }; - - scope.nextMonth = function (delta) { - scope.visibleDate.setMonth(scope.visibleDate.getMonth() + (delta || 1)); - }; - - scope.prevMonth = function (delta) { - scope.nextMonth(-delta || -1); - }; - - scope.nextDay = function (delta) { - scope.visibleDate.setDate(scope.visibleDate.getDate() + (delta || 1)); - }; - - scope.prevDay = function (delta) { - scope.nextDay(-delta || -1); - }; - - scope.nextHour = function (delta) { - scope.visibleDate.setHours(scope.visibleDate.getHours() + (delta || 1)); - }; - - scope.prevHour = function (delta) { - scope.nextHour(-delta || -1); - }; - - scope.nextYear = function (delta) { - scope.visibleDate.setFullYear(scope.visibleDate.getFullYear() + (delta || 1)); - }; - scope.prevYear = function (delta) { - scope.nextYear(-delta || -1); - }; - - scope.visibleDate = new Date(); - - scope.$watch('date', function (date) { - if (date) { - scope.visibleDate = new Date(date); - } - }); - - scope.isAfter = function (date) { - return date >= scope.after; - }; - - scope.isBefore = function (date) { - return date <= scope.before; - }; - - function validDate() { - return scope.date instanceof Date; - } - - scope.isSameMinutes = function (date) { - if (!validDate()){ - return false; - } - var b = scope.date; - return (date.getTime() - date.getSeconds() * 1000 - date.getMilliseconds()) === (b.getTime() - b.getSeconds() * 1000 - b.getMilliseconds()); - }; - - scope.isSameMonth = function (date) { - if (!validDate()){ - return false; - } - return date.getFullYear() === scope.date.getFullYear() && date.getMonth() === scope.date.getMonth(); - }; - - scope.isSameYear = function (date) { - if (!validDate()){ - return false; - } - return date.getFullYear() === scope.date.getFullYear(); - }; - - scope.isSameDate = function (date) { - if (!validDate()){ - return false; - } - return scope.date.getDate() === date.getDate() && scope.isSameMonth(date); - }; - - scope.isSameHour = function (date) { - if (!validDate()){ - return false; - } - return scope.date.getHours() === date.getHours() && scope.isSameDate(date); - }; - - scope.isOldMonth = function (date) { - return date - .getTime() < scope.visibleDate.getTime() && date.getMonth() !== scope.visibleDate.getMonth(); - }; - - scope.isNewHour = function (date) { - return date.getTime() > scope.visibleDate.getTime() && date.getHours() !== scope.visibleDate.getHours(); - }; - - scope.isOldHour = function (date) { - return date.getTime() < scope.visibleDate.getTime() && date.getHours() !== scope.visibleDate.getHours(); - }; - - scope.isNewMonth = function (date) { - return date.getTime() > scope.visibleDate.getTime() && date.getMonth() !== scope.visibleDate.getMonth(); - }; - - - scope.$on('setDate', scope.setView.bind(null, 'hours')); - scope.$on('setMonth', scope.setView.bind(null, 'date')); - scope.$on('setHours', scope.setView.bind(null, 'minutes')); - scope.$on('setYear', scope.setView.bind(null, 'month')); - - scope.$watch(function () { - return isValidDate(scope.visibleDate); - }, function (valid) { - if (!valid) { - scope.visibleDate = new Date(); - } - }); - - //hours - scope.$watch('[visibleDate.getDate(),visibleDate.getHours()].join()', function () { - if (scope.view === 'hours') { - scope.hours = getVisibleHours(scope.visibleDate); - } - }); - //date - scope.$watch('[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()', function () { - if (scope.view === 'date') { - scope.weeks = getVisibleWeeks(scope.visibleDate); - scope.weekdays = getDaysOfWeek(scope.visibleDate); - } - }); - - scope.$watch('[visibleDate.getFullYear(),visibleDate.getMonth()].join()', function () { - if (scope.view === 'month') { - scope.months = getVisibleMonths(scope.visibleDate); - } - }); - - scope.$watch('visibleDate.getYear()', function () { - if (scope.view === 'year') { - scope.years = getVisibleYears(scope.visibleDate); - } - }); - - scope.$watch('visibleDate.getTime()', function () { - if (scope.view === 'minutes') { - scope.minutes = getVisibleMinutes(scope.visibleDate); - } - }); - - }, - transclude : true, - replace : true, - templateUrl: 'scripts/template.html' - }; - }); - - Module.directive('dateTime', function ($compile, $document, $filter) { - var body = $document.find('body'); - var dateFilter = $filter('date'); - return { - require: 'ngModel', - link : function (scope, element, attrs, ngModel) { - var format = attrs.format || 'yyyy-MM-dd HH:mm'; - - var viewsOptions = ['date', 'year', 'month', 'hours', 'minutes', 'month']; - var views = []; - for (var attr in attrs) { - //noinspection JSUnfilteredForInLoop - if (viewsOptions.indexOf(attr) !== -1) { //noinspection JSUnfilteredForInLoop - views.push(attr); - } - } - - function formatter(value) { - return dateFilter(value, format); - } - - ngModel.$formatters = [formatter]; - - var picker = null; - var clear = angular.noop; - - element.bind('focus', function () { - if (!picker) { - picker = $compile('')(scope); - body.append(picker); - scope.$digest(); - var pos = angular.extend({}, element.position(), { height: element[0].offsetHeight }); - picker.css({ top: pos.top + pos.height, left: pos.left, display: 'block', position: 'absolute'}); - picker.bind('mousedown', function () { - return false; - }); - } - return false; - }); - element.bind('blur', function () { - clear(); - clear = angular.noop; - if (picker){ - picker.remove(); - } - picker = null; - }); - } - }; - }); - - Module.directive('dateRange', function () { - return { - template: '
\n \n \n \n \n \n
\n \n \n
', - scope : { - start: '=', - end : '=' - }, - link : function (scope) { - scope.$watch('start.getTime()', function (value) { - if (value && scope.end && value > scope.end.getTime()) { - scope.end = new Date(value); - } - }); - scope.$watch('end.getTime()', function (value) { - if (value && scope.start && value < scope.start.getTime()) { - scope.start = new Date(value); - } - }); - } - }; - }); -})(); \ No newline at end of file diff --git a/app/scripts/template.html b/app/scripts/template.html deleted file mode 100644 index d2b7bd9..0000000 --- a/app/scripts/template.html +++ /dev/null @@ -1,125 +0,0 @@ -
-
- - - - - - - - - - - - - - - - - - - - - -
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }} -
-
-
- - - - - - - - - - - - - -
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
- {{year.getFullYear()}} -
-
- -
- - - - - - - - - - - - - - - - - - -
{{ visibleDate|date:"yyyy" }}
- {{month|date:'MMM'}} -
-
- -
- - - - - - - - - - - - - - - - - - -
{{ visibleDate|date:"dd MMMM yyyy" }}
- {{hour|date:"HH:mm"}} -
-
-
- - - - - - - - - - - - - - - - - - -
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }} -
- {{minute|date:"HH:mm"}} -
-
-
\ No newline at end of file diff --git a/app/styles/bootstrap.css b/app/styles/bootstrap.css deleted file mode 100644 index 55de7b9..0000000 --- a/app/styles/bootstrap.css +++ /dev/null @@ -1,6167 +0,0 @@ -/*! - * Bootstrap v2.3.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ - -.clearfix { - *zoom: 1; -} - -.clearfix:before, -.clearfix:after { - display: table; - line-height: 0; - content: ""; -} - -.clearfix:after { - clear: both; -} - -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} - -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} - -audio:not([controls]) { - display: none; -} - -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -a:hover, -a:active { - outline: 0; -} - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -img { - width: auto\9; - height: auto; - max-width: 100%; - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} - -#map_canvas img, -.google-maps img { - max-width: none; -} - -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} - -button, -input { - *overflow: visible; - line-height: normal; -} - -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} - -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - cursor: pointer; - -webkit-appearance: button; -} - -label, -select, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input[type="radio"], -input[type="checkbox"] { - cursor: pointer; -} - -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} - -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; -} - -textarea { - overflow: auto; - vertical-align: top; -} - -@media print { - * { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - @page { - margin: 0.5cm; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } -} - -body { - margin: 0; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 20px; - color: #333333; - background-color: #ffffff; -} - -a { - color: #0088cc; - text-decoration: none; -} - -a:hover, -a:focus { - color: #005580; - text-decoration: underline; -} - -.img-rounded { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.img-polaroid { - padding: 4px; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} - -.img-circle { - -webkit-border-radius: 500px; - -moz-border-radius: 500px; - border-radius: 500px; -} - -.row { - margin-left: -20px; - *zoom: 1; -} - -.row:before, -.row:after { - display: table; - line-height: 0; - content: ""; -} - -.row:after { - clear: both; -} - -[class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; -} - -.container, -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} - -.span12 { - width: 940px; -} - -.span11 { - width: 860px; -} - -.span10 { - width: 780px; -} - -.span9 { - width: 700px; -} - -.span8 { - width: 620px; -} - -.span7 { - width: 540px; -} - -.span6 { - width: 460px; -} - -.span5 { - width: 380px; -} - -.span4 { - width: 300px; -} - -.span3 { - width: 220px; -} - -.span2 { - width: 140px; -} - -.span1 { - width: 60px; -} - -.offset12 { - margin-left: 980px; -} - -.offset11 { - margin-left: 900px; -} - -.offset10 { - margin-left: 820px; -} - -.offset9 { - margin-left: 740px; -} - -.offset8 { - margin-left: 660px; -} - -.offset7 { - margin-left: 580px; -} - -.offset6 { - margin-left: 500px; -} - -.offset5 { - margin-left: 420px; -} - -.offset4 { - margin-left: 340px; -} - -.offset3 { - margin-left: 260px; -} - -.offset2 { - margin-left: 180px; -} - -.offset1 { - margin-left: 100px; -} - -.row-fluid { - width: 100%; - *zoom: 1; -} - -.row-fluid:before, -.row-fluid:after { - display: table; - line-height: 0; - content: ""; -} - -.row-fluid:after { - clear: both; -} - -.row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 30px; - margin-left: 2.127659574468085%; - *margin-left: 2.074468085106383%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.row-fluid [class*="span"]:first-child { - margin-left: 0; -} - -.row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.127659574468085%; -} - -.row-fluid .span12 { - width: 100%; - *width: 99.94680851063829%; -} - -.row-fluid .span11 { - width: 91.48936170212765%; - *width: 91.43617021276594%; -} - -.row-fluid .span10 { - width: 82.97872340425532%; - *width: 82.92553191489361%; -} - -.row-fluid .span9 { - width: 74.46808510638297%; - *width: 74.41489361702126%; -} - -.row-fluid .span8 { - width: 65.95744680851064%; - *width: 65.90425531914893%; -} - -.row-fluid .span7 { - width: 57.44680851063829%; - *width: 57.39361702127659%; -} - -.row-fluid .span6 { - width: 48.93617021276595%; - *width: 48.88297872340425%; -} - -.row-fluid .span5 { - width: 40.42553191489362%; - *width: 40.37234042553192%; -} - -.row-fluid .span4 { - width: 31.914893617021278%; - *width: 31.861702127659576%; -} - -.row-fluid .span3 { - width: 23.404255319148934%; - *width: 23.351063829787233%; -} - -.row-fluid .span2 { - width: 14.893617021276595%; - *width: 14.840425531914894%; -} - -.row-fluid .span1 { - width: 6.382978723404255%; - *width: 6.329787234042553%; -} - -.row-fluid .offset12 { - margin-left: 104.25531914893617%; - *margin-left: 104.14893617021275%; -} - -.row-fluid .offset12:first-child { - margin-left: 102.12765957446808%; - *margin-left: 102.02127659574467%; -} - -.row-fluid .offset11 { - margin-left: 95.74468085106382%; - *margin-left: 95.6382978723404%; -} - -.row-fluid .offset11:first-child { - margin-left: 93.61702127659574%; - *margin-left: 93.51063829787232%; -} - -.row-fluid .offset10 { - margin-left: 87.23404255319149%; - *margin-left: 87.12765957446807%; -} - -.row-fluid .offset10:first-child { - margin-left: 85.1063829787234%; - *margin-left: 84.99999999999999%; -} - -.row-fluid .offset9 { - margin-left: 78.72340425531914%; - *margin-left: 78.61702127659572%; -} - -.row-fluid .offset9:first-child { - margin-left: 76.59574468085106%; - *margin-left: 76.48936170212764%; -} - -.row-fluid .offset8 { - margin-left: 70.2127659574468%; - *margin-left: 70.10638297872339%; -} - -.row-fluid .offset8:first-child { - margin-left: 68.08510638297872%; - *margin-left: 67.9787234042553%; -} - -.row-fluid .offset7 { - margin-left: 61.70212765957446%; - *margin-left: 61.59574468085106%; -} - -.row-fluid .offset7:first-child { - margin-left: 59.574468085106375%; - *margin-left: 59.46808510638297%; -} - -.row-fluid .offset6 { - margin-left: 53.191489361702125%; - *margin-left: 53.085106382978715%; -} - -.row-fluid .offset6:first-child { - margin-left: 51.063829787234035%; - *margin-left: 50.95744680851063%; -} - -.row-fluid .offset5 { - margin-left: 44.68085106382979%; - *margin-left: 44.57446808510638%; -} - -.row-fluid .offset5:first-child { - margin-left: 42.5531914893617%; - *margin-left: 42.4468085106383%; -} - -.row-fluid .offset4 { - margin-left: 36.170212765957444%; - *margin-left: 36.06382978723405%; -} - -.row-fluid .offset4:first-child { - margin-left: 34.04255319148936%; - *margin-left: 33.93617021276596%; -} - -.row-fluid .offset3 { - margin-left: 27.659574468085104%; - *margin-left: 27.5531914893617%; -} - -.row-fluid .offset3:first-child { - margin-left: 25.53191489361702%; - *margin-left: 25.425531914893618%; -} - -.row-fluid .offset2 { - margin-left: 19.148936170212764%; - *margin-left: 19.04255319148936%; -} - -.row-fluid .offset2:first-child { - margin-left: 17.02127659574468%; - *margin-left: 16.914893617021278%; -} - -.row-fluid .offset1 { - margin-left: 10.638297872340425%; - *margin-left: 10.53191489361702%; -} - -.row-fluid .offset1:first-child { - margin-left: 8.51063829787234%; - *margin-left: 8.404255319148938%; -} - -[class*="span"].hide, -.row-fluid [class*="span"].hide { - display: none; -} - -[class*="span"].pull-right, -.row-fluid [class*="span"].pull-right { - float: right; -} - -.container { - margin-right: auto; - margin-left: auto; - *zoom: 1; -} - -.container:before, -.container:after { - display: table; - line-height: 0; - content: ""; -} - -.container:after { - clear: both; -} - -.container-fluid { - padding-right: 20px; - padding-left: 20px; - *zoom: 1; -} - -.container-fluid:before, -.container-fluid:after { - display: table; - line-height: 0; - content: ""; -} - -.container-fluid:after { - clear: both; -} - -p { - margin: 0 0 10px; -} - -.lead { - margin-bottom: 20px; - font-size: 21px; - font-weight: 200; - line-height: 30px; -} - -small { - font-size: 85%; -} - -strong { - font-weight: bold; -} - -em { - font-style: italic; -} - -cite { - font-style: normal; -} - -.muted { - color: #999999; -} - -a.muted:hover, -a.muted:focus { - color: #808080; -} - -.text-warning { - color: #c09853; -} - -a.text-warning:hover, -a.text-warning:focus { - color: #a47e3c; -} - -.text-error { - color: #b94a48; -} - -a.text-error:hover, -a.text-error:focus { - color: #953b39; -} - -.text-info { - color: #3a87ad; -} - -a.text-info:hover, -a.text-info:focus { - color: #2d6987; -} - -.text-success { - color: #468847; -} - -a.text-success:hover, -a.text-success:focus { - color: #356635; -} - -.text-left { - text-align: left; -} - -.text-right { - text-align: right; -} - -.text-center { - text-align: center; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 10px 0; - font-family: inherit; - font-weight: bold; - line-height: 20px; - color: inherit; - text-rendering: optimizelegibility; -} - -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - font-weight: normal; - line-height: 1; - color: #999999; -} - -h1, -h2, -h3 { - line-height: 40px; -} - -h1 { - font-size: 38.5px; -} - -h2 { - font-size: 31.5px; -} - -h3 { - font-size: 24.5px; -} - -h4 { - font-size: 17.5px; -} - -h5 { - font-size: 14px; -} - -h6 { - font-size: 11.9px; -} - -h1 small { - font-size: 24.5px; -} - -h2 small { - font-size: 17.5px; -} - -h3 small { - font-size: 14px; -} - -h4 small { - font-size: 14px; -} - -.page-header { - padding-bottom: 9px; - margin: 20px 0 30px; - border-bottom: 1px solid #eeeeee; -} - -ul, -ol { - padding: 0; - margin: 0 0 10px 25px; -} - -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} - -li { - line-height: 20px; -} - -ul.unstyled, -ol.unstyled { - margin-left: 0; - list-style: none; -} - -ul.inline, -ol.inline { - margin-left: 0; - list-style: none; -} - -ul.inline > li, -ol.inline > li { - display: inline-block; - *display: inline; - padding-right: 5px; - padding-left: 5px; - *zoom: 1; -} - -dl { - margin-bottom: 20px; -} - -dt, -dd { - line-height: 20px; -} - -dt { - font-weight: bold; -} - -dd { - margin-left: 10px; -} - -.dl-horizontal { - *zoom: 1; -} - -.dl-horizontal:before, -.dl-horizontal:after { - display: table; - line-height: 0; - content: ""; -} - -.dl-horizontal:after { - clear: both; -} - -.dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; -} - -.dl-horizontal dd { - margin-left: 180px; -} - -hr { - margin: 20px 0; - border: 0; - border-top: 1px solid #eeeeee; - border-bottom: 1px solid #ffffff; -} - -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999999; -} - -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} - -blockquote { - padding: 0 0 0 15px; - margin: 0 0 20px; - border-left: 5px solid #eeeeee; -} - -blockquote p { - margin-bottom: 0; - font-size: 17.5px; - font-weight: 300; - line-height: 1.25; -} - -blockquote small { - display: block; - line-height: 20px; - color: #999999; -} - -blockquote small:before { - content: '\2014 \00A0'; -} - -blockquote.pull-right { - float: right; - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; -} - -blockquote.pull-right p, -blockquote.pull-right small { - text-align: right; -} - -blockquote.pull-right small:before { - content: ''; -} - -blockquote.pull-right small:after { - content: '\00A0 \2014'; -} - -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} - -address { - display: block; - margin-bottom: 20px; - font-style: normal; - line-height: 20px; -} - -code, -pre { - padding: 0 3px 2px; - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; - font-size: 12px; - color: #333333; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -code { - padding: 2px 4px; - color: #d14; - white-space: nowrap; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; -} - -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 20px; - word-break: break-all; - word-wrap: break-word; - white-space: pre; - white-space: pre-wrap; - background-color: #f5f5f5; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -pre.prettyprint { - margin-bottom: 20px; -} - -pre code { - padding: 0; - color: inherit; - white-space: pre; - white-space: pre-wrap; - background-color: transparent; - border: 0; -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -form { - margin: 0 0 20px; -} - -fieldset { - padding: 0; - margin: 0; - border: 0; -} - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: 40px; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} - -legend small { - font-size: 15px; - color: #999999; -} - -label, -input, -button, -select, -textarea { - font-size: 14px; - font-weight: normal; - line-height: 20px; -} - -input, -button, -select, -textarea { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} - -label { - display: block; - margin-bottom: 5px; -} - -select, -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - display: inline-block; - height: 20px; - padding: 4px 6px; - margin-bottom: 10px; - font-size: 14px; - line-height: 20px; - color: #555555; - vertical-align: middle; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -input, -textarea, -.uneditable-input { - width: 206px; -} - -textarea { - height: auto; -} - -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"], -.uneditable-input { - background-color: #ffffff; - border: 1px solid #cccccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; -} - -textarea:focus, -input[type="text"]:focus, -input[type="password"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="date"]:focus, -input[type="month"]:focus, -input[type="time"]:focus, -input[type="week"]:focus, -input[type="number"]:focus, -input[type="email"]:focus, -input[type="url"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="color"]:focus, -.uneditable-input:focus { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); -} - -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - *margin-top: 0; - line-height: normal; -} - -input[type="file"], -input[type="image"], -input[type="submit"], -input[type="reset"], -input[type="button"], -input[type="radio"], -input[type="checkbox"] { - width: auto; -} - -select, -input[type="file"] { - height: 30px; - /* In IE7, the height of the select element cannot be changed by height, only font-size */ - - *margin-top: 4px; - /* For IE7, add top margin to align select with labels */ - - line-height: 30px; -} - -select { - width: 220px; - background-color: #ffffff; - border: 1px solid #cccccc; -} - -select[multiple], -select[size] { - height: auto; -} - -select:focus, -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -.uneditable-input, -.uneditable-textarea { - color: #999999; - cursor: not-allowed; - background-color: #fcfcfc; - border-color: #cccccc; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); -} - -.uneditable-input { - overflow: hidden; - white-space: nowrap; -} - -.uneditable-textarea { - width: auto; - height: auto; -} - -input:-moz-placeholder, -textarea:-moz-placeholder { - color: #999999; -} - -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: #999999; -} - -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #999999; -} - -.radio, -.checkbox { - min-height: 20px; - padding-left: 20px; -} - -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float: left; - margin-left: -20px; -} - -.controls > .radio:first-child, -.controls > .checkbox:first-child { - padding-top: 5px; -} - -.radio.inline, -.checkbox.inline { - display: inline-block; - padding-top: 5px; - margin-bottom: 0; - vertical-align: middle; -} - -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-left: 10px; -} - -.input-mini { - width: 60px; -} - -.input-small { - width: 90px; -} - -.input-medium { - width: 150px; -} - -.input-large { - width: 210px; -} - -.input-xlarge { - width: 270px; -} - -.input-xxlarge { - width: 530px; -} - -input[class*="span"], -select[class*="span"], -textarea[class*="span"], -.uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"] { - float: none; - margin-left: 0; -} - -.input-append input[class*="span"], -.input-append .uneditable-input[class*="span"], -.input-prepend input[class*="span"], -.input-prepend .uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"], -.row-fluid .input-prepend [class*="span"], -.row-fluid .input-append [class*="span"] { - display: inline-block; -} - -input, -textarea, -.uneditable-input { - margin-left: 0; -} - -.controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; -} - -input.span12, -textarea.span12, -.uneditable-input.span12 { - width: 926px; -} - -input.span11, -textarea.span11, -.uneditable-input.span11 { - width: 846px; -} - -input.span10, -textarea.span10, -.uneditable-input.span10 { - width: 766px; -} - -input.span9, -textarea.span9, -.uneditable-input.span9 { - width: 686px; -} - -input.span8, -textarea.span8, -.uneditable-input.span8 { - width: 606px; -} - -input.span7, -textarea.span7, -.uneditable-input.span7 { - width: 526px; -} - -input.span6, -textarea.span6, -.uneditable-input.span6 { - width: 446px; -} - -input.span5, -textarea.span5, -.uneditable-input.span5 { - width: 366px; -} - -input.span4, -textarea.span4, -.uneditable-input.span4 { - width: 286px; -} - -input.span3, -textarea.span3, -.uneditable-input.span3 { - width: 206px; -} - -input.span2, -textarea.span2, -.uneditable-input.span2 { - width: 126px; -} - -input.span1, -textarea.span1, -.uneditable-input.span1 { - width: 46px; -} - -.controls-row { - *zoom: 1; -} - -.controls-row:before, -.controls-row:after { - display: table; - line-height: 0; - content: ""; -} - -.controls-row:after { - clear: both; -} - -.controls-row [class*="span"], -.row-fluid .controls-row [class*="span"] { - float: left; -} - -.controls-row .checkbox[class*="span"], -.controls-row .radio[class*="span"] { - padding-top: 5px; -} - -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - cursor: not-allowed; - background-color: #eeeeee; -} - -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"][readonly], -input[type="checkbox"][readonly] { - background-color: transparent; -} - -.control-group.warning .control-label, -.control-group.warning .help-block, -.control-group.warning .help-inline { - color: #c09853; -} - -.control-group.warning .checkbox, -.control-group.warning .radio, -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - color: #c09853; -} - -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} - -.control-group.warning .input-prepend .add-on, -.control-group.warning .input-append .add-on { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} - -.control-group.error .control-label, -.control-group.error .help-block, -.control-group.error .help-inline { - color: #b94a48; -} - -.control-group.error .checkbox, -.control-group.error .radio, -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - color: #b94a48; -} - -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - border-color: #b94a48; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { - border-color: #953b39; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; -} - -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - color: #b94a48; - background-color: #f2dede; - border-color: #b94a48; -} - -.control-group.success .control-label, -.control-group.success .help-block, -.control-group.success .help-inline { - color: #468847; -} - -.control-group.success .checkbox, -.control-group.success .radio, -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - color: #468847; -} - -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} - -.control-group.success .input-prepend .add-on, -.control-group.success .input-append .add-on { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} - -.control-group.info .control-label, -.control-group.info .help-block, -.control-group.info .help-inline { - color: #3a87ad; -} - -.control-group.info .checkbox, -.control-group.info .radio, -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - color: #3a87ad; -} - -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - border-color: #3a87ad; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.control-group.info input:focus, -.control-group.info select:focus, -.control-group.info textarea:focus { - border-color: #2d6987; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -} - -.control-group.info .input-prepend .add-on, -.control-group.info .input-append .add-on { - color: #3a87ad; - background-color: #d9edf7; - border-color: #3a87ad; -} - -input:focus:invalid, -textarea:focus:invalid, -select:focus:invalid { - color: #b94a48; - border-color: #ee5f5b; -} - -input:focus:invalid:focus, -textarea:focus:invalid:focus, -select:focus:invalid:focus { - border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; -} - -.form-actions { - padding: 19px 20px 20px; - margin-top: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-top: 1px solid #e5e5e5; - *zoom: 1; -} - -.form-actions:before, -.form-actions:after { - display: table; - line-height: 0; - content: ""; -} - -.form-actions:after { - clear: both; -} - -.help-block, -.help-inline { - color: #595959; -} - -.help-block { - display: block; - margin-bottom: 10px; -} - -.help-inline { - display: inline-block; - *display: inline; - padding-left: 5px; - vertical-align: middle; - *zoom: 1; -} - -.input-append, -.input-prepend { - display: inline-block; - margin-bottom: 10px; - font-size: 0; - white-space: nowrap; - vertical-align: middle; -} - -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input, -.input-append .dropdown-menu, -.input-prepend .dropdown-menu, -.input-append .popover, -.input-prepend .popover { - font-size: 14px; -} - -.input-append input, -.input-prepend input, -.input-append select, -.input-prepend select, -.input-append .uneditable-input, -.input-prepend .uneditable-input { - position: relative; - margin-bottom: 0; - *margin-left: 0; - vertical-align: top; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.input-append input:focus, -.input-prepend input:focus, -.input-append select:focus, -.input-prepend select:focus, -.input-append .uneditable-input:focus, -.input-prepend .uneditable-input:focus { - z-index: 2; -} - -.input-append .add-on, -.input-prepend .add-on { - display: inline-block; - width: auto; - height: 20px; - min-width: 16px; - padding: 4px 5px; - font-size: 14px; - font-weight: normal; - line-height: 20px; - text-align: center; - text-shadow: 0 1px 0 #ffffff; - background-color: #eeeeee; - border: 1px solid #ccc; -} - -.input-append .add-on, -.input-prepend .add-on, -.input-append .btn, -.input-prepend .btn, -.input-append .btn-group > .dropdown-toggle, -.input-prepend .btn-group > .dropdown-toggle { - vertical-align: top; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.input-append .active, -.input-prepend .active { - background-color: #a9dba9; - border-color: #46a546; -} - -.input-prepend .add-on, -.input-prepend .btn { - margin-right: -1px; -} - -.input-prepend .add-on:first-child, -.input-prepend .btn:first-child { - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.input-append input, -.input-append select, -.input-append .uneditable-input { - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.input-append input + .btn-group .btn:last-child, -.input-append select + .btn-group .btn:last-child, -.input-append .uneditable-input + .btn-group .btn:last-child { - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.input-append .add-on, -.input-append .btn, -.input-append .btn-group { - margin-left: -1px; -} - -.input-append .add-on:last-child, -.input-append .btn:last-child, -.input-append .btn-group:last-child > .dropdown-toggle { - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.input-prepend.input-append input, -.input-prepend.input-append select, -.input-prepend.input-append .uneditable-input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.input-prepend.input-append input + .btn-group .btn, -.input-prepend.input-append select + .btn-group .btn, -.input-prepend.input-append .uneditable-input + .btn-group .btn { - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.input-prepend.input-append .add-on:first-child, -.input-prepend.input-append .btn:first-child { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.input-prepend.input-append .add-on:last-child, -.input-prepend.input-append .btn:last-child { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.input-prepend.input-append .btn-group:first-child { - margin-left: 0; -} - -input.search-query { - padding-right: 14px; - padding-right: 4px \9; - padding-left: 14px; - padding-left: 4px \9; - /* IE7-8 doesn't have border-radius, so don't indent the padding */ - - margin-bottom: 0; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} - -/* Allow for input prepend/append in search forms */ - -.form-search .input-append .search-query, -.form-search .input-prepend .search-query { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.form-search .input-append .search-query { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} - -.form-search .input-append .btn { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} - -.form-search .input-prepend .search-query { - -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; -} - -.form-search .input-prepend .btn { - -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; -} - -.form-search input, -.form-inline input, -.form-horizontal input, -.form-search textarea, -.form-inline textarea, -.form-horizontal textarea, -.form-search select, -.form-inline select, -.form-horizontal select, -.form-search .help-inline, -.form-inline .help-inline, -.form-horizontal .help-inline, -.form-search .uneditable-input, -.form-inline .uneditable-input, -.form-horizontal .uneditable-input, -.form-search .input-prepend, -.form-inline .input-prepend, -.form-horizontal .input-prepend, -.form-search .input-append, -.form-inline .input-append, -.form-horizontal .input-append { - display: inline-block; - *display: inline; - margin-bottom: 0; - vertical-align: middle; - *zoom: 1; -} - -.form-search .hide, -.form-inline .hide, -.form-horizontal .hide { - display: none; -} - -.form-search label, -.form-inline label, -.form-search .btn-group, -.form-inline .btn-group { - display: inline-block; -} - -.form-search .input-append, -.form-inline .input-append, -.form-search .input-prepend, -.form-inline .input-prepend { - margin-bottom: 0; -} - -.form-search .radio, -.form-search .checkbox, -.form-inline .radio, -.form-inline .checkbox { - padding-left: 0; - margin-bottom: 0; - vertical-align: middle; -} - -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"], -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float: left; - margin-right: 3px; - margin-left: 0; -} - -.control-group { - margin-bottom: 10px; -} - -legend + .control-group { - margin-top: 20px; - -webkit-margin-top-collapse: separate; -} - -.form-horizontal .control-group { - margin-bottom: 20px; - *zoom: 1; -} - -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { - display: table; - line-height: 0; - content: ""; -} - -.form-horizontal .control-group:after { - clear: both; -} - -.form-horizontal .control-label { - float: left; - width: 160px; - padding-top: 5px; - text-align: right; -} - -.form-horizontal .controls { - *display: inline-block; - *padding-left: 20px; - margin-left: 180px; - *margin-left: 0; -} - -.form-horizontal .controls:first-child { - *padding-left: 180px; -} - -.form-horizontal .help-block { - margin-bottom: 0; -} - -.form-horizontal input + .help-block, -.form-horizontal select + .help-block, -.form-horizontal textarea + .help-block, -.form-horizontal .uneditable-input + .help-block, -.form-horizontal .input-prepend + .help-block, -.form-horizontal .input-append + .help-block { - margin-top: 10px; -} - -.form-horizontal .form-actions { - padding-left: 180px; -} - -table { - max-width: 100%; - background-color: transparent; - border-collapse: collapse; - border-spacing: 0; -} - -.table { - width: 100%; - margin-bottom: 20px; -} - -.table th, -.table td { - padding: 8px; - line-height: 20px; - text-align: left; - vertical-align: top; - border-top: 1px solid #dddddd; -} - -.table th { - font-weight: bold; -} - -.table thead th { - vertical-align: bottom; -} - -.table caption + thead tr:first-child th, -.table caption + thead tr:first-child td, -.table colgroup + thead tr:first-child th, -.table colgroup + thead tr:first-child td, -.table thead:first-child tr:first-child th, -.table thead:first-child tr:first-child td { - border-top: 0; -} - -.table tbody + tbody { - border-top: 2px solid #dddddd; -} - -.table .table { - background-color: #ffffff; -} - -.table-condensed th, -.table-condensed td { - padding: 4px 5px; -} - -.table-bordered { - border: 1px solid #dddddd; - border-collapse: separate; - *border-collapse: collapse; - border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.table-bordered th, -.table-bordered td { - border-left: 1px solid #dddddd; -} - -.table-bordered caption + thead tr:first-child th, -.table-bordered caption + tbody tr:first-child th, -.table-bordered caption + tbody tr:first-child td, -.table-bordered colgroup + thead tr:first-child th, -.table-bordered colgroup + tbody tr:first-child th, -.table-bordered colgroup + tbody tr:first-child td, -.table-bordered thead:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child td { - border-top: 0; -} - -.table-bordered thead:first-child tr:first-child > th:first-child, -.table-bordered tbody:first-child tr:first-child > td:first-child, -.table-bordered tbody:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; -} - -.table-bordered thead:first-child tr:first-child > th:last-child, -.table-bordered tbody:first-child tr:first-child > td:last-child, -.table-bordered tbody:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; -} - -.table-bordered thead:last-child tr:last-child > th:first-child, -.table-bordered tbody:last-child tr:last-child > td:first-child, -.table-bordered tbody:last-child tr:last-child > th:first-child, -.table-bordered tfoot:last-child tr:last-child > td:first-child, -.table-bordered tfoot:last-child tr:last-child > th:first-child { - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; -} - -.table-bordered thead:last-child tr:last-child > th:last-child, -.table-bordered tbody:last-child tr:last-child > td:last-child, -.table-bordered tbody:last-child tr:last-child > th:last-child, -.table-bordered tfoot:last-child tr:last-child > td:last-child, -.table-bordered tfoot:last-child tr:last-child > th:last-child { - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; -} - -.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { - -webkit-border-bottom-left-radius: 0; - border-bottom-left-radius: 0; - -moz-border-radius-bottomleft: 0; -} - -.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 0; - border-bottom-right-radius: 0; - -moz-border-radius-bottomright: 0; -} - -.table-bordered caption + thead tr:first-child th:first-child, -.table-bordered caption + tbody tr:first-child td:first-child, -.table-bordered colgroup + thead tr:first-child th:first-child, -.table-bordered colgroup + tbody tr:first-child td:first-child { - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; -} - -.table-bordered caption + thead tr:first-child th:last-child, -.table-bordered caption + tbody tr:first-child td:last-child, -.table-bordered colgroup + thead tr:first-child th:last-child, -.table-bordered colgroup + tbody tr:first-child td:last-child { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; -} - -.table-striped tbody > tr:nth-child(odd) > td, -.table-striped tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} - -.table-hover tbody tr:hover > td, -.table-hover tbody tr:hover > th { - background-color: #f5f5f5; -} - -table td[class*="span"], -table th[class*="span"], -.row-fluid table td[class*="span"], -.row-fluid table th[class*="span"] { - display: table-cell; - float: none; - margin-left: 0; -} - -.table td.span1, -.table th.span1 { - float: none; - width: 44px; - margin-left: 0; -} - -.table td.span2, -.table th.span2 { - float: none; - width: 124px; - margin-left: 0; -} - -.table td.span3, -.table th.span3 { - float: none; - width: 204px; - margin-left: 0; -} - -.table td.span4, -.table th.span4 { - float: none; - width: 284px; - margin-left: 0; -} - -.table td.span5, -.table th.span5 { - float: none; - width: 364px; - margin-left: 0; -} - -.table td.span6, -.table th.span6 { - float: none; - width: 444px; - margin-left: 0; -} - -.table td.span7, -.table th.span7 { - float: none; - width: 524px; - margin-left: 0; -} - -.table td.span8, -.table th.span8 { - float: none; - width: 604px; - margin-left: 0; -} - -.table td.span9, -.table th.span9 { - float: none; - width: 684px; - margin-left: 0; -} - -.table td.span10, -.table th.span10 { - float: none; - width: 764px; - margin-left: 0; -} - -.table td.span11, -.table th.span11 { - float: none; - width: 844px; - margin-left: 0; -} - -.table td.span12, -.table th.span12 { - float: none; - width: 924px; - margin-left: 0; -} - -.table tbody tr.success > td { - background-color: #dff0d8; -} - -.table tbody tr.error > td { - background-color: #f2dede; -} - -.table tbody tr.warning > td { - background-color: #fcf8e3; -} - -.table tbody tr.info > td { - background-color: #d9edf7; -} - -.table-hover tbody tr.success:hover > td { - background-color: #d0e9c6; -} - -.table-hover tbody tr.error:hover > td { - background-color: #ebcccc; -} - -.table-hover tbody tr.warning:hover > td { - background-color: #faf2cc; -} - -.table-hover tbody tr.info:hover > td { - background-color: #c4e3f3; -} - -[class^="icon-"], -[class*=" icon-"] { - display: inline-block; - width: 14px; - height: 14px; - margin-top: 1px; - *margin-right: .3em; - line-height: 14px; - vertical-align: text-top; - background-image: url("../img/glyphicons-halflings.png"); - background-position: 14px 14px; - background-repeat: no-repeat; -} - -/* White icons with optional class, or on hover/focus/active states of certain elements */ - -.icon-white, -.nav-pills > .active > a > [class^="icon-"], -.nav-pills > .active > a > [class*=" icon-"], -.nav-list > .active > a > [class^="icon-"], -.nav-list > .active > a > [class*=" icon-"], -.navbar-inverse .nav > .active > a > [class^="icon-"], -.navbar-inverse .nav > .active > a > [class*=" icon-"], -.dropdown-menu > li > a:hover > [class^="icon-"], -.dropdown-menu > li > a:focus > [class^="icon-"], -.dropdown-menu > li > a:hover > [class*=" icon-"], -.dropdown-menu > li > a:focus > [class*=" icon-"], -.dropdown-menu > .active > a > [class^="icon-"], -.dropdown-menu > .active > a > [class*=" icon-"], -.dropdown-submenu:hover > a > [class^="icon-"], -.dropdown-submenu:focus > a > [class^="icon-"], -.dropdown-submenu:hover > a > [class*=" icon-"], -.dropdown-submenu:focus > a > [class*=" icon-"] { - background-image: url("../img/glyphicons-halflings-white.png"); -} - -.icon-glass { - background-position: 0 0; -} - -.icon-music { - background-position: -24px 0; -} - -.icon-search { - background-position: -48px 0; -} - -.icon-envelope { - background-position: -72px 0; -} - -.icon-heart { - background-position: -96px 0; -} - -.icon-star { - background-position: -120px 0; -} - -.icon-star-empty { - background-position: -144px 0; -} - -.icon-user { - background-position: -168px 0; -} - -.icon-film { - background-position: -192px 0; -} - -.icon-th-large { - background-position: -216px 0; -} - -.icon-th { - background-position: -240px 0; -} - -.icon-th-list { - background-position: -264px 0; -} - -.icon-ok { - background-position: -288px 0; -} - -.icon-remove { - background-position: -312px 0; -} - -.icon-zoom-in { - background-position: -336px 0; -} - -.icon-zoom-out { - background-position: -360px 0; -} - -.icon-off { - background-position: -384px 0; -} - -.icon-signal { - background-position: -408px 0; -} - -.icon-cog { - background-position: -432px 0; -} - -.icon-trash { - background-position: -456px 0; -} - -.icon-home { - background-position: 0 -24px; -} - -.icon-file { - background-position: -24px -24px; -} - -.icon-time { - background-position: -48px -24px; -} - -.icon-road { - background-position: -72px -24px; -} - -.icon-download-alt { - background-position: -96px -24px; -} - -.icon-download { - background-position: -120px -24px; -} - -.icon-upload { - background-position: -144px -24px; -} - -.icon-inbox { - background-position: -168px -24px; -} - -.icon-play-circle { - background-position: -192px -24px; -} - -.icon-repeat { - background-position: -216px -24px; -} - -.icon-refresh { - background-position: -240px -24px; -} - -.icon-list-alt { - background-position: -264px -24px; -} - -.icon-lock { - background-position: -287px -24px; -} - -.icon-flag { - background-position: -312px -24px; -} - -.icon-headphones { - background-position: -336px -24px; -} - -.icon-volume-off { - background-position: -360px -24px; -} - -.icon-volume-down { - background-position: -384px -24px; -} - -.icon-volume-up { - background-position: -408px -24px; -} - -.icon-qrcode { - background-position: -432px -24px; -} - -.icon-barcode { - background-position: -456px -24px; -} - -.icon-tag { - background-position: 0 -48px; -} - -.icon-tags { - background-position: -25px -48px; -} - -.icon-book { - background-position: -48px -48px; -} - -.icon-bookmark { - background-position: -72px -48px; -} - -.icon-print { - background-position: -96px -48px; -} - -.icon-camera { - background-position: -120px -48px; -} - -.icon-font { - background-position: -144px -48px; -} - -.icon-bold { - background-position: -167px -48px; -} - -.icon-italic { - background-position: -192px -48px; -} - -.icon-text-height { - background-position: -216px -48px; -} - -.icon-text-width { - background-position: -240px -48px; -} - -.icon-align-left { - background-position: -264px -48px; -} - -.icon-align-center { - background-position: -288px -48px; -} - -.icon-align-right { - background-position: -312px -48px; -} - -.icon-align-justify { - background-position: -336px -48px; -} - -.icon-list { - background-position: -360px -48px; -} - -.icon-indent-left { - background-position: -384px -48px; -} - -.icon-indent-right { - background-position: -408px -48px; -} - -.icon-facetime-video { - background-position: -432px -48px; -} - -.icon-picture { - background-position: -456px -48px; -} - -.icon-pencil { - background-position: 0 -72px; -} - -.icon-map-marker { - background-position: -24px -72px; -} - -.icon-adjust { - background-position: -48px -72px; -} - -.icon-tint { - background-position: -72px -72px; -} - -.icon-edit { - background-position: -96px -72px; -} - -.icon-share { - background-position: -120px -72px; -} - -.icon-check { - background-position: -144px -72px; -} - -.icon-move { - background-position: -168px -72px; -} - -.icon-step-backward { - background-position: -192px -72px; -} - -.icon-fast-backward { - background-position: -216px -72px; -} - -.icon-backward { - background-position: -240px -72px; -} - -.icon-play { - background-position: -264px -72px; -} - -.icon-pause { - background-position: -288px -72px; -} - -.icon-stop { - background-position: -312px -72px; -} - -.icon-forward { - background-position: -336px -72px; -} - -.icon-fast-forward { - background-position: -360px -72px; -} - -.icon-step-forward { - background-position: -384px -72px; -} - -.icon-eject { - background-position: -408px -72px; -} - -.icon-chevron-left { - background-position: -432px -72px; -} - -.icon-chevron-right { - background-position: -456px -72px; -} - -.icon-plus-sign { - background-position: 0 -96px; -} - -.icon-minus-sign { - background-position: -24px -96px; -} - -.icon-remove-sign { - background-position: -48px -96px; -} - -.icon-ok-sign { - background-position: -72px -96px; -} - -.icon-question-sign { - background-position: -96px -96px; -} - -.icon-info-sign { - background-position: -120px -96px; -} - -.icon-screenshot { - background-position: -144px -96px; -} - -.icon-remove-circle { - background-position: -168px -96px; -} - -.icon-ok-circle { - background-position: -192px -96px; -} - -.icon-ban-circle { - background-position: -216px -96px; -} - -.icon-arrow-left { - background-position: -240px -96px; -} - -.icon-arrow-right { - background-position: -264px -96px; -} - -.icon-arrow-up { - background-position: -289px -96px; -} - -.icon-arrow-down { - background-position: -312px -96px; -} - -.icon-share-alt { - background-position: -336px -96px; -} - -.icon-resize-full { - background-position: -360px -96px; -} - -.icon-resize-small { - background-position: -384px -96px; -} - -.icon-plus { - background-position: -408px -96px; -} - -.icon-minus { - background-position: -433px -96px; -} - -.icon-asterisk { - background-position: -456px -96px; -} - -.icon-exclamation-sign { - background-position: 0 -120px; -} - -.icon-gift { - background-position: -24px -120px; -} - -.icon-leaf { - background-position: -48px -120px; -} - -.icon-fire { - background-position: -72px -120px; -} - -.icon-eye-open { - background-position: -96px -120px; -} - -.icon-eye-close { - background-position: -120px -120px; -} - -.icon-warning-sign { - background-position: -144px -120px; -} - -.icon-plane { - background-position: -168px -120px; -} - -.icon-calendar { - background-position: -192px -120px; -} - -.icon-random { - width: 16px; - background-position: -216px -120px; -} - -.icon-comment { - background-position: -240px -120px; -} - -.icon-magnet { - background-position: -264px -120px; -} - -.icon-chevron-up { - background-position: -288px -120px; -} - -.icon-chevron-down { - background-position: -313px -119px; -} - -.icon-retweet { - background-position: -336px -120px; -} - -.icon-shopping-cart { - background-position: -360px -120px; -} - -.icon-folder-close { - width: 16px; - background-position: -384px -120px; -} - -.icon-folder-open { - width: 16px; - background-position: -408px -120px; -} - -.icon-resize-vertical { - background-position: -432px -119px; -} - -.icon-resize-horizontal { - background-position: -456px -118px; -} - -.icon-hdd { - background-position: 0 -144px; -} - -.icon-bullhorn { - background-position: -24px -144px; -} - -.icon-bell { - background-position: -48px -144px; -} - -.icon-certificate { - background-position: -72px -144px; -} - -.icon-thumbs-up { - background-position: -96px -144px; -} - -.icon-thumbs-down { - background-position: -120px -144px; -} - -.icon-hand-right { - background-position: -144px -144px; -} - -.icon-hand-left { - background-position: -168px -144px; -} - -.icon-hand-up { - background-position: -192px -144px; -} - -.icon-hand-down { - background-position: -216px -144px; -} - -.icon-circle-arrow-right { - background-position: -240px -144px; -} - -.icon-circle-arrow-left { - background-position: -264px -144px; -} - -.icon-circle-arrow-up { - background-position: -288px -144px; -} - -.icon-circle-arrow-down { - background-position: -312px -144px; -} - -.icon-globe { - background-position: -336px -144px; -} - -.icon-wrench { - background-position: -360px -144px; -} - -.icon-tasks { - background-position: -384px -144px; -} - -.icon-filter { - background-position: -408px -144px; -} - -.icon-briefcase { - background-position: -432px -144px; -} - -.icon-fullscreen { - background-position: -456px -144px; -} - -.dropup, -.dropdown { - position: relative; -} - -.dropdown-toggle { - *margin-bottom: -3px; -} - -.dropdown-toggle:active, -.open .dropdown-toggle { - outline: 0; -} - -.caret { - display: inline-block; - width: 0; - height: 0; - vertical-align: top; - border-top: 4px solid #000000; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - content: ""; -} - -.dropdown .caret { - margin-top: 8px; - margin-left: 2px; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} - -.dropdown-menu.pull-right { - right: 0; - left: auto; -} - -.dropdown-menu .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #ffffff; -} - -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 20px; - color: #333333; - white-space: nowrap; -} - -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus, -.dropdown-submenu:hover > a, -.dropdown-submenu:focus > a { - color: #ffffff; - text-decoration: none; - background-color: #0081c2; - background-image: -moz-linear-gradient(top, #0088cc, #0077b3); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); - background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); - background-image: -o-linear-gradient(top, #0088cc, #0077b3); - background-image: linear-gradient(to bottom, #0088cc, #0077b3); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); -} - -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #ffffff; - text-decoration: none; - background-color: #0081c2; - background-image: -moz-linear-gradient(top, #0088cc, #0077b3); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); - background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); - background-image: -o-linear-gradient(top, #0088cc, #0077b3); - background-image: linear-gradient(to bottom, #0088cc, #0077b3); - background-repeat: repeat-x; - outline: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); -} - -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999999; -} - -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: default; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.open { - *z-index: 1000; -} - -.open > .dropdown-menu { - display: block; -} - -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} - -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} - -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid #000000; - content: ""; -} - -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu > .dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} - -.dropdown-submenu:hover > .dropdown-menu { - display: block; -} - -.dropup .dropdown-submenu > .dropdown-menu { - top: auto; - bottom: 0; - margin-top: 0; - margin-bottom: -2px; - -webkit-border-radius: 5px 5px 5px 0; - -moz-border-radius: 5px 5px 5px 0; - border-radius: 5px 5px 5px 0; -} - -.dropdown-submenu > a:after { - display: block; - float: right; - width: 0; - height: 0; - margin-top: 5px; - margin-right: -10px; - border-color: transparent; - border-left-color: #cccccc; - border-style: solid; - border-width: 5px 0 5px 5px; - content: " "; -} - -.dropdown-submenu:hover > a:after { - border-left-color: #ffffff; -} - -.dropdown-submenu.pull-left { - float: none; -} - -.dropdown-submenu.pull-left > .dropdown-menu { - left: -100%; - margin-left: 10px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} - -.dropdown .dropdown-menu .nav-header { - padding-right: 20px; - padding-left: 20px; -} - -.typeahead { - z-index: 1051; - margin-top: 2px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} - -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} - -.well-large { - padding: 24px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.well-small { - padding: 9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -moz-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} - -.fade.in { - opacity: 1; -} - -.collapse { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - -moz-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; -} - -.collapse.in { - height: auto; -} - -.close { - float: right; - font-size: 20px; - font-weight: bold; - line-height: 20px; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} - -.close:hover, -.close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - filter: alpha(opacity=40); -} - -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} - -.btn { - display: inline-block; - *display: inline; - padding: 4px 12px; - margin-bottom: 0; - *margin-left: .3em; - font-size: 14px; - line-height: 20px; - color: #333333; - text-align: center; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - vertical-align: middle; - cursor: pointer; - background-color: #f5f5f5; - *background-color: #e6e6e6; - background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); - background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); - background-repeat: repeat-x; - border: 1px solid #cccccc; - *border: 0; - border-color: #e6e6e6 #e6e6e6 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - *zoom: 1; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn:hover, -.btn:focus, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - color: #333333; - background-color: #e6e6e6; - *background-color: #d9d9d9; -} - -.btn:active, -.btn.active { - background-color: #cccccc \9; -} - -.btn:first-child { - *margin-left: 0; -} - -.btn:hover, -.btn:focus { - color: #333333; - text-decoration: none; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} - -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -.btn.active, -.btn:active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn.disabled, -.btn[disabled] { - cursor: default; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.btn-large { - padding: 11px 19px; - font-size: 17.5px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.btn-large [class^="icon-"], -.btn-large [class*=" icon-"] { - margin-top: 4px; -} - -.btn-small { - padding: 2px 10px; - font-size: 11.9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.btn-small [class^="icon-"], -.btn-small [class*=" icon-"] { - margin-top: 0; -} - -.btn-mini [class^="icon-"], -.btn-mini [class*=" icon-"] { - margin-top: -1px; -} - -.btn-mini { - padding: 0 6px; - font-size: 10.5px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.btn-block { - display: block; - width: 100%; - padding-right: 0; - padding-left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.btn-block + .btn-block { - margin-top: 5px; -} - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} - -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 0.75); -} - -.btn-primary { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #006dcc; - *background-color: #0044cc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(to bottom, #0088cc, #0044cc); - background-repeat: repeat-x; - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - color: #ffffff; - background-color: #0044cc; - *background-color: #003bb3; -} - -.btn-primary:active, -.btn-primary.active { - background-color: #003399 \9; -} - -.btn-warning { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #faa732; - *background-color: #f89406; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - color: #ffffff; - background-color: #f89406; - *background-color: #df8505; -} - -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} - -.btn-danger { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #da4f49; - *background-color: #bd362f; - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); - background-repeat: repeat-x; - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - color: #ffffff; - background-color: #bd362f; - *background-color: #a9302a; -} - -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} - -.btn-success { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #5bb75b; - *background-color: #51a351; - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(to bottom, #62c462, #51a351); - background-repeat: repeat-x; - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - color: #ffffff; - background-color: #51a351; - *background-color: #499249; -} - -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} - -.btn-info { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #49afcd; - *background-color: #2f96b4; - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); - background-repeat: repeat-x; - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - color: #ffffff; - background-color: #2f96b4; - *background-color: #2a85a0; -} - -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; -} - -.btn-inverse { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #363636; - *background-color: #222222; - background-image: -moz-linear-gradient(top, #444444, #222222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); - background-image: -webkit-linear-gradient(top, #444444, #222222); - background-image: -o-linear-gradient(top, #444444, #222222); - background-image: linear-gradient(to bottom, #444444, #222222); - background-repeat: repeat-x; - border-color: #222222 #222222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-inverse:hover, -.btn-inverse:focus, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - color: #ffffff; - background-color: #222222; - *background-color: #151515; -} - -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; -} - -button.btn, -input[type="submit"].btn { - *padding-top: 3px; - *padding-bottom: 3px; -} - -button.btn::-moz-focus-inner, -input[type="submit"].btn::-moz-focus-inner { - padding: 0; - border: 0; -} - -button.btn.btn-large, -input[type="submit"].btn.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; -} - -button.btn.btn-small, -input[type="submit"].btn.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; -} - -button.btn.btn-mini, -input[type="submit"].btn.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; -} - -.btn-link, -.btn-link:active, -.btn-link[disabled] { - background-color: transparent; - background-image: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.btn-link { - color: #0088cc; - cursor: pointer; - border-color: transparent; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.btn-link:hover, -.btn-link:focus { - color: #005580; - text-decoration: underline; - background-color: transparent; -} - -.btn-link[disabled]:hover, -.btn-link[disabled]:focus { - color: #333333; - text-decoration: none; -} - -.btn-group { - position: relative; - display: inline-block; - *display: inline; - *margin-left: .3em; - font-size: 0; - white-space: nowrap; - vertical-align: middle; - *zoom: 1; -} - -.btn-group:first-child { - *margin-left: 0; -} - -.btn-group + .btn-group { - margin-left: 5px; -} - -.btn-toolbar { - margin-top: 10px; - margin-bottom: 10px; - font-size: 0; -} - -.btn-toolbar > .btn + .btn, -.btn-toolbar > .btn-group + .btn, -.btn-toolbar > .btn + .btn-group { - margin-left: 5px; -} - -.btn-group > .btn { - position: relative; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.btn-group > .btn + .btn { - margin-left: -1px; -} - -.btn-group > .btn, -.btn-group > .dropdown-menu, -.btn-group > .popover { - font-size: 14px; -} - -.btn-group > .btn-mini { - font-size: 10.5px; -} - -.btn-group > .btn-small { - font-size: 11.9px; -} - -.btn-group > .btn-large { - font-size: 17.5px; -} - -.btn-group > .btn:first-child { - margin-left: 0; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-topleft: 4px; -} - -.btn-group > .btn:last-child, -.btn-group > .dropdown-toggle { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; -} - -.btn-group > .btn.large:first-child { - margin-left: 0; - -webkit-border-bottom-left-radius: 6px; - border-bottom-left-radius: 6px; - -webkit-border-top-left-radius: 6px; - border-top-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - -moz-border-radius-topleft: 6px; -} - -.btn-group > .btn.large:last-child, -.btn-group > .large.dropdown-toggle { - -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - border-bottom-right-radius: 6px; - -moz-border-radius-topright: 6px; - -moz-border-radius-bottomright: 6px; -} - -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active { - z-index: 2; -} - -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - -.btn-group > .btn + .dropdown-toggle { - *padding-top: 5px; - padding-right: 8px; - *padding-bottom: 5px; - padding-left: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn-group > .btn-mini + .dropdown-toggle { - *padding-top: 2px; - padding-right: 5px; - *padding-bottom: 2px; - padding-left: 5px; -} - -.btn-group > .btn-small + .dropdown-toggle { - *padding-top: 5px; - *padding-bottom: 4px; -} - -.btn-group > .btn-large + .dropdown-toggle { - *padding-top: 7px; - padding-right: 12px; - *padding-bottom: 7px; - padding-left: 12px; -} - -.btn-group.open .dropdown-toggle { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn-group.open .btn.dropdown-toggle { - background-color: #e6e6e6; -} - -.btn-group.open .btn-primary.dropdown-toggle { - background-color: #0044cc; -} - -.btn-group.open .btn-warning.dropdown-toggle { - background-color: #f89406; -} - -.btn-group.open .btn-danger.dropdown-toggle { - background-color: #bd362f; -} - -.btn-group.open .btn-success.dropdown-toggle { - background-color: #51a351; -} - -.btn-group.open .btn-info.dropdown-toggle { - background-color: #2f96b4; -} - -.btn-group.open .btn-inverse.dropdown-toggle { - background-color: #222222; -} - -.btn .caret { - margin-top: 8px; - margin-left: 0; -} - -.btn-large .caret { - margin-top: 6px; -} - -.btn-large .caret { - border-top-width: 5px; - border-right-width: 5px; - border-left-width: 5px; -} - -.btn-mini .caret, -.btn-small .caret { - margin-top: 8px; -} - -.dropup .btn-large .caret { - border-bottom-width: 5px; -} - -.btn-primary .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret, -.btn-success .caret, -.btn-inverse .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} - -.btn-group-vertical { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - - *zoom: 1; -} - -.btn-group-vertical > .btn { - display: block; - float: none; - max-width: 100%; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.btn-group-vertical > .btn + .btn { - margin-top: -1px; - margin-left: 0; -} - -.btn-group-vertical > .btn:first-child { - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} - -.btn-group-vertical > .btn:last-child { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} - -.btn-group-vertical > .btn-large:first-child { - -webkit-border-radius: 6px 6px 0 0; - -moz-border-radius: 6px 6px 0 0; - border-radius: 6px 6px 0 0; -} - -.btn-group-vertical > .btn-large:last-child { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} - -.alert { - padding: 8px 35px 8px 14px; - margin-bottom: 20px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - background-color: #fcf8e3; - border: 1px solid #fbeed5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.alert, -.alert h4 { - color: #c09853; -} - -.alert h4 { - margin: 0; -} - -.alert .close { - position: relative; - top: -2px; - right: -21px; - line-height: 20px; -} - -.alert-success { - color: #468847; - background-color: #dff0d8; - border-color: #d6e9c6; -} - -.alert-success h4 { - color: #468847; -} - -.alert-danger, -.alert-error { - color: #b94a48; - background-color: #f2dede; - border-color: #eed3d7; -} - -.alert-danger h4, -.alert-error h4 { - color: #b94a48; -} - -.alert-info { - color: #3a87ad; - background-color: #d9edf7; - border-color: #bce8f1; -} - -.alert-info h4 { - color: #3a87ad; -} - -.alert-block { - padding-top: 14px; - padding-bottom: 14px; -} - -.alert-block > p, -.alert-block > ul { - margin-bottom: 0; -} - -.alert-block p + p { - margin-top: 5px; -} - -.nav { - margin-bottom: 20px; - margin-left: 0; - list-style: none; -} - -.nav > li > a { - display: block; -} - -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} - -.nav > li > a > img { - max-width: none; -} - -.nav > .pull-right { - float: right; -} - -.nav-header { - display: block; - padding: 3px 15px; - font-size: 11px; - font-weight: bold; - line-height: 20px; - color: #999999; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-transform: uppercase; -} - -.nav li + .nav-header { - margin-top: 9px; -} - -.nav-list { - padding-right: 15px; - padding-left: 15px; - margin-bottom: 0; -} - -.nav-list > li > a, -.nav-list .nav-header { - margin-right: -15px; - margin-left: -15px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} - -.nav-list > li > a { - padding: 3px 15px; -} - -.nav-list > .active > a, -.nav-list > .active > a:hover, -.nav-list > .active > a:focus { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - background-color: #0088cc; -} - -.nav-list [class^="icon-"], -.nav-list [class*=" icon-"] { - margin-right: 2px; -} - -.nav-list .divider { - *width: 100%; - height: 1px; - margin: 9px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #ffffff; -} - -.nav-tabs, -.nav-pills { - *zoom: 1; -} - -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { - display: table; - line-height: 0; - content: ""; -} - -.nav-tabs:after, -.nav-pills:after { - clear: both; -} - -.nav-tabs > li, -.nav-pills > li { - float: left; -} - -.nav-tabs > li > a, -.nav-pills > li > a { - padding-right: 12px; - padding-left: 12px; - margin-right: 2px; - line-height: 14px; -} - -.nav-tabs { - border-bottom: 1px solid #ddd; -} - -.nav-tabs > li { - margin-bottom: -1px; -} - -.nav-tabs > li > a { - padding-top: 8px; - padding-bottom: 8px; - line-height: 20px; - border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} - -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - border-color: #eeeeee #eeeeee #dddddd; -} - -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover, -.nav-tabs > .active > a:focus { - color: #555555; - cursor: default; - background-color: #ffffff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} - -.nav-pills > li > a { - padding-top: 8px; - padding-bottom: 8px; - margin-top: 2px; - margin-bottom: 2px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.nav-pills > .active > a, -.nav-pills > .active > a:hover, -.nav-pills > .active > a:focus { - color: #ffffff; - background-color: #0088cc; -} - -.nav-stacked > li { - float: none; -} - -.nav-stacked > li > a { - margin-right: 0; -} - -.nav-tabs.nav-stacked { - border-bottom: 0; -} - -.nav-tabs.nav-stacked > li > a { - border: 1px solid #ddd; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.nav-tabs.nav-stacked > li:first-child > a { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-topleft: 4px; -} - -.nav-tabs.nav-stacked > li:last-child > a { - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; -} - -.nav-tabs.nav-stacked > li > a:hover, -.nav-tabs.nav-stacked > li > a:focus { - z-index: 2; - border-color: #ddd; -} - -.nav-pills.nav-stacked > li > a { - margin-bottom: 3px; -} - -.nav-pills.nav-stacked > li:last-child > a { - margin-bottom: 1px; -} - -.nav-tabs .dropdown-menu { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; -} - -.nav-pills .dropdown-menu { - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.nav .dropdown-toggle .caret { - margin-top: 6px; - border-top-color: #0088cc; - border-bottom-color: #0088cc; -} - -.nav .dropdown-toggle:hover .caret, -.nav .dropdown-toggle:focus .caret { - border-top-color: #005580; - border-bottom-color: #005580; -} - -/* move down carets for tabs */ - -.nav-tabs .dropdown-toggle .caret { - margin-top: 8px; -} - -.nav .active .dropdown-toggle .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} - -.nav-tabs .active .dropdown-toggle .caret { - border-top-color: #555555; - border-bottom-color: #555555; -} - -.nav > .dropdown.active > a:hover, -.nav > .dropdown.active > a:focus { - cursor: pointer; -} - -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > li.dropdown.open.active > a:hover, -.nav > li.dropdown.open.active > a:focus { - color: #ffffff; - background-color: #999999; - border-color: #999999; -} - -.nav li.dropdown.open .caret, -.nav li.dropdown.open.active .caret, -.nav li.dropdown.open a:hover .caret, -.nav li.dropdown.open a:focus .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; - opacity: 1; - filter: alpha(opacity=100); -} - -.tabs-stacked .open > a:hover, -.tabs-stacked .open > a:focus { - border-color: #999999; -} - -.tabbable { - *zoom: 1; -} - -.tabbable:before, -.tabbable:after { - display: table; - line-height: 0; - content: ""; -} - -.tabbable:after { - clear: both; -} - -.tab-content { - overflow: auto; -} - -.tabs-below > .nav-tabs, -.tabs-right > .nav-tabs, -.tabs-left > .nav-tabs { - border-bottom: 0; -} - -.tab-content > .tab-pane, -.pill-content > .pill-pane { - display: none; -} - -.tab-content > .active, -.pill-content > .active { - display: block; -} - -.tabs-below > .nav-tabs { - border-top: 1px solid #ddd; -} - -.tabs-below > .nav-tabs > li { - margin-top: -1px; - margin-bottom: 0; -} - -.tabs-below > .nav-tabs > li > a { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} - -.tabs-below > .nav-tabs > li > a:hover, -.tabs-below > .nav-tabs > li > a:focus { - border-top-color: #ddd; - border-bottom-color: transparent; -} - -.tabs-below > .nav-tabs > .active > a, -.tabs-below > .nav-tabs > .active > a:hover, -.tabs-below > .nav-tabs > .active > a:focus { - border-color: transparent #ddd #ddd #ddd; -} - -.tabs-left > .nav-tabs > li, -.tabs-right > .nav-tabs > li { - float: none; -} - -.tabs-left > .nav-tabs > li > a, -.tabs-right > .nav-tabs > li > a { - min-width: 74px; - margin-right: 0; - margin-bottom: 3px; -} - -.tabs-left > .nav-tabs { - float: left; - margin-right: 19px; - border-right: 1px solid #ddd; -} - -.tabs-left > .nav-tabs > li > a { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.tabs-left > .nav-tabs > li > a:hover, -.tabs-left > .nav-tabs > li > a:focus { - border-color: #eeeeee #dddddd #eeeeee #eeeeee; -} - -.tabs-left > .nav-tabs .active > a, -.tabs-left > .nav-tabs .active > a:hover, -.tabs-left > .nav-tabs .active > a:focus { - border-color: #ddd transparent #ddd #ddd; - *border-right-color: #ffffff; -} - -.tabs-right > .nav-tabs { - float: right; - margin-left: 19px; - border-left: 1px solid #ddd; -} - -.tabs-right > .nav-tabs > li > a { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.tabs-right > .nav-tabs > li > a:hover, -.tabs-right > .nav-tabs > li > a:focus { - border-color: #eeeeee #eeeeee #eeeeee #dddddd; -} - -.tabs-right > .nav-tabs .active > a, -.tabs-right > .nav-tabs .active > a:hover, -.tabs-right > .nav-tabs .active > a:focus { - border-color: #ddd #ddd #ddd transparent; - *border-left-color: #ffffff; -} - -.nav > .disabled > a { - color: #999999; -} - -.nav > .disabled > a:hover, -.nav > .disabled > a:focus { - text-decoration: none; - cursor: default; - background-color: transparent; -} - -.navbar { - *position: relative; - *z-index: 2; - margin-bottom: 20px; - overflow: visible; -} - -.navbar-inner { - min-height: 40px; - padding-right: 20px; - padding-left: 20px; - background-color: #fafafa; - background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); - background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); - background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); - background-repeat: repeat-x; - border: 1px solid #d4d4d4; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); - *zoom: 1; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); -} - -.navbar-inner:before, -.navbar-inner:after { - display: table; - line-height: 0; - content: ""; -} - -.navbar-inner:after { - clear: both; -} - -.navbar .container { - width: auto; -} - -.nav-collapse.collapse { - height: auto; - overflow: visible; -} - -.navbar .brand { - display: block; - float: left; - padding: 10px 20px 10px; - margin-left: -20px; - font-size: 20px; - font-weight: 200; - color: #777777; - text-shadow: 0 1px 0 #ffffff; -} - -.navbar .brand:hover, -.navbar .brand:focus { - text-decoration: none; -} - -.navbar-text { - margin-bottom: 0; - line-height: 40px; - color: #777777; -} - -.navbar-link { - color: #777777; -} - -.navbar-link:hover, -.navbar-link:focus { - color: #333333; -} - -.navbar .divider-vertical { - height: 40px; - margin: 0 9px; - border-right: 1px solid #ffffff; - border-left: 1px solid #f2f2f2; -} - -.navbar .btn, -.navbar .btn-group { - margin-top: 5px; -} - -.navbar .btn-group .btn, -.navbar .input-prepend .btn, -.navbar .input-append .btn, -.navbar .input-prepend .btn-group, -.navbar .input-append .btn-group { - margin-top: 0; -} - -.navbar-form { - margin-bottom: 0; - *zoom: 1; -} - -.navbar-form:before, -.navbar-form:after { - display: table; - line-height: 0; - content: ""; -} - -.navbar-form:after { - clear: both; -} - -.navbar-form input, -.navbar-form select, -.navbar-form .radio, -.navbar-form .checkbox { - margin-top: 5px; -} - -.navbar-form input, -.navbar-form select, -.navbar-form .btn { - display: inline-block; - margin-bottom: 0; -} - -.navbar-form input[type="image"], -.navbar-form input[type="checkbox"], -.navbar-form input[type="radio"] { - margin-top: 3px; -} - -.navbar-form .input-append, -.navbar-form .input-prepend { - margin-top: 5px; - white-space: nowrap; -} - -.navbar-form .input-append input, -.navbar-form .input-prepend input { - margin-top: 0; -} - -.navbar-search { - position: relative; - float: left; - margin-top: 5px; - margin-bottom: 0; -} - -.navbar-search .search-query { - padding: 4px 14px; - margin-bottom: 0; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: 1; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} - -.navbar-static-top { - position: static; - margin-bottom: 0; -} - -.navbar-static-top .navbar-inner { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; - margin-bottom: 0; -} - -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - border-width: 0 0 1px; -} - -.navbar-fixed-bottom .navbar-inner { - border-width: 1px 0 0; -} - -.navbar-fixed-top .navbar-inner, -.navbar-fixed-bottom .navbar-inner { - padding-right: 0; - padding-left: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} - -.navbar-fixed-top { - top: 0; -} - -.navbar-fixed-top .navbar-inner, -.navbar-static-top .navbar-inner { - -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); -} - -.navbar-fixed-bottom { - bottom: 0; -} - -.navbar-fixed-bottom .navbar-inner { - -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); -} - -.navbar .nav { - position: relative; - left: 0; - display: block; - float: left; - margin: 0 10px 0 0; -} - -.navbar .nav.pull-right { - float: right; - margin-right: 0; -} - -.navbar .nav > li { - float: left; -} - -.navbar .nav > li > a { - float: none; - padding: 10px 15px 10px; - color: #777777; - text-decoration: none; - text-shadow: 0 1px 0 #ffffff; -} - -.navbar .nav .dropdown-toggle .caret { - margin-top: 8px; -} - -.navbar .nav > li > a:focus, -.navbar .nav > li > a:hover { - color: #333333; - text-decoration: none; - background-color: transparent; -} - -.navbar .nav > .active > a, -.navbar .nav > .active > a:hover, -.navbar .nav > .active > a:focus { - color: #555555; - text-decoration: none; - background-color: #e5e5e5; - -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -} - -.navbar .btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-right: 5px; - margin-left: 5px; - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #ededed; - *background-color: #e5e5e5; - background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); - background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); - background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); - background-repeat: repeat-x; - border-color: #e5e5e5 #e5e5e5 #bfbfbf; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); -} - -.navbar .btn-navbar:hover, -.navbar .btn-navbar:focus, -.navbar .btn-navbar:active, -.navbar .btn-navbar.active, -.navbar .btn-navbar.disabled, -.navbar .btn-navbar[disabled] { - color: #ffffff; - background-color: #e5e5e5; - *background-color: #d9d9d9; -} - -.navbar .btn-navbar:active, -.navbar .btn-navbar.active { - background-color: #cccccc \9; -} - -.navbar .btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -} - -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} - -.navbar .nav > li > .dropdown-menu:before { - position: absolute; - top: -7px; - left: 9px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.navbar .nav > li > .dropdown-menu:after { - position: absolute; - top: -6px; - left: 10px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #ffffff; - border-left: 6px solid transparent; - content: ''; -} - -.navbar-fixed-bottom .nav > li > .dropdown-menu:before { - top: auto; - bottom: -7px; - border-top: 7px solid #ccc; - border-bottom: 0; - border-top-color: rgba(0, 0, 0, 0.2); -} - -.navbar-fixed-bottom .nav > li > .dropdown-menu:after { - top: auto; - bottom: -6px; - border-top: 6px solid #ffffff; - border-bottom: 0; -} - -.navbar .nav li.dropdown > a:hover .caret, -.navbar .nav li.dropdown > a:focus .caret { - border-top-color: #333333; - border-bottom-color: #333333; -} - -.navbar .nav li.dropdown.open > .dropdown-toggle, -.navbar .nav li.dropdown.active > .dropdown-toggle, -.navbar .nav li.dropdown.open.active > .dropdown-toggle { - color: #555555; - background-color: #e5e5e5; -} - -.navbar .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #777777; - border-bottom-color: #777777; -} - -.navbar .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #555555; - border-bottom-color: #555555; -} - -.navbar .pull-right > li > .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right { - right: 0; - left: auto; -} - -.navbar .pull-right > li > .dropdown-menu:before, -.navbar .nav > li > .dropdown-menu.pull-right:before { - right: 12px; - left: auto; -} - -.navbar .pull-right > li > .dropdown-menu:after, -.navbar .nav > li > .dropdown-menu.pull-right:after { - right: 13px; - left: auto; -} - -.navbar .pull-right > li > .dropdown-menu .dropdown-menu, -.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { - right: 100%; - left: auto; - margin-right: -1px; - margin-left: 0; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} - -.navbar-inverse .navbar-inner { - background-color: #1b1b1b; - background-image: -moz-linear-gradient(top, #222222, #111111); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); - background-image: -webkit-linear-gradient(top, #222222, #111111); - background-image: -o-linear-gradient(top, #222222, #111111); - background-image: linear-gradient(to bottom, #222222, #111111); - background-repeat: repeat-x; - border-color: #252525; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); -} - -.navbar-inverse .brand, -.navbar-inverse .nav > li > a { - color: #999999; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} - -.navbar-inverse .brand:hover, -.navbar-inverse .nav > li > a:hover, -.navbar-inverse .brand:focus, -.navbar-inverse .nav > li > a:focus { - color: #ffffff; -} - -.navbar-inverse .brand { - color: #999999; -} - -.navbar-inverse .navbar-text { - color: #999999; -} - -.navbar-inverse .nav > li > a:focus, -.navbar-inverse .nav > li > a:hover { - color: #ffffff; - background-color: transparent; -} - -.navbar-inverse .nav .active > a, -.navbar-inverse .nav .active > a:hover, -.navbar-inverse .nav .active > a:focus { - color: #ffffff; - background-color: #111111; -} - -.navbar-inverse .navbar-link { - color: #999999; -} - -.navbar-inverse .navbar-link:hover, -.navbar-inverse .navbar-link:focus { - color: #ffffff; -} - -.navbar-inverse .divider-vertical { - border-right-color: #222222; - border-left-color: #111111; -} - -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { - color: #ffffff; - background-color: #111111; -} - -.navbar-inverse .nav li.dropdown > a:hover .caret, -.navbar-inverse .nav li.dropdown > a:focus .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} - -.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { - border-top-color: #999999; - border-bottom-color: #999999; -} - -.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, -.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} - -.navbar-inverse .navbar-search .search-query { - color: #ffffff; - background-color: #515151; - border-color: #111111; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; -} - -.navbar-inverse .navbar-search .search-query:-moz-placeholder { - color: #cccccc; -} - -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { - color: #cccccc; -} - -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { - color: #cccccc; -} - -.navbar-inverse .navbar-search .search-query:focus, -.navbar-inverse .navbar-search .search-query.focused { - padding: 5px 15px; - color: #333333; - text-shadow: 0 1px 0 #ffffff; - background-color: #ffffff; - border: 0; - outline: 0; - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); -} - -.navbar-inverse .btn-navbar { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e0e0e; - *background-color: #040404; - background-image: -moz-linear-gradient(top, #151515, #040404); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); - background-image: -webkit-linear-gradient(top, #151515, #040404); - background-image: -o-linear-gradient(top, #151515, #040404); - background-image: linear-gradient(to bottom, #151515, #040404); - background-repeat: repeat-x; - border-color: #040404 #040404 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.navbar-inverse .btn-navbar:hover, -.navbar-inverse .btn-navbar:focus, -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active, -.navbar-inverse .btn-navbar.disabled, -.navbar-inverse .btn-navbar[disabled] { - color: #ffffff; - background-color: #040404; - *background-color: #000000; -} - -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active { - background-color: #000000 \9; -} - -.breadcrumb { - padding: 8px 15px; - margin: 0 0 20px; - list-style: none; - background-color: #f5f5f5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.breadcrumb > li { - display: inline-block; - *display: inline; - text-shadow: 0 1px 0 #ffffff; - *zoom: 1; -} - -.breadcrumb > li > .divider { - padding: 0 5px; - color: #ccc; -} - -.breadcrumb > .active { - color: #999999; -} - -.pagination { - margin: 20px 0; -} - -.pagination ul { - display: inline-block; - *display: inline; - margin-bottom: 0; - margin-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *zoom: 1; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.pagination ul > li { - display: inline; -} - -.pagination ul > li > a, -.pagination ul > li > span { - float: left; - padding: 4px 12px; - line-height: 20px; - text-decoration: none; - background-color: #ffffff; - border: 1px solid #dddddd; - border-left-width: 0; -} - -.pagination ul > li > a:hover, -.pagination ul > li > a:focus, -.pagination ul > .active > a, -.pagination ul > .active > span { - background-color: #f5f5f5; -} - -.pagination ul > .active > a, -.pagination ul > .active > span { - color: #999999; - cursor: default; -} - -.pagination ul > .disabled > span, -.pagination ul > .disabled > a, -.pagination ul > .disabled > a:hover, -.pagination ul > .disabled > a:focus { - color: #999999; - cursor: default; - background-color: transparent; -} - -.pagination ul > li:first-child > a, -.pagination ul > li:first-child > span { - border-left-width: 1px; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-topleft: 4px; -} - -.pagination ul > li:last-child > a, -.pagination ul > li:last-child > span { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; -} - -.pagination-centered { - text-align: center; -} - -.pagination-right { - text-align: right; -} - -.pagination-large ul > li > a, -.pagination-large ul > li > span { - padding: 11px 19px; - font-size: 17.5px; -} - -.pagination-large ul > li:first-child > a, -.pagination-large ul > li:first-child > span { - -webkit-border-bottom-left-radius: 6px; - border-bottom-left-radius: 6px; - -webkit-border-top-left-radius: 6px; - border-top-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - -moz-border-radius-topleft: 6px; -} - -.pagination-large ul > li:last-child > a, -.pagination-large ul > li:last-child > span { - -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - border-bottom-right-radius: 6px; - -moz-border-radius-topright: 6px; - -moz-border-radius-bottomright: 6px; -} - -.pagination-mini ul > li:first-child > a, -.pagination-small ul > li:first-child > a, -.pagination-mini ul > li:first-child > span, -.pagination-small ul > li:first-child > span { - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -moz-border-radius-topleft: 3px; -} - -.pagination-mini ul > li:last-child > a, -.pagination-small ul > li:last-child > a, -.pagination-mini ul > li:last-child > span, -.pagination-small ul > li:last-child > span { - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; -} - -.pagination-small ul > li > a, -.pagination-small ul > li > span { - padding: 2px 10px; - font-size: 11.9px; -} - -.pagination-mini ul > li > a, -.pagination-mini ul > li > span { - padding: 0 6px; - font-size: 10.5px; -} - -.pager { - margin: 20px 0; - text-align: center; - list-style: none; - *zoom: 1; -} - -.pager:before, -.pager:after { - display: table; - line-height: 0; - content: ""; -} - -.pager:after { - clear: both; -} - -.pager li { - display: inline; -} - -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} - -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #f5f5f5; -} - -.pager .next > a, -.pager .next > span { - float: right; -} - -.pager .previous > a, -.pager .previous > span { - float: left; -} - -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999999; - cursor: default; - background-color: #fff; -} - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000000; -} - -.modal-backdrop.fade { - opacity: 0; -} - -.modal-backdrop, -.modal-backdrop.fade.in { - opacity: 0.8; - filter: alpha(opacity=80); -} - -.modal { - position: fixed; - top: 10%; - left: 50%; - z-index: 1050; - width: 560px; - margin-left: -280px; - background-color: #ffffff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.3); - *border: 1px solid #999; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - outline: none; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; -} - -.modal.fade { - top: -25%; - -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; - -moz-transition: opacity 0.3s linear, top 0.3s ease-out; - -o-transition: opacity 0.3s linear, top 0.3s ease-out; - transition: opacity 0.3s linear, top 0.3s ease-out; -} - -.modal.fade.in { - top: 10%; -} - -.modal-header { - padding: 9px 15px; - border-bottom: 1px solid #eee; -} - -.modal-header .close { - margin-top: 2px; -} - -.modal-header h3 { - margin: 0; - line-height: 30px; -} - -.modal-body { - position: relative; - max-height: 400px; - padding: 15px; - overflow-y: auto; -} - -.modal-form { - margin-bottom: 0; -} - -.modal-footer { - padding: 14px 15px 15px; - margin-bottom: 0; - text-align: right; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - *zoom: 1; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} - -.modal-footer:before, -.modal-footer:after { - display: table; - line-height: 0; - content: ""; -} - -.modal-footer:after { - clear: both; -} - -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} - -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} - -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} - -.tooltip { - position: absolute; - z-index: 1030; - display: block; - font-size: 11px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); - visibility: visible; -} - -.tooltip.in { - opacity: 0.8; - filter: alpha(opacity=80); -} - -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} - -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} - -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} - -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} - -.tooltip-inner { - max-width: 200px; - padding: 8px; - color: #ffffff; - text-align: center; - text-decoration: none; - background-color: #000000; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-top-color: #000000; - border-width: 5px 5px 0; -} - -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-right-color: #000000; - border-width: 5px 5px 5px 0; -} - -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-left-color: #000000; - border-width: 5px 0 5px 5px; -} - -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-bottom-color: #000000; - border-width: 0 5px 5px; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - white-space: normal; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} - -.popover.top { - margin-top: -10px; -} - -.popover.right { - margin-left: 10px; -} - -.popover.bottom { - margin-top: 10px; -} - -.popover.left { - margin-left: -10px; -} - -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} - -.popover-title:empty { - display: none; -} - -.popover-content { - padding: 9px 14px; -} - -.popover .arrow, -.popover .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.popover .arrow { - border-width: 11px; -} - -.popover .arrow:after { - border-width: 10px; - content: ""; -} - -.popover.top .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - border-bottom-width: 0; -} - -.popover.top .arrow:after { - bottom: 1px; - margin-left: -10px; - border-top-color: #ffffff; - border-bottom-width: 0; -} - -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); - border-left-width: 0; -} - -.popover.right .arrow:after { - bottom: -10px; - left: 1px; - border-right-color: #ffffff; - border-left-width: 0; -} - -.popover.bottom .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); - border-top-width: 0; -} - -.popover.bottom .arrow:after { - top: 1px; - margin-left: -10px; - border-bottom-color: #ffffff; - border-top-width: 0; -} - -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); - border-right-width: 0; -} - -.popover.left .arrow:after { - right: 1px; - bottom: -10px; - border-left-color: #ffffff; - border-right-width: 0; -} - -.thumbnails { - margin-left: -20px; - list-style: none; - *zoom: 1; -} - -.thumbnails:before, -.thumbnails:after { - display: table; - line-height: 0; - content: ""; -} - -.thumbnails:after { - clear: both; -} - -.row-fluid .thumbnails { - margin-left: 0; -} - -.thumbnails > li { - float: left; - margin-bottom: 20px; - margin-left: 20px; -} - -.thumbnail { - display: block; - padding: 4px; - line-height: 20px; - border: 1px solid #ddd; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} - -a.thumbnail:hover, -a.thumbnail:focus { - border-color: #0088cc; - -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -} - -.thumbnail > img { - display: block; - max-width: 100%; - margin-right: auto; - margin-left: auto; -} - -.thumbnail .caption { - padding: 9px; - color: #555555; -} - -.media, -.media-body { - overflow: hidden; - *overflow: visible; - zoom: 1; -} - -.media, -.media .media { - margin-top: 15px; -} - -.media:first-child { - margin-top: 0; -} - -.media-object { - display: block; -} - -.media-heading { - margin: 0 0 5px; -} - -.media > .pull-left { - margin-right: 10px; -} - -.media > .pull-right { - margin-left: 10px; -} - -.media-list { - margin-left: 0; - list-style: none; -} - -.label, -.badge { - display: inline-block; - padding: 2px 4px; - font-size: 11.844px; - font-weight: bold; - line-height: 14px; - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - white-space: nowrap; - vertical-align: baseline; - background-color: #999999; -} - -.label { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.badge { - padding-right: 9px; - padding-left: 9px; - -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; -} - -.label:empty, -.badge:empty { - display: none; -} - -a.label:hover, -a.label:focus, -a.badge:hover, -a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} - -.label-important, -.badge-important { - background-color: #b94a48; -} - -.label-important[href], -.badge-important[href] { - background-color: #953b39; -} - -.label-warning, -.badge-warning { - background-color: #f89406; -} - -.label-warning[href], -.badge-warning[href] { - background-color: #c67605; -} - -.label-success, -.badge-success { - background-color: #468847; -} - -.label-success[href], -.badge-success[href] { - background-color: #356635; -} - -.label-info, -.badge-info { - background-color: #3a87ad; -} - -.label-info[href], -.badge-info[href] { - background-color: #2d6987; -} - -.label-inverse, -.badge-inverse { - background-color: #333333; -} - -.label-inverse[href], -.badge-inverse[href] { - background-color: #1a1a1a; -} - -.btn .label, -.btn .badge { - position: relative; - top: -1px; -} - -.btn-mini .label, -.btn-mini .badge { - top: 0; -} - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -@-ms-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} - -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); - background-repeat: repeat-x; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} - -.progress .bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - color: #ffffff; - text-align: center; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e90d2; - background-image: -moz-linear-gradient(top, #149bdf, #0480be); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); - background-image: -webkit-linear-gradient(top, #149bdf, #0480be); - background-image: -o-linear-gradient(top, #149bdf, #0480be); - background-image: linear-gradient(to bottom, #149bdf, #0480be); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: width 0.6s ease; - -moz-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} - -.progress .bar + .bar { - -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); -} - -.progress-striped .bar { - background-color: #149bdf; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - -moz-background-size: 40px 40px; - -o-background-size: 40px 40px; - background-size: 40px 40px; -} - -.progress.active .bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} - -.progress-danger .bar, -.progress .bar-danger { - background-color: #dd514c; - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); - background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); -} - -.progress-danger.progress-striped .bar, -.progress-striped .bar-danger { - background-color: #ee5f5b; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-success .bar, -.progress .bar-success { - background-color: #5eb95e; - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); - background-image: linear-gradient(to bottom, #62c462, #57a957); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); -} - -.progress-success.progress-striped .bar, -.progress-striped .bar-success { - background-color: #62c462; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-info .bar, -.progress .bar-info { - background-color: #4bb1cf; - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); - background-image: linear-gradient(to bottom, #5bc0de, #339bb9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); -} - -.progress-info.progress-striped .bar, -.progress-striped .bar-info { - background-color: #5bc0de; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-warning .bar, -.progress .bar-warning { - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(to bottom, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); -} - -.progress-warning.progress-striped .bar, -.progress-striped .bar-warning { - background-color: #fbb450; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.accordion { - margin-bottom: 20px; -} - -.accordion-group { - margin-bottom: 2px; - border: 1px solid #e5e5e5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.accordion-heading { - border-bottom: 0; -} - -.accordion-heading .accordion-toggle { - display: block; - padding: 8px 15px; -} - -.accordion-toggle { - cursor: pointer; -} - -.accordion-inner { - padding: 9px 15px; - border-top: 1px solid #e5e5e5; -} - -.carousel { - position: relative; - margin-bottom: 20px; - line-height: 1; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} - -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: 0.6s ease-in-out left; - -moz-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} - -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - line-height: 1; -} - -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} - -.carousel-inner > .active { - left: 0; -} - -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} - -.carousel-inner > .next { - left: 100%; -} - -.carousel-inner > .prev { - left: -100%; -} - -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} - -.carousel-inner > .active.left { - left: -100%; -} - -.carousel-inner > .active.right { - left: 100%; -} - -.carousel-control { - position: absolute; - top: 40%; - left: 15px; - width: 40px; - height: 40px; - margin-top: -20px; - font-size: 60px; - font-weight: 100; - line-height: 30px; - color: #ffffff; - text-align: center; - background: #222222; - border: 3px solid #ffffff; - -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; - opacity: 0.5; - filter: alpha(opacity=50); -} - -.carousel-control.right { - right: 15px; - left: auto; -} - -.carousel-control:hover, -.carousel-control:focus { - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} - -.carousel-indicators { - position: absolute; - top: 15px; - right: 15px; - z-index: 5; - margin: 0; - list-style: none; -} - -.carousel-indicators li { - display: block; - float: left; - width: 10px; - height: 10px; - margin-left: 5px; - text-indent: -999px; - background-color: #ccc; - background-color: rgba(255, 255, 255, 0.25); - border-radius: 5px; -} - -.carousel-indicators .active { - background-color: #fff; -} - -.carousel-caption { - position: absolute; - right: 0; - bottom: 0; - left: 0; - padding: 15px; - background: #333333; - background: rgba(0, 0, 0, 0.75); -} - -.carousel-caption h4, -.carousel-caption p { - line-height: 20px; - color: #ffffff; -} - -.carousel-caption h4 { - margin: 0 0 5px; -} - -.carousel-caption p { - margin-bottom: 0; -} - -.hero-unit { - padding: 60px; - margin-bottom: 30px; - font-size: 18px; - font-weight: 200; - line-height: 30px; - color: inherit; - background-color: #eeeeee; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.hero-unit h1 { - margin-bottom: 0; - font-size: 60px; - line-height: 1; - letter-spacing: -1px; - color: inherit; -} - -.hero-unit li { - line-height: 30px; -} - -.pull-right { - float: right; -} - -.pull-left { - float: left; -} - -.hide { - display: none; -} - -.show { - display: block; -} - -.invisible { - visibility: hidden; -} - -.affix { - position: fixed; -} diff --git a/app/styles/date.css b/app/styles/date.css deleted file mode 100644 index f76a1a6..0000000 --- a/app/styles/date.css +++ /dev/null @@ -1,378 +0,0 @@ -/*! - * Datetimepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ - -.before.after:not(.active){ - background: #2f96b4 linear-gradient(to bottom, #5bc0de, #2f96b4) repeat-x; -} - -.next, .prev{ - font-size: 21px; -} -.datetimepicker table{ - table-layout: fixed; -} - -.datetimepicker { - padding: 4px; - margin-top: 1px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - direction: ltr; - /*.dow { - border-top: 1px solid #ddd !important; - }*/ - -} -.datetimepicker-inline { - width: 220px; -} -.datetimepicker.datetimepicker-rtl { - direction: rtl; -} -.datetimepicker.datetimepicker-rtl table tr td span { - float: right; -} -.datetimepicker-dropdown, .datetimepicker-dropdown-left { - top: 0; - left: 0; -} -[class*=" datetimepicker-dropdown"]: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, 0.2); - position: absolute; -} -[class*=" datetimepicker-dropdown"]:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #ffffff; - position: absolute; -} -[class*=" datetimepicker-dropdown-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, 0.2); - border-bottom: 0; -} -[class*=" datetimepicker-dropdown-top"]:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #ffffff; - border-bottom: 0; -} -.datetimepicker-dropdown-bottom-right:before { - top: -7px; - right: 6px; -} -.datetimepicker-dropdown-bottom-right:after { - top: -6px; - right: 7px; -} -.datetimepicker-dropdown-bottom-left:before { - top: -7px; - left: 6px; -} -.datetimepicker-dropdown-bottom-left:after { - top: -6px; - left: 7px; -} -.datetimepicker-dropdown-top-right:before { - bottom: -7px; - right: 6px; -} -.datetimepicker-dropdown-top-right:after { - bottom: -6px; - right: 7px; -} -.datetimepicker-dropdown-top-left:before { - bottom: -7px; - left: 6px; -} -.datetimepicker-dropdown-top-left:after { - bottom: -6px; - left: 7px; -} -/*.datetimepicker > div {*/ - /*display: none;*/ -/*}*/ -.datetimepicker.minutes div.datetimepicker-minutes { - display: block; -} -.datetimepicker.hours div.datetimepicker-hours { - display: block; -} -.datetimepicker.days div.datetimepicker-days { - display: block; -} -.datetimepicker.months div.datetimepicker-months { - display: block; -} -.datetimepicker.years div.datetimepicker-years { - display: block; -} -.datetimepicker table { - margin: 0; -} -.datetimepicker td, -.datetimepicker th { - text-align: center; - width: 20px; - height: 20px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: none; -} -.table-striped .datetimepicker table tr td, -.table-striped .datetimepicker table tr th { - background-color: transparent; -} -.datetimepicker table tr td.minute:hover { - background: #eeeeee; - cursor: pointer; -} -.datetimepicker table tr td.hour:hover { - background: #eeeeee; - cursor: pointer; -} -.datetimepicker table tr td.day:hover { - background: #eeeeee; - cursor: pointer; -} -.datetimepicker table tr td.old, -.datetimepicker table tr td.new { - color: #999999; -} -.datetimepicker table tr td.disabled, -.datetimepicker table tr td.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datetimepicker table tr td.today, -.datetimepicker table tr td.today:hover, -.datetimepicker table tr td.today.disabled, -.datetimepicker table tr td.today.disabled:hover { - background-color: #fde19a; - background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); - background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); - background-image: linear-gradient(top, #fdd49a, #fdf59a); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); - border-color: #fdf59a #fdf59a #fbed50; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} -.datetimepicker table tr td.today:hover, -.datetimepicker table tr td.today:hover:hover, -.datetimepicker table tr td.today.disabled:hover, -.datetimepicker table tr td.today.disabled:hover:hover, -.datetimepicker table tr td.today:active, -.datetimepicker table tr td.today:hover:active, -.datetimepicker table tr td.today.disabled:active, -.datetimepicker table tr td.today.disabled:hover:active, -.datetimepicker table tr td.today.active, -.datetimepicker table tr td.today:hover.active, -.datetimepicker table tr td.today.disabled.active, -.datetimepicker table tr td.today.disabled:hover.active, -.datetimepicker table tr td.today.disabled, -.datetimepicker table tr td.today:hover.disabled, -.datetimepicker table tr td.today.disabled.disabled, -.datetimepicker table tr td.today.disabled:hover.disabled, -.datetimepicker table tr td.today[disabled], -.datetimepicker table tr td.today:hover[disabled], -.datetimepicker table tr td.today.disabled[disabled], -.datetimepicker table tr td.today.disabled:hover[disabled] { - background-color: #fdf59a; -} -.datetimepicker table tr td.today:active, -.datetimepicker table tr td.today:hover:active, -.datetimepicker table tr td.today.disabled:active, -.datetimepicker table tr td.today.disabled:hover:active, -.datetimepicker table tr td.today.active, -.datetimepicker table tr td.today:hover.active, -.datetimepicker table tr td.today.disabled.active, -.datetimepicker table tr td.today.disabled:hover.active { - background-color: #fbf069 \9; -} -.datetimepicker table tr td.active, -.datetimepicker table tr td.active:hover, -.datetimepicker table tr td.active.disabled, -.datetimepicker table tr td.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datetimepicker table tr td.active:hover, -.datetimepicker table tr td.active:hover:hover, -.datetimepicker table tr td.active.disabled:hover, -.datetimepicker table tr td.active.disabled:hover:hover, -.datetimepicker table tr td.active:active, -.datetimepicker table tr td.active:hover:active, -.datetimepicker table tr td.active.disabled:active, -.datetimepicker table tr td.active.disabled:hover:active, -.datetimepicker table tr td.active.active, -.datetimepicker table tr td.active:hover.active, -.datetimepicker table tr td.active.disabled.active, -.datetimepicker table tr td.active.disabled:hover.active, -.datetimepicker table tr td.active.disabled, -.datetimepicker table tr td.active:hover.disabled, -.datetimepicker table tr td.active.disabled.disabled, -.datetimepicker table tr td.active.disabled:hover.disabled, -.datetimepicker table tr td.active[disabled], -.datetimepicker table tr td.active:hover[disabled], -.datetimepicker table tr td.active.disabled[disabled], -.datetimepicker table tr td.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datetimepicker table tr td.active:active, -.datetimepicker table tr td.active:hover:active, -.datetimepicker table tr td.active.disabled:active, -.datetimepicker table tr td.active.disabled:hover:active, -.datetimepicker table tr td.active.active, -.datetimepicker table tr td.active:hover.active, -.datetimepicker table tr td.active.disabled.active, -.datetimepicker table tr td.active.disabled:hover.active { - background-color: #003399 \9; -} -.datetimepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.datetimepicker .datetimepicker-hours span { - height: 26px; - line-height: 26px; -} -.datetimepicker .datetimepicker-hours table tr td span.hour_am, -.datetimepicker .datetimepicker-hours table tr td span.hour_pm { - width: 14.6%; -} -.datetimepicker .datetimepicker-hours fieldset legend, -.datetimepicker .datetimepicker-minutes fieldset legend { - margin-bottom: inherit; - line-height: 30px; -} -.datetimepicker .datetimepicker-minutes span { - height: 26px; - line-height: 26px; -} -.datetimepicker table tr td span:hover { - background: #eeeeee; -} -.datetimepicker table tr td span.disabled, -.datetimepicker table tr td span.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datetimepicker table tr td span.active, -.datetimepicker table tr td span.active:hover, -.datetimepicker table tr td span.active.disabled, -.datetimepicker table tr td span.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datetimepicker table tr td span.active:hover, -.datetimepicker table tr td span.active:hover:hover, -.datetimepicker table tr td span.active.disabled:hover, -.datetimepicker table tr td span.active.disabled:hover:hover, -.datetimepicker table tr td span.active:active, -.datetimepicker table tr td span.active:hover:active, -.datetimepicker table tr td span.active.disabled:active, -.datetimepicker table tr td span.active.disabled:hover:active, -.datetimepicker table tr td span.active.active, -.datetimepicker table tr td span.active:hover.active, -.datetimepicker table tr td span.active.disabled.active, -.datetimepicker table tr td span.active.disabled:hover.active, -.datetimepicker table tr td span.active.disabled, -.datetimepicker table tr td span.active:hover.disabled, -.datetimepicker table tr td span.active.disabled.disabled, -.datetimepicker table tr td span.active.disabled:hover.disabled, -.datetimepicker table tr td span.active[disabled], -.datetimepicker table tr td span.active:hover[disabled], -.datetimepicker table tr td span.active.disabled[disabled], -.datetimepicker table tr td span.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datetimepicker table tr td span.active:active, -.datetimepicker table tr td span.active:hover:active, -.datetimepicker table tr td span.active.disabled:active, -.datetimepicker table tr td span.active.disabled:hover:active, -.datetimepicker table tr td span.active.active, -.datetimepicker table tr td span.active:hover.active, -.datetimepicker table tr td span.active.disabled.active, -.datetimepicker table tr td span.active.disabled:hover.active { - background-color: #003399 \9; -} -.datetimepicker table tr td span.old { - color: #999999; -} -.datetimepicker th.switch { - width: 145px; -} -.datetimepicker thead tr:first-child th, -.datetimepicker tfoot tr:first-child th { - cursor: pointer; -} -.datetimepicker thead tr:first-child th:hover, -.datetimepicker tfoot tr:first-child th:hover { - background: #eeeeee; -} -.input-append.date .add-on i, -.input-prepend.date .add-on i { - cursor: pointer; - width: 14px; - height: 14px; -} diff --git a/bower.json b/bower.json index 706f5a4..6e0a264 100644 --- a/bower.json +++ b/bower.json @@ -1,10 +1,10 @@ { "name": "angular-datepicker", - "main": ["dist/module.min.js","dist/date.min.css"], + "main": ["module.min.js","date.min.css"], "license": "MIT", "version": "0.0.1", "ignore": [ - "**/.*" + ".gitignore","README.md" ], "dependencies": {}, "devDependencies": { diff --git a/component.json b/component.json deleted file mode 100644 index 3ac71d5..0000000 --- a/component.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "dateInput", - "version": "0.0.0", - "dependencies": { - "angular": "~1.0.5", - "json3": "~3.2.4", - "es5-shim": "~2.0.8" - }, - "devDependencies": { - "angular-mocks": "~1.0.5", - "angular-scenario": "~1.0.5" - } -} diff --git a/dist/index.css b/index.css similarity index 100% rename from dist/index.css rename to index.css diff --git a/dist/index.js b/index.js similarity index 100% rename from dist/index.js rename to index.js diff --git a/dist/index.min.css b/index.min.css similarity index 100% rename from dist/index.min.css rename to index.min.css diff --git a/dist/index.min.js b/index.min.js similarity index 100% rename from dist/index.min.js rename to index.min.js diff --git a/karma-e2e.conf.js b/karma-e2e.conf.js deleted file mode 100644 index 8b92018..0000000 --- a/karma-e2e.conf.js +++ /dev/null @@ -1,51 +0,0 @@ -// Karma E2E configuration - -// base path, that will be used to resolve files and exclude -basePath = ''; - -// list of files / patterns to load in the browser -files = [ - ANGULAR_SCENARIO, - ANGULAR_SCENARIO_ADAPTER, - 'test/e2e/**/*.js' -]; - -// list of files to exclude -exclude = []; - -// test results reporter to use -// possible values: dots || progress || growl -reporters = ['progress']; - -// web server port -port = 8080; - -// cli runner port -runnerPort = 9100; - -// enable / disable colors in the output (reporters and logs) -colors = true; - -// level of logging -// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG -logLevel = LOG_INFO; - -// enable / disable watching file and executing tests whenever any file changes -autoWatch = false; - -// Start these browsers, currently available: -// - Chrome -// - ChromeCanary -// - Firefox -// - Opera -// - Safari (only Mac) -// - PhantomJS -// - IE (only Windows) -browsers = ['Chrome']; - -// If browser does not capture in given timeout [ms], kill it -captureTimeout = 5000; - -// Continuous Integration mode -// if true, it capture browsers, run tests and exit -singleRun = false; diff --git a/karma.conf.js b/karma.conf.js deleted file mode 100644 index 64630d0..0000000 --- a/karma.conf.js +++ /dev/null @@ -1,56 +0,0 @@ -// Karma configuration - -// base path, that will be used to resolve files and exclude -basePath = ''; - -// list of files / patterns to load in the browser -files = [ - JASMINE, - JASMINE_ADAPTER, - 'app/components/angular/angular.js', - 'app/components/angular-mocks/angular-mocks.js', - 'app/scripts/*.js', - 'app/scripts/**/*.js', - 'test/mock/**/*.js', - 'test/spec/**/*.js' -]; - -// list of files to exclude -exclude = []; - -// test results reporter to use -// possible values: dots || progress || growl -reporters = ['progress']; - -// web server port -port = 8080; - -// cli runner port -runnerPort = 9100; - -// enable / disable colors in the output (reporters and logs) -colors = true; - -// level of logging -// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG -logLevel = LOG_INFO; - -// enable / disable watching file and executing tests whenever any file changes -autoWatch = false; - -// Start these browsers, currently available: -// - Chrome -// - ChromeCanary -// - Firefox -// - Opera -// - Safari (only Mac) -// - PhantomJS -// - IE (only Windows) -browsers = ['ChromeCanary']; - -// If browser does not capture in given timeout [ms], kill it -captureTimeout = 5000; - -// Continuous Integration mode -// if true, it capture browsers, run tests and exit -singleRun = false; diff --git a/package.json b/package.json deleted file mode 100644 index 1e685a0..0000000 --- a/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "angular-datepicker", - "version": "0.0.0", - "dependencies": {}, - "devDependencies": { - "grunt": "~0.4.1", - "grunt-contrib-copy": "~0.4.0", - "grunt-contrib-concat": "~0.1.3", - "grunt-contrib-coffee": "~0.6.4", - "grunt-contrib-uglify": "~0.2.0", - "grunt-contrib-compass": "~0.1.3", - "grunt-contrib-jshint": "~0.3.0", - "grunt-contrib-cssmin": "~0.5.0", - "grunt-contrib-connect": "~0.2.0", - "grunt-contrib-clean": "~0.4.0", - "grunt-contrib-htmlmin": "~0.1.1", - "grunt-contrib-imagemin": "~0.1.2", - "grunt-contrib-livereload": "~0.1.2", - "grunt-bower-requirejs": "~0.4.1", - "grunt-usemin": "~0.1.10", - "grunt-regarde": "~0.1.1", - "grunt-rev": "~0.1.0", - "grunt-karma": "~0.3.0", - "grunt-open": "~0.2.0", - "matchdep": "~0.1.1", - "grunt-google-cdn": "~0.1.1", - "grunt-ngmin": "~0.0.2", - "grunt-angular-templates": "~0.3.8" - }, - "engines": { - "node": ">=0.8.0" - } -} diff --git a/test/runner.html b/test/runner.html deleted file mode 100644 index f4a00a1..0000000 --- a/test/runner.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - End2end Test Runner - - - - - - \ No newline at end of file From d66312a81d8856f2bab04d60f9973c789fee2c76 Mon Sep 17 00:00:00 2001 From: g00fy Date: Tue, 18 Jun 2013 22:33:19 +0200 Subject: [PATCH 02/60] updated css to match [date-time] selector (no .datetimepicker class required) removed console.logs reformatted index.html updated bower dependencies (angular-unstable) updated README #2 --- README.md | 16 ++- bower.json | 2 +- index.css | 266 +++++++++++++++++++++++++------------------------- index.js | 18 +--- index.min.css | 2 +- index.min.js | 2 +- 6 files changed, 153 insertions(+), 153 deletions(-) diff --git a/README.md b/README.md index 2e960c2..b4f3038 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,19 @@ # AngularJS datepicker directives -#### Examples +#### Requirements + +- Angular v1.1.4+ +- jQuery or your own implementation of `position()` on top of `jQuery Lite` + + +#### Development version + +Checkout branch `dev`, run `grunt install` and `bower install`. +To build run `gunt build` + +## Examples + +Live demo : http://run.plnkr.co/erJj712N4bbkGsub/ ##### defaults @@ -64,4 +77,3 @@ ```html
``` - diff --git a/bower.json b/bower.json index 6e0a264..4959f00 100644 --- a/bower.json +++ b/bower.json @@ -8,7 +8,7 @@ ], "dependencies": {}, "devDependencies": { - "angular": "~1.0.5", + "angular-unstable": "latest", "json3": "~3.2.4", "es5-shim": "~2.0.8", "jquery": "~2.0.2", diff --git a/index.css b/index.css index f76a1a6..52638f7 100644 --- a/index.css +++ b/index.css @@ -15,11 +15,11 @@ .next, .prev{ font-size: 21px; } -.datetimepicker table{ +[date-picker] table{ table-layout: fixed; } -.datetimepicker { +[date-picker] { padding: 4px; margin-top: 1px; -webkit-border-radius: 4px; @@ -34,10 +34,10 @@ .datetimepicker-inline { width: 220px; } -.datetimepicker.datetimepicker-rtl { +[date-picker].datetimepicker-rtl { direction: rtl; } -.datetimepicker.datetimepicker-rtl table tr td span { +[date-picker].datetimepicker-rtl table tr td span { float: right; } .datetimepicker-dropdown, .datetimepicker-dropdown-left { @@ -113,26 +113,26 @@ /*.datetimepicker > div {*/ /*display: none;*/ /*}*/ -.datetimepicker.minutes div.datetimepicker-minutes { +[date-picker].minutes div.datetimepicker-minutes { display: block; } -.datetimepicker.hours div.datetimepicker-hours { +[date-picker].hours div.datetimepicker-hours { display: block; } -.datetimepicker.days div.datetimepicker-days { +[date-picker].days div.datetimepicker-days { display: block; } -.datetimepicker.months div.datetimepicker-months { +[date-picker].months div.datetimepicker-months { display: block; } -.datetimepicker.years div.datetimepicker-years { +[date-picker].years div.datetimepicker-years { display: block; } -.datetimepicker table { +[date-picker] table { margin: 0; } -.datetimepicker td, -.datetimepicker th { +[date-picker] td, +[date-picker] th { text-align: center; width: 20px; height: 20px; @@ -141,36 +141,36 @@ border-radius: 4px; border: none; } -.table-striped .datetimepicker table tr td, -.table-striped .datetimepicker table tr th { +.table-striped [date-picker] table tr td, +.table-striped [date-picker] table tr th { background-color: transparent; } -.datetimepicker table tr td.minute:hover { +[date-picker] table tr td.minute:hover { background: #eeeeee; cursor: pointer; } -.datetimepicker table tr td.hour:hover { +[date-picker] table tr td.hour:hover { background: #eeeeee; cursor: pointer; } -.datetimepicker table tr td.day:hover { +[date-picker] table tr td.day:hover { background: #eeeeee; cursor: pointer; } -.datetimepicker table tr td.old, -.datetimepicker table tr td.new { +[date-picker] table tr td.old, +[date-picker] table tr td.new { color: #999999; } -.datetimepicker table tr td.disabled, -.datetimepicker table tr td.disabled:hover { +[date-picker] table tr td.disabled, +[date-picker] table tr td.disabled:hover { background: none; color: #999999; cursor: default; } -.datetimepicker table tr td.today, -.datetimepicker table tr td.today:hover, -.datetimepicker table tr td.today.disabled, -.datetimepicker table tr td.today.disabled:hover { +[date-picker] table tr td.today, +[date-picker] table tr td.today:hover, +[date-picker] table tr td.today.disabled, +[date-picker] table tr td.today.disabled:hover { background-color: #fde19a; background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); @@ -184,42 +184,42 @@ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } -.datetimepicker table tr td.today:hover, -.datetimepicker table tr td.today:hover:hover, -.datetimepicker table tr td.today.disabled:hover, -.datetimepicker table tr td.today.disabled:hover:hover, -.datetimepicker table tr td.today:active, -.datetimepicker table tr td.today:hover:active, -.datetimepicker table tr td.today.disabled:active, -.datetimepicker table tr td.today.disabled:hover:active, -.datetimepicker table tr td.today.active, -.datetimepicker table tr td.today:hover.active, -.datetimepicker table tr td.today.disabled.active, -.datetimepicker table tr td.today.disabled:hover.active, -.datetimepicker table tr td.today.disabled, -.datetimepicker table tr td.today:hover.disabled, -.datetimepicker table tr td.today.disabled.disabled, -.datetimepicker table tr td.today.disabled:hover.disabled, -.datetimepicker table tr td.today[disabled], -.datetimepicker table tr td.today:hover[disabled], -.datetimepicker table tr td.today.disabled[disabled], -.datetimepicker table tr td.today.disabled:hover[disabled] { +[date-picker] table tr td.today:hover, +[date-picker] table tr td.today:hover:hover, +[date-picker] table tr td.today.disabled:hover, +[date-picker] table tr td.today.disabled:hover:hover, +[date-picker] table tr td.today:active, +[date-picker] table tr td.today:hover:active, +[date-picker] table tr td.today.disabled:active, +[date-picker] table tr td.today.disabled:hover:active, +[date-picker] table tr td.today.active, +[date-picker] table tr td.today:hover.active, +[date-picker] table tr td.today.disabled.active, +[date-picker] table tr td.today.disabled:hover.active, +[date-picker] table tr td.today.disabled, +[date-picker] table tr td.today:hover.disabled, +[date-picker] table tr td.today.disabled.disabled, +[date-picker] table tr td.today.disabled:hover.disabled, +[date-picker] table tr td.today[disabled], +[date-picker] table tr td.today:hover[disabled], +[date-picker] table tr td.today.disabled[disabled], +[date-picker] table tr td.today.disabled:hover[disabled] { background-color: #fdf59a; } -.datetimepicker table tr td.today:active, -.datetimepicker table tr td.today:hover:active, -.datetimepicker table tr td.today.disabled:active, -.datetimepicker table tr td.today.disabled:hover:active, -.datetimepicker table tr td.today.active, -.datetimepicker table tr td.today:hover.active, -.datetimepicker table tr td.today.disabled.active, -.datetimepicker table tr td.today.disabled:hover.active { +[date-picker] table tr td.today:active, +[date-picker] table tr td.today:hover:active, +[date-picker] table tr td.today.disabled:active, +[date-picker] table tr td.today.disabled:hover:active, +[date-picker] table tr td.today.active, +[date-picker] table tr td.today:hover.active, +[date-picker] table tr td.today.disabled.active, +[date-picker] table tr td.today.disabled:hover.active { background-color: #fbf069 \9; } -.datetimepicker table tr td.active, -.datetimepicker table tr td.active:hover, -.datetimepicker table tr td.active.disabled, -.datetimepicker table tr td.active.disabled:hover { +[date-picker] table tr td.active, +[date-picker] table tr td.active:hover, +[date-picker] table tr td.active.disabled, +[date-picker] table tr td.active.disabled:hover { background-color: #006dcc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -ms-linear-gradient(top, #0088cc, #0044cc); @@ -235,39 +235,39 @@ color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } -.datetimepicker table tr td.active:hover, -.datetimepicker table tr td.active:hover:hover, -.datetimepicker table tr td.active.disabled:hover, -.datetimepicker table tr td.active.disabled:hover:hover, -.datetimepicker table tr td.active:active, -.datetimepicker table tr td.active:hover:active, -.datetimepicker table tr td.active.disabled:active, -.datetimepicker table tr td.active.disabled:hover:active, -.datetimepicker table tr td.active.active, -.datetimepicker table tr td.active:hover.active, -.datetimepicker table tr td.active.disabled.active, -.datetimepicker table tr td.active.disabled:hover.active, -.datetimepicker table tr td.active.disabled, -.datetimepicker table tr td.active:hover.disabled, -.datetimepicker table tr td.active.disabled.disabled, -.datetimepicker table tr td.active.disabled:hover.disabled, -.datetimepicker table tr td.active[disabled], -.datetimepicker table tr td.active:hover[disabled], -.datetimepicker table tr td.active.disabled[disabled], -.datetimepicker table tr td.active.disabled:hover[disabled] { +[date-picker] table tr td.active:hover, +[date-picker] table tr td.active:hover:hover, +[date-picker] table tr td.active.disabled:hover, +[date-picker] table tr td.active.disabled:hover:hover, +[date-picker] table tr td.active:active, +[date-picker] table tr td.active:hover:active, +[date-picker] table tr td.active.disabled:active, +[date-picker] table tr td.active.disabled:hover:active, +[date-picker] table tr td.active.active, +[date-picker] table tr td.active:hover.active, +[date-picker] table tr td.active.disabled.active, +[date-picker] table tr td.active.disabled:hover.active, +[date-picker] table tr td.active.disabled, +[date-picker] table tr td.active:hover.disabled, +[date-picker] table tr td.active.disabled.disabled, +[date-picker] table tr td.active.disabled:hover.disabled, +[date-picker] table tr td.active[disabled], +[date-picker] table tr td.active:hover[disabled], +[date-picker] table tr td.active.disabled[disabled], +[date-picker] table tr td.active.disabled:hover[disabled] { background-color: #0044cc; } -.datetimepicker table tr td.active:active, -.datetimepicker table tr td.active:hover:active, -.datetimepicker table tr td.active.disabled:active, -.datetimepicker table tr td.active.disabled:hover:active, -.datetimepicker table tr td.active.active, -.datetimepicker table tr td.active:hover.active, -.datetimepicker table tr td.active.disabled.active, -.datetimepicker table tr td.active.disabled:hover.active { +[date-picker] table tr td.active:active, +[date-picker] table tr td.active:hover:active, +[date-picker] table tr td.active.disabled:active, +[date-picker] table tr td.active.disabled:hover:active, +[date-picker] table tr td.active.active, +[date-picker] table tr td.active:hover.active, +[date-picker] table tr td.active.disabled.active, +[date-picker] table tr td.active.disabled:hover.active { background-color: #003399 \9; } -.datetimepicker table tr td span { +[date-picker] table tr td span { display: block; width: 23%; height: 54px; @@ -279,36 +279,36 @@ -moz-border-radius: 4px; border-radius: 4px; } -.datetimepicker .datetimepicker-hours span { +[date-picker] .datetimepicker-hours span { height: 26px; line-height: 26px; } -.datetimepicker .datetimepicker-hours table tr td span.hour_am, -.datetimepicker .datetimepicker-hours table tr td span.hour_pm { +[date-picker] .datetimepicker-hours table tr td span.hour_am, +[date-picker] .datetimepicker-hours table tr td span.hour_pm { width: 14.6%; } -.datetimepicker .datetimepicker-hours fieldset legend, -.datetimepicker .datetimepicker-minutes fieldset legend { +[date-picker] .datetimepicker-hours fieldset legend, +[date-picker] .datetimepicker-minutes fieldset legend { margin-bottom: inherit; line-height: 30px; } -.datetimepicker .datetimepicker-minutes span { +[date-picker] .datetimepicker-minutes span { height: 26px; line-height: 26px; } -.datetimepicker table tr td span:hover { +[date-picker] table tr td span:hover { background: #eeeeee; } -.datetimepicker table tr td span.disabled, -.datetimepicker table tr td span.disabled:hover { +[date-picker] table tr td span.disabled, +[date-picker] table tr td span.disabled:hover { background: none; color: #999999; cursor: default; } -.datetimepicker table tr td span.active, -.datetimepicker table tr td span.active:hover, -.datetimepicker table tr td span.active.disabled, -.datetimepicker table tr td span.active.disabled:hover { +[date-picker] table tr td span.active, +[date-picker] table tr td span.active:hover, +[date-picker] table tr td span.active.disabled, +[date-picker] table tr td span.active.disabled:hover { background-color: #006dcc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -ms-linear-gradient(top, #0088cc, #0044cc); @@ -324,50 +324,50 @@ color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } -.datetimepicker table tr td span.active:hover, -.datetimepicker table tr td span.active:hover:hover, -.datetimepicker table tr td span.active.disabled:hover, -.datetimepicker table tr td span.active.disabled:hover:hover, -.datetimepicker table tr td span.active:active, -.datetimepicker table tr td span.active:hover:active, -.datetimepicker table tr td span.active.disabled:active, -.datetimepicker table tr td span.active.disabled:hover:active, -.datetimepicker table tr td span.active.active, -.datetimepicker table tr td span.active:hover.active, -.datetimepicker table tr td span.active.disabled.active, -.datetimepicker table tr td span.active.disabled:hover.active, -.datetimepicker table tr td span.active.disabled, -.datetimepicker table tr td span.active:hover.disabled, -.datetimepicker table tr td span.active.disabled.disabled, -.datetimepicker table tr td span.active.disabled:hover.disabled, -.datetimepicker table tr td span.active[disabled], -.datetimepicker table tr td span.active:hover[disabled], -.datetimepicker table tr td span.active.disabled[disabled], -.datetimepicker table tr td span.active.disabled:hover[disabled] { +[date-picker] table tr td span.active:hover, +[date-picker] table tr td span.active:hover:hover, +[date-picker] table tr td span.active.disabled:hover, +[date-picker] table tr td span.active.disabled:hover:hover, +[date-picker] table tr td span.active:active, +[date-picker] table tr td span.active:hover:active, +[date-picker] table tr td span.active.disabled:active, +[date-picker] table tr td span.active.disabled:hover:active, +[date-picker] table tr td span.active.active, +[date-picker] table tr td span.active:hover.active, +[date-picker] table tr td span.active.disabled.active, +[date-picker] table tr td span.active.disabled:hover.active, +[date-picker] table tr td span.active.disabled, +[date-picker] table tr td span.active:hover.disabled, +[date-picker] table tr td span.active.disabled.disabled, +[date-picker] table tr td span.active.disabled:hover.disabled, +[date-picker] table tr td span.active[disabled], +[date-picker] table tr td span.active:hover[disabled], +[date-picker] table tr td span.active.disabled[disabled], +[date-picker] table tr td span.active.disabled:hover[disabled] { background-color: #0044cc; } -.datetimepicker table tr td span.active:active, -.datetimepicker table tr td span.active:hover:active, -.datetimepicker table tr td span.active.disabled:active, -.datetimepicker table tr td span.active.disabled:hover:active, -.datetimepicker table tr td span.active.active, -.datetimepicker table tr td span.active:hover.active, -.datetimepicker table tr td span.active.disabled.active, -.datetimepicker table tr td span.active.disabled:hover.active { +[date-picker] table tr td span.active:active, +[date-picker] table tr td span.active:hover:active, +[date-picker] table tr td span.active.disabled:active, +[date-picker] table tr td span.active.disabled:hover:active, +[date-picker] table tr td span.active.active, +[date-picker] table tr td span.active:hover.active, +[date-picker] table tr td span.active.disabled.active, +[date-picker] table tr td span.active.disabled:hover.active { background-color: #003399 \9; } -.datetimepicker table tr td span.old { +[date-picker] table tr td span.old { color: #999999; } -.datetimepicker th.switch { +[date-picker] th.switch { width: 145px; } -.datetimepicker thead tr:first-child th, -.datetimepicker tfoot tr:first-child th { +[date-picker] thead tr:first-child th, +[date-picker] tfoot tr:first-child th { cursor: pointer; } -.datetimepicker thead tr:first-child th:hover, -.datetimepicker tfoot tr:first-child th:hover { +[date-picker] thead tr:first-child th:hover, +[date-picker] tfoot tr:first-child th:hover { background: #eeeeee; } .input-append.date .add-on i, diff --git a/index.js b/index.js index e01a998..7c08f6e 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,4 @@ -(function () { +(function (angular) { 'use strict'; var Module = angular.module('dateInput', []); @@ -11,7 +11,6 @@ } function getVisibleMinutes(date) { - console.time('getVisibleMinutes'); date = new Date(date || new Date()); date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours()); var minutes = []; @@ -21,12 +20,10 @@ minutes.push(date); date = new Date(date.getTime() + step * 60 * 1000); } - console.timeEnd('getVisibleMinutes'); return minutes; } function getVisibleWeeks(date) { - console.time('getVisibleWeeks'); date = new Date(date || new Date()); date.setDate(1); date.setHours(0); @@ -53,25 +50,21 @@ } weeks.push(week); } - console.timeEnd('getVisibleWeeks'); return weeks; } function getVisibleYears(date) { - console.time('getVisibleYears'); var years = []; date = new Date(date || new Date()); date.setFullYear(date.getFullYear() - (date.getFullYear() % 10)); for (var i = 0; i < 12; i++) { years.push(new Date(date.getFullYear() + (i - 1), 0, 1)); } - console.timeEnd('getVisibleYears'); return years; } function getDaysOfWeek(date) { - console.time('getDaysOfWeek'); date = new Date(date || new Date()); date = new Date(date.getFullYear(), date.getMonth(), date.getDate()); date.setDate(date.getDate() - (date.getDay() - 1)); @@ -80,24 +73,20 @@ days.push(new Date(date)); date.setDate(date.getDate() + 1); } - console.timeEnd('getDaysOfWeek'); return days; } function getVisibleMonths(date) { - console.time('getVisibleMonths'); date = new Date(date || new Date()); var year = date.getFullYear(); var months = []; for (var month = 0; month < 12; month++) { months.push(new Date(year, month, 1)); } - console.timeEnd('getVisibleMonths'); return months; } function getVisibleHours(date) { - console.time('getVisibleHours'); date = new Date(date || new Date()); date.setHours(0); date.setMinutes(0); @@ -108,7 +97,6 @@ hours.push(date); date = new Date(date.getTime() + 60 * 60 * 1000); } - console.timeEnd('getVisibleHours'); return hours; } @@ -426,7 +414,7 @@ Module.directive('dateRange', function () { return { - template: '
\n \n \n \n \n \n
\n \n \n
', + template: '
\n \n \n \n \n \n
\n \n \n
', scope : { start: '=', end : '=' @@ -445,7 +433,7 @@ } }; }); -})(); +})(angular); angular.module("dateInput").run(["$templateCache", function($templateCache) { $templateCache.put("scripts/template.html", diff --git a/index.min.css b/index.min.css index cb3e23d..ab649eb 100644 --- a/index.min.css +++ b/index.min.css @@ -6,4 +6,4 @@ * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * - */ .before.after:not(.active){background:#2f96b4 linear-gradient(to bottom,#5bc0de,#2f96b4) repeat-x}.next,.prev{font-size:21px}.datetimepicker table{table-layout:fixed}.datetimepicker{padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datetimepicker-inline{width:220px}.datetimepicker.datetimepicker-rtl{direction:rtl}.datetimepicker.datetimepicker-rtl table tr td span{float:right}.datetimepicker-dropdown,.datetimepicker-dropdown-left{top:0;left:0}[class*=" datetimepicker-dropdown"]: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}[class*=" datetimepicker-dropdown"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute}[class*=" datetimepicker-dropdown-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);border-bottom:0}[class*=" datetimepicker-dropdown-top"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;border-bottom:0}.datetimepicker-dropdown-bottom-right:before{top:-7px;right:6px}.datetimepicker-dropdown-bottom-right:after{top:-6px;right:7px}.datetimepicker-dropdown-bottom-left:before{top:-7px;left:6px}.datetimepicker-dropdown-bottom-left:after{top:-6px;left:7px}.datetimepicker-dropdown-top-right:before{bottom:-7px;right:6px}.datetimepicker-dropdown-top-right:after{bottom:-6px;right:7px}.datetimepicker-dropdown-top-left:before{bottom:-7px;left:6px}.datetimepicker-dropdown-top-left:after{bottom:-6px;left:7px}.datetimepicker.minutes div.datetimepicker-minutes{display:block}.datetimepicker.hours div.datetimepicker-hours{display:block}.datetimepicker.days div.datetimepicker-days{display:block}.datetimepicker.months div.datetimepicker-months{display:block}.datetimepicker.years div.datetimepicker-years{display:block}.datetimepicker table{margin:0}.datetimepicker td,.datetimepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}.table-striped .datetimepicker table tr td,.table-striped .datetimepicker table tr th{background-color:transparent}.datetimepicker table tr td.minute:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.hour:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.day:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.old,.datetimepicker table tr td.new{color:#999}.datetimepicker table tr td.disabled,.datetimepicker table tr td.disabled:hover{background:0;color:#999;cursor:default}.datetimepicker table tr td.today,.datetimepicker table tr td.today:hover,.datetimepicker table tr td.today.disabled,.datetimepicker table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(top,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.datetimepicker table tr td.today:hover,.datetimepicker table tr td.today:hover:hover,.datetimepicker table tr td.today.disabled:hover,.datetimepicker table tr td.today.disabled:hover:hover,.datetimepicker table tr td.today:active,.datetimepicker table tr td.today:hover:active,.datetimepicker table tr td.today.disabled:active,.datetimepicker table tr td.today.disabled:hover:active,.datetimepicker table tr td.today.active,.datetimepicker table tr td.today:hover.active,.datetimepicker table tr td.today.disabled.active,.datetimepicker table tr td.today.disabled:hover.active,.datetimepicker table tr td.today.disabled,.datetimepicker table tr td.today:hover.disabled,.datetimepicker table tr td.today.disabled.disabled,.datetimepicker table tr td.today.disabled:hover.disabled,.datetimepicker table tr td.today[disabled],.datetimepicker table tr td.today:hover[disabled],.datetimepicker table tr td.today.disabled[disabled],.datetimepicker table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}.datetimepicker table tr td.today:active,.datetimepicker table tr td.today:hover:active,.datetimepicker table tr td.today.disabled:active,.datetimepicker table tr td.today.disabled:hover:active,.datetimepicker table tr td.today.active,.datetimepicker table tr td.today:hover.active,.datetimepicker table tr td.today.disabled.active,.datetimepicker table tr td.today.disabled:hover.active{background-color:#fbf069 \9}.datetimepicker table tr td.active,.datetimepicker table tr td.active:hover,.datetimepicker table tr td.active.disabled,.datetimepicker table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datetimepicker table tr td.active:hover,.datetimepicker table tr td.active:hover:hover,.datetimepicker table tr td.active.disabled:hover,.datetimepicker table tr td.active.disabled:hover:hover,.datetimepicker table tr td.active:active,.datetimepicker table tr td.active:hover:active,.datetimepicker table tr td.active.disabled:active,.datetimepicker table tr td.active.disabled:hover:active,.datetimepicker table tr td.active.active,.datetimepicker table tr td.active:hover.active,.datetimepicker table tr td.active.disabled.active,.datetimepicker table tr td.active.disabled:hover.active,.datetimepicker table tr td.active.disabled,.datetimepicker table tr td.active:hover.disabled,.datetimepicker table tr td.active.disabled.disabled,.datetimepicker table tr td.active.disabled:hover.disabled,.datetimepicker table tr td.active[disabled],.datetimepicker table tr td.active:hover[disabled],.datetimepicker table tr td.active.disabled[disabled],.datetimepicker table tr td.active.disabled:hover[disabled]{background-color:#04c}.datetimepicker table tr td.active:active,.datetimepicker table tr td.active:hover:active,.datetimepicker table tr td.active.disabled:active,.datetimepicker table tr td.active.disabled:hover:active,.datetimepicker table tr td.active.active,.datetimepicker table tr td.active:hover.active,.datetimepicker table tr td.active.disabled.active,.datetimepicker table tr td.active.disabled:hover.active{background-color:#039 \9}.datetimepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datetimepicker .datetimepicker-hours span{height:26px;line-height:26px}.datetimepicker .datetimepicker-hours table tr td span.hour_am,.datetimepicker .datetimepicker-hours table tr td span.hour_pm{width:14.6%}.datetimepicker .datetimepicker-hours fieldset legend,.datetimepicker .datetimepicker-minutes fieldset legend{margin-bottom:inherit;line-height:30px}.datetimepicker .datetimepicker-minutes span{height:26px;line-height:26px}.datetimepicker table tr td span:hover{background:#eee}.datetimepicker table tr td span.disabled,.datetimepicker table tr td span.disabled:hover{background:0;color:#999;cursor:default}.datetimepicker table tr td span.active,.datetimepicker table tr td span.active:hover,.datetimepicker table tr td span.active.disabled,.datetimepicker table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datetimepicker table tr td span.active:hover,.datetimepicker table tr td span.active:hover:hover,.datetimepicker table tr td span.active.disabled:hover,.datetimepicker table tr td span.active.disabled:hover:hover,.datetimepicker table tr td span.active:active,.datetimepicker table tr td span.active:hover:active,.datetimepicker table tr td span.active.disabled:active,.datetimepicker table tr td span.active.disabled:hover:active,.datetimepicker table tr td span.active.active,.datetimepicker table tr td span.active:hover.active,.datetimepicker table tr td span.active.disabled.active,.datetimepicker table tr td span.active.disabled:hover.active,.datetimepicker table tr td span.active.disabled,.datetimepicker table tr td span.active:hover.disabled,.datetimepicker table tr td span.active.disabled.disabled,.datetimepicker table tr td span.active.disabled:hover.disabled,.datetimepicker table tr td span.active[disabled],.datetimepicker table tr td span.active:hover[disabled],.datetimepicker table tr td span.active.disabled[disabled],.datetimepicker table tr td span.active.disabled:hover[disabled]{background-color:#04c}.datetimepicker table tr td span.active:active,.datetimepicker table tr td span.active:hover:active,.datetimepicker table tr td span.active.disabled:active,.datetimepicker table tr td span.active.disabled:hover:active,.datetimepicker table tr td span.active.active,.datetimepicker table tr td span.active:hover.active,.datetimepicker table tr td span.active.disabled.active,.datetimepicker table tr td span.active.disabled:hover.active{background-color:#039 \9}.datetimepicker table tr td span.old{color:#999}.datetimepicker th.switch{width:145px}.datetimepicker thead tr:first-child th,.datetimepicker tfoot tr:first-child th{cursor:pointer}.datetimepicker thead tr:first-child th:hover,.datetimepicker tfoot tr:first-child th:hover{background:#eee}.input-append.date .add-on i,.input-prepend.date .add-on i{cursor:pointer;width:14px;height:14px} \ No newline at end of file + */ .before.after:not(.active){background:#2f96b4 linear-gradient(to bottom,#5bc0de,#2f96b4) repeat-x}.next,.prev{font-size:21px}[date-picker] table{table-layout:fixed}[date-picker]{padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datetimepicker-inline{width:220px}[date-picker].datetimepicker-rtl{direction:rtl}[date-picker].datetimepicker-rtl table tr td span{float:right}.datetimepicker-dropdown,.datetimepicker-dropdown-left{top:0;left:0}[class*=" datetimepicker-dropdown"]: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}[class*=" datetimepicker-dropdown"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute}[class*=" datetimepicker-dropdown-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);border-bottom:0}[class*=" datetimepicker-dropdown-top"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;border-bottom:0}.datetimepicker-dropdown-bottom-right:before{top:-7px;right:6px}.datetimepicker-dropdown-bottom-right:after{top:-6px;right:7px}.datetimepicker-dropdown-bottom-left:before{top:-7px;left:6px}.datetimepicker-dropdown-bottom-left:after{top:-6px;left:7px}.datetimepicker-dropdown-top-right:before{bottom:-7px;right:6px}.datetimepicker-dropdown-top-right:after{bottom:-6px;right:7px}.datetimepicker-dropdown-top-left:before{bottom:-7px;left:6px}.datetimepicker-dropdown-top-left:after{bottom:-6px;left:7px}[date-picker].minutes div.datetimepicker-minutes{display:block}[date-picker].hours div.datetimepicker-hours{display:block}[date-picker].days div.datetimepicker-days{display:block}[date-picker].months div.datetimepicker-months{display:block}[date-picker].years div.datetimepicker-years{display:block}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}.table-striped [date-picker] table tr td,.table-striped [date-picker] table tr th{background-color:transparent}[date-picker] table tr td.minute:hover{background:#eee;cursor:pointer}[date-picker] table tr td.hour:hover{background:#eee;cursor:pointer}[date-picker] table tr td.day:hover{background:#eee;cursor:pointer}[date-picker] table tr td.old,[date-picker] table tr td.new{color:#999}[date-picker] table tr td.disabled,[date-picker] table tr td.disabled:hover{background:0;color:#999;cursor:default}[date-picker] table tr td.today,[date-picker] table tr td.today:hover,[date-picker] table tr td.today.disabled,[date-picker] table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(top,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] table tr td.today:hover,[date-picker] table tr td.today:hover:hover,[date-picker] table tr td.today.disabled:hover,[date-picker] table tr td.today.disabled:hover:hover,[date-picker] table tr td.today:active,[date-picker] table tr td.today:hover:active,[date-picker] table tr td.today.disabled:active,[date-picker] table tr td.today.disabled:hover:active,[date-picker] table tr td.today.active,[date-picker] table tr td.today:hover.active,[date-picker] table tr td.today.disabled.active,[date-picker] table tr td.today.disabled:hover.active,[date-picker] table tr td.today.disabled,[date-picker] table tr td.today:hover.disabled,[date-picker] table tr td.today.disabled.disabled,[date-picker] table tr td.today.disabled:hover.disabled,[date-picker] table tr td.today[disabled],[date-picker] table tr td.today:hover[disabled],[date-picker] table tr td.today.disabled[disabled],[date-picker] table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}[date-picker] table tr td.today:active,[date-picker] table tr td.today:hover:active,[date-picker] table tr td.today.disabled:active,[date-picker] table tr td.today.disabled:hover:active,[date-picker] table tr td.today.active,[date-picker] table tr td.today:hover.active,[date-picker] table tr td.today.disabled.active,[date-picker] table tr td.today.disabled:hover.active{background-color:#fbf069 \9}[date-picker] table tr td.active,[date-picker] table tr td.active:hover,[date-picker] table tr td.active.disabled,[date-picker] table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] table tr td.active:hover,[date-picker] table tr td.active:hover:hover,[date-picker] table tr td.active.disabled:hover,[date-picker] table tr td.active.disabled:hover:hover,[date-picker] table tr td.active:active,[date-picker] table tr td.active:hover:active,[date-picker] table tr td.active.disabled:active,[date-picker] table tr td.active.disabled:hover:active,[date-picker] table tr td.active.active,[date-picker] table tr td.active:hover.active,[date-picker] table tr td.active.disabled.active,[date-picker] table tr td.active.disabled:hover.active,[date-picker] table tr td.active.disabled,[date-picker] table tr td.active:hover.disabled,[date-picker] table tr td.active.disabled.disabled,[date-picker] table tr td.active.disabled:hover.disabled,[date-picker] table tr td.active[disabled],[date-picker] table tr td.active:hover[disabled],[date-picker] table tr td.active.disabled[disabled],[date-picker] table tr td.active.disabled:hover[disabled]{background-color:#04c}[date-picker] table tr td.active:active,[date-picker] table tr td.active:hover:active,[date-picker] table tr td.active.disabled:active,[date-picker] table tr td.active.disabled:hover:active,[date-picker] table tr td.active.active,[date-picker] table tr td.active:hover.active,[date-picker] table tr td.active.disabled.active,[date-picker] table tr td.active.disabled:hover.active{background-color:#039 \9}[date-picker] table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] .datetimepicker-hours span{height:26px;line-height:26px}[date-picker] .datetimepicker-hours table tr td span.hour_am,[date-picker] .datetimepicker-hours table tr td span.hour_pm{width:14.6%}[date-picker] .datetimepicker-hours fieldset legend,[date-picker] .datetimepicker-minutes fieldset legend{margin-bottom:inherit;line-height:30px}[date-picker] .datetimepicker-minutes span{height:26px;line-height:26px}[date-picker] table tr td span:hover{background:#eee}[date-picker] table tr td span.disabled,[date-picker] table tr td span.disabled:hover{background:0;color:#999;cursor:default}[date-picker] table tr td span.active,[date-picker] table tr td span.active:hover,[date-picker] table tr td span.active.disabled,[date-picker] table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] table tr td span.active:hover,[date-picker] table tr td span.active:hover:hover,[date-picker] table tr td span.active.disabled:hover,[date-picker] table tr td span.active.disabled:hover:hover,[date-picker] table tr td span.active:active,[date-picker] table tr td span.active:hover:active,[date-picker] table tr td span.active.disabled:active,[date-picker] table tr td span.active.disabled:hover:active,[date-picker] table tr td span.active.active,[date-picker] table tr td span.active:hover.active,[date-picker] table tr td span.active.disabled.active,[date-picker] table tr td span.active.disabled:hover.active,[date-picker] table tr td span.active.disabled,[date-picker] table tr td span.active:hover.disabled,[date-picker] table tr td span.active.disabled.disabled,[date-picker] table tr td span.active.disabled:hover.disabled,[date-picker] table tr td span.active[disabled],[date-picker] table tr td span.active:hover[disabled],[date-picker] table tr td span.active.disabled[disabled],[date-picker] table tr td span.active.disabled:hover[disabled]{background-color:#04c}[date-picker] table tr td span.active:active,[date-picker] table tr td span.active:hover:active,[date-picker] table tr td span.active.disabled:active,[date-picker] table tr td span.active.disabled:hover:active,[date-picker] table tr td span.active.active,[date-picker] table tr td span.active:hover.active,[date-picker] table tr td span.active.disabled.active,[date-picker] table tr td span.active.disabled:hover.active{background-color:#039 \9}[date-picker] table tr td span.old{color:#999}[date-picker] th.switch{width:145px}[date-picker] thead tr:first-child th,[date-picker] tfoot tr:first-child th{cursor:pointer}[date-picker] thead tr:first-child th:hover,[date-picker] tfoot tr:first-child th:hover{background:#eee}.input-append.date .add-on i,.input-prepend.date .add-on i{cursor:pointer;width:14px;height:14px} \ No newline at end of file diff --git a/index.min.js b/index.min.js index 4b41437..e6c2382 100644 --- a/index.min.js +++ b/index.min.js @@ -1 +1 @@ -!function(){"use strict";var a=angular.module("dateInput",[]);a.directive("datePicker",function(){function a(a){return a instanceof Date&&!isNaN(a.getTime())}function b(a){console.time("getVisibleMinutes"),a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var b=[],c=5,d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return console.timeEnd("getVisibleWeeks"),b}function d(a){console.time("getVisibleYears");var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return console.timeEnd("getVisibleYears"),b}function e(a){console.time("getDaysOfWeek"),a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return console.timeEnd("getDaysOfWeek"),b}function f(a){console.time("getVisibleMonths"),a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return console.timeEnd("getVisibleMonths"),c}function g(a){console.time("getVisibleHours"),a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return console.timeEnd("getVisibleHours"),b}var h=["month","date","year","month","hours","minutes"];return{scope:{date:"=datePicker",after:"=?",before:"=?"},link:function(i,j,k){function l(a){return-1!==i.views.indexOf(a)}function m(){a(i.date)||(i.date=new Date(2e3,1,1)),i.date=new Date(i.date)}function n(a){m(),i.date.setFullYear(a.getFullYear())}function o(a){n(a),i.date.setMonth(a.getMonth())}function p(a){o(a),i.date.setDate(a.getDate())}function q(a){p(a),i.date.setHours(a.getHours())}function r(a){q(a),i.date.setMinutes(a.getMinutes())}function s(){return i.date instanceof Date}i.views=[];for(var t in k)-1!==h.indexOf(t)&&i.views.push(t);i.views.length||(i.views=["date","month","year","hours","minutes"]),i.view=i.views[0],i.setYear=function(a){n(a),i.$emit("setYear",a)},i.setMonth=function(a){o(a),i.$emit("setMonth",a)},i.setDate=function(a){p(a),i.$emit("setDate",a)},i.setHours=function(a){q(a),i.$emit("setHours",a)},i.setMinutes=function(a){r(a),i.$emit("setMinutes",a)},i.setView=function(a){if(l(a))switch(i.view=a,a){case"minutes":i.minutes=b(i.visibleDate);break;case"hours":i.hours=g(i.visibleDate);break;case"date":i.weeks=c(i.visibleDate);break;case"month":i.months=f(i.visibleDate);break;case"year":i.years=d(i.visibleDate)}},i.nextMonth=function(a){i.visibleDate.setMonth(i.visibleDate.getMonth()+(a||1))},i.prevMonth=function(a){i.nextMonth(-a||-1)},i.nextDay=function(a){i.visibleDate.setDate(i.visibleDate.getDate()+(a||1))},i.prevDay=function(a){i.nextDay(-a||-1)},i.nextHour=function(a){i.visibleDate.setHours(i.visibleDate.getHours()+(a||1))},i.prevHour=function(a){i.nextHour(-a||-1)},i.nextYear=function(a){i.visibleDate.setFullYear(i.visibleDate.getFullYear()+(a||1))},i.prevYear=function(a){i.nextYear(-a||-1)},i.visibleDate=new Date,i.$watch("date",function(a){a&&(i.visibleDate=new Date(a))}),i.isAfter=function(a){return a>=i.after},i.isBefore=function(a){return a<=i.before},i.isSameMinutes=function(a){if(!s())return!1;var b=i.date;return a.getTime()-1e3*a.getSeconds()-a.getMilliseconds()===b.getTime()-1e3*b.getSeconds()-b.getMilliseconds()},i.isSameMonth=function(a){return s()?a.getFullYear()===i.date.getFullYear()&&a.getMonth()===i.date.getMonth():!1},i.isSameYear=function(a){return s()?a.getFullYear()===i.date.getFullYear():!1},i.isSameDate=function(a){return s()?i.date.getDate()===a.getDate()&&i.isSameMonth(a):!1},i.isSameHour=function(a){return s()?i.date.getHours()===a.getHours()&&i.isSameDate(a):!1},i.isOldMonth=function(a){return a.getTime()i.visibleDate.getTime()&&a.getHours()!==i.visibleDate.getHours()},i.isOldHour=function(a){return a.getTime()i.visibleDate.getTime()&&a.getMonth()!==i.visibleDate.getMonth()},i.$on("setDate",i.setView.bind(null,"hours")),i.$on("setMonth",i.setView.bind(null,"date")),i.$on("setHours",i.setView.bind(null,"minutes")),i.$on("setYear",i.setView.bind(null,"month")),i.$watch(function(){return a(i.visibleDate)},function(a){a||(i.visibleDate=new Date)}),i.$watch("[visibleDate.getDate(),visibleDate.getHours()].join()",function(){"hours"===i.view&&(i.hours=g(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()",function(){"date"===i.view&&(i.weeks=c(i.visibleDate),i.weekdays=e(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth()].join()",function(){"month"===i.view&&(i.months=f(i.visibleDate))}),i.$watch("visibleDate.getYear()",function(){"year"===i.view&&(i.years=d(i.visibleDate))}),i.$watch("visibleDate.getTime()",function(){"minutes"===i.view&&(i.minutes=b(i.visibleDate))})},transclude:!0,replace:!0,templateUrl:"scripts/template.html"}}),a.directive("dateTime",["$compile","$document","$filter",function(a,b,c){var d=b.find("body"),e=c("date");return{require:"ngModel",link:function(b,c,f,g){function h(a){return e(a,i)}var i=f.format||"yyyy-MM-dd HH:mm",j=["date","year","month","hours","minutes","month"],k=[];for(var l in f)-1!==j.indexOf(l)&&k.push(l);g.$formatters=[h];var m=null,n=angular.noop;c.bind("focus",function(){if(!m){m=a('")(b),d.append(m),b.$digest();var e=angular.extend({},c.position(),{height:c[0].offsetHeight});m.css({top:e.top+e.height,left:e.left,display:"block",position:"absolute"}),m.bind("mousedown",function(){return!1})}return!1}),c.bind("blur",function(){n(),n=angular.noop,m&&m.remove(),m=null})}}}]),a.directive("dateRange",function(){return{template:'
\n \n \n \n \n \n
\n \n \n
',scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n {{year.getFullYear()}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"yyyy" }}
\r\n {{month|date:\'MMM\'}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy" }}
\r\n {{hour|date:"HH:mm"}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }}\r\n
\r\n {{minute|date:"HH:mm"}}\r\n
\r\n
\r\n')}]); \ No newline at end of file +!function(a){"use strict";var b=a.module("dateInput",[]);b.directive("datePicker",function(){function a(a){return a instanceof Date&&!isNaN(a.getTime())}function b(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var b=[],c=5,d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=["month","date","year","month","hours","minutes"];return{scope:{date:"=datePicker",after:"=?",before:"=?"},link:function(i,j,k){function l(a){return-1!==i.views.indexOf(a)}function m(){a(i.date)||(i.date=new Date(2e3,1,1)),i.date=new Date(i.date)}function n(a){m(),i.date.setFullYear(a.getFullYear())}function o(a){n(a),i.date.setMonth(a.getMonth())}function p(a){o(a),i.date.setDate(a.getDate())}function q(a){p(a),i.date.setHours(a.getHours())}function r(a){q(a),i.date.setMinutes(a.getMinutes())}function s(){return i.date instanceof Date}i.views=[];for(var t in k)-1!==h.indexOf(t)&&i.views.push(t);i.views.length||(i.views=["date","month","year","hours","minutes"]),i.view=i.views[0],i.setYear=function(a){n(a),i.$emit("setYear",a)},i.setMonth=function(a){o(a),i.$emit("setMonth",a)},i.setDate=function(a){p(a),i.$emit("setDate",a)},i.setHours=function(a){q(a),i.$emit("setHours",a)},i.setMinutes=function(a){r(a),i.$emit("setMinutes",a)},i.setView=function(a){if(l(a))switch(i.view=a,a){case"minutes":i.minutes=b(i.visibleDate);break;case"hours":i.hours=g(i.visibleDate);break;case"date":i.weeks=c(i.visibleDate);break;case"month":i.months=f(i.visibleDate);break;case"year":i.years=d(i.visibleDate)}},i.nextMonth=function(a){i.visibleDate.setMonth(i.visibleDate.getMonth()+(a||1))},i.prevMonth=function(a){i.nextMonth(-a||-1)},i.nextDay=function(a){i.visibleDate.setDate(i.visibleDate.getDate()+(a||1))},i.prevDay=function(a){i.nextDay(-a||-1)},i.nextHour=function(a){i.visibleDate.setHours(i.visibleDate.getHours()+(a||1))},i.prevHour=function(a){i.nextHour(-a||-1)},i.nextYear=function(a){i.visibleDate.setFullYear(i.visibleDate.getFullYear()+(a||1))},i.prevYear=function(a){i.nextYear(-a||-1)},i.visibleDate=new Date,i.$watch("date",function(a){a&&(i.visibleDate=new Date(a))}),i.isAfter=function(a){return a>=i.after},i.isBefore=function(a){return a<=i.before},i.isSameMinutes=function(a){if(!s())return!1;var b=i.date;return a.getTime()-1e3*a.getSeconds()-a.getMilliseconds()===b.getTime()-1e3*b.getSeconds()-b.getMilliseconds()},i.isSameMonth=function(a){return s()?a.getFullYear()===i.date.getFullYear()&&a.getMonth()===i.date.getMonth():!1},i.isSameYear=function(a){return s()?a.getFullYear()===i.date.getFullYear():!1},i.isSameDate=function(a){return s()?i.date.getDate()===a.getDate()&&i.isSameMonth(a):!1},i.isSameHour=function(a){return s()?i.date.getHours()===a.getHours()&&i.isSameDate(a):!1},i.isOldMonth=function(a){return a.getTime()i.visibleDate.getTime()&&a.getHours()!==i.visibleDate.getHours()},i.isOldHour=function(a){return a.getTime()i.visibleDate.getTime()&&a.getMonth()!==i.visibleDate.getMonth()},i.$on("setDate",i.setView.bind(null,"hours")),i.$on("setMonth",i.setView.bind(null,"date")),i.$on("setHours",i.setView.bind(null,"minutes")),i.$on("setYear",i.setView.bind(null,"month")),i.$watch(function(){return a(i.visibleDate)},function(a){a||(i.visibleDate=new Date)}),i.$watch("[visibleDate.getDate(),visibleDate.getHours()].join()",function(){"hours"===i.view&&(i.hours=g(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()",function(){"date"===i.view&&(i.weeks=c(i.visibleDate),i.weekdays=e(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth()].join()",function(){"month"===i.view&&(i.months=f(i.visibleDate))}),i.$watch("visibleDate.getYear()",function(){"year"===i.view&&(i.years=d(i.visibleDate))}),i.$watch("visibleDate.getTime()",function(){"minutes"===i.view&&(i.minutes=b(i.visibleDate))})},transclude:!0,replace:!0,templateUrl:"scripts/template.html"}}),b.directive("dateTime",["$compile","$document","$filter",function(b,c,d){var e=c.find("body"),f=d("date");return{require:"ngModel",link:function(c,d,g,h){function i(a){return f(a,j)}var j=g.format||"yyyy-MM-dd HH:mm",k=["date","year","month","hours","minutes","month"],l=[];for(var m in g)-1!==k.indexOf(m)&&l.push(m);h.$formatters=[i];var n=null,o=a.noop;d.bind("focus",function(){if(!n){n=b('")(c),e.append(n),c.$digest();var f=a.extend({},d.position(),{height:d[0].offsetHeight});n.css({top:f.top+f.height,left:f.left,display:"block",position:"absolute"}),n.bind("mousedown",function(){return!1})}return!1}),d.bind("blur",function(){o(),o=a.noop,n&&n.remove(),n=null})}}}]),b.directive("dateRange",function(){return{template:'
\n \n \n \n \n \n
\n \n \n
',scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n {{year.getFullYear()}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"yyyy" }}
\r\n {{month|date:\'MMM\'}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy" }}
\r\n {{hour|date:"HH:mm"}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }}\r\n
\r\n {{minute|date:"HH:mm"}}\r\n
\r\n
\r\n')}]); \ No newline at end of file From fd8134dd50ee177535e8d71412004f5c24977e0d Mon Sep 17 00:00:00 2001 From: g00fy Date: Thu, 20 Jun 2013 00:29:56 +0200 Subject: [PATCH 03/60] updated module name to datePicker moved templates from `scripts` to `templates` directory more verbose template names updated `translate-z` to higher value - so we don't have conflicts with things like modals unified bower.json with `master` branch unified readme updated `grunt` tasks to copy readme and bower.json --- bower.json | 2 +- index.css | 1 + index.js | 38 ++++++++++++++++++++++++++++++++------ index.min.css | 2 +- index.min.js | 2 +- 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/bower.json b/bower.json index 4959f00..6d4374c 100644 --- a/bower.json +++ b/bower.json @@ -16,4 +16,4 @@ "angular-scenario": "~1.0.5", "angular-bootstrap": "~0.3.0" } -} +} \ No newline at end of file diff --git a/index.css b/index.css index 52638f7..8044a57 100644 --- a/index.css +++ b/index.css @@ -20,6 +20,7 @@ } [date-picker] { + z-index: 11000; /* to avoid bootstrap-modal issues */ padding: 4px; margin-top: 1px; -webkit-border-radius: 4px; diff --git a/index.js b/index.js index 7c08f6e..7afd65d 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ (function (angular) { 'use strict'; - var Module = angular.module('dateInput', []); + var Module = angular.module('datePicker', []); Module.directive('datePicker', function () { @@ -357,7 +357,7 @@ }, transclude : true, replace : true, - templateUrl: 'scripts/template.html' + templateUrl: 'templates/datepicker.html' }; }); @@ -392,7 +392,7 @@ picker = $compile('')(scope); body.append(picker); scope.$digest(); - var pos = angular.extend({}, element.position(), { height: element[0].offsetHeight }); + var pos = angular.extend(element.offset(), { height: element[0].offsetHeight }); picker.css({ top: pos.top + pos.height, left: pos.left, display: 'block', position: 'absolute'}); picker.bind('mousedown', function () { return false; @@ -414,7 +414,7 @@ Module.directive('dateRange', function () { return { - template: '
\n \n \n \n \n \n
\n \n \n
', + templateUrl: 'templates/daterange.html', scope : { start: '=', end : '=' @@ -434,9 +434,9 @@ }; }); })(angular); -angular.module("dateInput").run(["$templateCache", function($templateCache) { +angular.module("datePicker").run(["$templateCache", function($templateCache) { - $templateCache.put("scripts/template.html", + $templateCache.put("templates/datepicker.html", "
\r" + "\n" + "
\r" + @@ -688,4 +688,30 @@ angular.module("dateInput").run(["$templateCache", function($templateCache) { "
" ); + $templateCache.put("templates/daterange.html", + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
" + ); + }]); diff --git a/index.min.css b/index.min.css index ab649eb..9db5c62 100644 --- a/index.min.css +++ b/index.min.css @@ -6,4 +6,4 @@ * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * - */ .before.after:not(.active){background:#2f96b4 linear-gradient(to bottom,#5bc0de,#2f96b4) repeat-x}.next,.prev{font-size:21px}[date-picker] table{table-layout:fixed}[date-picker]{padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datetimepicker-inline{width:220px}[date-picker].datetimepicker-rtl{direction:rtl}[date-picker].datetimepicker-rtl table tr td span{float:right}.datetimepicker-dropdown,.datetimepicker-dropdown-left{top:0;left:0}[class*=" datetimepicker-dropdown"]: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}[class*=" datetimepicker-dropdown"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute}[class*=" datetimepicker-dropdown-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);border-bottom:0}[class*=" datetimepicker-dropdown-top"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;border-bottom:0}.datetimepicker-dropdown-bottom-right:before{top:-7px;right:6px}.datetimepicker-dropdown-bottom-right:after{top:-6px;right:7px}.datetimepicker-dropdown-bottom-left:before{top:-7px;left:6px}.datetimepicker-dropdown-bottom-left:after{top:-6px;left:7px}.datetimepicker-dropdown-top-right:before{bottom:-7px;right:6px}.datetimepicker-dropdown-top-right:after{bottom:-6px;right:7px}.datetimepicker-dropdown-top-left:before{bottom:-7px;left:6px}.datetimepicker-dropdown-top-left:after{bottom:-6px;left:7px}[date-picker].minutes div.datetimepicker-minutes{display:block}[date-picker].hours div.datetimepicker-hours{display:block}[date-picker].days div.datetimepicker-days{display:block}[date-picker].months div.datetimepicker-months{display:block}[date-picker].years div.datetimepicker-years{display:block}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}.table-striped [date-picker] table tr td,.table-striped [date-picker] table tr th{background-color:transparent}[date-picker] table tr td.minute:hover{background:#eee;cursor:pointer}[date-picker] table tr td.hour:hover{background:#eee;cursor:pointer}[date-picker] table tr td.day:hover{background:#eee;cursor:pointer}[date-picker] table tr td.old,[date-picker] table tr td.new{color:#999}[date-picker] table tr td.disabled,[date-picker] table tr td.disabled:hover{background:0;color:#999;cursor:default}[date-picker] table tr td.today,[date-picker] table tr td.today:hover,[date-picker] table tr td.today.disabled,[date-picker] table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(top,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] table tr td.today:hover,[date-picker] table tr td.today:hover:hover,[date-picker] table tr td.today.disabled:hover,[date-picker] table tr td.today.disabled:hover:hover,[date-picker] table tr td.today:active,[date-picker] table tr td.today:hover:active,[date-picker] table tr td.today.disabled:active,[date-picker] table tr td.today.disabled:hover:active,[date-picker] table tr td.today.active,[date-picker] table tr td.today:hover.active,[date-picker] table tr td.today.disabled.active,[date-picker] table tr td.today.disabled:hover.active,[date-picker] table tr td.today.disabled,[date-picker] table tr td.today:hover.disabled,[date-picker] table tr td.today.disabled.disabled,[date-picker] table tr td.today.disabled:hover.disabled,[date-picker] table tr td.today[disabled],[date-picker] table tr td.today:hover[disabled],[date-picker] table tr td.today.disabled[disabled],[date-picker] table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}[date-picker] table tr td.today:active,[date-picker] table tr td.today:hover:active,[date-picker] table tr td.today.disabled:active,[date-picker] table tr td.today.disabled:hover:active,[date-picker] table tr td.today.active,[date-picker] table tr td.today:hover.active,[date-picker] table tr td.today.disabled.active,[date-picker] table tr td.today.disabled:hover.active{background-color:#fbf069 \9}[date-picker] table tr td.active,[date-picker] table tr td.active:hover,[date-picker] table tr td.active.disabled,[date-picker] table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] table tr td.active:hover,[date-picker] table tr td.active:hover:hover,[date-picker] table tr td.active.disabled:hover,[date-picker] table tr td.active.disabled:hover:hover,[date-picker] table tr td.active:active,[date-picker] table tr td.active:hover:active,[date-picker] table tr td.active.disabled:active,[date-picker] table tr td.active.disabled:hover:active,[date-picker] table tr td.active.active,[date-picker] table tr td.active:hover.active,[date-picker] table tr td.active.disabled.active,[date-picker] table tr td.active.disabled:hover.active,[date-picker] table tr td.active.disabled,[date-picker] table tr td.active:hover.disabled,[date-picker] table tr td.active.disabled.disabled,[date-picker] table tr td.active.disabled:hover.disabled,[date-picker] table tr td.active[disabled],[date-picker] table tr td.active:hover[disabled],[date-picker] table tr td.active.disabled[disabled],[date-picker] table tr td.active.disabled:hover[disabled]{background-color:#04c}[date-picker] table tr td.active:active,[date-picker] table tr td.active:hover:active,[date-picker] table tr td.active.disabled:active,[date-picker] table tr td.active.disabled:hover:active,[date-picker] table tr td.active.active,[date-picker] table tr td.active:hover.active,[date-picker] table tr td.active.disabled.active,[date-picker] table tr td.active.disabled:hover.active{background-color:#039 \9}[date-picker] table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] .datetimepicker-hours span{height:26px;line-height:26px}[date-picker] .datetimepicker-hours table tr td span.hour_am,[date-picker] .datetimepicker-hours table tr td span.hour_pm{width:14.6%}[date-picker] .datetimepicker-hours fieldset legend,[date-picker] .datetimepicker-minutes fieldset legend{margin-bottom:inherit;line-height:30px}[date-picker] .datetimepicker-minutes span{height:26px;line-height:26px}[date-picker] table tr td span:hover{background:#eee}[date-picker] table tr td span.disabled,[date-picker] table tr td span.disabled:hover{background:0;color:#999;cursor:default}[date-picker] table tr td span.active,[date-picker] table tr td span.active:hover,[date-picker] table tr td span.active.disabled,[date-picker] table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] table tr td span.active:hover,[date-picker] table tr td span.active:hover:hover,[date-picker] table tr td span.active.disabled:hover,[date-picker] table tr td span.active.disabled:hover:hover,[date-picker] table tr td span.active:active,[date-picker] table tr td span.active:hover:active,[date-picker] table tr td span.active.disabled:active,[date-picker] table tr td span.active.disabled:hover:active,[date-picker] table tr td span.active.active,[date-picker] table tr td span.active:hover.active,[date-picker] table tr td span.active.disabled.active,[date-picker] table tr td span.active.disabled:hover.active,[date-picker] table tr td span.active.disabled,[date-picker] table tr td span.active:hover.disabled,[date-picker] table tr td span.active.disabled.disabled,[date-picker] table tr td span.active.disabled:hover.disabled,[date-picker] table tr td span.active[disabled],[date-picker] table tr td span.active:hover[disabled],[date-picker] table tr td span.active.disabled[disabled],[date-picker] table tr td span.active.disabled:hover[disabled]{background-color:#04c}[date-picker] table tr td span.active:active,[date-picker] table tr td span.active:hover:active,[date-picker] table tr td span.active.disabled:active,[date-picker] table tr td span.active.disabled:hover:active,[date-picker] table tr td span.active.active,[date-picker] table tr td span.active:hover.active,[date-picker] table tr td span.active.disabled.active,[date-picker] table tr td span.active.disabled:hover.active{background-color:#039 \9}[date-picker] table tr td span.old{color:#999}[date-picker] th.switch{width:145px}[date-picker] thead tr:first-child th,[date-picker] tfoot tr:first-child th{cursor:pointer}[date-picker] thead tr:first-child th:hover,[date-picker] tfoot tr:first-child th:hover{background:#eee}.input-append.date .add-on i,.input-prepend.date .add-on i{cursor:pointer;width:14px;height:14px} \ No newline at end of file + */ .before.after:not(.active){background:#2f96b4 linear-gradient(to bottom,#5bc0de,#2f96b4) repeat-x}.next,.prev{font-size:21px}[date-picker] table{table-layout:fixed}[date-picker]{z-index:11000;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datetimepicker-inline{width:220px}[date-picker].datetimepicker-rtl{direction:rtl}[date-picker].datetimepicker-rtl table tr td span{float:right}.datetimepicker-dropdown,.datetimepicker-dropdown-left{top:0;left:0}[class*=" datetimepicker-dropdown"]: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}[class*=" datetimepicker-dropdown"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute}[class*=" datetimepicker-dropdown-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);border-bottom:0}[class*=" datetimepicker-dropdown-top"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;border-bottom:0}.datetimepicker-dropdown-bottom-right:before{top:-7px;right:6px}.datetimepicker-dropdown-bottom-right:after{top:-6px;right:7px}.datetimepicker-dropdown-bottom-left:before{top:-7px;left:6px}.datetimepicker-dropdown-bottom-left:after{top:-6px;left:7px}.datetimepicker-dropdown-top-right:before{bottom:-7px;right:6px}.datetimepicker-dropdown-top-right:after{bottom:-6px;right:7px}.datetimepicker-dropdown-top-left:before{bottom:-7px;left:6px}.datetimepicker-dropdown-top-left:after{bottom:-6px;left:7px}[date-picker].minutes div.datetimepicker-minutes{display:block}[date-picker].hours div.datetimepicker-hours{display:block}[date-picker].days div.datetimepicker-days{display:block}[date-picker].months div.datetimepicker-months{display:block}[date-picker].years div.datetimepicker-years{display:block}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}.table-striped [date-picker] table tr td,.table-striped [date-picker] table tr th{background-color:transparent}[date-picker] table tr td.minute:hover{background:#eee;cursor:pointer}[date-picker] table tr td.hour:hover{background:#eee;cursor:pointer}[date-picker] table tr td.day:hover{background:#eee;cursor:pointer}[date-picker] table tr td.old,[date-picker] table tr td.new{color:#999}[date-picker] table tr td.disabled,[date-picker] table tr td.disabled:hover{background:0;color:#999;cursor:default}[date-picker] table tr td.today,[date-picker] table tr td.today:hover,[date-picker] table tr td.today.disabled,[date-picker] table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(top,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] table tr td.today:hover,[date-picker] table tr td.today:hover:hover,[date-picker] table tr td.today.disabled:hover,[date-picker] table tr td.today.disabled:hover:hover,[date-picker] table tr td.today:active,[date-picker] table tr td.today:hover:active,[date-picker] table tr td.today.disabled:active,[date-picker] table tr td.today.disabled:hover:active,[date-picker] table tr td.today.active,[date-picker] table tr td.today:hover.active,[date-picker] table tr td.today.disabled.active,[date-picker] table tr td.today.disabled:hover.active,[date-picker] table tr td.today.disabled,[date-picker] table tr td.today:hover.disabled,[date-picker] table tr td.today.disabled.disabled,[date-picker] table tr td.today.disabled:hover.disabled,[date-picker] table tr td.today[disabled],[date-picker] table tr td.today:hover[disabled],[date-picker] table tr td.today.disabled[disabled],[date-picker] table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}[date-picker] table tr td.today:active,[date-picker] table tr td.today:hover:active,[date-picker] table tr td.today.disabled:active,[date-picker] table tr td.today.disabled:hover:active,[date-picker] table tr td.today.active,[date-picker] table tr td.today:hover.active,[date-picker] table tr td.today.disabled.active,[date-picker] table tr td.today.disabled:hover.active{background-color:#fbf069 \9}[date-picker] table tr td.active,[date-picker] table tr td.active:hover,[date-picker] table tr td.active.disabled,[date-picker] table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] table tr td.active:hover,[date-picker] table tr td.active:hover:hover,[date-picker] table tr td.active.disabled:hover,[date-picker] table tr td.active.disabled:hover:hover,[date-picker] table tr td.active:active,[date-picker] table tr td.active:hover:active,[date-picker] table tr td.active.disabled:active,[date-picker] table tr td.active.disabled:hover:active,[date-picker] table tr td.active.active,[date-picker] table tr td.active:hover.active,[date-picker] table tr td.active.disabled.active,[date-picker] table tr td.active.disabled:hover.active,[date-picker] table tr td.active.disabled,[date-picker] table tr td.active:hover.disabled,[date-picker] table tr td.active.disabled.disabled,[date-picker] table tr td.active.disabled:hover.disabled,[date-picker] table tr td.active[disabled],[date-picker] table tr td.active:hover[disabled],[date-picker] table tr td.active.disabled[disabled],[date-picker] table tr td.active.disabled:hover[disabled]{background-color:#04c}[date-picker] table tr td.active:active,[date-picker] table tr td.active:hover:active,[date-picker] table tr td.active.disabled:active,[date-picker] table tr td.active.disabled:hover:active,[date-picker] table tr td.active.active,[date-picker] table tr td.active:hover.active,[date-picker] table tr td.active.disabled.active,[date-picker] table tr td.active.disabled:hover.active{background-color:#039 \9}[date-picker] table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] .datetimepicker-hours span{height:26px;line-height:26px}[date-picker] .datetimepicker-hours table tr td span.hour_am,[date-picker] .datetimepicker-hours table tr td span.hour_pm{width:14.6%}[date-picker] .datetimepicker-hours fieldset legend,[date-picker] .datetimepicker-minutes fieldset legend{margin-bottom:inherit;line-height:30px}[date-picker] .datetimepicker-minutes span{height:26px;line-height:26px}[date-picker] table tr td span:hover{background:#eee}[date-picker] table tr td span.disabled,[date-picker] table tr td span.disabled:hover{background:0;color:#999;cursor:default}[date-picker] table tr td span.active,[date-picker] table tr td span.active:hover,[date-picker] table tr td span.active.disabled,[date-picker] table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] table tr td span.active:hover,[date-picker] table tr td span.active:hover:hover,[date-picker] table tr td span.active.disabled:hover,[date-picker] table tr td span.active.disabled:hover:hover,[date-picker] table tr td span.active:active,[date-picker] table tr td span.active:hover:active,[date-picker] table tr td span.active.disabled:active,[date-picker] table tr td span.active.disabled:hover:active,[date-picker] table tr td span.active.active,[date-picker] table tr td span.active:hover.active,[date-picker] table tr td span.active.disabled.active,[date-picker] table tr td span.active.disabled:hover.active,[date-picker] table tr td span.active.disabled,[date-picker] table tr td span.active:hover.disabled,[date-picker] table tr td span.active.disabled.disabled,[date-picker] table tr td span.active.disabled:hover.disabled,[date-picker] table tr td span.active[disabled],[date-picker] table tr td span.active:hover[disabled],[date-picker] table tr td span.active.disabled[disabled],[date-picker] table tr td span.active.disabled:hover[disabled]{background-color:#04c}[date-picker] table tr td span.active:active,[date-picker] table tr td span.active:hover:active,[date-picker] table tr td span.active.disabled:active,[date-picker] table tr td span.active.disabled:hover:active,[date-picker] table tr td span.active.active,[date-picker] table tr td span.active:hover.active,[date-picker] table tr td span.active.disabled.active,[date-picker] table tr td span.active.disabled:hover.active{background-color:#039 \9}[date-picker] table tr td span.old{color:#999}[date-picker] th.switch{width:145px}[date-picker] thead tr:first-child th,[date-picker] tfoot tr:first-child th{cursor:pointer}[date-picker] thead tr:first-child th:hover,[date-picker] tfoot tr:first-child th:hover{background:#eee}.input-append.date .add-on i,.input-prepend.date .add-on i{cursor:pointer;width:14px;height:14px} \ No newline at end of file diff --git a/index.min.js b/index.min.js index e6c2382..a943e3f 100644 --- a/index.min.js +++ b/index.min.js @@ -1 +1 @@ -!function(a){"use strict";var b=a.module("dateInput",[]);b.directive("datePicker",function(){function a(a){return a instanceof Date&&!isNaN(a.getTime())}function b(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var b=[],c=5,d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=["month","date","year","month","hours","minutes"];return{scope:{date:"=datePicker",after:"=?",before:"=?"},link:function(i,j,k){function l(a){return-1!==i.views.indexOf(a)}function m(){a(i.date)||(i.date=new Date(2e3,1,1)),i.date=new Date(i.date)}function n(a){m(),i.date.setFullYear(a.getFullYear())}function o(a){n(a),i.date.setMonth(a.getMonth())}function p(a){o(a),i.date.setDate(a.getDate())}function q(a){p(a),i.date.setHours(a.getHours())}function r(a){q(a),i.date.setMinutes(a.getMinutes())}function s(){return i.date instanceof Date}i.views=[];for(var t in k)-1!==h.indexOf(t)&&i.views.push(t);i.views.length||(i.views=["date","month","year","hours","minutes"]),i.view=i.views[0],i.setYear=function(a){n(a),i.$emit("setYear",a)},i.setMonth=function(a){o(a),i.$emit("setMonth",a)},i.setDate=function(a){p(a),i.$emit("setDate",a)},i.setHours=function(a){q(a),i.$emit("setHours",a)},i.setMinutes=function(a){r(a),i.$emit("setMinutes",a)},i.setView=function(a){if(l(a))switch(i.view=a,a){case"minutes":i.minutes=b(i.visibleDate);break;case"hours":i.hours=g(i.visibleDate);break;case"date":i.weeks=c(i.visibleDate);break;case"month":i.months=f(i.visibleDate);break;case"year":i.years=d(i.visibleDate)}},i.nextMonth=function(a){i.visibleDate.setMonth(i.visibleDate.getMonth()+(a||1))},i.prevMonth=function(a){i.nextMonth(-a||-1)},i.nextDay=function(a){i.visibleDate.setDate(i.visibleDate.getDate()+(a||1))},i.prevDay=function(a){i.nextDay(-a||-1)},i.nextHour=function(a){i.visibleDate.setHours(i.visibleDate.getHours()+(a||1))},i.prevHour=function(a){i.nextHour(-a||-1)},i.nextYear=function(a){i.visibleDate.setFullYear(i.visibleDate.getFullYear()+(a||1))},i.prevYear=function(a){i.nextYear(-a||-1)},i.visibleDate=new Date,i.$watch("date",function(a){a&&(i.visibleDate=new Date(a))}),i.isAfter=function(a){return a>=i.after},i.isBefore=function(a){return a<=i.before},i.isSameMinutes=function(a){if(!s())return!1;var b=i.date;return a.getTime()-1e3*a.getSeconds()-a.getMilliseconds()===b.getTime()-1e3*b.getSeconds()-b.getMilliseconds()},i.isSameMonth=function(a){return s()?a.getFullYear()===i.date.getFullYear()&&a.getMonth()===i.date.getMonth():!1},i.isSameYear=function(a){return s()?a.getFullYear()===i.date.getFullYear():!1},i.isSameDate=function(a){return s()?i.date.getDate()===a.getDate()&&i.isSameMonth(a):!1},i.isSameHour=function(a){return s()?i.date.getHours()===a.getHours()&&i.isSameDate(a):!1},i.isOldMonth=function(a){return a.getTime()i.visibleDate.getTime()&&a.getHours()!==i.visibleDate.getHours()},i.isOldHour=function(a){return a.getTime()i.visibleDate.getTime()&&a.getMonth()!==i.visibleDate.getMonth()},i.$on("setDate",i.setView.bind(null,"hours")),i.$on("setMonth",i.setView.bind(null,"date")),i.$on("setHours",i.setView.bind(null,"minutes")),i.$on("setYear",i.setView.bind(null,"month")),i.$watch(function(){return a(i.visibleDate)},function(a){a||(i.visibleDate=new Date)}),i.$watch("[visibleDate.getDate(),visibleDate.getHours()].join()",function(){"hours"===i.view&&(i.hours=g(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()",function(){"date"===i.view&&(i.weeks=c(i.visibleDate),i.weekdays=e(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth()].join()",function(){"month"===i.view&&(i.months=f(i.visibleDate))}),i.$watch("visibleDate.getYear()",function(){"year"===i.view&&(i.years=d(i.visibleDate))}),i.$watch("visibleDate.getTime()",function(){"minutes"===i.view&&(i.minutes=b(i.visibleDate))})},transclude:!0,replace:!0,templateUrl:"scripts/template.html"}}),b.directive("dateTime",["$compile","$document","$filter",function(b,c,d){var e=c.find("body"),f=d("date");return{require:"ngModel",link:function(c,d,g,h){function i(a){return f(a,j)}var j=g.format||"yyyy-MM-dd HH:mm",k=["date","year","month","hours","minutes","month"],l=[];for(var m in g)-1!==k.indexOf(m)&&l.push(m);h.$formatters=[i];var n=null,o=a.noop;d.bind("focus",function(){if(!n){n=b('")(c),e.append(n),c.$digest();var f=a.extend({},d.position(),{height:d[0].offsetHeight});n.css({top:f.top+f.height,left:f.left,display:"block",position:"absolute"}),n.bind("mousedown",function(){return!1})}return!1}),d.bind("blur",function(){o(),o=a.noop,n&&n.remove(),n=null})}}}]),b.directive("dateRange",function(){return{template:'
\n \n \n \n \n \n
\n \n \n
',scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n {{year.getFullYear()}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"yyyy" }}
\r\n {{month|date:\'MMM\'}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy" }}
\r\n {{hour|date:"HH:mm"}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }}\r\n
\r\n {{minute|date:"HH:mm"}}\r\n
\r\n
\r\n
')}]); \ No newline at end of file +!function(a){"use strict";var b=a.module("datePicker",[]);b.directive("datePicker",function(){function a(a){return a instanceof Date&&!isNaN(a.getTime())}function b(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var b=[],c=5,d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=["month","date","year","month","hours","minutes"];return{scope:{date:"=datePicker",after:"=?",before:"=?"},link:function(i,j,k){function l(a){return-1!==i.views.indexOf(a)}function m(){a(i.date)||(i.date=new Date(2e3,1,1)),i.date=new Date(i.date)}function n(a){m(),i.date.setFullYear(a.getFullYear())}function o(a){n(a),i.date.setMonth(a.getMonth())}function p(a){o(a),i.date.setDate(a.getDate())}function q(a){p(a),i.date.setHours(a.getHours())}function r(a){q(a),i.date.setMinutes(a.getMinutes())}function s(){return i.date instanceof Date}i.views=[];for(var t in k)-1!==h.indexOf(t)&&i.views.push(t);i.views.length||(i.views=["date","month","year","hours","minutes"]),i.view=i.views[0],i.setYear=function(a){n(a),i.$emit("setYear",a)},i.setMonth=function(a){o(a),i.$emit("setMonth",a)},i.setDate=function(a){p(a),i.$emit("setDate",a)},i.setHours=function(a){q(a),i.$emit("setHours",a)},i.setMinutes=function(a){r(a),i.$emit("setMinutes",a)},i.setView=function(a){if(l(a))switch(i.view=a,a){case"minutes":i.minutes=b(i.visibleDate);break;case"hours":i.hours=g(i.visibleDate);break;case"date":i.weeks=c(i.visibleDate);break;case"month":i.months=f(i.visibleDate);break;case"year":i.years=d(i.visibleDate)}},i.nextMonth=function(a){i.visibleDate.setMonth(i.visibleDate.getMonth()+(a||1))},i.prevMonth=function(a){i.nextMonth(-a||-1)},i.nextDay=function(a){i.visibleDate.setDate(i.visibleDate.getDate()+(a||1))},i.prevDay=function(a){i.nextDay(-a||-1)},i.nextHour=function(a){i.visibleDate.setHours(i.visibleDate.getHours()+(a||1))},i.prevHour=function(a){i.nextHour(-a||-1)},i.nextYear=function(a){i.visibleDate.setFullYear(i.visibleDate.getFullYear()+(a||1))},i.prevYear=function(a){i.nextYear(-a||-1)},i.visibleDate=new Date,i.$watch("date",function(a){a&&(i.visibleDate=new Date(a))}),i.isAfter=function(a){return a>=i.after},i.isBefore=function(a){return a<=i.before},i.isSameMinutes=function(a){if(!s())return!1;var b=i.date;return a.getTime()-1e3*a.getSeconds()-a.getMilliseconds()===b.getTime()-1e3*b.getSeconds()-b.getMilliseconds()},i.isSameMonth=function(a){return s()?a.getFullYear()===i.date.getFullYear()&&a.getMonth()===i.date.getMonth():!1},i.isSameYear=function(a){return s()?a.getFullYear()===i.date.getFullYear():!1},i.isSameDate=function(a){return s()?i.date.getDate()===a.getDate()&&i.isSameMonth(a):!1},i.isSameHour=function(a){return s()?i.date.getHours()===a.getHours()&&i.isSameDate(a):!1},i.isOldMonth=function(a){return a.getTime()i.visibleDate.getTime()&&a.getHours()!==i.visibleDate.getHours()},i.isOldHour=function(a){return a.getTime()i.visibleDate.getTime()&&a.getMonth()!==i.visibleDate.getMonth()},i.$on("setDate",i.setView.bind(null,"hours")),i.$on("setMonth",i.setView.bind(null,"date")),i.$on("setHours",i.setView.bind(null,"minutes")),i.$on("setYear",i.setView.bind(null,"month")),i.$watch(function(){return a(i.visibleDate)},function(a){a||(i.visibleDate=new Date)}),i.$watch("[visibleDate.getDate(),visibleDate.getHours()].join()",function(){"hours"===i.view&&(i.hours=g(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()",function(){"date"===i.view&&(i.weeks=c(i.visibleDate),i.weekdays=e(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth()].join()",function(){"month"===i.view&&(i.months=f(i.visibleDate))}),i.$watch("visibleDate.getYear()",function(){"year"===i.view&&(i.years=d(i.visibleDate))}),i.$watch("visibleDate.getTime()",function(){"minutes"===i.view&&(i.minutes=b(i.visibleDate))})},transclude:!0,replace:!0,templateUrl:"templates/datepicker.html"}}),b.directive("dateTime",["$compile","$document","$filter",function(b,c,d){var e=c.find("body"),f=d("date");return{require:"ngModel",link:function(c,d,g,h){function i(a){return f(a,j)}var j=g.format||"yyyy-MM-dd HH:mm",k=["date","year","month","hours","minutes","month"],l=[];for(var m in g)-1!==k.indexOf(m)&&l.push(m);h.$formatters=[i];var n=null,o=a.noop;d.bind("focus",function(){if(!n){n=b('")(c),e.append(n),c.$digest();var f=a.extend(d.offset(),{height:d[0].offsetHeight});n.css({top:f.top+f.height,left:f.left,display:"block",position:"absolute"}),n.bind("mousedown",function(){return!1})}return!1}),d.bind("blur",function(){o(),o=a.noop,n&&n.remove(),n=null})}}}]),b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n {{year.getFullYear()}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"yyyy" }}
\r\n {{month|date:\'MMM\'}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy" }}
\r\n {{hour|date:"HH:mm"}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }}\r\n
\r\n {{minute|date:"HH:mm"}}\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
')}]); \ No newline at end of file From bad4a2969368dffd92be2352edb154878cd9363e Mon Sep 17 00:00:00 2001 From: g00fy Date: Thu, 20 Jun 2013 02:39:59 +0200 Subject: [PATCH 04/60] formatter added to `$formatters` instead of replacing, in order to work with `required` #3 --- index.js | 2 +- index.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 7afd65d..7ea32ac 100644 --- a/index.js +++ b/index.js @@ -382,7 +382,7 @@ return dateFilter(value, format); } - ngModel.$formatters = [formatter]; + ngModel.$formatters.push(formatter); var picker = null; var clear = angular.noop; diff --git a/index.min.js b/index.min.js index a943e3f..5e219e0 100644 --- a/index.min.js +++ b/index.min.js @@ -1 +1 @@ -!function(a){"use strict";var b=a.module("datePicker",[]);b.directive("datePicker",function(){function a(a){return a instanceof Date&&!isNaN(a.getTime())}function b(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var b=[],c=5,d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=["month","date","year","month","hours","minutes"];return{scope:{date:"=datePicker",after:"=?",before:"=?"},link:function(i,j,k){function l(a){return-1!==i.views.indexOf(a)}function m(){a(i.date)||(i.date=new Date(2e3,1,1)),i.date=new Date(i.date)}function n(a){m(),i.date.setFullYear(a.getFullYear())}function o(a){n(a),i.date.setMonth(a.getMonth())}function p(a){o(a),i.date.setDate(a.getDate())}function q(a){p(a),i.date.setHours(a.getHours())}function r(a){q(a),i.date.setMinutes(a.getMinutes())}function s(){return i.date instanceof Date}i.views=[];for(var t in k)-1!==h.indexOf(t)&&i.views.push(t);i.views.length||(i.views=["date","month","year","hours","minutes"]),i.view=i.views[0],i.setYear=function(a){n(a),i.$emit("setYear",a)},i.setMonth=function(a){o(a),i.$emit("setMonth",a)},i.setDate=function(a){p(a),i.$emit("setDate",a)},i.setHours=function(a){q(a),i.$emit("setHours",a)},i.setMinutes=function(a){r(a),i.$emit("setMinutes",a)},i.setView=function(a){if(l(a))switch(i.view=a,a){case"minutes":i.minutes=b(i.visibleDate);break;case"hours":i.hours=g(i.visibleDate);break;case"date":i.weeks=c(i.visibleDate);break;case"month":i.months=f(i.visibleDate);break;case"year":i.years=d(i.visibleDate)}},i.nextMonth=function(a){i.visibleDate.setMonth(i.visibleDate.getMonth()+(a||1))},i.prevMonth=function(a){i.nextMonth(-a||-1)},i.nextDay=function(a){i.visibleDate.setDate(i.visibleDate.getDate()+(a||1))},i.prevDay=function(a){i.nextDay(-a||-1)},i.nextHour=function(a){i.visibleDate.setHours(i.visibleDate.getHours()+(a||1))},i.prevHour=function(a){i.nextHour(-a||-1)},i.nextYear=function(a){i.visibleDate.setFullYear(i.visibleDate.getFullYear()+(a||1))},i.prevYear=function(a){i.nextYear(-a||-1)},i.visibleDate=new Date,i.$watch("date",function(a){a&&(i.visibleDate=new Date(a))}),i.isAfter=function(a){return a>=i.after},i.isBefore=function(a){return a<=i.before},i.isSameMinutes=function(a){if(!s())return!1;var b=i.date;return a.getTime()-1e3*a.getSeconds()-a.getMilliseconds()===b.getTime()-1e3*b.getSeconds()-b.getMilliseconds()},i.isSameMonth=function(a){return s()?a.getFullYear()===i.date.getFullYear()&&a.getMonth()===i.date.getMonth():!1},i.isSameYear=function(a){return s()?a.getFullYear()===i.date.getFullYear():!1},i.isSameDate=function(a){return s()?i.date.getDate()===a.getDate()&&i.isSameMonth(a):!1},i.isSameHour=function(a){return s()?i.date.getHours()===a.getHours()&&i.isSameDate(a):!1},i.isOldMonth=function(a){return a.getTime()i.visibleDate.getTime()&&a.getHours()!==i.visibleDate.getHours()},i.isOldHour=function(a){return a.getTime()i.visibleDate.getTime()&&a.getMonth()!==i.visibleDate.getMonth()},i.$on("setDate",i.setView.bind(null,"hours")),i.$on("setMonth",i.setView.bind(null,"date")),i.$on("setHours",i.setView.bind(null,"minutes")),i.$on("setYear",i.setView.bind(null,"month")),i.$watch(function(){return a(i.visibleDate)},function(a){a||(i.visibleDate=new Date)}),i.$watch("[visibleDate.getDate(),visibleDate.getHours()].join()",function(){"hours"===i.view&&(i.hours=g(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()",function(){"date"===i.view&&(i.weeks=c(i.visibleDate),i.weekdays=e(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth()].join()",function(){"month"===i.view&&(i.months=f(i.visibleDate))}),i.$watch("visibleDate.getYear()",function(){"year"===i.view&&(i.years=d(i.visibleDate))}),i.$watch("visibleDate.getTime()",function(){"minutes"===i.view&&(i.minutes=b(i.visibleDate))})},transclude:!0,replace:!0,templateUrl:"templates/datepicker.html"}}),b.directive("dateTime",["$compile","$document","$filter",function(b,c,d){var e=c.find("body"),f=d("date");return{require:"ngModel",link:function(c,d,g,h){function i(a){return f(a,j)}var j=g.format||"yyyy-MM-dd HH:mm",k=["date","year","month","hours","minutes","month"],l=[];for(var m in g)-1!==k.indexOf(m)&&l.push(m);h.$formatters=[i];var n=null,o=a.noop;d.bind("focus",function(){if(!n){n=b('")(c),e.append(n),c.$digest();var f=a.extend(d.offset(),{height:d[0].offsetHeight});n.css({top:f.top+f.height,left:f.left,display:"block",position:"absolute"}),n.bind("mousedown",function(){return!1})}return!1}),d.bind("blur",function(){o(),o=a.noop,n&&n.remove(),n=null})}}}]),b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n {{year.getFullYear()}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"yyyy" }}
\r\n {{month|date:\'MMM\'}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy" }}
\r\n {{hour|date:"HH:mm"}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }}\r\n
\r\n {{minute|date:"HH:mm"}}\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
')}]); \ No newline at end of file +!function(a){"use strict";var b=a.module("datePicker",[]);b.directive("datePicker",function(){function a(a){return a instanceof Date&&!isNaN(a.getTime())}function b(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var b=[],c=5,d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=["month","date","year","month","hours","minutes"];return{scope:{date:"=datePicker",after:"=?",before:"=?"},link:function(i,j,k){function l(a){return-1!==i.views.indexOf(a)}function m(){a(i.date)||(i.date=new Date(2e3,1,1)),i.date=new Date(i.date)}function n(a){m(),i.date.setFullYear(a.getFullYear())}function o(a){n(a),i.date.setMonth(a.getMonth())}function p(a){o(a),i.date.setDate(a.getDate())}function q(a){p(a),i.date.setHours(a.getHours())}function r(a){q(a),i.date.setMinutes(a.getMinutes())}function s(){return i.date instanceof Date}i.views=[];for(var t in k)-1!==h.indexOf(t)&&i.views.push(t);i.views.length||(i.views=["date","month","year","hours","minutes"]),i.view=i.views[0],i.setYear=function(a){n(a),i.$emit("setYear",a)},i.setMonth=function(a){o(a),i.$emit("setMonth",a)},i.setDate=function(a){p(a),i.$emit("setDate",a)},i.setHours=function(a){q(a),i.$emit("setHours",a)},i.setMinutes=function(a){r(a),i.$emit("setMinutes",a)},i.setView=function(a){if(l(a))switch(i.view=a,a){case"minutes":i.minutes=b(i.visibleDate);break;case"hours":i.hours=g(i.visibleDate);break;case"date":i.weeks=c(i.visibleDate);break;case"month":i.months=f(i.visibleDate);break;case"year":i.years=d(i.visibleDate)}},i.nextMonth=function(a){i.visibleDate.setMonth(i.visibleDate.getMonth()+(a||1))},i.prevMonth=function(a){i.nextMonth(-a||-1)},i.nextDay=function(a){i.visibleDate.setDate(i.visibleDate.getDate()+(a||1))},i.prevDay=function(a){i.nextDay(-a||-1)},i.nextHour=function(a){i.visibleDate.setHours(i.visibleDate.getHours()+(a||1))},i.prevHour=function(a){i.nextHour(-a||-1)},i.nextYear=function(a){i.visibleDate.setFullYear(i.visibleDate.getFullYear()+(a||1))},i.prevYear=function(a){i.nextYear(-a||-1)},i.visibleDate=new Date,i.$watch("date",function(a){a&&(i.visibleDate=new Date(a))}),i.isAfter=function(a){return a>=i.after},i.isBefore=function(a){return a<=i.before},i.isSameMinutes=function(a){if(!s())return!1;var b=i.date;return a.getTime()-1e3*a.getSeconds()-a.getMilliseconds()===b.getTime()-1e3*b.getSeconds()-b.getMilliseconds()},i.isSameMonth=function(a){return s()?a.getFullYear()===i.date.getFullYear()&&a.getMonth()===i.date.getMonth():!1},i.isSameYear=function(a){return s()?a.getFullYear()===i.date.getFullYear():!1},i.isSameDate=function(a){return s()?i.date.getDate()===a.getDate()&&i.isSameMonth(a):!1},i.isSameHour=function(a){return s()?i.date.getHours()===a.getHours()&&i.isSameDate(a):!1},i.isOldMonth=function(a){return a.getTime()i.visibleDate.getTime()&&a.getHours()!==i.visibleDate.getHours()},i.isOldHour=function(a){return a.getTime()i.visibleDate.getTime()&&a.getMonth()!==i.visibleDate.getMonth()},i.$on("setDate",i.setView.bind(null,"hours")),i.$on("setMonth",i.setView.bind(null,"date")),i.$on("setHours",i.setView.bind(null,"minutes")),i.$on("setYear",i.setView.bind(null,"month")),i.$watch(function(){return a(i.visibleDate)},function(a){a||(i.visibleDate=new Date)}),i.$watch("[visibleDate.getDate(),visibleDate.getHours()].join()",function(){"hours"===i.view&&(i.hours=g(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()",function(){"date"===i.view&&(i.weeks=c(i.visibleDate),i.weekdays=e(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth()].join()",function(){"month"===i.view&&(i.months=f(i.visibleDate))}),i.$watch("visibleDate.getYear()",function(){"year"===i.view&&(i.years=d(i.visibleDate))}),i.$watch("visibleDate.getTime()",function(){"minutes"===i.view&&(i.minutes=b(i.visibleDate))})},transclude:!0,replace:!0,templateUrl:"templates/datepicker.html"}}),b.directive("dateTime",["$compile","$document","$filter",function(b,c,d){var e=c.find("body"),f=d("date");return{require:"ngModel",link:function(c,d,g,h){function i(a){return f(a,j)}var j=g.format||"yyyy-MM-dd HH:mm",k=["date","year","month","hours","minutes","month"],l=[];for(var m in g)-1!==k.indexOf(m)&&l.push(m);h.$formatters.push(i);var n=null,o=a.noop;d.bind("focus",function(){if(!n){n=b('")(c),e.append(n),c.$digest();var f=a.extend(d.offset(),{height:d[0].offsetHeight});n.css({top:f.top+f.height,left:f.left,display:"block",position:"absolute"}),n.bind("mousedown",function(){return!1})}return!1}),d.bind("blur",function(){o(),o=a.noop,n&&n.remove(),n=null})}}}]),b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n {{year.getFullYear()}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"yyyy" }}
\r\n {{month|date:\'MMM\'}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy" }}
\r\n {{hour|date:"HH:mm"}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }}\r\n
\r\n {{minute|date:"HH:mm"}}\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
')}]); \ No newline at end of file From 76461f6fc4a56c7fa4002520ab1a8de206c67e3a Mon Sep 17 00:00:00 2001 From: Piotrek Date: Thu, 3 Oct 2013 15:23:44 +0200 Subject: [PATCH 05/60] change dir structure --- .bowerrc | 3 + .editorconfig | 21 + .gitattributes | 1 + .jshintrc | 25 + Gruntfile.js | 193 + app/index.html | 93 + app/scripts/module.js | 441 ++ app/styles/bootstrap.css | 6167 +++++++++++++++++++++++++++ index.css => app/styles/date.css | 0 app/templates/datepicker.html | 127 + app/templates/daterange.html | 12 + bower.json | 12 +- component.json | 13 + dist/README.md | 79 + dist/bower.json | 19 + dist/index.css | 379 ++ index.js => dist/index.js | 421 +- index.min.css => dist/index.min.css | 0 dist/index.min.js | 1 + index.min.js | 1 - karma-e2e.conf.js | 51 + karma.conf.js | 56 + package.json | 33 + test/runner.html | 10 + 24 files changed, 7877 insertions(+), 281 deletions(-) create mode 100644 .bowerrc create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .jshintrc create mode 100644 Gruntfile.js create mode 100644 app/index.html create mode 100644 app/scripts/module.js create mode 100644 app/styles/bootstrap.css rename index.css => app/styles/date.css (100%) create mode 100644 app/templates/datepicker.html create mode 100644 app/templates/daterange.html create mode 100644 component.json create mode 100644 dist/README.md create mode 100644 dist/bower.json create mode 100644 dist/index.css rename index.js => dist/index.js (73%) rename index.min.css => dist/index.min.css (100%) create mode 100644 dist/index.min.js delete mode 100644 index.min.js create mode 100644 karma-e2e.conf.js create mode 100644 karma.conf.js create mode 100644 package.json create mode 100644 test/runner.html diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..f594df7 --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "app/components" +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c2cdfb8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + + +[*] + +# Change these settings to your own preference +indent_style = space +indent_size = 2 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2125666 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto \ No newline at end of file diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..64b7ce8 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,25 @@ +{ + "node": true, + "browser": true, + "es5": true, + "esnext": true, + "bitwise": true, + "camelcase": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "indent": 2, + "latedef": true, + "newcap": true, + "noarg": true, + "quotmark": "single", + "regexp": true, + "undef": true, + "unused": true, + "strict": true, + "trailing": true, + "smarttabs": true, + "globals": { + "angular": false + } +} diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..998d20f --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,193 @@ +'use strict'; +var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet; +var mountFolder = function (connect, dir) { + return connect.static(require('path').resolve(dir)); +}; + +module.exports = function (grunt) { + // load all grunt tasks + require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); + + // configurable paths + var yeomanConfig = { + app : 'app', + dist: 'dist' + }; + + try { + yeomanConfig.app = require('./component.json').appPath || yeomanConfig.app; + } catch (e) { + } + + grunt.initConfig({ + yeoman : yeomanConfig, + watch : { + livereload: { + files: [ + '<%= yeoman.app %>/{,*/}*.html', + '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css', + '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js', + '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' + ], + tasks: ['livereload'] + } + }, + connect: { + options : { + port : 9000, + // Change this to '0.0.0.0' to access the server from outside. + hostname: 'localhost' + }, + livereload: { + options: { + middleware: function (connect) { + return [ + lrSnippet, + mountFolder(connect, '.tmp'), + mountFolder(connect, yeomanConfig.app) + ]; + } + } + }, + test : { + options: { + middleware: function (connect) { + return [ + mountFolder(connect, '.tmp'), + mountFolder(connect, 'test') + ]; + } + } + } + }, + open : { + server: { + url: 'http://localhost:<%= connect.options.port %>' + } + }, + clean : { + dist : { + files: [ + { + dot: false, + src: [ + '.tmp', + '<%= yeoman.dist %>' + ] + } + ] + }, + server: '.tmp' + }, + jshint : { + options: { + jshintrc: '.jshintrc' + }, + all : [ + 'Gruntfile.js', + '<%= yeoman.app %>/scripts/{,*/}*.js' + ] + }, + karma : { + unit: { + configFile: 'karma.conf.js', + singleRun : true + } + }, + cssmin : { + dist: { + expand: true, + cwd : '<%= yeoman.dist %>', + src : ['*.css', '!*.min.css'], + dest : '<%= yeoman.dist %>', + ext : '.min.css' + } + }, + ngmin : { + dist: { + expand: true, + cwd : '<%= yeoman.dist %>', + src : ['*.js', '!*.min.js'], + dest : '<%= yeoman.dist %>', + ext : '.min.js' + } + }, + uglify : { + dist: { + expand: true, + cwd : '<%= yeoman.dist %>', + src : ['*.min.js'], + dest : '<%= yeoman.dist %>', + ext : '.min.js' + } + }, + copy : { + dist: { + files: [ + { + expand : true, + flatten: true, + dot : true, + dest : '<%= yeoman.dist %>', + src : [ + 'README.md', + 'bower.json' + ] + } + ] + } + }, + ngtemplates: { + dist: { + options: { + base : '<%= yeoman.app %>', + module: 'datePicker' + }, + src : '<%= yeoman.app %>/templates/*.html', + dest : '.tmp/templates.js' + } + }, + concat: { + options: { + separator: '\n' + }, + js: { + src: ['<%= yeoman.app %>/scripts/module.js','.tmp/templates.js'], + dest: '<%= yeoman.dist %>/index.js' + }, + css: { + src: ['<%= yeoman.app %>/styles/date.css'], + dest: '<%= yeoman.dist %>/index.css' + } + } + }); + + grunt.renameTask('regarde', 'watch'); + + grunt.registerTask('server', [ + 'clean:server', + 'livereload-start', + 'connect:livereload', + 'open', + 'watch' + ]); + + grunt.registerTask('test', [ + 'clean:server', + 'connect:test', + 'karma' + ]); + + grunt.registerTask('build', [ + 'clean:dist', + 'jshint', + 'ngtemplates', + 'concat', + 'cssmin', + 'ngmin', + 'uglify', + 'copy:dist' + ]); + + grunt.registerTask('default', ['build']); +}; diff --git a/app/index.html b/app/index.html new file mode 100644 index 0000000..89ef06e --- /dev/null +++ b/app/index.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + +
+
+

Calendar

+ +

views

+
default
+
<div date-picker="start"></div> 
+
+
year
+
<div date-picker="start"  year></div> 
+
+
month
+
<div date-picker="start month></div> 
+
+
date
+
<div date-picker="start" date></div> 
+
+
hours
+
<div date-picker="start" hours></div> 
+
+
minutes
+
<div date-picker="start" minutes></div> 
+
+
+
+

Input

+
default
+
<input type="datetime" ng-model="model" date-time></div> 
+ +
Input format
+
<input type="datetime" ng-model="model" date-time format="long"></div> 
+ +
A button
+
<div class="dropdown">
+  <a class="dropdown-toggle btn btn-danger">
+    pick a date: {{(date|date)}}
+  </a>
+  <div class="dropdown-menu" ng-click="$event.preventDefault();$event.stopPropagation()">
+    <div date-picker="date" class="datetimepicker"></div>
+  </div>
+</div>
+ +
Date range
+
<div date-range start="start" end="end" ></div> 
+
+
Date range button
+ + +
+
+ + + + + + + + + + diff --git a/app/scripts/module.js b/app/scripts/module.js new file mode 100644 index 0000000..54d11b3 --- /dev/null +++ b/app/scripts/module.js @@ -0,0 +1,441 @@ +(function (angular) { + 'use strict'; + var Module = angular.module('datePicker', []); + + + Module.directive('datePicker', function () { + var viewOptions = ['month', 'date', 'year', 'month', 'hours', 'minutes']; + + function isValidDate(date) { + return date instanceof Date && !isNaN(date.getTime()); + } + + function getVisibleMinutes(date) { + date = new Date(date || new Date()); + date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours()); + var minutes = []; + var step = 5; + var stop = date.getTime() + 60 * 60 * 1000; + while (date.getTime() < stop) { + minutes.push(date); + date = new Date(date.getTime() + step * 60 * 1000); + } + return minutes; + } + + function getVisibleWeeks(date) { + date = new Date(date || new Date()); + date.setDate(1); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + + if (date.getDay() === 0) { + date.setDate(-5); + } else { + date.setDate(date.getDate() - (date.getDay() - 1)); + } + if (date.getDate() === 1) { + date.setDate(-6); + } + + + var weeks = []; + while (weeks.length < 6) { + var week = []; + for (var i = 0; i < 7; i++) { + week.push(new Date(date)); + date.setDate(date.getDate() + 1); + } + weeks.push(week); + } + return weeks; + } + + function getVisibleYears(date) { + var years = []; + date = new Date(date || new Date()); + date.setFullYear(date.getFullYear() - (date.getFullYear() % 10)); + for (var i = 0; i < 12; i++) { + years.push(new Date(date.getFullYear() + (i - 1), 0, 1)); + } + return years; + } + + function getDaysOfWeek(date) { + date = new Date(date || new Date()); + date = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + date.setDate(date.getDate() - (date.getDay() - 1)); + var days = []; + for (var i = 0; i < 7; i++) { + days.push(new Date(date)); + date.setDate(date.getDate() + 1); + } + return days; + } + + function getVisibleMonths(date) { + date = new Date(date || new Date()); + var year = date.getFullYear(); + var months = []; + for (var month = 0; month < 12; month++) { + months.push(new Date(year, month, 1)); + } + return months; + } + + function getVisibleHours(date) { + date = new Date(date || new Date()); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + var hours = []; + for (var i = 0; i < 24; i++) { + hours.push(date); + date = new Date(date.getTime() + 60 * 60 * 1000); + } + return hours; + } + + return { + scope : { + date : '=datePicker', + after : '=?', + before: '=?' + }, + link : function (scope, element, attrs) { + + scope.views = []; + for (var attr in attrs) { //noinspection JSUnfilteredForInLoop + if (viewOptions.indexOf(attr) !== -1) { //noinspection JSUnfilteredForInLoop + scope.views.push(attr); + } + } + if (!scope.views.length) { + scope.views = ['date', 'month', 'year', 'hours', 'minutes']; + } + scope.view = scope.views[0]; + + function hasView(view) { + return scope.views.indexOf(view) !== -1; + } + + function ensureDate() { + // we need to return new instance as ngModel $watch watches only for identity - not for equality + if (!(isValidDate(scope.date))) { + scope.date = new Date(2000, 1, 1); + } + scope.date = new Date(scope.date); + } + + function setYear(date) { + ensureDate(); + scope.date.setFullYear(date.getFullYear()); + } + + function setMonth(date) { + setYear(date); + scope.date.setMonth(date.getMonth()); + } + + function setDate(date) { + setMonth(date); + scope.date.setDate(date.getDate()); + } + + function setHours(date) { + setDate(date); + scope.date.setHours(date.getHours()); + } + + function setMinutes(date) { + setHours(date); + scope.date.setMinutes(date.getMinutes()); + } + + scope.setYear = function (date) { + setYear(date); + scope.$emit('setYear', date); + }; + + scope.setMonth = function (date) { + setMonth(date); + scope.$emit('setMonth', date); + }; + + scope.setDate = function (date) { + setDate(date); + scope.$emit('setDate', date); + }; + + scope.setHours = function (date) { + setHours(date); + scope.$emit('setHours', date); + }; + + scope.setMinutes = function (date) { + setMinutes(date); + scope.$emit('setMinutes', date); + }; + + scope.setView = function setView(view) { + if (hasView(view)) { + scope.view = view; + switch (view) { + case 'minutes': + scope.minutes = getVisibleMinutes(scope.visibleDate); + break; + case 'hours' : + scope.hours = getVisibleHours(scope.visibleDate); + break; + case 'date' : + scope.weeks = getVisibleWeeks(scope.visibleDate); + break; + case 'month' : + scope.months = getVisibleMonths(scope.visibleDate); + break; + case 'year' : + scope.years = getVisibleYears(scope.visibleDate); + break; + } + } + }; + + scope.nextMonth = function (delta) { + scope.visibleDate.setMonth(scope.visibleDate.getMonth() + (delta || 1)); + }; + + scope.prevMonth = function (delta) { + scope.nextMonth(-delta || -1); + }; + + scope.nextDay = function (delta) { + scope.visibleDate.setDate(scope.visibleDate.getDate() + (delta || 1)); + }; + + scope.prevDay = function (delta) { + scope.nextDay(-delta || -1); + }; + + scope.nextHour = function (delta) { + scope.visibleDate.setHours(scope.visibleDate.getHours() + (delta || 1)); + }; + + scope.prevHour = function (delta) { + scope.nextHour(-delta || -1); + }; + + scope.nextYear = function (delta) { + scope.visibleDate.setFullYear(scope.visibleDate.getFullYear() + (delta || 1)); + }; + scope.prevYear = function (delta) { + scope.nextYear(-delta || -1); + }; + + scope.visibleDate = new Date(); + + scope.$watch('date', function (date) { + if (date) { + scope.visibleDate = new Date(date); + } + }); + + scope.isAfter = function (date) { + return date >= scope.after; + }; + + scope.isBefore = function (date) { + return date <= scope.before; + }; + + function validDate() { + return scope.date instanceof Date; + } + + scope.isSameMinutes = function (date) { + if (!validDate()){ + return false; + } + var b = scope.date; + return (date.getTime() - date.getSeconds() * 1000 - date.getMilliseconds()) === (b.getTime() - b.getSeconds() * 1000 - b.getMilliseconds()); + }; + + scope.isSameMonth = function (date) { + if (!validDate()){ + return false; + } + return date.getFullYear() === scope.date.getFullYear() && date.getMonth() === scope.date.getMonth(); + }; + + scope.isSameYear = function (date) { + if (!validDate()){ + return false; + } + return date.getFullYear() === scope.date.getFullYear(); + }; + + scope.isSameDate = function (date) { + if (!validDate()){ + return false; + } + return scope.date.getDate() === date.getDate() && scope.isSameMonth(date); + }; + + scope.isSameHour = function (date) { + if (!validDate()){ + return false; + } + return scope.date.getHours() === date.getHours() && scope.isSameDate(date); + }; + + scope.isOldMonth = function (date) { + return date + .getTime() < scope.visibleDate.getTime() && date.getMonth() !== scope.visibleDate.getMonth(); + }; + + scope.isNewHour = function (date) { + return date.getTime() > scope.visibleDate.getTime() && date.getHours() !== scope.visibleDate.getHours(); + }; + + scope.isOldHour = function (date) { + return date.getTime() < scope.visibleDate.getTime() && date.getHours() !== scope.visibleDate.getHours(); + }; + + scope.isNewMonth = function (date) { + return date.getTime() > scope.visibleDate.getTime() && date.getMonth() !== scope.visibleDate.getMonth(); + }; + + + scope.$on('setDate', scope.setView.bind(null, 'hours')); + scope.$on('setMonth', scope.setView.bind(null, 'date')); + scope.$on('setHours', scope.setView.bind(null, 'minutes')); + scope.$on('setYear', scope.setView.bind(null, 'month')); + + scope.$watch(function () { + return isValidDate(scope.visibleDate); + }, function (valid) { + if (!valid) { + scope.visibleDate = new Date(); + } + }); + + //hours + scope.$watch('[visibleDate.getDate(),visibleDate.getHours()].join()', function () { + if (scope.view === 'hours') { + scope.hours = getVisibleHours(scope.visibleDate); + } + }); + //date + scope.$watch('[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()', function () { + if (scope.view === 'date') { + scope.weeks = getVisibleWeeks(scope.visibleDate); + scope.weekdays = getDaysOfWeek(scope.visibleDate); + } + }); + + scope.$watch('[visibleDate.getFullYear(),visibleDate.getMonth()].join()', function () { + if (scope.view === 'month') { + scope.months = getVisibleMonths(scope.visibleDate); + } + }); + + scope.$watch('visibleDate.getYear()', function () { + if (scope.view === 'year') { + scope.years = getVisibleYears(scope.visibleDate); + } + }); + + scope.$watch('visibleDate.getTime()', function () { + if (scope.view === 'minutes') { + scope.minutes = getVisibleMinutes(scope.visibleDate); + } + }); + + }, + replace:true, + templateUrl: 'templates/datepicker.html' + }; + }); + + Module.directive('dateTime', function ($compile, $document, $filter) { + var body = $document.find('body'); + var dateFilter = $filter('date'); + return { + require: 'ngModel', + link : function (scope, element, attrs, ngModel) { + var format = attrs.format || 'yyyy-MM-dd HH:mm'; + + var viewsOptions = ['date', 'year', 'month', 'hours', 'minutes', 'month']; + var views = []; + for (var attr in attrs) { + //noinspection JSUnfilteredForInLoop + if (viewsOptions.indexOf(attr) !== -1) { //noinspection JSUnfilteredForInLoop + views.push(attr); + } + } + + + scope.$watch(''+attrs.ngModel+'.getTime()',function(a,b){ + if(a!==b){ + ngModel.$setViewValue(a); + } + }); + + function formatter(value) { + return dateFilter(value, format); + } + + ngModel.$formatters.push(formatter); + + var picker = null; + var clear = angular.noop; + + element.bind('focus', function () { + if (!picker) { + picker = $compile('')(scope); + body.append(picker); + scope.$digest(); + var pos = angular.extend(element.offset(), { height: element[0].offsetHeight }); + picker.css({ top: pos.top + pos.height, left: pos.left, display: 'block', position: 'absolute'}); + picker.bind('mousedown', function () { + return false; + }); + } + return false; + }); + element.bind('blur', function () { + clear(); + clear = angular.noop; + if (picker){ + picker.remove(); + } + picker = null; + }); + } + }; + }); + + Module.directive('dateRange', function () { + return { + templateUrl: 'templates/daterange.html', + scope : { + start: '=', + end : '=' + }, + link : function (scope) { + scope.$watch('start.getTime()', function (value) { + if (value && scope.end && value > scope.end.getTime()) { + scope.end = new Date(value); + } + }); + scope.$watch('end.getTime()', function (value) { + if (value && scope.start && value < scope.start.getTime()) { + scope.start = new Date(value); + } + }); + } + }; + }); +})(angular); diff --git a/app/styles/bootstrap.css b/app/styles/bootstrap.css new file mode 100644 index 0000000..55de7b9 --- /dev/null +++ b/app/styles/bootstrap.css @@ -0,0 +1,6167 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/index.css b/app/styles/date.css similarity index 100% rename from index.css rename to app/styles/date.css diff --git a/app/templates/datepicker.html b/app/templates/datepicker.html new file mode 100644 index 0000000..2c4fe30 --- /dev/null +++ b/app/templates/datepicker.html @@ -0,0 +1,127 @@ +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }} +
+
+
+ + + + + + + + + + + + + +
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
+ {{year.getFullYear()}} +
+
+ +
+ + + + + + + + + + + + + + + + + + +
{{ visibleDate|date:"yyyy" }}
+ {{month|date:'MMM'}} +
+
+ +
+ + + + + + + + + + + + + + + + + + +
{{ visibleDate|date:"dd MMMM yyyy" }}
+ {{hour|date:"HH:mm"}} +
+
+
+ + + + + + + + + + + + + + + + + + +
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }} +
+ {{minute|date:"HH:mm"}} +
+
+
+
diff --git a/app/templates/daterange.html b/app/templates/daterange.html new file mode 100644 index 0000000..55d3906 --- /dev/null +++ b/app/templates/daterange.html @@ -0,0 +1,12 @@ +
+ + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/bower.json b/bower.json index 6d4374c..849ab2f 100644 --- a/bower.json +++ b/bower.json @@ -1,19 +1,19 @@ { "name": "angular-datepicker", - "main": ["module.min.js","date.min.css"], "license": "MIT", - "version": "0.0.1", + "version": "0.1.0", "ignore": [ ".gitignore","README.md" ], "dependencies": {}, "devDependencies": { - "angular-unstable": "latest", - "json3": "~3.2.4", - "es5-shim": "~2.0.8", + "angular": "1.2.0-rc.2", "jquery": "~2.0.2", "angular-mocks": "~1.0.5", "angular-scenario": "~1.0.5", "angular-bootstrap": "~0.3.0" + }, + "resolutions": { + "angular": "1.2.0-rc.2" } -} \ No newline at end of file +} diff --git a/component.json b/component.json new file mode 100644 index 0000000..3ac71d5 --- /dev/null +++ b/component.json @@ -0,0 +1,13 @@ +{ + "name": "dateInput", + "version": "0.0.0", + "dependencies": { + "angular": "~1.0.5", + "json3": "~3.2.4", + "es5-shim": "~2.0.8" + }, + "devDependencies": { + "angular-mocks": "~1.0.5", + "angular-scenario": "~1.0.5" + } +} diff --git a/dist/README.md b/dist/README.md new file mode 100644 index 0000000..b4f3038 --- /dev/null +++ b/dist/README.md @@ -0,0 +1,79 @@ +# AngularJS datepicker directives + +#### Requirements + +- Angular v1.1.4+ +- jQuery or your own implementation of `position()` on top of `jQuery Lite` + + +#### Development version + +Checkout branch `dev`, run `grunt install` and `bower install`. +To build run `gunt build` + +## Examples + +Live demo : http://run.plnkr.co/erJj712N4bbkGsub/ + + +##### defaults + +```html +
+``` + + +##### year view + +```html +
+``` + + +##### month view + +```html +
+``` + + +##### only date view + +```html +
+``` + + +##### hours view + +```html +
+``` + + +##### minutes view + +```html +
+``` + + +##### input as datepicker + +```html + +``` + + +##### input with formatted value + +```html + +``` + + +##### date-range picker + +```html +
+``` diff --git a/dist/bower.json b/dist/bower.json new file mode 100644 index 0000000..4f25697 --- /dev/null +++ b/dist/bower.json @@ -0,0 +1,19 @@ +{ + "name": "angular-datepicker", + "license": "MIT", + "version": "0.0.2", + "ignore": [ + ".gitignore","README.md" + ], + "dependencies": {}, + "devDependencies": { + "angular": "1.2.0-rc.2", + "jquery": "~2.0.2", + "angular-mocks": "~1.0.5", + "angular-scenario": "~1.0.5", + "angular-bootstrap": "~0.3.0" + }, + "resolutions": { + "angular": "1.2.0-rc.2" + } +} diff --git a/dist/index.css b/dist/index.css new file mode 100644 index 0000000..8044a57 --- /dev/null +++ b/dist/index.css @@ -0,0 +1,379 @@ +/*! + * Datetimepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ + +.before.after:not(.active){ + background: #2f96b4 linear-gradient(to bottom, #5bc0de, #2f96b4) repeat-x; +} + +.next, .prev{ + font-size: 21px; +} +[date-picker] table{ + table-layout: fixed; +} + +[date-picker] { + z-index: 11000; /* to avoid bootstrap-modal issues */ + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + direction: ltr; + /*.dow { + border-top: 1px solid #ddd !important; + }*/ + +} +.datetimepicker-inline { + width: 220px; +} +[date-picker].datetimepicker-rtl { + direction: rtl; +} +[date-picker].datetimepicker-rtl table tr td span { + float: right; +} +.datetimepicker-dropdown, .datetimepicker-dropdown-left { + top: 0; + left: 0; +} +[class*=" datetimepicker-dropdown"]: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, 0.2); + position: absolute; +} +[class*=" datetimepicker-dropdown"]:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; +} +[class*=" datetimepicker-dropdown-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, 0.2); + border-bottom: 0; +} +[class*=" datetimepicker-dropdown-top"]:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid #ffffff; + border-bottom: 0; +} +.datetimepicker-dropdown-bottom-right:before { + top: -7px; + right: 6px; +} +.datetimepicker-dropdown-bottom-right:after { + top: -6px; + right: 7px; +} +.datetimepicker-dropdown-bottom-left:before { + top: -7px; + left: 6px; +} +.datetimepicker-dropdown-bottom-left:after { + top: -6px; + left: 7px; +} +.datetimepicker-dropdown-top-right:before { + bottom: -7px; + right: 6px; +} +.datetimepicker-dropdown-top-right:after { + bottom: -6px; + right: 7px; +} +.datetimepicker-dropdown-top-left:before { + bottom: -7px; + left: 6px; +} +.datetimepicker-dropdown-top-left:after { + bottom: -6px; + left: 7px; +} +/*.datetimepicker > div {*/ + /*display: none;*/ +/*}*/ +[date-picker].minutes div.datetimepicker-minutes { + display: block; +} +[date-picker].hours div.datetimepicker-hours { + display: block; +} +[date-picker].days div.datetimepicker-days { + display: block; +} +[date-picker].months div.datetimepicker-months { + display: block; +} +[date-picker].years div.datetimepicker-years { + display: block; +} +[date-picker] table { + margin: 0; +} +[date-picker] td, +[date-picker] th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: none; +} +.table-striped [date-picker] table tr td, +.table-striped [date-picker] table tr th { + background-color: transparent; +} +[date-picker] table tr td.minute:hover { + background: #eeeeee; + cursor: pointer; +} +[date-picker] table tr td.hour:hover { + background: #eeeeee; + cursor: pointer; +} +[date-picker] table tr td.day:hover { + background: #eeeeee; + cursor: pointer; +} +[date-picker] table tr td.old, +[date-picker] table tr td.new { + color: #999999; +} +[date-picker] table tr td.disabled, +[date-picker] table tr td.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +[date-picker] table tr td.today, +[date-picker] table tr td.today:hover, +[date-picker] table tr td.today.disabled, +[date-picker] table tr td.today.disabled:hover { + background-color: #fde19a; + background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); + background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); + background-image: linear-gradient(top, #fdd49a, #fdf59a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); + border-color: #fdf59a #fdf59a #fbed50; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} +[date-picker] table tr td.today:hover, +[date-picker] table tr td.today:hover:hover, +[date-picker] table tr td.today.disabled:hover, +[date-picker] table tr td.today.disabled:hover:hover, +[date-picker] table tr td.today:active, +[date-picker] table tr td.today:hover:active, +[date-picker] table tr td.today.disabled:active, +[date-picker] table tr td.today.disabled:hover:active, +[date-picker] table tr td.today.active, +[date-picker] table tr td.today:hover.active, +[date-picker] table tr td.today.disabled.active, +[date-picker] table tr td.today.disabled:hover.active, +[date-picker] table tr td.today.disabled, +[date-picker] table tr td.today:hover.disabled, +[date-picker] table tr td.today.disabled.disabled, +[date-picker] table tr td.today.disabled:hover.disabled, +[date-picker] table tr td.today[disabled], +[date-picker] table tr td.today:hover[disabled], +[date-picker] table tr td.today.disabled[disabled], +[date-picker] table tr td.today.disabled:hover[disabled] { + background-color: #fdf59a; +} +[date-picker] table tr td.today:active, +[date-picker] table tr td.today:hover:active, +[date-picker] table tr td.today.disabled:active, +[date-picker] table tr td.today.disabled:hover:active, +[date-picker] table tr td.today.active, +[date-picker] table tr td.today:hover.active, +[date-picker] table tr td.today.disabled.active, +[date-picker] table tr td.today.disabled:hover.active { + background-color: #fbf069 \9; +} +[date-picker] table tr td.active, +[date-picker] table tr td.active:hover, +[date-picker] table tr td.active.disabled, +[date-picker] table tr td.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +[date-picker] table tr td.active:hover, +[date-picker] table tr td.active:hover:hover, +[date-picker] table tr td.active.disabled:hover, +[date-picker] table tr td.active.disabled:hover:hover, +[date-picker] table tr td.active:active, +[date-picker] table tr td.active:hover:active, +[date-picker] table tr td.active.disabled:active, +[date-picker] table tr td.active.disabled:hover:active, +[date-picker] table tr td.active.active, +[date-picker] table tr td.active:hover.active, +[date-picker] table tr td.active.disabled.active, +[date-picker] table tr td.active.disabled:hover.active, +[date-picker] table tr td.active.disabled, +[date-picker] table tr td.active:hover.disabled, +[date-picker] table tr td.active.disabled.disabled, +[date-picker] table tr td.active.disabled:hover.disabled, +[date-picker] table tr td.active[disabled], +[date-picker] table tr td.active:hover[disabled], +[date-picker] table tr td.active.disabled[disabled], +[date-picker] table tr td.active.disabled:hover[disabled] { + background-color: #0044cc; +} +[date-picker] table tr td.active:active, +[date-picker] table tr td.active:hover:active, +[date-picker] table tr td.active.disabled:active, +[date-picker] table tr td.active.disabled:hover:active, +[date-picker] table tr td.active.active, +[date-picker] table tr td.active:hover.active, +[date-picker] table tr td.active.disabled.active, +[date-picker] table tr td.active.disabled:hover.active { + background-color: #003399 \9; +} +[date-picker] table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +[date-picker] .datetimepicker-hours span { + height: 26px; + line-height: 26px; +} +[date-picker] .datetimepicker-hours table tr td span.hour_am, +[date-picker] .datetimepicker-hours table tr td span.hour_pm { + width: 14.6%; +} +[date-picker] .datetimepicker-hours fieldset legend, +[date-picker] .datetimepicker-minutes fieldset legend { + margin-bottom: inherit; + line-height: 30px; +} +[date-picker] .datetimepicker-minutes span { + height: 26px; + line-height: 26px; +} +[date-picker] table tr td span:hover { + background: #eeeeee; +} +[date-picker] table tr td span.disabled, +[date-picker] table tr td span.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +[date-picker] table tr td span.active, +[date-picker] table tr td span.active:hover, +[date-picker] table tr td span.active.disabled, +[date-picker] table tr td span.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +[date-picker] table tr td span.active:hover, +[date-picker] table tr td span.active:hover:hover, +[date-picker] table tr td span.active.disabled:hover, +[date-picker] table tr td span.active.disabled:hover:hover, +[date-picker] table tr td span.active:active, +[date-picker] table tr td span.active:hover:active, +[date-picker] table tr td span.active.disabled:active, +[date-picker] table tr td span.active.disabled:hover:active, +[date-picker] table tr td span.active.active, +[date-picker] table tr td span.active:hover.active, +[date-picker] table tr td span.active.disabled.active, +[date-picker] table tr td span.active.disabled:hover.active, +[date-picker] table tr td span.active.disabled, +[date-picker] table tr td span.active:hover.disabled, +[date-picker] table tr td span.active.disabled.disabled, +[date-picker] table tr td span.active.disabled:hover.disabled, +[date-picker] table tr td span.active[disabled], +[date-picker] table tr td span.active:hover[disabled], +[date-picker] table tr td span.active.disabled[disabled], +[date-picker] table tr td span.active.disabled:hover[disabled] { + background-color: #0044cc; +} +[date-picker] table tr td span.active:active, +[date-picker] table tr td span.active:hover:active, +[date-picker] table tr td span.active.disabled:active, +[date-picker] table tr td span.active.disabled:hover:active, +[date-picker] table tr td span.active.active, +[date-picker] table tr td span.active:hover.active, +[date-picker] table tr td span.active.disabled.active, +[date-picker] table tr td span.active.disabled:hover.active { + background-color: #003399 \9; +} +[date-picker] table tr td span.old { + color: #999999; +} +[date-picker] th.switch { + width: 145px; +} +[date-picker] thead tr:first-child th, +[date-picker] tfoot tr:first-child th { + cursor: pointer; +} +[date-picker] thead tr:first-child th:hover, +[date-picker] tfoot tr:first-child th:hover { + background: #eeeeee; +} +.input-append.date .add-on i, +.input-prepend.date .add-on i { + cursor: pointer; + width: 14px; + height: 14px; +} diff --git a/index.js b/dist/index.js similarity index 73% rename from index.js rename to dist/index.js index 7ea32ac..e2a9b55 100644 --- a/index.js +++ b/dist/index.js @@ -53,7 +53,6 @@ return weeks; } - function getVisibleYears(date) { var years = []; date = new Date(date || new Date()); @@ -355,8 +354,7 @@ }); }, - transclude : true, - replace : true, + replace:true, templateUrl: 'templates/datepicker.html' }; }); @@ -378,6 +376,13 @@ } } + + scope.$watch(''+attrs.ngModel+'.getTime()',function(a,b){ + if(a!==b){ + ngModel.$setViewValue(a); + } + }); + function formatter(value) { return dateFilter(value, format); } @@ -434,283 +439,151 @@ }; }); })(angular); + angular.module("datePicker").run(["$templateCache", function($templateCache) { $templateCache.put("templates/datepicker.html", - "
\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{visibleDate|date:\"yyyy MMMM\"}}
{{ day|date:\"EEE\"}}
{{ day.getDate() }}\r" + - "\n" + - "
Today
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r" + - "\n" + - " {{year.getFullYear()}}\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{ visibleDate|date:\"yyyy\" }}
\r" + - "\n" + - " {{month|date:'MMM'}}\r" + - "\n" + - "
Today
\r" + - "\n" + - "
\r" + - "\n" + - "\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{ visibleDate|date:\"dd MMMM yyyy\" }}
\r" + - "\n" + - " {{hour|date:\"HH:mm\"}}\r" + - "\n" + - "
Today
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{ visibleDate|date:\"dd MMMM yyyy HH:mm\" }}\r" + - "\n" + - "
\r" + - "\n" + - " {{minute|date:\"HH:mm\"}}\r" + - "\n" + - "
Today
\r" + - "\n" + - "
\r" + - "\n" + - "
" + "
\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{visibleDate|date:\"yyyy MMMM\"}}
{{ day|date:\"EEE\"}}
{{ day.getDate() }}\n" + + "
Today
\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n" + + " {{year.getFullYear()}}\n" + + "
\n" + + "
\n" + + "\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{ visibleDate|date:\"yyyy\" }}
\n" + + " {{month|date:'MMM'}}\n" + + "
Today
\n" + + "
\n" + + "\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{ visibleDate|date:\"dd MMMM yyyy\" }}
\n" + + " {{hour|date:\"HH:mm\"}}\n" + + "
Today
\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{ visibleDate|date:\"dd MMMM yyyy HH:mm\" }}\n" + + "
\n" + + " {{minute|date:\"HH:mm\"}}\n" + + "
Today
\n" + + "
\n" + + "
\n" + + "
\n" ); $templateCache.put("templates/daterange.html", - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + "
" ); diff --git a/index.min.css b/dist/index.min.css similarity index 100% rename from index.min.css rename to dist/index.min.css diff --git a/dist/index.min.js b/dist/index.min.js new file mode 100644 index 0000000..f969585 --- /dev/null +++ b/dist/index.min.js @@ -0,0 +1 @@ +!function(a){"use strict";var b=a.module("datePicker",[]);b.directive("datePicker",function(){function a(a){return a instanceof Date&&!isNaN(a.getTime())}function b(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var b=[],c=5,d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=["month","date","year","month","hours","minutes"];return{scope:{date:"=datePicker",after:"=?",before:"=?"},link:function(i,j,k){function l(a){return-1!==i.views.indexOf(a)}function m(){a(i.date)||(i.date=new Date(2e3,1,1)),i.date=new Date(i.date)}function n(a){m(),i.date.setFullYear(a.getFullYear())}function o(a){n(a),i.date.setMonth(a.getMonth())}function p(a){o(a),i.date.setDate(a.getDate())}function q(a){p(a),i.date.setHours(a.getHours())}function r(a){q(a),i.date.setMinutes(a.getMinutes())}function s(){return i.date instanceof Date}i.views=[];for(var t in k)-1!==h.indexOf(t)&&i.views.push(t);i.views.length||(i.views=["date","month","year","hours","minutes"]),i.view=i.views[0],i.setYear=function(a){n(a),i.$emit("setYear",a)},i.setMonth=function(a){o(a),i.$emit("setMonth",a)},i.setDate=function(a){p(a),i.$emit("setDate",a)},i.setHours=function(a){q(a),i.$emit("setHours",a)},i.setMinutes=function(a){r(a),i.$emit("setMinutes",a)},i.setView=function(a){if(l(a))switch(i.view=a,a){case"minutes":i.minutes=b(i.visibleDate);break;case"hours":i.hours=g(i.visibleDate);break;case"date":i.weeks=c(i.visibleDate);break;case"month":i.months=f(i.visibleDate);break;case"year":i.years=d(i.visibleDate)}},i.nextMonth=function(a){i.visibleDate.setMonth(i.visibleDate.getMonth()+(a||1))},i.prevMonth=function(a){i.nextMonth(-a||-1)},i.nextDay=function(a){i.visibleDate.setDate(i.visibleDate.getDate()+(a||1))},i.prevDay=function(a){i.nextDay(-a||-1)},i.nextHour=function(a){i.visibleDate.setHours(i.visibleDate.getHours()+(a||1))},i.prevHour=function(a){i.nextHour(-a||-1)},i.nextYear=function(a){i.visibleDate.setFullYear(i.visibleDate.getFullYear()+(a||1))},i.prevYear=function(a){i.nextYear(-a||-1)},i.visibleDate=new Date,i.$watch("date",function(a){a&&(i.visibleDate=new Date(a))}),i.isAfter=function(a){return a>=i.after},i.isBefore=function(a){return a<=i.before},i.isSameMinutes=function(a){if(!s())return!1;var b=i.date;return a.getTime()-1e3*a.getSeconds()-a.getMilliseconds()===b.getTime()-1e3*b.getSeconds()-b.getMilliseconds()},i.isSameMonth=function(a){return s()?a.getFullYear()===i.date.getFullYear()&&a.getMonth()===i.date.getMonth():!1},i.isSameYear=function(a){return s()?a.getFullYear()===i.date.getFullYear():!1},i.isSameDate=function(a){return s()?i.date.getDate()===a.getDate()&&i.isSameMonth(a):!1},i.isSameHour=function(a){return s()?i.date.getHours()===a.getHours()&&i.isSameDate(a):!1},i.isOldMonth=function(a){return a.getTime()i.visibleDate.getTime()&&a.getHours()!==i.visibleDate.getHours()},i.isOldHour=function(a){return a.getTime()i.visibleDate.getTime()&&a.getMonth()!==i.visibleDate.getMonth()},i.$on("setDate",i.setView.bind(null,"hours")),i.$on("setMonth",i.setView.bind(null,"date")),i.$on("setHours",i.setView.bind(null,"minutes")),i.$on("setYear",i.setView.bind(null,"month")),i.$watch(function(){return a(i.visibleDate)},function(a){a||(i.visibleDate=new Date)}),i.$watch("[visibleDate.getDate(),visibleDate.getHours()].join()",function(){"hours"===i.view&&(i.hours=g(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()",function(){"date"===i.view&&(i.weeks=c(i.visibleDate),i.weekdays=e(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth()].join()",function(){"month"===i.view&&(i.months=f(i.visibleDate))}),i.$watch("visibleDate.getYear()",function(){"year"===i.view&&(i.years=d(i.visibleDate))}),i.$watch("visibleDate.getTime()",function(){"minutes"===i.view&&(i.minutes=b(i.visibleDate))})},replace:!0,templateUrl:"templates/datepicker.html"}}),b.directive("dateTime",["$compile","$document","$filter",function(b,c,d){var e=c.find("body"),f=d("date");return{require:"ngModel",link:function(c,d,g,h){function i(a){return f(a,j)}var j=g.format||"yyyy-MM-dd HH:mm",k=["date","year","month","hours","minutes","month"],l=[];for(var m in g)-1!==k.indexOf(m)&&l.push(m);c.$watch(""+g.ngModel+".getTime()",function(a,b){a!==b&&h.$setViewValue(a)}),h.$formatters.push(i);var n=null,o=a.noop;d.bind("focus",function(){if(!n){n=b('")(c),e.append(n),c.$digest();var f=a.extend(d.offset(),{height:d[0].offsetHeight});n.css({top:f.top+f.height,left:f.left,display:"block",position:"absolute"}),n.bind("mousedown",function(){return!1})}return!1}),d.bind("blur",function(){o(),o=a.noop,n&&n.remove(),n=null})}}}]),b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }}\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n {{year.getFullYear()}}\n
\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ visibleDate|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n
\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ visibleDate|date:"dd MMMM yyyy" }}
\n {{hour|date:"HH:mm"}}\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
')}]); \ No newline at end of file diff --git a/index.min.js b/index.min.js deleted file mode 100644 index 5e219e0..0000000 --- a/index.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){"use strict";var b=a.module("datePicker",[]);b.directive("datePicker",function(){function a(a){return a instanceof Date&&!isNaN(a.getTime())}function b(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var b=[],c=5,d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=["month","date","year","month","hours","minutes"];return{scope:{date:"=datePicker",after:"=?",before:"=?"},link:function(i,j,k){function l(a){return-1!==i.views.indexOf(a)}function m(){a(i.date)||(i.date=new Date(2e3,1,1)),i.date=new Date(i.date)}function n(a){m(),i.date.setFullYear(a.getFullYear())}function o(a){n(a),i.date.setMonth(a.getMonth())}function p(a){o(a),i.date.setDate(a.getDate())}function q(a){p(a),i.date.setHours(a.getHours())}function r(a){q(a),i.date.setMinutes(a.getMinutes())}function s(){return i.date instanceof Date}i.views=[];for(var t in k)-1!==h.indexOf(t)&&i.views.push(t);i.views.length||(i.views=["date","month","year","hours","minutes"]),i.view=i.views[0],i.setYear=function(a){n(a),i.$emit("setYear",a)},i.setMonth=function(a){o(a),i.$emit("setMonth",a)},i.setDate=function(a){p(a),i.$emit("setDate",a)},i.setHours=function(a){q(a),i.$emit("setHours",a)},i.setMinutes=function(a){r(a),i.$emit("setMinutes",a)},i.setView=function(a){if(l(a))switch(i.view=a,a){case"minutes":i.minutes=b(i.visibleDate);break;case"hours":i.hours=g(i.visibleDate);break;case"date":i.weeks=c(i.visibleDate);break;case"month":i.months=f(i.visibleDate);break;case"year":i.years=d(i.visibleDate)}},i.nextMonth=function(a){i.visibleDate.setMonth(i.visibleDate.getMonth()+(a||1))},i.prevMonth=function(a){i.nextMonth(-a||-1)},i.nextDay=function(a){i.visibleDate.setDate(i.visibleDate.getDate()+(a||1))},i.prevDay=function(a){i.nextDay(-a||-1)},i.nextHour=function(a){i.visibleDate.setHours(i.visibleDate.getHours()+(a||1))},i.prevHour=function(a){i.nextHour(-a||-1)},i.nextYear=function(a){i.visibleDate.setFullYear(i.visibleDate.getFullYear()+(a||1))},i.prevYear=function(a){i.nextYear(-a||-1)},i.visibleDate=new Date,i.$watch("date",function(a){a&&(i.visibleDate=new Date(a))}),i.isAfter=function(a){return a>=i.after},i.isBefore=function(a){return a<=i.before},i.isSameMinutes=function(a){if(!s())return!1;var b=i.date;return a.getTime()-1e3*a.getSeconds()-a.getMilliseconds()===b.getTime()-1e3*b.getSeconds()-b.getMilliseconds()},i.isSameMonth=function(a){return s()?a.getFullYear()===i.date.getFullYear()&&a.getMonth()===i.date.getMonth():!1},i.isSameYear=function(a){return s()?a.getFullYear()===i.date.getFullYear():!1},i.isSameDate=function(a){return s()?i.date.getDate()===a.getDate()&&i.isSameMonth(a):!1},i.isSameHour=function(a){return s()?i.date.getHours()===a.getHours()&&i.isSameDate(a):!1},i.isOldMonth=function(a){return a.getTime()i.visibleDate.getTime()&&a.getHours()!==i.visibleDate.getHours()},i.isOldHour=function(a){return a.getTime()i.visibleDate.getTime()&&a.getMonth()!==i.visibleDate.getMonth()},i.$on("setDate",i.setView.bind(null,"hours")),i.$on("setMonth",i.setView.bind(null,"date")),i.$on("setHours",i.setView.bind(null,"minutes")),i.$on("setYear",i.setView.bind(null,"month")),i.$watch(function(){return a(i.visibleDate)},function(a){a||(i.visibleDate=new Date)}),i.$watch("[visibleDate.getDate(),visibleDate.getHours()].join()",function(){"hours"===i.view&&(i.hours=g(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()",function(){"date"===i.view&&(i.weeks=c(i.visibleDate),i.weekdays=e(i.visibleDate))}),i.$watch("[visibleDate.getFullYear(),visibleDate.getMonth()].join()",function(){"month"===i.view&&(i.months=f(i.visibleDate))}),i.$watch("visibleDate.getYear()",function(){"year"===i.view&&(i.years=d(i.visibleDate))}),i.$watch("visibleDate.getTime()",function(){"minutes"===i.view&&(i.minutes=b(i.visibleDate))})},transclude:!0,replace:!0,templateUrl:"templates/datepicker.html"}}),b.directive("dateTime",["$compile","$document","$filter",function(b,c,d){var e=c.find("body"),f=d("date");return{require:"ngModel",link:function(c,d,g,h){function i(a){return f(a,j)}var j=g.format||"yyyy-MM-dd HH:mm",k=["date","year","month","hours","minutes","month"],l=[];for(var m in g)-1!==k.indexOf(m)&&l.push(m);h.$formatters.push(i);var n=null,o=a.noop;d.bind("focus",function(){if(!n){n=b('")(c),e.append(n),c.$digest();var f=a.extend(d.offset(),{height:d[0].offsetHeight});n.css({top:f.top+f.height,left:f.left,display:"block",position:"absolute"}),n.bind("mousedown",function(){return!1})}return!1}),d.bind("blur",function(){o(),o=a.noop,n&&n.remove(),n=null})}}}]),b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n {{year.getFullYear()}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"yyyy" }}
\r\n {{month|date:\'MMM\'}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy" }}
\r\n {{hour|date:"HH:mm"}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }}\r\n
\r\n {{minute|date:"HH:mm"}}\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
')}]); \ No newline at end of file diff --git a/karma-e2e.conf.js b/karma-e2e.conf.js new file mode 100644 index 0000000..8b92018 --- /dev/null +++ b/karma-e2e.conf.js @@ -0,0 +1,51 @@ +// Karma E2E configuration + +// base path, that will be used to resolve files and exclude +basePath = ''; + +// list of files / patterns to load in the browser +files = [ + ANGULAR_SCENARIO, + ANGULAR_SCENARIO_ADAPTER, + 'test/e2e/**/*.js' +]; + +// list of files to exclude +exclude = []; + +// test results reporter to use +// possible values: dots || progress || growl +reporters = ['progress']; + +// web server port +port = 8080; + +// cli runner port +runnerPort = 9100; + +// enable / disable colors in the output (reporters and logs) +colors = true; + +// level of logging +// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG +logLevel = LOG_INFO; + +// enable / disable watching file and executing tests whenever any file changes +autoWatch = false; + +// Start these browsers, currently available: +// - Chrome +// - ChromeCanary +// - Firefox +// - Opera +// - Safari (only Mac) +// - PhantomJS +// - IE (only Windows) +browsers = ['Chrome']; + +// If browser does not capture in given timeout [ms], kill it +captureTimeout = 5000; + +// Continuous Integration mode +// if true, it capture browsers, run tests and exit +singleRun = false; diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..64630d0 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,56 @@ +// Karma configuration + +// base path, that will be used to resolve files and exclude +basePath = ''; + +// list of files / patterns to load in the browser +files = [ + JASMINE, + JASMINE_ADAPTER, + 'app/components/angular/angular.js', + 'app/components/angular-mocks/angular-mocks.js', + 'app/scripts/*.js', + 'app/scripts/**/*.js', + 'test/mock/**/*.js', + 'test/spec/**/*.js' +]; + +// list of files to exclude +exclude = []; + +// test results reporter to use +// possible values: dots || progress || growl +reporters = ['progress']; + +// web server port +port = 8080; + +// cli runner port +runnerPort = 9100; + +// enable / disable colors in the output (reporters and logs) +colors = true; + +// level of logging +// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG +logLevel = LOG_INFO; + +// enable / disable watching file and executing tests whenever any file changes +autoWatch = false; + +// Start these browsers, currently available: +// - Chrome +// - ChromeCanary +// - Firefox +// - Opera +// - Safari (only Mac) +// - PhantomJS +// - IE (only Windows) +browsers = ['ChromeCanary']; + +// If browser does not capture in given timeout [ms], kill it +captureTimeout = 5000; + +// Continuous Integration mode +// if true, it capture browsers, run tests and exit +singleRun = false; diff --git a/package.json b/package.json new file mode 100644 index 0000000..1e685a0 --- /dev/null +++ b/package.json @@ -0,0 +1,33 @@ +{ + "name": "angular-datepicker", + "version": "0.0.0", + "dependencies": {}, + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-copy": "~0.4.0", + "grunt-contrib-concat": "~0.1.3", + "grunt-contrib-coffee": "~0.6.4", + "grunt-contrib-uglify": "~0.2.0", + "grunt-contrib-compass": "~0.1.3", + "grunt-contrib-jshint": "~0.3.0", + "grunt-contrib-cssmin": "~0.5.0", + "grunt-contrib-connect": "~0.2.0", + "grunt-contrib-clean": "~0.4.0", + "grunt-contrib-htmlmin": "~0.1.1", + "grunt-contrib-imagemin": "~0.1.2", + "grunt-contrib-livereload": "~0.1.2", + "grunt-bower-requirejs": "~0.4.1", + "grunt-usemin": "~0.1.10", + "grunt-regarde": "~0.1.1", + "grunt-rev": "~0.1.0", + "grunt-karma": "~0.3.0", + "grunt-open": "~0.2.0", + "matchdep": "~0.1.1", + "grunt-google-cdn": "~0.1.1", + "grunt-ngmin": "~0.0.2", + "grunt-angular-templates": "~0.3.8" + }, + "engines": { + "node": ">=0.8.0" + } +} diff --git a/test/runner.html b/test/runner.html new file mode 100644 index 0000000..f4a00a1 --- /dev/null +++ b/test/runner.html @@ -0,0 +1,10 @@ + + + + End2end Test Runner + + + + + + \ No newline at end of file From cd5f6296cd1a7f876e0e46531ea3007053270419 Mon Sep 17 00:00:00 2001 From: g00fy Date: Mon, 7 Oct 2013 20:22:18 +0200 Subject: [PATCH 06/60] stage 1 --- app/scripts/module.js | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/app/scripts/module.js b/app/scripts/module.js index 54d11b3..810199c 100644 --- a/app/scripts/module.js +++ b/app/scripts/module.js @@ -108,11 +108,13 @@ link : function (scope, element, attrs) { scope.views = []; + for (var attr in attrs) { //noinspection JSUnfilteredForInLoop if (viewOptions.indexOf(attr) !== -1) { //noinspection JSUnfilteredForInLoop scope.views.push(attr); } } + if (!scope.views.length) { scope.views = ['date', 'month', 'year', 'hours', 'minutes']; } @@ -327,6 +329,7 @@ scope.hours = getVisibleHours(scope.visibleDate); } }); + //date scope.$watch('[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()', function () { if (scope.view === 'date') { @@ -376,13 +379,6 @@ } } - - scope.$watch(''+attrs.ngModel+'.getTime()',function(a,b){ - if(a!==b){ - ngModel.$setViewValue(a); - } - }); - function formatter(value) { return dateFilter(value, format); } @@ -390,13 +386,31 @@ ngModel.$formatters.push(formatter); var picker = null; - var clear = angular.noop; + var clear = function(){ + if(picker){ + picker.remove(); + picker = null; + } + }; + var template = ''; + + function update(obj,date){ + ngModel.$setViewValue(date); + } element.bind('focus', function () { if (!picker) { - picker = $compile('')(scope); + // create picker element + picker = $compile(template)(scope); body.append(picker); scope.$digest(); + + + scope.$on('setDate', update); + scope.$on('setMonth',update); + scope.$on('setHours',update); + scope.$on('setYear', update); + var pos = angular.extend(element.offset(), { height: element[0].offsetHeight }); picker.css({ top: pos.top + pos.height, left: pos.left, display: 'block', position: 'absolute'}); picker.bind('mousedown', function () { @@ -405,14 +419,7 @@ } return false; }); - element.bind('blur', function () { - clear(); - clear = angular.noop; - if (picker){ - picker.remove(); - } - picker = null; - }); + element.bind('blur', clear); } }; }); From 29cafba56ee5ba376606e41f830571afb337dc8d Mon Sep 17 00:00:00 2001 From: g00fy Date: Mon, 7 Oct 2013 22:53:31 +0200 Subject: [PATCH 07/60] stage 2 --- app/index.html | 111 ++++---- app/scripts/module.js | 462 ++++++++++++---------------------- app/templates/datepicker.html | 241 +++++++++--------- 3 files changed, 334 insertions(+), 480 deletions(-) diff --git a/app/index.html b/app/index.html index 89ef06e..620eac4 100644 --- a/app/index.html +++ b/app/index.html @@ -12,7 +12,7 @@ - +

{{ start }}

Calendar

@@ -20,64 +20,67 @@

Calendar

views

default
<div date-picker="start"></div> 
-
-
year
-
<div date-picker="start"  year></div> 
+ + {{ start }} +
+ + +
-
month
-
<div date-picker="start month></div> 
-
-
date
-
<div date-picker="start" date></div> 
-
-
hours
-
<div date-picker="start" hours></div> 
-
-
minutes
-
<div date-picker="start" minutes></div> 
-
+ + + + + + + + + + + +
-
-

Input

-
default
-
<input type="datetime" ng-model="model" date-time></div> 
- -
Input format
-
<input type="datetime" ng-model="model" date-time format="long"></div> 
- -
A button
-
<div class="dropdown">
-  <a class="dropdown-toggle btn btn-danger">
-    pick a date: {{(date|date)}}
-  </a>
-  <div class="dropdown-menu" ng-click="$event.preventDefault();$event.stopPropagation()">
-    <div date-picker="date" class="datetimepicker"></div>
-  </div>
-</div>
- -
Date range
-
<div date-range start="start" end="end" ></div> 
-
-
Date range button
+ + + + + + + + - -
+ + + + +
diff --git a/app/scripts/module.js b/app/scripts/module.js index 810199c..37bdb76 100644 --- a/app/scripts/module.js +++ b/app/scripts/module.js @@ -4,11 +4,8 @@ Module.directive('datePicker', function () { - var viewOptions = ['month', 'date', 'year', 'month', 'hours', 'minutes']; - - function isValidDate(date) { - return date instanceof Date && !isNaN(date.getTime()); - } + var views = ['year', 'month', 'date', 'hours', 'minutes']; + var noop = angular.noop; function getVisibleMinutes(date) { date = new Date(date || new Date()); @@ -100,349 +97,198 @@ } return { + templateUrl: 'templates/datepicker.html', + replace:true, scope : { - date : '=datePicker', + model: '=datePicker', + view : '=?', after : '=?', before: '=?' }, link : function (scope, element, attrs) { - scope.views = []; - - for (var attr in attrs) { //noinspection JSUnfilteredForInLoop - if (viewOptions.indexOf(attr) !== -1) { //noinspection JSUnfilteredForInLoop - scope.views.push(attr); - } - } - - if (!scope.views.length) { - scope.views = ['date', 'month', 'year', 'hours', 'minutes']; - } - scope.view = scope.views[0]; - - function hasView(view) { - return scope.views.indexOf(view) !== -1; - } - - function ensureDate() { - // we need to return new instance as ngModel $watch watches only for identity - not for equality - if (!(isValidDate(scope.date))) { - scope.date = new Date(2000, 1, 1); - } - scope.date = new Date(scope.date); - } - - function setYear(date) { - ensureDate(); - scope.date.setFullYear(date.getFullYear()); - } - - function setMonth(date) { - setYear(date); - scope.date.setMonth(date.getMonth()); - } - - function setDate(date) { - setMonth(date); - scope.date.setDate(date.getDate()); - } + // if model value was updated or already existing; + var updated = !!scope.model; - function setHours(date) { - setDate(date); - scope.date.setHours(date.getHours()); - } + scope.date = new Date(); - function setMinutes(date) { - setHours(date); - scope.date.setMinutes(date.getMinutes()); + if(!scope.view){ + // set default view + scope.view = views[0]; } - scope.setYear = function (date) { - setYear(date); - scope.$emit('setYear', date); - }; - - scope.setMonth = function (date) { - setMonth(date); - scope.$emit('setMonth', date); + scope.setView= function(nextView){ + scope.view = nextView; }; - scope.setDate = function (date) { - setDate(date); - scope.$emit('setDate', date); - }; - scope.setHours = function (date) { - setHours(date); - scope.$emit('setHours', date); - }; - - scope.setMinutes = function (date) { - setMinutes(date); - scope.$emit('setMinutes', date); + scope.setDate = function(date){ + scope.date = date; + // change next view + var nextView = views[views.indexOf(scope.view)+1]; + if(nextView){ + scope.view = nextView; + updated = true; + } + if(!nextView || updated){ + scope.model = date; + } }; - scope.setView = function setView(view) { - if (hasView(view)) { - scope.view = view; - switch (view) { - case 'minutes': - scope.minutes = getVisibleMinutes(scope.visibleDate); + function update(){ + var view = scope.view; + var date = scope.date; + switch (view) { + case 'year': + scope.years = getVisibleYears(date); break; - case 'hours' : - scope.hours = getVisibleHours(scope.visibleDate); + case 'month': + scope.months = getVisibleMonths(date); break; - case 'date' : - scope.weeks = getVisibleWeeks(scope.visibleDate); + case 'date': + scope.weekdays = scope.weekdays || getDaysOfWeek(); + scope.weeks = getVisibleWeeks(date); break; - case 'month' : - scope.months = getVisibleMonths(scope.visibleDate); + case 'hours': + scope.hours = getVisibleHours(date); break; - case 'year' : - scope.years = getVisibleYears(scope.visibleDate); + case 'minutes': + scope.minutes = getVisibleMinutes(date); break; - } - } - }; - - scope.nextMonth = function (delta) { - scope.visibleDate.setMonth(scope.visibleDate.getMonth() + (delta || 1)); - }; - - scope.prevMonth = function (delta) { - scope.nextMonth(-delta || -1); - }; - - scope.nextDay = function (delta) { - scope.visibleDate.setDate(scope.visibleDate.getDate() + (delta || 1)); - }; - - scope.prevDay = function (delta) { - scope.nextDay(-delta || -1); - }; - - scope.nextHour = function (delta) { - scope.visibleDate.setHours(scope.visibleDate.getHours() + (delta || 1)); - }; - - scope.prevHour = function (delta) { - scope.nextHour(-delta || -1); - }; - - scope.nextYear = function (delta) { - scope.visibleDate.setFullYear(scope.visibleDate.getFullYear() + (delta || 1)); - }; - scope.prevYear = function (delta) { - scope.nextYear(-delta || -1); - }; - - scope.visibleDate = new Date(); - - scope.$watch('date', function (date) { - if (date) { - scope.visibleDate = new Date(date); } - }); - - scope.isAfter = function (date) { - return date >= scope.after; - }; - - scope.isBefore = function (date) { - return date <= scope.before; - }; - - function validDate() { - return scope.date instanceof Date; } - scope.isSameMinutes = function (date) { - if (!validDate()){ - return false; - } - var b = scope.date; - return (date.getTime() - date.getSeconds() * 1000 - date.getMilliseconds()) === (b.getTime() - b.getSeconds() * 1000 - b.getMilliseconds()); - }; - - scope.isSameMonth = function (date) { - if (!validDate()){ - return false; - } - return date.getFullYear() === scope.date.getFullYear() && date.getMonth() === scope.date.getMonth(); - }; - - scope.isSameYear = function (date) { - if (!validDate()){ - return false; - } - return date.getFullYear() === scope.date.getFullYear(); - }; + scope.$watch('view', function (view) { + update(); + }); - scope.isSameDate = function (date) { - if (!validDate()){ - return false; + scope.next = function(delta){ + var date = scope.date; + delta = delta || 1; + switch(scope.view){ + case 'year': + case 'month': + date.setFullYear(date.getFullYear() + delta); + break; + case 'date': + date.setMonth(date.getMonth() + delta); + break; + case 'hours': + case 'minutes': + date.setHours(date.getHours() + delta); + break; } - return scope.date.getDate() === date.getDate() && scope.isSameMonth(date); + update(); }; - scope.isSameHour = function (date) { - if (!validDate()){ - return false; - } - return scope.date.getHours() === date.getHours() && scope.isSameDate(date); + scope.prev = function(delta){ + return scope.next(delta || -1); }; - scope.isOldMonth = function (date) { - return date - .getTime() < scope.visibleDate.getTime() && date.getMonth() !== scope.visibleDate.getMonth(); + scope.isAfter = function(date){ + return updated && scope.model ? scope.model.getTime() >= date.getTime(): false; }; - scope.isNewHour = function (date) { - return date.getTime() > scope.visibleDate.getTime() && date.getHours() !== scope.visibleDate.getHours(); + scope.isBefore = function(date){ + return scope.model ? scope.model.getTime() <= date.getTime(): false; }; - scope.isOldHour = function (date) { - return date.getTime() < scope.visibleDate.getTime() && date.getHours() !== scope.visibleDate.getHours(); + scope.isSameMonth = function(date){ + return scope.isSameYear(date) && scope.model ? scope.model.getMonth() == date.getMonth() : false; }; - scope.isNewMonth = function (date) { - return date.getTime() > scope.visibleDate.getTime() && date.getMonth() !== scope.visibleDate.getMonth(); + scope.isSameYear= function(date){ + return (scope.model ? scope.model.getFullYear() == date.getFullYear(): false); }; - - scope.$on('setDate', scope.setView.bind(null, 'hours')); - scope.$on('setMonth', scope.setView.bind(null, 'date')); - scope.$on('setHours', scope.setView.bind(null, 'minutes')); - scope.$on('setYear', scope.setView.bind(null, 'month')); - - scope.$watch(function () { - return isValidDate(scope.visibleDate); - }, function (valid) { - if (!valid) { - scope.visibleDate = new Date(); - } - }); - - //hours - scope.$watch('[visibleDate.getDate(),visibleDate.getHours()].join()', function () { - if (scope.view === 'hours') { - scope.hours = getVisibleHours(scope.visibleDate); - } - }); - - //date - scope.$watch('[visibleDate.getFullYear(),visibleDate.getMonth(),visibleDate.getDate()].join()', function () { - if (scope.view === 'date') { - scope.weeks = getVisibleWeeks(scope.visibleDate); - scope.weekdays = getDaysOfWeek(scope.visibleDate); - } - }); - - scope.$watch('[visibleDate.getFullYear(),visibleDate.getMonth()].join()', function () { - if (scope.view === 'month') { - scope.months = getVisibleMonths(scope.visibleDate); - } - }); - - scope.$watch('visibleDate.getYear()', function () { - if (scope.view === 'year') { - scope.years = getVisibleYears(scope.visibleDate); - } - }); - - scope.$watch('visibleDate.getTime()', function () { - if (scope.view === 'minutes') { - scope.minutes = getVisibleMinutes(scope.visibleDate); - } - }); - - }, - replace:true, - templateUrl: 'templates/datepicker.html' - }; - }); - - Module.directive('dateTime', function ($compile, $document, $filter) { - var body = $document.find('body'); - var dateFilter = $filter('date'); - return { - require: 'ngModel', - link : function (scope, element, attrs, ngModel) { - var format = attrs.format || 'yyyy-MM-dd HH:mm'; - - var viewsOptions = ['date', 'year', 'month', 'hours', 'minutes', 'month']; - var views = []; - for (var attr in attrs) { - //noinspection JSUnfilteredForInLoop - if (viewsOptions.indexOf(attr) !== -1) { //noinspection JSUnfilteredForInLoop - views.push(attr); - } - } - - function formatter(value) { - return dateFilter(value, format); - } - - ngModel.$formatters.push(formatter); - - var picker = null; - var clear = function(){ - if(picker){ - picker.remove(); - picker = null; - } + scope.isSameDay = function(date){ + return scope.isSameMonth(date) && scope.model ? scope.model.getDate() == date.getDate() : false; }; - var template = ''; - - function update(obj,date){ - ngModel.$setViewValue(date); - } - - element.bind('focus', function () { - if (!picker) { - // create picker element - picker = $compile(template)(scope); - body.append(picker); - scope.$digest(); - - - scope.$on('setDate', update); - scope.$on('setMonth',update); - scope.$on('setHours',update); - scope.$on('setYear', update); - - var pos = angular.extend(element.offset(), { height: element[0].offsetHeight }); - picker.css({ top: pos.top + pos.height, left: pos.left, display: 'block', position: 'absolute'}); - picker.bind('mousedown', function () { - return false; - }); - } - return false; - }); - element.bind('blur', clear); } }; }); - Module.directive('dateRange', function () { - return { - templateUrl: 'templates/daterange.html', - scope : { - start: '=', - end : '=' - }, - link : function (scope) { - scope.$watch('start.getTime()', function (value) { - if (value && scope.end && value > scope.end.getTime()) { - scope.end = new Date(value); - } - }); - scope.$watch('end.getTime()', function (value) { - if (value && scope.start && value < scope.start.getTime()) { - scope.start = new Date(value); - } - }); - } - }; - }); +// Module.directive('dateTime', function ($compile, $document, $filter) { +// var body = $document.find('body'); +// var dateFilter = $filter('date'); +// return { +// require: 'ngModel', +// link : function (scope, element, attrs, ngModel) { +// var format = attrs.format || 'yyyy-MM-dd HH:mm'; +// +// var viewsOptions = ['date', 'year', 'month', 'hours', 'minutes', 'month']; +// var views = []; +// for (var attr in attrs) { +// //noinspection JSUnfilteredForInLoop +// if (viewsOptions.indexOf(attr) !== -1) { //noinspection JSUnfilteredForInLoop +// views.push(attr); +// } +// } +// +// function formatter(value) { +// return dateFilter(value, format); +// } +// +// ngModel.$formatters.push(formatter); +// +// var picker = null; +// var clear = function(){ +// if(picker){ +// picker.remove(); +// picker = null; +// } +// }; +// var template = ''; +// +// function update(obj,date){ +// ngModel.$setViewValue(date); +// } +// +// element.bind('focus', function () { +// if (!picker) { +// // create picker element +// picker = $compile(template)(scope); +// body.append(picker); +// scope.$digest(); +// +// +// scope.$on('setDate', update); +// scope.$on('setMonth',update); +// scope.$on('setHours',update); +// scope.$on('setYear', update); +// +// var pos = angular.extend(element.offset(), { height: element[0].offsetHeight }); +// picker.css({ top: pos.top + pos.height, left: pos.left, display: 'block', position: 'absolute'}); +// picker.bind('mousedown', function () { +// return false; +// }); +// } +// return false; +// }); +// element.bind('blur', clear); +// } +// }; +// }); + +// Module.directive('dateRange', function () { +// return { +// templateUrl: 'templates/daterange.html', +// scope : { +// start: '=', +// end : '=' +// }, +// link : function (scope) { +// scope.$watch('start.getTime()', function (value) { +// if (value && scope.end && value > scope.end.getTime()) { +// scope.end = new Date(value); +// } +// }); +// scope.$watch('end.getTime()', function (value) { +// if (value && scope.start && value < scope.start.getTime()) { +// scope.start = new Date(value); +// } +// }); +// } +// }; +// }); })(angular); diff --git a/app/templates/datepicker.html b/app/templates/datepicker.html index 2c4fe30..060c6dc 100644 --- a/app/templates/datepicker.html +++ b/app/templates/datepicker.html @@ -1,127 +1,132 @@
-
-
- - - - - - - - - - - - - - - - - - - - - -
{{visibleDate|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }} -
-
-
- - - - - - - - - - - - - -
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
- {{year.getFullYear()}} -
-
+
+
+ + + + + + + + + + + + + + + + + + + + + +
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE"}}
{{ day.getDate() }} + -
- - - - - - - - - - - + + + + + + + +
{{ visibleDate|date:"yyyy" }}
+
+
+
+ + + + + + + + + + + + + +
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
+ {{year.getFullYear()}} + + +
+
+ +
+ + + + + + + + + + + - - - - - - - -
{{ date|date:"yyyy" }}
{{month|date:'MMM'}} -
-
+ ng-click="setDate(month)">{{month|date:'MMM'}} -
- - - - - - - - - - - + + + + + + + +
{{ visibleDate|date:"dd MMMM yyyy" }}
+
+
+ +
+ + + + + + + + + + + - - - - - - - -
{{ date|date:"dd MMMM yyyy" }}
{{hour|date:"HH:mm"}} -
-
-
- - - - - - - - - - - - - - - - - - -
{{ visibleDate|date:"dd MMMM yyyy HH:mm" }} -
- {{minute|date:"HH:mm"}} -
-
+ ng-click="setDate(hour)">{{hour|date:"HH:mm"}} +
+
+ + + + + + + + + + + + + + + + + + +
{{ date|date:"dd MMMM yyyy HH:mm" }} +
+ + {{minute|date:"HH:mm"}} +
+
+
From c3cbe2c86e31edd70e0ad76e5a5175eecf90a984 Mon Sep 17 00:00:00 2001 From: g00fy Date: Tue, 8 Oct 2013 00:22:07 +0200 Subject: [PATCH 08/60] stage 3 --- app/index.html | 129 ++++++++------- app/scripts/datePicker.js | 273 ++++++++++++++++++++++++++++++++ app/scripts/dateRange.js | 26 +++ app/scripts/input.js | 130 +++++++++++++++ app/scripts/module.js | 290 ---------------------------------- app/styles/style.less | 3 + app/templates/datepicker.html | 238 ++++++++++++++-------------- app/templates/daterange.html | 6 +- 8 files changed, 626 insertions(+), 469 deletions(-) create mode 100644 app/scripts/datePicker.js create mode 100644 app/scripts/dateRange.js create mode 100644 app/scripts/input.js create mode 100644 app/styles/style.less diff --git a/app/index.html b/app/index.html index 620eac4..4b441e3 100644 --- a/app/index.html +++ b/app/index.html @@ -12,7 +12,6 @@ -

{{ start }}

Calendar

@@ -21,66 +20,81 @@

views

default
<div date-picker="start"></div> 
- {{ start }} -
+
- - -
- - - - - - - - - - - - +
year
+
<div date-picker="start"  year></div> 
+
+
month
+
<div date-picker="start month></div> 
+
+
date
+
<div date-picker="start" date></div> 
+
+
hours
+
<div date-picker="start" hours></div> 
+
+
minutes
+
<div date-picker="start" minutes></div> 
+
- - - - - - - - - - - - - - - - - - - - - +
+

Input

+
default
+

+      
 
-      
-        
-      
-    
-    
-    
-    
-    
+    

Input with append

+
default
+
<input type="datetime" ng-model="model" date-time></div> 
+
+ + +
+

Input with prepend

+
default
+
<input type="datetime" ng-model="model" date-time></div> 
+
+ + +
- - - - +
Input format
+
<input type="datetime" ng-model="model" date-time format="long"></div> 
+ +
A button
+
<div class="dropdown">
+  <a class="dropdown-toggle btn btn-danger">
+    pick a date: {{(date|date)}}
+  </a>
+  <div class="dropdown-menu" ng-click="$event.preventDefault();$event.stopPropagation()">
+    <div date-picker="date" class="datetimepicker"></div>
+  </div>
+</div>
+ +
Date range
+
<div date-range start="start" end="end" ></div> 
+
+
Date range button
+ + +
@@ -88,6 +102,9 @@
default
+ + + - diff --git a/component.json b/component.json deleted file mode 100644 index 3ac71d5..0000000 --- a/component.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "dateInput", - "version": "0.0.0", - "dependencies": { - "angular": "~1.0.5", - "json3": "~3.2.4", - "es5-shim": "~2.0.8" - }, - "devDependencies": { - "angular-mocks": "~1.0.5", - "angular-scenario": "~1.0.5" - } -} From 1980479bf6d15aebf7fa8910c9b89aab37b4e87d Mon Sep 17 00:00:00 2001 From: Piotrek Date: Mon, 14 Oct 2013 09:52:51 +0200 Subject: [PATCH 13/60] fix input --- app/scripts/input.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/scripts/input.js b/app/scripts/input.js index bc6b342..c18f2fb 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -10,7 +10,7 @@ Module.constant('dateTimeConfig', { return '' + '
'); -// element.before(container); -// container.append(picker); - element.before(picker); - picker.css({position: 'relative', top: element[0].offsetHeight, display: 'block'}); + container = angular.element('
'); + element.before(container); + container.append(picker); +// this approach doesn't work +// element.before(picker); + picker.css({top: element[0].offsetHeight, display: 'block'}); } picker.bind('mousedown', function () { From d52b9129af0c9dcf9f77d493b43f9cc64614581c Mon Sep 17 00:00:00 2001 From: Piotrek Date: Mon, 14 Oct 2013 09:55:38 +0200 Subject: [PATCH 14/60] build --- app/scripts/input.js | 8 ++--- dist/README.md | 79 -------------------------------------------- dist/bower.json | 19 ----------- dist/index.js | 13 ++++---- dist/index.min.js | 2 +- 5 files changed, 12 insertions(+), 109 deletions(-) delete mode 100644 dist/README.md delete mode 100644 dist/bower.json diff --git a/app/scripts/input.js b/app/scripts/input.js index c18f2fb..dc2943b 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -119,12 +119,12 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon body.append(picker); } else { // relative - container = angular.element('
'); - element.before(container); - container.append(picker); + container = angular.element('
'); + element.before(container); + container.append(picker); // this approach doesn't work // element.before(picker); - picker.css({top: element[0].offsetHeight, display: 'block'}); + picker.css({top: element[0].offsetHeight, display: 'block'}); } picker.bind('mousedown', function () { diff --git a/dist/README.md b/dist/README.md deleted file mode 100644 index b4f3038..0000000 --- a/dist/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# AngularJS datepicker directives - -#### Requirements - -- Angular v1.1.4+ -- jQuery or your own implementation of `position()` on top of `jQuery Lite` - - -#### Development version - -Checkout branch `dev`, run `grunt install` and `bower install`. -To build run `gunt build` - -## Examples - -Live demo : http://run.plnkr.co/erJj712N4bbkGsub/ - - -##### defaults - -```html -
-``` - - -##### year view - -```html -
-``` - - -##### month view - -```html -
-``` - - -##### only date view - -```html -
-``` - - -##### hours view - -```html -
-``` - - -##### minutes view - -```html -
-``` - - -##### input as datepicker - -```html - -``` - - -##### input with formatted value - -```html - -``` - - -##### date-range picker - -```html -
-``` diff --git a/dist/bower.json b/dist/bower.json deleted file mode 100644 index 849ab2f..0000000 --- a/dist/bower.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "angular-datepicker", - "license": "MIT", - "version": "0.1.0", - "ignore": [ - ".gitignore","README.md" - ], - "dependencies": {}, - "devDependencies": { - "angular": "1.2.0-rc.2", - "jquery": "~2.0.2", - "angular-mocks": "~1.0.5", - "angular-scenario": "~1.0.5", - "angular-bootstrap": "~0.3.0" - }, - "resolutions": { - "angular": "1.2.0-rc.2" - } -} diff --git a/dist/index.js b/dist/index.js index 85653ef..0061f0f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -321,7 +321,7 @@ Module.constant('dateTimeConfig', { return '' + '
'); -// element.before(container); -// container.append(picker); - element.before(picker); - picker.css({position: 'relative', top: element[0].offsetHeight, display: 'block'}); + container = angular.element('
'); + element.before(container); + container.append(picker); +// this approach doesn't work +// element.before(picker); + picker.css({top: element[0].offsetHeight, display: 'block'}); } picker.bind('mousedown', function () { diff --git a/dist/index.min.js b/dist/index.min.js index 56cd436..6b5dd67 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"hour":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b
'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else d.before(x),x.css({position:"relative",top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"hour":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d.before(z),z.append(x),x.css({top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file From e367fc670c1e314ca8a56b0e57dbbd4ea206f56b Mon Sep 17 00:00:00 2001 From: g00fy- Date: Mon, 14 Oct 2013 10:21:56 +0200 Subject: [PATCH 15/60] fixed `now` highlight --- app/scripts/datePicker.js | 5 ++++- app/styles/style.less | 6 +++++- app/templates/datepicker.html | 10 +++++----- dist/index.min.js | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index c9e98f4..ad16c7c 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -263,7 +263,10 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { var now = scope.now; //noinspection FallThroughInSwitchStatementJS switch (scope.view) { - case 'hour': + case 'minutes': + is &= ~~(date.getMinutes()/step) === ~~(now.getMinutes()/step); + /*falls through*/ + case 'hours': is &= date.getHours() === now.getHours(); /*falls through*/ case 'date': diff --git a/app/styles/style.less b/app/styles/style.less index a77835e..3d7ccf4 100644 --- a/app/styles/style.less +++ b/app/styles/style.less @@ -64,12 +64,16 @@ } - .active { + .active , .now{ .buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20)); color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); } + .now { + .buttonBackground(@btnDangerBackground, spin(@btnDangerBackground, 20)); + } + .disabled { background: none; color: #999999 !important; diff --git a/app/templates/datepicker.html b/app/templates/datepicker.html index e65a68b..ddb9f40 100644 --- a/app/templates/datepicker.html +++ b/app/templates/datepicker.html @@ -14,7 +14,7 @@ @@ -33,7 +33,7 @@ - @@ -56,7 +56,7 @@ {{month|date:'MMM'}} @@ -77,7 +77,7 @@ @@ -98,7 +98,7 @@ {{minute|date:"HH:mm"}} diff --git a/dist/index.min.js b/dist/index.min.js index 6b5dd67..5537bb2 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"hour":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d.before(z),z.append(x),x.css({top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/n)===~~(c.getMinutes()/n);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d.before(z),z.append(x),x.css({top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file From d3235948739b0d6b6de8aebb22f2f7572f330834 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Mon, 14 Oct 2013 10:28:24 +0200 Subject: [PATCH 16/60] fixed `now` highlight - bad previous commit --- dist/index.css | 46 +++++++++++++++++++++++++++++++++++++++++++--- dist/index.js | 15 +++++++++------ dist/index.min.css | 2 +- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/dist/index.css b/dist/index.css index 14be00f..169f4b1 100644 --- a/dist/index.css +++ b/dist/index.css @@ -129,7 +129,8 @@ background: none; } -[date-picker] .active { +[date-picker] .active, +[date-picker] .now { color: #ffffff; color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); @@ -148,20 +149,59 @@ } [date-picker] .active:hover, +[date-picker] .now:hover, [date-picker] .active:active, +[date-picker] .now:active, [date-picker] .active.active, +[date-picker] .now.active, [date-picker] .active.disabled, -[date-picker] .active[disabled] { +[date-picker] .now.disabled, +[date-picker] .active[disabled], +[date-picker] .now[disabled] { color: #ffffff; background-color: #0044cc; *background-color: #003bb3; } [date-picker] .active:active, -[date-picker] .active.active { +[date-picker] .now:active, +[date-picker] .active.active, +[date-picker] .now.active { background-color: #003399 \9; } +[date-picker] .now { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ee735b; + *background-color: #ee905b; + background-image: -moz-linear-gradient(top, #ee5f5b, #ee905b); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#ee905b)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #ee905b); + background-image: -o-linear-gradient(top, #ee5f5b, #ee905b); + background-image: linear-gradient(to bottom, #ee5f5b, #ee905b); + background-repeat: repeat-x; + border-color: #ee905b #ee905b #e56218; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +[date-picker] .now:hover, +[date-picker] .now:active, +[date-picker] .now.active, +[date-picker] .now.disabled, +[date-picker] .now[disabled] { + color: #ffffff; + background-color: #ee905b; + *background-color: #ec8044; +} + +[date-picker] .now:active, +[date-picker] .now.active { + background-color: #e9712d \9; +} + [date-picker] .disabled { color: #999999 !important; cursor: default; diff --git a/dist/index.js b/dist/index.js index 0061f0f..02141c9 100644 --- a/dist/index.js +++ b/dist/index.js @@ -265,7 +265,10 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { var now = scope.now; //noinspection FallThroughInSwitchStatementJS switch (scope.view) { - case 'hour': + case 'minutes': + is &= ~~(date.getMinutes()/step) === ~~(now.getMinutes()/step); + /*falls through*/ + case 'hours': is &= date.getHours() === now.getHours(); /*falls through*/ case 'date': @@ -468,7 +471,7 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { " \n" + " \n" + " \n" + " \n" + " \n" + @@ -487,7 +490,7 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { " \n" + " \n" + " \n" + - " \n" + "\n" + @@ -510,7 +513,7 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { " \n" + " \n" + " {{month|date:'MMM'}}\n" + "\n" + " \n" + @@ -531,7 +534,7 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { " \n" + " \n" + " \n" + " \n" + " \n" + @@ -552,7 +555,7 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { " \n" + " \n" + " {{minute|date:\"HH:mm\"}}\n" + " \n" + " \n" + diff --git a/dist/index.min.css b/dist/index.min.css index 80c2bb6..c5f6a76 100644 --- a/dist/index.min.css +++ b/dist/index.min.css @@ -1 +1 @@ -.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[date-picker-wrapper]{position:relative!important;display:block}[date-time-append] [date-picker]{position:relative;margin-right:-1000px;margin-bottom:-1000px}[date-range] [date-picker] .after.before{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#499dcd;*background-color:#2f6ab4;background-image:-moz-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f6ab4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-o-linear-gradient(top,#5bc0de,#2f6ab4);background-image:linear-gradient(to bottom,#5bc0de,#2f6ab4);background-repeat:repeat-x;border-color:#2f6ab4 #2f6ab4 #1f4677;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-range] [date-picker] .after.before:hover,[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active,[date-range] [date-picker] .after.before.disabled,[date-range] [date-picker] .after.before[disabled]{color:#fff;background-color:#2f6ab4;*background-color:#2a5ea0}[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active{background-color:#24528c \9}[date-picker]{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{width:20px;height:20px;padding:4px 5px;text-align:center;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] .switch{width:145px}[date-picker] span{display:block;float:left;width:23%;height:26px;margin:1%;line-height:25px;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] span:hover{background:#eee}[date-picker] span.disabled,[date-picker] span.disabled:hover{color:#999;cursor:default;background:0}[date-picker] .active{color:#fff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .active:hover,[date-picker] .active:active,[date-picker] .active.active,[date-picker] .active.disabled,[date-picker] .active[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}[date-picker] .active:active,[date-picker] .active.active{background-color:#039 \9}[date-picker] .disabled{color:#999!important;cursor:default;background:0}[date-picker] [ng-switch-when=year] span,[date-picker] [ng-switch-when=month] span,[date-picker] [ng-switch-when=minutes] span{height:54px;line-height:54px}[date-picker] th:hover,[date-picker] [ng-switch-when=date] td:hover{cursor:pointer;background:#eee} \ No newline at end of file +.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[date-picker-wrapper]{position:relative!important;display:block}[date-time-append] [date-picker]{position:relative;margin-right:-1000px;margin-bottom:-1000px}[date-range] [date-picker] .after.before{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#499dcd;*background-color:#2f6ab4;background-image:-moz-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f6ab4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-o-linear-gradient(top,#5bc0de,#2f6ab4);background-image:linear-gradient(to bottom,#5bc0de,#2f6ab4);background-repeat:repeat-x;border-color:#2f6ab4 #2f6ab4 #1f4677;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-range] [date-picker] .after.before:hover,[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active,[date-range] [date-picker] .after.before.disabled,[date-range] [date-picker] .after.before[disabled]{color:#fff;background-color:#2f6ab4;*background-color:#2a5ea0}[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active{background-color:#24528c \9}[date-picker]{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{width:20px;height:20px;padding:4px 5px;text-align:center;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] .switch{width:145px}[date-picker] span{display:block;float:left;width:23%;height:26px;margin:1%;line-height:25px;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] span:hover{background:#eee}[date-picker] span.disabled,[date-picker] span.disabled:hover{color:#999;cursor:default;background:0}[date-picker] .active,[date-picker] .now{color:#fff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .active:hover,[date-picker] .now:hover,[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active,[date-picker] .active.disabled,[date-picker] .now.disabled,[date-picker] .active[disabled],[date-picker] .now[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active{background-color:#039 \9}[date-picker] .now{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ee735b;*background-color:#ee905b;background-image:-moz-linear-gradient(top,#ee5f5b,#ee905b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#ee905b));background-image:-webkit-linear-gradient(top,#ee5f5b,#ee905b);background-image:-o-linear-gradient(top,#ee5f5b,#ee905b);background-image:linear-gradient(to bottom,#ee5f5b,#ee905b);background-repeat:repeat-x;border-color:#ee905b #ee905b #e56218;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .now:hover,[date-picker] .now:active,[date-picker] .now.active,[date-picker] .now.disabled,[date-picker] .now[disabled]{color:#fff;background-color:#ee905b;*background-color:#ec8044}[date-picker] .now:active,[date-picker] .now.active{background-color:#e9712d \9}[date-picker] .disabled{color:#999!important;cursor:default;background:0}[date-picker] [ng-switch-when=year] span,[date-picker] [ng-switch-when=month] span,[date-picker] [ng-switch-when=minutes] span{height:54px;line-height:54px}[date-picker] th:hover,[date-picker] [ng-switch-when=date] td:hover{cursor:pointer;background:#eee} \ No newline at end of file From f2afba562b42fb7df5e81c3cf2d0c562808387bb Mon Sep 17 00:00:00 2001 From: g00fy- Date: Mon, 14 Oct 2013 11:14:48 +0200 Subject: [PATCH 17/60] fix(input): added scope, to prevent overriding & fix validation (ng-pristine/ng-dirty) issues --- app/scripts/input.js | 1 + dist/index.min.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/scripts/input.js b/app/scripts/input.js index dc2943b..533a52e 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -38,6 +38,7 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon return { require: 'ngModel', + scope:true, link: function (scope, element, attrs, ngModel) { var format = attrs.format || dateTimeConfig.format; var parentForm = element.inheritedData('$formController'); diff --git a/dist/index.min.js b/dist/index.min.js index 5537bb2..8cf1a46 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/n)===~~(c.getMinutes()/n);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d.before(z),z.append(x),x.css({top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/n)===~~(c.getMinutes()/n);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d.before(z),z.append(x),x.css({top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file From 4fe2e175e40015be72a7a906532ed3a039372765 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Mon, 14 Oct 2013 11:20:02 +0200 Subject: [PATCH 18/60] fix(build): why is this happening to me? --- dist/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/dist/index.js b/dist/index.js index 02141c9..3ce8cdc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -352,6 +352,7 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon return { require: 'ngModel', + scope:true, link: function (scope, element, attrs, ngModel) { var format = attrs.format || dateTimeConfig.format; var parentForm = element.inheritedData('$formController'); From 77db897e6aaad7da082a679c580af0571eb4c991 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Mon, 14 Oct 2013 13:08:12 +0200 Subject: [PATCH 19/60] fix(css): add span to every view --- app/styles/style.less | 13 ++++++++++++- app/templates/datepicker.html | 5 +++-- dist/index.css | 12 +++++++++++- dist/index.js | 5 +++-- dist/index.min.css | 2 +- dist/index.min.js | 2 +- 6 files changed, 31 insertions(+), 8 deletions(-) diff --git a/app/styles/style.less b/app/styles/style.less index 3d7ccf4..d788996 100644 --- a/app/styles/style.less +++ b/app/styles/style.less @@ -88,7 +88,18 @@ line-height: 54px; } } - th:hover, [ng-switch-when="date"] td:hover{ + [ng-switch-when="date"]{ + td { + padding: 0; + } + span{ + width: 100%; + height: 26px; + line-height: 26px; + } + } + + th:hover, [ng-switch-when="date"] td span:hover{ background: @grayLighter; cursor: pointer; } diff --git a/app/templates/datepicker.html b/app/templates/datepicker.html index ddb9f40..856aec1 100644 --- a/app/templates/datepicker.html +++ b/app/templates/datepicker.html @@ -13,9 +13,10 @@ - + + ng-click="setDate(day)" ng-bind="day.getDate()"> diff --git a/dist/index.css b/dist/index.css index 169f4b1..084d189 100644 --- a/dist/index.css +++ b/dist/index.css @@ -215,8 +215,18 @@ line-height: 54px; } +[date-picker] [ng-switch-when="date"] td { + padding: 0; +} + +[date-picker] [ng-switch-when="date"] span { + width: 100%; + height: 26px; + line-height: 26px; +} + [date-picker] th:hover, -[date-picker] [ng-switch-when="date"] td:hover { +[date-picker] [ng-switch-when="date"] td span:hover { cursor: pointer; background: #eeeeee; } \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 3ce8cdc..64f8d51 100644 --- a/dist/index.js +++ b/dist/index.js @@ -471,9 +471,10 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { " \n" + " \n" + " \n" + - " \n" + + " \n" + + " ng-click=\"setDate(day)\" ng-bind=\"day.getDate()\">\n" + " \n" + " \n" + " \n" + diff --git a/dist/index.min.css b/dist/index.min.css index c5f6a76..43975d3 100644 --- a/dist/index.min.css +++ b/dist/index.min.css @@ -1 +1 @@ -.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[date-picker-wrapper]{position:relative!important;display:block}[date-time-append] [date-picker]{position:relative;margin-right:-1000px;margin-bottom:-1000px}[date-range] [date-picker] .after.before{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#499dcd;*background-color:#2f6ab4;background-image:-moz-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f6ab4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-o-linear-gradient(top,#5bc0de,#2f6ab4);background-image:linear-gradient(to bottom,#5bc0de,#2f6ab4);background-repeat:repeat-x;border-color:#2f6ab4 #2f6ab4 #1f4677;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-range] [date-picker] .after.before:hover,[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active,[date-range] [date-picker] .after.before.disabled,[date-range] [date-picker] .after.before[disabled]{color:#fff;background-color:#2f6ab4;*background-color:#2a5ea0}[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active{background-color:#24528c \9}[date-picker]{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{width:20px;height:20px;padding:4px 5px;text-align:center;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] .switch{width:145px}[date-picker] span{display:block;float:left;width:23%;height:26px;margin:1%;line-height:25px;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] span:hover{background:#eee}[date-picker] span.disabled,[date-picker] span.disabled:hover{color:#999;cursor:default;background:0}[date-picker] .active,[date-picker] .now{color:#fff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .active:hover,[date-picker] .now:hover,[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active,[date-picker] .active.disabled,[date-picker] .now.disabled,[date-picker] .active[disabled],[date-picker] .now[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active{background-color:#039 \9}[date-picker] .now{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ee735b;*background-color:#ee905b;background-image:-moz-linear-gradient(top,#ee5f5b,#ee905b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#ee905b));background-image:-webkit-linear-gradient(top,#ee5f5b,#ee905b);background-image:-o-linear-gradient(top,#ee5f5b,#ee905b);background-image:linear-gradient(to bottom,#ee5f5b,#ee905b);background-repeat:repeat-x;border-color:#ee905b #ee905b #e56218;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .now:hover,[date-picker] .now:active,[date-picker] .now.active,[date-picker] .now.disabled,[date-picker] .now[disabled]{color:#fff;background-color:#ee905b;*background-color:#ec8044}[date-picker] .now:active,[date-picker] .now.active{background-color:#e9712d \9}[date-picker] .disabled{color:#999!important;cursor:default;background:0}[date-picker] [ng-switch-when=year] span,[date-picker] [ng-switch-when=month] span,[date-picker] [ng-switch-when=minutes] span{height:54px;line-height:54px}[date-picker] th:hover,[date-picker] [ng-switch-when=date] td:hover{cursor:pointer;background:#eee} \ No newline at end of file +.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[date-picker-wrapper]{position:relative!important;display:block}[date-time-append] [date-picker]{position:relative;margin-right:-1000px;margin-bottom:-1000px}[date-range] [date-picker] .after.before{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#499dcd;*background-color:#2f6ab4;background-image:-moz-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f6ab4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-o-linear-gradient(top,#5bc0de,#2f6ab4);background-image:linear-gradient(to bottom,#5bc0de,#2f6ab4);background-repeat:repeat-x;border-color:#2f6ab4 #2f6ab4 #1f4677;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-range] [date-picker] .after.before:hover,[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active,[date-range] [date-picker] .after.before.disabled,[date-range] [date-picker] .after.before[disabled]{color:#fff;background-color:#2f6ab4;*background-color:#2a5ea0}[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active{background-color:#24528c \9}[date-picker]{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{width:20px;height:20px;padding:4px 5px;text-align:center;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] .switch{width:145px}[date-picker] span{display:block;float:left;width:23%;height:26px;margin:1%;line-height:25px;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] span:hover{background:#eee}[date-picker] span.disabled,[date-picker] span.disabled:hover{color:#999;cursor:default;background:0}[date-picker] .active,[date-picker] .now{color:#fff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .active:hover,[date-picker] .now:hover,[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active,[date-picker] .active.disabled,[date-picker] .now.disabled,[date-picker] .active[disabled],[date-picker] .now[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active{background-color:#039 \9}[date-picker] .now{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ee735b;*background-color:#ee905b;background-image:-moz-linear-gradient(top,#ee5f5b,#ee905b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#ee905b));background-image:-webkit-linear-gradient(top,#ee5f5b,#ee905b);background-image:-o-linear-gradient(top,#ee5f5b,#ee905b);background-image:linear-gradient(to bottom,#ee5f5b,#ee905b);background-repeat:repeat-x;border-color:#ee905b #ee905b #e56218;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .now:hover,[date-picker] .now:active,[date-picker] .now.active,[date-picker] .now.disabled,[date-picker] .now[disabled]{color:#fff;background-color:#ee905b;*background-color:#ec8044}[date-picker] .now:active,[date-picker] .now.active{background-color:#e9712d \9}[date-picker] .disabled{color:#999!important;cursor:default;background:0}[date-picker] [ng-switch-when=year] span,[date-picker] [ng-switch-when=month] span,[date-picker] [ng-switch-when=minutes] span{height:54px;line-height:54px}[date-picker] [ng-switch-when=date] td{padding:0}[date-picker] [ng-switch-when=date] span{width:100%;height:26px;line-height:26px}[date-picker] th:hover,[date-picker] [ng-switch-when=date] td span:hover{cursor:pointer;background:#eee} \ No newline at end of file diff --git a/dist/index.min.js b/dist/index.min.js index 8cf1a46..2024df3 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/n)===~~(c.getMinutes()/n);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d.before(z),z.append(x),x.css({top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/n)===~~(c.getMinutes()/n);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d.before(z),z.append(x),x.css({top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file From 94689bbfffe68136bc066b033f1581adb1fe44f3 Mon Sep 17 00:00:00 2001 From: asdf Date: Fri, 8 Nov 2013 10:42:58 +0100 Subject: [PATCH 20/60] don't require jquery in the 'relative' branch of a if/else in input You can just as well use the relative version of input without loading jquery now. --- app/scripts/input.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/scripts/input.js b/app/scripts/input.js index 533a52e..e86964c 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -121,15 +121,15 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon } else { // relative container = angular.element('
'); - element.before(container); + element[0].parentElement.insertBefore(container[0], element[0]); container.append(picker); // this approach doesn't work // element.before(picker); - picker.css({top: element[0].offsetHeight, display: 'block'}); + picker.css({top: element[0].offsetHeight + 'px', display: 'block'}); } - picker.bind('mousedown', function () { - return false; + picker.bind('mousedown', function (evt) { + evt.preventDefault(); }); } From bc5b962093d610477b6b856f65cc607a39991ab9 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Fri, 8 Nov 2013 10:47:02 +0100 Subject: [PATCH 21/60] build(input): don't require jquery in `relative` branch --- dist/index.js | 8 ++++---- dist/index.min.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/index.js b/dist/index.js index 64f8d51..71b75db 100644 --- a/dist/index.js +++ b/dist/index.js @@ -435,15 +435,15 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon } else { // relative container = angular.element('
'); - element.before(container); + element[0].parentElement.insertBefore(container[0], element[0]); container.append(picker); // this approach doesn't work // element.before(picker); - picker.css({top: element[0].offsetHeight, display: 'block'}); + picker.css({top: element[0].offsetHeight + 'px', display: 'block'}); } - picker.bind('mousedown', function () { - return false; + picker.bind('mousedown', function (evt) { + evt.preventDefault(); }); } diff --git a/dist/index.min.js b/dist/index.min.js index 2024df3..73aad58 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/n)===~~(c.getMinutes()/n);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d.before(z),z.append(x),x.css({top:d[0].offsetHeight,display:"block"});x.bind("mousedown",function(){return!1})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/n)===~~(c.getMinutes()/n);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file From 3b6d965857ac1020786ed3748a90509343c93825 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Tue, 12 Nov 2013 10:03:29 +0100 Subject: [PATCH 22/60] fix(input): fixed dateTimeAppend : works without jQuery --- app/scripts/input.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/scripts/input.js b/app/scripts/input.js index e86964c..fcc0543 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -26,7 +26,7 @@ Module.directive('dateTimeAppend', function () { return { link: function (scope, element) { element.bind('click', function () { - element.find('input').focus(); + element.find('input')[0].focus(); }); } }; From a65e5496986c099b5544564410cf2dc2034d2dca Mon Sep 17 00:00:00 2001 From: g00fy- Date: Tue, 12 Nov 2013 10:26:32 +0100 Subject: [PATCH 23/60] fix(datePicker): fixed maxView & minView --- app/index.html | 114 +++++++++++++++++++++++++++----------- app/scripts/datePicker.js | 18 ++---- 2 files changed, 87 insertions(+), 45 deletions(-) diff --git a/app/index.html b/app/index.html index cd2bdc2..c334249 100644 --- a/app/index.html +++ b/app/index.html @@ -16,37 +16,90 @@

Calendar

-

views

-
default
-
<div date-picker="start"></div> 
- -
- -
year
-
<div date-picker="start"  year></div> 
-
-
month
-
<div date-picker="start month></div> 
-
-
date
-
<div date-picker="start" date></div> 
-
-
hours
-
<div date-picker="start" hours></div> 
-
-
minutes
-
<div date-picker="start" minutes></div> 
-
+
+

default views

+ +
year
+
+ +
month
+
+ +
date
+
+ +
hours
+
+ +
minutes
+
+
+ + + +
+

min views

+ +
year
+
+ +
month
+
+ +
date
+
+ +
hours
+
+ +
minutes
+
+
+ + +
+

max views

+ +
year
+
+ +
month
+
+ +
date
+
+ +
hours
+
+ +
maxutes
+
+
+ +
+

max & min views

+ +
time
+
+ +
date
+
+ +
+ +
+ +

Input

default

-      
+    
 
     

Input with append

default
-
<input type="datetime" ng-model="model" date-time></div> 
+
@@ -54,24 +107,16 @@
default

Input with prepend

default
-
<input type="datetime" ng-model="model" date-time></div> 
+
Input format
-
<input type="datetime" ng-model="model" date-time format="long"></div> 
A button
-
<div class="dropdown">
-  <a class="dropdown-toggle btn btn-danger">
-    pick a date: {{(date|date)}}
-  </a>
-  <div class="dropdown-menu" ng-click="$event.preventDefault();$event.stopPropagation()">
-    <div date-picker="date" class="datetimepicker"></div>
-  </div>
-</div>
+
+ + +
Date range
<div date-range start="start" end="end" ></div> 
diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index ad16c7c..b1e26ec 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -116,20 +116,14 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { scope.template = attrs.template || datePickerConfig.template; var step = parseInt(attrs.step || datePickerConfig.step, 10); - var index; - /** @namespace attrs.minView */ - if (attrs.minView) { - index = scope.views.indexOf(attrs.minView); - scope.views.splice(0, index); - } - /** @namespace attrs.maxView */ - if (attrs.maxView) { - index = scope.views.indexOf(attrs.maxView); - scope.views.splice(index + 1); - } + /** @namespace attrs.minView, attrs.maxView */ + scope.views =scope.views.slice( + scope.views.indexOf(attrs.maxView || 'year'), + scope.views.indexOf(attrs.minView || 'minutes')+1 + ); - if (scope.views.length === 1) { + if (scope.views.length === 1 || scope.views.indexOf(scope.view)==-1) { scope.view = scope.views[0]; } From f5391dca2a469cfa09dd8635d3b86dca0ee0ed78 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Tue, 12 Nov 2013 10:34:11 +0100 Subject: [PATCH 24/60] build(1.0.2) --- app/index.html | 35 ++++++++++++++++++++++++----------- app/scripts/datePicker.js | 2 +- dist/index.js | 20 +++++++------------- dist/index.min.js | 2 +- 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/app/index.html b/app/index.html index c334249..a5a907a 100644 --- a/app/index.html +++ b/app/index.html @@ -20,59 +20,73 @@

Calendar

default views

year
+
month
+
date
+
hours
+
minutes
+
-

min views

year
+
month
+
date
+
hours
+
minutes
+
- - + +

max views

year
+
month
+
date
+
hours
+
maxutes
+
@@ -80,9 +94,11 @@
maxutes

max & min views

time
+
date
+
@@ -94,8 +110,7 @@
date

Input

default
-

-    
+    
 
     

Input with append

default
@@ -110,7 +125,7 @@
default
- +
Input format
@@ -128,9 +143,8 @@
A button
-
Date range
-
<div date-range start="start" end="end" ></div> 
+
Date range button
@@ -146,9 +160,8 @@
Date range button
- - - + + diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index b1e26ec..ed7393e 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -123,7 +123,7 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { scope.views.indexOf(attrs.minView || 'minutes')+1 ); - if (scope.views.length === 1 || scope.views.indexOf(scope.view)==-1) { + if (scope.views.length === 1 || scope.views.indexOf(scope.view)===-1) { scope.view = scope.views[0]; } diff --git a/dist/index.js b/dist/index.js index 71b75db..279fc8c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -118,20 +118,14 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { scope.template = attrs.template || datePickerConfig.template; var step = parseInt(attrs.step || datePickerConfig.step, 10); - var index; - /** @namespace attrs.minView */ - if (attrs.minView) { - index = scope.views.indexOf(attrs.minView); - scope.views.splice(0, index); - } - /** @namespace attrs.maxView */ - if (attrs.maxView) { - index = scope.views.indexOf(attrs.maxView); - scope.views.splice(index + 1); - } + /** @namespace attrs.minView, attrs.maxView */ + scope.views =scope.views.slice( + scope.views.indexOf(attrs.maxView || 'year'), + scope.views.indexOf(attrs.minView || 'minutes')+1 + ); - if (scope.views.length === 1) { + if (scope.views.length === 1 || scope.views.indexOf(scope.view)===-1) { scope.view = scope.views[0]; } @@ -340,7 +334,7 @@ Module.directive('dateTimeAppend', function () { return { link: function (scope, element) { element.bind('click', function () { - element.find('input').focus(); + element.find('input')[0].focus(); }); } }; diff --git a/dist/index.min.js b/dist/index.min.js index 73aad58..793ff54 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,n)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m,n=parseInt(j.step||a.step,10);j.minView&&(m=h.views.indexOf(j.minView),h.views.splice(0,m)),j.maxView&&(m=h.views.indexOf(j.maxView),h.views.splice(m+1)),1===h.views.length&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/n)===~~(c.getMinutes()/n);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input").focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,m)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m=parseInt(j.step||a.step,10);h.views=h.views.slice(h.views.indexOf(j.maxView||"year"),h.views.indexOf(j.minView||"minutes")+1),(1===h.views.length||-1===h.views.indexOf(h.view))&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/m)===~~(c.getMinutes()/m);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file From ffaadaf35a7af4c8ab70d83fd073ed4be4245e21 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Tue, 12 Nov 2013 10:40:37 +0100 Subject: [PATCH 25/60] fix(README): updated live demo --- README.md | 2 +- app/index.html | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c93d277..6a41146 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ To build run `gunt build` ## Examples -Live demo : todo +[Live demo](https://rawgithub.com/g00fy-/angular-datepicker/master/app/index.html) ##### defaults diff --git a/app/index.html b/app/index.html index a5a907a..6f70cc0 100644 --- a/app/index.html +++ b/app/index.html @@ -8,6 +8,7 @@ + From d002f3f0b6e756f17ee7f4c0eb74884002b9be45 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Tue, 12 Nov 2013 17:01:29 +0100 Subject: [PATCH 26/60] Update index.html --- app/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/index.html b/app/index.html index 6f70cc0..76bff64 100644 --- a/app/index.html +++ b/app/index.html @@ -8,9 +8,9 @@ - +
From 60ef76373a9706ae0e1b6a7a64ddfa915734fba5 Mon Sep 17 00:00:00 2001 From: g00fy- Date: Tue, 3 Dec 2013 11:25:16 +0100 Subject: [PATCH 27/60] fix(input): dismiss only on last view --- README.md | 3 +-- app/scripts/input.js | 6 +++--- dist/index.js | 6 +++--- dist/index.min.js | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 6a41146..10608a6 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,7 @@ #### Requirements -- Angular v1.1.4+ -- jQuery or your own implementation of `position()` on top of `jQuery Lite` +- Angular v1.2+ #### Development version diff --git a/app/scripts/input.js b/app/scripts/input.js index fcc0543..e2dd70f 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -17,7 +17,7 @@ Module.constant('dateTimeConfig', { 'class="dropdown-menu">
'; }, format: 'yyyy-MM-dd HH:mm', - views: ['date', 'year', 'month', 'hours', 'minutes', 'month'], + views: ['date', 'year', 'month', 'hours', 'minutes'], dismiss: false, position: 'relative' }); @@ -103,9 +103,9 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon picker = $compile(template)(scope); scope.$digest(); - scope.$on('setDate', function (event) { + scope.$on('setDate', function (event, date, view) { updateInput(event); - if (dismiss) { + if (dismiss && views[views.length - 1] === view) { clear(); } }); diff --git a/dist/index.js b/dist/index.js index 279fc8c..a3828c6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -325,7 +325,7 @@ Module.constant('dateTimeConfig', { 'class="dropdown-menu">'; }, format: 'yyyy-MM-dd HH:mm', - views: ['date', 'year', 'month', 'hours', 'minutes', 'month'], + views: ['date', 'year', 'month', 'hours', 'minutes'], dismiss: false, position: 'relative' }); @@ -411,9 +411,9 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon picker = $compile(template)(scope); scope.$digest(); - scope.$on('setDate', function (event) { + scope.$on('setDate', function (event, date, view) { updateInput(event); - if (dismiss) { + if (dismiss && views[views.length - 1] === view) { clear(); } }); diff --git a/dist/index.min.js b/dist/index.min.js index 793ff54..426e6c6 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,m)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m=parseInt(j.step||a.step,10);h.views=h.views.slice(h.views.indexOf(j.maxView||"year"),h.views.indexOf(j.minView||"minutes")+1),(1===h.views.length||-1===h.views.indexOf(h.view))&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/m)===~~(c.getMinutes()/m);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes","month"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a){o(a),w&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,m)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m=parseInt(j.step||a.step,10);h.views=h.views.slice(h.views.indexOf(j.maxView||"year"),h.views.indexOf(j.minView||"minutes")+1),(1===h.views.length||-1===h.views.indexOf(h.view))&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/m)===~~(c.getMinutes()/m);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file From ff9e83d7e2ca56eaea96fe67cd01f4e088772300 Mon Sep 17 00:00:00 2001 From: Jan Antala Date: Wed, 4 Dec 2013 14:21:47 +0100 Subject: [PATCH 28/60] chore(grunt): use load-grunt-tasks module Makes it way more easier to maintain grunt plugin loading instead of matchdep. --- Gruntfile.js | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 0239376..fb311ea 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -6,7 +6,7 @@ var mountFolder = function (connect, dir) { module.exports = function (grunt) { // load all grunt tasks - require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); + require('load-grunt-tasks')(grunt); // configurable paths var yeomanConfig = { diff --git a/package.json b/package.json index a669cef..a30c6ab 100644 --- a/package.json +++ b/package.json @@ -22,12 +22,12 @@ "grunt-rev": "~0.1.0", "grunt-karma": "~0.3.0", "grunt-open": "~0.2.0", - "matchdep": "~0.1.1", "grunt-google-cdn": "~0.1.1", "grunt-ngmin": "~0.0.2", "grunt-angular-templates": "~0.3.8", "grunt-recess": "~0.4.0", - "grunt-concurrent": "~0.4.0" + "grunt-concurrent": "~0.4.0", + "load-grunt-tasks": "~0.2.0" }, "engines": { "node": ">=0.8.0" From 1941e4de82b69d3958115e31e8c40d41de30e99a Mon Sep 17 00:00:00 2001 From: Saliba Date: Wed, 12 Feb 2014 13:40:23 -0200 Subject: [PATCH 29/60] Fixing variables declaration to come before the use It doesn't work on dotless if you use variables before they are declared --- app/styles/style.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/styles/style.less b/app/styles/style.less index d788996..da3f6d2 100644 --- a/app/styles/style.less +++ b/app/styles/style.less @@ -1,5 +1,5 @@ -@import "mixins.less"; @import "variables.less"; +@import "mixins.less"; [date-picker-wrapper]{ position: relative !important; From 983131ded89a9b6bfc18162be075be941bbeefb2 Mon Sep 17 00:00:00 2001 From: Patrick Herzberg Date: Sat, 15 Feb 2014 15:34:37 +0100 Subject: [PATCH 30/60] Update bower.json with key main If using bower/grunt, scripts will be added to index.html template on build. --- bower.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bower.json b/bower.json index bc28784..ab248f4 100644 --- a/bower.json +++ b/bower.json @@ -2,6 +2,10 @@ "name": "angular-datepicker", "license": "MIT", "version": "1.0.0", + "main": [ + "./dist/index.js", + "./dist/index.css" + ], "ignore": [ ".gitignore","README.md" ], From 4b19b4dc873b023af5b26c3b25d5b1c64b28d9af Mon Sep 17 00:00:00 2001 From: SchizoDuckie Date: Sun, 16 Feb 2014 00:53:24 +0100 Subject: [PATCH 31/60] Fixed week display showing a week too much in some cases. --- app/scripts/datePicker.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index ed7393e..0cd7035 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -23,6 +23,7 @@ function getVisibleMinutes(date, step) { function getVisibleWeeks(date) { date = new Date(date || new Date()); + var startMonth = date.getMonth(); date.setDate(1); date.setHours(0); date.setMinutes(0); @@ -40,6 +41,7 @@ function getVisibleWeeks(date) { var weeks = []; while (weeks.length < 6) { + if(date.getMonth() > startMonth) break; var week = []; for (var i = 0; i < 7; i++) { week.push(new Date(date)); From 9350b0ad355363dfd9b4785272e567626a9cb0dd Mon Sep 17 00:00:00 2001 From: SchizoDuckie Date: Sat, 22 Feb 2014 01:30:35 +0100 Subject: [PATCH 32/60] Fixed january breaking with previous patch due to date being shifted back 5 days Fixes the situation where date.getMonth() turns into 11, thus breaking the patch. --- app/scripts/datePicker.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 0cd7035..3a50106 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -23,7 +23,7 @@ function getVisibleMinutes(date, step) { function getVisibleWeeks(date) { date = new Date(date || new Date()); - var startMonth = date.getMonth(); + var startMonth = date.getMonth(), startYear = date.getYear(); date.setDate(1); date.setHours(0); date.setMinutes(0); @@ -41,7 +41,7 @@ function getVisibleWeeks(date) { var weeks = []; while (weeks.length < 6) { - if(date.getMonth() > startMonth) break; + if(date.getYear()== startYear && date.getMonth() > startMonth) break; var week = []; for (var i = 0; i < 7; i++) { week.push(new Date(date)); From 908184b334262a5a5f259e2c29ff2633135acd65 Mon Sep 17 00:00:00 2001 From: Artem Berezin Date: Tue, 4 Mar 2014 14:26:18 +1100 Subject: [PATCH 33/60] Fix errors on minimization (set explicit injections) --- app/scripts/datePicker.js | 4 ++-- app/scripts/input.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 0cd7035..ae5935a 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -98,7 +98,7 @@ function getVisibleHours(date) { return hours; } -Module.directive('datePicker', function datePickerDirective(datePickerConfig) { +Module.directive('datePicker', ['datePickerConfig', function datePickerDirective(datePickerConfig) { //noinspection JSUnusedLocalSymbols return { @@ -278,4 +278,4 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { }; } }; -}); +}]); diff --git a/app/scripts/input.js b/app/scripts/input.js index e2dd70f..46e53b6 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -32,7 +32,7 @@ Module.directive('dateTimeAppend', function () { }; }); -Module.directive('dateTime', function ($compile, $document, $filter, dateTimeConfig, $parse) { +Module.directive('dateTime', ['$compile', '$document', '$filter', 'dateTimeConfig', '$parse', function ($compile, $document, $filter, dateTimeConfig, $parse) { var body = $document.find('body'); var dateFilter = $filter('date'); @@ -137,4 +137,4 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon element.bind('blur', clear); } }; -}); +}]); From a5bf52f8dfbf47b26cfe3a377879c26070eb3096 Mon Sep 17 00:00:00 2001 From: Chris Conley Date: Wed, 12 Mar 2014 16:42:58 -0400 Subject: [PATCH 34/60] Add MIT license --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4d6a48f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2013-2014 Piotrek Majewski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. From c6850b641e06ae4b74919a8d43857a47ac90b49b Mon Sep 17 00:00:00 2001 From: Piotr Majewski Date: Wed, 12 Mar 2014 23:59:13 +0100 Subject: [PATCH 35/60] feat: partial updates - use `partial="true"` to update values on each view step --- app/index.html | 2 +- app/scripts/datePicker.js | 71 +++++- app/scripts/input.js | 1 + app/templates/datepicker.html | 29 ++- bower.json | 10 +- dist/index.js | 441 +++++++++++++++++++++++----------- dist/index.min.js | 2 +- 7 files changed, 386 insertions(+), 170 deletions(-) diff --git a/app/index.html b/app/index.html index 76bff64..cb5210d 100644 --- a/app/index.html +++ b/app/index.html @@ -111,7 +111,7 @@
date

Input

default
- +

Input with append

default
diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 973f971..849b1ee 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -9,6 +9,22 @@ Module.constant('datePickerConfig', { step: 5 }); +Module.filter('time',function () { + function format(date){ + return ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2); + } + + return function (date) { + if (!(date instanceof Date)) { + date = new Date(date); + if (isNaN(date.getTime())) { + return undefined; + } + } + return format(date); + }; +}); + function getVisibleMinutes(date, step) { date = new Date(date || new Date()); date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours()); @@ -41,7 +57,8 @@ function getVisibleWeeks(date) { var weeks = []; while (weeks.length < 6) { - if(date.getYear()== startYear && date.getMonth() > startMonth) break; + /*jshint -W116 */ + if(date.getYear()=== startYear && date.getMonth() > startMonth) break; var week = []; for (var i = 0; i < 7; i++) { week.push(new Date(date)); @@ -98,6 +115,37 @@ function getVisibleHours(date) { return hours; } + +function isAfter(model, date) { + return model && model.getTime() <= date.getTime(); +} + +function isBefore(model, date) { + return model.getTime() >= date.getTime(); +} + +function isSameYear(model, date) { + return model && model.getFullYear() === date.getFullYear(); +} + +function isSameMonth(model, date) { + return isSameYear(model, date) && model.getMonth() === date.getMonth(); +} + +function isSameDay(model, date) { + return isSameMonth(model, date) && model.getDate() === date.getDate(); +} + +function isSameHour(model, date) { + return isSameDay(model, date) && model.getHours() === date.getHours(); +} + +function isSameMinutes(model, date) { + return isSameHour(model, date) && model.getMinutes() === date.getMinutes(); +} + + + Module.directive('datePicker', ['datePickerConfig', function datePickerDirective(datePickerConfig) { //noinspection JSUnusedLocalSymbols @@ -118,6 +166,7 @@ Module.directive('datePicker', ['datePickerConfig', function datePickerDirective scope.template = attrs.template || datePickerConfig.template; var step = parseInt(attrs.step || datePickerConfig.step, 10); + var partial = !!attrs.partial; /** @namespace attrs.minView, attrs.maxView */ scope.views =scope.views.slice( @@ -139,12 +188,12 @@ Module.directive('datePicker', ['datePickerConfig', function datePickerDirective scope.date = date; // change next view var nextView = scope.views[scope.views.indexOf(scope.view) + 1]; - if (!nextView || scope.model) { + if ((!nextView || partial) || scope.model) { scope.model = new Date(scope.model || date); - + var view = partial ? 'minutes' : scope.view; //noinspection FallThroughInSwitchStatementJS - switch (scope.view) { + switch (view) { case 'minutes': scope.model.setMinutes(date.getMinutes()); /*falls through*/ @@ -227,31 +276,31 @@ Module.directive('datePicker', ['datePickerConfig', function datePickerDirective }; scope.isAfter = function (date) { - return scope.after ? scope.after.getTime() <= date.getTime() : false; + return scope.after && isAfter(date, scope.after); }; scope.isBefore = function (date) { - return scope.before ? scope.before.getTime() >= date.getTime() : false; + return scope.before && isBefore(date, scope.before); }; scope.isSameMonth = function (date) { - return scope.isSameYear(date) && scope.model.getMonth() === date.getMonth(); + return isSameMonth(scope.model, date); }; scope.isSameYear = function (date) { - return (scope.model ? scope.model.getFullYear() === date.getFullYear() : false); + return isSameYear(scope.model, date); }; scope.isSameDay = function (date) { - return scope.isSameMonth(date) && scope.model.getDate() === date.getDate(); + return isSameDay(scope.model, date); }; scope.isSameHour = function (date) { - return scope.isSameDay(date) && scope.model.getHours() === date.getHours(); + return isSameHour(scope.model, date); }; scope.isSameMinutes = function (date) { - return scope.isSameHour(date) && scope.model.getMinutes() === date.getMinutes(); + return isSameMinutes(scope.model, date); }; scope.isNow = function (date) { diff --git a/app/scripts/input.js b/app/scripts/input.js index 46e53b6..2d92bda 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -14,6 +14,7 @@ Module.constant('dateTimeConfig', { (attrs.maxView ? 'max-view="' + attrs.maxView + '" ' : '') + (attrs.template ? 'template="' + attrs.template + '" ' : '') + (attrs.minView ? 'min-view="' + attrs.minView + '" ' : '') + + (attrs.partial ? 'partial="' + attrs.partial + '" ' : '') + 'class="dropdown-menu">
'; }, format: 'yyyy-MM-dd HH:mm', diff --git a/app/templates/datepicker.html b/app/templates/datepicker.html index 856aec1..5490788 100644 --- a/app/templates/datepicker.html +++ b/app/templates/datepicker.html @@ -34,11 +34,9 @@ - - - + @@ -56,10 +54,10 @@ - {{month|date:'MMM'}} - + @@ -77,9 +75,9 @@ - + @@ -98,9 +96,10 @@ - {{minute|date:"HH:mm"}} + diff --git a/bower.json b/bower.json index ab248f4..6bd0ab3 100644 --- a/bower.json +++ b/bower.json @@ -11,13 +11,9 @@ ], "dependencies": {}, "devDependencies": { - "angular": "1.2.0-rc.2", - "jquery": "~2.0.2", - "angular-mocks": "~1.0.5", - "angular-scenario": "~1.0.5", + "angular": "1.2.14", + "angular-mocks": "1.2.14", + "angular-scenario": "1.2.14", "angular-bootstrap": "~0.3.0" - }, - "resolutions": { - "angular": "1.2.0-rc.2" } } diff --git a/dist/index.js b/dist/index.js index a3828c6..2a5a8ea 100644 --- a/dist/index.js +++ b/dist/index.js @@ -11,6 +11,22 @@ Module.constant('datePickerConfig', { step: 5 }); +Module.filter('time',function () { + function format(date){ + return ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2); + } + + return function (date) { + if (!(date instanceof Date)) { + date = new Date(date); + if (isNaN(date.getTime())) { + return undefined; + } + } + return format(date); + }; +}); + function getVisibleMinutes(date, step) { date = new Date(date || new Date()); date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours()); @@ -25,6 +41,7 @@ function getVisibleMinutes(date, step) { function getVisibleWeeks(date) { date = new Date(date || new Date()); + var startMonth = date.getMonth(), startYear = date.getYear(); date.setDate(1); date.setHours(0); date.setMinutes(0); @@ -42,6 +59,8 @@ function getVisibleWeeks(date) { var weeks = []; while (weeks.length < 6) { + /*jshint -W116 */ + if(date.getYear()=== startYear && date.getMonth() > startMonth) break; var week = []; for (var i = 0; i < 7; i++) { week.push(new Date(date)); @@ -98,7 +117,38 @@ function getVisibleHours(date) { return hours; } -Module.directive('datePicker', function datePickerDirective(datePickerConfig) { + +function isAfter(model, date) { + return model && model.getTime() <= date.getTime(); +} + +function isBefore(model, date) { + return model.getTime() >= date.getTime(); +} + +function isSameYear(model, date) { + return model && model.getFullYear() === date.getFullYear(); +} + +function isSameMonth(model, date) { + return isSameYear(model, date) && model.getMonth() === date.getMonth(); +} + +function isSameDay(model, date) { + return isSameMonth(model, date) && model.getDate() === date.getDate(); +} + +function isSameHour(model, date) { + return isSameDay(model, date) && model.getHours() === date.getHours(); +} + +function isSameMinutes(model, date) { + return isSameHour(model, date) && model.getMinutes() === date.getMinutes(); +} + + + +Module.directive('datePicker', ['datePickerConfig', function datePickerDirective(datePickerConfig) { //noinspection JSUnusedLocalSymbols return { @@ -118,6 +168,7 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { scope.template = attrs.template || datePickerConfig.template; var step = parseInt(attrs.step || datePickerConfig.step, 10); + var partial = !!attrs.partial; /** @namespace attrs.minView, attrs.maxView */ scope.views =scope.views.slice( @@ -139,12 +190,12 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { scope.date = date; // change next view var nextView = scope.views[scope.views.indexOf(scope.view) + 1]; - if (!nextView || scope.model) { + if ((!nextView || partial) || scope.model) { scope.model = new Date(scope.model || date); - + var view = partial ? 'minutes' : scope.view; //noinspection FallThroughInSwitchStatementJS - switch (scope.view) { + switch (view) { case 'minutes': scope.model.setMinutes(date.getMinutes()); /*falls through*/ @@ -227,31 +278,31 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { }; scope.isAfter = function (date) { - return scope.after ? scope.after.getTime() <= date.getTime() : false; + return scope.after && isAfter(date, scope.after); }; scope.isBefore = function (date) { - return scope.before ? scope.before.getTime() >= date.getTime() : false; + return scope.before && isBefore(date, scope.before); }; scope.isSameMonth = function (date) { - return scope.isSameYear(date) && scope.model.getMonth() === date.getMonth(); + return isSameMonth(scope.model, date); }; scope.isSameYear = function (date) { - return (scope.model ? scope.model.getFullYear() === date.getFullYear() : false); + return isSameYear(scope.model, date); }; scope.isSameDay = function (date) { - return scope.isSameMonth(date) && scope.model.getDate() === date.getDate(); + return isSameDay(scope.model, date); }; scope.isSameHour = function (date) { - return scope.isSameDay(date) && scope.model.getHours() === date.getHours(); + return isSameHour(scope.model, date); }; scope.isSameMinutes = function (date) { - return scope.isSameHour(date) && scope.model.getMinutes() === date.getMinutes(); + return isSameMinutes(scope.model, date); }; scope.isNow = function (date) { @@ -278,7 +329,7 @@ Module.directive('datePicker', function datePickerDirective(datePickerConfig) { }; } }; -}); +}]); 'use strict'; @@ -322,6 +373,7 @@ Module.constant('dateTimeConfig', { (attrs.maxView ? 'max-view="' + attrs.maxView + '" ' : '') + (attrs.template ? 'template="' + attrs.template + '" ' : '') + (attrs.minView ? 'min-view="' + attrs.minView + '" ' : '') + + (attrs.partial ? 'partial="' + attrs.partial + '" ' : '') + 'class="dropdown-menu">'; }, format: 'yyyy-MM-dd HH:mm', @@ -340,7 +392,7 @@ Module.directive('dateTimeAppend', function () { }; }); -Module.directive('dateTime', function ($compile, $document, $filter, dateTimeConfig, $parse) { +Module.directive('dateTime', ['$compile', '$document', '$filter', 'dateTimeConfig', '$parse', function ($compile, $document, $filter, dateTimeConfig, $parse) { var body = $document.find('body'); var dateFilter = $filter('date'); @@ -445,135 +497,254 @@ Module.directive('dateTime', function ($compile, $document, $filter, dateTimeCon element.bind('blur', clear); } }; -}); +}]); angular.module("datePicker").run(["$templateCache", function($templateCache) { $templateCache.put("templates/datepicker.html", - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{date|date:\"yyyy MMMM\"}}
{{ day|date:\"EEE\" }}
\n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n" + - " \n" + - "\n" + - "\n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{ date|date:\"yyyy\" }}
\n" + - " {{month|date:'MMM'}}\n" + - "\n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{ date|date:\"dd MMMM yyyy\" }}
\n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{ date|date:\"dd MMMM yyyy\" }}\n" + - "
\n" + - " {{minute|date:\"HH:mm\"}}\n" + - "
\n" + - "
\n" + - "
\n" + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{date|date:\"yyyy MMMM\"}}
{{ day|date:\"EEE\" }}
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{ date|date:\"yyyy\" }}
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{ date|date:\"dd MMMM yyyy\" }}
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{ date|date:\"dd MMMM yyyy\" }}\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" ); $templateCache.put("templates/daterange.html", - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" ); }]); diff --git a/dist/index.min.js b/dist/index.min.js index 426e6c6..4aefdd3 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()d;d++)c.push(new Date(a)),a.setDate(a.getDate()+1);b.push(c)}return b}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}var h=a.module("datePicker",[]);h.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),h.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(h,i,j){function k(){var a=h.view,i=h.date;switch(a){case"year":h.years=d(i);break;case"month":h.months=f(i);break;case"date":h.weekdays=h.weekdays||e(),h.weeks=c(i);break;case"hours":h.hours=g(i);break;case"minutes":h.minutes=b(i,m)}}function l(){return"date"!==h.view?h.view:h.model?h.model.getMonth():null}h.date=new Date(h.model||new Date),h.views=a.views.concat(),h.view=j.view||a.view,h.now=new Date,h.template=j.template||a.template;var m=parseInt(j.step||a.step,10);h.views=h.views.slice(h.views.indexOf(j.maxView||"year"),h.views.indexOf(j.minView||"minutes")+1),(1===h.views.length||-1===h.views.indexOf(h.view))&&(h.view=h.views[0]),h.setView=function(a){-1!==h.views.indexOf(a)&&(h.view=a)},h.setDate=function(a){h.date=a;var b=h.views[h.views.indexOf(h.view)+1];if(!b||h.model){switch(h.model=new Date(h.model||a),h.view){case"minutes":h.model.setMinutes(a.getMinutes());case"hours":h.model.setHours(a.getHours());case"date":h.model.setDate(a.getDate());case"month":h.model.setMonth(a.getMonth());case"year":h.model.setFullYear(a.getFullYear())}h.$emit("setDate",h.model,h.view)}b&&h.setView(b)},h.$watch(l,k),h.next=function(a){var b=h.date;switch(a=a||1,h.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}k()},h.prev=function(a){return h.next(-a||-1)},h.isAfter=function(a){return h.after?h.after.getTime()<=a.getTime():!1},h.isBefore=function(a){return h.before?h.before.getTime()>=a.getTime():!1},h.isSameMonth=function(a){return h.isSameYear(a)&&h.model.getMonth()===a.getMonth()},h.isSameYear=function(a){return h.model?h.model.getFullYear()===a.getFullYear():!1},h.isSameDay=function(a){return h.isSameMonth(a)&&h.model.getDate()===a.getDate()},h.isSameHour=function(a){return h.isSameDay(a)&&h.model.getHours()===a.getHours()},h.isSameMinutes=function(a){return h.isSameHour(a)&&h.model.getMinutes()===a.getMinutes()},h.isNow=function(a){var b=!0,c=h.now;switch(h.view){case"minutes":b&=~~(a.getMinutes()/m)===~~(c.getMinutes()/m);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var h=a.module("datePicker");h.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),h.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),h.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,k,l){function m(a){return h(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,d.removeClass(i).addClass(j),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),c.$on("$destroy",p),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||e.format,s=d.inheritedData("$formController"),t=f(k.views)(c)||e.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?f(k.dismiss)(c):e.dismiss,x=null,y=k.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=e.template(k);d.bind("focus",q),d.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n {{month|date:\'MMM\'}}\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n {{minute|date:"HH:mm"}}\n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}function h(a,b){return a&&a.getTime()<=b.getTime()}function i(a,b){return a.getTime()>=b.getTime()}function j(a,b){return a&&a.getFullYear()===b.getFullYear()}function k(a,b){return j(a,b)&&a.getMonth()===b.getMonth()}function l(a,b){return k(a,b)&&a.getDate()===b.getDate()}function m(a,b){return l(a,b)&&a.getHours()===b.getHours()}function n(a,b){return m(a,b)&&a.getMinutes()===b.getMinutes()}var o=a.module("datePicker",[]);o.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),o.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),o.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(o,p,q){function r(){var a=o.view,h=o.date;switch(a){case"year":o.years=d(h);break;case"month":o.months=f(h);break;case"date":o.weekdays=o.weekdays||e(),o.weeks=c(h);break;case"hours":o.hours=g(h);break;case"minutes":o.minutes=b(h,t)}}function s(){return"date"!==o.view?o.view:o.model?o.model.getMonth():null}o.date=new Date(o.model||new Date),o.views=a.views.concat(),o.view=q.view||a.view,o.now=new Date,o.template=q.template||a.template;var t=parseInt(q.step||a.step,10),u=!!q.partial;o.views=o.views.slice(o.views.indexOf(q.maxView||"year"),o.views.indexOf(q.minView||"minutes")+1),(1===o.views.length||-1===o.views.indexOf(o.view))&&(o.view=o.views[0]),o.setView=function(a){-1!==o.views.indexOf(a)&&(o.view=a)},o.setDate=function(a){o.date=a;var b=o.views[o.views.indexOf(o.view)+1];if(!b||u||o.model){o.model=new Date(o.model||a);var c=u?"minutes":o.view;switch(c){case"minutes":o.model.setMinutes(a.getMinutes());case"hours":o.model.setHours(a.getHours());case"date":o.model.setDate(a.getDate());case"month":o.model.setMonth(a.getMonth());case"year":o.model.setFullYear(a.getFullYear())}o.$emit("setDate",o.model,o.view)}b&&o.setView(b)},o.$watch(s,r),o.next=function(a){var b=o.date;switch(a=a||1,o.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}r()},o.prev=function(a){return o.next(-a||-1)},o.isAfter=function(a){return o.after&&h(a,o.after)},o.isBefore=function(a){return o.before&&i(a,o.before)},o.isSameMonth=function(a){return k(o.model,a)},o.isSameYear=function(a){return j(o.model,a)},o.isSameDay=function(a){return l(o.model,a)},o.isSameHour=function(a){return m(o.model,a)},o.isSameMinutes=function(a){return n(o.model,a)},o.isNow=function(a){var b=!0,c=o.now;switch(o.view){case"minutes":b&=~~(a.getMinutes()/t)===~~(c.getMinutes()/t);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var o=a.module("datePicker");o.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),o.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),o.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,i,j){function k(a){return h(a,r)}function l(){return j.$modelValue}function m(a){a.stopPropagation(),j.$pristine&&(j.$dirty=!0,j.$pristine=!1,d.removeClass(p).addClass(q),s&&s.$setDirty(),j.$render())}function n(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function o(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a,b,c){m(a),w&&t[t.length-1]===c&&n()}),c.$on("$destroy",n),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=i.format||e.format,s=d.inheritedData("$formController"),t=f(i.views)(c)||e.views.concat(),u=i.view||t[0],v=t.indexOf(u),w=i.dismiss?f(i.dismiss)(c):e.dismiss,x=null,y=i.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),j.$formatters.push(k),j.$parsers.unshift(l);var A=e.template(i);d.bind("focus",o),d.bind("blur",n)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file From 401ad9c9fcd880a0d4661f7ec05afa84c2f3305f Mon Sep 17 00:00:00 2001 From: cloutierlp Date: Thu, 29 May 2014 15:30:39 -0400 Subject: [PATCH 36/60] Fix README typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 10608a6..1566346 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ #### Development version Checkout, run `grunt install` and `bower install`. -To build run `gunt build` +To build run `grunt build` ## Examples From 670fa91bc0e5b94a9d22aced621a34e740ae27e7 Mon Sep 17 00:00:00 2001 From: Laurent Perrin Date: Sun, 8 Jun 2014 16:46:09 -0700 Subject: [PATCH 37/60] using HTML entities rather than UTF-8 chars. --- app/templates/datepicker.html | 20 +- dist/index.js | 360 ++++++++++++---------------------- dist/index.min.js | 2 +- 3 files changed, 131 insertions(+), 251 deletions(-) diff --git a/app/templates/datepicker.html b/app/templates/datepicker.html index 5490788..f6c9c73 100644 --- a/app/templates/datepicker.html +++ b/app/templates/datepicker.html @@ -3,9 +3,9 @@ - + - + @@ -26,9 +26,9 @@
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
- + - + @@ -46,9 +46,9 @@
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
- + - + @@ -67,9 +67,9 @@
{{ date|date:"yyyy" }}
- + - + @@ -87,10 +87,10 @@
{{ date|date:"dd MMMM yyyy" }}
- + - + diff --git a/dist/index.js b/dist/index.js index 2a5a8ea..b313e04 100644 --- a/dist/index.js +++ b/dist/index.js @@ -502,249 +502,129 @@ Module.directive('dateTime', ['$compile', '$document', '$filter', 'dateTimeConfi angular.module("datePicker").run(["$templateCache", function($templateCache) { $templateCache.put("templates/datepicker.html", - "
\r" + - "\n" + - "
\r" + - "\n" + - "
{{ date|date:"dd MMMM yyyy" }}
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{date|date:\"yyyy MMMM\"}}
{{ day|date:\"EEE\" }}
\r" + - "\n" + - " \r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r" + - "\n" + - " \r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{ date|date:\"yyyy\" }}
\r" + - "\n" + - " \r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{ date|date:\"dd MMMM yyyy\" }}
\r" + - "\n" + - " \r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
{{ date|date:\"dd MMMM yyyy\" }}\r" + - "\n" + - "
\r" + - "\n" + - " \r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "\r" + - "\n" + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{date|date:\"yyyy MMMM\"}}
{{ day|date:\"EEE\" }}
\n" + + " \n" + + "
\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n" + + " \n" + + "
\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{ date|date:\"yyyy\" }}
\n" + + " \n" + + "
\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{ date|date:\"dd MMMM yyyy\" }}
\n" + + " \n" + + "
\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{ date|date:\"dd MMMM yyyy\" }}\n" + + "
\n" + + " \n" + + "
\n" + + "
\n" + + "
\n" ); $templateCache.put("templates/daterange.html", - "
\r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - " \r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + - "
\r" + - "\n" + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" ); }]); diff --git a/dist/index.min.js b/dist/index.min.js index 4aefdd3..59f6aca 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}function h(a,b){return a&&a.getTime()<=b.getTime()}function i(a,b){return a.getTime()>=b.getTime()}function j(a,b){return a&&a.getFullYear()===b.getFullYear()}function k(a,b){return j(a,b)&&a.getMonth()===b.getMonth()}function l(a,b){return k(a,b)&&a.getDate()===b.getDate()}function m(a,b){return l(a,b)&&a.getHours()===b.getHours()}function n(a,b){return m(a,b)&&a.getMinutes()===b.getMinutes()}var o=a.module("datePicker",[]);o.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),o.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),o.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(o,p,q){function r(){var a=o.view,h=o.date;switch(a){case"year":o.years=d(h);break;case"month":o.months=f(h);break;case"date":o.weekdays=o.weekdays||e(),o.weeks=c(h);break;case"hours":o.hours=g(h);break;case"minutes":o.minutes=b(h,t)}}function s(){return"date"!==o.view?o.view:o.model?o.model.getMonth():null}o.date=new Date(o.model||new Date),o.views=a.views.concat(),o.view=q.view||a.view,o.now=new Date,o.template=q.template||a.template;var t=parseInt(q.step||a.step,10),u=!!q.partial;o.views=o.views.slice(o.views.indexOf(q.maxView||"year"),o.views.indexOf(q.minView||"minutes")+1),(1===o.views.length||-1===o.views.indexOf(o.view))&&(o.view=o.views[0]),o.setView=function(a){-1!==o.views.indexOf(a)&&(o.view=a)},o.setDate=function(a){o.date=a;var b=o.views[o.views.indexOf(o.view)+1];if(!b||u||o.model){o.model=new Date(o.model||a);var c=u?"minutes":o.view;switch(c){case"minutes":o.model.setMinutes(a.getMinutes());case"hours":o.model.setHours(a.getHours());case"date":o.model.setDate(a.getDate());case"month":o.model.setMonth(a.getMonth());case"year":o.model.setFullYear(a.getFullYear())}o.$emit("setDate",o.model,o.view)}b&&o.setView(b)},o.$watch(s,r),o.next=function(a){var b=o.date;switch(a=a||1,o.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}r()},o.prev=function(a){return o.next(-a||-1)},o.isAfter=function(a){return o.after&&h(a,o.after)},o.isBefore=function(a){return o.before&&i(a,o.before)},o.isSameMonth=function(a){return k(o.model,a)},o.isSameYear=function(a){return j(o.model,a)},o.isSameDay=function(a){return l(o.model,a)},o.isSameHour=function(a){return m(o.model,a)},o.isSameMinutes=function(a){return n(o.model,a)},o.isNow=function(a){var b=!0,c=o.now;switch(o.view){case"minutes":b&=~~(a.getMinutes()/t)===~~(c.getMinutes()/t);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var o=a.module("datePicker");o.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),o.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),o.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,i,j){function k(a){return h(a,r)}function l(){return j.$modelValue}function m(a){a.stopPropagation(),j.$pristine&&(j.$dirty=!0,j.$pristine=!1,d.removeClass(p).addClass(q),s&&s.$setDirty(),j.$render())}function n(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function o(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a,b,c){m(a),w&&t[t.length-1]===c&&n()}),c.$on("$destroy",n),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=i.format||e.format,s=d.inheritedData("$formController"),t=f(i.views)(c)||e.views.concat(),u=i.view||t[0],v=t.indexOf(u),w=i.dismiss?f(i.dismiss)(c):e.dismiss,x=null,y=i.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),j.$formatters.push(k),j.$parsers.unshift(l);var A=e.template(i);d.bind("focus",o),d.bind("blur",n)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}function h(a,b){return a&&a.getTime()<=b.getTime()}function i(a,b){return a.getTime()>=b.getTime()}function j(a,b){return a&&a.getFullYear()===b.getFullYear()}function k(a,b){return j(a,b)&&a.getMonth()===b.getMonth()}function l(a,b){return k(a,b)&&a.getDate()===b.getDate()}function m(a,b){return l(a,b)&&a.getHours()===b.getHours()}function n(a,b){return m(a,b)&&a.getMinutes()===b.getMinutes()}var o=a.module("datePicker",[]);o.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),o.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),o.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(o,p,q){function r(){var a=o.view,h=o.date;switch(a){case"year":o.years=d(h);break;case"month":o.months=f(h);break;case"date":o.weekdays=o.weekdays||e(),o.weeks=c(h);break;case"hours":o.hours=g(h);break;case"minutes":o.minutes=b(h,t)}}function s(){return"date"!==o.view?o.view:o.model?o.model.getMonth():null}o.date=new Date(o.model||new Date),o.views=a.views.concat(),o.view=q.view||a.view,o.now=new Date,o.template=q.template||a.template;var t=parseInt(q.step||a.step,10),u=!!q.partial;o.views=o.views.slice(o.views.indexOf(q.maxView||"year"),o.views.indexOf(q.minView||"minutes")+1),(1===o.views.length||-1===o.views.indexOf(o.view))&&(o.view=o.views[0]),o.setView=function(a){-1!==o.views.indexOf(a)&&(o.view=a)},o.setDate=function(a){o.date=a;var b=o.views[o.views.indexOf(o.view)+1];if(!b||u||o.model){o.model=new Date(o.model||a);var c=u?"minutes":o.view;switch(c){case"minutes":o.model.setMinutes(a.getMinutes());case"hours":o.model.setHours(a.getHours());case"date":o.model.setDate(a.getDate());case"month":o.model.setMonth(a.getMonth());case"year":o.model.setFullYear(a.getFullYear())}o.$emit("setDate",o.model,o.view)}b&&o.setView(b)},o.$watch(s,r),o.next=function(a){var b=o.date;switch(a=a||1,o.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}r()},o.prev=function(a){return o.next(-a||-1)},o.isAfter=function(a){return o.after&&h(a,o.after)},o.isBefore=function(a){return o.before&&i(a,o.before)},o.isSameMonth=function(a){return k(o.model,a)},o.isSameYear=function(a){return j(o.model,a)},o.isSameDay=function(a){return l(o.model,a)},o.isSameHour=function(a){return m(o.model,a)},o.isSameMinutes=function(a){return n(o.model,a)},o.isNow=function(a){var b=!0,c=o.now;switch(o.view){case"minutes":b&=~~(a.getMinutes()/t)===~~(c.getMinutes()/t);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var o=a.module("datePicker");o.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),o.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),o.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,i,j){function k(a){return h(a,r)}function l(){return j.$modelValue}function m(a){a.stopPropagation(),j.$pristine&&(j.$dirty=!0,j.$pristine=!1,d.removeClass(p).addClass(q),s&&s.$setDirty(),j.$render())}function n(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function o(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a,b,c){m(a),w&&t[t.length-1]===c&&n()}),c.$on("$destroy",n),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=i.format||e.format,s=d.inheritedData("$formController"),t=f(i.views)(c)||e.views.concat(),u=i.view||t[0],v=t.indexOf(u),w=i.dismiss?f(i.dismiss)(c):e.dismiss,x=null,y=i.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),j.$formatters.push(k),j.$parsers.unshift(l);var A=e.template(i);d.bind("focus",o),d.bind("blur",n)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n \n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file From 832bf1feabd14f02bd565a5cdad13bd439eda75f Mon Sep 17 00:00:00 2001 From: Costica Puntaru Date: Fri, 13 Jun 2014 16:54:30 +0300 Subject: [PATCH 38/60] add support to disable the date picker --- app/scripts/datePicker.js | 3 +++ app/scripts/dateRange.js | 3 +++ app/templates/daterange.html | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 849b1ee..ef68274 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -185,6 +185,9 @@ Module.directive('datePicker', ['datePickerConfig', function datePickerDirective }; scope.setDate = function (date) { + if(attrs.disabled) { + return + } scope.date = date; // change next view var nextView = scope.views[scope.views.indexOf(scope.view) + 1]; diff --git a/app/scripts/dateRange.js b/app/scripts/dateRange.js index b17ef71..a78672f 100644 --- a/app/scripts/dateRange.js +++ b/app/scripts/dateRange.js @@ -10,6 +10,9 @@ Module.directive('dateRange', function () { end: '=' }, link: function (scope) { + attrs.$observe('disabled', function(isDisabled){ + scope.disableDatePickers = isDisabled + }); scope.$watch('start.getTime()', function (value) { if (value && scope.end && value > scope.end.getTime()) { scope.end = new Date(value); diff --git a/app/templates/daterange.html b/app/templates/daterange.html index 3c93641..bdbb6ed 100644 --- a/app/templates/daterange.html +++ b/app/templates/daterange.html @@ -2,10 +2,10 @@
-
+
-
+
From c615a28e2f0f7a331d187401aaa287e32ea30370 Mon Sep 17 00:00:00 2001 From: Costica Puntaru Date: Mon, 16 Jun 2014 11:02:46 +0300 Subject: [PATCH 39/60] fixing the build --- app/scripts/datePicker.js | 2 +- app/scripts/dateRange.js | 6 +++--- dist/index.js | 12 +++++++++--- dist/index.min.js | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index ef68274..601fe13 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -186,7 +186,7 @@ Module.directive('datePicker', ['datePickerConfig', function datePickerDirective scope.setDate = function (date) { if(attrs.disabled) { - return + return; } scope.date = date; // change next view diff --git a/app/scripts/dateRange.js b/app/scripts/dateRange.js index a78672f..38ec101 100644 --- a/app/scripts/dateRange.js +++ b/app/scripts/dateRange.js @@ -9,10 +9,10 @@ Module.directive('dateRange', function () { start: '=', end: '=' }, - link: function (scope) { + link: function (scope, element, attrs) { attrs.$observe('disabled', function(isDisabled){ - scope.disableDatePickers = isDisabled - }); + scope.disableDatePickers = !!isDisabled; + }); scope.$watch('start.getTime()', function (value) { if (value && scope.end && value > scope.end.getTime()) { scope.end = new Date(value); diff --git a/dist/index.js b/dist/index.js index 2a5a8ea..c391496 100644 --- a/dist/index.js +++ b/dist/index.js @@ -187,6 +187,9 @@ Module.directive('datePicker', ['datePickerConfig', function datePickerDirective }; scope.setDate = function (date) { + if(attrs.disabled) { + return; + } scope.date = date; // change next view var nextView = scope.views[scope.views.indexOf(scope.view) + 1]; @@ -342,7 +345,10 @@ Module.directive('dateRange', function () { start: '=', end: '=' }, - link: function (scope) { + link: function (scope, element, attrs) { + attrs.$observe('disabled', function(isDisabled){ + scope.disableDatePickers = !!isDisabled; + }); scope.$watch('start.getTime()', function (value) { if (value && scope.end && value > scope.end.getTime()) { scope.end = new Date(value); @@ -729,13 +735,13 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { "\n" + " \r" + "\n" + - "
\r" + + "
\r" + "\n" + " \r" + "\n" + " \r" + "\n" + - "
\r" + + "
\r" + "\n" + " \r" + "\n" + diff --git a/dist/index.min.js b/dist/index.min.js index 4aefdd3..29eb982 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}function h(a,b){return a&&a.getTime()<=b.getTime()}function i(a,b){return a.getTime()>=b.getTime()}function j(a,b){return a&&a.getFullYear()===b.getFullYear()}function k(a,b){return j(a,b)&&a.getMonth()===b.getMonth()}function l(a,b){return k(a,b)&&a.getDate()===b.getDate()}function m(a,b){return l(a,b)&&a.getHours()===b.getHours()}function n(a,b){return m(a,b)&&a.getMinutes()===b.getMinutes()}var o=a.module("datePicker",[]);o.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),o.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),o.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(o,p,q){function r(){var a=o.view,h=o.date;switch(a){case"year":o.years=d(h);break;case"month":o.months=f(h);break;case"date":o.weekdays=o.weekdays||e(),o.weeks=c(h);break;case"hours":o.hours=g(h);break;case"minutes":o.minutes=b(h,t)}}function s(){return"date"!==o.view?o.view:o.model?o.model.getMonth():null}o.date=new Date(o.model||new Date),o.views=a.views.concat(),o.view=q.view||a.view,o.now=new Date,o.template=q.template||a.template;var t=parseInt(q.step||a.step,10),u=!!q.partial;o.views=o.views.slice(o.views.indexOf(q.maxView||"year"),o.views.indexOf(q.minView||"minutes")+1),(1===o.views.length||-1===o.views.indexOf(o.view))&&(o.view=o.views[0]),o.setView=function(a){-1!==o.views.indexOf(a)&&(o.view=a)},o.setDate=function(a){o.date=a;var b=o.views[o.views.indexOf(o.view)+1];if(!b||u||o.model){o.model=new Date(o.model||a);var c=u?"minutes":o.view;switch(c){case"minutes":o.model.setMinutes(a.getMinutes());case"hours":o.model.setHours(a.getHours());case"date":o.model.setDate(a.getDate());case"month":o.model.setMonth(a.getMonth());case"year":o.model.setFullYear(a.getFullYear())}o.$emit("setDate",o.model,o.view)}b&&o.setView(b)},o.$watch(s,r),o.next=function(a){var b=o.date;switch(a=a||1,o.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}r()},o.prev=function(a){return o.next(-a||-1)},o.isAfter=function(a){return o.after&&h(a,o.after)},o.isBefore=function(a){return o.before&&i(a,o.before)},o.isSameMonth=function(a){return k(o.model,a)},o.isSameYear=function(a){return j(o.model,a)},o.isSameDay=function(a){return l(o.model,a)},o.isSameHour=function(a){return m(o.model,a)},o.isSameMinutes=function(a){return n(o.model,a)},o.isNow=function(a){var b=!0,c=o.now;switch(o.view){case"minutes":b&=~~(a.getMinutes()/t)===~~(c.getMinutes()/t);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var o=a.module("datePicker");o.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a){a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),o.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),o.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,i,j){function k(a){return h(a,r)}function l(){return j.$modelValue}function m(a){a.stopPropagation(),j.$pristine&&(j.$dirty=!0,j.$pristine=!1,d.removeClass(p).addClass(q),s&&s.$setDirty(),j.$render())}function n(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function o(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a,b,c){m(a),w&&t[t.length-1]===c&&n()}),c.$on("$destroy",n),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=i.format||e.format,s=d.inheritedData("$formController"),t=f(i.views)(c)||e.views.concat(),u=i.view||t[0],v=t.indexOf(u),w=i.dismiss?f(i.dismiss)(c):e.dismiss,x=null,y=i.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),j.$formatters.push(k),j.$parsers.unshift(l);var A=e.template(i);d.bind("focus",o),d.bind("blur",n)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){function b(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d}function d(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b}function e(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b}function f(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c}function g(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b}function h(a,b){return a&&a.getTime()<=b.getTime()}function i(a,b){return a.getTime()>=b.getTime()}function j(a,b){return a&&a.getFullYear()===b.getFullYear()}function k(a,b){return j(a,b)&&a.getMonth()===b.getMonth()}function l(a,b){return k(a,b)&&a.getDate()===b.getDate()}function m(a,b){return l(a,b)&&a.getHours()===b.getHours()}function n(a,b){return m(a,b)&&a.getMinutes()===b.getMinutes()}var o=a.module("datePicker",[]);o.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),o.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),o.directive("datePicker",["datePickerConfig",function(a){return{template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(o,p,q){function r(){var a=o.view,h=o.date;switch(a){case"year":o.years=d(h);break;case"month":o.months=f(h);break;case"date":o.weekdays=o.weekdays||e(),o.weeks=c(h);break;case"hours":o.hours=g(h);break;case"minutes":o.minutes=b(h,t)}}function s(){return"date"!==o.view?o.view:o.model?o.model.getMonth():null}o.date=new Date(o.model||new Date),o.views=a.views.concat(),o.view=q.view||a.view,o.now=new Date,o.template=q.template||a.template;var t=parseInt(q.step||a.step,10),u=!!q.partial;o.views=o.views.slice(o.views.indexOf(q.maxView||"year"),o.views.indexOf(q.minView||"minutes")+1),(1===o.views.length||-1===o.views.indexOf(o.view))&&(o.view=o.views[0]),o.setView=function(a){-1!==o.views.indexOf(a)&&(o.view=a)},o.setDate=function(a){if(!q.disabled){o.date=a;var b=o.views[o.views.indexOf(o.view)+1];if(!b||u||o.model){o.model=new Date(o.model||a);var c=u?"minutes":o.view;switch(c){case"minutes":o.model.setMinutes(a.getMinutes());case"hours":o.model.setHours(a.getHours());case"date":o.model.setDate(a.getDate());case"month":o.model.setMonth(a.getMonth());case"year":o.model.setFullYear(a.getFullYear())}o.$emit("setDate",o.model,o.view)}b&&o.setView(b)}},o.$watch(s,r),o.next=function(a){var b=o.date;switch(a=a||1,o.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}r()},o.prev=function(a){return o.next(-a||-1)},o.isAfter=function(a){return o.after&&h(a,o.after)},o.isBefore=function(a){return o.before&&i(a,o.before)},o.isSameMonth=function(a){return k(o.model,a)},o.isSameYear=function(a){return j(o.model,a)},o.isSameDay=function(a){return l(o.model,a)},o.isSameHour=function(a){return m(o.model,a)},o.isSameMinutes=function(a){return n(o.model,a)},o.isNow=function(a){var b=!0,c=o.now;switch(o.view){case"minutes":b&=~~(a.getMinutes()/t)===~~(c.getMinutes()/t);case"hours":b&=a.getHours()===c.getHours();case"date":b&=a.getDate()===c.getDate();case"month":b&=a.getMonth()===c.getMonth();case"year":b&=a.getFullYear()===c.getFullYear()}return b}}}}]);var o=a.module("datePicker");o.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),o.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),o.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,c,d,e,f){var g=c.find("body"),h=d("date");return{require:"ngModel",scope:!0,link:function(c,d,i,j){function k(a){return h(a,r)}function l(){return j.$modelValue}function m(a){a.stopPropagation(),j.$pristine&&(j.$dirty=!0,j.$pristine=!1,d.removeClass(p).addClass(q),s&&s.$setDirty(),j.$render())}function n(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function o(){if(!x){if(x=b(A)(c),c.$digest(),c.$on("setDate",function(a,b,c){m(a),w&&t[t.length-1]===c&&n()}),c.$on("$destroy",n),"absolute"===y){var e=a.extend(d.offset(),{height:d[0].offsetHeight});x.css({top:e.top+e.height,left:e.left,display:"block",position:y}),g.append(x)}else z=a.element("
"),d[0].parentElement.insertBefore(z[0],d[0]),z.append(x),x.css({top:d[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=i.format||e.format,s=d.inheritedData("$formController"),t=f(i.views)(c)||e.views.concat(),u=i.view||t[0],v=t.indexOf(u),w=i.dismiss?f(i.dismiss)(c):e.dismiss,x=null,y=i.position||e.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),j.$formatters.push(k),j.$parsers.unshift(l);var A=e.template(i);d.bind("focus",o),d.bind("blur",n)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file From 0e570073cdc3f9bb6007dfe74b43715efd55237d Mon Sep 17 00:00:00 2001 From: Alex Edwards Date: Sun, 29 Jun 2014 12:21:09 -0700 Subject: [PATCH 40/60] Cleaned up the namespace removing global functions. Global functions are now in a factory which is injected into necessary resources. Changes required to global methods where they referenced each other were prefixed with 'this.', related to #38 --- Gruntfile.js | 2 +- app/index.html | 3 +- app/scripts/datePicker.js | 149 +++---------------------------- app/scripts/datePickerFactory.js | 111 +++++++++++++++++++++++ 4 files changed, 128 insertions(+), 137 deletions(-) create mode 100644 app/scripts/datePickerFactory.js diff --git a/Gruntfile.js b/Gruntfile.js index fb311ea..80a8386 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -183,7 +183,7 @@ module.exports = function (grunt) { separator: '\n' }, js: { - src: ['<%= yeoman.app %>/scripts/{datePicker,input,dateRange}.js', '<%= yeoman.tmp %>/templates.js'], + src: ['<%= yeoman.app %>/scripts/{datePicker,input,dateRange,datePickerFactory}.js', '<%= yeoman.tmp %>/templates.js'], dest: '<%= yeoman.dist %>/index.js', options: { banner:'\'use strict\';\n(function(angular){\n', diff --git a/app/index.html b/app/index.html index cb5210d..fbc7c64 100644 --- a/app/index.html +++ b/app/index.html @@ -161,10 +161,11 @@
Date range button
- + + diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 601fe13..48a2e7d 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -25,128 +25,7 @@ Module.filter('time',function () { }; }); -function getVisibleMinutes(date, step) { - date = new Date(date || new Date()); - date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours()); - var minutes = []; - var stop = date.getTime() + 60 * 60 * 1000; - while (date.getTime() < stop) { - minutes.push(date); - date = new Date(date.getTime() + step * 60 * 1000); - } - return minutes; -} - -function getVisibleWeeks(date) { - date = new Date(date || new Date()); - var startMonth = date.getMonth(), startYear = date.getYear(); - date.setDate(1); - date.setHours(0); - date.setMinutes(0); - date.setSeconds(0); - date.setMilliseconds(0); - - if (date.getDay() === 0) { - date.setDate(-5); - } else { - date.setDate(date.getDate() - (date.getDay() - 1)); - } - if (date.getDate() === 1) { - date.setDate(-6); - } - - var weeks = []; - while (weeks.length < 6) { - /*jshint -W116 */ - if(date.getYear()=== startYear && date.getMonth() > startMonth) break; - var week = []; - for (var i = 0; i < 7; i++) { - week.push(new Date(date)); - date.setDate(date.getDate() + 1); - } - weeks.push(week); - } - return weeks; -} - -function getVisibleYears(date) { - var years = []; - date = new Date(date || new Date()); - date.setFullYear(date.getFullYear() - (date.getFullYear() % 10)); - for (var i = 0; i < 12; i++) { - years.push(new Date(date.getFullYear() + (i - 1), 0, 1)); - } - return years; -} - -function getDaysOfWeek(date) { - date = new Date(date || new Date()); - date = new Date(date.getFullYear(), date.getMonth(), date.getDate()); - date.setDate(date.getDate() - (date.getDay() - 1)); - var days = []; - for (var i = 0; i < 7; i++) { - days.push(new Date(date)); - date.setDate(date.getDate() + 1); - } - return days; -} - -function getVisibleMonths(date) { - date = new Date(date || new Date()); - var year = date.getFullYear(); - var months = []; - for (var month = 0; month < 12; month++) { - months.push(new Date(year, month, 1)); - } - return months; -} - -function getVisibleHours(date) { - date = new Date(date || new Date()); - date.setHours(0); - date.setMinutes(0); - date.setSeconds(0); - date.setMilliseconds(0); - var hours = []; - for (var i = 0; i < 24; i++) { - hours.push(date); - date = new Date(date.getTime() + 60 * 60 * 1000); - } - return hours; -} - - -function isAfter(model, date) { - return model && model.getTime() <= date.getTime(); -} - -function isBefore(model, date) { - return model.getTime() >= date.getTime(); -} - -function isSameYear(model, date) { - return model && model.getFullYear() === date.getFullYear(); -} - -function isSameMonth(model, date) { - return isSameYear(model, date) && model.getMonth() === date.getMonth(); -} - -function isSameDay(model, date) { - return isSameMonth(model, date) && model.getDate() === date.getDate(); -} - -function isSameHour(model, date) { - return isSameDay(model, date) && model.getHours() === date.getHours(); -} - -function isSameMinutes(model, date) { - return isSameHour(model, date) && model.getMinutes() === date.getMinutes(); -} - - - -Module.directive('datePicker', ['datePickerConfig', function datePickerDirective(datePickerConfig) { +Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function datePickerDirective(datePickerConfig, datePickerUtils) { //noinspection JSUnusedLocalSymbols return { @@ -225,20 +104,20 @@ Module.directive('datePicker', ['datePickerConfig', function datePickerDirective var date = scope.date; switch (view) { case 'year': - scope.years = getVisibleYears(date); + scope.years = datePickerUtils.getVisibleYears(date); break; case 'month': - scope.months = getVisibleMonths(date); + scope.months = datePickerUtils.getVisibleMonths(date); break; case 'date': - scope.weekdays = scope.weekdays || getDaysOfWeek(); - scope.weeks = getVisibleWeeks(date); + scope.weekdays = scope.weekdays || datePickerUtils.getDaysOfWeek(); + scope.weeks = datePickerUtils.getVisibleWeeks(date); break; case 'hours': - scope.hours = getVisibleHours(date); + scope.hours = datePickerUtils.getVisibleHours(date); break; case 'minutes': - scope.minutes = getVisibleMinutes(date, step); + scope.minutes = datePickerUtils.getVisibleMinutes(date, step); break; } } @@ -279,31 +158,31 @@ Module.directive('datePicker', ['datePickerConfig', function datePickerDirective }; scope.isAfter = function (date) { - return scope.after && isAfter(date, scope.after); + return scope.after && datePickerUtils.isAfter(date, scope.after); }; scope.isBefore = function (date) { - return scope.before && isBefore(date, scope.before); + return scope.before && datePickerUtils.isBefore(date, scope.before); }; scope.isSameMonth = function (date) { - return isSameMonth(scope.model, date); + return datePickerUtils.isSameMonth(scope.model, date); }; scope.isSameYear = function (date) { - return isSameYear(scope.model, date); + return datePickerUtils.isSameYear(scope.model, date); }; scope.isSameDay = function (date) { - return isSameDay(scope.model, date); + return datePickerUtils.isSameDay(scope.model, date); }; scope.isSameHour = function (date) { - return isSameHour(scope.model, date); + return datePickerUtils.isSameHour(scope.model, date); }; scope.isSameMinutes = function (date) { - return isSameMinutes(scope.model, date); + return datePickerUtils.isSameMinutes(scope.model, date); }; scope.isNow = function (date) { diff --git a/app/scripts/datePickerFactory.js b/app/scripts/datePickerFactory.js new file mode 100644 index 0000000..7032145 --- /dev/null +++ b/app/scripts/datePickerFactory.js @@ -0,0 +1,111 @@ +'use strict'; + +angular.module('datePicker').factory('datePickerUtils', function(){ + return { + getVisibleMinutes : function(date, step) { + date = new Date(date || new Date()); + date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours()); + var minutes = []; + var stop = date.getTime() + 60 * 60 * 1000; + while (date.getTime() < stop) { + minutes.push(date); + date = new Date(date.getTime() + step * 60 * 1000); + } + return minutes; + }, + getVisibleWeeks : function(date) { + date = new Date(date || new Date()); + var startMonth = date.getMonth(), startYear = date.getYear(); + date.setDate(1); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + + if (date.getDay() === 0) { + date.setDate(-5); + } else { + date.setDate(date.getDate() - (date.getDay() - 1)); + } + if (date.getDate() === 1) { + date.setDate(-6); + } + + var weeks = []; + while (weeks.length < 6) { + /*jshint -W116 */ + if(date.getYear()=== startYear && date.getMonth() > startMonth) break; + var week = []; + for (var i = 0; i < 7; i++) { + week.push(new Date(date)); + date.setDate(date.getDate() + 1); + } + weeks.push(week); + } + return weeks; + }, + getVisibleYears : function(date) { + var years = []; + date = new Date(date || new Date()); + date.setFullYear(date.getFullYear() - (date.getFullYear() % 10)); + for (var i = 0; i < 12; i++) { + years.push(new Date(date.getFullYear() + (i - 1), 0, 1)); + } + return years; + }, + getDaysOfWeek : function(date) { + date = new Date(date || new Date()); + date = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + date.setDate(date.getDate() - (date.getDay() - 1)); + var days = []; + for (var i = 0; i < 7; i++) { + days.push(new Date(date)); + date.setDate(date.getDate() + 1); + } + return days; + }, + getVisibleMonths : function(date) { + date = new Date(date || new Date()); + var year = date.getFullYear(); + var months = []; + for (var month = 0; month < 12; month++) { + months.push(new Date(year, month, 1)); + } + return months; + }, + getVisibleHours : function(date) { + date = new Date(date || new Date()); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + var hours = []; + for (var i = 0; i < 24; i++) { + hours.push(date); + date = new Date(date.getTime() + 60 * 60 * 1000); + } + return hours; + }, + isAfter : function(model, date) { + return model && model.getTime() <= date.getTime(); + }, + isBefore : function(model, date) { + return model.getTime() >= date.getTime(); + }, + isSameYear : function(model, date) { + return model && model.getFullYear() === date.getFullYear(); + }, + isSameMonth : function(model, date) { + return this.isSameYear(model, date) && model.getMonth() === date.getMonth(); + }, + isSameDay : function(model, date) { + return this.isSameMonth(model, date) && model.getDate() === date.getDate(); + }, + isSameHour : function(model, date) { + return this.isSameDay(model, date) && model.getHours() === date.getHours(); + }, + isSameMinutes : function(model, date) { + return this.isSameHour(model, date) && model.getMinutes() === date.getMinutes(); + } + }; +}); \ No newline at end of file From c149c41eb9abd8fbf03a700d7dd04412ec3c3fd6 Mon Sep 17 00:00:00 2001 From: Alex Edwards Date: Sun, 29 Jun 2014 12:37:23 -0700 Subject: [PATCH 41/60] Renamed Factory file to match factory name --- Gruntfile.js | 2 +- app/scripts/{datePickerFactory.js => datePickerUtils.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename app/scripts/{datePickerFactory.js => datePickerUtils.js} (100%) diff --git a/Gruntfile.js b/Gruntfile.js index 80a8386..3f6f4b6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -183,7 +183,7 @@ module.exports = function (grunt) { separator: '\n' }, js: { - src: ['<%= yeoman.app %>/scripts/{datePicker,input,dateRange,datePickerFactory}.js', '<%= yeoman.tmp %>/templates.js'], + src: ['<%= yeoman.app %>/scripts/{datePicker,input,dateRange,datePickerUtils}.js', '<%= yeoman.tmp %>/templates.js'], dest: '<%= yeoman.dist %>/index.js', options: { banner:'\'use strict\';\n(function(angular){\n', diff --git a/app/scripts/datePickerFactory.js b/app/scripts/datePickerUtils.js similarity index 100% rename from app/scripts/datePickerFactory.js rename to app/scripts/datePickerUtils.js From 3bee7417a67017284ddfabd028cc3a45c0be2b35 Mon Sep 17 00:00:00 2001 From: Alex Edwards Date: Sun, 29 Jun 2014 13:56:31 -0700 Subject: [PATCH 42/60] Renamed Factory file to match factory name --- app/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/index.html b/app/index.html index fbc7c64..fdadcfb 100644 --- a/app/index.html +++ b/app/index.html @@ -165,7 +165,7 @@
Date range button
- + From b3649b8e6b59041b2c1159f3ea7d3a649d8efad8 Mon Sep 17 00:00:00 2001 From: Alex Edwards Date: Sun, 29 Jun 2014 13:57:23 -0700 Subject: [PATCH 43/60] Added tests for the utils factory --- karma.conf.js | 2 +- test/spec/datePickerUtilsTest.js | 136 +++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 test/spec/datePickerUtilsTest.js diff --git a/karma.conf.js b/karma.conf.js index 64630d0..a72e59d 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -46,7 +46,7 @@ autoWatch = false; // - Safari (only Mac) // - PhantomJS // - IE (only Windows) -browsers = ['ChromeCanary']; +browsers = ['Chrome']; // If browser does not capture in given timeout [ms], kill it captureTimeout = 5000; diff --git a/test/spec/datePickerUtilsTest.js b/test/spec/datePickerUtilsTest.js new file mode 100644 index 0000000..205d9ca --- /dev/null +++ b/test/spec/datePickerUtilsTest.js @@ -0,0 +1,136 @@ +describe('Test date Picker Utils', function(){ + var utils, constants; + + var model = new Date('2014-06-29T19:00:00.000Z'); + + beforeEach(angular.mock.module('datePicker')); + + beforeEach(angular.mock.inject(function($injector){ + utils = $injector.get('datePickerUtils'); + constants = $injector.get('datePickerConfig'); + })); + + it('get default visible minutes', function(){ + var mins = utils.getVisibleMinutes(null, constants.step); + + expect(mins).toBeDefined(); + }); + + it('get visible mins provided date', function(){ + var start = new Date('2014-06-29T19:00:00.000Z'); + var end = new Date('2014-06-29T19:55:00.000Z'); + var mins = utils.getVisibleMinutes(start, constants.step); + + expect(mins).toBeDefined(); + expect(mins[0]).toEqual(start); + expect(mins[mins.length-1]).toEqual(end); + }); + + it('get default visible weeks', function(){ + var weeks = utils.getVisibleWeeks(null, constants.step); + + expect(weeks).toBeDefined(); + }); + + it('get visible weeks provided date', function(){ + var start = new Date('2014-05-26T07:00:00.000Z'); + var end = new Date('2014-07-06T07:00:00.000Z'); + var chosen = new Date('2014-06-29T19:00:00.000Z'); + var weeks = utils.getVisibleWeeks(chosen, constants.step); + + expect(weeks).toBeDefined(); + expect(weeks[0][0]).toEqual(start); + expect(weeks[5][weeks[5].length-1]).toEqual(end); + }); + + it('get default visible years', function(){ + var years = utils.getVisibleYears(null, constants.step); + + expect(years).toBeDefined(); + }); + + it('get visible years provided date', function(){ + var start = new Date('2009-01-01T08:00:00.000Z'); + var end = new Date('2020-01-01T08:00:00.000Z'); + var chosen = new Date('2014-06-29T19:00:00.000Z'); + var years = utils.getVisibleYears(chosen, constants.step); + + expect(years).toBeDefined(); + expect(years[0]).toEqual(start); + expect(years[years.length-1]).toEqual(end); + }); + + it('get default days of week', function(){ + var days = utils.getDaysOfWeek(null); + + expect(days).toBeDefined(); + }); + + it('get days of week provided date', function(){ + var start = new Date('2014-05-26T07:00:00.000Z'); + var end = new Date('2014-06-01T07:00:00.000Z'); + var days = utils.getDaysOfWeek(start); + + expect(days).toBeDefined(); + expect(days[0]).toEqual(start); + expect(days[days.length-1]).toEqual(end); + }); + + it('get default months', function(){ + var months = utils.getVisibleMonths(null); + + expect(months).toBeDefined(); + }); + + it('get default months provided date', function(){ + var start = new Date('2014-01-01T08:00:00.000Z'); + var end = new Date('2014-12-01T08:00:00.000Z'); + var chosen = new Date('2014-06-29T19:00:00.000Z'); + var months = utils.getVisibleMonths(chosen); + + expect(months).toBeDefined(); + expect(months[0]).toEqual(start); + expect(months[months.length-1]).toEqual(end); + }); + + it('get default hours', function(){ + var hours = utils.getVisibleHours(null); + + expect(hours).toBeDefined(); + }); + + it('get default hours provided date', function(){ + var start = new Date('2014-06-29T07:00:00.000Z'); + var end = new Date('2014-06-30T06:00:00.000Z'); + var chosen = new Date('2014-06-29T19:00:00.000Z'); + var hours = utils.getVisibleHours(chosen); + + expect(hours).toBeDefined(); + expect(hours[0]).toEqual(start); + expect(hours[hours.length-1]).toEqual(end); + }); + + it('model is after date', function(){ + var dateAfter = new Date('2014-06-29T20:00:00.000Z'); + + expect(utils.isAfter(model, dateAfter)).toBe(true); + expect(utils.isBefore(model, dateAfter)).toBe(false); + }); + + it('model is before date', function(){ + var dateAfter = new Date('2014-06-29T18:00:00.000Z'); + + expect(utils.isAfter(model, dateAfter)).toBe(false); + expect(utils.isBefore(model, dateAfter)).toBe(true); + }); + + it('model is almost same', function(){ + var dateSimilar = new Date('2014-06-29T19:00:55.555Z'); + + expect(utils.isSameYear(model, dateSimilar)).toBe(true); + expect(utils.isSameMonth(model, dateSimilar)).toBe(true); + expect(utils.isSameDay(model, dateSimilar)).toBe(true); + expect(utils.isSameHour(model, dateSimilar)).toBe(true); + expect(utils.isSameMinutes(model, dateSimilar)).toBe(true); + }); +}); \ No newline at end of file From cbfba51a5f47fb8e1048439e783c7d4d7d813d53 Mon Sep 17 00:00:00 2001 From: Alex Edwards Date: Sun, 29 Jun 2014 13:59:51 -0700 Subject: [PATCH 44/60] added iml files to igore list --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index eea5e09..5c3897c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules .tmp .sass-cache app/components -.idea \ No newline at end of file +.idea +*.iml From 07ac3976bfc66d486b0f7dea5fd52b327d535728 Mon Sep 17 00:00:00 2001 From: Bulut Korkmaz Date: Tue, 26 Aug 2014 16:31:26 +0100 Subject: [PATCH 45/60] Npm install command fixed. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1566346..0cb816d 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ #### Development version -Checkout, run `grunt install` and `bower install`. +Checkout, run `npm install` and `bower install`. To build run `grunt build` ## Examples From ffc62e0a6a69645f74c524a6340ed4abf2e6525a Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Wed, 15 Oct 2014 21:44:31 -0400 Subject: [PATCH 46/60] work with bootstrap 3 as used in my mushin app --- app/styles/mixins.less | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/styles/mixins.less b/app/styles/mixins.less index b734bab..6e017ae 100644 --- a/app/styles/mixins.less +++ b/app/styles/mixins.less @@ -558,13 +558,13 @@ .core (@gridColumnWidth, @gridGutterWidth) { .spanX (@index) when (@index > 0) { - (~".span@{index}") { .span(@index); } + (.span@{index}) { .span(@index); } .spanX(@index - 1); } .spanX (0) {} .offsetX (@index) when (@index > 0) { - (~".offset@{index}") { .offset(@index); } + (.offset@{index}) { .offset(@index); } .offsetX(@index - 1); } .offsetX (0) {} @@ -603,14 +603,14 @@ .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) { .spanX (@index) when (@index > 0) { - (~".span@{index}") { .span(@index); } + (.span@{index}) { .span(@index); } .spanX(@index - 1); } .spanX (0) {} .offsetX (@index) when (@index > 0) { - (~'.offset@{index}') { .offset(@index); } - (~'.offset@{index}:first-child') { .offsetFirstChild(@index); } + (.offset@{index}) { .offset(@index); } + (.offset@{index}:first-child) { .offsetFirstChild(@index); } .offsetX(@index - 1); } .offsetX (0) {} @@ -656,9 +656,15 @@ } .input(@gridColumnWidth, @gridGutterWidth) { - .spanX (@index) when (@index > 0) { - (~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); } + /* FIXME: thomas: this line provokes less compilation errors, so I + /* broke it up in three lines + (input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}) { .span(@index); } + */ + input.span@{index} { .span(@index); } + textarea.span@{index} { .span(@index); } + .uneditable-input.span@{index} { .span(@index); } + .spanX(@index - 1); } .spanX (0) {} From fe85e6c313b90edfa1247fe1a606b4d676962c6f Mon Sep 17 00:00:00 2001 From: silverwolfx10 Date: Mon, 24 Nov 2014 20:45:01 -0200 Subject: [PATCH 47/60] Add ngModel for ngChange Work Add ngModel optional requirement for make ngChange Work, now just add ng-model and ng-change and be happy. --- app/scripts/datePicker.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 48a2e7d..3680a4f 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -30,13 +30,14 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function //noinspection JSUnusedLocalSymbols return { // this is a bug ? + require:'?ngModel', template: '
', scope: { model: '=datePicker', after: '=?', before: '=?' }, - link: function (scope, element, attrs) { + link: function (scope, element, attrs, ngModel) { scope.date = new Date(scope.model || new Date()); scope.views = datePickerConfig.views.concat(); @@ -73,6 +74,10 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function if ((!nextView || partial) || scope.model) { scope.model = new Date(scope.model || date); + //if ngModel , setViewValue and trigger ng-change, etc... + if(ngModel) + ngModel.$setViewValue(scope.model); + var view = partial ? 'minutes' : scope.view; //noinspection FallThroughInSwitchStatementJS switch (view) { From 3da2814781592f512e622a379ae9c34531ddb5b7 Mon Sep 17 00:00:00 2001 From: silverwolfx10 Date: Tue, 25 Nov 2014 09:57:57 -0200 Subject: [PATCH 48/60] BugFix ngChange before we have a problem with the ngChange, the model does not change in the same time when the trigger callback, now it's ok. --- app/scripts/datePicker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 3680a4f..a2ddb54 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -76,7 +76,7 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function scope.model = new Date(scope.model || date); //if ngModel , setViewValue and trigger ng-change, etc... if(ngModel) - ngModel.$setViewValue(scope.model); + ngModel.$setViewValue(scope.date); var view = partial ? 'minutes' : scope.view; //noinspection FallThroughInSwitchStatementJS From 140c9b867426755ac3811e540392a064e78e7ec7 Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Wed, 11 Feb 2015 11:04:20 +0000 Subject: [PATCH 49/60] Fixing issue #76 --- app/scripts/datePickerUtils.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/scripts/datePickerUtils.js b/app/scripts/datePickerUtils.js index 7032145..8359abf 100644 --- a/app/scripts/datePickerUtils.js +++ b/app/scripts/datePickerUtils.js @@ -87,24 +87,31 @@ angular.module('datePicker').factory('datePickerUtils', function(){ return hours; }, isAfter : function(model, date) { + model = new Date(model); return model && model.getTime() <= date.getTime(); }, isBefore : function(model, date) { + model = new Date(model); return model.getTime() >= date.getTime(); }, isSameYear : function(model, date) { + model = new Date(model); return model && model.getFullYear() === date.getFullYear(); }, isSameMonth : function(model, date) { + model = new Date(model); return this.isSameYear(model, date) && model.getMonth() === date.getMonth(); }, isSameDay : function(model, date) { + model = new Date(model); return this.isSameMonth(model, date) && model.getDate() === date.getDate(); }, isSameHour : function(model, date) { + model = new Date(model); return this.isSameDay(model, date) && model.getHours() === date.getHours(); }, isSameMinutes : function(model, date) { + model = new Date(model); return this.isSameHour(model, date) && model.getMinutes() === date.getMinutes(); } }; From 5273f8c4cbf85bf551bfc78500e4d4849afc49e6 Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Wed, 11 Feb 2015 11:09:26 +0000 Subject: [PATCH 50/60] Fixing issue #76 --- app/scripts/datePickerUtils.js | 14 +- dist/index.js | 367 ++++++++++++++++++++++----------- dist/index.min.js | 2 +- 3 files changed, 255 insertions(+), 128 deletions(-) diff --git a/app/scripts/datePickerUtils.js b/app/scripts/datePickerUtils.js index 8359abf..04e5a7e 100644 --- a/app/scripts/datePickerUtils.js +++ b/app/scripts/datePickerUtils.js @@ -87,31 +87,31 @@ angular.module('datePicker').factory('datePickerUtils', function(){ return hours; }, isAfter : function(model, date) { - model = new Date(model); + model = (model !== undefined) ? new Date(model) : model; return model && model.getTime() <= date.getTime(); }, isBefore : function(model, date) { - model = new Date(model); + model = (model !== undefined) ? new Date(model) : model; return model.getTime() >= date.getTime(); }, isSameYear : function(model, date) { - model = new Date(model); + model = (model !== undefined) ? new Date(model) : model; return model && model.getFullYear() === date.getFullYear(); }, isSameMonth : function(model, date) { - model = new Date(model); + model = (model !== undefined) ? new Date(model) : model; return this.isSameYear(model, date) && model.getMonth() === date.getMonth(); }, isSameDay : function(model, date) { - model = new Date(model); + model = (model !== undefined) ? new Date(model) : model; return this.isSameMonth(model, date) && model.getDate() === date.getDate(); }, isSameHour : function(model, date) { - model = new Date(model); + model = (model !== undefined) ? new Date(model) : model; return this.isSameDay(model, date) && model.getHours() === date.getHours(); }, isSameMinutes : function(model, date) { - model = new Date(model); + model = (model !== undefined) ? new Date(model) : model; return this.isSameHour(model, date) && model.getMinutes() === date.getMinutes(); } }; diff --git a/dist/index.js b/dist/index.js index 101d992..5a1ee19 100644 --- a/dist/index.js +++ b/dist/index.js @@ -308,24 +308,31 @@ angular.module('datePicker').factory('datePickerUtils', function(){ return hours; }, isAfter : function(model, date) { + model = (model !== undefined) ? new Date(model) : model; return model && model.getTime() <= date.getTime(); }, isBefore : function(model, date) { + model = (model !== undefined) ? new Date(model) : model; return model.getTime() >= date.getTime(); }, isSameYear : function(model, date) { + model = (model !== undefined) ? new Date(model) : model; return model && model.getFullYear() === date.getFullYear(); }, isSameMonth : function(model, date) { + model = (model !== undefined) ? new Date(model) : model; return this.isSameYear(model, date) && model.getMonth() === date.getMonth(); }, isSameDay : function(model, date) { + model = (model !== undefined) ? new Date(model) : model; return this.isSameMonth(model, date) && model.getDate() === date.getDate(); }, isSameHour : function(model, date) { + model = (model !== undefined) ? new Date(model) : model; return this.isSameDay(model, date) && model.getHours() === date.getHours(); }, isSameMinutes : function(model, date) { + model = (model !== undefined) ? new Date(model) : model; return this.isSameHour(model, date) && model.getMinutes() === date.getMinutes(); } }; @@ -504,129 +511,249 @@ Module.directive('dateTime', ['$compile', '$document', '$filter', 'dateTimeConfi angular.module("datePicker").run(["$templateCache", function($templateCache) { $templateCache.put("templates/datepicker.html", - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{date|date:\"yyyy MMMM\"}}
{{ day|date:\"EEE\" }}
\n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{ date|date:\"yyyy\" }}
\n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{ date|date:\"dd MMMM yyyy\" }}
\n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
{{ date|date:\"dd MMMM yyyy\" }}\n" + - "
\n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{date|date:\"yyyy MMMM\"}}
{{ day|date:\"EEE\" }}
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{ date|date:\"yyyy\" }}
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{ date|date:\"dd MMMM yyyy\" }}
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
{{ date|date:\"dd MMMM yyyy\" }}\r" + + "\n" + + "
\r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" ); $templateCache.put("templates/daterange.html", - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + "
\r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + " \r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" + + "
\r" + + "\n" ); }]); diff --git a/dist/index.min.js b/dist/index.min.js index c52a8f9..e5dc66f 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view,d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,i)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var i=parseInt(e.step||a.step,10),j=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||j||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var d=j?"minutes":c.view;switch(d){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b)}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/i)===~~(d.getMinutes()/i);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a.getTime()>=b.getTime()},isSameYear:function(a,b){return a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ date|date:"dd MMMM yyyy" }}\n
\n \n
\n
\n
\n'),a.put("templates/daterange.html",'
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view,d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,i)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var i=parseInt(e.step||a.step,10),j=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||j||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var d=j?"minutes":c.view;switch(d){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b)}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/i)===~~(d.getMinutes()/i);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file From 5a63f6ae29c0f7874e6bb394678df5fd6fe2d31b Mon Sep 17 00:00:00 2001 From: Stefan Sopic Date: Fri, 20 Feb 2015 10:31:39 +0100 Subject: [PATCH 51/60] Date range datepickers always set to show correct dates when opend. --- app/scripts/datePicker.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 4d36034..7cc42c5 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -39,6 +39,8 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function }, link: function (scope, element, attrs, ngModel) { + var arrowClick = false; + scope.date = new Date(scope.model || new Date()); scope.views = datePickerConfig.views.concat(); scope.view = attrs.view || datePickerConfig.view; @@ -107,7 +109,13 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function function update() { var view = scope.view; + + if (scope.model && !arrowClick) { + scope.date = new Date(scope.model); + arrowClick = false; + } var date = scope.date; + switch (view) { case 'year': scope.years = datePickerUtils.getVisibleYears(date); @@ -156,6 +164,7 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function date.setHours(date.getHours() + delta); break; } + arrowClick = true; update(); }; From 7096f3523963b0871560dd9d3d1ec180676c0f0e Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Fri, 20 Feb 2015 10:16:36 +0000 Subject: [PATCH 52/60] Dropping recess for less, build PR #79 --- Gruntfile.js | 4 +- dist/index.css | 102 ++++++++++++++++++--------------------------- dist/index.js | 9 ++++ dist/index.min.css | 2 +- dist/index.min.js | 2 +- package.json | 2 +- 6 files changed, 54 insertions(+), 67 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 3f6f4b6..d10bac9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -43,7 +43,7 @@ module.exports = function (grunt) { ] } }, - recess: { + less: { options: { compile: true }, @@ -221,7 +221,7 @@ module.exports = function (grunt) { grunt.registerTask('build', [ 'jshint', 'clean:dist', - 'recess', + 'less', 'ngtemplates', 'concat', 'cssmin', diff --git a/dist/index.css b/dist/index.css index 084d189..a62eec8 100644 --- a/dist/index.css +++ b/dist/index.css @@ -1,18 +1,15 @@ .clearfix { *zoom: 1; } - .clearfix:before, .clearfix:after { display: table; - line-height: 0; content: ""; + line-height: 0; } - .clearfix:after { clear: both; } - .hide-text { font: 0/0 a; color: transparent; @@ -20,44 +17,40 @@ background-color: transparent; border: 0; } - .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } - [date-picker-wrapper] { position: relative !important; display: block; } - [date-time-append] [date-picker] { position: relative; margin-right: -1000px; margin-bottom: -1000px; } - [date-range] [date-picker] .after.before { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #499dcd; - *background-color: #2f6ab4; background-image: -moz-linear-gradient(top, #5bc0de, #2f6ab4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f6ab4)); background-image: -webkit-linear-gradient(top, #5bc0de, #2f6ab4); background-image: -o-linear-gradient(top, #5bc0de, #2f6ab4); background-image: linear-gradient(to bottom, #5bc0de, #2f6ab4); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0); border-color: #2f6ab4 #2f6ab4 #1f4677; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *background-color: #2f6ab4; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - [date-range] [date-picker] .after.before:hover, [date-range] [date-picker] .after.before:active, [date-range] [date-picker] .after.before.active, @@ -67,87 +60,80 @@ background-color: #2f6ab4; *background-color: #2a5ea0; } - [date-range] [date-picker] .after.before:active, [date-range] [date-picker] .after.before.active { background-color: #24528c \9; } - [date-picker] { - padding: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + /* GENERAL */ + padding: 4px; + /* SPECIFIC */ } - [date-picker] table { margin: 0; } - [date-picker] td, [date-picker] th { - width: 20px; - height: 20px; padding: 4px 5px; text-align: center; - border: none; + width: 20px; + height: 20px; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: none; } - [date-picker] .switch { width: 145px; } - [date-picker] span { display: block; - float: left; width: 23%; height: 26px; - margin: 1%; line-height: 25px; + float: left; + margin: 1%; cursor: pointer; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - [date-picker] span:hover { background: #eeeeee; } - [date-picker] span.disabled, [date-picker] span.disabled:hover { + background: none; color: #999999; cursor: default; - background: none; } - [date-picker] .active, [date-picker] .now { color: #ffffff; - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #006dcc; - *background-color: #0044cc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); background-image: -o-linear-gradient(top, #0088cc, #0044cc); background-image: linear-gradient(to bottom, #0088cc, #0044cc); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); border-color: #0044cc #0044cc #002a80; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *background-color: #0044cc; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } - [date-picker] .active:hover, [date-picker] .now:hover, [date-picker] .active:active, @@ -162,31 +148,29 @@ background-color: #0044cc; *background-color: #003bb3; } - [date-picker] .active:active, [date-picker] .now:active, [date-picker] .active.active, [date-picker] .now.active { background-color: #003399 \9; } - [date-picker] .now { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #ee735b; - *background-color: #ee905b; background-image: -moz-linear-gradient(top, #ee5f5b, #ee905b); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#ee905b)); background-image: -webkit-linear-gradient(top, #ee5f5b, #ee905b); background-image: -o-linear-gradient(top, #ee5f5b, #ee905b); background-image: linear-gradient(to bottom, #ee5f5b, #ee905b); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0); border-color: #ee905b #ee905b #e56218; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *background-color: #ee905b; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - [date-picker] .now:hover, [date-picker] .now:active, [date-picker] .now.active, @@ -196,37 +180,31 @@ background-color: #ee905b; *background-color: #ec8044; } - [date-picker] .now:active, [date-picker] .now.active { background-color: #e9712d \9; } - [date-picker] .disabled { + background: none; color: #999999 !important; cursor: default; - background: none; } - [date-picker] [ng-switch-when="year"] span, [date-picker] [ng-switch-when="month"] span, [date-picker] [ng-switch-when="minutes"] span { height: 54px; line-height: 54px; } - [date-picker] [ng-switch-when="date"] td { padding: 0; } - [date-picker] [ng-switch-when="date"] span { width: 100%; height: 26px; line-height: 26px; } - [date-picker] th:hover, [date-picker] [ng-switch-when="date"] td span:hover { - cursor: pointer; background: #eeeeee; -} \ No newline at end of file + cursor: pointer; +} diff --git a/dist/index.js b/dist/index.js index 5a1ee19..12a40f8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -41,6 +41,8 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function }, link: function (scope, element, attrs, ngModel) { + var arrowClick = false; + scope.date = new Date(scope.model || new Date()); scope.views = datePickerConfig.views.concat(); scope.view = attrs.view || datePickerConfig.view; @@ -109,7 +111,13 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function function update() { var view = scope.view; + + if (scope.model && !arrowClick) { + scope.date = new Date(scope.model); + arrowClick = false; + } var date = scope.date; + switch (view) { case 'year': scope.years = datePickerUtils.getVisibleYears(date); @@ -158,6 +166,7 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function date.setHours(date.getHours() + delta); break; } + arrowClick = true; update(); }; diff --git a/dist/index.min.css b/dist/index.min.css index 43975d3..b48ab9d 100644 --- a/dist/index.min.css +++ b/dist/index.min.css @@ -1 +1 @@ -.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[date-picker-wrapper]{position:relative!important;display:block}[date-time-append] [date-picker]{position:relative;margin-right:-1000px;margin-bottom:-1000px}[date-range] [date-picker] .after.before{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#499dcd;*background-color:#2f6ab4;background-image:-moz-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f6ab4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-o-linear-gradient(top,#5bc0de,#2f6ab4);background-image:linear-gradient(to bottom,#5bc0de,#2f6ab4);background-repeat:repeat-x;border-color:#2f6ab4 #2f6ab4 #1f4677;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-range] [date-picker] .after.before:hover,[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active,[date-range] [date-picker] .after.before.disabled,[date-range] [date-picker] .after.before[disabled]{color:#fff;background-color:#2f6ab4;*background-color:#2a5ea0}[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active{background-color:#24528c \9}[date-picker]{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{width:20px;height:20px;padding:4px 5px;text-align:center;border:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] .switch{width:145px}[date-picker] span{display:block;float:left;width:23%;height:26px;margin:1%;line-height:25px;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] span:hover{background:#eee}[date-picker] span.disabled,[date-picker] span.disabled:hover{color:#999;cursor:default;background:0}[date-picker] .active,[date-picker] .now{color:#fff;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .active:hover,[date-picker] .now:hover,[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active,[date-picker] .active.disabled,[date-picker] .now.disabled,[date-picker] .active[disabled],[date-picker] .now[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active{background-color:#039 \9}[date-picker] .now{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ee735b;*background-color:#ee905b;background-image:-moz-linear-gradient(top,#ee5f5b,#ee905b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#ee905b));background-image:-webkit-linear-gradient(top,#ee5f5b,#ee905b);background-image:-o-linear-gradient(top,#ee5f5b,#ee905b);background-image:linear-gradient(to bottom,#ee5f5b,#ee905b);background-repeat:repeat-x;border-color:#ee905b #ee905b #e56218;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .now:hover,[date-picker] .now:active,[date-picker] .now.active,[date-picker] .now.disabled,[date-picker] .now[disabled]{color:#fff;background-color:#ee905b;*background-color:#ec8044}[date-picker] .now:active,[date-picker] .now.active{background-color:#e9712d \9}[date-picker] .disabled{color:#999!important;cursor:default;background:0}[date-picker] [ng-switch-when=year] span,[date-picker] [ng-switch-when=month] span,[date-picker] [ng-switch-when=minutes] span{height:54px;line-height:54px}[date-picker] [ng-switch-when=date] td{padding:0}[date-picker] [ng-switch-when=date] span{width:100%;height:26px;line-height:26px}[date-picker] th:hover,[date-picker] [ng-switch-when=date] td span:hover{cursor:pointer;background:#eee} \ No newline at end of file +.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[date-picker-wrapper]{position:relative!important;display:block}[date-time-append] [date-picker]{position:relative;margin-right:-1000px;margin-bottom:-1000px}[date-range] [date-picker] .after.before{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#499dcd;background-image:-moz-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f6ab4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-o-linear-gradient(top,#5bc0de,#2f6ab4);background-image:linear-gradient(to bottom,#5bc0de,#2f6ab4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0);border-color:#2f6ab4 #2f6ab4 #1f4677;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#2f6ab4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-range] [date-picker] .after.before:hover,[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active,[date-range] [date-picker] .after.before.disabled,[date-range] [date-picker] .after.before[disabled]{color:#fff;background-color:#2f6ab4;*background-color:#2a5ea0}[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active{background-color:#24528c \9}[date-picker]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:4px}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{padding:4px 5px;text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}[date-picker] .switch{width:145px}[date-picker] span{display:block;width:23%;height:26px;line-height:25px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] span:hover{background:#eee}[date-picker] span.disabled,[date-picker] span.disabled:hover{background:0;color:#999;cursor:default}[date-picker] .active,[date-picker] .now{color:#fff;background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#04c;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] .active:hover,[date-picker] .now:hover,[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active,[date-picker] .active.disabled,[date-picker] .now.disabled,[date-picker] .active[disabled],[date-picker] .now[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active{background-color:#039 \9}[date-picker] .now{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ee735b;background-image:-moz-linear-gradient(top,#ee5f5b,#ee905b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#ee905b));background-image:-webkit-linear-gradient(top,#ee5f5b,#ee905b);background-image:-o-linear-gradient(top,#ee5f5b,#ee905b);background-image:linear-gradient(to bottom,#ee5f5b,#ee905b);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0);border-color:#ee905b #ee905b #e56218;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#ee905b;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .now:hover,[date-picker] .now:active,[date-picker] .now.active,[date-picker] .now.disabled,[date-picker] .now[disabled]{color:#fff;background-color:#ee905b;*background-color:#ec8044}[date-picker] .now:active,[date-picker] .now.active{background-color:#e9712d \9}[date-picker] .disabled{background:0;color:#999!important;cursor:default}[date-picker] [ng-switch-when=year] span,[date-picker] [ng-switch-when=month] span,[date-picker] [ng-switch-when=minutes] span{height:54px;line-height:54px}[date-picker] [ng-switch-when=date] td{padding:0}[date-picker] [ng-switch-when=date] span{width:100%;height:26px;line-height:26px}[date-picker] th:hover,[date-picker] [ng-switch-when=date] td span:hover{background:#eee;cursor:pointer} \ No newline at end of file diff --git a/dist/index.min.js b/dist/index.min.js index e5dc66f..f9b94f0 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view,d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,i)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var i=parseInt(e.step||a.step,10),j=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||j||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var d=j?"minutes":c.view;switch(d){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b)}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/i)===~~(d.getMinutes()/i);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var d=k?"minutes":c.view;switch(d){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b)}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file diff --git a/package.json b/package.json index a30c6ab..12a65f3 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "grunt-google-cdn": "~0.1.1", "grunt-ngmin": "~0.0.2", "grunt-angular-templates": "~0.3.8", - "grunt-recess": "~0.4.0", + "grunt-contrib-less": "*", "grunt-concurrent": "~0.4.0", "load-grunt-tasks": "~0.2.0" }, From 325e1610cd54482f3418dbb9fb5dd3edb166f147 Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Mon, 23 Feb 2015 15:27:19 +0000 Subject: [PATCH 53/60] Fixing issue #80 --- app/scripts/input.js | 1 + dist/index.js | 1 + dist/index.min.js | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/scripts/input.js b/app/scripts/input.js index 2d92bda..abb0d50 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -15,6 +15,7 @@ Module.constant('dateTimeConfig', { (attrs.template ? 'template="' + attrs.template + '" ' : '') + (attrs.minView ? 'min-view="' + attrs.minView + '" ' : '') + (attrs.partial ? 'partial="' + attrs.partial + '" ' : '') + + (attrs.step ? 'step="' + attrs.step + '" ' : '') + 'class="dropdown-menu">'; }, format: 'yyyy-MM-dd HH:mm', diff --git a/dist/index.js b/dist/index.js index 12a40f8..b038d8f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -392,6 +392,7 @@ Module.constant('dateTimeConfig', { (attrs.template ? 'template="' + attrs.template + '" ' : '') + (attrs.minView ? 'min-view="' + attrs.minView + '" ' : '') + (attrs.partial ? 'partial="' + attrs.partial + '" ' : '') + + (attrs.step ? 'step="' + attrs.step + '" ' : '') + 'class="dropdown-menu">'; }, format: 'yyyy-MM-dd HH:mm', diff --git a/dist/index.min.js b/dist/index.min.js index f9b94f0..61f7de5 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var d=k?"minutes":c.view;switch(d){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b)}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var d=k?"minutes":c.view;switch(d){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b)}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file From 6f0805ff2d75607ff570fcb16daae000a79c3ddc Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Mon, 9 Mar 2015 17:26:46 +0000 Subject: [PATCH 54/60] Adding auto close issue #72 --- app/scripts/datePicker.js | 4 ++++ app/styles/style.less | 2 ++ dist/index.css | 3 +++ dist/index.js | 4 ++++ dist/index.min.css | 2 +- dist/index.min.js | 2 +- 6 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 7cc42c5..8607d51 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -105,6 +105,10 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function if (nextView) { scope.setView(nextView); } + + if(!nextView && attrs.autoClose === 'true'){ + element.addClass('hidden'); + } }; function update() { diff --git a/app/styles/style.less b/app/styles/style.less index da3f6d2..3579b09 100644 --- a/app/styles/style.less +++ b/app/styles/style.less @@ -18,6 +18,8 @@ } } +[date-picker].hidden { display: none; } + [date-picker] { .user-select(none); .border-radius(4px); diff --git a/dist/index.css b/dist/index.css index a62eec8..e8296a1 100644 --- a/dist/index.css +++ b/dist/index.css @@ -64,6 +64,9 @@ [date-range] [date-picker] .after.before.active { background-color: #24528c \9; } +[date-picker].hidden { + display: none; +} [date-picker] { -webkit-user-select: none; -moz-user-select: none; diff --git a/dist/index.js b/dist/index.js index b038d8f..d938d9a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -107,6 +107,10 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function if (nextView) { scope.setView(nextView); } + + if(!nextView && attrs.autoClose === 'true'){ + element.addClass('hidden'); + } }; function update() { diff --git a/dist/index.min.css b/dist/index.min.css index b48ab9d..b0ca33d 100644 --- a/dist/index.min.css +++ b/dist/index.min.css @@ -1 +1 @@ -.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[date-picker-wrapper]{position:relative!important;display:block}[date-time-append] [date-picker]{position:relative;margin-right:-1000px;margin-bottom:-1000px}[date-range] [date-picker] .after.before{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#499dcd;background-image:-moz-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f6ab4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-o-linear-gradient(top,#5bc0de,#2f6ab4);background-image:linear-gradient(to bottom,#5bc0de,#2f6ab4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0);border-color:#2f6ab4 #2f6ab4 #1f4677;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#2f6ab4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-range] [date-picker] .after.before:hover,[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active,[date-range] [date-picker] .after.before.disabled,[date-range] [date-picker] .after.before[disabled]{color:#fff;background-color:#2f6ab4;*background-color:#2a5ea0}[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active{background-color:#24528c \9}[date-picker]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:4px}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{padding:4px 5px;text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}[date-picker] .switch{width:145px}[date-picker] span{display:block;width:23%;height:26px;line-height:25px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] span:hover{background:#eee}[date-picker] span.disabled,[date-picker] span.disabled:hover{background:0;color:#999;cursor:default}[date-picker] .active,[date-picker] .now{color:#fff;background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#04c;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] .active:hover,[date-picker] .now:hover,[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active,[date-picker] .active.disabled,[date-picker] .now.disabled,[date-picker] .active[disabled],[date-picker] .now[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active{background-color:#039 \9}[date-picker] .now{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ee735b;background-image:-moz-linear-gradient(top,#ee5f5b,#ee905b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#ee905b));background-image:-webkit-linear-gradient(top,#ee5f5b,#ee905b);background-image:-o-linear-gradient(top,#ee5f5b,#ee905b);background-image:linear-gradient(to bottom,#ee5f5b,#ee905b);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0);border-color:#ee905b #ee905b #e56218;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#ee905b;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .now:hover,[date-picker] .now:active,[date-picker] .now.active,[date-picker] .now.disabled,[date-picker] .now[disabled]{color:#fff;background-color:#ee905b;*background-color:#ec8044}[date-picker] .now:active,[date-picker] .now.active{background-color:#e9712d \9}[date-picker] .disabled{background:0;color:#999!important;cursor:default}[date-picker] [ng-switch-when=year] span,[date-picker] [ng-switch-when=month] span,[date-picker] [ng-switch-when=minutes] span{height:54px;line-height:54px}[date-picker] [ng-switch-when=date] td{padding:0}[date-picker] [ng-switch-when=date] span{width:100%;height:26px;line-height:26px}[date-picker] th:hover,[date-picker] [ng-switch-when=date] td span:hover{background:#eee;cursor:pointer} \ No newline at end of file +.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[date-picker-wrapper]{position:relative!important;display:block}[date-time-append] [date-picker]{position:relative;margin-right:-1000px;margin-bottom:-1000px}[date-range] [date-picker] .after.before{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#499dcd;background-image:-moz-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f6ab4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f6ab4);background-image:-o-linear-gradient(top,#5bc0de,#2f6ab4);background-image:linear-gradient(to bottom,#5bc0de,#2f6ab4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f6ab4', GradientType=0);border-color:#2f6ab4 #2f6ab4 #1f4677;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#2f6ab4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-range] [date-picker] .after.before:hover,[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active,[date-range] [date-picker] .after.before.disabled,[date-range] [date-picker] .after.before[disabled]{color:#fff;background-color:#2f6ab4;*background-color:#2a5ea0}[date-range] [date-picker] .after.before:active,[date-range] [date-picker] .after.before.active{background-color:#24528c \9}[date-picker].hidden{display:none}[date-picker]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:4px}[date-picker] table{margin:0}[date-picker] td,[date-picker] th{padding:4px 5px;text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}[date-picker] .switch{width:145px}[date-picker] span{display:block;width:23%;height:26px;line-height:25px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}[date-picker] span:hover{background:#eee}[date-picker] span.disabled,[date-picker] span.disabled:hover{background:0;color:#999;cursor:default}[date-picker] .active,[date-picker] .now{color:#fff;background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#04c;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}[date-picker] .active:hover,[date-picker] .now:hover,[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active,[date-picker] .active.disabled,[date-picker] .now.disabled,[date-picker] .active[disabled],[date-picker] .now[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}[date-picker] .active:active,[date-picker] .now:active,[date-picker] .active.active,[date-picker] .now.active{background-color:#039 \9}[date-picker] .now{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ee735b;background-image:-moz-linear-gradient(top,#ee5f5b,#ee905b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#ee905b));background-image:-webkit-linear-gradient(top,#ee5f5b,#ee905b);background-image:-o-linear-gradient(top,#ee5f5b,#ee905b);background-image:linear-gradient(to bottom,#ee5f5b,#ee905b);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffee905b', GradientType=0);border-color:#ee905b #ee905b #e56218;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);*background-color:#ee905b;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}[date-picker] .now:hover,[date-picker] .now:active,[date-picker] .now.active,[date-picker] .now.disabled,[date-picker] .now[disabled]{color:#fff;background-color:#ee905b;*background-color:#ec8044}[date-picker] .now:active,[date-picker] .now.active{background-color:#e9712d \9}[date-picker] .disabled{background:0;color:#999!important;cursor:default}[date-picker] [ng-switch-when=year] span,[date-picker] [ng-switch-when=month] span,[date-picker] [ng-switch-when=minutes] span{height:54px;line-height:54px}[date-picker] [ng-switch-when=date] td{padding:0}[date-picker] [ng-switch-when=date] span{width:100%;height:26px;line-height:26px}[date-picker] th:hover,[date-picker] [ng-switch-when=date] td span:hover{background:#eee;cursor:pointer} \ No newline at end of file diff --git a/dist/index.min.js b/dist/index.min.js index 61f7de5..224e8a1 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var d=k?"minutes":c.view;switch(d){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b)}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var g=k?"minutes":c.view;switch(g){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b),b||"true"!==e.autoClose||d.addClass("hidden")}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file From 6c172753af6bd2dcbd9c8abb51f1e66546a1d86b Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Mon, 9 Mar 2015 17:39:31 +0000 Subject: [PATCH 55/60] Adding auto close issue #72 --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 0cb816d..cd0bc97 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,12 @@ To build run `grunt build`
``` +##### Close the picker when min-view is reached + +```html +
+``` + ##### input as datepicker ```html From 0b1da9c274a0e0393b865d743f4384dbb64da6bc Mon Sep 17 00:00:00 2001 From: Juho Saarinen Date: Mon, 23 Mar 2015 09:34:44 +0200 Subject: [PATCH 56/60] Autoclose to popup calendar --- app/scripts/input.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/scripts/input.js b/app/scripts/input.js index abb0d50..49bae6a 100644 --- a/app/scripts/input.js +++ b/app/scripts/input.js @@ -12,6 +12,7 @@ Module.constant('dateTimeConfig', { 'date-picker="' + attrs.ngModel + '" ' + (attrs.view ? 'view="' + attrs.view + '" ' : '') + (attrs.maxView ? 'max-view="' + attrs.maxView + '" ' : '') + + (attrs.autoClose ? 'auto-close="' + attrs.autoClose + '" ' : '') + (attrs.template ? 'template="' + attrs.template + '" ' : '') + (attrs.minView ? 'min-view="' + attrs.minView + '" ' : '') + (attrs.partial ? 'partial="' + attrs.partial + '" ' : '') + From 5ce3531faf4562e2784d70eabc75dd15e59e53fb Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Mon, 23 Mar 2015 16:56:53 +0000 Subject: [PATCH 57/60] Buil PR #87 --- dist/index.js | 1 + dist/index.min.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dist/index.js b/dist/index.js index d938d9a..10ced48 100644 --- a/dist/index.js +++ b/dist/index.js @@ -393,6 +393,7 @@ Module.constant('dateTimeConfig', { 'date-picker="' + attrs.ngModel + '" ' + (attrs.view ? 'view="' + attrs.view + '" ' : '') + (attrs.maxView ? 'max-view="' + attrs.maxView + '" ' : '') + + (attrs.autoClose ? 'auto-close="' + attrs.autoClose + '" ' : '') + (attrs.template ? 'template="' + attrs.template + '" ' : '') + (attrs.minView ? 'min-view="' + attrs.minView + '" ' : '') + (attrs.partial ? 'partial="' + attrs.partial + '" ' : '') + diff --git a/dist/index.min.js b/dist/index.min.js index 224e8a1..c6b9664 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var g=k?"minutes":c.view;switch(g){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b),b||"true"!==e.autoClose||d.addClass("hidden")}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var g=k?"minutes":c.view;switch(g){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b),b||"true"!==e.autoClose||d.addClass("hidden")}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file From f8504b6e40cfecf0c17017fd4fe2d4ae9d2a750a Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Wed, 1 Apr 2015 08:34:44 +0100 Subject: [PATCH 58/60] Fixing issue #91 --- app/scripts/datePicker.js | 2 +- dist/index.js | 2 +- dist/index.min.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/scripts/datePicker.js b/app/scripts/datePicker.js index 8607d51..5529084 100644 --- a/app/scripts/datePicker.js +++ b/app/scripts/datePicker.js @@ -144,7 +144,7 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function if (scope.view !== 'date') { return scope.view; } - return scope.model ? scope.model.getMonth() : null; + return scope.date ? scope.date.getMonth() : null; } diff --git a/dist/index.js b/dist/index.js index 10ced48..16542c9 100644 --- a/dist/index.js +++ b/dist/index.js @@ -146,7 +146,7 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function if (scope.view !== 'date') { return scope.view; } - return scope.model ? scope.model.getMonth() : null; + return scope.date ? scope.date.getMonth() : null; } diff --git a/dist/index.min.js b/dist/index.min.js index c6b9664..027e642 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.model?c.model.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var g=k?"minutes":c.view;switch(g){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b),b||"true"!==e.autoClose||d.addClass("hidden")}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.date?c.date.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var g=k?"minutes":c.view;switch(g){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b),b||"true"!==e.autoClose||d.addClass("hidden")}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file From 76a076055374b6c7a9771602a812faa10fc3c276 Mon Sep 17 00:00:00 2001 From: Emanuel Ralha Date: Thu, 2 Apr 2015 15:12:56 +0100 Subject: [PATCH 59/60] Fixing issue #91 --- app/scripts/datePickerUtils.js | 7 +++++++ dist/index.js | 7 +++++++ dist/index.min.js | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/scripts/datePickerUtils.js b/app/scripts/datePickerUtils.js index 04e5a7e..12e7c38 100644 --- a/app/scripts/datePickerUtils.js +++ b/app/scripts/datePickerUtils.js @@ -88,30 +88,37 @@ angular.module('datePicker').factory('datePickerUtils', function(){ }, isAfter : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return model && model.getTime() <= date.getTime(); }, isBefore : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return model.getTime() >= date.getTime(); }, isSameYear : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return model && model.getFullYear() === date.getFullYear(); }, isSameMonth : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return this.isSameYear(model, date) && model.getMonth() === date.getMonth(); }, isSameDay : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return this.isSameMonth(model, date) && model.getDate() === date.getDate(); }, isSameHour : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return this.isSameDay(model, date) && model.getHours() === date.getHours(); }, isSameMinutes : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return this.isSameHour(model, date) && model.getMinutes() === date.getMinutes(); } }; diff --git a/dist/index.js b/dist/index.js index 16542c9..331f150 100644 --- a/dist/index.js +++ b/dist/index.js @@ -322,30 +322,37 @@ angular.module('datePicker').factory('datePickerUtils', function(){ }, isAfter : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return model && model.getTime() <= date.getTime(); }, isBefore : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return model.getTime() >= date.getTime(); }, isSameYear : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return model && model.getFullYear() === date.getFullYear(); }, isSameMonth : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return this.isSameYear(model, date) && model.getMonth() === date.getMonth(); }, isSameDay : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return this.isSameMonth(model, date) && model.getDate() === date.getDate(); }, isSameHour : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return this.isSameDay(model, date) && model.getHours() === date.getHours(); }, isSameMinutes : function(model, date) { model = (model !== undefined) ? new Date(model) : model; + date = new Date(date); return this.isSameHour(model, date) && model.getMinutes() === date.getMinutes(); } }; diff --git a/dist/index.min.js b/dist/index.min.js index 027e642..4f94799 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.date?c.date.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var g=k?"minutes":c.view;switch(g){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b),b||"true"!==e.autoClose||d.addClass("hidden")}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file +"use strict";!function(a){var b=a.module("datePicker",[]);b.constant("datePickerConfig",{template:"templates/datepicker.html",view:"month",views:["year","month","date","hours","minutes"],step:5}),b.filter("time",function(){function a(a){return("0"+a.getHours()).slice(-2)+":"+("0"+a.getMinutes()).slice(-2)}return function(b){return b instanceof Date||(b=new Date(b),!isNaN(b.getTime()))?a(b):void 0}}),b.directive("datePicker",["datePickerConfig","datePickerUtils",function(a,b){return{require:"?ngModel",template:'
',scope:{model:"=datePicker",after:"=?",before:"=?"},link:function(c,d,e,f){function g(){var a=c.view;c.model&&!i&&(c.date=new Date(c.model),i=!1);var d=c.date;switch(a){case"year":c.years=b.getVisibleYears(d);break;case"month":c.months=b.getVisibleMonths(d);break;case"date":c.weekdays=c.weekdays||b.getDaysOfWeek(),c.weeks=b.getVisibleWeeks(d);break;case"hours":c.hours=b.getVisibleHours(d);break;case"minutes":c.minutes=b.getVisibleMinutes(d,j)}}function h(){return"date"!==c.view?c.view:c.date?c.date.getMonth():null}var i=!1;c.date=new Date(c.model||new Date),c.views=a.views.concat(),c.view=e.view||a.view,c.now=new Date,c.template=e.template||a.template;var j=parseInt(e.step||a.step,10),k=!!e.partial;c.views=c.views.slice(c.views.indexOf(e.maxView||"year"),c.views.indexOf(e.minView||"minutes")+1),(1===c.views.length||-1===c.views.indexOf(c.view))&&(c.view=c.views[0]),c.setView=function(a){-1!==c.views.indexOf(a)&&(c.view=a)},c.setDate=function(a){if(!e.disabled){c.date=a;var b=c.views[c.views.indexOf(c.view)+1];if(!b||k||c.model){c.model=new Date(c.model||a),f&&f.$setViewValue(c.date);var g=k?"minutes":c.view;switch(g){case"minutes":c.model.setMinutes(a.getMinutes());case"hours":c.model.setHours(a.getHours());case"date":c.model.setDate(a.getDate());case"month":c.model.setMonth(a.getMonth());case"year":c.model.setFullYear(a.getFullYear())}c.$emit("setDate",c.model,c.view)}b&&c.setView(b),b||"true"!==e.autoClose||d.addClass("hidden")}},c.$watch(h,g),c.next=function(a){var b=c.date;switch(a=a||1,c.view){case"year":case"month":b.setFullYear(b.getFullYear()+a);break;case"date":b.setMonth(b.getMonth()+a);break;case"hours":case"minutes":b.setHours(b.getHours()+a)}i=!0,g()},c.prev=function(a){return c.next(-a||-1)},c.isAfter=function(a){return c.after&&b.isAfter(a,c.after)},c.isBefore=function(a){return c.before&&b.isBefore(a,c.before)},c.isSameMonth=function(a){return b.isSameMonth(c.model,a)},c.isSameYear=function(a){return b.isSameYear(c.model,a)},c.isSameDay=function(a){return b.isSameDay(c.model,a)},c.isSameHour=function(a){return b.isSameHour(c.model,a)},c.isSameMinutes=function(a){return b.isSameMinutes(c.model,a)},c.isNow=function(a){var b=!0,d=c.now;switch(c.view){case"minutes":b&=~~(a.getMinutes()/j)===~~(d.getMinutes()/j);case"hours":b&=a.getHours()===d.getHours();case"date":b&=a.getDate()===d.getDate();case"month":b&=a.getMonth()===d.getMonth();case"year":b&=a.getFullYear()===d.getFullYear()}return b}}}}]),a.module("datePicker").factory("datePickerUtils",function(){return{getVisibleMinutes:function(a,b){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours());for(var c=[],d=a.getTime()+36e5;a.getTime()b);){for(var e=[],f=0;7>f;f++)e.push(new Date(a)),a.setDate(a.getDate()+1);d.push(e)}return d},getVisibleYears:function(a){var b=[];a=new Date(a||new Date),a.setFullYear(a.getFullYear()-a.getFullYear()%10);for(var c=0;12>c;c++)b.push(new Date(a.getFullYear()+(c-1),0,1));return b},getDaysOfWeek:function(a){a=new Date(a||new Date),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a.setDate(a.getDate()-(a.getDay()-1));for(var b=[],c=0;7>c;c++)b.push(new Date(a)),a.setDate(a.getDate()+1);return b},getVisibleMonths:function(a){a=new Date(a||new Date);for(var b=a.getFullYear(),c=[],d=0;12>d;d++)c.push(new Date(b,d,1));return c},getVisibleHours:function(a){a=new Date(a||new Date),a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0);for(var b=[],c=0;24>c;c++)b.push(a),a=new Date(a.getTime()+36e5);return b},isAfter:function(a,b){return a=void 0!==a?new Date(a):a,b=new Date(b),a&&a.getTime()<=b.getTime()},isBefore:function(a,b){return a=void 0!==a?new Date(a):a,b=new Date(b),a.getTime()>=b.getTime()},isSameYear:function(a,b){return a=void 0!==a?new Date(a):a,b=new Date(b),a&&a.getFullYear()===b.getFullYear()},isSameMonth:function(a,b){return a=void 0!==a?new Date(a):a,b=new Date(b),this.isSameYear(a,b)&&a.getMonth()===b.getMonth()},isSameDay:function(a,b){return a=void 0!==a?new Date(a):a,b=new Date(b),this.isSameMonth(a,b)&&a.getDate()===b.getDate()},isSameHour:function(a,b){return a=void 0!==a?new Date(a):a,b=new Date(b),this.isSameDay(a,b)&&a.getHours()===b.getHours()},isSameMinutes:function(a,b){return a=void 0!==a?new Date(a):a,b=new Date(b),this.isSameHour(a,b)&&a.getMinutes()===b.getMinutes()}}});var b=a.module("datePicker");b.directive("dateRange",function(){return{templateUrl:"templates/daterange.html",scope:{start:"=",end:"="},link:function(a,b,c){c.$observe("disabled",function(b){a.disableDatePickers=!!b}),a.$watch("start.getTime()",function(b){b&&a.end&&b>a.end.getTime()&&(a.end=new Date(b))}),a.$watch("end.getTime()",function(b){b&&a.start&&b'},format:"yyyy-MM-dd HH:mm",views:["date","year","month","hours","minutes"],dismiss:!1,position:"relative"}),b.directive("dateTimeAppend",function(){return{link:function(a,b){b.bind("click",function(){b.find("input")[0].focus()})}}}),b.directive("dateTime",["$compile","$document","$filter","dateTimeConfig","$parse",function(b,e,f,g,h){var i=e.find("body"),j=f("date");return{require:"ngModel",scope:!0,link:function(e,f,k,l){function m(a){return j(a,r)}function n(){return l.$modelValue}function o(a){a.stopPropagation(),l.$pristine&&(l.$dirty=!0,l.$pristine=!1,f.removeClass(c).addClass(d),s&&s.$setDirty(),l.$render())}function p(){x&&(x.remove(),x=null),z&&(z.remove(),z=null)}function q(){if(!x){if(x=b(A)(e),e.$digest(),e.$on("setDate",function(a,b,c){o(a),w&&t[t.length-1]===c&&p()}),e.$on("$destroy",p),"absolute"===y){var c=a.extend(f.offset(),{height:f[0].offsetHeight});x.css({top:c.top+c.height,left:c.left,display:"block",position:y}),i.append(x)}else z=a.element("
"),f[0].parentElement.insertBefore(z[0],f[0]),z.append(x),x.css({top:f[0].offsetHeight+"px",display:"block"});x.bind("mousedown",function(a){a.preventDefault()})}}var r=k.format||g.format,s=f.inheritedData("$formController"),t=h(k.views)(e)||g.views.concat(),u=k.view||t[0],v=t.indexOf(u),w=k.dismiss?h(k.dismiss)(e):g.dismiss,x=null,y=k.position||g.position,z=null;-1===v&&t.splice(v,1),t.unshift(u),l.$formatters.push(m),l.$parsers.unshift(n);var A=g.template(k);f.bind("focus",q),f.bind("blur",p)}}}]),a.module("datePicker").run(["$templateCache",function(a){a.put("templates/datepicker.html",'
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{date|date:"yyyy MMMM"}}
{{ day|date:"EEE" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{years[0].getFullYear()}}-{{years[years.length-1].getFullYear()}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ date|date:"dd MMMM yyyy" }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n'),a.put("templates/daterange.html",'
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n')}])}(angular); \ No newline at end of file From 4ac7695c8a841ce98f8726d2a3860e302c53d7d2 Mon Sep 17 00:00:00 2001 From: cbw_jmccormick Date: Fri, 3 Apr 2015 10:51:40 -0600 Subject: [PATCH 60/60] Add: Disable date selection before today --- dist/index.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/dist/index.js b/dist/index.js index 331f150..791f17f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -37,7 +37,8 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function scope: { model: '=datePicker', after: '=?', - before: '=?' + before: '=?', + disableBeforeNow: '@?' }, link: function (scope, element, attrs, ngModel) { @@ -72,6 +73,9 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function if(attrs.disabled) { return; } + if(scope.isPreviousDate(date) && scope.disableBeforeNow){ + return; + } scope.date = date; // change next view var nextView = scope.views[scope.views.indexOf(scope.view) + 1]; @@ -206,6 +210,10 @@ Module.directive('datePicker', ['datePickerConfig', 'datePickerUtils', function return datePickerUtils.isSameMinutes(scope.model, date); }; + scope.isPreviousDate = function (date){ + return scope.now >= date ? true : false; + }; + scope.isNow = function (date) { var is = true; var now = scope.now; @@ -366,7 +374,8 @@ Module.directive('dateRange', function () { templateUrl: 'templates/daterange.html', scope: { start: '=', - end: '=' + end: '=', + disableBeforeNow: '@?' }, link: function (scope, element, attrs) { attrs.$observe('disabled', function(isDisabled){ @@ -567,7 +576,7 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { "\n" + " \r" + "\n" + @@ -760,13 +769,13 @@ angular.module("datePicker").run(["$templateCache", function($templateCache) { "\n" + " \r" + "\n" + - "
\r" + + "
\r" + "\n" + " \r" + "\n" + " \r" + "\n" + - "
\r" + + "
\r" + "\n" + " \r" + "\n" +