11'use strict' ;
22var $ = require ( 'jquery' ) ;
3+ var docVal = ( typeof window !== 'undefined' && window . document ) ? window . document : 'document' ;
34
4- module . exports = function ( ) {
5- $ ( function ( ) {
6- $ . extend ( $ . datepicker , { _checkOffset :function ( inst , offset , isFixed ) { return offset } } ) ;
7- return $ ( '[data-ff="date-picker"]' ) . each ( function ( index , element ) {
8- var valueFormat = "yy-mm-dd" ;
9-
10- var displayElement = $ ( document . getElementById ( $ ( element ) . attr ( "data-ff-target-input-id" ) ) ) ;
11- if ( displayElement ) {
12- var displayFormat = $ ( element ) . attr ( "data-ff-display-format" ) || valueFormat ;
13- var valueElement = $ ( "<input type='hidden'>" ) ;
14- valueElement . attr ( "name" , displayElement . attr ( "name" ) ) ;
15- displayElement . attr ( "name" , null ) ;
16- displayElement . after ( valueElement ) ;
17-
18- updateTarget ( displayElement . val ( ) ) ;
5+ var _options = {
6+ root : docVal ,
7+ selector : 'data-ff=date-picker' ,
8+ displayElement : 'data-ff-target-input-id'
9+ }
10+
11+ function activateDatePickerJumpTo ( options ) {
12+
13+ $ . extend ( $ . datepicker , { _checkOffset : function ( inst , offset , isFixed ) { return offset } } ) ;
14+
15+ return $ ( '[' + options . selector + ']' , options . root ) . each ( function ( index , element ) {
16+
17+ var valueFormat = "yy-mm-dd" ;
18+ var displayElement = $ ( document . getElementById ( $ ( element ) . attr ( options . displayElement ) ) ) ;
19+
20+ if ( displayElement ) {
21+ var displayFormat = $ ( element ) . attr ( "data-ff-display-format" ) || valueFormat ;
22+ var valueElement = $ ( "<input type='hidden'>" ) ;
23+ valueElement . attr ( "name" , displayElement . attr ( "name" ) ) ;
24+ displayElement . attr ( "name" , null ) ;
25+ displayElement . after ( valueElement ) ;
26+ updateTarget ( displayElement . val ( ) ) ;
27+ }
28+
29+ function updateTarget ( date ) {
30+ if ( ! isNaN ( Date . parse ( date ) ) ) {
31+ valueElement . val ( date ) ;
32+ var displayDate = $ . datepicker . formatDate ( displayFormat , new Date ( date ) ) ;
33+ displayElement . val ( displayDate ) ;
1934 }
20-
21- function updateTarget ( date ) {
22-
23- if ( ! isNaN ( Date . parse ( date ) ) ) {
24- valueElement . val ( date ) ;
25- var displayDate = $ . datepicker . formatDate ( displayFormat , new Date ( date ) ) ;
26- displayElement . val ( displayDate ) ;
35+ }
36+
37+ $ ( element ) . datepicker ( {
38+ dateFormat : valueFormat ,
39+ onSelect : function ( date ) {
40+ if ( displayElement ) {
41+ updateTarget ( date ) ;
2742 }
28- }
29-
30- $ ( element ) . datepicker ( {
31- dateFormat : valueFormat ,
32- onSelect : function ( date ) {
33- if ( displayElement ) {
34- updateTarget ( date ) ;
35- }
36- if ( $ ( element ) . attr ( "data-ff-url-prefix" ) ) {
37- location . href = $ ( element ) . attr ( "data-ff-url-prefix" ) + date ;
38- }
39- } ,
40- beforeShow : function ( input , inst ) {
41- $ ( inst . dpDiv ) . addClass ( 'ff_module-date-picker-calendar' ) ;
42- setTimeout ( function ( ) {
43- var curr_left = inst . dpDiv . css ( 'left' ) ;
44- var curr_right = inst . dpDiv . css ( 'right' ) ;
45- var curr_top = inst . dpDiv . css ( 'top' ) ;
43+ if ( $ ( element ) . attr ( "data-ff-url-prefix" ) ) {
44+ location . href = $ ( element ) . attr ( "data-ff-url-prefix" ) + date ;
45+ }
46+ } ,
47+ beforeShow : function ( input , inst ) {
48+ $ ( inst . dpDiv ) . addClass ( 'ff_module-date-picker-calendar' ) ;
49+ setTimeout ( function ( ) {
50+ var curr_left = inst . dpDiv . css ( 'left' ) ;
51+ var curr_right = inst . dpDiv . css ( 'right' ) ;
52+ var curr_top = inst . dpDiv . css ( 'top' ) ;
4653
47- var new_left = 50 + parseInt ( curr_left ) ;
48- var new_right = 50 + parseInt ( curr_right ) ;
49- var new_top = parseInt ( curr_top ) - 40 ;
50-
51- // console.log(new_left,new_right);
54+ var new_left = 50 + parseInt ( curr_left ) ;
55+ var new_right = 50 + parseInt ( curr_right ) ;
56+ var new_top = parseInt ( curr_top ) - 40 ;
57+
58+ // console.log(new_left,new_right);
5259
53- if ( curr_left != 'auto' ) { inst . dpDiv . css ( { 'left' : new_left , 'top' : new_top , 'z-index' : 5 } ) ; }
54- if ( curr_right != 'auto' ) { inst . dpDiv . css ( { 'right' : new_right , 'top' : new_top , 'z-index' : 5 } ) ; }
60+ if ( curr_left != 'auto' ) { inst . dpDiv . css ( { 'left' : new_left , 'top' : new_top , 'z-index' : 5 } ) ; }
61+ if ( curr_right != 'auto' ) { inst . dpDiv . css ( { 'right' : new_right , 'top' : new_top , 'z-index' : 5 } ) ; }
5562
56- ensureElementIsFullyContainedByWindow ( inst . dpDiv ) ;
57- } , 0 ) ;
58- }
59- } ) ;
63+ ensureElementIsFullyContainedByWindow ( inst . dpDiv ) ;
64+ } , 0 ) ;
65+ }
6066 } ) ;
67+ } ) ;
68+
69+ function ensureElementIsFullyContainedByWindow ( element ) {
70+ var buffer = 20 ;
71+ var offset = element . offset ( ) ;
72+ var bottom = offset . top + element . outerHeight ( ) ;
73+ var right = offset . left + element . outerWidth ( ) ;
74+ var boundingBox = {
75+ bottom : $ ( window ) . scrollTop ( ) + $ ( window ) . height ( ) - buffer ,
76+ right : $ ( window ) . scrollLeft ( ) + $ ( window ) . width ( ) - buffer
77+ } ;
6178
62- function ensureElementIsFullyContainedByWindow ( element ) {
63- var buffer = 20 ;
64- var offset = element . offset ( ) ;
65- var bottom = offset . top + element . outerHeight ( ) ;
66- var right = offset . left + element . outerWidth ( ) ;
67- var boundingBox = {
68- bottom : $ ( window ) . scrollTop ( ) + $ ( window ) . height ( ) - buffer ,
69- right : $ ( window ) . scrollLeft ( ) + $ ( window ) . width ( ) - buffer
70- } ;
71-
72- if ( bottom > boundingBox . bottom ) {
73- element . css ( { top : boundingBox . bottom - element . outerHeight ( ) } ) ;
74- }
75- if ( right > boundingBox . right ) {
76- element . css ( { left : boundingBox . right - element . outerWidth ( ) } ) ;
77- }
79+ if ( bottom > boundingBox . bottom ) {
80+ element . css ( { top : boundingBox . bottom - element . outerHeight ( ) } ) ;
7881 }
79- } ) ;
82+ if ( right > boundingBox . right ) {
83+ element . css ( { left : boundingBox . right - element . outerWidth ( ) } ) ;
84+ }
85+ }
86+ }
8087
81- } ;
88+ module . exports = function ( options ) {
89+ options = $ . extend ( { } , _options , options ) ;
90+ $ ( function ( ) {
91+ activateDatePickerJumpTo ( options ) ;
92+ } ) ;
93+ } ;
0 commit comments