@anglr/datetime 2.0.1 → 3.0.0-beta.20220322070853

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 (227) 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/misc/datetime.interface.js.map +1 -1
  13. package/es2015/src/misc/tokens.js +12 -1
  14. package/es2015/src/misc/tokens.js.map +1 -1
  15. package/es2015/src/modules/datePipes.module.js +2 -7
  16. package/es2015/src/modules/datePipes.module.js.map +1 -1
  17. package/es2015/src/picker/components/clockTimePicker/clockTimePicker.component.js +14 -0
  18. package/es2015/src/picker/components/clockTimePicker/clockTimePicker.component.js.map +1 -0
  19. package/es2015/src/picker/components/clockTimePicker/clockTimePicker.interface.js +2 -0
  20. package/es2015/src/picker/components/clockTimePicker/clockTimePicker.interface.js.map +1 -0
  21. package/es2015/src/picker/components/dayPicker/dayPicker.component.js +49 -13
  22. package/es2015/src/picker/components/dayPicker/dayPicker.component.js.map +1 -1
  23. package/es2015/src/picker/components/monthPicker/monthPicker.component.js +5 -4
  24. package/es2015/src/picker/components/monthPicker/monthPicker.component.js.map +1 -1
  25. package/es2015/src/picker/components/picker/picker.component.js +3 -2
  26. package/es2015/src/picker/components/picker/picker.component.js.map +1 -1
  27. package/es2015/src/picker/components/pickerBase.component.js +15 -120
  28. package/es2015/src/picker/components/pickerBase.component.js.map +1 -1
  29. package/es2015/src/picker/components/pickerImplBase.component.js +145 -0
  30. package/es2015/src/picker/components/pickerImplBase.component.js.map +1 -0
  31. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.component.js +144 -0
  32. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.component.js.map +1 -0
  33. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.data.js +341 -0
  34. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.data.js.map +1 -0
  35. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.interface.js +2 -0
  36. package/es2015/src/picker/components/rollerTimePicker/rollerTimePicker.interface.js.map +1 -0
  37. package/es2015/src/picker/components/yearPicker/yearPicker.component.js +5 -4
  38. package/es2015/src/picker/components/yearPicker/yearPicker.component.js.map +1 -1
  39. package/es2015/src/picker/directives/index.js +4 -0
  40. package/es2015/src/picker/directives/index.js.map +1 -0
  41. package/es2015/src/picker/directives/loopScroll/loopScroll.directive.js +200 -0
  42. package/es2015/src/picker/directives/loopScroll/loopScroll.directive.js.map +1 -0
  43. package/es2015/src/picker/directives/loopScroll/loopScroll.interface.js +3 -0
  44. package/es2015/src/picker/directives/loopScroll/loopScroll.interface.js.map +1 -0
  45. package/es2015/src/picker/directives/loopScrollData/loopScrollData.directive.js +23 -0
  46. package/es2015/src/picker/directives/loopScrollData/loopScrollData.directive.js.map +1 -0
  47. package/es2015/src/picker/misc/datetimePicker.interface.js.map +1 -1
  48. package/es2015/src/picker/modules/picker.module.js +21 -4
  49. package/es2015/src/picker/modules/picker.module.js.map +1 -1
  50. package/es2015/src/selector/components/inputDateTime/inputDateTime.component.js +16 -2
  51. package/es2015/src/selector/components/inputDateTime/inputDateTime.component.js.map +1 -1
  52. package/es2015/src/selector/components/selector/selector.component.js +25 -12
  53. package/es2015/src/selector/components/selector/selector.component.js.map +1 -1
  54. package/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +6 -2
  55. package/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js.map +1 -1
  56. package/es2015/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js +134 -0
  57. package/es2015/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js.map +1 -0
  58. package/es2015/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js.map +1 -1
  59. package/es2015/src/selector/misc/datetimeSelector.interface.js.map +1 -1
  60. package/es2015/src/selector/misc/tokens.js.map +1 -1
  61. package/es2015/src/selector/modules/selector.module.js +9 -4
  62. package/es2015/src/selector/modules/selector.module.js.map +1 -1
  63. package/es2015/src/services/dateApi.interface.js.map +1 -1
  64. package/es2015/src/services/datePositionParser.service.js +14 -0
  65. package/es2015/src/services/datePositionParser.service.js.map +1 -1
  66. package/es2015/src/services/dateTimeRelativeParser.service.js +15 -1
  67. package/es2015/src/services/dateTimeRelativeParser.service.js.map +1 -1
  68. package/es2015/src/services/dateValueProvider.service.js +10 -5
  69. package/es2015/src/services/dateValueProvider.service.js.map +1 -1
  70. package/es2015/src/services/formatProvider.interface.js.map +1 -1
  71. package/es2020/date-fns/src/misc/tokens.js +12 -1
  72. package/es2020/date-fns/src/misc/tokens.js.map +1 -1
  73. package/es2020/date-fns/src/services/dateFnsDateApi.service.js +99 -5
  74. package/es2020/date-fns/src/services/dateFnsDateApi.service.js.map +1 -1
  75. package/es2020/moment/src/misc/tokens.js +12 -1
  76. package/es2020/moment/src/misc/tokens.js.map +1 -1
  77. package/es2020/moment/src/services/momentDateApi.service.js +90 -0
  78. package/es2020/moment/src/services/momentDateApi.service.js.map +1 -1
  79. package/es2020/src/misc/datetime.interface.js.map +1 -1
  80. package/es2020/src/misc/tokens.js +12 -1
  81. package/es2020/src/misc/tokens.js.map +1 -1
  82. package/es2020/src/modules/datePipes.module.js +2 -7
  83. package/es2020/src/modules/datePipes.module.js.map +1 -1
  84. package/es2020/src/picker/components/clockTimePicker/clockTimePicker.component.js +14 -0
  85. package/es2020/src/picker/components/clockTimePicker/clockTimePicker.component.js.map +1 -0
  86. package/es2020/src/picker/components/clockTimePicker/clockTimePicker.interface.js +2 -0
  87. package/es2020/src/picker/components/clockTimePicker/clockTimePicker.interface.js.map +1 -0
  88. package/es2020/src/picker/components/dayPicker/dayPicker.component.js +49 -13
  89. package/es2020/src/picker/components/dayPicker/dayPicker.component.js.map +1 -1
  90. package/es2020/src/picker/components/monthPicker/monthPicker.component.js +5 -4
  91. package/es2020/src/picker/components/monthPicker/monthPicker.component.js.map +1 -1
  92. package/es2020/src/picker/components/picker/picker.component.js +3 -2
  93. package/es2020/src/picker/components/picker/picker.component.js.map +1 -1
  94. package/es2020/src/picker/components/pickerBase.component.js +15 -120
  95. package/es2020/src/picker/components/pickerBase.component.js.map +1 -1
  96. package/es2020/src/picker/components/pickerImplBase.component.js +145 -0
  97. package/es2020/src/picker/components/pickerImplBase.component.js.map +1 -0
  98. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.component.js +138 -0
  99. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.component.js.map +1 -0
  100. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.data.js +341 -0
  101. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.data.js.map +1 -0
  102. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.interface.js +2 -0
  103. package/es2020/src/picker/components/rollerTimePicker/rollerTimePicker.interface.js.map +1 -0
  104. package/es2020/src/picker/components/yearPicker/yearPicker.component.js +5 -4
  105. package/es2020/src/picker/components/yearPicker/yearPicker.component.js.map +1 -1
  106. package/es2020/src/picker/directives/index.js +4 -0
  107. package/es2020/src/picker/directives/index.js.map +1 -0
  108. package/es2020/src/picker/directives/loopScroll/loopScroll.directive.js +191 -0
  109. package/es2020/src/picker/directives/loopScroll/loopScroll.directive.js.map +1 -0
  110. package/es2020/src/picker/directives/loopScroll/loopScroll.interface.js +3 -0
  111. package/es2020/src/picker/directives/loopScroll/loopScroll.interface.js.map +1 -0
  112. package/es2020/src/picker/directives/loopScrollData/loopScrollData.directive.js +23 -0
  113. package/es2020/src/picker/directives/loopScrollData/loopScrollData.directive.js.map +1 -0
  114. package/es2020/src/picker/misc/datetimePicker.interface.js.map +1 -1
  115. package/es2020/src/picker/modules/picker.module.js +21 -4
  116. package/es2020/src/picker/modules/picker.module.js.map +1 -1
  117. package/es2020/src/selector/components/inputDateTime/inputDateTime.component.js +16 -2
  118. package/es2020/src/selector/components/inputDateTime/inputDateTime.component.js.map +1 -1
  119. package/es2020/src/selector/components/selector/selector.component.js +22 -11
  120. package/es2020/src/selector/components/selector/selector.component.js.map +1 -1
  121. package/es2020/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +6 -2
  122. package/es2020/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js.map +1 -1
  123. package/es2020/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js +133 -0
  124. package/es2020/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js.map +1 -0
  125. package/es2020/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js.map +1 -1
  126. package/es2020/src/selector/misc/datetimeSelector.interface.js.map +1 -1
  127. package/es2020/src/selector/misc/tokens.js.map +1 -1
  128. package/es2020/src/selector/modules/selector.module.js +9 -4
  129. package/es2020/src/selector/modules/selector.module.js.map +1 -1
  130. package/es2020/src/services/dateApi.interface.js.map +1 -1
  131. package/es2020/src/services/datePositionParser.service.js +14 -0
  132. package/es2020/src/services/datePositionParser.service.js.map +1 -1
  133. package/es2020/src/services/dateTimeRelativeParser.service.js +15 -1
  134. package/es2020/src/services/dateTimeRelativeParser.service.js.map +1 -1
  135. package/es2020/src/services/dateValueProvider.service.js +10 -5
  136. package/es2020/src/services/dateValueProvider.service.js.map +1 -1
  137. package/es2020/src/services/formatProvider.interface.js.map +1 -1
  138. package/moment/src/misc/tokens.d.ts.map +1 -1
  139. package/moment/src/services/momentDateApi.service.d.ts.map +1 -1
  140. package/package.json +14 -16
  141. package/src/dark.scss +31 -28
  142. package/src/misc/datetime.interface.d.ts +1 -1
  143. package/src/misc/datetime.interface.d.ts.map +1 -1
  144. package/src/misc/tokens.d.ts.map +1 -1
  145. package/src/modules/datePipes.module.d.ts +3 -4
  146. package/src/modules/datePipes.module.d.ts.map +1 -1
  147. package/src/picker/components/clockTimePicker/clockTimePicker.component.css +0 -0
  148. package/src/picker/components/clockTimePicker/clockTimePicker.component.d.ts +9 -0
  149. package/src/picker/components/clockTimePicker/clockTimePicker.component.d.ts.map +1 -0
  150. package/src/picker/components/clockTimePicker/clockTimePicker.component.html +0 -0
  151. package/src/picker/components/clockTimePicker/clockTimePicker.interface.d.ts +6 -0
  152. package/src/picker/components/clockTimePicker/clockTimePicker.interface.d.ts.map +1 -0
  153. package/src/picker/components/dayPicker/dayPicker.component.d.ts +6 -0
  154. package/src/picker/components/dayPicker/dayPicker.component.d.ts.map +1 -1
  155. package/src/picker/components/dayPicker/dayPicker.component.html +11 -7
  156. package/src/picker/components/monthPicker/monthPicker.component.d.ts.map +1 -1
  157. package/src/picker/components/monthPicker/monthPicker.component.html +6 -6
  158. package/src/picker/components/picker/picker.component.css +4 -0
  159. package/src/picker/components/picker/picker.component.d.ts +3 -3
  160. package/src/picker/components/picker/picker.component.d.ts.map +1 -1
  161. package/src/picker/components/pickerBase.component.d.ts +7 -97
  162. package/src/picker/components/pickerBase.component.d.ts.map +1 -1
  163. package/src/picker/components/pickerImplBase.component.d.ts +128 -0
  164. package/src/picker/components/pickerImplBase.component.d.ts.map +1 -0
  165. package/src/picker/components/rollerTimePicker/rollerTimePicker.component.css +40 -0
  166. package/src/picker/components/rollerTimePicker/rollerTimePicker.component.d.ts +71 -0
  167. package/src/picker/components/rollerTimePicker/rollerTimePicker.component.d.ts.map +1 -0
  168. package/src/picker/components/rollerTimePicker/rollerTimePicker.component.html +41 -0
  169. package/src/picker/components/rollerTimePicker/rollerTimePicker.data.d.ts +4 -0
  170. package/src/picker/components/rollerTimePicker/rollerTimePicker.data.d.ts.map +1 -0
  171. package/src/picker/components/rollerTimePicker/rollerTimePicker.interface.d.ts +6 -0
  172. package/src/picker/components/rollerTimePicker/rollerTimePicker.interface.d.ts.map +1 -0
  173. package/src/picker/components/yearPicker/yearPicker.component.d.ts.map +1 -1
  174. package/src/picker/components/yearPicker/yearPicker.component.html +6 -6
  175. package/src/picker/directives/index.d.ts +4 -0
  176. package/src/picker/directives/index.d.ts.map +1 -0
  177. package/src/picker/directives/loopScroll/loopScroll.directive.d.ts +73 -0
  178. package/src/picker/directives/loopScroll/loopScroll.directive.d.ts.map +1 -0
  179. package/src/picker/directives/loopScroll/loopScroll.interface.d.ts +14 -0
  180. package/src/picker/directives/loopScroll/loopScroll.interface.d.ts.map +1 -0
  181. package/src/picker/directives/loopScrollData/loopScrollData.directive.d.ts +16 -0
  182. package/src/picker/directives/loopScrollData/loopScrollData.directive.d.ts.map +1 -0
  183. package/src/picker/misc/datetimePicker.interface.d.ts +14 -10
  184. package/src/picker/misc/datetimePicker.interface.d.ts.map +1 -1
  185. package/src/picker/modules/picker.module.d.ts +10 -7
  186. package/src/picker/modules/picker.module.d.ts.map +1 -1
  187. package/src/selector/components/inputDateTime/inputDateTime.component.d.ts +2 -2
  188. package/src/selector/components/inputDateTime/inputDateTime.component.d.ts.map +1 -1
  189. package/src/selector/components/inputDateTime/inputDateTime.component.html +1 -1
  190. package/src/selector/components/selector/selector.component.d.ts +7 -6
  191. package/src/selector/components/selector/selector.component.d.ts.map +1 -1
  192. package/src/selector/components/selector/selector.component.html +6 -5
  193. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.d.ts +1 -1
  194. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.d.ts.map +1 -1
  195. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.html +1 -1
  196. package/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.d.ts +80 -0
  197. package/src/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.d.ts.map +1 -0
  198. package/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.d.ts.map +1 -1
  199. package/src/selector/misc/datetimeSelector.interface.d.ts +16 -3
  200. package/src/selector/misc/datetimeSelector.interface.d.ts.map +1 -1
  201. package/src/selector/misc/tokens.d.ts +1 -1
  202. package/src/selector/misc/tokens.d.ts.map +1 -1
  203. package/src/selector/modules/selector.module.d.ts +5 -4
  204. package/src/selector/modules/selector.module.d.ts.map +1 -1
  205. package/src/services/dateApi.interface.d.ts +72 -0
  206. package/src/services/dateApi.interface.d.ts.map +1 -1
  207. package/src/services/datePositionParser.service.d.ts +3 -3
  208. package/src/services/datePositionParser.service.d.ts.map +1 -1
  209. package/src/services/dateTimeRelativeParser.service.d.ts +8 -0
  210. package/src/services/dateTimeRelativeParser.service.d.ts.map +1 -1
  211. package/src/services/dateValueProvider.service.d.ts.map +1 -1
  212. package/src/services/formatProvider.interface.d.ts +48 -4
  213. package/src/services/formatProvider.interface.d.ts.map +1 -1
  214. package/version.bak +1 -1
  215. package/es2015/karma.conf.js +0 -57
  216. package/es2015/karma.conf.js.map +0 -1
  217. package/es2015/src/pipes/asRequiredType.js +0 -22
  218. package/es2015/src/pipes/asRequiredType.js.map +0 -1
  219. package/es2020/karma.conf.js +0 -57
  220. package/es2020/karma.conf.js.map +0 -1
  221. package/es2020/src/pipes/asRequiredType.js +0 -22
  222. package/es2020/src/pipes/asRequiredType.js.map +0 -1
  223. package/karma.conf.d.ts +0 -2
  224. package/karma.conf.d.ts.map +0 -1
  225. package/src/pipes/asRequiredType.d.ts +0 -21
  226. package/src/pipes/asRequiredType.d.ts.map +0 -1
  227. package/tsconfig.karma.json +0 -19
