@anglr/datetime 3.0.0-beta.20220315103241 → 3.0.0-beta.20220328062817

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 (244) hide show
  1. package/changelog.md +86 -0
  2. package/date-fns/src/misc/tokens.d.ts.map +1 -1
  3. package/date-fns/src/services/dateFnsDateApi.service.d.ts.map +1 -1
  4. package/es2015/date-fns/src/misc/tokens.js +12 -1
  5. package/es2015/date-fns/src/misc/tokens.js.map +1 -1
  6. package/es2015/date-fns/src/services/dateFnsDateApi.service.js +99 -5
  7. package/es2015/date-fns/src/services/dateFnsDateApi.service.js.map +1 -1
  8. package/es2015/moment/src/misc/tokens.js +12 -1
  9. package/es2015/moment/src/misc/tokens.js.map +1 -1
  10. package/es2015/moment/src/services/momentDateApi.service.js +90 -0
  11. package/es2015/moment/src/services/momentDateApi.service.js.map +1 -1
  12. package/es2015/src/index.js +1 -0
  13. package/es2015/src/index.js.map +1 -1
  14. package/es2015/src/misc/datetime.interface.js.map +1 -1
  15. package/es2015/src/misc/tokens.js +12 -1
  16. package/es2015/src/misc/tokens.js.map +1 -1
  17. package/es2015/src/modules/datePipes.module.js +2 -7
  18. package/es2015/src/modules/datePipes.module.js.map +1 -1
  19. package/es2015/src/picker/components/clockTimePicker/clockTimePicker.component.js +14 -0
  20. package/es2015/src/picker/components/clockTimePicker/clockTimePicker.component.js.map +1 -0
  21. package/es2015/src/picker/components/clockTimePicker/clockTimePicker.interface.js +2 -0
  22. package/es2015/src/picker/components/clockTimePicker/clockTimePicker.interface.js.map +1 -0
  23. package/es2015/src/picker/components/dayPicker/dayPicker.component.js +49 -13
  24. package/es2015/src/picker/components/dayPicker/dayPicker.component.js.map +1 -1
  25. package/es2015/src/picker/components/monthPicker/monthPicker.component.js +5 -4
  26. package/es2015/src/picker/components/monthPicker/monthPicker.component.js.map +1 -1
  27. package/es2015/src/picker/components/picker/picker.component.js +3 -2
  28. package/es2015/src/picker/components/picker/picker.component.js.map +1 -1
  29. package/es2015/src/picker/components/pickerBase.component.js +15 -120
  30. package/es2015/src/picker/components/pickerBase.component.js.map +1 -1
  31. package/es2015/src/picker/components/pickerImplBase.component.js +145 -0
  32. package/es2015/src/picker/components/pickerImplBase.component.js.map +1 -0
  33. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.component.js +144 -0
  34. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.component.js.map +1 -0
  35. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.data.js +341 -0
  36. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.data.js.map +1 -0
  37. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.interface.js +2 -0
  38. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.interface.js.map +1 -0
  39. package/es2015/src/picker/components/yearPicker/yearPicker.component.js +5 -4
  40. package/es2015/src/picker/components/yearPicker/yearPicker.component.js.map +1 -1
  41. package/es2015/src/picker/directives/index.js +4 -0
  42. package/es2015/src/picker/directives/index.js.map +1 -0
  43. package/es2015/src/picker/directives/loopScroll/loopScroll.directive.js +200 -0
  44. package/es2015/src/picker/directives/loopScroll/loopScroll.directive.js.map +1 -0
  45. package/es2015/src/picker/directives/loopScroll/loopScroll.interface.js +3 -0
  46. package/es2015/src/picker/directives/loopScroll/loopScroll.interface.js.map +1 -0
  47. package/es2015/src/picker/directives/loopScrollData/loopScrollData.directive.js +23 -0
  48. package/es2015/src/picker/directives/loopScrollData/loopScrollData.directive.js.map +1 -0
  49. package/es2015/src/picker/interfaces.js +1 -0
  50. package/es2015/src/picker/interfaces.js.map +1 -1
  51. package/es2015/src/picker/misc/datetimePicker.interface.js.map +1 -1
  52. package/es2015/src/picker/modules/picker.module.js +21 -4
  53. package/es2015/src/picker/modules/picker.module.js.map +1 -1
  54. package/es2015/src/picker/types.js +2 -0
  55. package/es2015/src/picker/types.js.map +1 -1
  56. package/es2015/src/selector/components/inputDateTime/inputDateTime.component.js +16 -2
  57. package/es2015/src/selector/components/inputDateTime/inputDateTime.component.js.map +1 -1
  58. package/es2015/src/selector/components/selector/selector.component.js +25 -12
  59. package/es2015/src/selector/components/selector/selector.component.js.map +1 -1
  60. package/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +6 -2
  61. package/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js.map +1 -1
  62. package/es2015/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js +134 -0
  63. package/es2015/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js.map +1 -0
  64. package/es2015/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js.map +1 -1
  65. package/es2015/src/selector/misc/datetimeSelector.interface.js.map +1 -1
  66. package/es2015/src/selector/misc/tokens.js.map +1 -1
  67. package/es2015/src/selector/modules/selector.module.js +9 -4
  68. package/es2015/src/selector/modules/selector.module.js.map +1 -1
  69. package/es2015/src/selector/types.js +1 -0
  70. package/es2015/src/selector/types.js.map +1 -1
  71. package/es2015/src/services/dateApi.interface.js.map +1 -1
  72. package/es2015/src/services/datePositionParser.service.js +14 -0
  73. package/es2015/src/services/datePositionParser.service.js.map +1 -1
  74. package/es2015/src/services/dateTimeRelativeParser.service.js +15 -1
  75. package/es2015/src/services/dateTimeRelativeParser.service.js.map +1 -1
  76. package/es2015/src/services/dateValueProvider.service.js +10 -5
  77. package/es2015/src/services/dateValueProvider.service.js.map +1 -1
  78. package/es2015/src/services/formatProvider.interface.js.map +1 -1
  79. package/es2020/date-fns/src/misc/tokens.js +12 -1
  80. package/es2020/date-fns/src/misc/tokens.js.map +1 -1
  81. package/es2020/date-fns/src/services/dateFnsDateApi.service.js +99 -5
  82. package/es2020/date-fns/src/services/dateFnsDateApi.service.js.map +1 -1
  83. package/es2020/moment/src/misc/tokens.js +12 -1
  84. package/es2020/moment/src/misc/tokens.js.map +1 -1
  85. package/es2020/moment/src/services/momentDateApi.service.js +90 -0
  86. package/es2020/moment/src/services/momentDateApi.service.js.map +1 -1
  87. package/es2020/src/index.js +1 -0
  88. package/es2020/src/index.js.map +1 -1
  89. package/es2020/src/misc/datetime.interface.js.map +1 -1
  90. package/es2020/src/misc/tokens.js +12 -1
  91. package/es2020/src/misc/tokens.js.map +1 -1
  92. package/es2020/src/modules/datePipes.module.js +2 -7
  93. package/es2020/src/modules/datePipes.module.js.map +1 -1
  94. package/es2020/src/picker/components/clockTimePicker/clockTimePicker.component.js +14 -0
  95. package/es2020/src/picker/components/clockTimePicker/clockTimePicker.component.js.map +1 -0
  96. package/es2020/src/picker/components/clockTimePicker/clockTimePicker.interface.js +2 -0
  97. package/es2020/src/picker/components/clockTimePicker/clockTimePicker.interface.js.map +1 -0
  98. package/es2020/src/picker/components/dayPicker/dayPicker.component.js +49 -13
  99. package/es2020/src/picker/components/dayPicker/dayPicker.component.js.map +1 -1
  100. package/es2020/src/picker/components/monthPicker/monthPicker.component.js +5 -4
  101. package/es2020/src/picker/components/monthPicker/monthPicker.component.js.map +1 -1
  102. package/es2020/src/picker/components/picker/picker.component.js +3 -2
  103. package/es2020/src/picker/components/picker/picker.component.js.map +1 -1
  104. package/es2020/src/picker/components/pickerBase.component.js +15 -120
  105. package/es2020/src/picker/components/pickerBase.component.js.map +1 -1
  106. package/es2020/src/picker/components/pickerImplBase.component.js +145 -0
  107. package/es2020/src/picker/components/pickerImplBase.component.js.map +1 -0
  108. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.component.js +138 -0
  109. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.component.js.map +1 -0
  110. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.data.js +341 -0
  111. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.data.js.map +1 -0
  112. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.interface.js +2 -0
  113. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.interface.js.map +1 -0
  114. package/es2020/src/picker/components/yearPicker/yearPicker.component.js +5 -4
  115. package/es2020/src/picker/components/yearPicker/yearPicker.component.js.map +1 -1
  116. package/es2020/src/picker/directives/index.js +4 -0
  117. package/es2020/src/picker/directives/index.js.map +1 -0
  118. package/es2020/src/picker/directives/loopScroll/loopScroll.directive.js +191 -0
  119. package/es2020/src/picker/directives/loopScroll/loopScroll.directive.js.map +1 -0
  120. package/es2020/src/picker/directives/loopScroll/loopScroll.interface.js +3 -0
  121. package/es2020/src/picker/directives/loopScroll/loopScroll.interface.js.map +1 -0
  122. package/es2020/src/picker/directives/loopScrollData/loopScrollData.directive.js +23 -0
  123. package/es2020/src/picker/directives/loopScrollData/loopScrollData.directive.js.map +1 -0
  124. package/es2020/src/picker/interfaces.js +1 -0
  125. package/es2020/src/picker/interfaces.js.map +1 -1
  126. package/es2020/src/picker/misc/datetimePicker.interface.js.map +1 -1
  127. package/es2020/src/picker/modules/picker.module.js +21 -4
  128. package/es2020/src/picker/modules/picker.module.js.map +1 -1
  129. package/es2020/src/picker/types.js +2 -0
  130. package/es2020/src/picker/types.js.map +1 -1
  131. package/es2020/src/selector/components/inputDateTime/inputDateTime.component.js +16 -2
  132. package/es2020/src/selector/components/inputDateTime/inputDateTime.component.js.map +1 -1
  133. package/es2020/src/selector/components/selector/selector.component.js +22 -11
  134. package/es2020/src/selector/components/selector/selector.component.js.map +1 -1
  135. package/es2020/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +6 -2
  136. package/es2020/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js.map +1 -1
  137. package/es2020/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js +133 -0
  138. package/es2020/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js.map +1 -0
  139. package/es2020/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js.map +1 -1
  140. package/es2020/src/selector/misc/datetimeSelector.interface.js.map +1 -1
  141. package/es2020/src/selector/misc/tokens.js.map +1 -1
  142. package/es2020/src/selector/modules/selector.module.js +9 -4
  143. package/es2020/src/selector/modules/selector.module.js.map +1 -1
  144. package/es2020/src/selector/types.js +1 -0
  145. package/es2020/src/selector/types.js.map +1 -1
  146. package/es2020/src/services/dateApi.interface.js.map +1 -1
  147. package/es2020/src/services/datePositionParser.service.js +14 -0
  148. package/es2020/src/services/datePositionParser.service.js.map +1 -1
  149. package/es2020/src/services/dateTimeRelativeParser.service.js +15 -1
  150. package/es2020/src/services/dateTimeRelativeParser.service.js.map +1 -1
  151. package/es2020/src/services/dateValueProvider.service.js +10 -5
  152. package/es2020/src/services/dateValueProvider.service.js.map +1 -1
  153. package/es2020/src/services/formatProvider.interface.js.map +1 -1
  154. package/moment/src/misc/tokens.d.ts.map +1 -1
  155. package/moment/src/services/momentDateApi.service.d.ts.map +1 -1
  156. package/package.json +4 -3
  157. package/src/dark.scss +31 -28
  158. package/src/index.d.ts +1 -0
  159. package/src/index.d.ts.map +1 -1
  160. package/src/misc/datetime.interface.d.ts +1 -1
  161. package/src/misc/datetime.interface.d.ts.map +1 -1
  162. package/src/misc/tokens.d.ts.map +1 -1
  163. package/src/modules/datePipes.module.d.ts +3 -4
  164. package/src/modules/datePipes.module.d.ts.map +1 -1
  165. package/src/picker/components/clockTimePicker/clockTimePicker.component.css +0 -0
  166. package/src/picker/components/clockTimePicker/clockTimePicker.component.d.ts +9 -0
  167. package/src/picker/components/clockTimePicker/clockTimePicker.component.d.ts.map +1 -0
  168. package/src/picker/components/clockTimePicker/clockTimePicker.component.html +0 -0
  169. package/src/picker/components/clockTimePicker/clockTimePicker.interface.d.ts +6 -0
  170. package/src/picker/components/clockTimePicker/clockTimePicker.interface.d.ts.map +1 -0
  171. package/src/picker/components/dayPicker/dayPicker.component.d.ts +6 -0
  172. package/src/picker/components/dayPicker/dayPicker.component.d.ts.map +1 -1
  173. package/src/picker/components/dayPicker/dayPicker.component.html +11 -7
  174. package/src/picker/components/monthPicker/monthPicker.component.d.ts.map +1 -1
  175. package/src/picker/components/monthPicker/monthPicker.component.html +6 -6
  176. package/src/picker/components/picker/picker.component.css +4 -0
  177. package/src/picker/components/picker/picker.component.d.ts +3 -3
  178. package/src/picker/components/picker/picker.component.d.ts.map +1 -1
  179. package/src/picker/components/pickerBase.component.d.ts +7 -97
  180. package/src/picker/components/pickerBase.component.d.ts.map +1 -1
  181. package/src/picker/components/pickerImplBase.component.d.ts +128 -0
  182. package/src/picker/components/pickerImplBase.component.d.ts.map +1 -0
  183. package/src/picker/components/rollerTimePicker/rollerTimePicker.component.css +40 -0
  184. package/src/picker/components/rollerTimePicker/rollerTimePicker.component.d.ts +71 -0
  185. package/src/picker/components/rollerTimePicker/rollerTimePicker.component.d.ts.map +1 -0
  186. package/src/picker/components/rollerTimePicker/rollerTimePicker.component.html +41 -0
  187. package/src/picker/components/rollerTimePicker/rollerTimePicker.data.d.ts +4 -0
  188. package/src/picker/components/rollerTimePicker/rollerTimePicker.data.d.ts.map +1 -0
  189. package/src/picker/components/rollerTimePicker/rollerTimePicker.interface.d.ts +6 -0
  190. package/src/picker/components/rollerTimePicker/rollerTimePicker.interface.d.ts.map +1 -0
  191. package/src/picker/components/yearPicker/yearPicker.component.d.ts.map +1 -1
  192. package/src/picker/components/yearPicker/yearPicker.component.html +6 -6
  193. package/src/picker/directives/index.d.ts +4 -0
  194. package/src/picker/directives/index.d.ts.map +1 -0
  195. package/src/picker/directives/loopScroll/loopScroll.directive.d.ts +73 -0
  196. package/src/picker/directives/loopScroll/loopScroll.directive.d.ts.map +1 -0
  197. package/src/picker/directives/loopScroll/loopScroll.interface.d.ts +14 -0
  198. package/src/picker/directives/loopScroll/loopScroll.interface.d.ts.map +1 -0
  199. package/src/picker/directives/loopScrollData/loopScrollData.directive.d.ts +16 -0
  200. package/src/picker/directives/loopScrollData/loopScrollData.directive.d.ts.map +1 -0
  201. package/src/picker/interfaces.d.ts +1 -0
  202. package/src/picker/interfaces.d.ts.map +1 -1
  203. package/src/picker/misc/datetimePicker.interface.d.ts +14 -10
  204. package/src/picker/misc/datetimePicker.interface.d.ts.map +1 -1
  205. package/src/picker/modules/picker.module.d.ts +10 -7
  206. package/src/picker/modules/picker.module.d.ts.map +1 -1
  207. package/src/picker/types.d.ts +2 -0
  208. package/src/picker/types.d.ts.map +1 -1
  209. package/src/selector/components/inputDateTime/inputDateTime.component.d.ts +2 -2
  210. package/src/selector/components/inputDateTime/inputDateTime.component.d.ts.map +1 -1
  211. package/src/selector/components/inputDateTime/inputDateTime.component.html +1 -1
  212. package/src/selector/components/selector/selector.component.d.ts +7 -6
  213. package/src/selector/components/selector/selector.component.d.ts.map +1 -1
  214. package/src/selector/components/selector/selector.component.html +6 -5
  215. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.d.ts +1 -1
  216. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.d.ts.map +1 -1
  217. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.html +1 -1
  218. package/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.d.ts +80 -0
  219. package/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.d.ts.map +1 -0
  220. package/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.d.ts.map +1 -1
  221. package/src/selector/misc/datetimeSelector.interface.d.ts +16 -3
  222. package/src/selector/misc/datetimeSelector.interface.d.ts.map +1 -1
  223. package/src/selector/misc/tokens.d.ts +1 -1
  224. package/src/selector/misc/tokens.d.ts.map +1 -1
  225. package/src/selector/modules/selector.module.d.ts +5 -4
  226. package/src/selector/modules/selector.module.d.ts.map +1 -1
  227. package/src/selector/types.d.ts +1 -0
  228. package/src/selector/types.d.ts.map +1 -1
  229. package/src/services/dateApi.interface.d.ts +72 -0
  230. package/src/services/dateApi.interface.d.ts.map +1 -1
  231. package/src/services/datePositionParser.service.d.ts +3 -3
  232. package/src/services/datePositionParser.service.d.ts.map +1 -1
  233. package/src/services/dateTimeRelativeParser.service.d.ts +8 -0
  234. package/src/services/dateTimeRelativeParser.service.d.ts.map +1 -1
  235. package/src/services/dateValueProvider.service.d.ts.map +1 -1
  236. package/src/services/formatProvider.interface.d.ts +48 -4
  237. package/src/services/formatProvider.interface.d.ts.map +1 -1
  238. package/version.bak +1 -1
  239. package/es2015/src/pipes/asRequiredType.js +0 -22
  240. package/es2015/src/pipes/asRequiredType.js.map +0 -1
  241. package/es2020/src/pipes/asRequiredType.js +0 -22
  242. package/es2020/src/pipes/asRequiredType.js.map +0 -1
  243. package/src/pipes/asRequiredType.d.ts +0 -21
  244. package/src/pipes/asRequiredType.d.ts.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { isBlank } from '@jscrpt/common';
