Overview
Comment:Replace datepicker with something lighter
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: 2fec91572c1c18f75d40bc69524257836a8e78ac
User & Date: bohwaz on 2020-09-30 12:16:10
Other Links: branch diff | manifest | tags
Context
2020-09-30
12:31
Fix focus after dialog close check-in: ddd5af655d user: bohwaz tags: dev
12:16
Replace datepicker with something lighter check-in: 2fec91572c user: bohwaz tags: dev
2020-09-29
18:47
Fix small issues on transaction adding check-in: e57d8c495d user: bohwaz tags: dev
Changes

Modified src/include/lib/Garradin/Utils.php from [df0debf558] to [5298184ce5].

858
859
860
861
862
863
864

865
866
867
868
869
870
871
872
873
874
875
            case 'minus': return 'βž–';
            case 'logout': return '”';
            case 'eye-off': return '‫';
            case 'menu': return '𝍒';
            case 'eye': return 'πŸ‘';
            case 'user': return 'πŸ‘€';
            case 'users': return 'πŸ‘ͺ';

            case 'attach': return 'πŸ“Ž';
            case 'search': return 'πŸ”';
            case 'lock': return 'πŸ”’';
            case 'unlock': return 'πŸ”“';
            case 'folder': return 'πŸ—€';
            case 'document': return 'πŸ—…';
            default:
                throw new \InvalidArgumentException('Unknown icon shape: ' . $shape);
        }
    }
}







>











858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
            case 'minus': return 'βž–';
            case 'logout': return '”';
            case 'eye-off': return '‫';
            case 'menu': return '𝍒';
            case 'eye': return 'πŸ‘';
            case 'user': return 'πŸ‘€';
            case 'users': return 'πŸ‘ͺ';
            case 'calendar': return 'πŸ“…';
            case 'attach': return 'πŸ“Ž';
            case 'search': return 'πŸ”';
            case 'lock': return 'πŸ”’';
            case 'unlock': return 'πŸ”“';
            case 'folder': return 'πŸ—€';
            case 'document': return 'πŸ—…';
            default:
                throw new \InvalidArgumentException('Unknown icon shape: ' . $shape);
        }
    }
}

Modified src/www/admin/static/admin.css from [9d2e7e9250] to [285b9aef62].

409
410
411
412
413
414
415































































416
417
418
419
420
421
422
...
914
915
916
917
918
919
920




921
922
923
924
925
926
927
}

input.money + b {
    padding: .2rem .6rem;
    line-height: 1.5rem;
    color: #999;
}
































































#dialog {
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    right: 0;
................................................................................
    font-family: "gicon", sans-serif;
    padding-right: .5em;
    font-size: 1.2em;
    line-height: .8em;
    vertical-align: middle;
    content: attr(data-icon);
}





.icn, .icnl {
    font-family: "gicon", sans-serif;
    font-style: normal;
    font-weight: normal;
    speak: none;
    font-variant: normal;







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>







409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
...
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
}

input.money + b {
    padding: .2rem .6rem;
    line-height: 1.5rem;
    color: #999;
}

.datepicker-parent {
    position: relative;
}

dialog.datepicker {
    position: absolute;
    left: 0;
    margin: 0;
    padding: .3rem;
    border: none;
    box-shadow: 0 0 5px #000;
    border-radius: .5rem;
}

.datepicker nav {
    display: flex;
    justify-content: space-between
}

.datepicker h3 {
    font-size: inherit;
    margin: 0 .5rem;
}

.datepicker table {
    border-collapse: collapse;
    width: 100%;
}

.datepicker thead td {
    font-size: 80%;
    color: #999;
}

.datepicker tbody tr:nth-child(even) {
    background-color: #eee;
}

.datepicker tbody td:nth-child(6) {
    color: #666;
}
.datepicker tbody td:nth-child(7) {
    color: #999;
}

.datepicker tbody td {
    padding: .2rem .4rem;
    text-align: center;
    width: 14.3%;
}

.datepicker tbody td:not(:empty):hover {
    cursor: pointer;
    background: #fcc;
    text-decoration: underline;
}

.datepicker tbody td.focus {
    background: #339;
    color: #fff;
}


#dialog {
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    right: 0;
................................................................................
    font-family: "gicon", sans-serif;
    padding-right: .5em;
    font-size: 1.2em;
    line-height: .8em;
    vertical-align: middle;
    content: attr(data-icon);
}

.icn-btn[data-icon]:empty:before {
    padding: 0;
}

.icn, .icnl {
    font-family: "gicon", sans-serif;
    font-style: normal;
    font-weight: normal;
    speak: none;
    font-variant: normal;

Modified src/www/admin/static/font/config.json from [8f50549389] to [36945c3367].

357
358
359
360
361
362
363






364
365
366
      "src": "fontawesome"
    },
    {
      "uid": "390d6d13398cbf8c8c3c5493f7d34088",
      "css": "export",
      "code": 8631,
      "src": "entypo"






    }
  ]
}







>
>
>
>
>
>



357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
      "src": "fontawesome"
    },
    {
      "uid": "390d6d13398cbf8c8c3c5493f7d34088",
      "css": "export",
      "code": 8631,
      "src": "entypo"
    },
    {
      "uid": "531bc468eecbb8867d822f1c11f1e039",
      "css": "calendar",
      "code": 128197,
      "src": "fontawesome"
    }
  ]
}

Modified src/www/admin/static/font/garradin.css from [41839c4828] to [cd0f2bc06f].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
..
77
78
79
80
81
82
83

