@ntlab/ntjs-assets 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/assets/js/jquery/jquery.js +10909 -10881
  2. package/assets/js/jquery/jquery.min.js +2 -2
  3. package/assets/js/jquery/jquery.slim.js +8810 -0
  4. package/assets/js/jquery/jquery.slim.min.js +2 -0
  5. package/assets/js/jquery/jquery.slim.min.map +1 -0
  6. package/assets/js/semantic-ui/components/accordion.css +177 -37
  7. package/assets/js/semantic-ui/components/accordion.js +10 -4
  8. package/assets/js/semantic-ui/components/accordion.min.css +2 -2
  9. package/assets/js/semantic-ui/components/accordion.min.js +3 -3
  10. package/assets/js/semantic-ui/components/ad.css +4 -4
  11. package/assets/js/semantic-ui/components/ad.min.css +2 -2
  12. package/assets/js/semantic-ui/components/api.js +93 -34
  13. package/assets/js/semantic-ui/components/api.min.js +3 -3
  14. package/assets/js/semantic-ui/components/breadcrumb.css +1 -1
  15. package/assets/js/semantic-ui/components/breadcrumb.min.css +1 -1
  16. package/assets/js/semantic-ui/components/button.css +204 -157
  17. package/assets/js/semantic-ui/components/button.min.css +2 -2
  18. package/assets/js/semantic-ui/components/calendar.css +18 -1
  19. package/assets/js/semantic-ui/components/calendar.js +201 -83
  20. package/assets/js/semantic-ui/components/calendar.min.css +2 -2
  21. package/assets/js/semantic-ui/components/calendar.min.js +3 -3
  22. package/assets/js/semantic-ui/components/card.css +754 -117
  23. package/assets/js/semantic-ui/components/card.min.css +2 -2
  24. package/assets/js/semantic-ui/components/checkbox.css +93 -92
  25. package/assets/js/semantic-ui/components/checkbox.js +21 -14
  26. package/assets/js/semantic-ui/components/checkbox.min.css +2 -2
  27. package/assets/js/semantic-ui/components/checkbox.min.js +3 -3
  28. package/assets/js/semantic-ui/components/comment.css +12 -12
  29. package/assets/js/semantic-ui/components/comment.min.css +2 -2
  30. package/assets/js/semantic-ui/components/container.css +98 -4
  31. package/assets/js/semantic-ui/components/container.min.css +2 -2
  32. package/assets/js/semantic-ui/components/dimmer.css +33 -18
  33. package/assets/js/semantic-ui/components/dimmer.js +25 -10
  34. package/assets/js/semantic-ui/components/dimmer.min.css +2 -2
  35. package/assets/js/semantic-ui/components/dimmer.min.js +3 -3
  36. package/assets/js/semantic-ui/components/divider.css +31 -31
  37. package/assets/js/semantic-ui/components/divider.min.css +2 -2
  38. package/assets/js/semantic-ui/components/dropdown.css +101 -51
  39. package/assets/js/semantic-ui/components/dropdown.js +250 -205
  40. package/assets/js/semantic-ui/components/dropdown.min.css +2 -2
  41. package/assets/js/semantic-ui/components/dropdown.min.js +3 -3
  42. package/assets/js/semantic-ui/components/embed.css +5 -5
  43. package/assets/js/semantic-ui/components/embed.js +14 -10
  44. package/assets/js/semantic-ui/components/embed.min.css +2 -2
  45. package/assets/js/semantic-ui/components/embed.min.js +3 -3
  46. package/assets/js/semantic-ui/components/emoji.css +10799 -8841
  47. package/assets/js/semantic-ui/components/emoji.min.css +1 -1
  48. package/assets/js/semantic-ui/components/feed.css +29 -29
  49. package/assets/js/semantic-ui/components/feed.min.css +2 -2
  50. package/assets/js/semantic-ui/components/flag.css +1021 -915
  51. package/assets/js/semantic-ui/components/flag.min.css +2 -2
  52. package/assets/js/semantic-ui/components/flyout.css +592 -0
  53. package/assets/js/semantic-ui/components/flyout.js +1530 -0
  54. package/assets/js/semantic-ui/components/flyout.min.css +9 -0
  55. package/assets/js/semantic-ui/components/flyout.min.js +11 -0
  56. package/assets/js/semantic-ui/components/form.css +160 -83
  57. package/assets/js/semantic-ui/components/form.js +48 -42
  58. package/assets/js/semantic-ui/components/form.min.css +2 -2
  59. package/assets/js/semantic-ui/components/form.min.js +3 -3
  60. package/assets/js/semantic-ui/components/grid.css +25 -21
  61. package/assets/js/semantic-ui/components/grid.min.css +2 -2
  62. package/assets/js/semantic-ui/components/header.css +6 -4
  63. package/assets/js/semantic-ui/components/header.min.css +2 -2
  64. package/assets/js/semantic-ui/components/icon.css +2110 -2061
  65. package/assets/js/semantic-ui/components/icon.min.css +2 -2
  66. package/assets/js/semantic-ui/components/image.css +1 -1
  67. package/assets/js/semantic-ui/components/image.min.css +1 -1
  68. package/assets/js/semantic-ui/components/input.css +759 -22
  69. package/assets/js/semantic-ui/components/input.min.css +2 -2
  70. package/assets/js/semantic-ui/components/item.css +17 -17
  71. package/assets/js/semantic-ui/components/item.min.css +2 -2
  72. package/assets/js/semantic-ui/components/label.css +72 -68
  73. package/assets/js/semantic-ui/components/label.min.css +2 -2
  74. package/assets/js/semantic-ui/components/list.css +31 -31
  75. package/assets/js/semantic-ui/components/list.min.css +2 -2
  76. package/assets/js/semantic-ui/components/loader.css +352 -352
  77. package/assets/js/semantic-ui/components/loader.min.css +2 -2
  78. package/assets/js/semantic-ui/components/menu.css +108 -76
  79. package/assets/js/semantic-ui/components/menu.min.css +1 -1
  80. package/assets/js/semantic-ui/components/message.css +43 -43
  81. package/assets/js/semantic-ui/components/message.min.css +2 -2
  82. package/assets/js/semantic-ui/components/modal.css +37 -6
  83. package/assets/js/semantic-ui/components/modal.js +188 -84
  84. package/assets/js/semantic-ui/components/modal.min.css +2 -2
  85. package/assets/js/semantic-ui/components/modal.min.js +3 -3
  86. package/assets/js/semantic-ui/components/nag.css +1 -1
  87. package/assets/js/semantic-ui/components/nag.js +3 -3
  88. package/assets/js/semantic-ui/components/nag.min.css +1 -1
  89. package/assets/js/semantic-ui/components/nag.min.js +3 -3
  90. package/assets/js/semantic-ui/components/placeholder.css +33 -33
  91. package/assets/js/semantic-ui/components/placeholder.min.css +2 -2
  92. package/assets/js/semantic-ui/components/popup.css +103 -105
  93. package/assets/js/semantic-ui/components/popup.js +17 -23
  94. package/assets/js/semantic-ui/components/popup.min.css +2 -2
  95. package/assets/js/semantic-ui/components/popup.min.js +3 -3
  96. package/assets/js/semantic-ui/components/progress.css +1 -1
  97. package/assets/js/semantic-ui/components/progress.js +6 -3
  98. package/assets/js/semantic-ui/components/progress.min.css +1 -1
  99. package/assets/js/semantic-ui/components/progress.min.js +3 -3
  100. package/assets/js/semantic-ui/components/rail.css +1 -1
  101. package/assets/js/semantic-ui/components/rail.min.css +1 -1
  102. package/assets/js/semantic-ui/components/rating.css +7 -46
  103. package/assets/js/semantic-ui/components/rating.js +8 -4
  104. package/assets/js/semantic-ui/components/rating.min.css +2 -2
  105. package/assets/js/semantic-ui/components/rating.min.js +3 -3
  106. package/assets/js/semantic-ui/components/reset.css +5 -4
  107. package/assets/js/semantic-ui/components/reset.min.css +2 -2
  108. package/assets/js/semantic-ui/components/reveal.css +1 -1
  109. package/assets/js/semantic-ui/components/reveal.min.css +1 -1
  110. package/assets/js/semantic-ui/components/search.css +6 -6
  111. package/assets/js/semantic-ui/components/search.js +48 -21
  112. package/assets/js/semantic-ui/components/search.min.css +2 -2
  113. package/assets/js/semantic-ui/components/search.min.js +3 -3
  114. package/assets/js/semantic-ui/components/segment.css +118 -34
  115. package/assets/js/semantic-ui/components/segment.min.css +2 -2
  116. package/assets/js/semantic-ui/components/shape.css +1 -1
  117. package/assets/js/semantic-ui/components/shape.js +4 -4
  118. package/assets/js/semantic-ui/components/shape.min.css +1 -1
  119. package/assets/js/semantic-ui/components/shape.min.js +3 -3
  120. package/assets/js/semantic-ui/components/sidebar.css +23 -9
  121. package/assets/js/semantic-ui/components/sidebar.js +141 -44
  122. package/assets/js/semantic-ui/components/sidebar.min.css +2 -2
  123. package/assets/js/semantic-ui/components/sidebar.min.js +3 -3
  124. package/assets/js/semantic-ui/components/site.css +139 -42
  125. package/assets/js/semantic-ui/components/site.js +2 -2
  126. package/assets/js/semantic-ui/components/site.min.css +2 -2
  127. package/assets/js/semantic-ui/components/site.min.js +3 -3
  128. package/assets/js/semantic-ui/components/slider.css +17 -17
  129. package/assets/js/semantic-ui/components/slider.js +79 -64
  130. package/assets/js/semantic-ui/components/slider.min.css +1 -1
  131. package/assets/js/semantic-ui/components/slider.min.js +3 -3
  132. package/assets/js/semantic-ui/components/state.js +3 -3
  133. package/assets/js/semantic-ui/components/state.min.js +3 -3
  134. package/assets/js/semantic-ui/components/statistic.css +4 -4
  135. package/assets/js/semantic-ui/components/statistic.min.css +2 -2
  136. package/assets/js/semantic-ui/components/step.css +32 -32
  137. package/assets/js/semantic-ui/components/step.min.css +2 -2
  138. package/assets/js/semantic-ui/components/sticky.css +1 -1
  139. package/assets/js/semantic-ui/components/sticky.js +31 -20
  140. package/assets/js/semantic-ui/components/sticky.min.css +1 -1
  141. package/assets/js/semantic-ui/components/sticky.min.js +3 -3
  142. package/assets/js/semantic-ui/components/tab.css +5 -5
  143. package/assets/js/semantic-ui/components/tab.js +25 -7
  144. package/assets/js/semantic-ui/components/tab.min.css +2 -2
  145. package/assets/js/semantic-ui/components/tab.min.js +3 -3
  146. package/assets/js/semantic-ui/components/table.css +1684 -272
  147. package/assets/js/semantic-ui/components/table.min.css +2 -2
  148. package/assets/js/semantic-ui/components/text.css +1 -1
  149. package/assets/js/semantic-ui/components/text.min.css +1 -1
  150. package/assets/js/semantic-ui/components/toast.css +49 -1
  151. package/assets/js/semantic-ui/components/toast.js +68 -34
  152. package/assets/js/semantic-ui/components/toast.min.css +2 -2
  153. package/assets/js/semantic-ui/components/toast.min.js +3 -3
  154. package/assets/js/semantic-ui/components/transition.css +1 -1
  155. package/assets/js/semantic-ui/components/transition.js +27 -22
  156. package/assets/js/semantic-ui/components/transition.min.css +1 -1
  157. package/assets/js/semantic-ui/components/transition.min.js +3 -3
  158. package/assets/js/semantic-ui/components/visibility.js +5 -5
  159. package/assets/js/semantic-ui/components/visibility.min.js +3 -3
  160. package/assets/js/semantic-ui/semantic.css +41970 -34600
  161. package/assets/js/semantic-ui/semantic.js +2859 -756
  162. package/assets/js/semantic-ui/semantic.min.css +3 -3
  163. package/assets/js/semantic-ui/semantic.min.js +3 -3
  164. package/assets/js/semantic-ui/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  165. package/assets/js/semantic-ui/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  166. package/assets/js/semantic-ui/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  167. package/assets/js/semantic-ui/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  168. package/assets/js/semantic-ui/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  169. package/assets/js/semantic-ui/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  170. package/assets/js/semantic-ui/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  171. package/assets/js/semantic-ui/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  172. package/assets/js/semantic-ui/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  173. package/assets/js/semantic-ui/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  174. package/assets/js/semantic-ui/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  175. package/assets/js/semantic-ui/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  176. package/assets/js/semantic-ui/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  177. package/assets/js/semantic-ui/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  178. package/assets/js/semantic-ui/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  179. package/assets/js/semantic-ui/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  180. package/assets/js/semantic-ui/themes/default/assets/fonts/brand-icons.woff +0 -0
  181. package/assets/js/semantic-ui/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  182. package/assets/js/semantic-ui/themes/default/assets/fonts/icons.woff +0 -0
  183. package/assets/js/semantic-ui/themes/default/assets/fonts/icons.woff2 +0 -0
  184. package/assets/js/semantic-ui/themes/default/assets/fonts/outline-icons.woff +0 -0
  185. package/assets/js/semantic-ui/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  186. package/assets/js/semantic-ui/themes/famfamfam/assets/images/flags.png +0 -0
  187. package/assets/js/socket.io/socket.io.esm.min.js +2 -2
  188. package/assets/js/socket.io/socket.io.esm.min.js.map +1 -1
  189. package/assets/js/socket.io/socket.io.js +232 -102
  190. package/assets/js/socket.io/socket.io.js.map +1 -1
  191. package/assets/js/socket.io/socket.io.min.js +2 -2
  192. package/assets/js/socket.io/socket.io.min.js.map +1 -1
  193. package/assets/js/socket.io/socket.io.msgpack.min.js +2 -2
  194. package/assets/js/socket.io/socket.io.msgpack.min.js.map +1 -1
  195. package/cdn.json +3 -3
  196. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.8.8 - Calendar