2
3
  import * as i0 from "@angular/core";
3
4
  /**
4
5
  * Service used for parsing date
@@ -48,6 +49,9 @@ export class DefaultDatePositionParser {
48
49
  * @param cursorPosition - Current cursor position
49
50
  */
50
51
  next(date, cursorPosition) {
52
+ if (isBlank(date)) {
53
+ return null;
54
+ }
51
55
  //non strict format
52
56
  if (this._hasSeparator) {
53
57
  let useNext = false;
@@ -85,6 +89,9 @@ export class DefaultDatePositionParser {
85
89
  * @param cursorPosition - Current cursor position
86
90
  */
87
91
  previous(date, cursorPosition) {
92
+ if (isBlank(date)) {
93
+ return null;
94
+ }
88
95
  //non strict format
89
96
  if (this._hasSeparator) {
90
97
  let useNext = false;
@@ -122,6 +129,13 @@ export class DefaultDatePositionParser {
122
129
  * @param cursorPosition - Current cursor position
123
130
  */
124
131
  parse(date, cursorPosition) {
132
+ if (isBlank(date)) {
133
+ return {
134
+ part: '',
135
+ positionFrom: 0,
136
+ positionTo: 0
137
+ };
138
+ }
125
139
  //non strict format
126
140
  if (this._hasSeparator) {
127
141
  //fix cursor position if is clicked on separator
@@ -1 +1 @@
1
- {"version":3,"file":"datePositionParser.service.js","sourceRoot":"","sources":["../../../src/services/datePositionParser.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;;AAIzC;;GAEG;AAEH,MAAM,OAAO,yBAAyB;IAElC,oEAAoE;IAEpE;;;OAGG;IACI,YAAY,CAAC,MAAc;QAE9B,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;;sHAXQ,yBAAyB;0HAAzB,yBAAyB,cADb,MAAM;2FAClB,yBAAyB;kBADrC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;AAehC;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAmBlC,iEAAiE;IACjE,YAAsB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAlBrC,sEAAsE;QAEtE;;WAEG;QACO,kBAAa,GAAY,KAAK,CAAC;QAEzC;;WAEG;QACO,sBAAiB,GAAa,EAAE,CAAC;QAE3C;;WAEG;QACO,4BAAuB,GAAsD,EAAE,CAAC;QAKtF,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,2GAA2G;IAE3G;;;;OAIG;IACI,IAAI,CAAC,IAAY,EAAE,cAAsB;QAE5C,mBAAmB;QACnB,IAAG,IAAI,CAAC,aAAa,EACrB;YACI,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,OAAM,IAAI,EACV;gBACI,IAAG,cAAc,IAAI,IAAI,CAAC,MAAM,EAChC;oBACI,OAAO,IAAI,CAAC;iBACf;gBAED,IAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC3C;oBACI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;iBAC3C;gBAED,IAAG,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC/B;oBACI,OAAO,GAAG,IAAI,CAAC;iBAClB;gBAED,cAAc,EAAE,CAAC;aACpB;SACJ;QACD,eAAe;aAEf;YACI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE3E,KAAI,MAAM,KAAK,IAAI,OAAO,EAC1B;gBACI,IAAG,cAAc,GAAG,KAAK,EACzB;oBACI,OAAO;wBACH,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,IAAI;wBAC9C,YAAY,EAAE,KAAK;wBACnB,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,MAAM;qBACjE,CAAC;iBACL;aACJ;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,IAAY,EAAE,cAAsB;QAEhD,mBAAmB;QACnB,IAAG,IAAI,CAAC,aAAa,EACrB;YACI,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,OAAM,IAAI,EACV;gBACI,IAAG,cAAc,GAAG,CAAC,EACrB;oBACI,OAAO,IAAI,CAAC;iBACf;gBAED,IAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC3C;oBACI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;iBAC3C;gBAED,IAAG,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC/B;oBACI,OAAO,GAAG,IAAI,CAAC;iBAClB;gBAED,cAAc,EAAE,CAAC;aACpB;SACJ;QACD,eAAe;aAEf;YACI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAErF,KAAI,MAAM,KAAK,IAAI,OAAO,EAC1B;gBACI,IAAG,cAAc,GAAG,KAAK,EACzB;oBACI,OAAO;wBACH,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,IAAI;wBAC9C,YAAY,EAAE,KAAK;wBACnB,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,MAAM;qBACjE,CAAC;iBACL;aACJ;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAY,EAAE,cAAsB;QAE7C,mBAAmB;QACnB,IAAG,IAAI,CAAC,aAAa,EACrB;YACI,gDAAgD;YAChD,IAAG,cAAc,IAAI,IAAI,CAAC,MAAM;gBAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,EAC3C;gBACI,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,cAAc,EAAE,CAAC;gBAEjB,OAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC1C;oBACI,IAAG,cAAc,IAAI,IAAI,CAAC,MAAM,EAChC;wBACI,IAAG,UAAU,EACb;4BACI,OAAO;gCACH,IAAI,EAAE,EAAE;gCACR,YAAY,EAAE,CAAC;gCACf,UAAU,EAAE,CAAC;6BAChB,CAAC;yBACL;wBAED,UAAU,GAAG,IAAI,CAAC;wBAClB,cAAc,GAAG,CAAC,CAAC;qBACtB;oBAED,cAAc,EAAE,CAAC;iBACpB;aACJ;YAED,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/F,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,IAAI,eAAe,GAAG,CAAC,CAAC;YAExB,KAAI,MAAM,GAAG,IAAI,OAAO,EACxB;gBACI,8BAA8B;gBAC9B,IAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACxB;oBACI,eAAe,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;oBAEjC,MAAM;iBACT;gBAED,aAAa,EAAE,CAAC;gBAEhB,WAAW;gBACX,IAAG,CAAC,GAAG,CAAC,MAAM,EACd;oBACI,SAAS;iBACZ;gBAED,SAAS,EAAE,CAAC;gBACZ,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC;aAC/B;YAED,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBACvC,YAAY,EAAE,aAAa;gBAC3B,UAAU,EAAE,aAAa,GAAG,eAAe;aAC9C,CAAC;SACL;QACD,eAAe;aAEf;YACI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAErF,KAAI,MAAM,KAAK,IAAI,OAAO,EAC1B;gBACI,IAAG,cAAc,IAAI,KAAK,EAC1B;oBACI,OAAO;wBACH,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,IAAI;wBAC9C,YAAY,EAAE,KAAK;wBACnB,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,MAAM;qBACjE,CAAC;iBACL;aACJ;SACJ;QAED,OAAO;YACH,IAAI,EAAE,EAAE;YACR,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;SAChB,CAAC;IACN,CAAC;IAED;;OAEG;IACO,WAAW;QAEjB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtD,mBAAmB;QACnB,IAAG,IAAI,CAAC,aAAa,EACrB;YACI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;iBAC9D,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;iBACpB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B;QACD,eAAe;aAEf;YACI,IAAI,QAAQ,GAAgB,IAAI,CAAC;YACjC,IAAI,SAAS,GAAW,CAAC,CAAC;YAE1B,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAC3C;gBACI,WAAW;gBACX,IAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,EAC9B;oBACI,IAAG,CAAC,GAAG,CAAC,EACR;wBACI,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;qBAClE;oBAED,SAAS,GAAG,CAAC,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAE3B,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;wBAC/B;4BACI,MAAM,EAAE,CAAC;4BACT,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;yBACxB,CAAC;iBACL;aACJ;YAED,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;SACpF;IACL,CAAC;CACJ","sourcesContent":["import {Injectable} from '@angular/core';\n\nimport {DatePositionParser, DatePositionParserResult} from './datePositionParser.interface';\n\n/**\n * Service used for parsing date\n */\n@Injectable({providedIn: 'root'})\nexport class DatePositionParserService\n{\n //######################### public methods #########################\n\n /**\n * Creates parser instance for specified format\n * @param format - Format to be used for parsing date string\n */\n public createParser(format: string): DatePositionParser\n {\n return new DefaultDatePositionParser(format);\n }\n}\n\n/**\n * Default implementation of DatePositionParser\n */\nexport class DefaultDatePositionParser implements DatePositionParser\n{\n //######################### protected fields #########################\n\n /**\n * Indication whether format contains separators\n */\n protected _hasSeparator: boolean = false;\n\n /**\n * Array of date parts of parsed date format\n */\n protected _datePartsIndexes: string[] = [];\n\n /**\n * Object storing indexes for strict date parts of parsed date format\n */\n protected _strictDatePartsIndexes: {[index: number]: {part: string, length: number}} = {};\n\n //######################### constructor #########################\n constructor(protected _format: string)\n {\n this._initialize();\n }\n\n //######################### public methods - implementation of DatePositionParser #########################\n\n /**\n * Parse date as string and returns information about position and selected part of date, while moving it to next part, if it was last part returns null\n * @param date - String date to be parsed\n * @param cursorPosition - Current cursor position\n */\n public next(date: string, cursorPosition: number): null|DatePositionParserResult\n {\n //non strict format\n if(this._hasSeparator)\n {\n let useNext = false;\n\n while(true)\n {\n if(cursorPosition == date.length)\n {\n return null;\n }\n\n if(useNext && !isNaN(+date[cursorPosition]))\n {\n return this.parse(date, cursorPosition);\n }\n\n if(isNaN(+date[cursorPosition]))\n {\n useNext = true;\n }\n\n cursorPosition++;\n }\n }\n //strict format\n else\n {\n const indexes = Object.keys(this._strictDatePartsIndexes).map(itm => +itm);\n\n for(const index of indexes)\n {\n if(cursorPosition < index)\n {\n return {\n part: this._strictDatePartsIndexes[index].part,\n positionFrom: index,\n positionTo: index + this._strictDatePartsIndexes[index].length\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Parse date as string and returns information about position and selected part of date, while moving it to previous part, if it was first part returns null\n * @param date - String date to be parsed\n * @param cursorPosition - Current cursor position\n */\n public previous(date: string, cursorPosition: number): null|DatePositionParserResult\n {\n //non strict format\n if(this._hasSeparator)\n {\n let useNext = false;\n\n while(true)\n {\n if(cursorPosition < 0)\n {\n return null;\n }\n\n if(useNext && !isNaN(+date[cursorPosition]))\n {\n return this.parse(date, cursorPosition);\n }\n\n if(isNaN(+date[cursorPosition]))\n {\n useNext = true;\n }\n\n cursorPosition--;\n }\n }\n //strict format\n else\n {\n const indexes = Object.keys(this._strictDatePartsIndexes).reverse().map(itm => +itm);\n\n for(const index of indexes)\n {\n if(cursorPosition > index)\n {\n return {\n part: this._strictDatePartsIndexes[index].part,\n positionFrom: index,\n positionTo: index + this._strictDatePartsIndexes[index].length\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Parse date as string and returns information about positions and selected part of date\n * @param date - String date to be parsed\n * @param cursorPosition - Current cursor position\n */\n public parse(date: string, cursorPosition: number): DatePositionParserResult\n {\n //non strict format\n if(this._hasSeparator)\n {\n //fix cursor position if is clicked on separator\n if(cursorPosition != date.length &&\n /[^0-9ɵ]/.test(date[cursorPosition]) &&\n /[^0-9ɵ]/.test(date[cursorPosition - 1]))\n {\n let breakCycle = false;\n cursorPosition++;\n\n while(/[^0-9ɵ]/.test(date[cursorPosition]))\n {\n if(cursorPosition >= date.length)\n {\n if(breakCycle)\n {\n return {\n part: '',\n positionFrom: 0,\n positionTo: 0\n };\n }\n\n breakCycle = true;\n cursorPosition = 0;\n }\n\n cursorPosition++;\n }\n }\n\n const updateDate = [date.substr(0, cursorPosition), 'ɵ', date.substr(cursorPosition)].join('');\n const indexed = updateDate.replace(/[^0-9ɵ]/g, ' ').split(' ');\n let partIndex = 0;\n let startPosition = 0;\n let selectionLength = 0;\n\n for(const itm of indexed)\n {\n //this segment contains cursor\n if(itm.indexOf('ɵ') >= 0)\n {\n selectionLength = itm.length - 1;\n\n break;\n }\n\n startPosition++;\n\n //separator\n if(!itm.length)\n {\n continue;\n }\n\n partIndex++;\n startPosition += itm.length;\n }\n\n return {\n part: this._datePartsIndexes[partIndex],\n positionFrom: startPosition,\n positionTo: startPosition + selectionLength\n };\n }\n //strict format\n else\n {\n const indexes = Object.keys(this._strictDatePartsIndexes).reverse().map(itm => +itm);\n\n for(const index of indexes)\n {\n if(cursorPosition >= index)\n {\n return {\n part: this._strictDatePartsIndexes[index].part,\n positionFrom: index,\n positionTo: index + this._strictDatePartsIndexes[index].length\n };\n }\n }\n }\n\n return {\n part: '',\n positionFrom: 0,\n positionTo: 0\n };\n }\n\n /**\n * Initialize parser, process format\n */\n protected _initialize()\n {\n this._hasSeparator = /[^yqmwdhs]/i.test(this._format);\n\n //non strict format\n if(this._hasSeparator)\n {\n this._datePartsIndexes = this._format.replace(/[^yqmwdhs]+/gi, ' ')\n .split(' ')\n .filter(itm => !!itm)\n .map(itm => itm[0]);\n }\n //strict format\n else\n {\n let lastPart: string|null = null;\n let lastIndex: number = 0;\n\n for(let x = 0; x < this._format.length; x++)\n {\n //next part\n if(this._format[x] != lastPart)\n {\n if(x > 0)\n {\n this._strictDatePartsIndexes[lastIndex].length = x - lastIndex;\n }\n\n lastIndex = x;\n lastPart = this._format[x];\n\n this._strictDatePartsIndexes[x] =\n {\n length: 0,\n part: this._format[x]\n };\n }\n }\n\n this._strictDatePartsIndexes[lastIndex].length = this._format.length - lastIndex;\n }\n }\n}"]}
1
+ {"version":3,"file":"datePositionParser.service.js","sourceRoot":"","sources":["../../../src/services/datePositionParser.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {Injectable} from '@angular/core';\nimport {isBlank} from '@jscrpt/common';\n\nimport {DatePositionParser, DatePositionParserResult} from './datePositionParser.interface';\n\n/**\n * Service used for parsing date\n */\n@Injectable({providedIn: 'root'})\nexport class DatePositionParserService\n{\n //######################### public methods #########################\n\n /**\n * Creates parser instance for specified format\n * @param format - Format to be used for parsing date string\n */\n public createParser(format: string): DatePositionParser\n {\n return new DefaultDatePositionParser(format);\n }\n}\n\n/**\n * Default implementation of DatePositionParser\n */\nexport class DefaultDatePositionParser implements DatePositionParser\n{\n //######################### protected fields #########################\n\n /**\n * Indication whether format contains separators\n */\n protected _hasSeparator: boolean = false;\n\n /**\n * Array of date parts of parsed date format\n */\n protected _datePartsIndexes: string[] = [];\n\n /**\n * Object storing indexes for strict date parts of parsed date format\n */\n protected _strictDatePartsIndexes: {[index: number]: {part: string, length: number}} = {};\n\n //######################### constructor #########################\n constructor(protected _format: string)\n {\n this._initialize();\n }\n\n //######################### public methods - implementation of DatePositionParser #########################\n\n /**\n * Parse date as string and returns information about position and selected part of date, while moving it to next part, if it was last part returns null\n * @param date - String date to be parsed\n * @param cursorPosition - Current cursor position\n */\n public next(date: string|null|undefined, cursorPosition: number): null|DatePositionParserResult\n {\n if(isBlank(date))\n {\n return null;\n }\n\n //non strict format\n if(this._hasSeparator)\n {\n let useNext = false;\n\n while(true)\n {\n if(cursorPosition == date.length)\n {\n return null;\n }\n\n if(useNext && !isNaN(+date[cursorPosition]))\n {\n return this.parse(date, cursorPosition);\n }\n\n if(isNaN(+date[cursorPosition]))\n {\n useNext = true;\n }\n\n cursorPosition++;\n }\n }\n //strict format\n else\n {\n const indexes = Object.keys(this._strictDatePartsIndexes).map(itm => +itm);\n\n for(const index of indexes)\n {\n if(cursorPosition < index)\n {\n return {\n part: this._strictDatePartsIndexes[index].part,\n positionFrom: index,\n positionTo: index + this._strictDatePartsIndexes[index].length\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Parse date as string and returns information about position and selected part of date, while moving it to previous part, if it was first part returns null\n * @param date - String date to be parsed\n * @param cursorPosition - Current cursor position\n */\n public previous(date: string|null|undefined, cursorPosition: number): null|DatePositionParserResult\n {\n if(isBlank(date))\n {\n return null;\n }\n\n //non strict format\n if(this._hasSeparator)\n {\n let useNext = false;\n\n while(true)\n {\n if(cursorPosition < 0)\n {\n return null;\n }\n\n if(useNext && !isNaN(+date[cursorPosition]))\n {\n return this.parse(date, cursorPosition);\n }\n\n if(isNaN(+date[cursorPosition]))\n {\n useNext = true;\n }\n\n cursorPosition--;\n }\n }\n //strict format\n else\n {\n const indexes = Object.keys(this._strictDatePartsIndexes).reverse().map(itm => +itm);\n\n for(const index of indexes)\n {\n if(cursorPosition > index)\n {\n return {\n part: this._strictDatePartsIndexes[index].part,\n positionFrom: index,\n positionTo: index + this._strictDatePartsIndexes[index].length\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Parse date as string and returns information about positions and selected part of date\n * @param date - String date to be parsed\n * @param cursorPosition - Current cursor position\n */\n public parse(date: string|null|undefined, cursorPosition: number): DatePositionParserResult\n {\n if(isBlank(date))\n {\n return {\n part: '',\n positionFrom: 0,\n positionTo: 0\n };\n }\n\n //non strict format\n if(this._hasSeparator)\n {\n //fix cursor position if is clicked on separator\n if(cursorPosition != date.length &&\n /[^0-9ɵ]/.test(date[cursorPosition]) &&\n /[^0-9ɵ]/.test(date[cursorPosition - 1]))\n {\n let breakCycle = false;\n cursorPosition++;\n\n while(/[^0-9ɵ]/.test(date[cursorPosition]))\n {\n if(cursorPosition >= date.length)\n {\n if(breakCycle)\n {\n return {\n part: '',\n positionFrom: 0,\n positionTo: 0\n };\n }\n\n breakCycle = true;\n cursorPosition = 0;\n }\n\n cursorPosition++;\n }\n }\n\n const updateDate = [date.substr(0, cursorPosition), 'ɵ', date.substr(cursorPosition)].join('');\n const indexed = updateDate.replace(/[^0-9ɵ]/g, ' ').split(' ');\n let partIndex = 0;\n let startPosition = 0;\n let selectionLength = 0;\n\n for(const itm of indexed)\n {\n //this segment contains cursor\n if(itm.indexOf('ɵ') >= 0)\n {\n selectionLength = itm.length - 1;\n\n break;\n }\n\n startPosition++;\n\n //separator\n if(!itm.length)\n {\n continue;\n }\n\n partIndex++;\n startPosition += itm.length;\n }\n\n return {\n part: this._datePartsIndexes[partIndex],\n positionFrom: startPosition,\n positionTo: startPosition + selectionLength\n };\n }\n //strict format\n else\n {\n const indexes = Object.keys(this._strictDatePartsIndexes).reverse().map(itm => +itm);\n\n for(const index of indexes)\n {\n if(cursorPosition >= index)\n {\n return {\n part: this._strictDatePartsIndexes[index].part,\n positionFrom: index,\n positionTo: index + this._strictDatePartsIndexes[index].length\n };\n }\n }\n }\n\n return {\n part: '',\n positionFrom: 0,\n positionTo: 0\n };\n }\n\n /**\n * Initialize parser, process format\n */\n protected _initialize(): void\n {\n this._hasSeparator = /[^yqmwdhs]/i.test(this._format);\n\n //non strict format\n if(this._hasSeparator)\n {\n this._datePartsIndexes = this._format.replace(/[^yqmwdhs]+/gi, ' ')\n .split(' ')\n .filter(itm => !!itm)\n .map(itm => itm[0]);\n }\n //strict format\n else\n {\n let lastPart: string|null = null;\n let lastIndex: number = 0;\n\n for(let x = 0; x < this._format.length; x++)\n {\n //next part\n if(this._format[x] != lastPart)\n {\n if(x > 0)\n {\n this._strictDatePartsIndexes[lastIndex].length = x - lastIndex;\n }\n\n lastIndex = x;\n lastPart = this._format[x];\n\n this._strictDatePartsIndexes[x] =\n {\n length: 0,\n part: this._format[x]\n };\n }\n }\n\n this._strictDatePartsIndexes[lastIndex].length = this._format.length - lastIndex;\n }\n }\n}"]}
@@ -14,9 +14,17 @@ export class DateTimeRelativeParser {
14
14
  /**
15
15
  * Tries to parse relative value and returns parsed TDate, otherwise returns input value
16
16
  * @param value - Value to be parsed
17
+ *
18
+ * @summary
19
+ * i - for minutes
20
+ * h - for hours
21
+ * d - for days
22
+ * w - for weeks
23
+ * m - for months
24
+ * y - for years
17
25
  */
18
26
  parse(value) {
19
- const regex = /([+-])\s*(\d+)\s*([hdwmy])/;
27
+ const regex = /([+-])\s*(\d+)\s*([ihdwmy])/;
20
28
  //relative date provided
21
29
  if (isString(value) && regex.test(value)) {
22
30
  const matches = regex.exec(value);
@@ -26,8 +34,14 @@ export class DateTimeRelativeParser {
26
34
  this._dateApi = this._dateApi ?? this._injector.get(DATE_API);
27
35
  const now = this._dateApi.now();
28
36
  switch (period) {
37
+ case 'i':
38
+ {
39
+ operation == '+' ? now.addMinutes(+amount).endOfMinute() : now.subtractMinutes(+amount).startOfMinute();
40
+ break;
41
+ }
29
42
  case 'h':
30
43
  {
44
+ operation == '+' ? now.addHours(+amount).endOfHour() : now.subtractHours(+amount).startOfHour();
31
45
  break;
32
46
  }
33
47
  case 'd':
@@ -1 +1 @@
1
- {"version":3,"file":"dateTimeRelativeParser.service.js","sourceRoot":"","sources":["../../../src/services/dateTimeRelativeParser.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;;AAGxC;;GAEG;AAEH,MAAM,OAAO,sBAAsB;IAS/B,iEAAiE;IACjE,YAAsB,SAAmB;QAAnB,cAAS,GAAT,SAAS,CAAU;IAEzC,CAAC;IAED,oEAAoE;IAEpE;;;OAGG;IACI,KAAK,CAAC,KAAsB;QAE/B,MAAM,KAAK,GAAG,4BAA4B,CAAC;QAE3C,wBAAwB;QACxB,IAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACvC;YACI,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,OAAQ,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,OAAQ,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,OAAQ,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAEhC,QAAO,MAAM,EACb;gBACI,KAAK,GAAG;oBACR;wBACI,MAAM;qBACT;gBACD,KAAK,GAAG;oBACR;wBACI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBAE5F,MAAM;qBACT;gBACD,KAAK,GAAG;oBACR;wBACI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBAE9F,MAAM;qBACT;gBACD,KAAK,GAAG;oBACR;wBACI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBAEhG,MAAM;qBACT;gBACD,KAAK,GAAG;oBACR;wBACI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBAE9F,MAAM;qBACT;aACJ;YAED,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;SACrB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;;mHAtEQ,sBAAsB;uHAAtB,sBAAsB,cADV,MAAM;2FAClB,sBAAsB;kBADlC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC","sourcesContent":["import {Injectable, Injector} from '@angular/core';\nimport {isString} from '@jscrpt/common';\n\nimport {DATE_API} from '../misc/tokens';\nimport {DateApi, DateValue} from './dateApi.interface';\n\n/**\n * Service used for parsing relative date time strings\n */\n@Injectable({providedIn: 'root'})\nexport class DateTimeRelativeParser<TDate = any>\n{\n //######################### protected fields #########################\n \n /**\n * Date api for handling\n */\n protected _dateApi?: DateApi<TDate>;\n\n //######################### constructor #########################\n constructor(protected _injector: Injector)\n {\n }\n\n //######################### public methods #########################\n\n /**\n * Tries to parse relative value and returns parsed TDate, otherwise returns input value\n * @param value - Value to be parsed\n */\n public parse(value: TDate|DateValue): TDate|DateValue\n {\n const regex = /([+-])\\s*(\\d+)\\s*([hdwmy])/;\n\n //relative date provided\n if(isString(value) && regex.test(value))\n {\n const matches = regex.exec(value);\n const operation = matches![1];\n const amount = matches![2];\n const period = matches![3];\n this._dateApi = this._dateApi ?? this._injector.get(DATE_API);\n const now = this._dateApi.now();\n\n switch(period)\n {\n case 'h':\n {\n break;\n }\n case 'd':\n {\n operation == '+' ? now.addDays(+amount).endOfDay() : now.subtractDays(+amount).startOfDay();\n\n break;\n }\n case 'w':\n {\n operation == '+' ? now.addWeeks(+amount).endOfDay() : now.subtractWeeks(+amount).startOfDay();\n\n break;\n }\n case 'm':\n {\n operation == '+' ? now.addMonths(+amount).endOfDay() : now.subtractMonths(+amount).startOfDay();\n\n break;\n }\n case 'y':\n {\n operation == '+' ? now.addYears(+amount).endOfDay() : now.subtractYears(+amount).startOfDay();\n\n break;\n }\n }\n\n value = now.value;\n }\n\n return value;\n }\n}"]}
1
+ {"version":3,"file":"dateTimeRelativeParser.service.js","sourceRoot":"","sources":["../../../src/services/dateTimeRelativeParser.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {Injectable, Injector} from '@angular/core';\nimport {isString} from '@jscrpt/common';\n\nimport {DATE_API} from '../misc/tokens';\nimport {DateApi, DateValue} from './dateApi.interface';\n\n/**\n * Service used for parsing relative date time strings\n */\n@Injectable({providedIn: 'root'})\nexport class DateTimeRelativeParser<TDate = any>\n{\n //######################### protected fields #########################\n \n /**\n * Date api for handling\n */\n protected _dateApi?: DateApi<TDate>;\n\n //######################### constructor #########################\n constructor(protected _injector: Injector)\n {\n }\n\n //######################### public methods #########################\n\n /**\n * Tries to parse relative value and returns parsed TDate, otherwise returns input value\n * @param value - Value to be parsed\n * \n * @summary\n * i - for minutes\n * h - for hours\n * d - for days\n * w - for weeks\n * m - for months\n * y - for years\n */\n public parse(value: TDate|DateValue): TDate|DateValue\n {\n const regex = /([+-])\\s*(\\d+)\\s*([ihdwmy])/;\n\n //relative date provided\n if(isString(value) && regex.test(value))\n {\n const matches = regex.exec(value);\n const operation = matches![1];\n const amount = matches![2];\n const period = matches![3];\n this._dateApi = this._dateApi ?? this._injector.get(DATE_API);\n const now = this._dateApi.now();\n\n switch(period)\n {\n case 'i':\n {\n operation == '+' ? now.addMinutes(+amount).endOfMinute() : now.subtractMinutes(+amount).startOfMinute();\n\n break;\n }\n case 'h':\n {\n operation == '+' ? now.addHours(+amount).endOfHour() : now.subtractHours(+amount).startOfHour();\n\n break;\n }\n case 'd':\n {\n operation == '+' ? now.addDays(+amount).endOfDay() : now.subtractDays(+amount).startOfDay();\n\n break;\n }\n case 'w':\n {\n operation == '+' ? now.addWeeks(+amount).endOfDay() : now.subtractWeeks(+amount).startOfDay();\n\n break;\n }\n case 'm':\n {\n operation == '+' ? now.addMonths(+amount).endOfDay() : now.subtractMonths(+amount).startOfDay();\n\n break;\n }\n case 'y':\n {\n operation == '+' ? now.addYears(+amount).endOfDay() : now.subtractYears(+amount).startOfDay();\n\n break;\n }\n }\n\n value = now.value;\n }\n\n return value;\n }\n}"]}
@@ -19,11 +19,16 @@ export class DateValueProvider {
19
19
  const val = this._dateApi.getValue(value, format);
20
20
  const fullFormat = this._dateApi.getFormat(format);
21
21
  let start = value;
22
- let end;
23
- //day
24
- if (fullFormat.indexOf('d') >= 0 || fullFormat.indexOf('D') >= 0) {
25
- start = val.startOfDay().value;
26
- end = val.endOfDay().value;
22
+ let end = value;
23
+ //minute
24
+ if (fullFormat.indexOf('m') >= 0) {
25
+ start = val.startOfMinute().value;
26
+ end = val.endOfMinute().value;
27
+ }
28
+ //hour
29
+ else if (fullFormat.indexOf('H') >= 0) {
30
+ start = val.startOfHour().value;
31
+ end = val.endOfHour().value;
27
32
  }
28
33
  //week
29
34
  else if (fullFormat.indexOf('w') >= 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"dateValueProvider.service.js","sourceRoot":"","sources":["../../../src/services/dateValueProvider.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;;AAGxC;;GAEG;AAEH,MAAM,OAAO,iBAAiB;IAE1B,iEAAiE;IACjE,YAAwC,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAEhE,CAAC;IAED,oEAAoE;IAEpE;;;;OAIG;IACI,QAAQ,CAAC,KAAY,EAAE,MAAc;QAExC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,KAAK,GAAU,KAAK,CAAC;QACzB,IAAI,GAAU,CAAC;QAEf,KAAK;QACL,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAC/D;YACI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;YAC/B,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC;SAC9B;QACD,MAAM;aACD,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACpC;YACI,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;YAChC,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;SAC/B;QACD,OAAO;aACF,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACpC;YACI,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC;YACjC,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;SAChC;QACD,MAAM;aACD,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACpE;YACI,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;YAChC,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;SAC/B;QAED,OAAO;YACH,IAAI,EAAE,KAAK;YACX,EAAE,EAAE,GAAI;SACX,CAAC;IACN,CAAC;;8GAlDQ,iBAAiB,kBAGN,QAAQ;kHAHnB,iBAAiB,cADL,MAAM;2FAClB,iBAAiB;kBAD7B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;0BAIf,MAAM;2BAAC,QAAQ","sourcesContent":["import {Inject, Injectable} from '@angular/core';\n\nimport {DateTimeValue} from '../misc/datetime.interface';\nimport {DATE_API} from '../misc/tokens';\nimport {DateApi} from './dateApi.interface';\n\n/**\n * Class used for obtaining DateTimeValue for various formats\n */\n@Injectable({providedIn: 'root'})\nexport class DateValueProvider<TDate = any>\n{\n //######################### constructor #########################\n constructor(@Inject(DATE_API) protected _dateApi: DateApi<TDate>)\n {\n }\n\n //######################### public methods #########################\n\n /**\n * Gets DateTimeValue from single value based on format\n * @param value - Current value to be converted to ranged value\n * @param format - Format that is requested to be displayed, it tells what range should be created\n */\n public getValue(value: TDate, format: string): DateTimeValue<TDate>\n {\n const val = this._dateApi.getValue(value, format);\n const fullFormat = this._dateApi.getFormat(format);\n let start: TDate = value;\n let end: TDate;\n\n //day\n if(fullFormat.indexOf('d') >= 0 || fullFormat.indexOf('D') >= 0)\n {\n start = val.startOfDay().value;\n end = val.endOfDay().value;\n }\n //week\n else if(fullFormat.indexOf('w') >= 0)\n {\n start = val.startOfWeek().value;\n end = val.endOfWeek().value;\n }\n //month\n else if(fullFormat.indexOf('M') >= 0)\n {\n start = val.startOfMonth().value;\n end = val.endOfMonth().value;\n }\n //year\n else if(fullFormat.indexOf('Y') >= 0 || fullFormat.indexOf('y') >= 0)\n {\n start = val.startOfYear().value;\n end = val.endOfYear().value;\n }\n\n return {\n from: start,\n to: end!\n };\n }\n}"]}
1
+ {"version":3,"file":"dateValueProvider.service.js","sourceRoot":"","sources":["../../../src/services/dateValueProvider.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;;AAGxC;;GAEG;AAEH,MAAM,OAAO,iBAAiB;IAE1B,iEAAiE;IACjE,YAAwC,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAEhE,CAAC;IAED,oEAAoE;IAEpE;;;;OAIG;IACI,QAAQ,CAAC,KAAY,EAAE,MAAc;QAExC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,KAAK,GAAU,KAAK,CAAC;QACzB,IAAI,GAAG,GAAU,KAAK,CAAC;QAEvB,QAAQ;QACR,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAC/B;YACI,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC;YAClC,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;SACjC;QACD,MAAM;aACD,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACpC;YACI,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;YAChC,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;SAC/B;QACD,MAAM;aACD,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACpC;YACI,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;YAChC,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;SAC/B;QACD,OAAO;aACF,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACpC;YACI,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC;YACjC,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;SAChC;QACD,MAAM;aACD,IAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACpE;YACI,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;YAChC,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;SAC/B;QAED,OAAO;YACH,IAAI,EAAE,KAAK;YACX,EAAE,EAAE,GAAG;SACV,CAAC;IACN,CAAC;;8GAxDQ,iBAAiB,kBAGN,QAAQ;kHAHnB,iBAAiB,cADL,MAAM;2FAClB,iBAAiB;kBAD7B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;0BAIf,MAAM;2BAAC,QAAQ","sourcesContent":["import {Inject, Injectable} from '@angular/core';\n\nimport {DateTimeValue} from '../misc/datetime.interface';\nimport {DATE_API} from '../misc/tokens';\nimport {DateApi} from './dateApi.interface';\n\n/**\n * Class used for obtaining DateTimeValue for various formats\n */\n@Injectable({providedIn: 'root'})\nexport class DateValueProvider<TDate = any>\n{\n //######################### constructor #########################\n constructor(@Inject(DATE_API) protected _dateApi: DateApi<TDate>)\n {\n }\n\n //######################### public methods #########################\n\n /**\n * Gets DateTimeValue from single value based on format\n * @param value - Current value to be converted to ranged value\n * @param format - Format that is requested to be displayed, it tells what range should be created\n */\n public getValue(value: TDate, format: string): DateTimeValue<TDate>\n {\n const val = this._dateApi.getValue(value, format);\n const fullFormat = this._dateApi.getFormat(format);\n let start: TDate = value;\n let end: TDate = value;\n\n //minute\n if(fullFormat.indexOf('m') >= 0)\n {\n start = val.startOfMinute().value;\n end = val.endOfMinute().value;\n }\n //hour\n else if(fullFormat.indexOf('H') >= 0)\n {\n start = val.startOfHour().value;\n end = val.endOfHour().value;\n }\n //week\n else if(fullFormat.indexOf('w') >= 0)\n {\n start = val.startOfWeek().value;\n end = val.endOfWeek().value;\n }\n //month\n else if(fullFormat.indexOf('M') >= 0)\n {\n start = val.startOfMonth().value;\n end = val.endOfMonth().value;\n }\n //year\n else if(fullFormat.indexOf('Y') >= 0 || fullFormat.indexOf('y') >= 0)\n {\n start = val.startOfYear().value;\n end = val.endOfYear().value;\n }\n\n return {\n from: start,\n to: end\n };\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"formatProvider.interface.js","sourceRoot":"","sources":["../../../src/services/formatProvider.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Format provider used for obtaining some special formats 'placeholders'\n */\nexport interface FormatProvider\n{\n /**\n * Format placeholder for displaying date\n */\n readonly date: string;\n\n /**\n * Format placeholder for displaying date and time\n */\n readonly dateTime: string;\n\n /**\n * Format placeholder for displaying time\n */\n readonly time: string;\n}"]}
1
+ {"version":3,"file":"formatProvider.interface.js","sourceRoot":"","sources":["../../../src/services/formatProvider.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Format provider used for obtaining common used format 'tokens'\n */\nexport interface FormatProvider\n{\n /**\n * Format token for displaying date\n */\n readonly date: string;\n\n /**\n * Format token for displaying date and time\n */\n readonly dateTime: string;\n\n /**\n * Format token for displaying time\n */\n readonly time: string;\n\n /**\n * Format token for displaying full year\n */\n readonly year: string;\n\n /**\n * Format token for displaying month double digit number\n */\n readonly month: string;\n\n /**\n * Format token for displaying week double digit number\n */\n readonly week: string;\n\n /**\n * Format token for displaying day double digit number\n */\n readonly day: string;\n\n /**\n * Format token for displaying hour (24h format) double digit number\n */\n readonly hour: string;\n\n /**\n * Format token for displaying minute double digit number\n */\n readonly minute: string;\n\n /**\n * Format token for displaying second double digit number\n */\n readonly second: string;\n\n /**\n * Format token for displaying standalone day full name \n */\n readonly dayName: string;\n\n /**\n * Format token for displaying standalone day short name\n */\n readonly dayNameShort: string;\n\n /**\n * Format token for displaying standalone month full name\n */\n readonly monthName: string;\n\n /**\n * Format token for displaying standalone month short name\n */\n readonly monthNameShort: string;\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAG9C;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAWpC,CAAC"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAG9C;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAsBpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"momentDateApi.service.d.ts","sourceRoot":"","sources":["momentDateApi.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AAE1F,OAAO,MAA2B,MAAM,QAAQ,CAAC;;AAigBjD;;GAEG;AACH,qBACa,aAAc,YAAW,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IAG5C,SAAS,CAAC,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAtD,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC;IAM5E;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;IAK9F;;OAEG;IACI,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;IAK1C;;;OAGG;IACI,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAU9C;;OAEG;IACI,kBAAkB,IAAI,OAAO;IAKpC;;OAEG;IACI,aAAa,IAAI,MAAM,EAAE;yCApDvB,aAAa;6CAAb,aAAa;CAwDzB"}
1
+ {"version":3,"file":"momentDateApi.service.d.ts","sourceRoot":"","sources":["momentDateApi.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AAE1F,OAAO,MAA2B,MAAM,QAAQ,CAAC;;AA+oBjD;;GAEG;AACH,qBACa,aAAc,YAAW,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IAG5C,SAAS,CAAC,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAtD,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC;IAM5E;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;IAK9F;;OAEG;IACI,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;IAK1C;;;OAGG;IACI,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAU9C;;OAEG;IACI,kBAAkB,IAAI,OAAO;IAKpC;;OAEG;IACI,aAAa,IAAI,MAAM,EAAE;yCApDvB,aAAa;6CAAb,aAAa;CAwDzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anglr/datetime",
3
- "version": "3.0.0-beta.20220315103241",
3
+ "version": "3.0.0-beta.20220328062817",
4
4
  "description": "Angular library for datetime manipulation components",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -21,6 +21,7 @@
21
21
  "deploy": "npm publish --loglevel error",
22
22
  "deploy:next": "npm publish --tag next --loglevel error",
23
23
  "test": "jest",
24
+ "test:coverage": "jest --coverage",
24
25
  "lint": "eslint src/**/*.ts",
25
26
  "doc": "path-exists docs && npm run doc:generate || echo \"No docs generated!\"",
26
27
  "predoc:generate": "cd docs && git pull && cd ..",
@@ -66,7 +67,7 @@
66
67
  "@angular/animations": ">=13.1.0",
67
68
  "rxjs": ">=6.6.7",
68
69
  "@jscrpt/common": ">=2.2.0",
69
- "@anglr/common": ">=10.0.0",
70
+ "@anglr/common": ">=11.2.0",
70
71
  "moment": "^2.29.1",
71
72
  "date-fns": "^2.27.0",
72
73
  "positions": "^1.6.2",
@@ -79,7 +80,7 @@
79
80
  "@angular/animations": "^13.1.0",
80
81
  "rxjs": "^6.6.7",
81
82
  "@jscrpt/common": "^2.2.0",
82
- "@anglr/common": "^10.0.0",
83
+ "@anglr/common": "^11.2.0",
83
84
  "@types/node": "14.14.31",
84
85
  "moment": "^2.29.1",
85
86
  "date-fns": "^2.27.0",
package/src/dark.scss CHANGED
@@ -1,35 +1,38 @@
1
1
  @use './theme';
2
2
 
3
3
  //############## PICKER ##############
4
- date-time-picker>div>*
4
+ date-time-picker
5
5
  {
6
- color: #F0F0F0;
7
- border-color: transparent;
8
- background-color: #333333;
9
- box-shadow: 1px 1px 3px 1px #eee, -1px -1px 4px -1px #eee;
10
-
11
- .today
12
- {
13
- border-color: #0077ff;
14
- }
15
-
16
- .weekend
17
- {
18
- color: #e70000;
19
- }
20
-
21
- .active
22
- {
23
- background-color: #00c3ff;
24
- }
25
-
26
- .clickable:hover
27
- {
28
- background-color: #00e7ff;
29
- }
30
-
31
- .disabled:not(.active)
6
+ &>div>*
32
7
  {
33
- background-color: #CFCFCF;
8
+ color: #F0F0F0;
9
+ border-color: transparent;
10
+ background-color: #333333;
11
+ box-shadow: 1px 1px 3px 1px #eee, -1px -1px 4px -1px #eee;
12
+
13
+ .today
14
+ {
15
+ border-color: #0077ff;
16
+ }
17
+
18
+ .weekend
19
+ {
20
+ color: #e70000;
21
+ }
22
+
23
+ .active
24
+ {
25
+ background-color: #00c3ff;
26
+ }
27
+
28
+ .clickable:hover
29
+ {
30
+ background-color: #00e7ff;
31
+ }
32
+
33
+ .disabled:not(.active)
34
+ {
35
+ background-color: #CFCFCF;
36
+ }
34
37
  }
35
38
  }
package/src/index.d.ts CHANGED
@@ -15,5 +15,6 @@ export * from './picker/interfaces';
15
15
  export * from './picker/types';
16
16
  export * from './pipes/dateConvert.pipe';
17
17
  export * from './pipes/dateFormat.pipe';
18
+ export * from './picker/directives';
18
19
  export * from './modules/datePipes.module';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,YAAY,CAAC;AAC3B,cAAc,uCAAuC,CAAC;AACtD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,YAAY,CAAC;AAC3B,cAAc,uCAAuC,CAAC;AACtD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC"}
@@ -12,7 +12,7 @@ export interface DateTimeValue<TDate = any> {
12
12
  to: TDate;
13
13
  }
14
14
  /**
15
- * Represents object that holds data for indentification of validity of date time
15
+ * Represents object that holds data for identification of validity of date time
16
16
  */
17
17
  export interface DateTimeValueObject<TDate = any> {
18
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"datetime.interface.d.ts","sourceRoot":"","sources":["datetime.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,GAAG;IAEtC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,EAAE,EAAE,KAAK,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,KAAK,GAAG,GAAG;IAE5C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAC,IAAI,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAC,IAAI,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAC,IAAI,CAAC;CACjC"}
1
+ {"version":3,"file":"datetime.interface.d.ts","sourceRoot":"","sources":["datetime.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,GAAG;IAEtC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,EAAE,EAAE,KAAK,CAAC;CACb;AAID;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,KAAK,GAAG,GAAG;IAE5C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAC,IAAI,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAC,IAAI,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAC,IAAI,CAAC;CACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,cAAc,CAAC,OAAO,CAA2C,CAAC;AAEzF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,cAAc,CAWyC,CAAC"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,cAAc,CAAC,OAAO,CAA2C,CAAC;AAEzF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,cAAc,CAsByC,CAAC"}
@@ -1,13 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
- import * as i1 from "../pipes/asRequiredType";
3
- import * as i2 from "../pipes/dateFormat.pipe";
4
- import * as i3 from "../pipes/dateConvert.pipe";
2
+ import * as i1 from "../pipes/dateFormat.pipe";
3
+ import * as i2 from "../pipes/dateConvert.pipe";
5
4
  /**
6
5
  * Module used for exporting date pipes
7
6
  */
8
7
  export declare class DatePipesModule {
9
8
  static ɵfac: i0.ɵɵFactoryDeclaration<DatePipesModule, never>;
10
- static ɵmod: i0.ɵɵNgModuleDeclaration<DatePipesModule, [typeof i1.AsRequiredTypePipe, typeof i2.DateFormatPipe, typeof i3.DateConvertPipe], never, [typeof i1.AsRequiredTypePipe, typeof i2.DateFormatPipe, typeof i3.DateConvertPipe]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DatePipesModule, [typeof i1.DateFormatPipe, typeof i2.DateConvertPipe], never, [typeof i1.DateFormatPipe, typeof i2.DateConvertPipe]>;
11
10
  static ɵinj: i0.ɵɵInjectorDeclaration<DatePipesModule>;
12
11
  }
13
12
  //# sourceMappingURL=datePipes.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datePipes.module.d.ts","sourceRoot":"","sources":["datePipes.module.ts"],"names":[],"mappings":";;;;AAMA;;GAEG;AACH,qBAea,eAAe;yCAAf,eAAe;0CAAf,eAAe;0CAAf,eAAe;CAE3B"}
1
+ {"version":3,"file":"datePipes.module.d.ts","sourceRoot":"","sources":["datePipes.module.ts"],"names":[],"mappings":";;;AAKA;;GAEG;AACH,qBAaa,eAAe;yCAAf,eAAe;0CAAf,eAAe;0CAAf,eAAe;CAE3B"}
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Component used for displaying clock time picker
4
+ */
5
+ export declare class ClockTimePickerComponent {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClockTimePickerComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClockTimePickerComponent, "date-time-clock-time-picker", never, {}, {}, never, never>;
8
+ }
9
+ //# sourceMappingURL=clockTimePicker.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clockTimePicker.component.d.ts","sourceRoot":"","sources":["clockTimePicker.component.ts"],"names":[],"mappings":";AAEA;;GAEG;AACH,qBAOa,wBAAwB;yCAAxB,wBAAwB;2CAAxB,wBAAwB;CAEpC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Specific css classes for clock time picker
3
+ */
4
+ export interface ClockTimePickerCssClasses {
5
+ }
6
+ //# sourceMappingURL=clockTimePicker.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clockTimePicker.interface.d.ts","sourceRoot":"","sources":["clockTimePicker.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,yBAAyB;CAEzC"}
@@ -18,6 +18,12 @@ export declare class DateTimeDayPickerComponent<TDate = any> extends PickerBaseC
18
18
  */
19
19
  weekdays: string[];
20
20
  constructor(dateApi: DateApi<TDate>, changeDetector: ChangeDetectorRef);
21
+ /**
22
+ * Changes displayed period to "lower" period
23
+ * @param event - Event that occured
24
+ * @internal
25
+ */
26
+ goDown(event: Event): void;
21
27
  /**
22
28
  * Changes displayed month to next month
23
29
  * @param event - Event that occured
@@ -1 +1 @@
1
- {"version":3,"file":"dayPicker.component.d.ts","sourceRoot":"","sources":["dayPicker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAI5F,OAAO,EAAC,OAAO,EAAE,aAAa,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAC,cAAc,EAAE,OAAO,EAAE,UAAU,EAAC,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;;AAgB3D;;GAEG;AACH,qBAOa,0BAA0B,CAAC,KAAK,GAAG,GAAG,CAAE,SAAQ,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAE,YAAW,cAAc,CAAC,KAAK,EAAE,mBAAmB,CAAC;IAI9K;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAM;IAIhD;;;OAGG;IACI,QAAQ,EAAE,MAAM,EAAE,CAAM;gBAGD,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACzC,cAAc,EAAE,iBAAiB;IAU7C;;;;OAIG;IACI,SAAS,CAAC,KAAK,EAAE,KAAK;IAQ7B;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,KAAK;IAQjC;;;;;OAKG;IACa,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;IAmCxD;;;OAGG;IACI,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;IAuDjD;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK;IAKxD;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO;IAKtE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO;IAK1E;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;yCA3L7D,0BAA0B;2CAA1B,0BAA0B;CA+LtC"}
1
+ {"version":3,"file":"dayPicker.component.d.ts","sourceRoot":"","sources":["dayPicker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAI5F,OAAO,EAAC,OAAO,EAAE,aAAa,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAC,cAAc,EAAE,OAAO,EAAE,UAAU,EAAC,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;;AAiB3D;;GAEG;AACH,qBAOa,0BAA0B,CAAC,KAAK,GAAG,GAAG,CAAE,SAAQ,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAE,YAAW,cAAc,CAAC,KAAK,EAAE,mBAAmB,CAAC;IAI9K;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAM;IAIhD;;;OAGG;IACI,QAAQ,EAAE,MAAM,EAAE,CAAM;gBAGD,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACzC,cAAc,EAAE,iBAAiB;IAU7C;;;;OAIG;IACI,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAejC;;;;OAIG;IACI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQpC;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQxC;;;;;OAKG;IACa,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI;IAkD/D;;;OAGG;IACI,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;IAgEjD;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK;IAKxD;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO;IAKtE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO;IAK1E;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;yCAvO7D,0BAA0B;2CAA1B,0BAA0B;CA2OtC"}
@@ -1,17 +1,21 @@
1
- <div [ngClass]="cssClasses?.periodSelection | asRequiredType">
2
- <div [ngClass]="cssClasses?.previousPeriod | asRequiredType" (mousedown)="previousMonth($event)"></div>
3
- <div [ngClass]="cssClasses?.periodValue | asRequiredType" [class.clickable]="canGoUp" (mousedown)="goUp($event)">{{displayDate?.format('MMMM yyyy')}}</div>
4
- <div [ngClass]="cssClasses?.nextPeriod | asRequiredType" (mousedown)="nextMonth($event)"></div>
1
+ <div [ngClass]="cssClasses?.periodSelection | asRequired">
2
+ <div [ngClass]="cssClasses?.previousPeriod | asRequired" (mousedown)="previousMonth($event)"></div>
3
+ <div [ngClass]="cssClasses?.periodValue | asRequired | mergeCssClasses: [{'clickable': canGoUp}]" (mousedown)="goUp($event)">{{displayDate?.format('MMMM yyyy')}}</div>
4
+ <div [ngClass]="cssClasses?.nextPeriod | asRequired" (mousedown)="nextMonth($event)"></div>
5
5
  </div>
6
6
 
7
- <div [ngClass]="cssClasses?.periodData | asRequiredType">
8
- <div [ngClass]="cssClasses?.weekdayName | asRequiredType" *ngFor="let weekday of weekdays">{{weekday}}</div>
7
+ <div [ngClass]="cssClasses?.periodData | asRequired">
8
+ <div [ngClass]="cssClasses?.weekdayName | asRequired" *ngFor="let weekday of weekdays">{{weekday}}</div>
9
9
  <div *ngFor="let day of periodData"
10
- [ngClass]="cssClasses?.periodDatum | asRequiredType"
10
+ [ngClass]="cssClasses?.periodDatum | asRequired"
11
11
  [class.other-month]="day.otherMonth"
12
12
  [class.today]="day.today"
13
13
  [class.weekend]="day.weekend"
14
14
  [class.active]="day.active"
15
15
  [class.disabled]="day.disabled"
16
16
  (mousedown)="select($event, day)">{{day.day}}</div>
17
+ </div>
18
+
19
+ <div class="flex-row" style="justify-content: center; border-top: 1px solid #FFF;" *ngIf="canGoDown">
20
+ <div [class.clickable]="canGoDown" (mousedown)="goDown($event)">{{displayDate?.value | dateFormat: 'time'}}</div>
17
21
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"monthPicker.component.d.ts","sourceRoot":"","sources":["monthPicker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAI5F,OAAO,EAAC,OAAO,EAAE,aAAa,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAC,cAAc,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;;AAe/D;;GAEG;AACH,qBAOa,4BAA4B,CAAC,KAAK,GAAG,GAAG,CAAE,SAAQ,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAE,YAAW,cAAc,CAAC,KAAK,EAAE,qBAAqB,CAAC;gBAGxJ,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACzC,cAAc,EAAE,iBAAiB;IAS7C;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK;IAQ5B;;;;OAIG;IACI,YAAY,CAAC,KAAK,EAAE,KAAK;IAUhC;;;OAGG;IACI,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;IAgCjD;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK;IAKxD;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO;IAKtE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO;IAK1E;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;yCA7G7D,4BAA4B;2CAA5B,4BAA4B;CAiHxC"}
1
+ {"version":3,"file":"monthPicker.component.d.ts","sourceRoot":"","sources":["monthPicker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAI5F,OAAO,EAAC,OAAO,EAAE,aAAa,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAC,cAAc,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;;AAgB/D;;GAEG;AACH,qBAOa,4BAA4B,CAAC,KAAK,GAAG,GAAG,CAAE,SAAQ,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAE,YAAW,cAAc,CAAC,KAAK,EAAE,qBAAqB,CAAC;gBAGxJ,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EACzC,cAAc,EAAE,iBAAiB;IAS7C;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK;IAQ5B;;;;OAIG;IACI,YAAY,CAAC,KAAK,EAAE,KAAK;IAUhC;;;OAGG;IACI,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;IAgCjD;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK;IAKxD;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO;IAKtE;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO;IAK1E;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;yCA7G7D,4BAA4B;2CAA5B,4BAA4B;CAiHxC"}
@@ -1,12 +1,12 @@
1
- <div [ngClass]="cssClasses?.periodSelection | asRequiredType">
2
- <div [ngClass]="cssClasses?.previousPeriod | asRequiredType" (mousedown)="previousYear($event)"></div>
3
- <div [ngClass]="cssClasses?.periodValue | asRequiredType" [class.clickable]="canGoUp" (mousedown)="goUp($event)">{{displayDate?.format('yyyy')}}</div>
4
- <div [ngClass]="cssClasses?.nextPeriod | asRequiredType" (mousedown)="nextYear($event)"></div>
1
+ <div [ngClass]="cssClasses?.periodSelection | asRequired">
2
+ <div [ngClass]="cssClasses?.previousPeriod | asRequired" (mousedown)="previousYear($event)"></div>
3
+ <div [ngClass]="cssClasses?.periodValue | asRequired" [class.clickable]="canGoUp" (mousedown)="goUp($event)">{{displayDate?.format('yyyy')}}</div>
4
+ <div [ngClass]="cssClasses?.nextPeriod | asRequired" (mousedown)="nextYear($event)"></div>
5
5
  </div>
6
6
 
7
- <div [ngClass]="cssClasses?.periodData | asRequiredType">
7
+ <div [ngClass]="cssClasses?.periodData | asRequired">
8
8
  <div *ngFor="let month of periodData"
9
- [ngClass]="cssClasses?.periodDatum | asRequiredType"
9
+ [ngClass]="cssClasses?.periodDatum | asRequired"
10
10
  [class.active]="month.active"
11
11
  [class.disabled]="month.disabled"
12
12
  (mousedown)="select($event, month)">{{month.name}}</div>
@@ -0,0 +1,4 @@
1
+ :host
2
+ {
3
+ display: inline-block;
4
+ }
@@ -59,8 +59,8 @@ export declare class DateTimePickerComponent<TDate = any> implements OnInit, OnD
59
59
  /**
60
60
  * Current options used by picker
61
61
  */
62
- get options(): DateTimePickerOptions<DateTimePicker<TDate>>;
63
- set options(value: DateTimePickerOptions<DateTimePicker<TDate>>);
62
+ get options(): Partial<DateTimePickerOptions<DateTimePicker<TDate>>>;
63
+ set options(value: Partial<DateTimePickerOptions<DateTimePicker<TDate>>>);
64
64
  /**
65
65
  * Current selected value
66
66
  */
@@ -80,7 +80,7 @@ export declare class DateTimePickerComponent<TDate = any> implements OnInit, OnD
80
80
  * Occurs when value changes
81
81
  */
82
82
  valueChange: EventEmitter<DateTimeValue<TDate>>;
83
- constructor(configuration: DateTimePickerOptions<DateTimePicker<TDate>>, _dateApi: DateApi<TDate>, _changeDetector: ChangeDetectorRef);
83
+ constructor(configuration: Partial<DateTimePickerOptions<DateTimePicker<TDate>>>, _dateApi: DateApi<TDate>, _changeDetector: ChangeDetectorRef);
84
84
  /**
85
85
  * Initialize component
86
86
  */
@@ -1 +1 @@
1
- {"version":3,"file":"picker.component.d.ts","sourceRoot":"","sources":["picker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,IAAI,EAAE,MAAM,EAAE,YAAY,EAAU,iBAAiB,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAE5J,OAAO,EAAC,YAAY,EAAC,MAAM,MAAM,CAAC;AAElC,OAAO,EAAC,aAAa,EAAC,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAE,qBAAqB,EAAC,MAAM,qCAAqC,CAAC;;AA0B1F;;GAEG;AACH,qBAQa,uBAAuB,CAAC,KAAK,GAAG,GAAG,CAAE,YAAW,MAAM,EAAE,SAAS;IA0I5C,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC;IACpD,SAAS,CAAC,eAAe,EAAE,iBAAiB;IAvIxD;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAEhD;;OAEG;IACH,SAAS,CAAC,iBAAiB,EAAG,MAAM,CAAC;IAErC;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IAEtC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,GAAC,IAAI,CAAQ;IAEnD;;OAEG;IACH,SAAS,CAAC,0BAA0B,EAAE,YAAY,CAAsB;IAExE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,KAAK,GAAC,IAAI,CAAQ;IAEvC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,KAAK,GAAC,IAAI,CAAQ;IAEvC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAIjE;;;OAGG;IACI,qBAAqB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3D;;;OAGG;IACI,iBAAiB,EAAE,MAAM,CAAK;IAIrC;;OAEG;IACH,IACW,OAAO,IAAI,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAGjE;IACD,IAAW,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EASrE;IAED;;OAEG;IACH,IACW,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,GAAC,IAAI,CAG5C;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAC,IAAI,EAMhD;IAED;;OAEG;IACH,IACW,QAAQ,IAAI,KAAK,GAAC,IAAI,CAGhC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAC,IAAI,EAIpC;IAED;;OAEG;IACH,IACW,QAAQ,IAAI,KAAK,GAAC,IAAI,CAGhC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAC,IAAI,EAIpC;IAID;;OAEG;IAEI,WAAW,EAAE,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAA4C;gBAGlC,aAAa,EAAE,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACnF,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAC1C,eAAe,EAAE,iBAAiB;IAYxD;;OAEG;IACI,QAAQ;IA0Cf;;OAEG;IACI,WAAW;IAQlB;;;;OAIG;IACI,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC;IAuDlD;;OAEG;IACH,SAAS,CAAC,oBAAoB;yCA9QrB,uBAAuB;2CAAvB,uBAAuB;CA6RnC"}
1
+ {"version":3,"file":"picker.component.d.ts","sourceRoot":"","sources":["picker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,IAAI,EAAE,MAAM,EAAE,YAAY,EAAU,iBAAiB,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAE5J,OAAO,EAAC,YAAY,EAAC,MAAM,MAAM,CAAC;AAElC,OAAO,EAAC,aAAa,EAAC,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAE,qBAAqB,EAAC,MAAM,qCAAqC,CAAC;;AA2B1F;;GAEG;AACH,qBAQa,uBAAuB,CAAC,KAAK,GAAG,GAAG,CAAE,YAAW,MAAM,EAAE,SAAS;IA0I5C,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC;IACpD,SAAS,CAAC,eAAe,EAAE,iBAAiB;IAvIxD;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAEhD;;OAEG;IACH,SAAS,CAAC,iBAAiB,EAAG,MAAM,CAAC;IAErC;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IAEtC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,GAAC,IAAI,CAAQ;IAEnD;;OAEG;IACH,SAAS,CAAC,0BAA0B,EAAE,YAAY,CAAsB;IAExE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,KAAK,GAAC,IAAI,CAAQ;IAEvC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,KAAK,GAAC,IAAI,CAAQ;IAEvC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAIjE;;;OAGG;IACI,qBAAqB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3D;;;OAGG;IACI,iBAAiB,EAAE,MAAM,CAAK;IAIrC;;OAEG;IACH,IACW,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAG1E;IACD,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAS9E;IAED;;OAEG;IACH,IACW,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,GAAC,IAAI,CAG5C;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAC,IAAI,EAMhD;IAED;;OAEG;IACH,IACW,QAAQ,IAAI,KAAK,GAAC,IAAI,CAGhC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAC,IAAI,EAIpC;IAED;;OAEG;IACH,IACW,QAAQ,IAAI,KAAK,GAAC,IAAI,CAGhC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAC,IAAI,EAIpC;IAID;;OAEG;IAEI,WAAW,EAAE,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAA4C;gBAGlC,aAAa,EAAE,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAC5F,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAC1C,eAAe,EAAE,iBAAiB;IAYxD;;OAEG;IACI,QAAQ,IAAI,IAAI;IA0CvB;;OAEG;IACI,WAAW,IAAI,IAAI;IAQ1B;;;;OAIG;IACI,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI;IAuDzD;;OAEG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;yCA9Q7B,uBAAuB;2CAAvB,uBAAuB;CA6RnC"}