@@ -1 +1 @@
1
- {"version":3,"file":"picker.component.js","sourceRoot":"","sources":["../../../../../src/picker/components/picker/picker.component.ts","../../../../../src/picker/components/picker/picker.component.html"],"names":[],"mappings":"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","sourcesContent":["import {Component, ChangeDetectionStrategy, Optional, Inject, Input, Type, OnInit, EventEmitter, Output, ChangeDetectorRef, OnDestroy} from '@angular/core';\nimport {extend} from '@jscrpt/common';\nimport {Subscription} from 'rxjs';\n\nimport {DateTimeValue} from '../../../misc/datetime.interface';\nimport {DATE_API} from '../../../misc/tokens';\nimport {DateApi} from '../../../services';\nimport {DateTimePicker, DateTimePickerOptions} from '../../misc/datetimePicker.interface';\nimport {DATE_TIME_PICKER_CONFIGURATION} from '../../misc/tokens';\nimport {DateTimeDayPickerComponent} from '../dayPicker/dayPicker.component';\nimport {DateTimeMonthPickerComponent} from '../monthPicker/monthPicker.component';\nimport {DateTimeYearPickerComponent} from '../yearPicker/yearPicker.component';\nimport {scaleUpDownTrigger} from './picker.component.animations';\n\n//TODO - merge options\n\n/**\n * Default configuration for picker\n */\nconst defaultConfiguration: DateTimePickerOptions<DateTimePicker> =\n{\n defaultPeriod: 'day',\n pickerPeriodsDefinition:\n {\n 'day': DateTimeDayPickerComponent,\n 'month': DateTimeMonthPickerComponent,\n 'year': DateTimeYearPickerComponent\n },\n cssClasses:\n {\n }\n};\n\n/**\n * Component used for displaying date time picker\n */\n@Component(\n{\n selector: 'date-time-picker',\n templateUrl: 'picker.component.html',\n // styleUrls: ['picker.component.scss'],\n animations: [scaleUpDownTrigger],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DateTimePickerComponent<TDate = any> implements OnInit, OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Instance of active date time picker\n */\n protected _activePicker?: DateTimePicker<TDate>;\n\n /**\n * Name, id of displayed picker\n */\n protected _activePickerName!: string;\n\n /**\n * Array of available picker names\n */\n protected _pickerNames: string[] = [];\n\n /**\n * Current selected value\n */\n protected _value: DateTimeValue<TDate>|null = null;\n\n /**\n * All subscriptions for active picker\n */\n protected _activePickerSubscriptions: Subscription = new Subscription();\n\n /**\n * Date that should be displayed in picker, used when moving up or down in periods\n */\n protected _display?: TDate;\n\n /**\n * Minimal possible value that can be picked\n */\n protected _minValue: TDate|null = null;\n\n /**\n * Maximal possible value that can be picked\n */\n protected _maxValue: TDate|null = null;\n\n /**\n * Current options used by picker\n */\n protected _options: DateTimePickerOptions<DateTimePicker<TDate>>;\n\n //######################### public properties - template bindings #########################\n\n /**\n * Currently active date time picker component type\n * @internal\n */\n public activePickerComponent?: Type<DateTimePicker<TDate>>;\n\n /**\n * Active picker index\n * @internal\n */\n public activePickerIndex: number = 0;\n\n //######################### public properties - inputs #########################\n\n /**\n * Current options used by picker\n */\n @Input()\n public get options(): DateTimePickerOptions<DateTimePicker<TDate>>\n {\n return this._options;\n }\n public set options(value: DateTimePickerOptions<DateTimePicker<TDate>>)\n {\n this._options = extend(true, this._options, value);\n\n // without deep-copy for this attribute\n if (value?.pickerPeriodsDefinition)\n {\n this._options.pickerPeriodsDefinition = value.pickerPeriodsDefinition;\n }\n }\n\n /**\n * Current selected value\n */\n @Input()\n public get value(): DateTimeValue<TDate>|null\n {\n return this._value;\n }\n public set value(value: DateTimeValue<TDate>|null)\n {\n this._value = value;\n\n this._activePicker?.setValue(value);\n this._activePicker?.invalidateVisuals();\n }\n\n /**\n * Gets or sets minimal possible value for picker, that can be picked\n */\n @Input()\n public get minValue(): TDate|null\n {\n return this._minValue;\n }\n public set minValue(value: TDate|null)\n {\n this._minValue = value;\n this._activePicker?.setMinValue(this._minValue);\n }\n\n /**\n * Gets or sets maximal possible value for picker, that can be picked\n */\n @Input()\n public get maxValue(): TDate|null\n {\n return this._maxValue;\n }\n public set maxValue(value: TDate|null)\n {\n this._maxValue = value;\n this._activePicker?.setMaxValue(this._maxValue);\n }\n\n //######################### public properties - outputs #########################\n\n /**\n * Occurs when value changes\n */\n @Output()\n public valueChange: EventEmitter<DateTimeValue<TDate>> = new EventEmitter<DateTimeValue<TDate>>();\n\n //######################### constructor #########################\n constructor(@Optional() @Inject(DATE_TIME_PICKER_CONFIGURATION) configuration: DateTimePickerOptions<DateTimePicker<TDate>>,\n @Inject(DATE_API) protected _dateApi: DateApi<TDate>,\n protected _changeDetector: ChangeDetectorRef)\n {\n this._options = extend(true, {}, defaultConfiguration, configuration);\n // without deep-copy for this attribute\n if (configuration?.pickerPeriodsDefinition)\n {\n this._options.pickerPeriodsDefinition = configuration.pickerPeriodsDefinition;\n }\n }\n\n //######################### public methods - implementation of OnInit #########################\n\n /**\n * Initialize component\n */\n public ngOnInit()\n {\n if (this._options.pickerPeriodsOrder)\n {\n if (Array.isArray(this._options.pickerPeriodsOrder))\n {\n this._pickerNames = this._options.pickerPeriodsOrder;\n }\n else\n {\n this._pickerNames = this._options.pickerPeriodsOrder.split(',')\n .map(x => x.trim())\n .filter(x => x);\n }\n }\n if (this._pickerNames && this._pickerNames.length > 0)\n {\n this._pickerNames.forEach(x => \n {\n if(!this._options.pickerPeriodsDefinition![x!])\n {\n throw new Error(`There is no period '${x}' in picker options`);\n }\n });\n }\n else\n {\n this._pickerNames = Object.keys(this._options.pickerPeriodsDefinition!);\n }\n\n if(this._pickerNames.findIndex(x => x == this._options.defaultPeriod) < 0)\n {\n throw new Error(`There is no period '${this._options.defaultPeriod}' in picker options`);\n }\n\n this.activePickerComponent = this._options.pickerPeriodsDefinition![this._options.defaultPeriod!];\n this._activePickerName = this._options.defaultPeriod!;\n this.activePickerIndex = this._pickerNames.indexOf(this._activePickerName);\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy()\n {\n this._display = undefined;\n this._activePickerSubscriptions.unsubscribe();\n }\n\n //######################### public methods - template bindings #########################\n\n /**\n * Handles created or destroyed date time picker instance\n * @param picker - Instance of picker or null\n * @internal\n */\n public pickerCreated(picker: DateTimePicker<TDate>)\n {\n if(picker == this._activePicker)\n {\n return;\n }\n\n this._activePicker = picker;\n\n this._activePickerSubscriptions.unsubscribe();\n this._activePickerSubscriptions = new Subscription();\n\n if(!this._activePicker)\n {\n return;\n }\n\n this._activePickerSubscriptions.add(picker.valueChange.subscribe(() =>\n {\n this._value = picker.value;\n this.valueChange.emit(this._value!);\n }));\n\n this._activePickerSubscriptions.add(picker.scaleUp.subscribe(display =>\n {\n this._display = display;\n const index = this._pickerNames.indexOf(this._activePickerName) + 1;\n this._activePickerName = this._pickerNames[index];\n this.activePickerIndex = this._pickerNames.indexOf(this._activePickerName);\n this.activePickerComponent = this._options.pickerPeriodsDefinition![this._activePickerName];\n }));\n\n this._activePickerSubscriptions.add(picker.scaleDown.subscribe(display =>\n {\n this._display = display;\n const index = this._pickerNames.indexOf(this._activePickerName) - 1;\n this._activePickerName = this._pickerNames[index];\n this.activePickerIndex = this._pickerNames.indexOf(this._activePickerName);\n this.activePickerComponent = this._options.pickerPeriodsDefinition![this._activePickerName];\n }));\n\n picker.setCanGoDown(this._pickerNames.indexOf(this._activePickerName) > 0);\n picker.setCanGoUp(this._pickerNames.indexOf(this._activePickerName) < this._pickerNames.length - 1);\n\n this._setPickerCssClasses();\n picker.setValue(this._value);\n picker.setMinValue(this._minValue);\n picker.setMaxValue(this._maxValue);\n picker.display(this._display ? this._dateApi.getValue(this._display) : this._dateApi.getValue(this._value?.from ?? this._dateApi.now().value));\n\n picker.invalidateVisuals();\n }\n\n //######################### protected methods #########################\n\n /**\n * Sets picker css classes\n */\n protected _setPickerCssClasses()\n {\n if(!this._activePicker)\n {\n return;\n }\n\n //sets shared css\n this._activePicker.setCssClasses(this._options?.cssClasses?.pickerShared ?? {});\n\n if(this._options?.cssClasses?.pickerCustom && this._options?.cssClasses?.pickerCustom[this._activePickerName])\n {\n this._activePicker.setCssClasses(this._options?.cssClasses?.pickerCustom[this._activePickerName]);\n }\n }\n}\n","<div [@scaleUpDown]=\"activePickerIndex\">\r\n <ng-template [ngComponentOutletEx]=\"activePickerComponent\" (ngComponentOutletExCreated)=\"pickerCreated($event)\"></ng-template>\r\n</div>"]}
1
+ {"version":3,"file":"picker.component.js","sourceRoot":"","sources":["../../../../../src/picker/components/picker/picker.component.ts","../../../../../src/picker/components/picker/picker.component.html"],"names":[],"mappings":"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","sourcesContent":["import {Component, ChangeDetectionStrategy, Optional, Inject, Input, Type, OnInit, EventEmitter, Output, ChangeDetectorRef, OnDestroy} from '@angular/core';\nimport {extend} from '@jscrpt/common';\nimport {Subscription} from 'rxjs';\n\nimport {DateTimeValue} from '../../../misc/datetime.interface';\nimport {DATE_API} from '../../../misc/tokens';\nimport {DateApi} from '../../../services';\nimport {DateTimePicker, DateTimePickerOptions} from '../../misc/datetimePicker.interface';\nimport {DATE_TIME_PICKER_CONFIGURATION} from '../../misc/tokens';\nimport {DateTimeDayPickerComponent} from '../dayPicker/dayPicker.component';\nimport {DateTimeMonthPickerComponent} from '../monthPicker/monthPicker.component';\nimport {DateTimeYearPickerComponent} from '../yearPicker/yearPicker.component';\nimport {scaleUpDownTrigger} from './picker.component.animations';\n\n//TODO - merge options\n\n/**\n * Default configuration for picker\n */\nconst defaultConfiguration: DateTimePickerOptions<DateTimePicker> =\n{\n defaultPeriod: 'day',\n pickerPeriodsDefinition:\n {\n 'day': DateTimeDayPickerComponent,\n 'month': DateTimeMonthPickerComponent,\n 'year': DateTimeYearPickerComponent\n },\n pickerPeriodsOrder: null,\n cssClasses:\n {\n }\n};\n\n/**\n * Component used for displaying date time picker\n */\n@Component(\n{\n selector: 'date-time-picker',\n templateUrl: 'picker.component.html',\n styleUrls: ['picker.component.css'],\n animations: [scaleUpDownTrigger],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DateTimePickerComponent<TDate = any> implements OnInit, OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Instance of active date time picker\n */\n protected _activePicker?: DateTimePicker<TDate>;\n\n /**\n * Name, id of displayed picker\n */\n protected _activePickerName!: string;\n\n /**\n * Array of available picker names\n */\n protected _pickerNames: string[] = [];\n\n /**\n * Current selected value\n */\n protected _value: DateTimeValue<TDate>|null = null;\n\n /**\n * All subscriptions for active picker\n */\n protected _activePickerSubscriptions: Subscription = new Subscription();\n\n /**\n * Date that should be displayed in picker, used when moving up or down in periods\n */\n protected _display?: TDate;\n\n /**\n * Minimal possible value that can be picked\n */\n protected _minValue: TDate|null = null;\n\n /**\n * Maximal possible value that can be picked\n */\n protected _maxValue: TDate|null = null;\n\n /**\n * Current options used by picker\n */\n protected _options: DateTimePickerOptions<DateTimePicker<TDate>>;\n\n //######################### public properties - template bindings #########################\n\n /**\n * Currently active date time picker component type\n * @internal\n */\n public activePickerComponent?: Type<DateTimePicker<TDate>>;\n\n /**\n * Active picker index\n * @internal\n */\n public activePickerIndex: number = 0;\n\n //######################### public properties - inputs #########################\n\n /**\n * Current options used by picker\n */\n @Input()\n public get options(): Partial<DateTimePickerOptions<DateTimePicker<TDate>>>\n {\n return this._options;\n }\n public set options(value: Partial<DateTimePickerOptions<DateTimePicker<TDate>>>)\n {\n this._options = extend(true, this._options, value);\n\n // without deep-copy for this attribute\n if (value?.pickerPeriodsDefinition)\n {\n this._options.pickerPeriodsDefinition = value.pickerPeriodsDefinition;\n }\n }\n\n /**\n * Current selected value\n */\n @Input()\n public get value(): DateTimeValue<TDate>|null\n {\n return this._value;\n }\n public set value(value: DateTimeValue<TDate>|null)\n {\n this._value = value;\n\n this._activePicker?.setValue(value);\n this._activePicker?.invalidateVisuals();\n }\n\n /**\n * Gets or sets minimal possible value for picker, that can be picked\n */\n @Input()\n public get minValue(): TDate|null\n {\n return this._minValue;\n }\n public set minValue(value: TDate|null)\n {\n this._minValue = value;\n this._activePicker?.setMinValue(this._minValue);\n }\n\n /**\n * Gets or sets maximal possible value for picker, that can be picked\n */\n @Input()\n public get maxValue(): TDate|null\n {\n return this._maxValue;\n }\n public set maxValue(value: TDate|null)\n {\n this._maxValue = value;\n this._activePicker?.setMaxValue(this._maxValue);\n }\n\n //######################### public properties - outputs #########################\n\n /**\n * Occurs when value changes\n */\n @Output()\n public valueChange: EventEmitter<DateTimeValue<TDate>> = new EventEmitter<DateTimeValue<TDate>>();\n\n //######################### constructor #########################\n constructor(@Optional() @Inject(DATE_TIME_PICKER_CONFIGURATION) configuration: Partial<DateTimePickerOptions<DateTimePicker<TDate>>>,\n @Inject(DATE_API) protected _dateApi: DateApi<TDate>,\n protected _changeDetector: ChangeDetectorRef)\n {\n this._options = extend(true, {}, defaultConfiguration, configuration);\n // without deep-copy for this attribute\n if (configuration?.pickerPeriodsDefinition)\n {\n this._options.pickerPeriodsDefinition = configuration.pickerPeriodsDefinition;\n }\n }\n\n //######################### public methods - implementation of OnInit #########################\n\n /**\n * Initialize component\n */\n public ngOnInit(): void\n {\n if (this._options.pickerPeriodsOrder)\n {\n if (Array.isArray(this._options.pickerPeriodsOrder))\n {\n this._pickerNames = this._options.pickerPeriodsOrder;\n }\n else\n {\n this._pickerNames = this._options.pickerPeriodsOrder.split(',')\n .map(x => x.trim())\n .filter(x => x);\n }\n }\n if (this._pickerNames && this._pickerNames.length > 0)\n {\n this._pickerNames.forEach(x => \n {\n if(!this._options.pickerPeriodsDefinition![x!])\n {\n throw new Error(`There is no period '${x}' in picker options`);\n }\n });\n }\n else\n {\n this._pickerNames = Object.keys(this._options.pickerPeriodsDefinition!);\n }\n\n if(this._pickerNames.findIndex(x => x == this._options.defaultPeriod) < 0)\n {\n throw new Error(`There is no period '${this._options.defaultPeriod}' in picker options`);\n }\n\n this.activePickerComponent = this._options.pickerPeriodsDefinition![this._options.defaultPeriod!];\n this._activePickerName = this._options.defaultPeriod!;\n this.activePickerIndex = this._pickerNames.indexOf(this._activePickerName);\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this._display = undefined;\n this._activePickerSubscriptions.unsubscribe();\n }\n\n //######################### public methods - template bindings #########################\n\n /**\n * Handles created or destroyed date time picker instance\n * @param picker - Instance of picker or null\n * @internal\n */\n public pickerCreated(picker: DateTimePicker<TDate>): void\n {\n if(picker == this._activePicker)\n {\n return;\n }\n\n this._activePicker = picker;\n\n this._activePickerSubscriptions.unsubscribe();\n this._activePickerSubscriptions = new Subscription();\n\n if(!this._activePicker)\n {\n return;\n }\n\n this._activePickerSubscriptions.add(picker.valueChange.subscribe(() =>\n {\n this._value = picker.value;\n this.valueChange.emit(this._value!);\n }));\n\n this._activePickerSubscriptions.add(picker.scaleUp.subscribe(display =>\n {\n this._display = display;\n const index = this._pickerNames.indexOf(this._activePickerName) + 1;\n this._activePickerName = this._pickerNames[index];\n this.activePickerIndex = this._pickerNames.indexOf(this._activePickerName);\n this.activePickerComponent = this._options.pickerPeriodsDefinition![this._activePickerName];\n }));\n\n this._activePickerSubscriptions.add(picker.scaleDown.subscribe(display =>\n {\n this._display = display;\n const index = this._pickerNames.indexOf(this._activePickerName) - 1;\n this._activePickerName = this._pickerNames[index];\n this.activePickerIndex = this._pickerNames.indexOf(this._activePickerName);\n this.activePickerComponent = this._options.pickerPeriodsDefinition![this._activePickerName];\n }));\n\n picker.setCanGoDown(this._pickerNames.indexOf(this._activePickerName) > 0);\n picker.setCanGoUp(this._pickerNames.indexOf(this._activePickerName) < this._pickerNames.length - 1);\n\n this._setPickerCssClasses();\n picker.setValue(this._value);\n picker.setMinValue(this._minValue);\n picker.setMaxValue(this._maxValue);\n picker.display(this._display ? this._dateApi.getValue(this._display) : this._dateApi.getValue(this._value?.from ?? this._dateApi.now().value));\n\n picker.invalidateVisuals();\n }\n\n //######################### protected methods #########################\n\n /**\n * Sets picker css classes\n */\n protected _setPickerCssClasses(): void\n {\n if(!this._activePicker)\n {\n return;\n }\n\n //sets shared css\n this._activePicker.setCssClasses(this._options?.cssClasses?.pickerShared ?? {});\n\n if(this._options?.cssClasses?.pickerCustom && this._options?.cssClasses?.pickerCustom[this._activePickerName])\n {\n this._activePicker.setCssClasses(this._options?.cssClasses?.pickerCustom[this._activePickerName]);\n }\n }\n}\n","<div [@scaleUpDown]=\"activePickerIndex\">\r\n <ng-template [ngComponentOutletEx]=\"activePickerComponent\" (ngComponentOutletExCreated)=\"pickerCreated($event)\"></ng-template>\r\n</div>"]}
@@ -1,101 +1,31 @@
1
- import { ChangeDetectorRef, Directive, HostListener, Inject } from '@angular/core';
2
- import { extend } from '@jscrpt/common';
3
- import { Subject } from 'rxjs';
1
+ import { ChangeDetectorRef, Directive, Inject } from '@angular/core';
4
2
  import { DATE_API } from '../../misc/tokens';