2
+ * # Fomantic-UI 2.9.0 - Calendar
3
3
  * http://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -122,7 +122,7 @@ $.fn.calendar = function(parameters) {
122
122
  module.set.maxDate($module.data(metadata.maxDate));
123
123
  }
124
124
  module.setting('type', module.get.type());
125
- module.setting('on', settings.on || ($input.length ? 'focus' : 'click'));
125
+ module.setting('on', settings.on || 'click');
126
126
  },
127
127
  popup: function () {
128
128
  if (settings.inline) {
@@ -153,7 +153,10 @@ $.fn.calendar = function(parameters) {
153
153
  module.refreshTooltips();
154
154
  return settings.onVisible.apply($container, arguments);
155
155
  };
156
- var onHidden = settings.onHidden;
156
+ var onHidden = function () {
157
+ module.blur();
158
+ return settings.onHidden.apply($container, arguments)
159
+ }
157
160
  if (!$input.length) {
158
161
  //no input, $container has to handle focus/blur
159
162
  $container.attr('tabindex', '0');
@@ -162,10 +165,6 @@ $.fn.calendar = function(parameters) {
162
165
  module.focus();
163
166
  return settings.onVisible.apply($container, arguments);
164
167
  };
165
- onHidden = function () {
166
- module.blur();
167
- return settings.onHidden.apply($container, arguments);
168
- };
169
168
  }
170
169
  var onShow = function () {
171
170
  //reset the focus date onShow
@@ -323,7 +322,7 @@ $.fn.calendar = function(parameters) {
323
322
  var headerDate = isYear || isMonth ? new Date(year, 0, 1) :
324
323
  isDay ? new Date(year, month, 1) : new Date(year, month, day, hour, minute);
325
324
  var headerText = $('<span/>').addClass(className.link).appendTo(cell);
326
- headerText.text(formatter.header(headerDate, mode, settings));
325
+ headerText.text(module.helper.dateFormat(formatter[mode+'Header'], headerDate));
327
326
  var newMode = isMonth ? (settings.disableYear ? 'day' : 'year') :
328
327
  isDay ? (settings.disableMonth ? 'year' : 'month') : 'day';
329
328
  headerText.data(metadata.mode, newMode);
@@ -371,7 +370,7 @@ $.fn.calendar = function(parameters) {
371
370
  isHour ? new Date(year, month, day, i) : new Date(year, month, day, hour, i * settings.minTimeGap);
372
371
  var cellText = isYear ? i :
373
372
  isMonth ? settings.text.monthsShort[i] : isDay ? cellDate.getDate() :
374
- formatter.time(cellDate, settings, true);
373
+ module.helper.dateFormat(formatter.cellTime,cellDate);
375
374
  cell = $('<td/>').addClass(className.cell).appendTo(row);
376
375
  cell.text(cellText);
377
376
  cell.data(metadata.date, cellDate);
@@ -390,6 +389,19 @@ $.fn.calendar = function(parameters) {
390
389
  cell.attr("data-variation", disabledDate[metadata.variation]);
391
390
  }
392
391
  }
392
+ if (mode === 'hour') {
393
+ var disabledHour = module.helper.findHourAsObject(cellDate, mode, settings.disabledHours);
394
+ if (disabledHour !== null && disabledHour[metadata.message]) {
395
+ cell.attr("data-tooltip", disabledHour[metadata.message]);
396
+ cell.attr("data-position", disabledHour[metadata.position] || tooltipPosition);
397
+ if(disabledHour[metadata.inverted] || (isInverted && disabledHour[metadata.inverted] === undefined)) {
398
+ cell.attr("data-inverted", '');
399
+ }
400
+ if(disabledHour[metadata.variation]) {
401
+ cell.attr("data-variation", disabledHour[metadata.variation]);
402
+ }
403
+ }
404
+ }
393
405
  } else {
394
406
  eventDate = module.helper.findDayAsObject(cellDate, mode, settings.eventDates);
395
407
  if (eventDate !== null) {
@@ -490,7 +502,7 @@ $.fn.calendar = function(parameters) {
490
502
  var winWidth = $(window).width();
491
503
  $container.find('td[data-position]').each(function () {
492
504
  var cell = $(this);
493
- var tooltipWidth = window.getComputedStyle(cell[0], ':after').width.replace(/[^0-9\.]/g,'');
505
+ var tooltipWidth = window.getComputedStyle(cell[0], '::after').width.replace(/[^0-9\.]/g,'');
494
506
  var tooltipPosition = cell.attr('data-position');
495
507
  // use a fallback width of 250 (calendar width) for IE/Edge (which return "auto")
496
508
  var calcPosition = (winWidth - cell.width() - (parseInt(tooltipWidth,10) || 250)) > cell.offset().left ? 'right' : 'left';
@@ -581,15 +593,15 @@ $.fn.calendar = function(parameters) {
581
593
  },
582
594
  keydown: function (event) {
583
595
  var keyCode = event.which;
584
- if (keyCode === 27 || keyCode === 9) {
585
- //esc || tab
596
+ if (keyCode === 9) {
597
+ //tab
586
598
  module.popup('hide');
587
599
  }
588
600
 
589
601
  if (module.popup('is visible')) {
602
+ var mode = module.get.mode();
590
603
  if (keyCode === 37 || keyCode === 38 || keyCode === 39 || keyCode === 40) {
591
604
  //arrow keys
592
- var mode = module.get.mode();
593
605
  var bigIncrement = mode === 'day' ? 7 : mode === 'hour' ? 4 : mode === 'minute' ? timeGap['column'] : 3;
594
606
  var increment = keyCode === 37 ? -1 : keyCode === 38 ? -bigIncrement : keyCode == 39 ? 1 : bigIncrement;
595
607
  increment *= mode === 'minute' ? settings.minTimeGap : 1;
@@ -608,14 +620,18 @@ $.fn.calendar = function(parameters) {
608
620
  }
609
621
  } else if (keyCode === 13) {
610
622
  //enter
611
- var mode = module.get.mode();
612
623
  var date = module.get.focusDate();
613
624
  if (date && !settings.isDisabled(date, mode) && !module.helper.isDisabled(date, mode) && module.helper.isEnabled(date, mode)) {
614
- module.selectDate(date);
625
+ if (settings.onSelect.call(element, date, module.get.mode()) !== false) {
626
+ module.selectDate(date);
627
+ }
615
628
  }
616
629
  //disable form submission:
617
630
  event.preventDefault();
618
631
  event.stopPropagation();
632
+ } else if (keyCode === 27) {
633
+ module.popup('hide');
634
+ event.stopPropagation();
619
635
  }
620
636
  }
621
637
 
@@ -637,7 +653,7 @@ $.fn.calendar = function(parameters) {
637
653
  $container.removeClass(className.active);
638
654
  if (settings.formatInput) {
639
655
  var date = module.get.date();
640
- var text = formatter.datetime(date, settings);
656
+ var text = module.helper.dateFormat(formatter[settings.type], date);
641
657
  $input.val(text);
642
658
  }
643
659
  if(selectionComplete){
@@ -708,6 +724,9 @@ $.fn.calendar = function(parameters) {
708
724
  return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
709
725
  }();
710
726
  },
727
+ formattedDate: function(format, date) {
728
+ return module.helper.dateFormat(format || formatter[settings.type], date || module.get.date());
729
+ },
711
730
  date: function () {
712
731
  return module.helper.sanitiseDate($module.data(metadata.date)) || null;
713
732
  },
@@ -732,7 +751,7 @@ $.fn.calendar = function(parameters) {
732
751
  return $module.data(metadata.maxDate) || null;
733
752
  },
734
753
  monthOffset: function () {
735
- return $module.data(metadata.monthOffset) || 0;
754
+ return $module.data(metadata.monthOffset) || settings.monthOffset || 0;
736
755
  },
737
756
  mode: function () {
738
757
  //only returns valid modes for the current settings
@@ -786,7 +805,7 @@ $.fn.calendar = function(parameters) {
786
805
  return null;
787
806
  }
788
807
  if (!(selector instanceof $)) {
789
- selector = $(selector).first();
808
+ selector = $(document).find(selector).first();
790
809
  }
791
810
  //assume range related calendars are using the same namespace
792
811
  return selector.data(moduleNamespace);
@@ -801,7 +820,7 @@ $.fn.calendar = function(parameters) {
801
820
  date = module.helper.dateInRange(date);
802
821
 
803
822
  var mode = module.get.mode();
804
- var text = formatter.datetime(date, settings);
823
+ var text = module.helper.dateFormat(formatter[settings.type],date);
805
824
 
806
825
  if (fireChange && settings.onBeforeChange.call(element, date, text, mode) === false) {
807
826
  return false;
@@ -923,6 +942,7 @@ $.fn.calendar = function(parameters) {
923
942
  //if this is a range calendar, focus the container or input. This will open the popup from its event listeners.
924
943
  var endModule = module.get.calendarModule(settings.endCalendar);
925
944
  if (endModule) {
945
+ endModule.refresh();
926
946
  if (endModule.setting('on') !== 'focus') {
927
947
  endModule.popup('show');
928
948
  }
@@ -971,8 +991,62 @@ $.fn.calendar = function(parameters) {
971
991
  },
972
992
 
973
993
  helper: {
994
+ dateFormat: function(format,date) {
995
+ if (!(date instanceof Date)) {
996
+ return '';
997
+ }
998
+ if(typeof format === 'function') {
999
+ return format.call(module, date, settings);
1000
+ }
1001
+
1002
+ var D = date.getDate(),
1003
+ M = date.getMonth(),
1004
+ Y = date.getFullYear(),
1005
+ d = date.getDay(),
1006
+ H = date.getHours(),
1007
+ m = date.getMinutes(),
1008
+ s = date.getSeconds(),
1009
+ w = module.get.weekOfYear(Y,M,D+1-settings.firstDayOfWeek),
1010
+ h = H % 12 || 12,
1011
+ a = H < 12 ? settings.text.am.toLowerCase() : settings.text.pm.toLowerCase(),
1012
+ tokens = {
1013
+ D: D,
1014
+ DD: ('0'+D).slice(-2),
1015
+ M: M + 1,
1016
+ MM: ('0'+(M+1)).slice(-2),
1017
+ MMM: settings.text.monthsShort[M],
1018
+ MMMM: settings.text.months[M],
1019
+ Y: Y,
1020
+ YY: String(Y).slice(2),
1021
+ YYYY: Y,
1022
+ d: d,
1023
+ dd: settings.text.dayNamesShort[d].slice(0,2),
1024
+ ddd: settings.text.dayNamesShort[d],
1025
+ dddd: settings.text.dayNames[d],
1026
+ h: h,
1027
+ hh: ('0'+h).slice(-2),
1028
+ H: H,
1029
+ HH: ('0'+H).slice(-2),
1030
+ m: m,
1031
+ mm: ('0'+m).slice(-2),
1032
+ s: s,
1033
+ ss: ('0'+s).slice(-2),
1034
+ a: a,
1035
+ A: a.toUpperCase(),
1036
+ S: ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D % 100 - D % 10 !== 10) * D % 10],
1037
+ w: w,
1038
+ ww: ('0'+w).slice(-2)
1039
+ }
1040
+ ;
1041
+ return format.replace(settings.regExp.token, function (match) {
1042
+ if (match in tokens) {
1043
+ return tokens[match];
1044
+ }
1045
+ return match.slice(1, match.length - 1);
1046
+ });
1047
+ },
974
1048
  isDisabled: function(date, mode) {
975
- return (mode === 'day' || mode === 'month' || mode === 'year') && ((mode === 'day' && settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
1049
+ return (mode === 'day' || mode === 'month' || mode === 'year' || mode === 'hour') && (((mode === 'day' && settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
976
1050
  if(typeof d === 'string') {
977
1051
  d = module.helper.sanitiseDate(d);
978
1052
  }
@@ -1005,7 +1079,45 @@ $.fn.calendar = function(parameters) {
1005
1079
  }
1006
1080
  }
1007
1081
  }
1008
- }));
1082
+ })) || (mode === 'hour' && settings.disabledHours.some(function(d){
1083
+ if (typeof d === 'string') {
1084
+ d = module.helper.sanitiseDate(d);
1085
+ }
1086
+ if (d instanceof Date) {
1087
+ return module.helper.dateEqual(date, d, mode);
1088
+ } else if (typeof d === 'number') {
1089
+ return date.getHours() === d;
1090
+ }
1091
+ if (d !== null && typeof d === 'object') {
1092
+ var blocked = true;
1093
+
1094
+ if (d[metadata.date]) {
1095
+ if (d[metadata.date] instanceof Date) {
1096
+ blocked = module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]));
1097
+ } else if (Array.isArray(d[metadata.date])) {
1098
+ return d[metadata.date].some(function(idate) {
1099
+ blocked = module.helper.dateEqual(date, idate, mode);
1100
+ });
1101
+ }
1102
+ }
1103
+
1104
+ if (d[metadata.days]) {
1105
+ if (typeof d[metadata.days] === 'number') {
1106
+ blocked = date.getDay() == d[metadata.days];
1107
+ } else if (Array.isArray(d[metadata.days])) {
1108
+ blocked = d[metadata.days].indexOf(date.getDay()) > -1;
1109
+ }
1110
+ }
1111
+
1112
+ if (d[metadata.hours]) {
1113
+ if (typeof d[metadata.hours] === 'number') {
1114
+ return blocked && date.getHours() == d[metadata.hours];
1115
+ } else if (Array.isArray(d[metadata.hours])) {
1116
+ return blocked && d[metadata.hours].indexOf(date.getHours()) > -1;
1117
+ }
1118
+ }
1119
+ }
1120
+ })));
1009
1121
  },
1010
1122
  isEnabled: function(date, mode) {
1011
1123
  if (mode === 'day') {
@@ -1073,6 +1185,49 @@ $.fn.calendar = function(parameters) {
1073
1185
  }
1074
1186
  return null;
1075
1187
  },
1188
+ findHourAsObject: function(date, mode, hours) {
1189
+ if (mode === 'hour') {
1190
+ var d;
1191
+ var hourCheck = function(date, d) {
1192
+ if (d[metadata.hours]) {
1193
+ if (typeof d[metadata.hours] === 'number' && date.getHours() == d[metadata.hours]) {
1194
+ return d;
1195
+ } else if (Array.isArray(d[metadata.hours])) {
1196
+ if (d[metadata.hours].indexOf(date.getHours()) > -1) {
1197
+ return d;
1198
+ }
1199
+ }
1200
+ }
1201
+ }
1202
+ for (var i = 0; i < hours.length; i++) {
1203
+ d = hours[i];
1204
+ if (typeof d === 'number' && date.getHours() == d) {
1205
+ return null;
1206
+ } else if (d !== null && typeof d === 'object') {
1207
+ if (d[metadata.days] && hourCheck(date,d)) {
1208
+ if (typeof d[metadata.days] === 'number' && date.getDay() == d[metadata.days]) {
1209
+ return d;
1210
+ } else if (Array.isArray(d[metadata.days])) {
1211
+ if (d[metadata.days].indexOf(date.getDay()) > -1) {
1212
+ return d;
1213
+ }
1214
+ }
1215
+ } else if (d[metadata.date] && hourCheck(date,d)) {
1216
+ if (d[metadata.date] instanceof Date && module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]))) {
1217
+ return d;
1218
+ } else if (Array.isArray(d[metadata.date])) {
1219
+ if (d[metadata.date].some(function(idate) { return module.helper.dateEqual(date, idate, mode); })) {
1220
+ return d;
1221
+ }
1222
+ }
1223
+ } else if (hourCheck(date,d)) {
1224
+ return d;
1225
+ }
1226
+ }
1227
+ }
1228
+ }
1229
+ return null;
1230
+ },
1076
1231
  sanitiseDate: function (date) {
1077
1232
  if (!(date instanceof Date)) {
1078
1233
  date = parser.date('' + date, settings);
@@ -1257,7 +1412,7 @@ $.fn.calendar = function(parameters) {
1257
1412
  response
1258
1413
  ;
1259
1414
  passedArguments = passedArguments || queryArguments;
1260
- context = element || context;
1415
+ context = context || element;
1261
1416
  if (typeof query == 'string' && object !== undefined) {
1262
1417
  query = query.split(/[\. ]/);
1263
1418
  maxDepth = query.length - 1;
@@ -1333,14 +1488,14 @@ $.fn.calendar.settings = {
1333
1488
  silent: false,
1334
1489
  debug: false,
1335
1490
  verbose: false,
1336
- performance: false,
1491
+ performance: true,
1337
1492
 
1338
1493
  type : 'datetime', // picker type, can be 'datetime', 'date', 'time', 'month', or 'year'
1339
1494
  firstDayOfWeek : 0, // day for first day column (0 = Sunday)
1340
1495
  constantHeight : true, // add rows to shorter months to keep day calendar height consistent (6 rows)
1341
1496
  today : false, // show a 'today/now' button at the bottom of the calendar
1342
1497
  closable : true, // close the popup after selecting a date/time
1343
- monthFirst : true, // month before day when parsing/converting date from/to text
1498
+ monthFirst : true, // month before day when parsing date from text
1344
1499
  touchReadonly : true, // set input to readonly on touch devices
1345
1500
  inline : false, // create the calendar inline instead of inside a popup
1346
1501
  on : null, // when to show the popup (defaults to 'focus' for input, 'click' for others)
@@ -1348,7 +1503,6 @@ $.fn.calendar.settings = {
1348
1503
  startMode : false, // display mode to start in, can be 'year', 'month', 'day', 'hour', 'minute' (false = 'day')
1349
1504
  minDate : null, // minimum date/time that can be selected, dates/times before are disabled
1350
1505
  maxDate : null, // maximum date/time that can be selected, dates/times after are disabled
1351
- ampm : true, // show am/pm in time mode
1352
1506
  disableYear : false, // disable year selection mode
1353
1507
  disableMonth : false, // disable month selection mode
1354
1508
  disableMinute : false, // disable minute selection mode
@@ -1356,8 +1510,10 @@ $.fn.calendar.settings = {
1356
1510
  startCalendar : null, // jquery object or selector for another calendar that represents the start date of a date range
1357
1511
  endCalendar : null, // jquery object or selector for another calendar that represents the end date of a date range
1358
1512
  multiMonth : 1, // show multiple months when in 'day' mode
1513
+ monthOffset : 0, // position current month by offset when multimonth > 1
1359
1514
  minTimeGap : 5,
1360
- showWeekNumbers : null, // show Number of Week at the very first column of a dayView
1515
+ showWeekNumbers : false, // show Number of Week at the very first column of a dayView
1516
+ disabledHours : [], // specific hour(s) which won't be selectable and contain additional information.
1361
1517
  disabledDates : [], // specific day(s) which won't be selectable and contain additional information.
1362
1518
  disabledDaysOfWeek : [], // day(s) which won't be selectable(s) (0 = Sunday)
1363
1519
  enabledDates : [], // specific day(s) which will be selectable, all other days will be disabled
@@ -1370,11 +1526,14 @@ $.fn.calendar.settings = {
1370
1526
  position: 'bottom left',
1371
1527
  lastResort: 'bottom left',
1372
1528
  prefer: 'opposite',
1529
+ observeChanges: false,
1373
1530
  hideOnScroll: false
1374
1531
  },
1375
1532
 
1376
1533
  text: {
1377
1534
  days: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
1535
+ dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
1536
+ dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
1378
1537
  months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
1379
1538
  monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
1380
1539
  today: 'Today',
@@ -1385,67 +1544,23 @@ $.fn.calendar.settings = {
1385
1544
  },
1386
1545
 
1387
1546
  formatter: {
1388
- header: function (date, mode, settings) {
1389
- return mode === 'year' ? settings.formatter.yearHeader(date, settings) :
1390
- mode === 'month' ? settings.formatter.monthHeader(date, settings) :
1391
- mode === 'day' ? settings.formatter.dayHeader(date, settings) :
1392
- mode === 'hour' ? settings.formatter.hourHeader(date, settings) :
1393
- settings.formatter.minuteHeader(date, settings);
1394
- },
1395
1547
  yearHeader: function (date, settings) {
1396
1548
  var decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
1397
1549
  return (decadeYear - 9) + ' - ' + (decadeYear + 2);
1398
1550
  },
1399
- monthHeader: function (date, settings) {
1400
- return date.getFullYear();
1401
- },
1402
- dayHeader: function (date, settings) {
1403
- var month = settings.text.months[date.getMonth()];
1404
- var year = date.getFullYear();
1405
- return month + ' ' + year;
1406
- },
1407
- hourHeader: function (date, settings) {
1408
- return settings.formatter.date(date, settings);
1409
- },
1410
- minuteHeader: function (date, settings) {
1411
- return settings.formatter.date(date, settings);
1412
- },
1551
+ monthHeader: 'YYYY',
1552
+ dayHeader: 'MMMM YYYY',
1553
+ hourHeader: 'MMMM D, YYYY',
1554
+ minuteHeader: 'MMMM D, YYYY',
1413
1555
  dayColumnHeader: function (day, settings) {
1414
1556
  return settings.text.days[day];
1415
1557
  },
1416
- datetime: function (date, settings) {
1417
- if (!date) {
1418
- return '';
1419
- }
1420
- var day = settings.type === 'time' ? '' : settings.formatter.date(date, settings);
1421
- var time = settings.type.indexOf('time') < 0 ? '' : settings.formatter.time(date, settings, false);
1422
- var separator = settings.type === 'datetime' ? ' ' : '';
1423
- return day + separator + time;
1424
- },
1425
- date: function (date, settings) {
1426
- if (!date) {
1427
- return '';
1428
- }
1429
- var day = date.getDate();
1430
- var month = settings.text.months[date.getMonth()];
1431
- var year = date.getFullYear();
1432
- return settings.type === 'year' ? year :
1433
- settings.type === 'month' ? month + ' ' + year :
1434
- (settings.monthFirst ? month + ' ' + day : day + ' ' + month) + ', ' + year;
1435
- },
1436
- time: function (date, settings, forCalendar) {
1437
- if (!date) {
1438
- return '';
1439
- }
1440
- var hour = date.getHours();
1441
- var minute = date.getMinutes();
1442
- var ampm = '';
1443
- if (settings.ampm) {
1444
- ampm = ' ' + (hour < 12 ? settings.text.am : settings.text.pm);
1445
- hour = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;
1446
- }
1447
- return hour + ':' + (minute < 10 ? '0' : '') + minute + ampm;
1448
- },
1558
+ datetime: 'MMMM D, YYYY h:mm A',
1559
+ date: 'MMMM D, YYYY',
1560
+ time: 'h:mm A',
1561
+ cellTime: 'h:mm A',
1562
+ month: 'MMMM YYYY',
1563
+ year: 'YYYY',
1449
1564
  today: function (settings) {
1450
1565
  return settings.type === 'date' ? settings.text.today : settings.text.now;
1451
1566
  },
@@ -1461,7 +1576,7 @@ $.fn.calendar.settings = {
1461
1576
  if (!text) {
1462
1577
  return null;
1463
1578
  }
1464
- text = String(text).trim();
1579
+ text = String(text).trim().replace(/([.:\/\-])\s+/g,'$1').replace(/\s+([.:\/-])/g,'$1').replace(/\s+/g,' ');
1465
1580
  if (text.length === 0) {
1466
1581
  return null;
1467
1582
  }
@@ -1714,7 +1829,8 @@ $.fn.calendar.settings = {
1714
1829
 
1715
1830
  regExp: {
1716
1831
  dateWords: /[^A-Za-z\u00C0-\u024F]+/g,
1717
- dateNumbers: /[^\d:]+/g
1832
+ dateNumbers: /[^\d:]+/g,
1833
+ token: /d{1,4}|D{1,2}|M{1,4}|YY(?:YY)?|([Hhmsw])\1?|[SAaY]|"[^"]*"|'[^']*'/g
1718
1834
  },
1719
1835
 
1720
1836
  error: {
@@ -1763,7 +1879,9 @@ $.fn.calendar.settings = {
1763
1879
  variation: 'variation',
1764
1880
  position: 'position',
1765
1881
  month: 'month',
1766
- year: 'year'
1882
+ year: 'year',
1883
+ hours: 'hours',
1884
+ days: 'days'
1767
1885
  },
1768
1886
 
1769
1887
  eventClass: 'blue'
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * # Fomantic-UI 2.8.8 - Calendar
2
+ * # Fomantic-UI 2.9.0 - Calendar
3
3
  * http://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
6
6
  * Released under the MIT license
7
7
  * http://opensource.org/licenses/MIT
8
8
  *
9
- */.ui.calendar .ui.popup{max-width:none;padding:0;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.calendar .calendar:focus{outline:0}.ui.calendar .ui.popup .ui.grid{display:block;white-space:nowrap}.ui.calendar .ui.popup .ui.grid>.column{width:auto}.ui.calendar .ui.table.minute,.ui.calendar .ui.table.month,.ui.calendar .ui.table.year{min-width:15em}.ui.calendar .ui.table.day{min-width:18em}.ui.calendar .ui.table.day.andweek{min-width:22em}.ui.calendar .ui.table.hour{min-width:20em}.ui.calendar .ui.table tr td,.ui.calendar .ui.table tr th{padding:.5em;white-space:nowrap}.ui.calendar .ui.table tr th{border-left:none}.ui.calendar .ui.table tr th i.icon{margin:0}.ui.calendar .ui.table tr:first-child th{position:relative;padding-left:0;padding-right:0}.ui.calendar .ui.table.day tr:first-child th{border:none}.ui.calendar .ui.table.day tr:nth-child(2) th{padding-top:.2em;padding-bottom:.3em}.ui.calendar .ui.table tr td{padding-left:.1em;padding-right:.1em}.ui.calendar .ui.table tr .link{cursor:pointer}.ui.calendar .ui.table tr .prev.link{width:14.28571429%;position:absolute;left:0}.ui.calendar .ui.table tr .next.link{width:14.28571429%;position:absolute;right:0}.ui.ui.calendar .ui.table tr .disabled{pointer-events:auto;cursor:default;color:rgba(40,40,40,.3)}.ui.calendar .ui.table tr .adjacent:not(.disabled):not(.active){color:rgba(0,0,0,.6);background:rgba(0,0,0,.03)}.ui.calendar .ui.table tr td.today{font-weight:700}.ui.calendar .ui.table tr td.range{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);-webkit-box-shadow:none;box-shadow:none}.ui.calendar:not(.disabled) .calendar.active .ui.table tbody tr td.focus,.ui.calendar:not(.disabled) .calendar:focus .ui.table tbody tr td.focus{-webkit-box-shadow:inset 0 0 0 1px #85b7d9;box-shadow:inset 0 0 0 1px #85b7d9}.ui.inverted.calendar .ui.table.inverted tr td.range{background:rgba(255,255,255,.08);color:#fff;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.calendar:not(.disabled) .calendar.active .ui.table.inverted tbody tr td.focus,.ui.inverted.calendar:not(.disabled) .calendar:focus .ui.table.inverted tbody tr td.focus{-webkit-box-shadow:inset 0 0 0 1px #85b7d9;box-shadow:inset 0 0 0 1px #85b7d9}.ui.inverted.calendar .ui.inverted.table tr .disabled{color:rgba(225,225,225,.3)}.ui.inverted.calendar .ui.inverted.table tr .adjacent:not(.disabled):not(.active){color:rgba(255,255,255,.8);background:rgba(255,255,255,.02)}.ui.disabled.calendar{opacity:.45}.ui.disabled.calendar .ui.table tr .link,.ui.disabled.calendar>.input{pointer-events:none}
9
+ */.ui.calendar .ui.popup{max-width:none;padding:0;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.calendar .calendar:focus{outline:0}.ui.calendar .ui.popup .ui.grid{display:block;white-space:nowrap}.ui.calendar .ui.popup .ui.grid>.column{width:auto}.ui.calendar .ui.table.minute,.ui.calendar .ui.table.month,.ui.calendar .ui.table.year{min-width:15em}.ui.calendar .ui.table.day{min-width:18em}.ui.calendar .ui.table.day.andweek{min-width:22em}.ui.calendar .ui.table.hour{min-width:20em}.ui.calendar .ui.table tr td,.ui.calendar .ui.table tr th{padding:.5em;white-space:nowrap}.ui.calendar .ui.table tr th{border-left:none}.ui.calendar .ui.table tr th i.icon{margin:0}.ui.calendar .ui.table tr:first-child th{position:relative;padding-left:0;padding-right:0}.ui.calendar .ui.table.day tr:first-child th{border:none}.ui.calendar .ui.table.day tr:nth-child(2) th{padding-top:.2em;padding-bottom:.3em}.ui.calendar .ui.table tr td{padding-left:.1em;padding-right:.1em}.ui.calendar .ui.table tr .link{cursor:pointer}.ui.calendar .ui.table tr .prev.link{width:14.28571429%;position:absolute;left:0}.ui.calendar .ui.table tr .next.link{width:14.28571429%;position:absolute;right:0}.ui.ui.calendar .ui.table tr .disabled{pointer-events:auto;cursor:default;color:rgba(40,40,40,.3)}.ui.calendar .ui.table tr .adjacent:not(.disabled):not(.active){color:rgba(0,0,0,.6);background:rgba(0,0,0,.03)}.ui.calendar .ui.table tr td.today{font-weight:700}.ui.calendar .ui.table tr td.range{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);-webkit-box-shadow:none;box-shadow:none}.ui.calendar:not(.disabled) .calendar.active .ui.table tbody tr td.focus,.ui.calendar:not(.disabled) .calendar:focus .ui.table tbody tr td.focus{-webkit-box-shadow:inset 0 0 0 1px #85b7d9;box-shadow:inset 0 0 0 1px #85b7d9}.ui.inverted.calendar .ui.table.inverted tr td.range{background:rgba(255,255,255,.08);color:#fff;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.calendar:not(.disabled) .calendar.active .ui.table.inverted tbody tr td.focus,.ui.inverted.calendar:not(.disabled) .calendar:focus .ui.table.inverted tbody tr td.focus{-webkit-box-shadow:inset 0 0 0 1px #85b7d9;box-shadow:inset 0 0 0 1px #85b7d9}.ui.inverted.calendar .ui.inverted.table tr .disabled{color:rgba(225,225,225,.3)}.ui.inverted.calendar .ui.inverted.table tr .adjacent:not(.disabled):not(.active){color:rgba(255,255,255,.8);background:rgba(255,255,255,.02)}.ui.calendar.popup>.ui.ui.grid{margin:-1rem}.ui.calendar.popup>.ui.ui.grid>.column:not(:first-child){padding-left:0}.ui.calendar.popup>.ui.ui.grid>.column:not(:first-child)>.ui.table{border-top-left-radius:0;border-bottom-left-radius:0}.ui.calendar.popup>.ui.ui.grid>.column:not(:last-child){padding-right:0}.ui.calendar.popup>.ui.ui.grid>.column:not(:last-child)>.ui.table{border-top-right-radius:0;border-bottom-right-radius:0}.ui.disabled.calendar{opacity:.45}.ui.disabled.calendar .ui.table tr .link,.ui.disabled.calendar>.input{pointer-events:none}