yafowil.widget.datetime 2.0.1__tar.gz → 2.0.2__tar.gz

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 (106) hide show
  1. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/CHANGES.rst +13 -0
  2. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/PKG-INFO +2 -2
  3. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/pyproject.toml +1 -1
  4. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/bootstrap5/widget.js +6 -0
  5. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/bootstrap5/widget.min.js +1 -0
  6. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/default/widget.js +6 -0
  7. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/default/widget.min.js +1 -0
  8. yafowil_widget_datetime-2.0.1/src/yafowil/widget/datetime/resources/bootstrap5/widget.min.js +0 -1
  9. yafowil_widget_datetime-2.0.1/src/yafowil/widget/datetime/resources/default/widget.min.js +0 -1
  10. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/.gitignore +0 -0
  11. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/LICENSE.rst +0 -0
  12. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/README.rst +0 -0
  13. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/__init__.py +0 -0
  14. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/example.py +0 -0
  15. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/de/LC_MESSAGES/yafowil.widget.datetime.mo +0 -0
  16. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/de/LC_MESSAGES/yafowil.widget.datetime.po +0 -0
  17. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/en/LC_MESSAGES/yafowil.widget.datetime.mo +0 -0
  18. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/en/LC_MESSAGES/yafowil.widget.datetime.po +0 -0
  19. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/yafowil.widget.datetime.pot +0 -0
  20. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/bootstrap5/datepicker.min.css +0 -0
  21. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/bootstrap5/timepicker.min.css +0 -0
  22. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/default/datepicker.min.css +0 -0
  23. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/default/timepicker.min.css +0 -0
  24. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ar-tn.js +0 -0
  25. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ar.js +0 -0
  26. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/az.js +0 -0
  27. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/bg.js +0 -0
  28. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/bm.js +0 -0
  29. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/bn.js +0 -0
  30. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/br.js +0 -0
  31. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/bs.js +0 -0
  32. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ca.js +0 -0
  33. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/cs.js +0 -0
  34. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/cy.js +0 -0
  35. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/da.js +0 -0
  36. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/de.js +0 -0
  37. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/el.js +0 -0
  38. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-AU.js +0 -0
  39. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-CA.js +0 -0
  40. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-GB.js +0 -0
  41. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-IE.js +0 -0
  42. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-NZ.js +0 -0
  43. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-ZA.js +0 -0
  44. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/eo.js +0 -0
  45. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/es.js +0 -0
  46. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/et.js +0 -0
  47. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/eu.js +0 -0
  48. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fa.js +0 -0
  49. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fi.js +0 -0
  50. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fo.js +0 -0
  51. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fr-CH.js +0 -0
  52. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fr.js +0 -0
  53. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/gl.js +0 -0
  54. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/he.js +0 -0
  55. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/hi.js +0 -0
  56. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/hr.js +0 -0
  57. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/hu.js +0 -0
  58. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/hy.js +0 -0
  59. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/id.js +0 -0
  60. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/is.js +0 -0
  61. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/it-CH.js +0 -0
  62. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/it.js +0 -0
  63. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ja.js +0 -0
  64. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ka.js +0 -0
  65. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/kk.js +0 -0
  66. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/km.js +0 -0
  67. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ko.js +0 -0
  68. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/lt.js +0 -0
  69. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/lv.js +0 -0
  70. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/me.js +0 -0
  71. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/mk.js +0 -0
  72. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/mn.js +0 -0
  73. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/mr.js +0 -0
  74. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ms.js +0 -0
  75. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/nl-BE.js +0 -0
  76. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/nl.js +0 -0
  77. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/no.js +0 -0
  78. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/oc.js +0 -0
  79. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/pl.js +0 -0
  80. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/pt-BR.js +0 -0
  81. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/pt.js +0 -0
  82. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ro.js +0 -0
  83. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ru.js +0 -0
  84. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/si.js +0 -0
  85. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sk.js +0 -0
  86. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sl.js +0 -0
  87. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sq.js +0 -0
  88. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sr-latn.js +0 -0
  89. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sr.js +0 -0
  90. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sv.js +0 -0
  91. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sw.js +0 -0
  92. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ta.js +0 -0
  93. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/tg.js +0 -0
  94. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/th.js +0 -0
  95. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/tk.js +0 -0
  96. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/tr.js +0 -0
  97. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/uk.js +0 -0
  98. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/uz-cyrl.js +0 -0
  99. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/uz-latn.js +0 -0
  100. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/vi.js +0 -0
  101. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/zh-CN.js +0 -0
  102. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/zh-TW.js +0 -0
  103. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/vanillajs-datepicker/datepicker.js +0 -0
  104. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/vanillajs-datepicker/datepicker.min.js +0 -0
  105. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/tests/test_widget.py +0 -0
  106. {yafowil_widget_datetime-2.0.1 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/widget.py +0 -0
@@ -1,6 +1,19 @@
1
1
  Changes
2
2
  =======
3
3
 
4
+ 2.0.2 (2026-10-24)
5
+ ------------------
6
+
7
+ - Ignore a second ``initialize`` on an element that already carries a widget.
8
+ ``initialize`` takes a context, and a context is commonly a parent - an ajax
9
+ reload that replaces one element re-binds its parent, so every input beside
10
+ the replaced one arrives a second time. The widget stored itself under
11
+ ``elem.data('yafowil-datepicker')`` / ``'yafowil-timepicker'`` already; only
12
+ the check was missing. Without it a field collects another trigger button on
13
+ every reload and its handlers are bound repeatedly.
14
+ [rnix]
15
+
16
+
4
17
  2.0.1 (2026-04-28)
5
18
  ------------------
6
19
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: yafowil.widget.datetime
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Datetime Widget for YAFOWIL
5
5
  Author-email: Yafowil Contributors <dev@conestack.org>
6
6
  License: Simplified BSD
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "yafowil.widget.datetime"
7
- version = "2.0.1"
7
+ version = "2.0.2"
8
8
  description = "Datetime Widget for YAFOWIL"
9
9
  readme = "README.rst"
10
10
  license = {text = "Simplified BSD"}
@@ -9,6 +9,9 @@ var yafowil_datetime = (function (exports, $, Popper) {
9
9
  window.yafowil_array.inside_template(elem)) {
10
10
  return;
11
11
  }
12
+ if (elem.data('yafowil-datepicker') !== undefined) {
13
+ return;
14
+ }
12
15
  new DatepickerWidget(elem, elem.data('date-locale'));
13
16
  });
14
17
  }