3
+ import { PickerImplBaseComponent } from './pickerImplBase.component';
5
4
  import * as i0 from "@angular/core";
6
5
  /**
7
6
  * Base class used as base for picker
8
7
  */
9
- export class PickerBaseComponent {
8
+ export class PickerBaseComponent extends PickerImplBaseComponent {
10
9
  //######################### constructor #########################
11
- constructor(_dateApi, _changeDetector) {
12
- this._dateApi = _dateApi;
13
- this._changeDetector = _changeDetector;
10
+ constructor(dateApi, changeDetector) {
11
+ super(dateApi, changeDetector);
14
12
  //######################### protected fields #########################
15
13
  /**
16
- * Current value of datetime
14
+ * Value of originaly set hour
17
15
  */
18
- this._value = null;
16
+ this._originalHour = 0;
19
17
  /**
20
- * Occurs when value changes
18
+ * Value of originaly set minute
21
19
  */
22
- this._valueChange = new Subject();
23
- /**
24
- * Occurs when user scales up
25
- */
26
- this._scaleUp = new Subject();
27
- /**
28
- * Occurs when user scales down
29
- */
30
- this._scaleDown = new Subject();
31
- /**
32
- * Minimal possible value that can be picked
33
- */
34
- this._minValue = null;
35
- /**
36
- * Maximal possible value that can be picked
37
- */
38
- this._maxValue = null;
20
+ this._originalMinute = 0;
39
21
  //######################### public properties - template bindings #########################
40
- /**
41
- * Date api instance for displayed date
42
- * @internal
43
- */
44
- this.displayDate = null;
45
- /**
46
- * Indication whether can go up in period
47
- * @internal
48
- */
49
- this.canGoUp = false;
50
- /**
51
- * Indication whether can go down in period
52
- * @internal
53
- */
54
- this.canGoDown = false;
55
22
  /**
56
23
  * Array of period data to be displayed
57
24
  * @internal
58
25
  */
59
26
  this.periodData = [];
60
27
  }
61
- //######################### public properties - implementation of DateTimePicker #########################
62
- /**
63
- * Gets current value of datetime
64
- */
65
- get value() {
66
- return this._value;
67
- }
68
- /**
69
- * Occurs when value changes
70
- */
71
- get valueChange() {
72
- return this._valueChange.asObservable();
73
- }
74
- /**
75
- * Occurs when user scales up
76
- */
77
- get scaleUp() {
78
- return this._scaleUp.asObservable();
79
- }
80
- /**
81
- * Occurs when user scales down
82
- */
83
- get scaleDown() {
84
- return this._scaleDown.asObservable();
85
- }
86
28
  //######################### public methods - template bindings #########################
87
- /**
88
- * Changes displayed period to "higher" period
89
- * @param event - Event that occured
90
- * @internal
91
- */
92
- goUp(event) {
93
- event.preventDefault();
94
- if (!this.canGoUp) {
95
- return;
96
- }
97
- this._scaleUp.next(this.displayDate.value);
98
- }
99
29
  /**
100
30
  * Selects period
101
31
  * @param event - Event that occured
@@ -121,13 +51,6 @@ export class PickerBaseComponent {
121
51
  this._scaleDown.next(period.date);
122
52
  }
123
53
  //######################### public methods - implementation of DateTimePicker #########################
124
- /**
125
- * Sets css classes for picker, allowing to override defaults
126
- * @param cssClasses - Css classes to be set for picker
127
- */
128
- setCssClasses(cssClasses) {
129
- this.cssClasses = extend(true, {}, this.cssClasses, cssClasses);
130
- }
131
54
  /**
132
55
  * Sets minimal possible value for picker, that can be picked
133
56
  * @param value - Minimal possible value that can be picked
@@ -150,6 +73,10 @@ export class PickerBaseComponent {
150
73
  */
151
74
  setValue(value) {
152
75
  this._value = value;
76
+ if (this._value) {
77
+ this._originalHour = this._dateApi.getValue(this._value.from).hour();
78
+ this._originalMinute = this._dateApi.getValue(this._value.from).minute();
79
+ }
153
80
  //value is present
154
81
  if (this._value && this.displayDate) {
155
82
  const val = this._dateApi.getValue(this._value.from);
@@ -165,35 +92,6 @@ export class PickerBaseComponent {
165
92
  }
166
93
  }
167
94
  }
168
- /**
169
- * Sets indication whether can go down
170
- * @param value - Indication whether can go down in period
171
- */
172
- setCanGoDown(value) {
173
- this.canGoDown = value;
174
- }
175
- /**
176
- * Sets indication whether can go up
177
- * @param value - Indication whether can go up in period
178
- */
179
- setCanGoUp(value) {
180
- this.canGoUp = value;
181
- }
182
- /**
183
- * Explicitly runs invalidation of content (change detection)
184
- */
185
- invalidateVisuals() {
186
- this._changeDetector.detectChanges();
187
- }
188
- //######################### public methods - host #########################
189
- /**
190
- * Handles click anyway in picker, that blocks blur
191
- * @param event - Event that occured
192
- * @internal
193
- */
194
- handleClick(event) {
195
- event.preventDefault();
196
- }
197
95
  //######################### protected methods #########################
198
96
  /**
199
97
  * Sets period as active
@@ -230,14 +128,11 @@ export class PickerBaseComponent {
230
128
  }
231
129
  }
232
130
  PickerBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PickerBaseComponent, deps: [{ token: DATE_API }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
233
- PickerBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: PickerBaseComponent, host: { listeners: { "mousedown": "handleClick($event)" } }, ngImport: i0 });
131
+ PickerBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: PickerBaseComponent, usesInheritance: true, ngImport: i0 });
234
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PickerBaseComponent, decorators: [{
235
133
  type: Directive
236
134
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
237
135
  type: Inject,
238
136
  args: [DATE_API]
239
- }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { handleClick: [{
240
- type: HostListener,
241
- args: ['mousedown', ['$event']]
242
- }] } });
137
+ }] }, { type: i0.ChangeDetectorRef }]; } });
243
138
  //# sourceMappingURL=pickerBase.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pickerBase.component.js","sourceRoot":"","sources":["../../../../src/picker/components/pickerBase.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectorRef, Directive, HostListener, Inject} from '@angular/core';\nimport {extend} from '@jscrpt/common';\nimport {Observable, Subject} from 'rxjs';\n\nimport {DateTimeValue} from '../../misc/datetime.interface';\nimport {DATE_API} from '../../misc/tokens';\nimport {DateApi, DateApiObject} from '../../services/dateApi.interface';\nimport {DateTimePicker, PeriodData} from '../misc/datetimePicker.interface';\n\n/**\n * Base class used as base for picker\n */\n@Directive()\nexport abstract class PickerBaseComponent<TDate = any, TDateData extends PeriodData<TDate> = any, TCssClasses = object> implements DateTimePicker<TDate, TCssClasses>\n{\n //######################### protected fields #########################\n\n /**\n * Current value of datetime\n */\n protected _value: DateTimeValue<TDate>|null = null;\n\n /**\n * Occurs when value changes\n */\n protected _valueChange: Subject<void> = new Subject<void>();\n \n /**\n * Occurs when user scales up\n */\n protected _scaleUp: Subject<TDate> = new Subject<TDate>();\n\n /**\n * Occurs when user scales down\n */\n protected _scaleDown: Subject<TDate> = new Subject<TDate>();\n\n /**\n * Minimal possible value that can be picked\n */\n protected _minValue: TDate|null = null;\n\n /**\n * Maximal possible value that can be picked\n */\n protected _maxValue: TDate|null = null;\n\n //######################### public properties - implementation of DateTimePicker #########################\n\n /**\n * Gets current value of datetime\n */\n public get value(): DateTimeValue<TDate>|null\n {\n return this._value;\n }\n\n /**\n * Occurs when value changes\n */\n public get valueChange(): Observable<void>\n {\n return this._valueChange.asObservable();\n }\n\n /**\n * Occurs when user scales up\n */\n public get scaleUp(): Observable<TDate>\n {\n return this._scaleUp.asObservable();\n }\n\n /**\n * Occurs when user scales down\n */\n public get scaleDown(): Observable<TDate>\n {\n return this._scaleDown.asObservable();\n }\n\n //######################### public properties - template bindings #########################\n\n /**\n * Date api instance for displayed date\n * @internal\n */\n public displayDate: DateApiObject<TDate>|null = null;\n\n /**\n * Indication whether can go up in period\n * @internal\n */\n public canGoUp: boolean = false;\n\n /**\n * Indication whether can go down in period\n * @internal\n */\n public canGoDown: boolean = false;\n\n /**\n * Array of period data to be displayed\n * @internal\n */\n public periodData: TDateData[] = [];\n\n /**\n * Css classes that are used within picker\n * @internal\n */\n public cssClasses!: TCssClasses;\n\n //######################### constructor #########################\n constructor(@Inject(DATE_API) protected _dateApi: DateApi<TDate>,\n protected _changeDetector: ChangeDetectorRef)\n {\n }\n\n //######################### public methods - template bindings #########################\n\n /**\n * Changes displayed period to \"higher\" period\n * @param event - Event that occured\n * @internal\n */\n public goUp(event: Event)\n {\n event.preventDefault();\n\n if(!this.canGoUp)\n {\n return;\n }\n\n this._scaleUp.next(this.displayDate!.value);\n }\n\n /**\n * Selects period\n * @param event - Event that occured\n * @param period - Selected period\n * @internal\n */\n public select(event: Event, period: PeriodData<TDate>)\n {\n event.preventDefault();\n\n if(period.disabled)\n {\n return;\n }\n\n //handle selection of value\n if(!this.canGoDown)\n {\n this._setPeriod(period);\n\n this._value =\n {\n from: period.date,\n to: this._endOfPeriod(period)\n };\n\n this._valueChange.next();\n\n return;\n }\n\n this._scaleDown.next(period.date);\n }\n\n //######################### public methods - implementation of DateTimePicker #########################\n\n /**\n * Sets css classes for picker, allowing to override defaults\n * @param cssClasses - Css classes to be set for picker\n */\n public setCssClasses(cssClasses: TCssClasses): void\n {\n this.cssClasses = extend(true, {}, this.cssClasses, cssClasses);\n }\n\n /**\n * Sets minimal possible value for picker, that can be picked\n * @param value - Minimal possible value that can be picked\n */\n public setMinValue(value: TDate|null): void\n {\n this._minValue = value;\n this._updateMinMax();\n }\n\n /**\n * Sets maximal possible value for picker, that can be picked\n * @param value - Maximal possible value that can be picked\n */\n public setMaxValue(value: TDate|null): void\n {\n this._maxValue = value;\n this._updateMinMax();\n }\n\n /**\n * Sets value of datetime picker\n * @param value - Value to be set to this picker\n */\n public setValue(value: DateTimeValue<TDate>|null): void\n {\n this._value = value;\n\n //value is present\n if(this._value && this.displayDate)\n {\n const val = this._dateApi.getValue(this._value.from);\n\n //change picker to value\n if(!this._isSamePeriodAsDisplayed(val))\n {\n this.display(val);\n\n return;\n }\n\n const period = this._getPeriodData(val);\n\n //was initialized\n if(period)\n {\n this._setPeriod(period);\n }\n }\n }\n\n /**\n * Set displays date to be displayed\n * @param value - Value that identifies period that is going to be displayed\n */\n public abstract display(value: DateApiObject<TDate>): void;\n\n /**\n * Sets indication whether can go down\n * @param value - Indication whether can go down in period\n */\n public setCanGoDown(value: boolean): void\n {\n this.canGoDown = value;\n }\n\n /**\n * Sets indication whether can go up\n * @param value - Indication whether can go up in period\n */\n public setCanGoUp(value: boolean): void\n {\n this.canGoUp = value;\n }\n\n /**\n * Explicitly runs invalidation of content (change detection)\n */\n public invalidateVisuals(): void\n {\n this._changeDetector.detectChanges();\n }\n\n //######################### public methods - host #########################\n\n /**\n * Handles click anyway in picker, that blocks blur\n * @param event - Event that occured\n * @internal\n */\n @HostListener('mousedown', ['$event'])\n public handleClick(event: Event)\n {\n event.preventDefault();\n }\n\n //######################### protected methods #########################\n\n /**\n * Sets period as active\n * @param period - Period to be set as active\n */\n protected _setPeriod(period: PeriodData<TDate>)\n {\n this.periodData.forEach(itm => itm.active = false);\n\n period.active = true;\n }\n\n /**\n * Updates minimal and maximal value for picker\n */\n protected _updateMinMax()\n {\n if(!this.periodData.length)\n {\n return;\n }\n\n //no min, no max\n if(!this._minValue && !this._maxValue)\n {\n this.periodData.forEach(itm => itm.disabled = false);\n\n return;\n }\n\n const minDateApi = this._minValue ? this._dateApi.getValue(this._minValue) : null;\n const maxDateApi = this._maxValue ? this._dateApi.getValue(this._maxValue) : null;\n let restAfter = false;\n\n this.periodData.forEach(period =>\n {\n if(!!minDateApi && minDateApi.isAfter(period.date) && !this._isSamePeriod(minDateApi, period.date))\n {\n period.disabled = true;\n }\n\n if(restAfter || (!!maxDateApi && maxDateApi.isBefore(period.date) && !this._isSamePeriod(maxDateApi, period.date)))\n {\n restAfter = true;\n period.disabled = true;\n }\n });\n }\n\n /**\n * Obtains end of period\n * @param period - Period for which should be end obtained\n */\n protected abstract _endOfPeriod(period: PeriodData<TDate>): TDate;\n\n /**\n * Tests whether provided value is in same period as displayed picker\n * @param val - Tested value for same period as displayed picker\n */\n protected abstract _isSamePeriodAsDisplayed(val: DateApiObject<TDate>): boolean;\n\n /**\n * Tests whether provided value is in same period target value\n * @param val - Tested value\n * @param target - Target value to be tested against\n */\n protected abstract _isSamePeriod(val: DateApiObject<TDate>, target: TDate): boolean;\n\n /**\n * Gets period data for specified value\n * @param val - Value for which is period data obtained\n */\n protected abstract _getPeriodData(val: DateApiObject<TDate>): PeriodData<TDate>;\n}"]}
1
+ {"version":3,"file":"pickerBase.component.js","sourceRoot":"","sources":["../../../../src/picker/components/pickerBase.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {ChangeDetectorRef, Directive, Inject} from '@angular/core';\n\nimport {DateTimeValue} from '../../misc/datetime.interface';\nimport {DATE_API} from '../../misc/tokens';\nimport {DateApi, DateApiObject} from '../../services/dateApi.interface';\nimport {DateTimePicker, PeriodData} from '../misc/datetimePicker.interface';\nimport {PickerImplBaseComponent} from './pickerImplBase.component';\n\n/**\n * Base class used as base for picker\n */\n@Directive()\nexport abstract class PickerBaseComponent<TDate = any, TDateData extends PeriodData<TDate> = any, TCssClasses = object> extends PickerImplBaseComponent<TDate, TCssClasses> implements DateTimePicker<TDate, TCssClasses>\n{\n //######################### protected fields #########################\n\n /**\n * Value of originaly set hour\n */\n protected _originalHour: number = 0;\n\n /**\n * Value of originaly set minute\n */\n protected _originalMinute: number = 0;\n\n //######################### public properties - template bindings #########################\n\n /**\n * Array of period data to be displayed\n * @internal\n */\n public periodData: TDateData[] = [];\n\n //######################### constructor #########################\n constructor(@Inject(DATE_API) dateApi: DateApi<TDate>,\n changeDetector: ChangeDetectorRef)\n {\n super(dateApi, changeDetector);\n }\n\n //######################### public methods - template bindings #########################\n\n /**\n * Selects period\n * @param event - Event that occured\n * @param period - Selected period\n * @internal\n */\n public select(event: Event, period: PeriodData<TDate>): void\n {\n event.preventDefault();\n\n if(period.disabled)\n {\n return;\n }\n\n //handle selection of value\n if(!this.canGoDown)\n {\n this._setPeriod(period);\n\n this._value =\n {\n from: period.date,\n to: this._endOfPeriod(period)\n };\n\n this._valueChange.next();\n\n return;\n }\n\n this._scaleDown.next(period.date);\n }\n\n //######################### public methods - implementation of DateTimePicker #########################\n\n /**\n * Sets minimal possible value for picker, that can be picked\n * @param value - Minimal possible value that can be picked\n */\n public setMinValue(value: TDate|null): void\n {\n this._minValue = value;\n this._updateMinMax();\n }\n\n /**\n * Sets maximal possible value for picker, that can be picked\n * @param value - Maximal possible value that can be picked\n */\n public setMaxValue(value: TDate|null): void\n {\n this._maxValue = value;\n this._updateMinMax();\n }\n\n /**\n * Sets value of datetime picker\n * @param value - Value to be set to this picker\n */\n public setValue(value: DateTimeValue<TDate>|null): void\n {\n this._value = value;\n\n if(this._value)\n {\n this._originalHour = this._dateApi.getValue(this._value.from).hour();\n this._originalMinute = this._dateApi.getValue(this._value.from).minute();\n }\n\n //value is present\n if(this._value && this.displayDate)\n {\n const val = this._dateApi.getValue(this._value.from);\n\n //change picker to value\n if(!this._isSamePeriodAsDisplayed(val))\n {\n this.display(val);\n\n return;\n }\n\n const period = this._getPeriodData(val);\n\n //was initialized\n if(period)\n {\n this._setPeriod(period);\n }\n }\n }\n\n //######################### protected methods #########################\n\n /**\n * Sets period as active\n * @param period - Period to be set as active\n */\n protected _setPeriod(period: PeriodData<TDate>): void\n {\n this.periodData.forEach(itm => itm.active = false);\n\n period.active = true;\n }\n\n /**\n * Updates minimal and maximal value for picker\n */\n protected _updateMinMax(): void\n {\n if(!this.periodData.length)\n {\n return;\n }\n\n //no min, no max\n if(!this._minValue && !this._maxValue)\n {\n this.periodData.forEach(itm => itm.disabled = false);\n\n return;\n }\n\n const minDateApi = this._minValue ? this._dateApi.getValue(this._minValue) : null;\n const maxDateApi = this._maxValue ? this._dateApi.getValue(this._maxValue) : null;\n let restAfter = false;\n\n this.periodData.forEach(period =>\n {\n if(!!minDateApi && minDateApi.isAfter(period.date) && !this._isSamePeriod(minDateApi, period.date))\n {\n period.disabled = true;\n }\n\n if(restAfter || (!!maxDateApi && maxDateApi.isBefore(period.date) && !this._isSamePeriod(maxDateApi, period.date)))\n {\n restAfter = true;\n period.disabled = true;\n }\n });\n }\n\n /**\n * Obtains end of period\n * @param period - Period for which should be end obtained\n */\n protected abstract _endOfPeriod(period: PeriodData<TDate>): TDate;\n\n /**\n * Tests whether provided value is in same period as displayed picker\n * @param val - Tested value for same period as displayed picker\n */\n protected abstract _isSamePeriodAsDisplayed(val: DateApiObject<TDate>): boolean;\n\n /**\n * Tests whether provided value is in same period target value\n * @param val - Tested value\n * @param target - Target value to be tested against\n */\n protected abstract _isSamePeriod(val: DateApiObject<TDate>, target: TDate): boolean;\n\n /**\n * Gets period data for specified value\n * @param val - Value for which is period data obtained\n */\n protected abstract _getPeriodData(val: DateApiObject<TDate>): PeriodData<TDate>;\n}"]}
@@ -0,0 +1,145 @@
1
+ import { ChangeDetectorRef, Directive, HostListener, Inject } from '@angular/core';
2
+ import { extend } from '@jscrpt/common';
3
+ import { Subject } from 'rxjs';
4
+ import { DATE_API } from '../../misc/tokens';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Base class used as base for picker as base implementation of DateTimePicker interface
8
+ */
9
+ export class PickerImplBaseComponent {
10
+ //######################### constructor #########################
11
+ constructor(_dateApi, _changeDetector) {
12
+ this._dateApi = _dateApi;
13
+ this._changeDetector = _changeDetector;
14
+ //######################### protected fields #########################
15
+ /**
16
+ * Current value of datetime
17
+ */
18
+ this._value = null;
19
+ /**
20
+ * Occurs when value changes
21
+ */
22
+ this._valueChange = new Subject();
23
+ /**
24
+ * Occurs when user scales up
25
+ */
26
+ this._scaleUp = new Subject();
27
+ /**
28
+ * Occurs when user scales down
29
+ */
30
+ this._scaleDown = new Subject();
31
+ /**
32
+ * Minimal possible value that can be picked
33
+ */
34
+ this._minValue = null;
35
+ /**
36
+ * Maximal possible value that can be picked
37
+ */
38
+ this._maxValue = null;
39
+ //######################### public properties - template bindings #########################
40
+ /**
41
+ * Date api instance for displayed date
42
+ * @internal
43
+ */
44
+ this.displayDate = null;
45
+ /**
46
+ * Indication whether can go up in period
47
+ * @internal
48
+ */
49
+ this.canGoUp = false;
50
+ /**
51
+ * Indication whether can go down in period
52
+ * @internal
53
+ */
54
+ this.canGoDown = false;
55
+ }
56
+ //######################### public properties - implementation of DateTimePicker #########################
57
+ /**
58
+ * Gets current value of datetime
59
+ */
60
+ get value() {
61
+ return this._value;
62
+ }
63
+ /**
64
+ * Occurs when value changes
65
+ */
66
+ get valueChange() {
67
+ return this._valueChange.asObservable();
68
+ }
69
+ /**
70
+ * Occurs when user scales up
71
+ */
72
+ get scaleUp() {
73
+ return this._scaleUp.asObservable();
74
+ }
75
+ /**
76
+ * Occurs when user scales down
77
+ */
78
+ get scaleDown() {
79
+ return this._scaleDown.asObservable();
80
+ }
81
+ //######################### public methods - template bindings #########################
82
+ /**
83
+ * Changes displayed period to "higher" period
84
+ * @param event - Event that occured
85
+ * @internal
86
+ */
87
+ goUp(event) {
88
+ event.preventDefault();
89
+ if (!this.canGoUp) {
90
+ return;
91
+ }
92
+ if (this.displayDate) {
93
+ this._scaleUp.next(this.displayDate.value);
94
+ }
95
+ }
96
+ //######################### public methods - implementation of DateTimePicker #########################
97
+ /**
98
+ * Sets css classes for picker, allowing to override defaults
99
+ * @param cssClasses - Css classes to be set for picker
100
+ */
101
+ setCssClasses(cssClasses) {
102
+ this.cssClasses = extend(true, {}, this.cssClasses, cssClasses);
103
+ }
104
+ /**
105
+ * Sets indication whether can go down
106
+ * @param value - Indication whether can go down in period
107
+ */
108
+ setCanGoDown(value) {
109
+ this.canGoDown = value;
110
+ }
111
+ /**
112
+ * Sets indication whether can go up
113
+ * @param value - Indication whether can go up in period
114
+ */
115
+ setCanGoUp(value) {
116
+ this.canGoUp = value;
117
+ }
118
+ /**
119
+ * Explicitly runs invalidation of content (change detection)
120
+ */
121
+ invalidateVisuals() {
122
+ this._changeDetector.detectChanges();
123
+ }
124
+ //######################### public methods - host #########################
125
+ /**
126
+ * Handles click anyway in picker, that blocks blur
127
+ * @param event - Event that occured
128
+ * @internal
129
+ */
130
+ handleClick(event) {
131
+ event.preventDefault();
132
+ }
133
+ }
134
+ PickerImplBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PickerImplBaseComponent, deps: [{ token: DATE_API }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
135
+ PickerImplBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: PickerImplBaseComponent, host: { listeners: { "mousedown": "handleClick($event)" } }, ngImport: i0 });
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PickerImplBaseComponent, decorators: [{
137
+ type: Directive
138
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
139
+ type: Inject,
140
+ args: [DATE_API]
141
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { handleClick: [{
142
+ type: HostListener,
143
+ args: ['mousedown', ['$event']]
144
+ }] } });
145
+ //# sourceMappingURL=pickerImplBase.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickerImplBase.component.js","sourceRoot":"","sources":["../../../../src/picker/components/pickerImplBase.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AACjF,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAa,OAAO,EAAC,MAAM,MAAM,CAAC;AAGzC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;;AAI3C;;GAEG;AAEH,MAAM,OAAgB,uBAAuB;IA8FzC,iEAAiE;IACjE,YAAwC,QAAwB,EAC1C,eAAkC;QADhB,aAAQ,GAAR,QAAQ,CAAgB;QAC1C,oBAAe,GAAf,eAAe,CAAmB;QA9FxD,sEAAsE;QAEtE;;WAEG;QACO,WAAM,GAA8B,IAAI,CAAC;QAEnD;;WAEG;QACO,iBAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAE5D;;WAEG;QACO,aAAQ,GAAmB,IAAI,OAAO,EAAS,CAAC;QAE1D;;WAEG;QACO,eAAU,GAAmB,IAAI,OAAO,EAAS,CAAC;QAE5D;;WAEG;QACO,cAAS,GAAe,IAAI,CAAC;QAEvC;;WAEG;QACO,cAAS,GAAe,IAAI,CAAC;QAoCvC,2FAA2F;QAE3F;;;WAGG;QACI,gBAAW,GAA8B,IAAI,CAAC;QAErD;;;WAGG;QACI,YAAO,GAAY,KAAK,CAAC;QAEhC;;;WAGG;QACI,cAAS,GAAY,KAAK,CAAC;IAYlC,CAAC;IAhED,0GAA0G;IAE1G;;OAEG;IACH,IAAW,KAAK;QAEZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAElB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAEd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAEhB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAkCD,wFAAwF;IAExF;;;;OAIG;IACI,IAAI,CAAC,KAAY;QAEpB,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAG,CAAC,IAAI,CAAC,OAAO,EAChB;YACI,OAAO;SACV;QAED,IAAG,IAAI,CAAC,WAAW,EACnB;YACI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC9C;IACL,CAAC;IAED,uGAAuG;IAEvG;;;OAGG;IACI,aAAa,CAAC,UAAuB;QAExC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IA0BD;;;OAGG;IACI,YAAY,CAAC,KAAc;QAE9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,KAAc;QAE5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,iBAAiB;QAEpB,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,2EAA2E;IAE3E;;;;OAIG;IAEI,WAAW,CAAC,KAAY;QAE3B,KAAK,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC;;oHAlMiB,uBAAuB,kBA+FrB,QAAQ;wGA/FV,uBAAuB;2FAAvB,uBAAuB;kBAD5C,SAAS;;0BAgGO,MAAM;2BAAC,QAAQ;4EAgGrB,WAAW;sBADjB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import {ChangeDetectorRef, Directive, HostListener, Inject} from '@angular/core';\nimport {extend} from '@jscrpt/common';\nimport {Observable, Subject} from 'rxjs';\n\nimport {DateTimeValue} from '../../misc/datetime.interface';\nimport {DATE_API} from '../../misc/tokens';\nimport {DateApi, DateApiObject} from '../../services/dateApi.interface';\nimport {DateTimePicker} from '../misc/datetimePicker.interface';\n\n/**\n * Base class used as base for picker as base implementation of DateTimePicker interface\n */\n@Directive()\nexport abstract class PickerImplBaseComponent<TDate = any, TCssClasses = any> implements DateTimePicker<TDate, TCssClasses>\n{\n //######################### protected fields #########################\n\n /**\n * Current value of datetime\n */\n protected _value: DateTimeValue<TDate>|null = null;\n\n /**\n * Occurs when value changes\n */\n protected _valueChange: Subject<void> = new Subject<void>();\n \n /**\n * Occurs when user scales up\n */\n protected _scaleUp: Subject<TDate> = new Subject<TDate>();\n\n /**\n * Occurs when user scales down\n */\n protected _scaleDown: Subject<TDate> = new Subject<TDate>();\n\n /**\n * Minimal possible value that can be picked\n */\n protected _minValue: TDate|null = null;\n\n /**\n * Maximal possible value that can be picked\n */\n protected _maxValue: TDate|null = null;\n\n //######################### public properties - implementation of DateTimePicker #########################\n\n /**\n * Gets current value of datetime\n */\n public get value(): DateTimeValue<TDate>|null\n {\n return this._value;\n }\n\n /**\n * Occurs when value changes\n */\n public get valueChange(): Observable<void>\n {\n return this._valueChange.asObservable();\n }\n\n /**\n * Occurs when user scales up\n */\n public get scaleUp(): Observable<TDate>\n {\n return this._scaleUp.asObservable();\n }\n\n /**\n * Occurs when user scales down\n */\n public get scaleDown(): Observable<TDate>\n {\n return this._scaleDown.asObservable();\n }\n\n //######################### public properties - template bindings #########################\n\n /**\n * Date api instance for displayed date\n * @internal\n */\n public displayDate: DateApiObject<TDate>|null = null;\n\n /**\n * Indication whether can go up in period\n * @internal\n */\n public canGoUp: boolean = false;\n\n /**\n * Indication whether can go down in period\n * @internal\n */\n public canGoDown: boolean = false;\n\n /**\n * Css classes that are used within picker\n * @internal\n */\n public cssClasses!: TCssClasses;\n\n //######################### constructor #########################\n constructor(@Inject(DATE_API) protected _dateApi: DateApi<TDate>,\n protected _changeDetector: ChangeDetectorRef)\n {\n }\n\n //######################### public methods - template bindings #########################\n\n /**\n * Changes displayed period to \"higher\" period\n * @param event - Event that occured\n * @internal\n */\n public goUp(event: Event): void\n {\n event.preventDefault();\n\n if(!this.canGoUp)\n {\n return;\n }\n\n if(this.displayDate)\n {\n this._scaleUp.next(this.displayDate.value);\n }\n }\n\n //######################### public methods - implementation of DateTimePicker #########################\n\n /**\n * Sets css classes for picker, allowing to override defaults\n * @param cssClasses - Css classes to be set for picker\n */\n public setCssClasses(cssClasses: TCssClasses): void\n {\n this.cssClasses = extend(true, {}, this.cssClasses, cssClasses);\n }\n\n /**\n * Sets minimal possible value for picker, that can be picked\n * @param value - Minimal possible value that can be picked\n */\n public abstract setMinValue(value: TDate|null): void;\n\n /**\n * Sets maximal possible value for picker, that can be picked\n * @param value - Maximal possible value that can be picked\n */\n public abstract setMaxValue(value: TDate|null): void;\n\n /**\n * Sets value of datetime picker\n * @param value - Value to be set to this picker\n */\n public abstract setValue(value: DateTimeValue<TDate>|null): void;\n\n /**\n * Set displays date to be displayed\n * @param value - Value that identifies period that is going to be displayed\n */\n public abstract display(value: DateApiObject<TDate>): void;\n\n /**\n * Sets indication whether can go down\n * @param value - Indication whether can go down in period\n */\n public setCanGoDown(value: boolean): void\n {\n this.canGoDown = value;\n }\n\n /**\n * Sets indication whether can go up\n * @param value - Indication whether can go up in period\n */\n public setCanGoUp(value: boolean): void\n {\n this.canGoUp = value;\n }\n\n /**\n * Explicitly runs invalidation of content (change detection)\n */\n public invalidateVisuals(): void\n {\n this._changeDetector.detectChanges();\n }\n\n //######################### public methods - host #########################\n\n /**\n * Handles click anyway in picker, that blocks blur\n * @param event - Event that occured\n * @internal\n */\n @HostListener('mousedown', ['$event'])\n public handleClick(event: Event): void\n {\n event.preventDefault();\n }\n}"]}
@@ -0,0 +1,144 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { PickerImplBaseComponent } from '../pickerImplBase.component';
3
+ import { hours, minutes } from './rollerTimePicker.data';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@anglr/common";
6
+ import * as i2 from "../../directives/loopScroll/loopScroll.directive";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "../../directives/loopScrollData/loopScrollData.directive";
9
+ import * as i5 from "../../../pipes/dateFormat.pipe";
10
+ /**
11
+ * Component used for rendering roller time picker
12
+ */
13
+ export class DateTimeRollerTimePickerComponent extends PickerImplBaseComponent {
14
+ constructor() {
15
+ super(...arguments);
16
+ //######################### public properties - template bindings #########################
17
+ /**
18
+ * Array of available hours
19
+ */
20
+ this.hours = hours;
21
+ /**
22
+ * Array of available minutes
23
+ */
24
+ this.minutes = minutes;
25
+ /**
26
+ * Indication whether are minutes open
27
+ */
28
+ this.minutesOpen = false;
29
+ /**
30
+ * Indication whether are hours open
31
+ */
32
+ this.hoursOpen = false;
33
+ }
34
+ /**
35
+ * Current value of hour
36
+ */
37
+ get hour() {
38
+ var _a, _b;
39
+ return (_b = (_a = this.displayDate) === null || _a === void 0 ? void 0 : _a.hour()) !== null && _b !== void 0 ? _b : 0;
40
+ }
41
+ set hour(value) {
42
+ var _a;
43
+ (_a = this.displayDate) === null || _a === void 0 ? void 0 : _a.hour(value);
44
+ }
45
+ /**
46
+ * Current value of minute
47
+ */
48
+ get minute() {
49
+ var _a, _b;
50
+ return (_b = (_a = this.displayDate) === null || _a === void 0 ? void 0 : _a.minute()) !== null && _b !== void 0 ? _b : 0;
51
+ }
52
+ set minute(value) {
53
+ var _a;
54
+ (_a = this.displayDate) === null || _a === void 0 ? void 0 : _a.minute(value);
55
+ }
56
+ //######################### public methods - implementation of PickerBaseComponent #########################
57
+ /**
58
+ * @inheritdoc
59
+ */
60
+ display(value) {
61
+ this.displayDate = value;
62
+ }
63
+ /**
64
+ * @inheritdoc
65
+ */
66
+ setMinValue(_value) {
67
+ }
68
+ /**
69
+ * @inheritdoc
70
+ */
71
+ setMaxValue(_value) {
72
+ }
73
+ /**
74
+ * @inheritdoc
75
+ */
76
+ setValue(_value) {
77
+ }
78
+ //######################### public methods - template bindings #########################
79
+ /**
80
+ * Sets hour
81
+ * @param event - Mouse event that was triggered
82
+ * @param value - Value to be set as hour
83
+ * @returns
84
+ */
85
+ setHour(event, value) {
86
+ var _a, _b;
87
+ if (!this.hoursOpen && event) {
88
+ return;
89
+ }
90
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
91
+ event === null || event === void 0 ? void 0 : event.preventDefault();
92
+ if (this.hour == value) {
93
+ return;
94
+ }
95
+ this.hour = value;
96
+ if (event) {
97
+ this.hoursOpen = false;
98
+ }
99
+ if (this.displayDate) {
100
+ this._value =
101
+ {
102
+ from: (_a = this.displayDate) === null || _a === void 0 ? void 0 : _a.value,
103
+ to: (_b = this.displayDate) === null || _b === void 0 ? void 0 : _b.value
104
+ };
105
+ this._valueChange.next();
106
+ }
107
+ }
108
+ /**
109
+ * Sets minute
110
+ * @param event - Mouse event that was triggered
111
+ * @param value - Value to be set as minute
112
+ * @returns
113
+ */
114
+ setMinute(event, value) {
115
+ var _a, _b;
116
+ if (!this.minutesOpen && event) {
117
+ return;
118
+ }
119
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
120
+ event === null || event === void 0 ? void 0 : event.preventDefault();
121
+ if (this.minute == value) {
122
+ return;
123
+ }
124
+ this.minute = value;
125
+ if (event) {
126
+ this.minutesOpen = false;
127
+ }
128
+ if (this.displayDate) {
129
+ this._value =
130
+ {
131
+ from: (_a = this.displayDate) === null || _a === void 0 ? void 0 : _a.value,
132
+ to: (_b = this.displayDate) === null || _b === void 0 ? void 0 : _b.value
133
+ };
134
+ this._valueChange.next();
135
+ }
136
+ }
137
+ }
138
+ DateTimeRollerTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DateTimeRollerTimePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
139
+ DateTimeRollerTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DateTimeRollerTimePickerComponent, selector: "date-time-roller-time-picker", usesInheritance: true, ngImport: i0, template: "<div class=\"flex-row\" style=\"justify-content: center;\">\n <div [class.clickable]=\"canGoUp\" (mousedown)=\"goUp($event)\">{{displayDate?.value | dateFormat: 'date'}}</div>\n</div>\n\n<div class=\"time-area\">\n <div class=\"value-container\"\n [clickOutside]=\"true\"\n (clickOutsideChange)=\"hoursOpen = false\"\n [clickOutsideElement]=\"hoursScroll\">\n <div #hoursScroll\n class=\"roller-scroll\"\n [class.open]=\"hoursOpen\"\n [loopScroll]=\"hour\"\n [open]=\"hoursOpen\"\n (loopScrollChange)=\"setHour(null, $event)\"\n (click)=\"hoursOpen = !hoursOpen\" >\n <div *ngFor=\"let hour of hours\"\n [loopScrollData]=\"hour?.data\"\n (click)=\"setHour($event, hour?.data)\">{{hour?.displayText}}</div>\n </div>\n </div>\n\n <div class=\"minute-second-separator\">:</div>\n\n <div class=\"value-container\"\n [clickOutside]=\"true\"\n (clickOutsideChange)=\"minutesOpen = false\"\n [clickOutsideElement]=\"minutesScroll\">\n <div #minutesScroll\n class=\"roller-scroll\"\n [class.open]=\"minutesOpen\"\n [loopScroll]=\"minute\"\n [open]=\"minutesOpen\"\n (loopScrollChange)=\"setMinute(null, $event)\"\n (click)=\"minutesOpen = !minutesOpen\">\n <div *ngFor=\"let minute of minutes\"\n [loopScrollData]=\"minute?.data\"\n (click)=\"setMinute($event, minute?.data)\">{{minute?.displayText}}</div>\n </div>\n </div>\n</div>\n", styles: [".time-area\n{\n display: flex;\n flex-direction: row;\n padding: 48px 64px;\n font-size: 32px;\n}\n\n.value-container\n{\n position: relative;\n height: 1em;\n width: 2ch;\n}\n\n.roller-scroll\n{\n position: absolute;\n line-height: 1em;\n max-height: 1em;\n overflow: scroll;\n scrollbar-width: none;\n top: 0;\n background-color: #666666;\n transition: all 250ms;\n border-radius: 4px;\n}\n\n.roller-scroll.open\n{\n max-height: 5em;\n top: -2em;\n}\n\n.minute-second-separator\n{\n margin-left: 12px;\n margin-right: 12px;\n line-height: 1em;\n}\n"], directives: [{ type: i1.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutside", "clickOutsideElement"], outputs: ["clickOutsideChange"] }, { type: i2.LoopScrollDirective, selector: "[loopScroll]", inputs: ["loopScroll", "open"], outputs: ["loopScrollChange"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.LoopScrollDataDirective, selector: "[loopScrollData]", inputs: ["loopScrollData"] }], pipes: { "dateFormat": i5.DateFormatPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DateTimeRollerTimePickerComponent, decorators: [{
141
+ type: Component,
142
+ args: [{ selector: 'date-time-roller-time-picker', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex-row\" style=\"justify-content: center;\">\n <div [class.clickable]=\"canGoUp\" (mousedown)=\"goUp($event)\">{{displayDate?.value | dateFormat: 'date'}}</div>\n</div>\n\n<div class=\"time-area\">\n <div class=\"value-container\"\n [clickOutside]=\"true\"\n (clickOutsideChange)=\"hoursOpen = false\"\n [clickOutsideElement]=\"hoursScroll\">\n <div #hoursScroll\n class=\"roller-scroll\"\n [class.open]=\"hoursOpen\"\n [loopScroll]=\"hour\"\n [open]=\"hoursOpen\"\n (loopScrollChange)=\"setHour(null, $event)\"\n (click)=\"hoursOpen = !hoursOpen\" >\n <div *ngFor=\"let hour of hours\"\n [loopScrollData]=\"hour?.data\"\n (click)=\"setHour($event, hour?.data)\">{{hour?.displayText}}</div>\n </div>\n </div>\n\n <div class=\"minute-second-separator\">:</div>\n\n <div class=\"value-container\"\n [clickOutside]=\"true\"\n (clickOutsideChange)=\"minutesOpen = false\"\n [clickOutsideElement]=\"minutesScroll\">\n <div #minutesScroll\n class=\"roller-scroll\"\n [class.open]=\"minutesOpen\"\n [loopScroll]=\"minute\"\n [open]=\"minutesOpen\"\n (loopScrollChange)=\"setMinute(null, $event)\"\n (click)=\"minutesOpen = !minutesOpen\">\n <div *ngFor=\"let minute of minutes\"\n [loopScrollData]=\"minute?.data\"\n (click)=\"setMinute($event, minute?.data)\">{{minute?.displayText}}</div>\n </div>\n </div>\n</div>\n", styles: [".time-area\n{\n display: flex;\n flex-direction: row;\n padding: 48px 64px;\n font-size: 32px;\n}\n\n.value-container\n{\n position: relative;\n height: 1em;\n width: 2ch;\n}\n\n.roller-scroll\n{\n position: absolute;\n line-height: 1em;\n max-height: 1em;\n overflow: scroll;\n scrollbar-width: none;\n top: 0;\n background-color: #666666;\n transition: all 250ms;\n border-radius: 4px;\n}\n\n.roller-scroll.open\n{\n max-height: 5em;\n top: -2em;\n}\n\n.minute-second-separator\n{\n margin-left: 12px;\n margin-right: 12px;\n line-height: 1em;\n}\n"] }]
143
+ }] });
144
+ //# sourceMappingURL=rollerTimePicker.component.js.map