yafowil.widget.datetime 2.0a2__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 (123) hide show
  1. yafowil_widget_datetime-2.0.2/.gitignore +20 -0
  2. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/CHANGES.rst +69 -0
  3. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/LICENSE.rst +1 -1
  4. yafowil_widget_datetime-2.0.2/PKG-INFO +60 -0
  5. yafowil_widget_datetime-2.0.2/README.rst +36 -0
  6. yafowil_widget_datetime-2.0.2/pyproject.toml +70 -0
  7. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/__init__.py +192 -0
  8. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/example.py +44 -1
  9. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/de/LC_MESSAGES/yafowil.widget.datetime.mo +0 -0
  10. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/de/LC_MESSAGES/yafowil.widget.datetime.po +15 -10
  11. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/en/LC_MESSAGES/yafowil.widget.datetime.mo +0 -0
  12. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/en/LC_MESSAGES/yafowil.widget.datetime.po +15 -10
  13. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/locales/yafowil.widget.datetime.pot +16 -15
  14. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/bootstrap5/datepicker.min.css +1 -0
  15. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/bootstrap5/timepicker.min.css +1 -0
  16. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/bootstrap5/widget.js +603 -0
  17. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/bootstrap5/widget.min.js +1 -0
  18. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/default/datepicker.min.css +1 -0
  19. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/default/timepicker.min.css +1 -0
  20. {yafowil.widget.datetime-2.0a2/src/yafowil/widget/datetime/resources → yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/default}/widget.js +39 -7
  21. yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/default/widget.min.js +1 -0
  22. {yafowil.widget.datetime-2.0a2/src/yafowil/widget/datetime/resources → yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/vanillajs-datepicker}/datepicker.js +1049 -728
  23. yafowil.widget.datetime-2.0a2/src/yafowil/widget/datetime/tests.py → yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/tests/test_widget.py +107 -86
  24. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/widget.py +70 -10
  25. yafowil.widget.datetime-2.0a2/MANIFEST.in +0 -3
  26. yafowil.widget.datetime-2.0a2/PKG-INFO +0 -288
  27. yafowil.widget.datetime-2.0a2/README.rst +0 -20
  28. yafowil.widget.datetime-2.0a2/setup.cfg +0 -4
  29. yafowil.widget.datetime-2.0a2/setup.py +0 -65
  30. yafowil.widget.datetime-2.0a2/src/yafowil/__init__.py +0 -1
  31. yafowil.widget.datetime-2.0a2/src/yafowil/widget/__init__.py +0 -1
  32. yafowil.widget.datetime-2.0a2/src/yafowil/widget/datetime/__init__.py +0 -92
  33. yafowil.widget.datetime-2.0a2/src/yafowil/widget/datetime/resources/datepicker.css +0 -296
  34. yafowil.widget.datetime-2.0a2/src/yafowil/widget/datetime/resources/timepicker.css +0 -101
  35. yafowil.widget.datetime-2.0a2/src/yafowil/widget/datetime/resources/widget.min.js +0 -1
  36. yafowil.widget.datetime-2.0a2/src/yafowil.widget.datetime.egg-info/PKG-INFO +0 -288
  37. yafowil.widget.datetime-2.0a2/src/yafowil.widget.datetime.egg-info/SOURCES.txt +0 -109
  38. yafowil.widget.datetime-2.0a2/src/yafowil.widget.datetime.egg-info/dependency_links.txt +0 -1
  39. yafowil.widget.datetime-2.0a2/src/yafowil.widget.datetime.egg-info/entry_points.txt +0 -3
  40. yafowil.widget.datetime-2.0a2/src/yafowil.widget.datetime.egg-info/namespace_packages.txt +0 -2
  41. yafowil.widget.datetime-2.0a2/src/yafowil.widget.datetime.egg-info/not-zip-safe +0 -1
  42. yafowil.widget.datetime-2.0a2/src/yafowil.widget.datetime.egg-info/requires.txt +0 -7
  43. yafowil.widget.datetime-2.0a2/src/yafowil.widget.datetime.egg-info/top_level.txt +0 -1
  44. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ar-tn.js +0 -0
  45. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ar.js +0 -0
  46. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/az.js +0 -0
  47. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/bg.js +0 -0
  48. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/bm.js +0 -0
  49. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/bn.js +0 -0
  50. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/br.js +0 -0
  51. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/bs.js +0 -0
  52. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ca.js +0 -0
  53. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/cs.js +0 -0
  54. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/cy.js +0 -0
  55. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/da.js +0 -0
  56. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/de.js +0 -0
  57. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/el.js +0 -0
  58. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-AU.js +0 -0
  59. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-CA.js +0 -0
  60. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-GB.js +0 -0
  61. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-IE.js +0 -0
  62. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-NZ.js +0 -0
  63. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/en-ZA.js +0 -0
  64. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/eo.js +0 -0
  65. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/es.js +0 -0
  66. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/et.js +0 -0
  67. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/eu.js +0 -0
  68. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fa.js +0 -0
  69. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fi.js +0 -0
  70. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fo.js +0 -0
  71. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fr-CH.js +0 -0
  72. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/fr.js +0 -0
  73. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/gl.js +0 -0
  74. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/he.js +0 -0
  75. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/hi.js +0 -0
  76. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/hr.js +0 -0
  77. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/hu.js +0 -0
  78. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/hy.js +0 -0
  79. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/id.js +0 -0
  80. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/is.js +0 -0
  81. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/it-CH.js +0 -0
  82. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/it.js +0 -0
  83. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ja.js +0 -0
  84. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ka.js +0 -0
  85. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/kk.js +0 -0
  86. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/km.js +0 -0
  87. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ko.js +0 -0
  88. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/lt.js +0 -0
  89. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/lv.js +0 -0
  90. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/me.js +0 -0
  91. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/mk.js +0 -0
  92. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/mn.js +0 -0
  93. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/mr.js +0 -0
  94. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ms.js +0 -0
  95. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/nl-BE.js +0 -0
  96. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/nl.js +0 -0
  97. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/no.js +0 -0
  98. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/oc.js +0 -0
  99. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/pl.js +0 -0
  100. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/pt-BR.js +0 -0
  101. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/pt.js +0 -0
  102. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ro.js +0 -0
  103. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ru.js +0 -0
  104. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/si.js +0 -0
  105. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sk.js +0 -0
  106. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sl.js +0 -0
  107. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sq.js +0 -0
  108. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sr-latn.js +0 -0
  109. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sr.js +0 -0
  110. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sv.js +0 -0
  111. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/sw.js +0 -0
  112. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/ta.js +0 -0
  113. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/tg.js +0 -0
  114. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/th.js +0 -0
  115. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/tk.js +0 -0
  116. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/tr.js +0 -0
  117. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/uk.js +0 -0
  118. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/uz-cyrl.js +0 -0
  119. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/uz-latn.js +0 -0
  120. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/vi.js +0 -0
  121. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/zh-CN.js +0 -0
  122. {yafowil.widget.datetime-2.0a2 → yafowil_widget_datetime-2.0.2}/src/yafowil/widget/datetime/resources/locales/zh-TW.js +0 -0
  123. {yafowil.widget.datetime-2.0a2/src/yafowil/widget/datetime/resources → yafowil_widget_datetime-2.0.2/src/yafowil/widget/datetime/resources/vanillajs-datepicker}/datepicker.min.js +0 -0