@@ -312,6 +315,9 @@ var yafowil_datetime = (function (exports, $, Popper) {
312
315
  window.yafowil_array.inside_template(elem)) {
313
316
  return;
314
317
  }
318
+ if (elem.data('yafowil-timepicker') !== undefined) {
319
+ return;
320
+ }
315
321
  elem.attr('spellcheck', false);
316
322
  new TimepickerWidget(elem, {
317
323
  language: elem.data('time-locale'),
@@ -0,0 +1 @@
1
+ var yafowil_datetime=function(e,t,i){"use strict";class s extends Datepicker{static initialize(e){t("input.datepicker",e).each((function(){let e=t(this);void 0!==window.yafowil_array&&window.yafowil_array.inside_template(e)||void 0===e.data("yafowil-datepicker")&&new s(e,e.data("date-locale"))}))}constructor(e,i,o={}){let r={language:i,orientation:"bottom",buttonClass:"btn",todayHighlight:!0,autohide:!0};e.offset().top+e.outerHeight()+250>t(document).height()&&(r.orientation="top");let a=s.locale_options;Object.assign(r,a[i]||a.en),Object.assign(r,o),super(e[0],r),e.data("yafowil-datepicker",this),this.elem=e,this.adapt(),this.trigger=t("<button />").addClass("datepicker-trigger btn btn-outline-secondary").text("...").insertAfter(e),this.toggle_picker=this.toggle_picker.bind(this),this.trigger.on("mousedown touchstart",this.toggle_picker),this.trigger.on("click",(e=>{e.preventDefault()})),this.on_change_date=this.on_change_date.bind(this),this.elem.on("changeDate",this.on_change_date),void 0!==window.ts&&ts.ajax.attach(this,e);let l=t.Event("datepicker_created",{widget:this});this.elem.trigger(l)}on_change_date(){this.elem.trigger("change")}adapt(){const e=t(this.picker.element);t(".datepicker-picker",e).addClass("card");const i=t(".datepicker-header",e).addClass("card-header bg-primary");t(".btn",i).addClass("btn-primary"),t(".datepicker-main",e).addClass("card-body")}unload(){void 0!==window.ts&&ts.deprecate("yafowil.widget.datepicker.unload","yafowil.widget.datepicker.destroy","yafowil 2.1"),this.destroy()}toggle_picker(e){e.preventDefault(),e.stopPropagation(),this.picker.active||this.active?(this.hide(),this.elem.blur()):this.show()}destroy(){this.trigger.off("mousedown touchstart",this.toggle_picker),this.trigger.off(),this.elem.off("changeDate",this.on_change_date),super.destroy(),this.elem.off().removeData().remove()}}function o(e,t){s.initialize(t)}function r(){void 0!==window.yafowil_array&&window.yafowil_array.on_array_event("on_add",o)}s.locale_options={en:{weekStart:1,format:"mm.dd.yyyy"},de:{weekStart:1,format:"dd.mm.yyyy"}};class a{constructor(e,t){this.elem=e,this.parent=t}get selected(){return this.elem.hasClass("selected")}set selected(e){e?(this.parent.remove_previously_selected(),this.elem.addClass("selected")):this.elem.removeClass("selected")}get previously_selected(){return this.elem.hasClass("prev-selected")}set previously_selected(e){e?this.elem.addClass("prev-selected"):this.elem.removeClass("prev-selected")}}class l{constructor(e,t){this.picker=e,this.elem=t,this.children=[]}unload_all(){for(let e of this.children)e.elem.off("click",e.on_click)}unselect_all(){for(let e of this.children)e.selected=!1}mark_previously_selected(){for(let e of this.children)e.selected&&(e.previously_selected=!0,e.selected=!1)}remove_previously_selected(){for(let e of this.children)e.previously_selected=!1}}class n extends a{constructor(e,i,s,o){super(t("<div />").addClass("cell").text(new String(s).padStart(2,"0")).appendTo(i),e),this.hours=e,this.picker=e.picker,this.period=o,this.on_click=this.on_click.bind(this),this.elem.on("click",this.on_click)}on_click(e){let t=this.elem.text();this.hours.unselect_all(),this.selected=!0,this.picker.period=this.period,this.picker.hour=t}}class d extends a{constructor(e,i,s){super(t("<div />").addClass("cell").text(new String(s).padStart(2,"0")).appendTo(i),e),this.minutes=e,this.picker=e.picker,this.on_click=this.on_click.bind(this),this.elem.on("click",this.on_click)}on_click(e){this.minutes.unselect_all(),this.selected=!0,this.picker.minute=this.elem.text()}}class h extends l{constructor(e,i){super(e,t("<div />").addClass("card-body hours-content")),24===e.clock?this.create_clock_24():12===e.clock&&this.create_clock_12(),this.to_minute=this.to_minute.bind(this);let s=t("<div />").addClass("header card-header bg-primary text-white").text(e.translate("hour"));this.minutes_btn=t("<button />").append(t('<i class="bi bi-caret-right"/>')).append(t("<span>Minute</span>")).addClass("to_minutes d-block d-sm-none btn p-0 float-end").on("click",this.to_minute).appendTo(s),this.container_elem=t("<div />").addClass("card timepicker-hours").append(s).append(this.elem).appendTo(i)}create_clock_24(){for(let e=0;e<24;e++)this.children.push(new n(this,this.elem,e))}create_clock_12(){t("<span />").addClass("am").text("A.M.").appendTo(this.elem);let e=t("<div />").addClass("am").appendTo(this.elem);t("<span />").addClass("pm").text("P.M.").appendTo(this.elem);let i=t("<div />").addClass("pm").appendTo(this.elem);for(let t=0;t<12;t++)this.children.push(new n(this,e,t,"AM"));for(let e=0;e<12;e++)this.children.push(new n(this,i,e,"PM"));this.elem.css("grid-template-rows","1fr 1fr"),this.elem.css("grid-template-columns","auto 1fr")}to_minute(e){e.preventDefault(),this.container_elem.hide(),this.picker.minutes.container_elem.show()}}class c extends l{constructor(e,i,s){super(e,t("<div />").addClass("card-body minutes-content")),this.step=s;let o=60/s,r=0;if(o<=32){r=Math.ceil(o/4);let e="1fr ".repeat(Math.ceil(o/4));this.elem.css("grid-template-columns",e)}else r=10,this.elem.css("grid-template-columns","1fr ".repeat(10)),24===e.clock?t("div.hours-content",e.dd_elem).css({"grid-template-columns":"1fr 1fr 1fr 1fr"}):t("div.am, div.pm",e.dd_elem).css({"grid-template-columns":"1fr 1fr 1fr 1fr"});this.columns_count=r;for(let e=0;e<o;e++)this.children.push(new d(this,this.elem,e*s));this.to_hour=this.to_hour.bind(this);let a=t("<div />").addClass("header card-header bg-primary text-white").text(e.translate("minute"));this.hours_btn=t("<button />").append(t('<i class="bi bi-caret-left"/>')).append(t("<span>Hour</span>")).addClass("to_hours d-block d-sm-none btn p-0 float-end").on("click",this.to_hour).appendTo(a),this.container_elem=t("<div />").addClass("card timepicker-minutes").append(a).append(this.elem).appendTo(i)}to_hour(e){e.preventDefault(),this.container_elem.hide(),this.picker.hours.container_elem.show()}}class p{static initialize(e){t("input.timepicker",e).each((function(){let e=t(this);void 0!==window.yafowil_array&&window.yafowil_array.inside_template(e)||void 0===e.data("yafowil-timepicker")&&(e.attr("spellcheck",!1),new p(e,{language:e.data("time-locale"),clock:e.data("time-clock"),step:e.data("time-minutes_step")}))}))}constructor(e,s){e.data("yafowil-timepicker",this),this.elem=e,this.language=s.language||"en",this.clock=s.clock||24,this.period=null,this.hour="",this.minute="",s.step<=0||s.step>60||"number"!=typeof s.step?this.step=5:this.step=s.step,this.trigger_elem=t("<button />").addClass("timepicker-trigger btn btn-outline-secondary").text("...").insertAfter(e);let o=this.dd_elem=t("<div />").addClass("timepicker-dropdown").insertAfter(e.closest(".input-group")),r=t("<div />").addClass("timepicker-container card-group shadow").appendTo(o);this.hours=new h(this,r),this.minutes=new c(this,r,this.step),this.calc_flex_basis(this.minutes.columns_count),this.validate(),this.show_dropdown=this.show_dropdown.bind(this),this.elem.on("focus",this.show_dropdown),this.toggle_dropdown=this.toggle_dropdown.bind(this),this.trigger_elem.on("click",this.toggle_dropdown),this.hide_dropdown=this.hide_dropdown.bind(this),t(document).on("click",this.hide_dropdown),this.on_keypress=this.on_keypress.bind(this),this.elem.on("keypress",this.on_keypress),this.validate=this.validate.bind(this),this.elem.on("keyup",this.validate),this.popper=i.createPopper(this.elem[0],this.dd_elem[0],{placement:"bottom-start",modifiers:[{name:"preventOverflow",options:{boundary:"viewport",padding:10}},{name:"flip",options:{allowedAutoPlacements:["top-start","bottom-start"],rootBoundary:"viewport"}}]});let a=t.Event("timepicker_created",{widget:this});this.elem.trigger(a),void 0!==window.ts&&window.ts.ajax.attach(this,e)}calc_flex_basis(e){let t=6;60/this.step>32&&(t=24===this.clock?4:5),e<2&&(e=2);const i=t+e,s=t/i*100,o=e/i*100;this.hours.container_elem.css("flex-basis",s.toFixed(2)+"%"),this.minutes.container_elem.css("flex-basis",o.toFixed(2)+"%");const r=`calc(${40*i}px + 4rem)`;this.dd_elem.css("width",r)}unload(){void 0!==window.ts&&ts.deprecate("yafowil.widget.timepicker.unload","yafowil.widget.timepicker.destroy","yafowil 2.1"),this.destroy()}get hour(){return this._hour}set hour(e){this._hour=e,this.set_time()}get minute(){return this._minute}set minute(e){this._minute=e,this.set_time()}set_time(){""!==this.hour&&""!==this.minute&&(24===this.clock?this.elem.val(`${this.hour}:${this.minute}`):12===this.clock&&this.elem.val(`${this.hour}:${this.minute}${this.period}`),this.elem.trigger("change"),this.hour="",this.minute="",this.hours.mark_previously_selected(),this.minutes.mark_previously_selected(),t(window).width()<=575&&this.reset_visibility(),this.dd_elem.hide())}reset_visibility(){this.hours.container_elem.show(),this.minutes.container_elem.hide()}hide_dropdown(e){e.target!==this.elem[0]&&e.target!==this.trigger_elem[0]&&0===t(e.target).closest(this.dd_elem).length&&(this.dd_elem.hide(),""!==this.hour&&""!==this.minute||(this._hour="",this._minute=""),this.hours.unselect_all(),this.minutes.unselect_all())}show_dropdown(e){this.dd_elem.show(),this.popper.forceUpdate()}toggle_dropdown(e){e.preventDefault(),this.dd_elem.toggle(),this.popper.forceUpdate()}on_keypress(e){e.preventDefault();let t=this.elem.val(),i=e.target.selectionStart;if("Enter"===e.key&&(this.dd_elem.hide(),this.elem.blur()),i<=4)e.key.match(new RegExp("[0-9]"))&&(this.elem.val(t+e.key),2===i&&this.elem.val(`${t}:${e.key}`));else if(5===i&&12===this.clock){["a","A","p","P"].includes(e.key)&&this.elem.val(t+e.key)}else 6===i&&12===this.clock&&("m"!==e.key&&"M"!==e.key||this.elem.val(t+e.key))}validate(){if(!this.elem.val())return;let e=this.elem.val(),t=new RegExp(/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/),i=new RegExp(/^(?:0?\d|1[012]):[0-5]\d[apAP][mM]$/),s=e.substr(0,2),o=parseInt(s),r=e.substr(3,2),a=parseInt(r)/this.step;if(24===this.clock){if(!e.match(t)||e.length<5)return}else if(12===this.clock){if(!e.match(i)||e.length<7)return;let t=e.substr(5).toUpperCase();this.period="PM"===t?"PM":"AM","PM"===t&&(o+=12)}this.hours.children[o].on_click();let l=this.minutes.children[a];l?l.on_click():this.minutes.unselect_all()}translate(e){let t=this.constructor.locales;return(t[this.language]||t.en)[e]}destroy(){t(document).off("click",this.hide_dropdown),this.popper.destroy(),this.hours.unload_all(),this.minutes.unload_all(),this.dd_elem.remove()}}function m(e,t){p.initialize(t)}function u(){void 0!==window.yafowil_array&&window.yafowil_array.on_array_event("on_add",m)}return p.locales={en:{hour:"Hour",minute:"Minute"},de:{hour:"Stunde",minute:"Minute"}},t((function(){void 0!==window.ts?(ts.ajax.register(s.initialize,!0),ts.ajax.register(p.initialize,!0)):void 0!==window.bdajax?(bdajax.register(s.initialize,!0),bdajax.register(p.initialize,!0)):(s.initialize(),p.initialize()),r(),u()})),e.DatepickerWidget=s,e.TimepickerButton=a,e.TimepickerButtonContainer=l,e.TimepickerHour=n,e.TimepickerHours=h,e.TimepickerMinute=d,e.TimepickerMinutes=c,e.TimepickerWidget=p,e.register_datepicker_array_subscribers=r,e.register_timepicker_array_subscribers=u,Object.defineProperty(e,"__esModule",{value:!0}),window.yafowil=window.yafowil||{},window.yafowil.datetime=e,e}({},jQuery,Popper);
@@ -9,6 +9,9 @@ var yafowil_datetime = (function (exports, $) {
9
9
  window.yafowil_array.inside_template(elem)) {
10
10
  return;
11
11
  }
12
+ if (elem.data('yafowil-datepicker') !== undefined) {
13
+ return;
14
+ }
12
15
  new DatepickerWidget(elem, elem.data('date-locale'));
13
16
  });
14
17
  }
@@ -252,6 +255,9 @@ var yafowil_datetime = (function (exports, $) {
252
255
  window.yafowil_array.inside_template(elem)) {
253
256
  return;
254
257
  }
258
+ if (elem.data('yafowil-timepicker') !== undefined) {
259
+ return;
260
+ }
255
261
  elem.attr('spellcheck', false);
256
262
  new TimepickerWidget(elem, {
257
263
  language: elem.data('time-locale'),
@@ -0,0 +1 @@
1
+ var yafowil_datetime=function(e,t){"use strict";class i extends Datepicker{static initialize(e){t("input.datepicker",e).each((function(){let e=t(this);void 0!==window.yafowil_array&&window.yafowil_array.inside_template(e)||void 0===e.data("yafowil-datepicker")&&new i(e,e.data("date-locale"))}))}constructor(e,s,l={}){let r={language:s,orientation:"bottom",buttonClass:"btn",todayHighlight:!0,autohide:!0};e.offset().top+e.outerHeight()+250>t(document).height()&&(r.orientation="top");let a=i.locale_options;Object.assign(r,a[s]||a.en),Object.assign(r,l),super(e[0],r),e.data("yafowil-datepicker",this),this.elem=e,this.trigger=t("<button />").addClass("datepicker-trigger btn btn-default").text("...").insertAfter(e),this.toggle_picker=this.toggle_picker.bind(this),this.trigger.off("mousedown touchstart",this.toggle_picker).on("mousedown touchstart",this.toggle_picker),this.trigger.on("click",(e=>{e.preventDefault()})),this.elem.on("changeDate",(()=>{this.elem.trigger("change")})),void 0!==window.ts&&ts.ajax.attach(this,e);let o=t.Event("datepicker_created",{widget:this});this.elem.trigger(o)}unload(){void 0!==window.ts&&ts.deprecate("yafowil.widget.datepicker.unload","yafowil.widget.datepicker.destroy","yafowil 2.1"),this.destroy()}toggle_picker(e){e.preventDefault(),e.stopPropagation(),this.picker.active||this.active?(this.hide(),this.elem.blur()):this.show()}destroy(){this.trigger.off(),this.elem.off(),super.destroy()}}function s(e,t){i.initialize(t)}function l(){void 0!==window.yafowil_array&&window.yafowil_array.on_array_event("on_add",s)}i.locale_options={en:{weekStart:1,format:"mm.dd.yyyy"},de:{weekStart:1,format:"dd.mm.yyyy"}};class r{constructor(e){this.elem=e}get selected(){return this.elem.hasClass("selected")}set selected(e){e?this.elem.addClass("selected"):this.elem.removeClass("selected")}}class a{constructor(e,t){this.picker=e,this.elem=t,this.children=[]}unload_all(){for(let e of this.children)e.elem.off("click",e.on_click)}unselect_all(){for(let e of this.children)e.selected=!1}}class o extends r{constructor(e,i,s,l){super(t("<div />").addClass("cell").text(new String(s).padStart(2,"0")).appendTo(i)),this.hours=e,this.picker=e.picker,this.period=l,this.on_click=this.on_click.bind(this),this.elem.on("click",this.on_click)}on_click(e){let t=this.elem.text();this.hours.unselect_all(),this.selected=!0,this.picker.period=this.period,this.picker.hour=t}}class d extends r{constructor(e,i,s){super(t("<div />").addClass("cell").text(new String(s).padStart(2,"0")).appendTo(i)),this.minutes=e,this.picker=e.picker,this.on_click=this.on_click.bind(this),this.elem.on("click",this.on_click)}on_click(e){this.minutes.unselect_all(),this.selected=!0,this.picker.minute=this.elem.text()}}class n extends a{constructor(e,i){super(e,t("<div />").addClass("hours-content")),24===e.clock?this.create_clock_24():12===e.clock&&this.create_clock_12();let s=t("<div />").addClass("header").text(e.translate("hour"));t("<div />").addClass("timepicker-hours").append(s).append(this.elem).appendTo(i),12===e.clock&&s.css("margin-left","34px")}create_clock_24(){for(let e=0;e<24;e++)this.children.push(new o(this,this.elem,e))}create_clock_12(){t("<span />").addClass("am").text("A.M.").appendTo(this.elem);let e=t("<div />").addClass("am").appendTo(this.elem);t("<span />").addClass("pm").text("P.M.").appendTo(this.elem);let i=t("<div />").addClass("pm").appendTo(this.elem);for(let t=0;t<12;t++)this.children.push(new o(this,e,t,"AM"));for(let e=0;e<12;e++)this.children.push(new o(this,i,e,"PM"));this.elem.css("display","block")}}class h extends a{constructor(e,i,s){super(e,t("<div />").addClass("minutes-content")),this.step=s;let l=60/s;if(l<=32){let e="1fr ".repeat(Math.ceil(l/4));this.elem.css("grid-template-columns",e)}else this.elem.css("grid-template-columns","1fr ".repeat(10)),24===e.clock?t("div.hours-content",e.dd_elem).css({"grid-template-columns":"1fr 1fr 1fr 1fr",width:"110px"}):t("div.am, div.pm",e.dd_elem).css({"grid-template-columns":"1fr 1fr 1fr 1fr"});for(let e=0;e<l;e++)this.children.push(new d(this,this.elem,e*s));let r=t("<div />").addClass("header").text(e.translate("minute"));t("<div />").addClass("timepicker-minutes").append(r).append(this.elem).appendTo(i)}}class c{static initialize(e){t("input.timepicker",e).each((function(){let e=t(this);void 0!==window.yafowil_array&&window.yafowil_array.inside_template(e)||void 0===e.data("yafowil-timepicker")&&(e.attr("spellcheck",!1),new c(e,{language:e.data("time-locale"),clock:e.data("time-clock"),step:e.data("time-minutes_step")}))}))}constructor(e,i){e.data("yafowil-timepicker",this),this.elem=e,this.language=i.language||"en",this.clock=i.clock||24,this.period=null,this.hour="",this.minute="",i.step<=0||i.step>60||"number"!=typeof i.step?this.step=5:this.step=i.step,this.trigger_elem=t("<button />").addClass("timepicker-trigger btn btn-default").text("...").insertAfter(e);let s=this.dd_elem=t("<div />").addClass("timepicker-dropdown").insertAfter(e),l=t("<div />").addClass("timepicker-container").appendTo(s);this.hours=new n(this,l),this.minutes=new h(this,l,this.step),this.validate(),this.place=this.place.bind(this),this.place(),this.show_dropdown=this.show_dropdown.bind(this),this.elem.on("focus",this.show_dropdown),this.toggle_dropdown=this.toggle_dropdown.bind(this),this.trigger_elem.on("click",this.toggle_dropdown),this.hide_dropdown=this.hide_dropdown.bind(this),t(document).on("click",this.hide_dropdown),this.on_keypress=this.on_keypress.bind(this),this.elem.on("keypress",this.on_keypress),this.validate=this.validate.bind(this),this.elem.on("keyup",this.validate),t(window).on("resize",this.place);let r=t.Event("timepicker_created",{widget:this});this.elem.trigger(r),void 0!==window.ts&&window.ts.ajax.attach(this,e)}unload(){void 0!==window.ts&&ts.deprecate("yafowil.widget.timepicker.unload","yafowil.widget.timepicker.destroy","yafowil 2.1"),this.destroy()}get hour(){return this._hour}set hour(e){this._hour=e,this.set_time()}get minute(){return this._minute}set minute(e){this._minute=e,this.set_time()}place(){let e=this.elem.offset().left,i=this.elem.offset().top,s=this.dd_elem.outerWidth(),l=this.elem.outerWidth(),r=i+this.elem.outerHeight()+250,a=e+s;if(this.dd_elem.css("transform","translateX(0px)"),r>t(document).height()){let e=this.dd_elem.outerHeight()+9;this.dd_elem.css("top",`-${e}px`)}if(e+l-s<0){let e=a-t(window).width();this.dd_elem.css("transform",`translateX(-${e}px)`)}else a>t(window).width()&&this.dd_elem.css("transform",`translateX(calc(-100% + ${l}px))`)}set_time(){""!==this.hour&&""!==this.minute&&(24===this.clock?this.elem.val(`${this.hour}:${this.minute}`):12===this.clock&&this.elem.val(`${this.hour}:${this.minute}${this.period}`),this.elem.trigger("change"),this.hour="",this.minute="",this.dd_elem.hide())}hide_dropdown(e){e.target!==this.elem[0]&&e.target!==this.trigger_elem[0]&&0===t(e.target).closest(this.dd_elem).length&&this.dd_elem.hide()}show_dropdown(e){this.dd_elem.show()}toggle_dropdown(e){e.preventDefault(),this.dd_elem.toggle()}on_keypress(e){e.preventDefault();let t=this.elem.val(),i=e.target.selectionStart;if("Enter"===e.key&&(this.dd_elem.hide(),this.elem.blur()),i<=4)e.key.match(new RegExp("[0-9]"))&&(this.elem.val(t+e.key),2===i&&this.elem.val(`${t}:${e.key}`));else if(5===i&&12===this.clock){["a","A","p","P"].includes(e.key)&&this.elem.val(t+e.key)}else 6===i&&12===this.clock&&("m"!==e.key&&"M"!==e.key||this.elem.val(t+e.key))}validate(){if(!this.elem.val())return;let e=this.elem.val(),t=new RegExp(/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/),i=new RegExp(/^(?:0?\d|1[012]):[0-5]\d[apAP][mM]$/),s=e.substr(0,2),l=parseInt(s),r=e.substr(3,2),a=parseInt(r)/this.step;if(24===this.clock){if(!e.match(t)||e.length<5)return}else if(12===this.clock){if(!e.match(i)||e.length<7)return;let t=e.substr(5).toUpperCase();this.period="PM"===t?"PM":"AM","PM"===t&&(l+=12)}this.hours.children[l].on_click();let o=this.minutes.children[a];o?o.on_click():this.minutes.unselect_all()}translate(e){let t=this.constructor.locales;return(t[this.language]||t.en)[e]}destroy(){t(document).off("click",this.hide_dropdown),this.hours.unload_all(),this.minutes.unload_all(),this.dd_elem.remove()}}function p(e,t){c.initialize(t)}function m(){void 0!==window.yafowil_array&&window.yafowil_array.on_array_event("on_add",p)}return c.locales={en:{hour:"Hour",minute:"Minute"},de:{hour:"Stunde",minute:"Minute"}},t((function(){void 0!==window.ts?(ts.ajax.register(i.initialize,!0),ts.ajax.register(c.initialize,!0)):void 0!==window.bdajax?(bdajax.register(i.initialize,!0),bdajax.register(c.initialize,!0)):(i.initialize(),c.initialize()),l(),m()})),e.DatepickerWidget=i,e.TimepickerButton=r,e.TimepickerButtonContainer=a,e.TimepickerHour=o,e.TimepickerHours=n,e.TimepickerMinute=d,e.TimepickerMinutes=h,e.TimepickerWidget=c,e.register_datepicker_array_subscribers=l,e.register_timepicker_array_subscribers=m,Object.defineProperty(e,"__esModule",{value:!0}),window.yafowil=window.yafowil||{},window.yafowil.datetime=e,e}({},jQuery);
@@ -1 +0,0 @@
1
- var yafowil_datetime=function(e,t,i){"use strict";class s extends Datepicker{static initialize(e){t("input.datepicker",e).each(function(){let e=t(this);void 0!==window.yafowil_array&&window.yafowil_array.inside_template(e)||new s(e,e.data("date-locale"))})}constructor(e,i,r={}){let o={language:i,orientation:"bottom",buttonClass:"btn",todayHighlight:!0,autohide:!0};e.offset().top+e.outerHeight()+250>t(document).height()&&(o.orientation="top");let a=s.locale_options;Object.assign(o,a[i]||a.en),Object.assign(o,r),super(e[0],o),e.data("yafowil-datepicker",this),this.elem=e,this.adapt(),this.trigger=t("<button />").addClass("datepicker-trigger btn btn-outline-secondary").text("...").insertAfter(e),this.toggle_picker=this.toggle_picker.bind(this),this.trigger.on("mousedown touchstart",this.toggle_picker),this.trigger.on("click",e=>{e.preventDefault()}),this.on_change_date=this.on_change_date.bind(this),this.elem.on("changeDate",this.on_change_date),void 0!==window.ts&&ts.ajax.attach(this,e);let l=t.Event("datepicker_created",{widget:this});this.elem.trigger(l)}on_change_date(){this.elem.trigger("change")}adapt(){const e=t(this.picker.element);t(".datepicker-picker",e).addClass("card");const i=t(".datepicker-header",e).addClass("card-header bg-primary");t(".btn",i).addClass("btn-primary"),t(".datepicker-main",e).addClass("card-body")}unload(){void 0!==window.ts&&ts.deprecate("yafowil.widget.datepicker.unload","yafowil.widget.datepicker.destroy","yafowil 2.1"),this.destroy()}toggle_picker(e){e.preventDefault(),e.stopPropagation(),this.picker.active||this.active?(this.hide(),this.elem.blur()):this.show()}destroy(){this.trigger.off("mousedown touchstart",this.toggle_picker),this.trigger.off(),this.elem.off("changeDate",this.on_change_date),super.destroy(),this.elem.off().removeData().remove()}}function r(e,t){s.initialize(t)}function o(){void 0!==window.yafowil_array&&window.yafowil_array.on_array_event("on_add",r)}s.locale_options={en:{weekStart:1,format:"mm.dd.yyyy"},de:{weekStart:1,format:"dd.mm.yyyy"}};class a{constructor(e,t){this.elem=e,this.parent=t}get selected(){return this.elem.hasClass("selected")}set selected(e){e?(this.parent.remove_previously_selected(),this.elem.addClass("selected")):this.elem.removeClass("selected")}get previously_selected(){return this.elem.hasClass("prev-selected")}set previously_selected(e){e?this.elem.addClass("prev-selected"):this.elem.removeClass("prev-selected")}}class l{constructor(e,t){this.picker=e,this.elem=t,this.children=[]}unload_all(){for(let e of this.children)e.elem.off("click",e.on_click)}unselect_all(){for(let e of this.children)e.selected=!1}mark_previously_selected(){for(let e of this.children)e.selected&&(e.previously_selected=!0,e.selected=!1)}remove_previously_selected(){for(let e of this.children)e.previously_selected=!1}}class n extends a{constructor(e,i,s,r){super(t("<div />").addClass("cell").text(new String(s).padStart(2,"0")).appendTo(i),e),this.hours=e,this.picker=e.picker,this.period=r,this.on_click=this.on_click.bind(this),this.elem.on("click",this.on_click)}on_click(e){let t=this.elem.text();this.hours.unselect_all(),this.selected=!0,this.picker.period=this.period,this.picker.hour=t}}class d extends a{constructor(e,i,s){super(t("<div />").addClass("cell").text(new String(s).padStart(2,"0")).appendTo(i),e),this.minutes=e,this.picker=e.picker,this.on_click=this.on_click.bind(this),this.elem.on("click",this.on_click)}on_click(e){this.minutes.unselect_all(),this.selected=!0,this.picker.minute=this.elem.text()}}class h extends l{constructor(e,i){super(e,t("<div />").addClass("card-body hours-content")),24===e.clock?this.create_clock_24():12===e.clock&&this.create_clock_12(),this.to_minute=this.to_minute.bind(this);let s=t("<div />").addClass("header card-header bg-primary text-white").text(e.translate("hour"));this.minutes_btn=t("<button />").append(t('<i class="bi bi-caret-right"/>')).append(t("<span>Minute</span>")).addClass("to_minutes d-block d-sm-none btn p-0 float-end").on("click",this.to_minute).appendTo(s),this.container_elem=t("<div />").addClass("card timepicker-hours").append(s).append(this.elem).appendTo(i)}create_clock_24(){for(let e=0;e<24;e++)this.children.push(new n(this,this.elem,e))}create_clock_12(){t("<span />").addClass("am").text("A.M.").appendTo(this.elem);let e=t("<div />").addClass("am").appendTo(this.elem);t("<span />").addClass("pm").text("P.M.").appendTo(this.elem);let i=t("<div />").addClass("pm").appendTo(this.elem);for(let t=0;t<12;t++)this.children.push(new n(this,e,t,"AM"));for(let e=0;e<12;e++)this.children.push(new n(this,i,e,"PM"));this.elem.css("grid-template-rows","1fr 1fr"),this.elem.css("grid-template-columns","auto 1fr")}to_minute(e){e.preventDefault(),this.container_elem.hide(),this.picker.minutes.container_elem.show()}}class c extends l{constructor(e,i,s){super(e,t("<div />").addClass("card-body minutes-content")),this.step=s;let r=60/s,o=0;if(r<=32){o=Math.ceil(r/4);let e="1fr ".repeat(Math.ceil(r/4));this.elem.css("grid-template-columns",e)}else o=10,this.elem.css("grid-template-columns","1fr ".repeat(10)),24===e.clock?t("div.hours-content",e.dd_elem).css({"grid-template-columns":"1fr 1fr 1fr 1fr"}):t("div.am, div.pm",e.dd_elem).css({"grid-template-columns":"1fr 1fr 1fr 1fr"});this.columns_count=o;for(let e=0;e<r;e++)this.children.push(new d(this,this.elem,e*s));this.to_hour=this.to_hour.bind(this);let a=t("<div />").addClass("header card-header bg-primary text-white").text(e.translate("minute"));this.hours_btn=t("<button />").append(t('<i class="bi bi-caret-left"/>')).append(t("<span>Hour</span>")).addClass("to_hours d-block d-sm-none btn p-0 float-end").on("click",this.to_hour).appendTo(a),this.container_elem=t("<div />").addClass("card timepicker-minutes").append(a).append(this.elem).appendTo(i)}to_hour(e){e.preventDefault(),this.container_elem.hide(),this.picker.hours.container_elem.show()}}class p{static initialize(e){t("input.timepicker",e).each(function(){let e=t(this);void 0!==window.yafowil_array&&window.yafowil_array.inside_template(e)||(e.attr("spellcheck",!1),new p(e,{language:e.data("time-locale"),clock:e.data("time-clock"),step:e.data("time-minutes_step")}))})}constructor(e,s){e.data("yafowil-timepicker",this),this.elem=e,this.language=s.language||"en",this.clock=s.clock||24,this.period=null,this.hour="",this.minute="",s.step<=0||s.step>60||"number"!=typeof s.step?this.step=5:this.step=s.step,this.trigger_elem=t("<button />").addClass("timepicker-trigger btn btn-outline-secondary").text("...").insertAfter(e);let r=this.dd_elem=t("<div />").addClass("timepicker-dropdown").insertAfter(e.closest(".input-group")),o=t("<div />").addClass("timepicker-container card-group shadow").appendTo(r);this.hours=new h(this,o),this.minutes=new c(this,o,this.step),this.calc_flex_basis(this.minutes.columns_count),this.validate(),this.show_dropdown=this.show_dropdown.bind(this),this.elem.on("focus",this.show_dropdown),this.toggle_dropdown=this.toggle_dropdown.bind(this),this.trigger_elem.on("click",this.toggle_dropdown),this.hide_dropdown=this.hide_dropdown.bind(this),t(document).on("click",this.hide_dropdown),this.on_keypress=this.on_keypress.bind(this),this.elem.on("keypress",this.on_keypress),this.validate=this.validate.bind(this),this.elem.on("keyup",this.validate),this.popper=i.createPopper(this.elem[0],this.dd_elem[0],{placement:"bottom-start",modifiers:[{name:"preventOverflow",options:{boundary:"viewport",padding:10}},{name:"flip",options:{allowedAutoPlacements:["top-start","bottom-start"],rootBoundary:"viewport"}}]});let a=t.Event("timepicker_created",{widget:this});this.elem.trigger(a),void 0!==window.ts&&window.ts.ajax.attach(this,e)}calc_flex_basis(e){let t=6;60/this.step>32&&(t=24===this.clock?4:5),e<2&&(e=2);const i=t+e,s=t/i*100,r=e/i*100;this.hours.container_elem.css("flex-basis",s.toFixed(2)+"%"),this.minutes.container_elem.css("flex-basis",r.toFixed(2)+"%");const o=`calc(${40*i}px + 4rem)`;this.dd_elem.css("width",o)}unload(){void 0!==window.ts&&ts.deprecate("yafowil.widget.timepicker.unload","yafowil.widget.timepicker.destroy","yafowil 2.1"),this.destroy()}get hour(){return this._hour}set hour(e){this._hour=e,this.set_time()}get minute(){return this._minute}set minute(e){this._minute=e,this.set_time()}set_time(){""!==this.hour&&""!==this.minute&&(24===this.clock?this.elem.val(`${this.hour}:${this.minute}`):12===this.clock&&this.elem.val(`${this.hour}:${this.minute}${this.period}`),this.elem.trigger("change"),this.hour="",this.minute="",this.hours.mark_previously_selected(),this.minutes.mark_previously_selected(),t(window).width()<=575&&this.reset_visibility(),this.dd_elem.hide())}reset_visibility(){this.hours.container_elem.show(),this.minutes.container_elem.hide()}hide_dropdown(e){e.target!==this.elem[0]&&e.target!==this.trigger_elem[0]&&0===t(e.target).closest(this.dd_elem).length&&(this.dd_elem.hide(),""!==this.hour&&""!==this.minute||(this._hour="",this._minute=""),this.hours.unselect_all(),this.minutes.unselect_all())}show_dropdown(e){this.dd_elem.show(),this.popper.forceUpdate()}toggle_dropdown(e){e.preventDefault(),this.dd_elem.toggle(),this.popper.forceUpdate()}on_keypress(e){e.preventDefault();let t=this.elem.val(),i=e.target.selectionStart;if("Enter"===e.key&&(this.dd_elem.hide(),this.elem.blur()),i<=4)e.key.match(new RegExp("[0-9]"))&&(this.elem.val(t+e.key),2===i&&this.elem.val(`${t}:${e.key}`));else if(5===i&&12===this.clock){["a","A","p","P"].includes(e.key)&&this.elem.val(t+e.key)}else 6===i&&12===this.clock&&("m"!==e.key&&"M"!==e.key||this.elem.val(t+e.key))}validate(){if(!this.elem.val())return;let e=this.elem.val(),t=new RegExp(/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/),i=new RegExp(/^(?:0?\d|1[012]):[0-5]\d[apAP][mM]$/),s=e.substr(0,2),r=parseInt(s),o=e.substr(3,2),a=parseInt(o)/this.step;if(24===this.clock){if(!e.match(t)||e.length<5)return}else if(12===this.clock){if(!e.match(i)||e.length<7)return;let t=e.substr(5).toUpperCase();this.period="PM"===t?"PM":"AM","PM"===t&&(r+=12)}this.hours.children[r].on_click();let l=this.minutes.children[a];l?l.on_click():this.minutes.unselect_all()}translate(e){let t=this.constructor.locales;return(t[this.language]||t.en)[e]}destroy(){t(document).off("click",this.hide_dropdown),this.popper.destroy(),this.hours.unload_all(),this.minutes.unload_all(),this.dd_elem.remove()}}function m(e,t){p.initialize(t)}function u(){void 0!==window.yafowil_array&&window.yafowil_array.on_array_event("on_add",m)}return p.locales={en:{hour:"Hour",minute:"Minute"},de:{hour:"Stunde",minute:"Minute"}},t(function(){void 0!==window.ts?(ts.ajax.register(s.initialize,!0),ts.ajax.register(p.initialize,!0)):void 0!==window.bdajax?(bdajax.register(s.initialize,!0),bdajax.register(p.initialize,!0)):(s.initialize(),p.initialize()),o(),u()}),e.DatepickerWidget=s,e.TimepickerButton=a,e.TimepickerButtonContainer=l,e.TimepickerHour=n,e.TimepickerHours=h,e.TimepickerMinute=d,e.TimepickerMinutes=c,e.TimepickerWidget=p,e.register_datepicker_array_subscribers=o,e.register_timepicker_array_subscribers=u,Object.defineProperty(e,"__esModule",{value:!0}),window.yafowil=window.yafowil||{},window.yafowil.datetime=e,e}({},jQuery,Popper);
@@ -1 +0,0 @@
1
- var yafowil_datetime=function(e,t){"use strict";class i extends Datepicker{static initialize(e){t("input.datepicker",e).each(function(){let e=t(this);void 0!==window.yafowil_array&&window.yafowil_array.inside_template(e)||new i(e,e.data("date-locale"))})}constructor(e,s,l={}){let r={language:s,orientation:"bottom",buttonClass:"btn",todayHighlight:!0,autohide:!0};e.offset().top+e.outerHeight()+250>t(document).height()&&(r.orientation="top");let o=i.locale_options;Object.assign(r,o[s]||o.en),Object.assign(r,l),super(e[0],r),e.data("yafowil-datepicker",this),this.elem=e,this.trigger=t("<button />").addClass("datepicker-trigger btn btn-default").text("...").insertAfter(e),this.toggle_picker=this.toggle_picker.bind(this),this.trigger.off("mousedown touchstart",this.toggle_picker).on("mousedown touchstart",this.toggle_picker),this.trigger.on("click",e=>{e.preventDefault()}),this.elem.on("changeDate",()=>{this.elem.trigger("change")}),void 0!==window.ts&&ts.ajax.attach(this,e);let a=t.Event("datepicker_created",{widget:this});this.elem.trigger(a)}unload(){void 0!==window.ts&&ts.deprecate("yafowil.widget.datepicker.unload","yafowil.widget.datepicker.destroy","yafowil 2.1"),this.destroy()}toggle_picker(e){e.preventDefault(),e.stopPropagation(),this.picker.active||this.active?(this.hide(),this.elem.blur()):this.show()}destroy(){this.trigger.off(),this.elem.off(),super.destroy()}}function s(e,t){i.initialize(t)}function l(){void 0!==window.yafowil_array&&window.yafowil_array.on_array_event("on_add",s)}i.locale_options={en:{weekStart:1,format:"mm.dd.yyyy"},de:{weekStart:1,format:"dd.mm.yyyy"}};class r{constructor(e){this.elem=e}get selected(){return this.elem.hasClass("selected")}set selected(e){e?this.elem.addClass("selected"):this.elem.removeClass("selected")}}class o{constructor(e,t){this.picker=e,this.elem=t,this.children=[]}unload_all(){for(let e of this.children)e.elem.off("click",e.on_click)}unselect_all(){for(let e of this.children)e.selected=!1}}class a extends r{constructor(e,i,s,l){super(t("<div />").addClass("cell").text(new String(s).padStart(2,"0")).appendTo(i)),this.hours=e,this.picker=e.picker,this.period=l,this.on_click=this.on_click.bind(this),this.elem.on("click",this.on_click)}on_click(e){let t=this.elem.text();this.hours.unselect_all(),this.selected=!0,this.picker.period=this.period,this.picker.hour=t}}class d extends r{constructor(e,i,s){super(t("<div />").addClass("cell").text(new String(s).padStart(2,"0")).appendTo(i)),this.minutes=e,this.picker=e.picker,this.on_click=this.on_click.bind(this),this.elem.on("click",this.on_click)}on_click(e){this.minutes.unselect_all(),this.selected=!0,this.picker.minute=this.elem.text()}}class n extends o{constructor(e,i){super(e,t("<div />").addClass("hours-content")),24===e.clock?this.create_clock_24():12===e.clock&&this.create_clock_12();let s=t("<div />").addClass("header").text(e.translate("hour"));t("<div />").addClass("timepicker-hours").append(s).append(this.elem).appendTo(i),12===e.clock&&s.css("margin-left","34px")}create_clock_24(){for(let e=0;e<24;e++)this.children.push(new a(this,this.elem,e))}create_clock_12(){t("<span />").addClass("am").text("A.M.").appendTo(this.elem);let e=t("<div />").addClass("am").appendTo(this.elem);t("<span />").addClass("pm").text("P.M.").appendTo(this.elem);let i=t("<div />").addClass("pm").appendTo(this.elem);for(let t=0;t<12;t++)this.children.push(new a(this,e,t,"AM"));for(let e=0;e<12;e++)this.children.push(new a(this,i,e,"PM"));this.elem.css("display","block")}}class h extends o{constructor(e,i,s){super(e,t("<div />").addClass("minutes-content")),this.step=s;let l=60/s;if(l<=32){let e="1fr ".repeat(Math.ceil(l/4));this.elem.css("grid-template-columns",e)}else this.elem.css("grid-template-columns","1fr ".repeat(10)),24===e.clock?t("div.hours-content",e.dd_elem).css({"grid-template-columns":"1fr 1fr 1fr 1fr",width:"110px"}):t("div.am, div.pm",e.dd_elem).css({"grid-template-columns":"1fr 1fr 1fr 1fr"});for(let e=0;e<l;e++)this.children.push(new d(this,this.elem,e*s));let r=t("<div />").addClass("header").text(e.translate("minute"));t("<div />").addClass("timepicker-minutes").append(r).append(this.elem).appendTo(i)}}class c{static initialize(e){t("input.timepicker",e).each(function(){let e=t(this);void 0!==window.yafowil_array&&window.yafowil_array.inside_template(e)||(e.attr("spellcheck",!1),new c(e,{language:e.data("time-locale"),clock:e.data("time-clock"),step:e.data("time-minutes_step")}))})}constructor(e,i){e.data("yafowil-timepicker",this),this.elem=e,this.language=i.language||"en",this.clock=i.clock||24,this.period=null,this.hour="",this.minute="",i.step<=0||i.step>60||"number"!=typeof i.step?this.step=5:this.step=i.step,this.trigger_elem=t("<button />").addClass("timepicker-trigger btn btn-default").text("...").insertAfter(e);let s=this.dd_elem=t("<div />").addClass("timepicker-dropdown").insertAfter(e),l=t("<div />").addClass("timepicker-container").appendTo(s);this.hours=new n(this,l),this.minutes=new h(this,l,this.step),this.validate(),this.place=this.place.bind(this),this.place(),this.show_dropdown=this.show_dropdown.bind(this),this.elem.on("focus",this.show_dropdown),this.toggle_dropdown=this.toggle_dropdown.bind(this),this.trigger_elem.on("click",this.toggle_dropdown),this.hide_dropdown=this.hide_dropdown.bind(this),t(document).on("click",this.hide_dropdown),this.on_keypress=this.on_keypress.bind(this),this.elem.on("keypress",this.on_keypress),this.validate=this.validate.bind(this),this.elem.on("keyup",this.validate),t(window).on("resize",this.place);let r=t.Event("timepicker_created",{widget:this});this.elem.trigger(r),void 0!==window.ts&&window.ts.ajax.attach(this,e)}unload(){void 0!==window.ts&&ts.deprecate("yafowil.widget.timepicker.unload","yafowil.widget.timepicker.destroy","yafowil 2.1"),this.destroy()}get hour(){return this._hour}set hour(e){this._hour=e,this.set_time()}get minute(){return this._minute}set minute(e){this._minute=e,this.set_time()}place(){let e=this.elem.offset().left,i=this.elem.offset().top,s=this.dd_elem.outerWidth(),l=this.elem.outerWidth(),r=i+this.elem.outerHeight()+250,o=e+s;if(this.dd_elem.css("transform","translateX(0px)"),r>t(document).height()){let e=this.dd_elem.outerHeight()+9;this.dd_elem.css("top",`-${e}px`)}if(e+l-s<0){let e=o-t(window).width();this.dd_elem.css("transform",`translateX(-${e}px)`)}else o>t(window).width()&&this.dd_elem.css("transform",`translateX(calc(-100% + ${l}px))`)}set_time(){""!==this.hour&&""!==this.minute&&(24===this.clock?this.elem.val(`${this.hour}:${this.minute}`):12===this.clock&&this.elem.val(`${this.hour}:${this.minute}${this.period}`),this.elem.trigger("change"),this.hour="",this.minute="",this.dd_elem.hide())}hide_dropdown(e){e.target!==this.elem[0]&&e.target!==this.trigger_elem[0]&&0===t(e.target).closest(this.dd_elem).length&&this.dd_elem.hide()}show_dropdown(e){this.dd_elem.show()}toggle_dropdown(e){e.preventDefault(),this.dd_elem.toggle()}on_keypress(e){e.preventDefault();let t=this.elem.val(),i=e.target.selectionStart;if("Enter"===e.key&&(this.dd_elem.hide(),this.elem.blur()),i<=4)e.key.match(new RegExp("[0-9]"))&&(this.elem.val(t+e.key),2===i&&this.elem.val(`${t}:${e.key}`));else if(5===i&&12===this.clock){["a","A","p","P"].includes(e.key)&&this.elem.val(t+e.key)}else 6===i&&12===this.clock&&("m"!==e.key&&"M"!==e.key||this.elem.val(t+e.key))}validate(){if(!this.elem.val())return;let e=this.elem.val(),t=new RegExp(/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/),i=new RegExp(/^(?:0?\d|1[012]):[0-5]\d[apAP][mM]$/),s=e.substr(0,2),l=parseInt(s),r=e.substr(3,2),o=parseInt(r)/this.step;if(24===this.clock){if(!e.match(t)||e.length<5)return}else if(12===this.clock){if(!e.match(i)||e.length<7)return;let t=e.substr(5).toUpperCase();this.period="PM"===t?"PM":"AM","PM"===t&&(l+=12)}this.hours.children[l].on_click();let a=this.minutes.children[o];a?a.on_click():this.minutes.unselect_all()}translate(e){let t=this.constructor.locales;return(t[this.language]||t.en)[e]}destroy(){t(document).off("click",this.hide_dropdown),this.hours.unload_all(),this.minutes.unload_all(),this.dd_elem.remove()}}function p(e,t){c.initialize(t)}function m(){void 0!==window.yafowil_array&&window.yafowil_array.on_array_event("on_add",p)}return c.locales={en:{hour:"Hour",minute:"Minute"},de:{hour:"Stunde",minute:"Minute"}},t(function(){void 0!==window.ts?(ts.ajax.register(i.initialize,!0),ts.ajax.register(c.initialize,!0)):void 0!==window.bdajax?(bdajax.register(i.initialize,!0),bdajax.register(c.initialize,!0)):(i.initialize(),c.initialize()),l(),m()}),e.DatepickerWidget=i,e.TimepickerButton=r,e.TimepickerButtonContainer=o,e.TimepickerHour=a,e.TimepickerHours=n,e.TimepickerMinute=d,e.TimepickerMinutes=h,e.TimepickerWidget=c,e.register_datepicker_array_subscribers=l,e.register_timepicker_array_subscribers=m,Object.defineProperty(e,"__esModule",{value:!0}),window.yafowil=window.yafowil||{},window.yafowil.datetime=e,e}({},jQuery);