pickadate-rails 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/pickadate-rails/version.rb +1 -1
- data/vendor/assets/javascripts/pickadate/picker.date.js +80 -18
- data/vendor/assets/javascripts/pickadate/picker.js +58 -32
- data/vendor/assets/javascripts/pickadate/picker.time.js +109 -31
- data/vendor/assets/javascripts/pickadate/translations/fr_FR.js +7 -7
- data/vendor/assets/javascripts/pickadate/translations/zh_TW.js +13 -0
- data/vendor/assets/stylesheets/pickadate/classic.css +29 -13
- data/vendor/assets/stylesheets/pickadate/classic.time.css +1 -0
- data/vendor/assets/stylesheets/pickadate/default.css +8 -2
- data/vendor/assets/stylesheets/pickadate/rtl.css +29 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee040041eef6c517e68b6879b8a780c6bdedd8ac
|
4
|
+
data.tar.gz: fbc696df4935a0b63e33134e53735b186a9ff8f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83d3eee2474fdb0ec31f6c9f9b14b41d258dcd00235131c5569b26a1b2a6ba4dd18eaed2c7a9ee6a1f12308958e55d02e522f2b6bd75accedda2cd98e4cad9ee
|
7
|
+
data.tar.gz: 1666b78ee8359dcf46538f6ef0a475436dc62b166469157a8ecbd5125cd6e853b35845f2d449495c4ee671145a5fb7db48f597a07c634cb7494f7ad04acd888d
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Pickadate-Rails [![Gem Version](https://badge.fury.io/rb/pickadate-rails.png)](http://badge.fury.io/rb/pickadate-rails)
|
2
2
|
|
3
|
-
## Pickadate Version: 3.3.
|
3
|
+
## Pickadate Version: 3.3.1
|
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
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
/*!
|
3
|
-
* Date picker for pickadate.js v3.3.
|
3
|
+
* Date picker for pickadate.js v3.3.1
|
4
4
|
* http://amsul.github.io/pickadate.js/date.htm
|
5
5
|
*/
|
6
6
|
|
@@ -185,7 +185,7 @@ DatePicker.prototype.create = function( type, value, options ) {
|
|
185
185
|
}
|
186
186
|
|
187
187
|
// If it’s an object, use the native date object.
|
188
|
-
else if (
|
188
|
+
else if ( $.isPlainObject( value ) && Picker._.isInteger( value.pick ) ) {
|
189
189
|
value = value.obj
|
190
190
|
}
|
191
191
|
|
@@ -235,7 +235,7 @@ DatePicker.prototype.now = function( type, value, options ) {
|
|
235
235
|
*/
|
236
236
|
DatePicker.prototype.navigate = function( type, value, options ) {
|
237
237
|
|
238
|
-
if (
|
238
|
+
if ( $.isPlainObject( value ) ) {
|
239
239
|
|
240
240
|
var targetDateObject = new Date( value.year, value.month + ( options && options.nav ? options.nav : 0 ), 1 ),
|
241
241
|
year = targetDateObject.getFullYear(),
|
@@ -307,7 +307,7 @@ DatePicker.prototype.validate = function( type, dateObject, options ) {
|
|
307
307
|
interval = options && options.interval ? options.interval : 1,
|
308
308
|
|
309
309
|
// Check if the calendar enabled dates are inverted.
|
310
|
-
|
310
|
+
isFlippedBase = calendar.item.enable === -1,
|
311
311
|
|
312
312
|
// Check if we have any enabled dates after/before now.
|
313
313
|
hasEnabledBeforeTarget, hasEnabledAfterTarget,
|
@@ -320,7 +320,7 @@ DatePicker.prototype.validate = function( type, dateObject, options ) {
|
|
320
320
|
reachedMin, reachedMax,
|
321
321
|
|
322
322
|
// Check if the calendar is inverted and at least one weekday is enabled.
|
323
|
-
hasEnabledWeekdays =
|
323
|
+
hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) {
|
324
324
|
|
325
325
|
// If there’s a date, check where it is relative to the target.
|
326
326
|
if ( $.isArray( value ) ) {
|
@@ -346,15 +346,15 @@ DatePicker.prototype.validate = function( type, dateObject, options ) {
|
|
346
346
|
// • Inverted and all dates disabled.
|
347
347
|
// • ..and anything else.
|
348
348
|
if ( !options.nav ) if (
|
349
|
-
/* 1 */ ( !
|
350
|
-
/* 2 */ (
|
349
|
+
/* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) ||
|
350
|
+
/* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) ||
|
351
351
|
/* 3 */ ( dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick )
|
352
352
|
) {
|
353
353
|
|
354
354
|
|
355
355
|
// When inverted, flip the direction if there aren’t any enabled weekdays
|
356
356
|
// and there are no enabled dates in the direction of the interval.
|
357
|
-
if (
|
357
|
+
if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) {
|
358
358
|
interval *= -1
|
359
359
|
}
|
360
360
|
|
@@ -407,7 +407,7 @@ DatePicker.prototype.disabled = function( dateObject ) {
|
|
407
407
|
var calendar = this,
|
408
408
|
|
409
409
|
// Filter through the disabled dates to check if this is one.
|
410
|
-
|
410
|
+
isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) {
|
411
411
|
|
412
412
|
// If the date is a number, match the weekday with 0index and `firstDay` check.
|
413
413
|
if ( Picker._.isInteger( dateToDisable ) ) {
|
@@ -418,12 +418,16 @@ DatePicker.prototype.disabled = function( dateObject ) {
|
|
418
418
|
if ( $.isArray( dateToDisable ) || Picker._.isDate( dateToDisable ) ) {
|
419
419
|
return dateObject.pick === calendar.create( dateToDisable ).pick
|
420
420
|
}
|
421
|
-
})
|
421
|
+
})
|
422
422
|
|
423
|
+
// If this date matches a disabled date, confirm it’s not inverted.
|
424
|
+
isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) {
|
425
|
+
return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted'
|
426
|
+
}).length
|
423
427
|
|
424
428
|
// Check the calendar “enabled” flag and respectively flip the
|
425
429
|
// disabled state. Then also check if it’s beyond the min/max limits.
|
426
|
-
return calendar.item.enable === -1 ? !
|
430
|
+
return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||
|
427
431
|
dateObject.pick < calendar.item.min.pick ||
|
428
432
|
dateObject.pick > calendar.item.max.pick
|
429
433
|
|
@@ -438,7 +442,7 @@ DatePicker.prototype.parse = function( type, value, options ) {
|
|
438
442
|
var calendar = this,
|
439
443
|
parsingObject = {}
|
440
444
|
|
441
|
-
if ( !value || Picker._.isInteger( value ) || $.isArray( value ) || Picker._.isDate( value ) ||
|
445
|
+
if ( !value || Picker._.isInteger( value ) || $.isArray( value ) || Picker._.isDate( value ) || $.isPlainObject( value ) && Picker._.isInteger( value.pick ) ) {
|
442
446
|
return value
|
443
447
|
}
|
444
448
|
|
@@ -587,11 +591,11 @@ DatePicker.prototype.flipItem = function( type, value/*, options*/ ) {
|
|
587
591
|
|
588
592
|
var calendar = this,
|
589
593
|
collection = calendar.item.disable,
|
590
|
-
|
594
|
+
isFlippedBase = calendar.item.enable === -1
|
591
595
|
|
592
596
|
// Flip the enabled and disabled dates.
|
593
597
|
if ( value == 'flip' ) {
|
594
|
-
calendar.item.enable =
|
598
|
+
calendar.item.enable = isFlippedBase ? 1 : -1
|
595
599
|
}
|
596
600
|
|
597
601
|
// Reset the collection and enable the base state.
|
@@ -610,28 +614,79 @@ DatePicker.prototype.flipItem = function( type, value/*, options*/ ) {
|
|
610
614
|
else if ( $.isArray( value ) ) {
|
611
615
|
|
612
616
|
// Check if we have to add/remove from collection.
|
613
|
-
if (
|
614
|
-
collection = calendar.removeDisabled( collection, value )
|
615
|
-
}
|
616
|
-
else if ( !isInverted && type == 'disable' || isInverted && type == 'enable' ) {
|
617
|
+
if ( isFlippedBase && type == 'enable' || !isFlippedBase && type == 'disable' ) {
|
617
618
|
collection = calendar.addDisabled( collection, value )
|
618
619
|
}
|
620
|
+
else if ( !isFlippedBase && type == 'enable' ) {
|
621
|
+
collection = calendar.addEnabled( collection, value )
|
622
|
+
}
|
623
|
+
else if ( isFlippedBase && type == 'disable' ) {
|
624
|
+
collection = calendar.removeDisabled( collection, value )
|
625
|
+
}
|
619
626
|
}
|
620
627
|
|
621
628
|
return collection
|
622
629
|
} //DatePicker.prototype.flipItem
|
623
630
|
|
624
631
|
|
632
|
+
/**
|
633
|
+
* Add an enabled (inverted) item to the disabled collection.
|
634
|
+
*/
|
635
|
+
DatePicker.prototype.addEnabled = function( collection, item ) {
|
636
|
+
|
637
|
+
var calendar = this
|
638
|
+
|
639
|
+
// Go through each item to enable.
|
640
|
+
item.map( function( timeUnit ) {
|
641
|
+
|
642
|
+
// Check if the time unit is already within the collection.
|
643
|
+
if ( calendar.filterDisabled( collection, timeUnit, 1 ).length ) {
|
644
|
+
|
645
|
+
// Remove the unit directly from the collection.
|
646
|
+
collection = calendar.removeDisabled( collection, [timeUnit] )
|
647
|
+
|
648
|
+
// If the unit is an array and it falls within a
|
649
|
+
// disabled weekday, invert it and then insert it.
|
650
|
+
if (
|
651
|
+
$.isArray( timeUnit ) &&
|
652
|
+
collection.filter( function( disabledDate ) {
|
653
|
+
return Picker._.isInteger( disabledDate ) && calendar.create( timeUnit ).day === disabledDate - 1
|
654
|
+
}).length
|
655
|
+
) {
|
656
|
+
timeUnit = timeUnit.slice(0)
|
657
|
+
timeUnit.push( 'inverted' )
|
658
|
+
collection.push( timeUnit )
|
659
|
+
}
|
660
|
+
}
|
661
|
+
})
|
662
|
+
|
663
|
+
// Return the final collection.
|
664
|
+
return collection
|
665
|
+
} //DatePicker.prototype.addEnabled
|
666
|
+
|
667
|
+
|
625
668
|
/**
|
626
669
|
* Add an item to the disabled collection.
|
627
670
|
*/
|
628
671
|
DatePicker.prototype.addDisabled = function( collection, item ) {
|
672
|
+
|
629
673
|
var calendar = this
|
674
|
+
|
675
|
+
// Go through each item to disable.
|
630
676
|
item.map( function( timeUnit ) {
|
677
|
+
|
678
|
+
// Add the time unit if it isn’t already within the collection.
|
631
679
|
if ( !calendar.filterDisabled( collection, timeUnit ).length ) {
|
632
680
|
collection.push( timeUnit )
|
633
681
|
}
|
682
|
+
|
683
|
+
// If the time unit is an array and falls within the range, just remove it.
|
684
|
+
else if ( $.isArray( timeUnit ) && calendar.filterDisabled( collection, timeUnit, 1 ).length ) {
|
685
|
+
collection = calendar.removeDisabled( collection, [timeUnit] )
|
686
|
+
}
|
634
687
|
})
|
688
|
+
|
689
|
+
// Return the final collection.
|
635
690
|
return collection
|
636
691
|
} //DatePicker.prototype.addDisabled
|
637
692
|
|
@@ -640,10 +695,17 @@ DatePicker.prototype.addDisabled = function( collection, item ) {
|
|
640
695
|
* Remove an item from the disabled collection.
|
641
696
|
*/
|
642
697
|
DatePicker.prototype.removeDisabled = function( collection, item ) {
|
698
|
+
|
643
699
|
var calendar = this
|
700
|
+
|
701
|
+
// Go through each item to enable.
|
644
702
|
item.map( function( timeUnit ) {
|
703
|
+
|
704
|
+
// Filter each item out of the collection.
|
645
705
|
collection = calendar.filterDisabled( collection, timeUnit, 1 )
|
646
706
|
})
|
707
|
+
|
708
|
+
// Return the final colleciton.
|
647
709
|
return collection
|
648
710
|
} //DatePicker.prototype.removeDisabled
|
649
711
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
/*!
|
3
|
-
* pickadate.js v3.3.
|
3
|
+
* pickadate.js v3.3.1, 2013/12/04
|
4
4
|
* By Amsul, http://amsul.ca
|
5
5
|
* Hosted on http://amsul.github.io/pickadate.js
|
6
6
|
* Licensed under MIT
|
@@ -92,7 +92,7 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
92
92
|
// and set as readonly to prevent keyboard popup.
|
93
93
|
ELEMENT.autofocus = ELEMENT == document.activeElement
|
94
94
|
ELEMENT.type = 'text'
|
95
|
-
ELEMENT.readOnly =
|
95
|
+
ELEMENT.readOnly = !SETTINGS.editable
|
96
96
|
|
97
97
|
|
98
98
|
// Create a new picker component with the settings.
|
@@ -110,10 +110,28 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
110
110
|
event.stopPropagation()
|
111
111
|
},
|
112
112
|
|
113
|
-
//
|
113
|
+
// When something within the root holder is clicked, stop it
|
114
|
+
// from bubbling to the doc.
|
114
115
|
'mousedown click': function( event ) {
|
115
|
-
|
116
|
+
|
117
|
+
var target = event.target
|
118
|
+
|
119
|
+
// Make sure the target isn’t the root holder so it can bubble up.
|
120
|
+
if ( target != P.$root.children()[ 0 ] ) {
|
121
|
+
|
116
122
|
event.stopPropagation()
|
123
|
+
|
124
|
+
// * For mousedown events, cancel the default action in order to
|
125
|
+
// prevent cases where focus is shifted onto external elements
|
126
|
+
// when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).
|
127
|
+
if ( event.type == 'mousedown' && !$( target ).is( ':input' ) ) {
|
128
|
+
|
129
|
+
event.preventDefault()
|
130
|
+
|
131
|
+
// Re-focus onto the element so that users can click away
|
132
|
+
// from elements focused within the picker.
|
133
|
+
ELEMENT.focus()
|
134
|
+
}
|
117
135
|
}
|
118
136
|
}
|
119
137
|
}).
|
@@ -131,7 +149,7 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
131
149
|
activeElement = activeElement && ( activeElement.type || activeElement.href )
|
132
150
|
|
133
151
|
// If it’s disabled or nothing inside is actively focused, re-focus the element.
|
134
|
-
if ( targetDisabled || !$.contains( P.$root[0], activeElement ) ) {
|
152
|
+
if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {
|
135
153
|
ELEMENT.focus()
|
136
154
|
}
|
137
155
|
|
@@ -175,8 +193,20 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
175
193
|
}
|
176
194
|
|
177
195
|
|
178
|
-
//
|
179
|
-
$ELEMENT.
|
196
|
+
// Prepare the input element.
|
197
|
+
$ELEMENT.
|
198
|
+
|
199
|
+
// Store the picker data by component name.
|
200
|
+
data( NAME, P ).
|
201
|
+
|
202
|
+
// Add the “input” class name.
|
203
|
+
addClass( CLASSES.input ).
|
204
|
+
|
205
|
+
// If there’s a `data-value`, update the value of the element.
|
206
|
+
val( $ELEMENT.data( 'value' ) ? PickerConstructor._.trigger( P.component.formats.toString, P.component, [ SETTINGS.format, P.component.item.select ] ) : ELEMENT.value ).
|
207
|
+
|
208
|
+
// Insert the hidden input after the element.
|
209
|
+
after( P._hidden ).
|
180
210
|
|
181
211
|
// On focus/click, open the picker and adjust the root “focused” state.
|
182
212
|
on( 'focus.P' + STATE.id + ' click.P' + STATE.id, focusToOpen ).
|
@@ -186,7 +216,10 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
186
216
|
if ( P._hidden ) {
|
187
217
|
P._hidden.value = ELEMENT.value ? PickerConstructor._.trigger( P.component.formats.toString, P.component, [ SETTINGS.formatSubmit, P.component.item.select ] ) : ''
|
188
218
|
}
|
189
|
-
})
|
219
|
+
})
|
220
|
+
|
221
|
+
// Only bind keydown events if the element isn’t editable.
|
222
|
+
if ( !SETTINGS.editable ) $ELEMENT.
|
190
223
|
|
191
224
|
// Handle keyboard event based on the picker being opened or not.
|
192
225
|
on( 'keydown.P' + STATE.id, function( event ) {
|
@@ -214,16 +247,7 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
214
247
|
if ( isKeycodeDelete ) { P.clear().close() }
|
215
248
|
else { P.open() }
|
216
249
|
}
|
217
|
-
})
|
218
|
-
|
219
|
-
// If there’s a `data-value`, update the value of the element.
|
220
|
-
val( $ELEMENT.data( 'value' ) ? PickerConstructor._.trigger( P.component.formats.toString, P.component, [ SETTINGS.format, P.component.item.select ] ) : ELEMENT.value ).
|
221
|
-
|
222
|
-
// Insert the hidden input after the element.
|
223
|
-
after( P._hidden ).
|
224
|
-
|
225
|
-
// Store the picker data by component name.
|
226
|
-
data( NAME, P )
|
250
|
+
})
|
227
251
|
|
228
252
|
|
229
253
|
// Insert the root as specified in the settings.
|
@@ -337,11 +361,18 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
337
361
|
// Bind the document events.
|
338
362
|
$document.on( 'click.P' + STATE.id + ' focusin.P' + STATE.id, function( event ) {
|
339
363
|
|
364
|
+
var target = event.target
|
365
|
+
|
340
366
|
// If the target of the event is not the element, close the picker picker.
|
341
367
|
// * Don’t worry about clicks or focusins on the root because those don’t bubble up.
|
342
368
|
// Also, for Firefox, a click on an `option` element bubbles up directly
|
343
369
|
// to the doc. So make sure the target wasn't the doc.
|
344
|
-
if (
|
370
|
+
if ( target != ELEMENT && target != document ) {
|
371
|
+
|
372
|
+
// If the target was the holder that covers the screen,
|
373
|
+
// keep the element focused to maintain tabindex.
|
374
|
+
P.close( target === P.$root.children()[0] )
|
375
|
+
}
|
345
376
|
|
346
377
|
}).on( 'keydown.P' + STATE.id, function( event ) {
|
347
378
|
|
@@ -445,9 +476,12 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
445
476
|
set: function( thing, value, options ) {
|
446
477
|
|
447
478
|
var thingItem, thingValue,
|
448
|
-
thingIsObject =
|
479
|
+
thingIsObject = $.isPlainObject( thing ),
|
449
480
|
thingObject = thingIsObject ? thing : {}
|
450
481
|
|
482
|
+
// Make sure we have usable options.
|
483
|
+
options = thingIsObject && $.isPlainObject( value ) ? value : options || {}
|
484
|
+
|
451
485
|
if ( thing ) {
|
452
486
|
|
453
487
|
// If the thing isn’t an object, make it one.
|
@@ -463,7 +497,7 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
463
497
|
|
464
498
|
// First, if the item exists and there’s a value, set it.
|
465
499
|
if ( P.component.item[ thingItem ] ) {
|
466
|
-
P.component.set( thingItem, thingValue, options
|
500
|
+
P.component.set( thingItem, thingValue, options )
|
467
501
|
}
|
468
502
|
|
469
503
|
// Then, check to update the element value and broadcast a change.
|
@@ -478,8 +512,8 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
478
512
|
P.render()
|
479
513
|
}
|
480
514
|
|
481
|
-
//
|
482
|
-
return P.trigger( 'set', thingObject )
|
515
|
+
// When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.
|
516
|
+
return options.muted ? P : P.trigger( 'set', thingObject )
|
483
517
|
}, //set
|
484
518
|
|
485
519
|
|
@@ -518,7 +552,7 @@ function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
|
|
518
552
|
on: function( thing, method ) {
|
519
553
|
|
520
554
|
var thingName, thingMethod,
|
521
|
-
thingIsObject =
|
555
|
+
thingIsObject = $.isPlainObject( thing ),
|
522
556
|
thingObject = thingIsObject ? thing : {}
|
523
557
|
|
524
558
|
if ( thing ) {
|
@@ -740,14 +774,6 @@ PickerConstructor._ = {
|
|
740
774
|
},
|
741
775
|
|
742
776
|
|
743
|
-
/**
|
744
|
-
* Tell if something is an object.
|
745
|
-
*/
|
746
|
-
isObject: function( value ) {
|
747
|
-
return {}.toString.call( value ).indexOf( 'Object' ) > -1
|
748
|
-
},
|
749
|
-
|
750
|
-
|
751
777
|
/**
|
752
778
|
* Tell if something is a date object.
|
753
779
|
*/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
/*!
|
3
|
-
* Time picker for pickadate.js v3.3.
|
3
|
+
* Time picker for pickadate.js v3.3.1
|
4
4
|
* http://amsul.github.io/pickadate.js/time.htm
|
5
5
|
*/
|
6
6
|
|
@@ -102,7 +102,7 @@ function TimePicker( picker, settings ) {
|
|
102
102
|
var $pickerHolder = picker.$root.children(),
|
103
103
|
$viewset = $pickerHolder.find( '.' + settings.klass.viewset )
|
104
104
|
if ( $viewset.length ) {
|
105
|
-
$pickerHolder[ 0 ].scrollTop
|
105
|
+
$pickerHolder[ 0 ].scrollTop = ~~$viewset.position().top - ( $viewset[ 0 ].clientHeight * 2 )
|
106
106
|
}
|
107
107
|
}).
|
108
108
|
on( 'open', function() {
|
@@ -170,30 +170,41 @@ TimePicker.prototype.create = function( type, value, options ) {
|
|
170
170
|
|
171
171
|
var clock = this
|
172
172
|
|
173
|
-
// If there
|
173
|
+
// If there’s no value, use the type as the value.
|
174
174
|
value = value === undefined ? type : value
|
175
175
|
|
176
|
-
// If it
|
177
|
-
if ( Picker._.
|
176
|
+
// If it’s a date object, convert it into an array.
|
177
|
+
if ( Picker._.isDate( value ) ) {
|
178
|
+
value = [ value.getHours(), value.getMinutes() ]
|
179
|
+
}
|
180
|
+
|
181
|
+
// If it’s an object, use the “pick” value.
|
182
|
+
if ( $.isPlainObject( value ) && Picker._.isInteger( value.pick ) ) {
|
178
183
|
value = value.pick
|
179
184
|
}
|
180
185
|
|
181
|
-
// If it
|
186
|
+
// If it’s an array, convert it into minutes.
|
182
187
|
else if ( $.isArray( value ) ) {
|
183
188
|
value = +value[ 0 ] * MINUTES_IN_HOUR + (+value[ 1 ])
|
184
189
|
}
|
185
190
|
|
186
|
-
// If no valid value is passed, set it to
|
191
|
+
// If no valid value is passed, set it to “now”.
|
187
192
|
else if ( !Picker._.isInteger( value ) ) {
|
188
193
|
value = clock.now( type, value, options )
|
189
194
|
}
|
190
195
|
|
191
|
-
// If we
|
196
|
+
// If we’re setting the max, make sure it’s greater than the min.
|
192
197
|
if ( type == 'max' && value < clock.item.min.pick ) {
|
193
198
|
value += MINUTES_IN_DAY
|
194
199
|
}
|
195
200
|
|
196
|
-
//
|
201
|
+
// If the value doesn’t fall directly on the interval,
|
202
|
+
// add one interval to indicate it as “passed”.
|
203
|
+
if ( type != 'min' && type != 'max' && (value - clock.item.min.pick) % clock.item.interval !== 0 ) {
|
204
|
+
value += clock.item.interval
|
205
|
+
}
|
206
|
+
|
207
|
+
// Normalize it into a “reachable” interval.
|
197
208
|
value = clock.normalize( type, value, options )
|
198
209
|
|
199
210
|
// Return the compiled object.
|
@@ -208,7 +219,7 @@ TimePicker.prototype.create = function( type, value, options ) {
|
|
208
219
|
// The time in total minutes.
|
209
220
|
time: ( MINUTES_IN_DAY + value ) % MINUTES_IN_DAY,
|
210
221
|
|
211
|
-
// Reference to the
|
222
|
+
// Reference to the “relative” value to pick.
|
212
223
|
pick: value
|
213
224
|
}
|
214
225
|
} //TimePicker.prototype.create
|
@@ -222,6 +233,9 @@ TimePicker.prototype.now = function( type, value/*, options*/ ) {
|
|
222
233
|
var date = new Date(),
|
223
234
|
dateMinutes = date.getHours() * MINUTES_IN_HOUR + date.getMinutes()
|
224
235
|
|
236
|
+
// Make sure “now” falls within the interval range.
|
237
|
+
dateMinutes -= dateMinutes % this.item.interval
|
238
|
+
|
225
239
|
// If the value is a number, adjust by that many intervals because
|
226
240
|
// the time has passed. In the case of “midnight” and a negative `min`,
|
227
241
|
// increase the value by 2. Otherwise increase it by 1.
|
@@ -244,12 +258,12 @@ TimePicker.prototype.now = function( type, value/*, options*/ ) {
|
|
244
258
|
*/
|
245
259
|
TimePicker.prototype.normalize = function( type, value/*, options*/ ) {
|
246
260
|
|
247
|
-
var
|
261
|
+
var interval = this.item.interval,
|
248
262
|
|
249
|
-
// If setting min
|
263
|
+
// If setting min time, don’t shift anything.
|
250
264
|
// Otherwise get the value and min difference and then
|
251
265
|
// normalize the difference with the interval.
|
252
|
-
difference = type == 'min'
|
266
|
+
difference = type == 'min' ? 0 : ( value - this.item.min.pick ) % interval
|
253
267
|
|
254
268
|
// If it’s a negative value, add one interval to keep it as “passed”.
|
255
269
|
return value - ( difference + ( value < 0 ? interval : 0 ) )
|
@@ -263,18 +277,18 @@ TimePicker.prototype.measure = function( type, value, options ) {
|
|
263
277
|
|
264
278
|
var clock = this
|
265
279
|
|
266
|
-
// If it
|
280
|
+
// If it’s anything false-y, set it to the default.
|
267
281
|
if ( !value ) {
|
268
282
|
value = type == 'min' ? [ 0, 0 ] : [ HOURS_IN_DAY - 1, MINUTES_IN_HOUR - 1 ]
|
269
283
|
}
|
270
284
|
|
271
|
-
// If it
|
285
|
+
// If it’s a literal true, or an integer, make it relative to now.
|
272
286
|
else if ( value === true || Picker._.isInteger( value ) ) {
|
273
287
|
value = clock.now( type, value, options )
|
274
288
|
}
|
275
289
|
|
276
|
-
// If it
|
277
|
-
else if (
|
290
|
+
// If it’s an object already, just normalize it.
|
291
|
+
else if ( $.isPlainObject( value ) && Picker._.isInteger( value.pick ) ) {
|
278
292
|
value = clock.normalize( type, value.pick, options )
|
279
293
|
}
|
280
294
|
|
@@ -320,21 +334,28 @@ TimePicker.prototype.disabled = function( timeObject ) {
|
|
320
334
|
clock = this,
|
321
335
|
|
322
336
|
// Filter through the disabled times to check if this is one.
|
323
|
-
|
337
|
+
isDisabledMatch = clock.item.disable.filter( function( timeToDisable ) {
|
324
338
|
|
325
339
|
// If the time is a number, match the hours.
|
326
340
|
if ( Picker._.isInteger( timeToDisable ) ) {
|
327
341
|
return timeObject.hour == timeToDisable
|
328
342
|
}
|
329
343
|
|
330
|
-
// If it
|
331
|
-
if ( $.isArray( timeToDisable ) ) {
|
344
|
+
// If it’s an array, create the object and match the times.
|
345
|
+
if ( $.isArray( timeToDisable ) || Picker._.isDate( timeToDisable ) ) {
|
332
346
|
return timeObject.pick == clock.create( timeToDisable ).pick
|
333
347
|
}
|
334
|
-
})
|
348
|
+
})
|
349
|
+
|
350
|
+
// If this time matches a disabled time, confirm it’s not inverted.
|
351
|
+
isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( timeToDisable ) {
|
352
|
+
return $.isArray( timeToDisable ) && timeToDisable[2] == 'inverted'
|
353
|
+
}).length
|
335
354
|
|
336
355
|
// If the clock is "enabled" flag is flipped, flip the condition.
|
337
|
-
return clock.item.enable === -1 ? !
|
356
|
+
return clock.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||
|
357
|
+
timeObject.pick < clock.item.min.pick ||
|
358
|
+
timeObject.pick > clock.item.max.pick
|
338
359
|
} //TimePicker.prototype.disabled
|
339
360
|
|
340
361
|
|
@@ -384,7 +405,7 @@ TimePicker.prototype.parse = function( type, value, options ) {
|
|
384
405
|
var clock = this,
|
385
406
|
parsingObject = {}
|
386
407
|
|
387
|
-
if ( !value || Picker._.isInteger( value ) || $.isArray( value ) || Picker._.isDate( value ) ||
|
408
|
+
if ( !value || Picker._.isInteger( value ) || $.isArray( value ) || Picker._.isDate( value ) || $.isPlainObject( value ) && Picker._.isInteger( value.pick ) ) {
|
388
409
|
return value
|
389
410
|
}
|
390
411
|
|
@@ -491,11 +512,11 @@ TimePicker.prototype.flipItem = function( type, value/*, options*/ ) {
|
|
491
512
|
|
492
513
|
var clock = this,
|
493
514
|
collection = clock.item.disable,
|
494
|
-
|
515
|
+
isFlippedBase = clock.item.enable === -1
|
495
516
|
|
496
517
|
// Flip the enabled and disabled times.
|
497
518
|
if ( value == 'flip' ) {
|
498
|
-
clock.item.enable =
|
519
|
+
clock.item.enable = isFlippedBase ? 1 : -1
|
499
520
|
}
|
500
521
|
|
501
522
|
// Reset the collection and enable the base state.
|
@@ -514,29 +535,79 @@ TimePicker.prototype.flipItem = function( type, value/*, options*/ ) {
|
|
514
535
|
else if ( $.isArray( value ) ) {
|
515
536
|
|
516
537
|
// Check if we have to add/remove from collection.
|
517
|
-
if (
|
518
|
-
collection = clock.removeDisabled( collection, value )
|
519
|
-
}
|
520
|
-
else if ( !isFlipped && type == 'disable' || isFlipped && type == 'enable' ) {
|
538
|
+
if ( isFlippedBase && type == 'enable' || !isFlippedBase && type == 'disable' ) {
|
521
539
|
collection = clock.addDisabled( collection, value )
|
522
540
|
}
|
541
|
+
else if ( !isFlippedBase && type == 'enable' ) {
|
542
|
+
collection = clock.addEnabled( collection, value )
|
543
|
+
}
|
544
|
+
else if ( isFlippedBase && type == 'disable' ) {
|
545
|
+
collection = clock.removeDisabled( collection, value )
|
546
|
+
}
|
523
547
|
}
|
524
548
|
|
525
549
|
return collection
|
526
550
|
} //TimePicker.prototype.flipItem
|
527
551
|
|
528
552
|
|
553
|
+
/**
|
554
|
+
* Add an enabled (inverted) item to the disabled collection.
|
555
|
+
*/
|
556
|
+
TimePicker.prototype.addEnabled = function( collection, item ) {
|
557
|
+
|
558
|
+
var clock = this
|
559
|
+
|
560
|
+
// Go through each item to enable.
|
561
|
+
item.map( function( timeUnit ) {
|
562
|
+
|
563
|
+
// Check if the time unit is already within the collection.
|
564
|
+
if ( clock.filterDisabled( collection, timeUnit, 1 ).length ) {
|
565
|
+
|
566
|
+
// Remove the unit directly from the collection.
|
567
|
+
collection = clock.removeDisabled( collection, [timeUnit] )
|
568
|
+
|
569
|
+
// If the unit is an array and it falls within a
|
570
|
+
// disabled weekday, invert it and then insert it.
|
571
|
+
if (
|
572
|
+
$.isArray( timeUnit ) &&
|
573
|
+
collection.filter( function( disabledHour ) {
|
574
|
+
return Picker._.isInteger( disabledHour ) && clock.create( timeUnit ).hour === disabledHour
|
575
|
+
}).length
|
576
|
+
) {
|
577
|
+
timeUnit = timeUnit.slice(0)
|
578
|
+
timeUnit.push( 'inverted' )
|
579
|
+
collection.push( timeUnit )
|
580
|
+
}
|
581
|
+
}
|
582
|
+
})
|
583
|
+
|
584
|
+
// Return the final collection.
|
585
|
+
return collection
|
586
|
+
} //TimePicker.prototype.addEnabled
|
587
|
+
|
588
|
+
|
529
589
|
/**
|
530
590
|
* Add an item to the disabled collection.
|
531
591
|
*/
|
532
592
|
TimePicker.prototype.addDisabled = function( collection, item ) {
|
593
|
+
|
533
594
|
var clock = this
|
534
|
-
|
535
|
-
|
595
|
+
|
596
|
+
// Go through each item to disable.
|
597
|
+
item.map( function( timeUnit ) {
|
598
|
+
|
599
|
+
// Add the time unit if it isn’t already within the collection.
|
536
600
|
if ( !clock.filterDisabled( collection, timeUnit ).length ) {
|
537
601
|
collection.push( timeUnit )
|
538
602
|
}
|
603
|
+
|
604
|
+
// If the time unit is an array and falls within the range, just remove it.
|
605
|
+
else if ( $.isArray( timeUnit ) && clock.filterDisabled( collection, timeUnit, 1 ).length ) {
|
606
|
+
collection = clock.removeDisabled( collection, [timeUnit] )
|
607
|
+
}
|
539
608
|
})
|
609
|
+
|
610
|
+
// Return the final collection.
|
540
611
|
return collection
|
541
612
|
} //TimePicker.prototype.addDisabled
|
542
613
|
|
@@ -545,10 +616,17 @@ TimePicker.prototype.addDisabled = function( collection, item ) {
|
|
545
616
|
* Remove an item from the disabled collection.
|
546
617
|
*/
|
547
618
|
TimePicker.prototype.removeDisabled = function( collection, item ) {
|
619
|
+
|
548
620
|
var clock = this
|
621
|
+
|
622
|
+
// Go through each item to enable.
|
549
623
|
item.map( function( timeUnit ) {
|
624
|
+
|
625
|
+
// Filter each item out of the collection.
|
550
626
|
collection = clock.filterDisabled( collection, timeUnit, 1 )
|
551
627
|
})
|
628
|
+
|
629
|
+
// Return the final colleciton.
|
552
630
|
return collection
|
553
631
|
} //TimePicker.prototype.removeDisabled
|
554
632
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
// French
|
2
2
|
|
3
3
|
jQuery.extend( jQuery.fn.pickadate.defaults, {
|
4
|
-
monthsFull: [ '
|
5
|
-
monthsShort: [ '
|
6
|
-
weekdaysFull: [ '
|
7
|
-
weekdaysShort: [ '
|
8
|
-
today: '
|
9
|
-
clear: '
|
4
|
+
monthsFull: [ 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre' ],
|
5
|
+
monthsShort: [ 'Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec' ],
|
6
|
+
weekdaysFull: [ 'Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi' ],
|
7
|
+
weekdaysShort: [ 'Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam' ],
|
8
|
+
today: 'Aujourd\'hui',
|
9
|
+
clear: 'Effacer',
|
10
10
|
firstDay: 1,
|
11
11
|
format: 'dd mmmm yyyy',
|
12
12
|
formatSubmit: 'yyyy/mm/dd'
|
13
|
-
});
|
13
|
+
});
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// Traditional Chinese
|
2
|
+
|
3
|
+
jQuery.extend( jQuery.fn.pickadate.defaults, {
|
4
|
+
monthsFull: [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月' ],
|
5
|
+
monthsShort: [ '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二' ],
|
6
|
+
weekdaysFull: [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ],
|
7
|
+
weekdaysShort: [ '日', '一', '二', '三', '四', '五', '六' ],
|
8
|
+
today: '今天',
|
9
|
+
clear: '清除',
|
10
|
+
firstDay: 1,
|
11
|
+
format: 'yyyy 年 mm 月 dd 日',
|
12
|
+
formatSubmit: 'yyyy/mm/dd'
|
13
|
+
});
|
@@ -2,8 +2,7 @@
|
|
2
2
|
$BASE-PICKER
|
3
3
|
========================================================================== */
|
4
4
|
/**
|
5
|
-
* Note: the root picker element should
|
6
|
-
* more than what’s here. Style the `.picker__holder` instead.
|
5
|
+
* Note: the root picker element should *NOT* be styled more than what’s here.
|
7
6
|
*/
|
8
7
|
.picker {
|
9
8
|
font-size: 16px;
|
@@ -12,6 +11,10 @@
|
|
12
11
|
color: #000000;
|
13
12
|
position: absolute;
|
14
13
|
z-index: 10000;
|
14
|
+
-webkit-user-select: none;
|
15
|
+
-moz-user-select: none;
|
16
|
+
-ms-user-select: none;
|
17
|
+
user-select: none;
|
15
18
|
}
|
16
19
|
/**
|
17
20
|
* The picker input element.
|
@@ -39,8 +42,7 @@
|
|
39
42
|
* Demo: http://amsul.github.io/pickadate.js
|
40
43
|
*/
|
41
44
|
/**
|
42
|
-
* Note: the root picker element should
|
43
|
-
* more than what’s here. Style the `.picker__holder` instead.
|
45
|
+
* Note: the root picker element should *NOT* be styled more than what’s here.
|
44
46
|
*/
|
45
47
|
.picker {
|
46
48
|
width: 100%;
|
@@ -52,14 +54,16 @@
|
|
52
54
|
position: absolute;
|
53
55
|
background: #ffffff;
|
54
56
|
border: 1px solid #aaaaaa;
|
57
|
+
border-top-width: 0;
|
58
|
+
border-bottom-width: 0;
|
59
|
+
-webkit-border-radius: 0 0 5px 5px;
|
60
|
+
-moz-border-radius: 0 0 5px 5px;
|
61
|
+
border-radius: 0 0 5px 5px;
|
55
62
|
-webkit-box-sizing: border-box;
|
56
63
|
-moz-box-sizing: border-box;
|
57
64
|
box-sizing: border-box;
|
58
65
|
min-width: 176px;
|
59
66
|
max-width: 466px;
|
60
|
-
-webkit-border-radius: 0 0 5px 5px;
|
61
|
-
-moz-border-radius: 0 0 5px 5px;
|
62
|
-
border-radius: 0 0 5px 5px;
|
63
67
|
max-height: 0;
|
64
68
|
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
65
69
|
filter: alpha(opacity=0);
|
@@ -68,9 +72,19 @@
|
|
68
72
|
-webkit-transform: translateY(-1em) perspective(600px) rotateX(10deg);
|
69
73
|
-moz-transform: translateY(-1em) perspective(600px) rotateX(10deg);
|
70
74
|
transform: translateY(-1em) perspective(600px) rotateX(10deg);
|
71
|
-
-webkit-transition: all 0.15s ease-out, max-height 0 0.15s;
|
72
|
-
-moz-transition: all 0.15s ease-out, max-height 0 0.15s;
|
73
|
-
transition: all 0.15s ease-out, max-height 0 0.15s;
|
75
|
+
-webkit-transition: all 0.15s ease-out, max-height 0 0.15s, border-width 0 0.15s;
|
76
|
+
-moz-transition: all 0.15s ease-out, max-height 0 0.15s, border-width 0 0.15s;
|
77
|
+
transition: all 0.15s ease-out, max-height 0 0.15s, border-width 0 0.15s;
|
78
|
+
}
|
79
|
+
/**
|
80
|
+
* The frame and wrap work together to ensure that
|
81
|
+
* clicks within the picker don’t reach the holder.
|
82
|
+
*/
|
83
|
+
.picker__frame {
|
84
|
+
padding: 1px;
|
85
|
+
}
|
86
|
+
.picker__wrap {
|
87
|
+
margin: -1px;
|
74
88
|
}
|
75
89
|
/**
|
76
90
|
* When the picker opens...
|
@@ -81,12 +95,14 @@
|
|
81
95
|
filter: alpha(opacity=100);
|
82
96
|
-moz-opacity: 1;
|
83
97
|
opacity: 1;
|
98
|
+
border-top-width: 1px;
|
99
|
+
border-bottom-width: 1px;
|
84
100
|
-webkit-transform: translateY(0) perspective(600px) rotateX(0);
|
85
101
|
-moz-transform: translateY(0) perspective(600px) rotateX(0);
|
86
102
|
transform: translateY(0) perspective(600px) rotateX(0);
|
87
|
-
-webkit-transition: all 0.15s ease-out, max-height 0;
|
88
|
-
-moz-transition: all 0.15s ease-out, max-height 0;
|
89
|
-
transition: all 0.15s ease-out, max-height 0;
|
103
|
+
-webkit-transition: all 0.15s ease-out, max-height 0, border-width 0;
|
104
|
+
-moz-transition: all 0.15s ease-out, max-height 0, border-width 0;
|
105
|
+
transition: all 0.15s ease-out, max-height 0, border-width 0;
|
90
106
|
-webkit-box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12);
|
91
107
|
-moz-box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12);
|
92
108
|
box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12);
|
@@ -2,8 +2,7 @@
|
|
2
2
|
$BASE-PICKER
|
3
3
|
========================================================================== */
|
4
4
|
/**
|
5
|
-
* Note: the root picker element should
|
6
|
-
* more than what’s here. Style the `.picker__holder` instead.
|
5
|
+
* Note: the root picker element should *NOT* be styled more than what’s here.
|
7
6
|
*/
|
8
7
|
.picker {
|
9
8
|
font-size: 16px;
|
@@ -12,6 +11,10 @@
|
|
12
11
|
color: #000000;
|
13
12
|
position: absolute;
|
14
13
|
z-index: 10000;
|
14
|
+
-webkit-user-select: none;
|
15
|
+
-moz-user-select: none;
|
16
|
+
-ms-user-select: none;
|
17
|
+
user-select: none;
|
15
18
|
}
|
16
19
|
/**
|
17
20
|
* The picker input element.
|
@@ -38,6 +41,9 @@
|
|
38
41
|
* Default mobile-first, responsive styling for pickadate.js
|
39
42
|
* Demo: http://amsul.github.io/pickadate.js
|
40
43
|
*/
|
44
|
+
/**
|
45
|
+
* Note: the root picker element should *NOT* be styled more than what’s here.
|
46
|
+
*/
|
41
47
|
/**
|
42
48
|
* Make the holder and frame fullscreen.
|
43
49
|
*/
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/*!
|
2
|
+
* Styling for RTL (right-to-left) languages using pickadate.js
|
3
|
+
*/
|
4
|
+
/**
|
5
|
+
* Switch the direction - only really necessary if
|
6
|
+
* it hasn’t already been applied higher up in the DOM.
|
7
|
+
*/
|
8
|
+
.picker {
|
9
|
+
direction: rtl;
|
10
|
+
}
|
11
|
+
/**
|
12
|
+
* Flip around the “next” and “previous” buttons.
|
13
|
+
*/
|
14
|
+
.picker__nav--next {
|
15
|
+
right: auto;
|
16
|
+
left: -1em;
|
17
|
+
}
|
18
|
+
.picker__nav--prev {
|
19
|
+
left: auto;
|
20
|
+
right: -1em;
|
21
|
+
}
|
22
|
+
.picker__nav--next:before {
|
23
|
+
border-left: 0;
|
24
|
+
border-right: 0.75em solid #000000;
|
25
|
+
}
|
26
|
+
.picker__nav--prev:before {
|
27
|
+
border-right: 0;
|
28
|
+
border-left: 0.75em solid #000000;
|
29
|
+
}
|
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.3.
|
4
|
+
version: 1.3.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-
|
11
|
+
date: 2013-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -105,12 +105,14 @@ files:
|
|
105
105
|
- vendor/assets/javascripts/pickadate/translations/tr_TR.js
|
106
106
|
- vendor/assets/javascripts/pickadate/translations/uk_UA.js
|
107
107
|
- vendor/assets/javascripts/pickadate/translations/zh_CN.js
|
108
|
+
- vendor/assets/javascripts/pickadate/translations/zh_TW.js
|
108
109
|
- vendor/assets/stylesheets/pickadate/classic.css
|
109
110
|
- vendor/assets/stylesheets/pickadate/classic.date.css
|
110
111
|
- vendor/assets/stylesheets/pickadate/classic.time.css
|
111
112
|
- vendor/assets/stylesheets/pickadate/default.css
|
112
113
|
- vendor/assets/stylesheets/pickadate/default.date.css
|
113
114
|
- vendor/assets/stylesheets/pickadate/default.time.css
|
115
|
+
- vendor/assets/stylesheets/pickadate/rtl.css
|
114
116
|
homepage: https://github.com/veracross/pickadate-rails
|
115
117
|
licenses:
|
116
118
|
- MIT
|