@@ -0,0 +1,20 @@
1
+ *.egg-info
2
+ *.pyc
3
+ *.pyo
4
+ /.coverage
5
+ /.mxmake/
6
+ /build
7
+ /constraints-mxdev.txt
8
+ /coverage/
9
+ /dist/
10
+ /htmlcov/
11
+ /js/karma/
12
+ /node_modules/
13
+ /package-lock.json
14
+ /pnpm-lock.yaml
15
+ /py2/
16
+ /py3/
17
+ /pypy3/
18
+ /requirements-mxdev.txt
19
+ /sources/
20
+ /venv/
@@ -1,6 +1,58 @@
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
+
17
+ 2.0.1 (2026-04-28)
18
+ ------------------
19
+
20
+ - Add placeholder to widget.
21
+ [lenadax]
22
+
23
+
24
+ 2.0.0 (2026-02-03)
25
+ ------------------
26
+
27
+ - Refactor package layout to use ``pyproject.toml`` and implicit namespace packages.
28
+ [rnix]
29
+
30
+ - Use ``empty_display_value`` and ``display_class`` widget properties in display
31
+ renderers.
32
+ [lenadax]
33
+
34
+ - Update jQuery to version ``4.0.0-beta.2``.
35
+ [lenadax]
36
+
37
+ - Introduce ``datetime.wrapper_class``, ``datetime.datepicker_wrapper_class`` and
38
+ ``datetime.timepicker_wrapper_class`` widget properties for bootstrap5 styling.
39
+
40
+ - Implement dark theme for ``Bootstrap5`` dark theme mode.
41
+ [lenadax]
42
+
43
+ - Use rollup for bundling scss. Use ``make rollup`` to compile js and scss.
44
+ [lenadax]
45
+
46
+ - Use ``webtestrunner`` instead of ``karma`` for js tests. Use ``make wtr`` to run tests.
47
+ [lenadax]
48
+
49
+ - Use ``pnpm`` as package manager.
50
+ [lenadax]
51
+
52
+ - Create Bootstrap5 widget version.
53
+ [lenadax]
54
+
55
+
4
56
  2.0a2 (2023-09-28)
