pickadate-rails 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a4960ce8c268fa246c31d341b14ffd516322b94
|
4
|
+
data.tar.gz: 47857e18fda875db3afbf6b33716b3f844661d53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d648c29457b37d37e9eb17a26a8dac0bef6ead19029eaa3d03732cb9dc3b6b0e53d43d144b11bddc5882b1f030a161884cecf61bd231ccb6c60eb4975c0c77fd
|
7
|
+
data.tar.gz: 9684c1c258d2a42543e682a9a5129ef1f4c4933cd4e1eb326b2bd142995fcb299b536c92b32110d617777189d60f942379806de6070eb8b5ec777e3c50e25eb5
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Pickadate-Rails
|
2
2
|
|
3
|
-
## Pickadate Version: 3.0.
|
3
|
+
## Pickadate Version: 3.0.4
|
4
4
|
|
5
5
|
Easily add [pickadate.js](https://github.com/amsul/pickadate.js) to your Rails 3.1+ application using the asset pipeline.
|
6
6
|
|
@@ -18,13 +18,15 @@ And then execute:
|
|
18
18
|
|
19
19
|
Pickadate has a number of files associated with it. They are documented on the [pickadate repository](https://github.com/amsul/pickadate.js). Files in this gem are namespaced into a `pickadate` folder, and otherwise match the filenames from the pickadate repo.
|
20
20
|
|
21
|
-
### Add the desired files to your javascript/coffeescript
|
21
|
+
### Add the desired files to your javascript/coffeescript
|
22
|
+
Often done in `application.js`:
|
22
23
|
|
23
24
|
//= require pickadate/picker # required
|
24
25
|
//= require pickadate/picker.date # for the date picker
|
25
26
|
//= require pickadate/picker.time # for the time picker
|
26
27
|
|
27
|
-
### Add the stylesheets for the theme you want
|
28
|
+
### Add the stylesheets for the theme you want
|
29
|
+
Often done in `application.css`.
|
28
30
|
|
29
31
|
For the default theme:
|
30
32
|
|
@@ -38,7 +40,7 @@ For the classic theme:
|
|
38
40
|
*= require pickadate/classic.date
|
39
41
|
*= require pickadate/classic.time
|
40
42
|
|
41
|
-
###
|
43
|
+
### Localization
|
42
44
|
|
43
45
|
Translations are available by loading them in your javascript/coffeescript file. For example, in `application.js`
|
44
46
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
/*!
|
3
|
-
* Date picker for pickadate.js v3.0.
|
3
|
+
* Date picker for pickadate.js v3.0.4
|
4
4
|
* http://amsul.github.io/pickadate.js/date.htm
|
5
5
|
*/
|
6
6
|
|
@@ -156,31 +156,31 @@ DatePicker.prototype.create = function( type, value, options ) {
|
|
156
156
|
var isInfiniteValue,
|
157
157
|
calendar = this
|
158
158
|
|
159
|
-
// If there
|
159
|
+
// If there’s no value, use the type as the value.
|
160
160
|
value = value === undefined ? type : value
|
161
161
|
|
162
162
|
|
163
|
-
// If it
|
163
|
+
// If it’s infinity, update the value.
|
164
164
|
if ( value == -Infinity || value == Infinity ) {
|
165
165
|
isInfiniteValue = value
|
166
166
|
}
|
167
167
|
|
168
|
-
// If it
|
168
|
+
// If it’s an object, use the native date object.
|
169
169
|
else if ( Picker._.isObject( value ) && Picker._.isInteger( value.pick ) ) {
|
170
170
|
value = value.obj
|
171
171
|
}
|
172
172
|
|
173
|
-
// If it
|
173
|
+
// If it’s an array, convert it into a date.
|
174
174
|
else if ( Array.isArray( value ) ) {
|
175
175
|
value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] )
|
176
176
|
}
|
177
177
|
|
178
|
-
// If it
|
178
|
+
// If it’s a number or date object, make a normalized date.
|
179
179
|
else if ( Picker._.isInteger( value ) || Picker._.isDate( value ) ) {
|
180
180
|
value = calendar.normalize( new Date( value ), options )
|
181
181
|
}
|
182
182
|
|
183
|
-
// If it
|
183
|
+
// If it’s a literal true or any other case, set it to now.
|
184
184
|
else /*if ( value === true )*/ {
|
185
185
|
value = calendar.now( type, value, options )
|
186
186
|
}
|
@@ -285,6 +285,9 @@ DatePicker.prototype.validate = function( type, dateObject, options ) {
|
|
285
285
|
// Make sure we have an interval.
|
286
286
|
interval = options && options.interval ? options.interval : 1,
|
287
287
|
|
288
|
+
// Check if the calendar enabled dates are inverted.
|
289
|
+
isInverted = calendar.item.enable === -1,
|
290
|
+
|
288
291
|
// Check if we have any enabled dates after/before now.
|
289
292
|
hasEnabledBeforeTarget, hasEnabledAfterTarget,
|
290
293
|
|
@@ -295,8 +298,8 @@ DatePicker.prototype.validate = function( type, dateObject, options ) {
|
|
295
298
|
// Check if we’ve reached the limit during shifting.
|
296
299
|
reachedMin, reachedMax,
|
297
300
|
|
298
|
-
// Check if the calendar is
|
299
|
-
hasEnabledWeekdays =
|
301
|
+
// Check if the calendar is inverted and at least one weekday is enabled.
|
302
|
+
hasEnabledWeekdays = isInverted && calendar.item.disable.filter( function( value ) {
|
300
303
|
|
301
304
|
// If there’s a date, check where it is relative to the target.
|
302
305
|
if ( Array.isArray( value ) ) {
|
@@ -311,16 +314,26 @@ DatePicker.prototype.validate = function( type, dateObject, options ) {
|
|
311
314
|
|
312
315
|
|
313
316
|
|
314
|
-
//
|
317
|
+
// Cases to validate for:
|
318
|
+
// [1] Not inverted and date disabled.
|
319
|
+
// [2] Inverted and some dates enabled.
|
320
|
+
// [3] Out of range.
|
321
|
+
//
|
322
|
+
// Cases to **not** validate for:
|
323
|
+
// • Not inverted and date enabled.
|
324
|
+
// • Inverted and all dates disabled.
|
325
|
+
// • Navigating months.
|
326
|
+
// • ..and anything else.
|
315
327
|
if (
|
316
|
-
|
317
|
-
(
|
328
|
+
/* 1 */ ( !isInverted && calendar.disabled( dateObject ) ) ||
|
329
|
+
/* 2 */ ( isInverted && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) ||
|
330
|
+
/* 3 */ ( dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick )
|
318
331
|
) {
|
319
332
|
|
320
333
|
|
321
|
-
//
|
334
|
+
// When inverted, flip the direction if there aren’t any enabled weekdays
|
322
335
|
// and there are no enabled dates in the direction of the interval.
|
323
|
-
if ( !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) {
|
336
|
+
if ( isInverted && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) {
|
324
337
|
interval *= -1
|
325
338
|
}
|
326
339
|
|
@@ -547,18 +560,18 @@ DatePicker.prototype.flipItem = function( type, value/*, options*/ ) {
|
|
547
560
|
|
548
561
|
var calendar = this,
|
549
562
|
collection = calendar.item.disable,
|
550
|
-
|
563
|
+
isInverted = calendar.item.enable === -1
|
551
564
|
|
552
565
|
// Flip the enabled and disabled dates.
|
553
566
|
if ( value == 'flip' ) {
|
554
|
-
calendar.item.enable =
|
567
|
+
calendar.item.enable = isInverted ? 1 : -1
|
555
568
|
}
|
556
569
|
|
557
570
|
// Check if we have to add/remove from collection.
|
558
|
-
else if ( !
|
571
|
+
else if ( !isInverted && type == 'enable' || isInverted && type == 'disable' ) {
|
559
572
|
collection = calendar.removeDisabled( collection, value )
|
560
573
|
}
|
561
|
-
else if ( !
|
574
|
+
else if ( !isInverted && type == 'disable' || isInverted && type == 'enable' ) {
|
562
575
|
collection = calendar.addDisabled( collection, value )
|
563
576
|
}
|
564
577
|
|
@@ -669,7 +682,7 @@ DatePicker.prototype.nodes = function( isOpen ) {
|
|
669
682
|
}, //createMonthNav
|
670
683
|
|
671
684
|
|
672
|
-
// Create the month label
|
685
|
+
// Create the month label.
|
673
686
|
createMonthLabel = function( monthsCollection ) {
|
674
687
|
|
675
688
|
// If there are months to select, add a dropdown menu.
|
@@ -707,7 +720,7 @@ DatePicker.prototype.nodes = function( isOpen ) {
|
|
707
720
|
}, //createMonthLabel
|
708
721
|
|
709
722
|
|
710
|
-
// Create the year label
|
723
|
+
// Create the year label.
|
711
724
|
createYearLabel = function() {
|
712
725
|
|
713
726
|
var focusedYear = viewsetObject.year,
|
@@ -786,51 +799,54 @@ DatePicker.prototype.nodes = function( isOpen ) {
|
|
786
799
|
node: 'tr',
|
787
800
|
item: function( rowCounter ) {
|
788
801
|
|
802
|
+
// If Monday is the first day and the month starts on Sunday, shift the date back a week.
|
803
|
+
var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0
|
804
|
+
|
789
805
|
return [
|
790
806
|
Picker._.group({
|
791
|
-
min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + 1, // Add 1 for weekday 0index
|
807
|
+
min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index
|
792
808
|
max: function() {
|
793
809
|
return this.min + DAYS_IN_WEEK - 1
|
794
810
|
},
|
795
811
|
i: 1,
|
796
812
|
node: 'td',
|
797
|
-
item: function(
|
813
|
+
item: function( targetDate ) {
|
798
814
|
|
799
|
-
// Convert the time date from a relative date to a date
|
800
|
-
|
815
|
+
// Convert the time date from a relative date to a target date.
|
816
|
+
targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ])
|
801
817
|
|
802
818
|
return [
|
803
819
|
Picker._.node(
|
804
820
|
'div',
|
805
|
-
|
821
|
+
targetDate.date,
|
806
822
|
(function( klasses ) {
|
807
823
|
|
808
824
|
// Add the `infocus` or `outfocus` classes based on month in view.
|
809
|
-
klasses.push( viewsetObject.month ==
|
825
|
+
klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus )
|
810
826
|
|
811
827
|
// Add the `today` class if needed.
|
812
|
-
if ( nowObject.pick ==
|
828
|
+
if ( nowObject.pick == targetDate.pick ) {
|
813
829
|
klasses.push( settings.klass.now )
|
814
830
|
}
|
815
831
|
|
816
832
|
// Add the `selected` class if something's selected and the time matches.
|
817
|
-
if ( selectedObject && selectedObject.pick ==
|
833
|
+
if ( selectedObject && selectedObject.pick == targetDate.pick ) {
|
818
834
|
klasses.push( settings.klass.selected )
|
819
835
|
}
|
820
836
|
|
821
837
|
// Add the `highlighted` class if something's highlighted and the time matches.
|
822
|
-
if ( highlightedObject && highlightedObject.pick ==
|
838
|
+
if ( highlightedObject && highlightedObject.pick == targetDate.pick ) {
|
823
839
|
klasses.push( settings.klass.highlighted )
|
824
840
|
}
|
825
841
|
|
826
842
|
// Add the `disabled` class if something's disabled and the object matches.
|
827
|
-
if ( disabledCollection && calendar.disabled(
|
843
|
+
if ( disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick ) {
|
828
844
|
klasses.push( settings.klass.disabled )
|
829
845
|
}
|
830
846
|
|
831
847
|
return klasses.join( ' ' )
|
832
848
|
})([ settings.klass.day ]),
|
833
|
-
'data-pick=' +
|
849
|
+
'data-pick=' + targetDate.pick
|
834
850
|
)
|
835
851
|
] //endreturn
|
836
852
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pickadate-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Fraser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|