84
85
86
87
88
89
@charset "UTF-8";

 @font-face {
  font-family: 'garradin';
  src: url('../font/garradin.eot?13522204');
  src: url('../font/garradin.eot?13522204#iefix') format('embedded-opentype'),
       url('../font/garradin.woff2?13522204') format('woff2'),
       url('../font/garradin.woff?13522204') format('woff'),
       url('../font/garradin.ttf?13522204') format('truetype'),
       url('../font/garradin.svg?13522204#garradin') format('svg');
  font-weight: normal;
  font-style: normal;
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
/*
@media screen and (-webkit-min-device-pixel-ratio:0) {
  @font-face {
    font-family: 'garradin';
    src: url('../font/garradin.svg?13522204#garradin') format('svg');
  }
}
*/
 
 [class^="icn-"]:before, [class*=" icn-"]:before {
  font-family: "garradin";
  font-style: normal;
  font-weight: normal;
  speak: none;
 
  display: inline-block;
  text-decoration: inherit;
  width: 1em;
  margin-right: .2em;
  text-align: center;
  /* opacity: .8; */
................................................................................
.icn-minus:before { content: '\2796'; } /* 'βž–' */
.icn-logout:before { content: '\291d'; } /* '”' */
.icn-eye-off:before { content: '\292b'; } /* '‫' */
.icn-menu:before { content: '𝍒'; } /* '\1d362' */
.icn-eye:before { content: 'πŸ‘'; } /* '\1f441' */
.icn-user:before { content: 'πŸ‘€'; } /* '\1f464' */
.icn-users:before { content: 'πŸ‘ͺ'; } /* '\1f46a' */

.icn-attach:before { content: 'πŸ“Ž'; } /* '\1f4ce' */
.icn-search:before { content: 'πŸ”'; } /* '\1f50d' */
.icn-lock:before { content: 'πŸ”’'; } /* '\1f512' */
.icn-unlock:before { content: 'πŸ”“'; } /* '\1f513' */
.icn-folder:before { content: 'πŸ—€'; } /* '\1f5c0' */
.icn-document:before { content: 'πŸ—…'; } /* '\1f5c5' */




|
|
|
|
|
|









|








|







 







>






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
..
77
78
79
80
81
82
83
84
85
86
87
88
89
90
@charset "UTF-8";

 @font-face {
  font-family: 'garradin';
  src: url('../font/garradin.eot?72615901');
  src: url('../font/garradin.eot?72615901#iefix') format('embedded-opentype'),
       url('../font/garradin.woff2?72615901') format('woff2'),
       url('../font/garradin.woff?72615901') format('woff'),
       url('../font/garradin.ttf?72615901') format('truetype'),
       url('../font/garradin.svg?72615901#garradin') format('svg');
  font-weight: normal;
  font-style: normal;
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
/*
@media screen and (-webkit-min-device-pixel-ratio:0) {
  @font-face {
    font-family: 'garradin';
    src: url('../font/garradin.svg?72615901#garradin') format('svg');
  }
}
*/
 
 [class^="icn-"]:before, [class*=" icn-"]:before {
  font-family: "garradin";
  font-style: normal;
  font-weight: normal;
  speak: never;
 
  display: inline-block;
  text-decoration: inherit;
  width: 1em;
  margin-right: .2em;
  text-align: center;
  /* opacity: .8; */
................................................................................
.icn-minus:before { content: '\2796'; } /* 'βž–' */
.icn-logout:before { content: '\291d'; } /* '”' */
.icn-eye-off:before { content: '\292b'; } /* '‫' */
.icn-menu:before { content: '𝍒'; } /* '\1d362' */
.icn-eye:before { content: 'πŸ‘'; } /* '\1f441' */
.icn-user:before { content: 'πŸ‘€'; } /* '\1f464' */
.icn-users:before { content: 'πŸ‘ͺ'; } /* '\1f46a' */
.icn-calendar:before { content: 'πŸ“…'; } /* '\1f4c5' */
.icn-attach:before { content: 'πŸ“Ž'; } /* '\1f4ce' */
.icn-search:before { content: 'πŸ”'; } /* '\1f50d' */
.icn-lock:before { content: 'πŸ”’'; } /* '\1f512' */
.icn-unlock:before { content: 'πŸ”“'; } /* '\1f513' */
.icn-folder:before { content: 'πŸ—€'; } /* '\1f5c0' */
.icn-document:before { content: 'πŸ—…'; } /* '\1f5c5' */

Modified src/www/admin/static/font/garradin.eot from [185dac1be8] to [3ec1c94e00].

cannot compute difference between binary files

Modified src/www/admin/static/font/garradin.svg from [78870af904] to [bc66fe759e].

49
50
51
52
53
54
55


56
57
58
59
60
61
62
<glyph glyph-name="menu" unicode="&#x1d362;" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />

<glyph glyph-name="eye" unicode="&#x1f441;" d="M0 350q6 49 64 110 79 80 176 129 129 60 260 60 137-2 260-60 103-53 176-129 64-73 64-110-6-49-64-109-79-80-176-129-129-61-260-61-137 2-260 61-103 53-176 129-64 72-64 109z m264 0q0-94 69-159t167-65 167 65 69 159-69 159-167 66-167-66-69-159z m86 1q0 60 44 102t106 42 106-42 44-102-44-102-106-43-106 43-44 102z" horiz-adv-x="1000" />

<glyph glyph-name="user" unicode="&#x1f464;" d="M786 66q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q5 0 24-12t41-27 60-27 75-12 74 12 61 27 41 27 24 12q34 0 62-11t48-30 34-45 24-55 15-60 8-61 2-58z m-179 498q0-88-63-151t-151-63-152 63-62 151 62 152 152 63 151-63 63-152z" horiz-adv-x="785.7" />

<glyph glyph-name="users" unicode="&#x1f46a;" d="M331 350q-90-3-148-71h-75q-45 0-77 22t-31 66q0 197 69 197 4 0 25-11t54-24 66-12q38 0 75 13-3-21-3-37 0-78 45-143z m598-356q0-66-41-105t-108-39h-488q-68 0-108 39t-41 105q0 30 2 58t8 61 14 61 24 54 35 45 48 30 62 11q6 0 24-12t41-26 59-27 76-12 75 12 60 27 41 26 23 12q35 0 63-11t47-30 35-45 24-54 15-61 8-61 2-58z m-572 713q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m393-214q0-89-63-152t-151-62-152 62-63 152 63 151 152 63 151-63 63-151z m321-126q0-43-31-66t-77-22h-75q-57 68-147 71 45 65 45 143 0 16-3 37 37-13 74-13 33 0 67 12t54 24 24 11q69 0 69-197z m-71 340q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z" horiz-adv-x="1071.4" />



<glyph glyph-name="attach" unicode="&#x1f4ce;" d="M783 77q0-65-44-109t-109-44q-75 0-131 55l-434 434q-63 64-63 151 0 88 62 150t150 62q88 0 152-63l338-338q5-5 5-12 0-9-17-26t-26-17q-7 0-13 5l-338 339q-44 43-101 43-59 0-100-42t-40-101q0-58 42-101l433-433q35-35 81-35 36 0 59 23t24 59q0 46-36 81l-324 324q-14 14-33 14-16 0-27-11t-11-27q0-18 14-33l229-228q6-6 6-13 0-9-18-26t-26-17q-7 0-12 5l-229 229q-35 34-35 83 0 46 32 78t77 32q49 0 83-36l325-324q55-54 55-131z" horiz-adv-x="785.7" />

<glyph glyph-name="search" unicode="&#x1f50d;" d="M643 386q0 103-74 176t-176 74-177-74-73-176 73-177 177-73 176 73 74 177z m286-465q0-29-22-50t-50-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" />

<glyph glyph-name="lock" unicode="&#x1f512;" d="M179 421h285v108q0 59-42 101t-101 41-101-41-41-101v-108z m464-53v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74 177-74 73-176v-108h18q23 0 38-15t16-38z" horiz-adv-x="642.9" />








>
>







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<glyph glyph-name="menu" unicode="&#x1d362;" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />

<glyph glyph-name="eye" unicode="&#x1f441;" d="M0 350q6 49 64 110 79 80 176 129 129 60 260 60 137-2 260-60 103-53 176-129 64-73 64-110-6-49-64-109-79-80-176-129-129-61-260-61-137 2-260 61-103 53-176 129-64 72-64 109z m264 0q0-94 69-159t167-65 167 65 69 159-69 159-167 66-167-66-69-159z m86 1q0 60 44 102t106 42 106-42 44-102-44-102-106-43-106 43-44 102z" horiz-adv-x="1000" />

<glyph glyph-name="user" unicode="&#x1f464;" d="M786 66q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q5 0 24-12t41-27 60-27 75-12 74 12 61 27 41 27 24 12q34 0 62-11t48-30 34-45 24-55 15-60 8-61 2-58z m-179 498q0-88-63-151t-151-63-152 63-62 151 62 152 152 63 151-63 63-152z" horiz-adv-x="785.7" />

<glyph glyph-name="users" unicode="&#x1f46a;" d="M331 350q-90-3-148-71h-75q-45 0-77 22t-31 66q0 197 69 197 4 0 25-11t54-24 66-12q38 0 75 13-3-21-3-37 0-78 45-143z m598-356q0-66-41-105t-108-39h-488q-68 0-108 39t-41 105q0 30 2 58t8 61 14 61 24 54 35 45 48 30 62 11q6 0 24-12t41-26 59-27 76-12 75 12 60 27 41 26 23 12q35 0 63-11t47-30 35-45 24-54 15-61 8-61 2-58z m-572 713q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m393-214q0-89-63-152t-151-62-152 62-63 152 63 151 152 63 151-63 63-151z m321-126q0-43-31-66t-77-22h-75q-57 68-147 71 45 65 45 143 0 16-3 37 37-13 74-13 33 0 67 12t54 24 24 11q69 0 69-197z m-71 340q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z" horiz-adv-x="1071.4" />

<glyph glyph-name="calendar" unicode="&#x1f4c5;" d="M71-79h161v161h-161v-161z m197 0h178v161h-178v-161z m-197 197h161v178h-161v-178z m197 0h178v178h-178v-178z m-197 214h161v161h-161v-161z m411-411h179v161h-179v-161z m-214 411h178v161h-178v-161z m428-411h161v161h-161v-161z m-214 197h179v178h-179v-178z m-196 482v161q0 7-6 12t-12 6h-36q-7 0-12-6t-6-12v-161q0-7 6-13t12-5h36q7 0 12 5t6 13z m410-482h161v178h-161v-178z m-214 214h179v161h-179v-161z m214 0h161v161h-161v-161z m18 268v161q0 7-5 12t-13 6h-35q-7 0-13-6t-5-12v-161q0-7 5-13t13-5h35q8 0 13 5t5 13z m215 36v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v715q0 29 21 50t50 21h72v54q0 37 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 37 27 63t63 26h35q37 0 64-26t26-63v-54h71q29 0 50-21t22-50z" horiz-adv-x="928.6" />

<glyph glyph-name="attach" unicode="&#x1f4ce;" d="M783 77q0-65-44-109t-109-44q-75 0-131 55l-434 434q-63 64-63 151 0 88 62 150t150 62q88 0 152-63l338-338q5-5 5-12 0-9-17-26t-26-17q-7 0-13 5l-338 339q-44 43-101 43-59 0-100-42t-40-101q0-58 42-101l433-433q35-35 81-35 36 0 59 23t24 59q0 46-36 81l-324 324q-14 14-33 14-16 0-27-11t-11-27q0-18 14-33l229-228q6-6 6-13 0-9-18-26t-26-17q-7 0-12 5l-229 229q-35 34-35 83 0 46 32 78t77 32q49 0 83-36l325-324q55-54 55-131z" horiz-adv-x="785.7" />

<glyph glyph-name="search" unicode="&#x1f50d;" d="M643 386q0 103-74 176t-176 74-177-74-73-176 73-177 177-73 176 73 74 177z m286-465q0-29-22-50t-50-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" />

<glyph glyph-name="lock" unicode="&#x1f512;" d="M179 421h285v108q0 59-42 101t-101 41-101-41-41-101v-108z m464-53v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74 177-74 73-176v-108h18q23 0 38-15t16-38z" horiz-adv-x="642.9" />

Modified src/www/admin/static/font/garradin.ttf from [6d17abf145] to [041a5c1d55].

cannot compute difference between binary files

Modified src/www/admin/static/font/garradin.woff from [4cf4cf0939] to [05a6a5a89b].

cannot compute difference between binary files

Added src/www/admin/static/scripts/datepicker2.js version [ea9d5d9861].























































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
(function () {
	DATEPICKER_L10N = {};
	DATEPICKER_L10N.en = {
		weekdays: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
		months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
	};
	DATEPICKER_L10N.fr = {
		weekdays: ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'],
		months: ['Janvier', 'FΓ©vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'AoΓ»t', 'Septembre', 'Octobre', 'Novembre', 'DΓ©cembre']
	};

	window.DatePicker = class {
		constructor(button, input, config) {
			this.button = button;
			this.input = input;
			this.date = null;

			Object.assign(this, {
				format: 0, // 0 = Y-m-d, 1 = d/m/Y
				lang: 'fr',
				class: 'datepicker'
			}, config);

			var c = document.createElement('dialog');
			c.className = this.class;
			this.container = button.parentNode.insertBefore(c, button.nextSibling);

			button.onclick = () => { this.container.open ? this.close() : this.open() };
		}

		open()
		{
			var d = this.input.value;
			if (d == '') {
				d = new CalendarDate;
			}
			else if (this.format == 1) {
				d = d.split('/');
				d = new CalendarDate(d[2], d[1] - 1, d[0]);
			}
			else {
				d = new CalendarDate(d);
			}

			this.date = d;

			this.refresh();

			this.focus();

			this.container.open = true;
			this.keyEvent = (e) => {
				var r = this.key(e.key);

				if (!r) {
					e.preventDefault();
				}

				return r;
			};

			document.addEventListener('keydown', this.keyEvent);
		}

		key(key)
		{
			switch (key) {
				case 'Enter': return !!this.select();
				case 'Escape': return !!this.close();
				case 'ArrowLeft': return !!this.day(-1);
				case 'ArrowRight': return !!this.day(1);
				case 'ArrowUp': return !!this.day(-7);
				case 'ArrowDown': return !!this.day(7);
				case 'PageDown': return !!this.month(1);
				case 'PageUp': return !!this.month(-1);
			}

			return true;
		}

		close()
		{
			this.container.innerHTML = '';
			this.container.open = false;
			document.removeEventListener('keydown', this.keyEvent);
		}

		generateTable()
		{
			var c = (e) => { return document.createElement(e); }
			var table = c('table'),
				head = c('thead'),
				headRow = c('tr'),
				body = c('tbody');

			DATEPICKER_L10N[this.lang].weekdays.forEach((d) => {
				var cell = c('td');
				cell.innerHTML = d;
				headRow.appendChild(cell);
			});

			head.appendChild(headRow);
			table.appendChild(head);

			var weeks = this.date.getCalendarArray();

			weeks.forEach((week) => {
				var row = c('tr');

				week.forEach((day) => {
					var cell = c('td');
					cell.innerHTML = day ? day.getDate() : '';
					cell.onclick = (e) => { this.select(e); };
					row.appendChild(cell);
				});

				body.appendChild(row);
			});

			table.appendChild(body);

			return table;
		}

		refresh()
		{
			this.container.innerHTML = '';
			var header = document.createElement('nav');

			var p = document.createElement('input');
			p.type = 'button';
			p.value = '←';
			p.onclick = () => { this.month(-1); return false; };
			header.appendChild(p);

			var t = document.createElement('h3');
			t.innerHTML = DATEPICKER_L10N[this.lang].months[this.date.getMonth()] + ' ' + this.date.getFullYear();
			header.appendChild(t);

			var n = p.cloneNode(true);
			n.value = 'β†’';
			n.onclick = () => { this.month(1); return false; };
			header.appendChild(n);

			this.container.appendChild(header);
			this.container.appendChild(this.generateTable());
		}

		month(change)
		{
			this.date.setMonth(this.date.getMonth() + change);
			this.refresh();
			this.focus();
		}

		day(change)
		{
			var old = new CalendarDate(this.date);
			this.date.setDate(this.date.getDate() + change);

			if (this.date.getMonth() != old.getMonth()) {
				this.refresh();
			}

			this.focus();
		}

		select(e)
		{
			if (e) {
				this.date.setDate(parseInt(e.target.innerHTML, 10));
			}

			var y = this.date.getFullYear(),
				m = ('0' + (this.date.getMonth() + 1)).substr(-2),
				d = ('0' + this.date.getDate()).substr(-2);

			this.input.value = this.format == 1 ? d + '/' + m + '/' + y : y + '-' + m + '-' + d;
			this.close();
		}

		focus()
		{
			this.container.querySelectorAll('tbody td').forEach((cell) => {
				var v = parseInt(cell.innerHTML, 10);

				if (v === this.date.getDate()) {
					cell.className = 'focus';
				}
				else {
					cell.className = '';
				}
			});

			this.container.focus();
		}
	}

	class CalendarDate extends Date {
		getCalendarArray() {
			var date = new CalendarDate(this.getFullYear(), this.getMonth(), 1);
			var days = [];

			var day = date.getDayOfWeek();

			for (var i = 0; i < day - 1; i++) {
				days.push(null);
			}

			while (date.getMonth() === this.getMonth()) {
				days.push(new CalendarDate(date));
				date.setDate(date.getDate() + 1);
			}

			day = date.getDayOfWeek();
			for (var i = 0; i <= 7 - day; i++) {
				days.push(null);
			}

			var weeks = [];
			while (days.length) {
				weeks.push(days.splice(0, 7));
			}

			return weeks;
		}

		getDayOfWeek() {
			var day = this.getDay();
			if (day == 0) return 7;
			return day;
		}
	}

}());

Deleted src/www/admin/static/scripts/datepickr.css version [6ff0b57283].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
.calendar {
    font-family: 'Trebuchet MS', Tahoma, Verdana, Arial, sans-serif;
    font-size: 0.9em;
    background-color: #EEE;
    color: #333;
    border: 1px solid #DDD;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    border-radius: 4px;
    padding: 0.2em;
    width: 14em;
    box-shadow: 2px 2px 5px #666;
    transition: all .5s;
    opacity: 1;
    display: block;
    position: absolute;
    z-index: 100000;
}

.calendar.hidden {
    overflow: hidden;
    visibility: hidden;
    opacity: 0;
}

.calendar a {
    outline: none;
}

.calendar .months {
    background-color: #F6AF3A;
    border: 1px solid #E78F08;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    border-radius: 4px;
    color: #FFF;
    padding: 0.2em;
    text-align: center;
}

.calendar .prev-month,
.calendar .next-month {
    padding: 0;
}

.calendar .prev-month {
    float: left;
}

.calendar .next-month {
    float: right;
}

.calendar .current-month {
    margin: 0 auto;
}

.calendar .months a {
    color: #FFF;
    text-decoration: none;
    padding: 0 0.4em;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    border-radius: 4px;
}

.calendar .months a:hover {
    background-color: #FDF5CE;
    color: #C77405;
}

.calendar table {
    border-collapse: collapse;
    padding: 0;
    font-size: 0.8em;
    width: 100%;
}

.calendar th {
    text-align: center;
}

.calendar table td {
    text-align: right;
    padding: 1px;
    width: 14.3%;
}

.calendar td a {
    display: block;
    color: #1C94C4;
    background-color: #F6F6F6;
    border: 1px solid #CCC;
    text-decoration: none;
    padding: 0.2em;
}

.calendar td a:hover {
    color: #C77405;
    background-color: #FDF5CE;
    border: 1px solid #FBCB09;
}

.calendar td.today a {
    background-color: #FFF0A5;
    border: 1px solid #FED22F;
    color: #363636;
}
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
























































































































































































































Deleted src/www/admin/static/scripts/datepickr.js version [491ae371e7].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
/*
	datepickr - pick your date not your nose
	Copyright (c) 2010 josh.salverda - 2012 bohwaz Apache License 2.0
	https://code.google.com/p/datepickr/
	http://dev.kd2.org/garradin/
*/

function datepickr(targetElement, userConfig) {

	var config = {
		fullCurrentMonth: true,
		dateFormat: 'F jS, Y',
		firstDayOfWeek: 1,
		weekdays: ['Sun', 'Mon', 'Tues', 'Wednes', 'Thurs', 'Fri', 'Satur'],
		months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
		suffix: { 1: 'st', 2: 'nd', 3: 'rd', 21: 'st', 22: 'nd', 23: 'rd', 31: 'st' },
		defaultSuffix: 'th'
	},
	currentDate = new Date(),
	currentPosition = new Array(0,0),
	currentMaxRows = 4,
	// shortcuts to get date info
	get = {
		current: {
			year: function() {
				return currentDate.getFullYear();
			},
			month: {
				integer: function() {
					return currentDate.getMonth();
				},
				string: function(full) {
					var date = currentDate.getMonth();
					return monthToStr(date, full);
				}
			},
			day: function() {
				return currentDate.getDate();
			}
		},
		month: {
			integer: function() {
				return currentMonthView;
			},
			string: function(full) {
				var date = currentMonthView;
				return monthToStr(date, full);
			},
			numDays: function() {
				// checks to see if february is a leap year otherwise return the respective # of days
				return (get.month.integer() == 1 && !(currentYearView & 3) && (currentYearView % 1e2 || !(currentYearView % 4e2))) ? 29 : daysInMonth[get.month.integer()];
			}
		}
	},
	// variables used throughout the class
	daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
	element, container, body, month, prevMonth, nextMonth,
	currentYearView = get.current.year(),
	currentMonthView = get.current.month.integer(),
	i, x, buildCache = [];

	function build(nodeName, attributes, content) {
		var element;

		if(!(nodeName in buildCache)) {
			buildCache[nodeName] = document.createElement(nodeName);
		}

		element = buildCache[nodeName].cloneNode(false);

		if(attributes != null) {
			for(var attribute in attributes) {
				element[attribute] = attributes[attribute];
			}
		}

		if(content != null) {
			if(typeof(content) == 'object') {
				element.appendChild(content);
			} else {
				element.innerHTML = content;
			}
		}

		return element;
	}

	function monthToStr(date, full) {
		return ((full == true) ? config.months[date] : ((config.months[date].length > 3) ? config.months[date].substring(0, 3) : config.months[date]));
	}

	function formatDate(milliseconds) {
		var formattedDate = '',
		dateObj = new Date(milliseconds),
		format = {
			d: function() {
				var day = format.j();
				return (day < 10) ? '0' + day : day;
			},
			D: function() {
				return config.weekdays[format.w()].substring(0, 3);
			},
			j: function() {
				return dateObj.getDate();
			},
			l: function() {
				return config.weekdays[format.w()] + 'day';
			},
			S: function() {
				return config.suffix[format.j()] || config.defaultSuffix;
			},
			w: function() {
				return dateObj.getDay();
			},
			F: function() {
				return monthToStr(format.n(), true);
			},
			m: function() {
				var month = format.n() + 1;
				return (month < 10) ? '0' + month : month;
			},
			M: function() {
				return monthToStr(format.n(), false);
			},
			n: function() {
				return dateObj.getMonth();
			},
			Y: function() {
				return dateObj.getFullYear();
			},
			y: function() {
				return format.Y().substring(2, 4);
			}
		},
		formatPieces = config.dateFormat.split('');

		for(i = 0, x = formatPieces.length; i < x; i++) {
			formattedDate += format[formatPieces[i]] ? format[formatPieces[i]]() : formatPieces[i];
		}

		return formattedDate;
	}

	function handleMonthClick() {
		// if we go too far into the past
		if(currentMonthView < 0) {
			currentYearView--;

			// start our month count at 11 (11 = december)
			currentMonthView = 11;
		}

		// if we go too far into the future
		if(currentMonthView > 11) {
			currentYearView++;

			// restart our month count (0 = january)
			currentMonthView = 0;
		}

		month.innerHTML = get.month.string(config.fullCurrentMonth) + ' ' + currentYearView;

		// rebuild the calendar
		while(body.hasChildNodes()){
			body.removeChild(body.lastChild);
		}
		body.appendChild(buildCalendar());
		bindDayLinks();

		return false;
	}

	function bindMonthLinks() {
		prevMonth.onclick = function() {
			currentMonthView--;
			return handleMonthClick();
		}

		nextMonth.onclick = function() {
			currentMonthView++;
			return handleMonthClick();
		}
	}

	// our link binding function
	function bindDayLinks() {
		var days = body.getElementsByTagName('a');

		for(i = 0, x = days.length; i < x; i++) {
			days[i].onclick = function() {
				currentDate = new Date(currentYearView, currentMonthView, this.innerHTML);
				element.value = formatDate(currentDate.getTime());
				element.onchange(element);
				close();
				return false;
			}
		}
	}

	function buildWeekdays() {
		var html = document.createDocumentFragment();
		// write out the names of each week day
		for(i = 0, x = config.weekdays.length; i < x; i++) {
			html.appendChild(build('th', {}, config.weekdays[i].substring(0, 2)));
		}
		return html;
	}

	function buildCalendar() {
		// get the first day of the month we are currently viewing
		var firstOfMonth = new Date(currentYearView, currentMonthView, config.firstDayOfWeek).getDay(),
		// get the total number of days in the month we are currently viewing
		numDays = get.month.numDays(),
		// declare our day counter
		dayCount = 0,
		weekCount = 0,
		html = document.createDocumentFragment(),
		row = build('tr');

		// print out previous month's "days"
		for(i = 1; i <= firstOfMonth; i++) {
			row.appendChild(build('td', {}, ''));
			dayCount++;
		}

		for(i = 1; i <= numDays; i++) {
			// if we have reached the end of a week, wrap to the next line
			if(dayCount == 7) {
				html.appendChild(row);
				row = build('tr');
				dayCount = 0;
				weekCount++;
			}

			// output the text that goes inside each td
			// if the day is the current day, add a class of "today"
			var today = (i == get.current.day() && currentMonthView == get.current.month.integer() && currentYearView == get.current.year());
			if (today)
			{
				currentPosition = [weekCount+1, dayCount];
			}
			row.appendChild(build('td', { className: today ? 'today' : '' }, build('a', { href: 'javascript:void(0)' }, i)));
			dayCount++;
		}

		// if we haven't finished at the end of the week, start writing out the "days" for the next month
		for(i = 1; i <= (7 - dayCount); i++) {
			row.appendChild(build('td', {}, ''));
		}

		html.appendChild(row);

		currentMaxRows = weekCount+1;

		return html;
	}

	function open() {
		element.onkeyup = element.onclick = null;

		document.onmousedown = function(e) {
			e = e || window.event;
			var target = e.target || e.srcElement;

			var parentNode = target.parentNode;
			if(target != element && parentNode != container) {
				while(parentNode != container) {
					parentNode = parentNode.parentNode;
					if(parentNode == null) {
						close();
						break;
					}
				}
			}

			if (target == element)
			{
				close(true);
			}

			e.preventDefault();
			return false;
		}

		document.onkeyup = function(e) {
			var k = e.keyCode || e.which;

			// Esc key pressed
			if (k == 27)
			{
				close();
			}
			else if ((k >= 37 && k <= 40) || k == 33 || k == 34 || k == 32 || k == 40)
			{
				// Handled in onkeypress
			}
			else if (e.target == element && element.value.match(/^\d+\/\d+\/\d{4}$/))
			{
				parseInputValue();
				handleMonthClick();
			}
		};

		document.onkeypress = function(e) {
			var k = e.keyCode || e.which;

			if (k == 33) // PgUp
			{
				e.preventDefault();
				currentMonthView--;
				return handleMonthClick();
			}
			else if (k == 34) // PgDn
			{
				e.preventDefault();
				currentMonthView++;
				return handleMonthClick();
			}
			else if (k >= 37 && k <= 40) // Arrows
			{
				e.preventDefault();
				var pos = currentPosition.slice();
				if (k == 37) { // left
					if (pos[1] == 0) return;
					pos[1]--;
				}
				else if (k == 38) { // up
					if (pos[0] <= 1) return;
					pos[0]--;
				}
				else if (k == 39) { // right
					if (pos[1] == 6) return;
					pos[1]++;
				}
				else { // down
					if (pos[0] == currentMaxRows) return;
					pos[0]++;
				}

				var table = container.getElementsByTagName('table')[0];
				var row = table.getElementsByTagName('td')[pos[0]*7+pos[1]-7];

				if (row.innerHTML == "") return;

				table.getElementsByTagName('td')[currentPosition[0]*7+currentPosition[1]-7].className = '';
				row.className = 'today';

				currentPosition = pos;
				currentDate = new Date(currentYearView, currentMonthView, row.firstChild.innerHTML);

				return false;
			}
			else if (k == 13 || k == 32)
			{
				element.value = formatDate(currentDate.getTime());
				element.onchange(element);
				close();
				e.preventDefault();
				return false;
			}
		}

		handleMonthClick();
		container.className = 'calendar';
		parseInputValue();
		handleMonthClick();
		container.focus();
	}

	function close(no_reopen = false) {
		document.onmousedown = null;
		document.onkeypress = null;
		container.className = 'calendar hidden';
		element.onclick = function (e) {
			if (no_reopen) {
				no_reopen = false;
				return;
			}

			open();
		};

		element.onkeyup = function (e) {
			var k = e.keyCode || e.which;
			var c = String.fromCharCode(e.charCode || e.keyCode);

			if (k == 40)
			{
				open();
			}
			else if (c.match(/[0-9\/]/) && element.value.match(/^\d{2}\/\d{2}\/\d{4}$/))
			{
				open();
			}
		};
	}

	function parseInputValue() {
		if (element.value)
		{
			var d = element.value.split('/').reverse();
			currentDate = new Date(parseInt(d[0], 10), parseInt(d[1], 10) - 1, parseInt(d[2], 10), 0, 0, 0, 0);
			currentYearView = get.current.year();
			currentMonthView = get.current.month.integer();
		}
	}

	function initialise(userConfig) {
		if(userConfig) {
			for(var key in userConfig) {
				if(config.hasOwnProperty(key)) {
					config[key] = userConfig[key];
				}
			}
		}

		parseInputValue();
		container = build('div', { className: 'calendar hidden' });
//		container.style.cssText = 'display: none; position: absolute; z-index: 9999;';

		var months = build('div', { className: 'months' });
		prevMonth = build('span', { className: 'prev-month' }, build('a', { href: '#' }, '&lt;'));
		nextMonth = build('span', { className: 'next-month' }, build('a', { href: '#' }, '&gt;'));
		month = build('span', { className: 'current-month' }, get.month.string(config.fullCurrentMonth) + ' ' + currentYearView);

		months.appendChild(prevMonth);
		months.appendChild(nextMonth);
		months.appendChild(month);

		var calendar = build('table', {}, build('thead', {}, build('tr', { className: 'weekdays' }, buildWeekdays())));
		body = build('tbody', {}, buildCalendar());

		calendar.appendChild(body);

		container.appendChild(months);
		container.appendChild(calendar);

		element.parentNode.style.position = 'relative';
		element.parentNode.appendChild(container);

		bindMonthLinks();

		element.onfocus = open;
		element.onblur = close;
	}

	return (function() {
		element = typeof(targetElement) == 'string' ? document.getElementById(targetElement) : targetElement;
		initialise(userConfig);
	})();
}

// Add-on for HTML5 input type="date" fallback

(function() {
	var config_fr = {
		fullCurrentMonth: true,
		dateFormat: 'd/m/Y',
		firstDayOfWeek: 0,
		weekdays: ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'],
		months: ['Janvier', 'FΓ©vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'AoΓ»t', 'Septembre', 'Octobre', 'Novembre', 'DΓ©cembre'],
		suffix: { 1: 'er' },
		defaultSuffix: ''
	};

	function dateInputFallback()
	{
		var inputs = document.getElementsByTagName('input');
		var length = inputs.length;
		var enabled = false;

		for (i = 0; i < inputs.length; i++)
		{
			if (inputs[i].getAttribute('type') == 'date')
			{
				var new_input = inputs[i].cloneNode(true);
				inputs[i].type = 'hidden';
				inputs[i].removeAttribute('pattern');
				inputs[i].removeAttribute('id');
				inputs[i].removeAttribute('required');
				
				new_input.removeAttribute('name');
				new_input.setAttribute('type', 'text');
				new_input.className += ' date';
				new_input.size = 10;
				new_input.maxlength = 10;
				new_input.value = inputs[i].value.split('-').reverse().join('/');
				new_input.setAttribute('pattern', '([012][0-9]|3[01])/(0[0-9]|1[0-2])/[12][0-9]{3}');
				
				new_input.onchange = function ()
				{
					if (this.value.match(/\d{2}\/\d{2}\/\d{4}/))
						this.nextSibling.value = this.value.split('/').reverse().join('-');
					else
						this.nextSibling.value = this.value;
				};

				inputs[i].parentNode.insertBefore(new_input, inputs[i]);
				new datepickr(new_input, config_fr);
			}
		}
	}

	dateInputFallback();
} () );
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<


















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Modified src/www/admin/static/scripts/global.js from [e3967bb322] to [be3bfcf214].

1
2
3
4
5
6

7
8
9
10
11
12
13
..
71
72
73
74
75
76
77
78





79
80
81

82
83
84
85
86
87
88
89
...
186
187
188
189
190
191
192


193

194
195











196
197
198
199
200
201
202
203
(function () {
	window.g = window.garradin = {
		url: window.location.href.replace(/\/admin\/.*?$/, ''),
		admin_url: window.location.href.replace(/\/admin\/.*?$/, '/admin/'),
		static_url: window.location.href.replace(/\/admin\/.*?$/, '/admin/static/'),
		version: document.head.querySelector('script').src.match(/\?(.*)$/)[1]

	};

	window.$ = function(selector) {
		if (!selector.match(/^[.#]?[a-z0-9_-]+$/i))
		{
			return document.querySelectorAll(selector);
		}
................................................................................
			else
				elements[i].classList.remove('hidden');
		}

		return true;
	};

	g.script = function (file) {





		var script = document.createElement('script');
		script.type = 'text/javascript';
		script.src = this.static_url + file + '?' + this.version;

		return document.head.appendChild(script);
	};

	g.style = function (file) {
		var link = document.createElement('link');
		link.rel = 'stylesheet';
		link.type = 'text/css';
		link.href = this.static_url + file + '?' + this.version;
................................................................................
			field.selectionStart = field.selectionEnd = pos;
		};

		field.parentNode.insertBefore(show_password, field.nextSibling);
	};

	g.enhanceDateField = (input) => {


		var btn = document.createElement('button');

		btn.className = 'icn-btn';
		btn.innerHTML = 'Cal'; // FIXME: calendar icon











		input.parentNode.insertBefore(btn, input.nextSibling);
	};

	g.current_list_input = null;

		// SΓ©lecteurs de listes
	g.onload(() => {
		var inputs = $('form .input-list button');





|
>







 







|
>
>
>
>
>
|


>
|







 







>
>

>

<
>
>
>
>
>
>
>
>
>
>
>
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
...
193
194
195
196
197
198
199
200
201
202
203
204

205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
(function () {
	window.g = window.garradin = {
		url: window.location.href.replace(/\/admin\/.*?$/, ''),
		admin_url: window.location.href.replace(/\/admin\/.*?$/, '/admin/'),
		static_url: window.location.href.replace(/\/admin\/.*?$/, '/admin/static/'),
		version: document.head.querySelector('script').src.match(/\?(.*)$/)[1],
		loaded: {}
	};

	window.$ = function(selector) {
		if (!selector.match(/^[.#]?[a-z0-9_-]+$/i))
		{
			return document.querySelectorAll(selector);
		}
................................................................................
			else
				elements[i].classList.remove('hidden');
		}

		return true;
	};

	g.script = function (file, callback) {
		if (file in g.loaded) {
			callback();
			return;
		}

		var script = g.loaded[file] = document.createElement('script');
		script.type = 'text/javascript';
		script.src = this.static_url + file + '?' + this.version;
		script.onload = callback;
		document.head.appendChild(script);
	};

	g.style = function (file) {
		var link = document.createElement('link');
		link.rel = 'stylesheet';
		link.type = 'text/css';
		link.href = this.static_url + file + '?' + this.version;
................................................................................
			field.selectionStart = field.selectionEnd = pos;
		};

		field.parentNode.insertBefore(show_password, field.nextSibling);
	};

	g.enhanceDateField = (input) => {
		var span = document.createElement('span');
		span.className = 'datepicker-parent';
		var btn = document.createElement('button');
		var cal;
		btn.className = 'icn-btn';

		btn.setAttribute('data-icon', 'πŸ“…');
		btn.type = 'button';
		btn.onclick = () => {
			g.script('scripts/datepicker2.js', () => {
				if (null == cal) {
					cal = new DatePicker(btn, input, {lang: 'fr', format: 1});
					cal.open();
				}
			});
		};
		span.appendChild(btn);
		input.parentNode.insertBefore(span, input.nextSibling);
	};

	g.current_list_input = null;

		// SΓ©lecteurs de listes
	g.onload(() => {
		var inputs = $('form .input-list button');