5
57
  ------------------
6
58
 
@@ -30,6 +82,23 @@ Changes
30
82
  [lenadax]
31
83
 
32
84
  - Rewrite JavaScript using ES6. Utilize vanillajs-datepicker
85
+
86
+
87
+ 1.14 (2025-11-03)
88
+ -----------------
89
+
90
+ - Pin upper versions of dependencies.
91
+ [lenadax]
92
+
93
+
94
+ 1.13 (2022-10-06)
95
+ -----------------
96
+
97
+ - Add support for usage in ``yafowil.widget.array`` - remove date/timepicker
98
+ related css classes ``hasDatepicker, hasTimepicker`` before initialize.
99
+ [lenadax]
100
+
101
+ - Fix case time value is no tuple in ``time_value``.
33
102
  [lenadax]
34
103
 
35
104
 
@@ -2,7 +2,7 @@ License
2
2
  =======
3
3
 
4
4
  Copyright (c) 2010-2021, BlueDynamics Alliance, Austria, Germany, Switzerland
5
- Copyright (c) 2021-2022, Yafowil Contributors
5
+ Copyright (c) 2021-2025, Yafowil Contributors
6
6
  All rights reserved.
7
7
 
8
8
  Redistribution and use in source and binary forms, with or without
@@ -0,0 +1,60 @@
1
+ Metadata-Version: 2.5
2
+ Name: yafowil.widget.datetime
3
+ Version: 2.0.2
4
+ Summary: Datetime Widget for YAFOWIL
5
+ Author-email: Yafowil Contributors <dev@conestack.org>
6
+ License: Simplified BSD
7
+ License-File: LICENSE.rst
8
+ Classifier: Environment :: Web Environment
9
+ Classifier: License :: OSI Approved :: BSD License
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
18
+ Requires-Dist: bda-intellidatetime>1.2.99
19
+ Requires-Dist: yafowil>3.99
20
+ Provides-Extra: test
21
+ Requires-Dist: lxml; extra == 'test'
22
+ Requires-Dist: pytest; extra == 'test'
23
+ Description-Content-Type: text/x-rst
24
+
25
+ .. image:: https://img.shields.io/pypi/v/yafowil.widget.datetime.svg
26
+ :target: https://pypi.python.org/pypi/yafowil.widget.datetime
27
+ :alt: Latest PyPI version
28
+
29
+ .. image:: https://img.shields.io/pypi/dm/yafowil.widget.datetime.svg
30
+ :target: https://pypi.python.org/pypi/yafowil.widget.datetime
31
+ :alt: Number of PyPI downloads
32
+
33
+ .. image:: https://github.com/conestack/yafowil.widget.datetime/actions/workflows/test_py.yaml/badge.svg
34
+ :target: https://github.com/conestack/yafowil.widget.datetime/actions/workflows/test_py.yaml
35
+ :alt: Test yafowil.widget.datetime Python
36
+
37
+ .. image:: https://github.com/conestack/yafowil.widget.datetime/actions/workflows/test_js.yaml/badge.svg
38
+ :target: https://github.com/conestack/yafowil.widget.datetime/actions/workflows/test_js.yaml
39
+ :alt: Test yafowil.widget.datetime JS
40
+
41
+ This is a **datetime widget** for for `YAFOWIL
42
+ <http://pypi.python.org/pypi/yafowil>`_
43
+
44
+ It utilizes
45
+ `vanillajs datepicker <https://github.com/mymth/vanillajs-datepicker/releases/tag/v1.1.4>`_.
46
+ Included are the basic datepicker Javascripts and a slightly modified version
47
+ of the datepicker bootstrap CSS.
48
+
49
+ - `Documentation <http://docs.yafowil.info/en/latest/blueprints.html#datetime>`_
50
+ - `DEMO - see it Live <http://demo.yafowil.info/++widget++yafowil.widget.datetime/index.html>`_
51
+
52
+
53
+ Contributors
54
+ ============
55
+
56
+ - Robert Niederrreiter
57
+
58
+ - Georg Bernhard
59
+
60
+ - Lena Daxenbichler
@@ -0,0 +1,36 @@
1
+ .. image:: https://img.shields.io/pypi/v/yafowil.widget.datetime.svg
2
+ :target: https://pypi.python.org/pypi/yafowil.widget.datetime
3
+ :alt: Latest PyPI version
4
+
5
+ .. image:: https://img.shields.io/pypi/dm/yafowil.widget.datetime.svg
6
+ :target: https://pypi.python.org/pypi/yafowil.widget.datetime
7
+ :alt: Number of PyPI downloads
8
+
9
+ .. image:: https://github.com/conestack/yafowil.widget.datetime/actions/workflows/test_py.yaml/badge.svg
10
+ :target: https://github.com/conestack/yafowil.widget.datetime/actions/workflows/test_py.yaml
11
+ :alt: Test yafowil.widget.datetime Python
12
+
13
+ .. image:: https://github.com/conestack/yafowil.widget.datetime/actions/workflows/test_js.yaml/badge.svg
14
+ :target: https://github.com/conestack/yafowil.widget.datetime/actions/workflows/test_js.yaml
15
+ :alt: Test yafowil.widget.datetime JS
16
+
17
+ This is a **datetime widget** for for `YAFOWIL
18
+ <http://pypi.python.org/pypi/yafowil>`_
19
+
20
+ It utilizes
21
+ `vanillajs datepicker <https://github.com/mymth/vanillajs-datepicker/releases/tag/v1.1.4>`_.
22
+ Included are the basic datepicker Javascripts and a slightly modified version
23
+ of the datepicker bootstrap CSS.
24
+
25
+ - `Documentation <http://docs.yafowil.info/en/latest/blueprints.html#datetime>`_
26
+ - `DEMO - see it Live <http://demo.yafowil.info/++widget++yafowil.widget.datetime/index.html>`_
27
+
28
+
29
+ Contributors
30
+ ============
31
+
32
+ - Robert Niederrreiter
33
+
34
+ - Georg Bernhard
35
+
36
+ - Lena Daxenbichler
@@ -0,0 +1,70 @@
1
+ [build-system]
2
+ requires = ["hatchling", "hatch-fancy-pypi-readme"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "yafowil.widget.datetime"
7
+ version = "2.0.2"
8
+ description = "Datetime Widget for YAFOWIL"
9
+ readme = "README.rst"
10
+ license = {text = "Simplified BSD"}
11
+ authors = [{name = "Yafowil Contributors", email = "dev@conestack.org"}]
12
+ classifiers = [
13
+ "License :: OSI Approved :: BSD License",
14
+ "Environment :: Web Environment",
15
+ "Operating System :: OS Independent",
16
+ "Programming Language :: Python",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Programming Language :: Python :: 3.13",
21
+ "Programming Language :: Python :: 3.14",
22
+ "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
23
+ ]
24
+ dependencies = [
25
+ "yafowil>3.99",
26
+ "bda.intellidatetime>1.2.99",
27
+ ]
28
+
29
+ [project.optional-dependencies]
30
+ test = [
31
+ "lxml",
32
+ "pytest",
33
+ ]
34
+
35
+ [project.entry-points."yafowil.plugin"]
36
+ register = "yafowil.widget.datetime:register"
37
+ example = "yafowil.widget.datetime.example:get_example"
38
+
39
+ [tool.hatch.metadata.hooks.fancy-pypi-readme]
40
+ content-type = "text/x-rst"
41
+ fragments = [
42
+ {path = "README.rst"},
43
+ {text = "\n\n"},
44
+ {path = "CHANGES.rst"},
45
+ {text = "\n\n"},
46
+ {path = "LICENSE.rst"},
47
+ ]
48
+
49
+ [tool.hatch.build.targets.sdist]
50
+ exclude = [
51
+ "/.github/",
52
+ "/js/",
53
+ "/Makefile",
54
+ "/mx.ini",
55
+ "/mxmake.yaml",
56
+ "/package.json",
57
+ "/pnpm-lock.yaml",
58
+ "/scss",
59
+ ]
60
+
61
+ [tool.hatch.build.targets.wheel]
62
+ packages = ["src/yafowil"]
63
+
64
+ [tool.pytest.ini_options]
65
+ consider_namespace_packages = true
66
+ addopts = ["--import-mode=importlib"]
67
+ pythonpath = "src"
68
+
69
+ [tool.zest-releaser]
70
+ create-wheel = true
@@ -0,0 +1,192 @@
1
+ from yafowil.base import factory
2
+ from yafowil.utils import entry_point
3
+ import os
4
+ import webresource as wr
5
+
6
+
7
+ resources_dir = os.path.join(os.path.dirname(__file__), 'resources')
8
+
9
+
10
+ ##############################################################################
11
+ # vanillajs-datepicker
12
+ ##############################################################################
13
+
14
+ # webresource ################################################################
15
+
16
+ vanillajs_datepicker_js = wr.ScriptResource(
17
+ name='datepicker-js',
18
+ directory=os.path.join(resources_dir, 'vanillajs-datepicker'),
19
+ path='yafowil-datetime/vanillajs-datepicker',
20
+ resource='datepicker.js',
21
+ compressed='datepicker.min.js'
22
+ )
23
+
24
+
25
+ ##############################################################################
26
+ # locale
27
+ ##############################################################################
28
+
29
+ # webresource ################################################################
30
+
31
+ locale_de = wr.ScriptResource(
32
+ name='datepicker-de-js',
33
+ depends='datepicker-js',
34
+ directory=os.path.join(resources_dir, 'locales'),
35
+ path='yafowil-datetime/locales',
36
+ resource='de.js'
37
+ )
38
+
39
+
40
+ ##############################################################################
41
+ # Default
42
+ ##############################################################################
43
+
44
+ # webresource ################################################################
45
+
46
+ resources = wr.ResourceGroup(
47
+ name='yafowil.widget.datetime',
48
+ directory=resources_dir,
49
+ path='yafowil-datetime'
50
+ )
51
+ resources.add(vanillajs_datepicker_js)
52
+ resources.add(locale_de)
53
+ resources.add(wr.ScriptResource(
54
+ name='yafowil-datetime-js',
55
+ directory=os.path.join(resources_dir, 'default'),
56
+ path='yafowil-datetime/default',
57
+ depends=['jquery-js', 'datepicker-js'],
58
+ resource='widget.js',
59
+ compressed='widget.min.js'
60
+ ))
61
+ resources.add(wr.StyleResource(
62
+ name='yafowil-datepicker-css',
63
+ directory=os.path.join(resources_dir, 'default'),
64
+ path='yafowil-datetime/default',
65
+ resource='datepicker.min.css'
66
+ ))
67
+ resources.add(wr.StyleResource(
68
+ name='yafowil-timepicker-css',
69
+ directory=os.path.join(resources_dir, 'default'),
70
+ path='yafowil-datetime/default',
71
+ resource='timepicker.min.css'
72
+ ))
73
+
74
+ # B/C resources ##############################################################
75
+
76
+ js = [{
77
+ 'group': 'yafowil.widget.datetime.common',
78
+ 'resource': 'vanillajs-datepicker/datepicker.js',
79
+ 'order': 20,
80
+ }, {
81
+ 'group': 'yafowil.widget.datetime.common',
82
+ 'resource': 'locales/de.js',
83
+ 'order': 20,
84
+ }, {
85
+ 'group': 'yafowil.widget.datetime.common',
86
+ 'resource': 'default/widget.js',
87
+ 'order': 20,
88
+ }]
89
+ css = [{
90
+ 'group': 'yafowil.widget.datetime.common',
91
+ 'resource': 'default/datepicker.min.css',
92
+ 'order': 20,
93
+ }, {
94
+ 'group': 'yafowil.widget.datetime.common',
95
+ 'resource': 'default/timepicker.min.css',
96
+ 'order': 20,
97
+ }]
98
+
99
+
100
+ ##############################################################################
101
+ # Bootstrap 5
102
+ ##############################################################################
103
+
104
+ # webresource ################################################################
105
+
106
+ bootstrap5_resources = wr.ResourceGroup(
107
+ name='yafowil.widget.datetime',
108
+ directory=resources_dir,
109
+ path='yafowil-datetime'
110
+ )
111
+ bootstrap5_resources.add(vanillajs_datepicker_js)
112
+ bootstrap5_resources.add(locale_de)
113
+ bootstrap5_resources.add(wr.ScriptResource(
114
+ name='yafowil-datetime-js',
115
+ directory=os.path.join(resources_dir, 'bootstrap5'),
116
+ path='yafowil-datetime/bootstrap5',
117
+ depends=['jquery-js', 'datepicker-js'],
118
+ resource='widget.js',
119
+ compressed='widget.min.js'
120
+ ))
121
+ bootstrap5_resources.add(wr.StyleResource(
122
+ name='yafowil-datepicker-css',
123
+ directory=os.path.join(resources_dir, 'bootstrap5'),
124
+ path='yafowil-datetime/bootstrap5',
125
+ resource='datepicker.min.css'
126
+ ))
127
+ bootstrap5_resources.add(wr.StyleResource(
128
+ name='yafowil-timepicker-css',
129
+ directory=os.path.join(resources_dir, 'bootstrap5'),
130
+ path='yafowil-datetime/bootstrap5',
131
+ resource='timepicker.min.css'
132
+ ))
133
+ # B/C resources ##############################################################
134
+
135
+ bootstrap5_js = [{
136
+ 'group': 'yafowil.widget.datetime.common',
137
+ 'resource': 'vanillajs-datepicker/datepicker.js',
138
+ 'order': 20,
139
+ }, {
140
+ 'group': 'yafowil.widget.datetime.common',
141
+ 'resource': 'locales/de.js',
142
+ 'order': 20,
143
+ }, {
144
+ 'group': 'yafowil.widget.datetime.common',
145
+ 'resource': 'bootstrap5/widget.js',
146
+ 'order': 20,
147
+ }]
148
+ bootstrap5_css = [{
149
+ 'group': 'yafowil.widget.datetime.common',
150
+ 'resource': 'bootstrap5/datepicker.min.css',
151
+ 'order': 20,
152
+ }, {
153
+ 'group': 'yafowil.widget.datetime.common',
154
+ 'resource': 'bootstrap5/timepicker.min.css',
155
+ 'order': 20,
156
+ }]
157
+
158
+
159
+ ##############################################################################
160
+ # Registration
161
+ ##############################################################################
162
+
163
+ @entry_point(order=10)
164
+ def register():
165
+ from yafowil.widget.datetime import widget # noqa
166
+
167
+ widget_name = 'yafowil.widget.datetime'
168
+
169
+ # Default
170
+ factory.register_theme(
171
+ 'default',
172
+ widget_name,
173
+ resources_dir,
174
+ js=js,
175
+ css=css
176
+ )
177
+ factory.register_resources('default', widget_name, resources)
178
+
179
+ # Bootstrap 5
180
+ factory.register_theme(
181
+ ['bootstrap5'],
182
+ widget_name,
183
+ resources_dir,
184
+ js=bootstrap5_js,
185
+ css=bootstrap5_css
186
+ )
187
+
188
+ factory.register_resources(
189
+ ['bootstrap5'],
190
+ widget_name,
191
+ bootstrap5_resources
192
+ )
@@ -1,4 +1,5 @@
1
1
  from yafowil.base import factory
2
+ import datetime
2
3
 
3
4
 
4
5
  DOC_DATE = """
@@ -137,10 +138,52 @@ def datetime_example():
137
138
  }
138
139
 
139
140
 
141
+ DOC_DISPLAY = """
142
+ Display Mode
143
+ ------------
144
+
145
+ The widget's display mode renders the widget value inside an uneditable div.
146
+
147
+ The wrapper div can receive additional classes via the ``display_class``
148
+ widget attribute.
149
+
150
+ .. code-block:: python
151
+
152
+ value = datetime.datetime.now()
153
+
154
+ datetime = factory('#field:datetime', value=value, mode='display', props={
155
+ 'label': 'Datetime Picker in Display Mode',
156
+ 'locale': 'de',
157
+ 'datepicker': True,
158
+ 'time': True,
159
+ 'timepicker': True,
160
+ # 'display_class': 'my-additional-class'
161
+ })
162
+ """
163
+
164
+
165
+ def display_example():
166
+ value = datetime.datetime.now()
167
+ form = factory('fieldset', name='yafowil.widget.datetime.display')
168
+ form['datetime'] = factory('#field:datetime', value=value, mode='display', props={
169
+ 'label': 'Datetime Picker in Display Mode',
170
+ 'locale': 'de',
171
+ 'datepicker': True,
172
+ 'time': True,
173
+ 'timepicker': True
174
+ })
175
+ return {
176
+ 'widget': form,
177
+ 'doc': DOC_DISPLAY,
178
+ 'title': 'Display Mode'
179
+ }
180
+
181
+
140
182
  def get_example():
141
183
  return [
142
184
  date_example(),
143
185
  time_example(),
144
186
  minutes_example(),
145
- datetime_example()
187
+ datetime_example(),
188
+ display_example()
146
189
  ]
@@ -9,7 +9,7 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: yafowil.widget.datetime 1.5.2\n"
11
11
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12
- "POT-Creation-Date: 2014-07-30 16:45+0200\n"
12
+ "POT-Creation-Date: 2025-10-28 10:11+0100\n"
13
13
  "PO-Revision-Date: 2014-04-30 18:38+0200\n"
14
14
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
15
  "Language-Team: de <LL@li.org>\n"
@@ -21,17 +21,22 @@ msgstr ""
21
21
  "Generated-By: Babel 1.3\n"
22
22
 
23
23
  #. Default: Not a valid time input.
24
- #: src/yafowil/widget/datetime/widget.py:47
24
+ #: src/yafowil/widget/datetime/widget.py:41
25
25
  msgid "input_not_valid_time"
26
26
  msgstr "Eingabe ist keine gültige Zeit"
27
27
 
28
+ #. Default: Failed to parse time input.
29
+ #: src/yafowil/widget/datetime/widget.py:52
30
+ msgid "failed_to_parse_time"
31
+ msgstr "Eingabe konnte nicht als Zeiteingabe identifiziert werden"
32
+
28
33
  #. Default: Hours not a number.
29
- #: src/yafowil/widget/datetime/widget.py:65
34
+ #: src/yafowil/widget/datetime/widget.py:61
30
35
  msgid "hours_not_a_number"
31
36
  msgstr "Stundeneingabe ist keie Zahl"
32
37
 
33
38
  #. Default: Minutes not a number.
34
- #: src/yafowil/widget/datetime/widget.py:71
39
+ #: src/yafowil/widget/datetime/widget.py:69
35
40
  msgid "minutes_not_a_number"
36
41
  msgstr "Minuteneingabe ist keine Zahl"
37
42
 
@@ -41,16 +46,16 @@ msgid "invalid_hours_range"
41
46
  msgstr "Stundeneingabe nicht im gültigen Bereich 0..23"
42
47
 
43
48
  #. Default: Minutes must be in range 0..59.
44
- #: src/yafowil/widget/datetime/widget.py:82
49
+ #: src/yafowil/widget/datetime/widget.py:84
45
50
  msgid "invalid_minutes_range"
46
51
  msgstr "Minuteneingabe nicht im gültigen Bereich 0..23"
47
52
 
48
53
  #. Default: Not a valid date input.
49
- #: src/yafowil/widget/datetime/widget.py:226
54
+ #: src/yafowil/widget/datetime/widget.py:285
50
55
  msgid "input_not_valid_date"
51
56
  msgstr "Eingabe ist kein gültiges Datum"
52
57
 
53
- #. Default: Failed to parse time input.
54
- #: src/yafowil/widget/datetime/widget.py:58
55
- msgid "failed_to_parse_time"
56
- msgstr "Eingabe konnte nicht als Zeiteingabe identifiziert werden"
58
+ #. Default: hh:mm
59
+ #: src/yafowil/widget/datetime/widget.py
60
+ msgid "time_format_placeholder"
61
+ msgstr "hh:mm"
@@ -9,7 +9,7 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: yafowil.widget.datetime 1.5.2\n"
11
11
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12
- "POT-Creation-Date: 2014-07-30 16:45+0200\n"
12
+ "POT-Creation-Date: 2025-10-28 10:11+0100\n"
13
13
  "PO-Revision-Date: 2014-04-30 18:38+0200\n"
14
14
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
15
  "Language-Team: en <LL@li.org>\n"
@@ -21,17 +21,22 @@ msgstr ""
21
21
  "Generated-By: Babel 1.3\n"
22
22
 
23
23
  #. Default: Not a valid time input.
24
- #: src/yafowil/widget/datetime/widget.py:47
24
+ #: src/yafowil/widget/datetime/widget.py:41
25
25
  msgid "input_not_valid_time"
26
26
  msgstr "Not a valid time input."
27
27
 
28
+ #. Default: Failed to parse time input.
29
+ #: src/yafowil/widget/datetime/widget.py:52
30
+ msgid "failed_to_parse_time"
31
+ msgstr "Failed to parse time input."
32
+
28
33
  #. Default: Hours not a number.
29
- #: src/yafowil/widget/datetime/widget.py:65
34
+ #: src/yafowil/widget/datetime/widget.py:61
30
35
  msgid "hours_not_a_number"
31
36
  msgstr "Hours not a number."
32
37
 
33
38
  #. Default: Minutes not a number.
34
- #: src/yafowil/widget/datetime/widget.py:71
39
+ #: src/yafowil/widget/datetime/widget.py:69
35
40
  msgid "minutes_not_a_number"
36
41
  msgstr "Minutes not a number."
37
42
 
@@ -41,16 +46,16 @@ msgid "invalid_hours_range"
41
46
  msgstr "Hours must be in range 0..23."
42
47
 
43
48
  #. Default: Minutes must be in range 0..59.
44
- #: src/yafowil/widget/datetime/widget.py:82
49
+ #: src/yafowil/widget/datetime/widget.py:84
45
50
  msgid "invalid_minutes_range"
46
51
  msgstr "Minutes must be in range 0..59."
47
52
 
48
53
  #. Default: Not a valid date input.
49
- #: src/yafowil/widget/datetime/widget.py:226
54
+ #: src/yafowil/widget/datetime/widget.py:285
50
55
  msgid "input_not_valid_date"
51
56
  msgstr "Not a valid date input."
52
57
 
53
- #. Default: Failed to parse time input.
54
- #: src/yafowil/widget/datetime/widget.py:58
55
- msgid "failed_to_parse_time"
56
- msgstr "Failed to parse time input."
58
+ #. Default: hh:mm
59
+ #: src/yafowil/widget/datetime/widget.py
60
+ msgid "time_format_placeholder"
61
+ msgstr "hh:mm"