@anglr/datetime 5.0.0-beta.20221018111751 → 5.0.0-beta.20221019093146

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 (185) hide show
  1. package/changelog.md +64 -1
  2. package/es2015/src/interfaces/dateTimeInput/dateTimeInput.interface.js.map +1 -1
  3. package/es2015/src/legacy/picker/components/dayPicker/dayPicker.component.js.map +1 -1
  4. package/es2015/src/legacy/picker/components/monthPicker/monthPicker.component.js.map +1 -1
  5. package/es2015/src/legacy/picker/components/picker/picker.component.js +4 -4
  6. package/es2015/src/legacy/picker/components/picker/picker.component.js.map +1 -1
  7. package/es2015/src/legacy/picker/components/pickerBase.component.js.map +1 -1
  8. package/es2015/src/legacy/picker/components/pickerImplBase.component.js.map +1 -1
  9. package/es2015/src/legacy/picker/components/rollerTimePicker/rollerTimePicker.component.js.map +1 -1
  10. package/es2015/src/legacy/picker/components/yearPicker/yearPicker.component.js.map +1 -1
  11. package/es2015/src/legacy/picker/misc/datetimePicker.interface.js.map +1 -1
  12. package/es2015/src/legacy/picker/misc/tokens.js.map +1 -1
  13. package/es2015/src/legacy/picker/modules/picker.module.js +9 -9
  14. package/es2015/src/legacy/picker/modules/picker.module.js.map +1 -1
  15. package/es2015/src/legacy/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js +2 -2
  16. package/es2015/src/legacy/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js.map +1 -1
  17. package/es2015/src/legacy/selector/misc/datetimeSelector.interface.js.map +1 -1
  18. package/es2015/src/legacy/selector/modules/selector.module.js +4 -4
  19. package/es2015/src/legacy/selector/modules/selector.module.js.map +1 -1
  20. package/es2015/src/misc/validators.js +35 -1
  21. package/es2015/src/misc/validators.js.map +1 -1
  22. package/es2015/src/modules/dateTime/directives/dateTimeInput/dateTimeInput.directive.js +18 -12
  23. package/es2015/src/modules/dateTime/directives/dateTimeInput/dateTimeInput.directive.js.map +1 -1
  24. package/es2015/src/modules/dateTimePicker/components/dateTimePeriodPickerBase.js +48 -0
  25. package/es2015/src/modules/dateTimePicker/components/dateTimePeriodPickerBase.js.map +1 -0
  26. package/es2015/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.js +180 -0
  27. package/es2015/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.js.map +1 -0
  28. package/es2015/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.interface.js +2 -0
  29. package/es2015/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.interface.js.map +1 -0
  30. package/es2015/src/modules/dateTimePicker/components/dayPicker/dayPicker.component.js +17 -0
  31. package/es2015/src/modules/dateTimePicker/components/dayPicker/dayPicker.component.js.map +1 -0
  32. package/es2015/src/modules/dateTimePicker/components/dayPicker/dayPicker.interfaces.js +2 -0
  33. package/es2015/src/modules/dateTimePicker/components/dayPicker/dayPicker.interfaces.js.map +1 -0
  34. package/es2015/src/modules/dateTimePicker/components/index.js +5 -0
  35. package/es2015/src/modules/dateTimePicker/components/index.js.map +1 -0
  36. package/es2015/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.directive.js +189 -0
  37. package/es2015/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.directive.js.map +1 -0
  38. package/es2015/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.interface.js +2 -0
  39. package/es2015/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.interface.js.map +1 -0
  40. package/es2015/src/modules/dateTimePicker/directives/index.js +3 -0
  41. package/es2015/src/modules/dateTimePicker/directives/index.js.map +1 -0
  42. package/es2015/src/modules/dateTimePicker/index.js +6 -0
  43. package/es2015/src/modules/dateTimePicker/index.js.map +1 -0
  44. package/es2015/src/modules/dateTimePicker/interfaces/dateTimePicker/dateTimePicker.interface.js +2 -0
  45. package/es2015/src/modules/dateTimePicker/interfaces/dateTimePicker/dateTimePicker.interface.js.map +1 -0
  46. package/es2015/src/modules/dateTimePicker/interfaces/index.js +2 -0
  47. package/es2015/src/modules/dateTimePicker/interfaces/index.js.map +1 -0
  48. package/es2015/src/modules/dateTimePicker/misc/tokens.js +10 -0
  49. package/es2015/src/modules/dateTimePicker/misc/tokens.js.map +1 -0
  50. package/es2015/src/modules/dateTimePicker/modules/dateTimePicker.module.js +28 -0
  51. package/es2015/src/modules/dateTimePicker/modules/dateTimePicker.module.js.map +1 -0
  52. package/es2015/src/modules/dateTimePicker/modules/index.js +2 -0
  53. package/es2015/src/modules/dateTimePicker/modules/index.js.map +1 -0
  54. package/es2015/src/modules/index.js +1 -0
  55. package/es2015/src/modules/index.js.map +1 -1
  56. package/es2020/src/interfaces/dateTimeInput/dateTimeInput.interface.js.map +1 -1
  57. package/es2020/src/legacy/picker/components/dayPicker/dayPicker.component.js.map +1 -1
  58. package/es2020/src/legacy/picker/components/monthPicker/monthPicker.component.js.map +1 -1
  59. package/es2020/src/legacy/picker/components/picker/picker.component.js +4 -4
  60. package/es2020/src/legacy/picker/components/picker/picker.component.js.map +1 -1
  61. package/es2020/src/legacy/picker/components/pickerBase.component.js.map +1 -1
  62. package/es2020/src/legacy/picker/components/pickerImplBase.component.js.map +1 -1
  63. package/es2020/src/legacy/picker/components/rollerTimePicker/rollerTimePicker.component.js.map +1 -1
  64. package/es2020/src/legacy/picker/components/yearPicker/yearPicker.component.js.map +1 -1
  65. package/es2020/src/legacy/picker/misc/datetimePicker.interface.js.map +1 -1
  66. package/es2020/src/legacy/picker/misc/tokens.js.map +1 -1
  67. package/es2020/src/legacy/picker/modules/picker.module.js +9 -9
  68. package/es2020/src/legacy/picker/modules/picker.module.js.map +1 -1
  69. package/es2020/src/legacy/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js +2 -2
  70. package/es2020/src/legacy/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.js.map +1 -1
  71. package/es2020/src/legacy/selector/misc/datetimeSelector.interface.js.map +1 -1
  72. package/es2020/src/legacy/selector/modules/selector.module.js +4 -4
  73. package/es2020/src/legacy/selector/modules/selector.module.js.map +1 -1
  74. package/es2020/src/misc/validators.js +34 -1
  75. package/es2020/src/misc/validators.js.map +1 -1
  76. package/es2020/src/modules/dateTime/directives/dateTimeInput/dateTimeInput.directive.js +18 -12
  77. package/es2020/src/modules/dateTime/directives/dateTimeInput/dateTimeInput.directive.js.map +1 -1
  78. package/es2020/src/modules/dateTimePicker/components/dateTimePeriodPickerBase.js +48 -0
  79. package/es2020/src/modules/dateTimePicker/components/dateTimePeriodPickerBase.js.map +1 -0
  80. package/es2020/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.js +177 -0
  81. package/es2020/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.js.map +1 -0
  82. package/es2020/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.interface.js +2 -0
  83. package/es2020/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.interface.js.map +1 -0
  84. package/es2020/src/modules/dateTimePicker/components/dayPicker/dayPicker.component.js +17 -0
  85. package/es2020/src/modules/dateTimePicker/components/dayPicker/dayPicker.component.js.map +1 -0
  86. package/es2020/src/modules/dateTimePicker/components/dayPicker/dayPicker.interfaces.js +2 -0
  87. package/es2020/src/modules/dateTimePicker/components/dayPicker/dayPicker.interfaces.js.map +1 -0
  88. package/es2020/src/modules/dateTimePicker/components/index.js +5 -0
  89. package/es2020/src/modules/dateTimePicker/components/index.js.map +1 -0
  90. package/es2020/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.directive.js +183 -0
  91. package/es2020/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.directive.js.map +1 -0
  92. package/es2020/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.interface.js +2 -0
  93. package/es2020/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.interface.js.map +1 -0
  94. package/es2020/src/modules/dateTimePicker/directives/index.js +3 -0
  95. package/es2020/src/modules/dateTimePicker/directives/index.js.map +1 -0
  96. package/es2020/src/modules/dateTimePicker/index.js +6 -0
  97. package/es2020/src/modules/dateTimePicker/index.js.map +1 -0
  98. package/es2020/src/modules/dateTimePicker/interfaces/dateTimePicker/dateTimePicker.interface.js +2 -0
  99. package/es2020/src/modules/dateTimePicker/interfaces/dateTimePicker/dateTimePicker.interface.js.map +1 -0
  100. package/es2020/src/modules/dateTimePicker/interfaces/index.js +2 -0
  101. package/es2020/src/modules/dateTimePicker/interfaces/index.js.map +1 -0
  102. package/es2020/src/modules/dateTimePicker/misc/tokens.js +10 -0
  103. package/es2020/src/modules/dateTimePicker/misc/tokens.js.map +1 -0
  104. package/es2020/src/modules/dateTimePicker/modules/dateTimePicker.module.js +28 -0
  105. package/es2020/src/modules/dateTimePicker/modules/dateTimePicker.module.js.map +1 -0
  106. package/es2020/src/modules/dateTimePicker/modules/index.js +2 -0
  107. package/es2020/src/modules/dateTimePicker/modules/index.js.map +1 -0
  108. package/es2020/src/modules/index.js +1 -0
  109. package/es2020/src/modules/index.js.map +1 -1
  110. package/package.json +7 -1
  111. package/src/interfaces/dateTimeInput/dateTimeInput.interface.d.ts +8 -4
  112. package/src/interfaces/dateTimeInput/dateTimeInput.interface.d.ts.map +1 -1
  113. package/src/legacy/picker/components/dayPicker/dayPicker.component.d.ts +2 -2
  114. package/src/legacy/picker/components/dayPicker/dayPicker.component.d.ts.map +1 -1
  115. package/src/legacy/picker/components/monthPicker/monthPicker.component.d.ts +2 -2
  116. package/src/legacy/picker/components/monthPicker/monthPicker.component.d.ts.map +1 -1
  117. package/src/legacy/picker/components/picker/picker.component.d.ts +11 -11
  118. package/src/legacy/picker/components/picker/picker.component.d.ts.map +1 -1
  119. package/src/legacy/picker/components/pickerBase.component.d.ts +2 -2
  120. package/src/legacy/picker/components/pickerBase.component.d.ts.map +1 -1
  121. package/src/legacy/picker/components/pickerImplBase.component.d.ts +2 -2
  122. package/src/legacy/picker/components/pickerImplBase.component.d.ts.map +1 -1
  123. package/src/legacy/picker/components/rollerTimePicker/rollerTimePicker.component.d.ts +2 -2
  124. package/src/legacy/picker/components/rollerTimePicker/rollerTimePicker.component.d.ts.map +1 -1
  125. package/src/legacy/picker/components/yearPicker/yearPicker.component.d.ts +2 -2
  126. package/src/legacy/picker/components/yearPicker/yearPicker.component.d.ts.map +1 -1
  127. package/src/legacy/picker/misc/datetimePicker.interface.d.ts +2 -2
  128. package/src/legacy/picker/misc/datetimePicker.interface.d.ts.map +1 -1
  129. package/src/legacy/picker/misc/tokens.d.ts +2 -2
  130. package/src/legacy/picker/misc/tokens.d.ts.map +1 -1
  131. package/src/legacy/picker/modules/picker.module.d.ts +4 -4
  132. package/src/legacy/picker/modules/picker.module.d.ts.map +1 -1
  133. package/src/legacy/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.d.ts +2 -2
  134. package/src/legacy/selector/directives/dateTimePickerRenderer/dateTimePickerRenderer.directive.d.ts.map +1 -1
  135. package/src/legacy/selector/misc/datetimeSelector.interface.d.ts +2 -2
  136. package/src/legacy/selector/misc/datetimeSelector.interface.d.ts.map +1 -1
  137. package/src/legacy/selector/modules/selector.module.d.ts +1 -1
  138. package/src/misc/validators.d.ts +49 -2
  139. package/src/misc/validators.d.ts.map +1 -1
  140. package/src/modules/dateTime/directives/dateTimeInput/dateTimeInput.directive.d.ts +6 -2
  141. package/src/modules/dateTime/directives/dateTimeInput/dateTimeInput.directive.d.ts.map +1 -1
  142. package/src/modules/dateTimePicker/components/dateTimePeriodPickerBase.d.ts +53 -0
  143. package/src/modules/dateTimePicker/components/dateTimePeriodPickerBase.d.ts.map +1 -0
  144. package/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.d.ts +79 -0
  145. package/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.d.ts.map +1 -0
  146. package/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.html +1 -0
  147. package/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.interface.d.ts +17 -0
  148. package/src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.interface.d.ts.map +1 -0
  149. package/src/modules/dateTimePicker/components/dayPicker/dayPicker.component.css +27 -0
  150. package/src/modules/dateTimePicker/components/dayPicker/dayPicker.component.d.ts +11 -0
  151. package/src/modules/dateTimePicker/components/dayPicker/dayPicker.component.d.ts.map +1 -0
  152. package/src/modules/dateTimePicker/components/dayPicker/dayPicker.component.html +23 -0
  153. package/src/modules/dateTimePicker/components/dayPicker/dayPicker.interfaces.d.ts +11 -0
  154. package/src/modules/dateTimePicker/components/dayPicker/dayPicker.interfaces.d.ts.map +1 -0
  155. package/src/modules/dateTimePicker/components/index.d.ts +5 -0
  156. package/src/modules/dateTimePicker/components/index.d.ts.map +1 -0
  157. package/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.directive.d.ts +79 -0
  158. package/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.directive.d.ts.map +1 -0
  159. package/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.interface.d.ts +31 -0
  160. package/src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.interface.d.ts.map +1 -0
  161. package/src/modules/dateTimePicker/directives/index.d.ts +3 -0
  162. package/src/modules/dateTimePicker/directives/index.d.ts.map +1 -0
  163. package/src/modules/dateTimePicker/index.d.ts +6 -0
  164. package/src/modules/dateTimePicker/index.d.ts.map +1 -0
  165. package/src/modules/dateTimePicker/interfaces/dateTimePicker/dateTimePicker.interface.d.ts +40 -0
  166. package/src/modules/dateTimePicker/interfaces/dateTimePicker/dateTimePicker.interface.d.ts.map +1 -0
  167. package/src/modules/dateTimePicker/interfaces/index.d.ts +2 -0
  168. package/src/modules/dateTimePicker/interfaces/index.d.ts.map +1 -0
  169. package/src/modules/dateTimePicker/misc/tokens.d.ts +12 -0
  170. package/src/modules/dateTimePicker/misc/tokens.d.ts.map +1 -0
  171. package/src/modules/dateTimePicker/modules/dateTimePicker.module.d.ts +12 -0
  172. package/src/modules/dateTimePicker/modules/dateTimePicker.module.d.ts.map +1 -0
  173. package/src/modules/dateTimePicker/modules/index.d.ts +2 -0
  174. package/src/modules/dateTimePicker/modules/index.d.ts.map +1 -0
  175. package/src/modules/index.d.ts +1 -0
  176. package/src/modules/index.d.ts.map +1 -1
  177. package/styles/components/_date-time-picker.scss +8 -0
  178. package/styles/core/_functions.scss +11 -0
  179. package/styles/core/_misc.scss +199 -0
  180. package/styles/core/_mixins.scss +23 -0
  181. package/styles/core/_theme.scss +3 -0
  182. package/styles/index.scss +2 -0
  183. package/styles/themes/dark.scss +19 -0
  184. package/styles/themes/light.scss +19 -0
  185. package/version.bak +1 -1
@@ -0,0 +1,180 @@
1
+ import { Component, ChangeDetectionStrategy, ViewChild, ViewContainerRef, EventEmitter, Output, Input, Inject, Optional } from '@angular/core';
2
+ import { POSITION } from '@anglr/common';
3
+ import { extend, isBlank, nameof } from '@jscrpt/common';
4
+ import { Subscription } from 'rxjs';
5
+ import { DATE_TIME_PICKER_OPTIONS } from '../../misc/tokens';
6
+ import { DayPickerSAComponent } from '../dayPicker/dayPicker.component';
7
+ import { DATE_API } from '../../../../misc/tokens';
8
+ import { formatDateTime, parseDateTime } from '../../../../misc/utils';
9
+ import { DateTimeValueFormat } from '../../../../misc/enums';
10
+ import * as i0 from "@angular/core";
11
+ /**
12
+ * Text to be displayed when configuration, options are corrupted
13
+ */
14
+ const CORRUPTED_CONFIG_TEXT = 'DateTime: Corrupted configuration for DateTimePicker!';
15
+ /**
16
+ * Default options for date time picker
17
+ */
18
+ const defaultOptions = {
19
+ defaultPeriod: 'day',
20
+ periodsDefinition: {
21
+ 'day': DayPickerSAComponent,
22
+ },
23
+ };
24
+ /**
25
+ * Component used for displaying date time picker
26
+ */
27
+ export class DateTimePickerComponent {
28
+ //######################### constructor #########################
29
+ constructor(position, dateApi, options) {
30
+ this.position = position;
31
+ this.dateApi = dateApi;
32
+ //######################### public properties - outputs #########################
33
+ /**
34
+ * @inheritdoc
35
+ */
36
+ this.valueChange = new EventEmitter();
37
+ this.ɵOptions = extend(true, {}, defaultOptions, options);
38
+ if (options === null || options === void 0 ? void 0 : options.periodsDefinition) {
39
+ this.ɵOptions.periodsDefinition = options.periodsDefinition;
40
+ }
41
+ this.displayedPeriodName = this.ɵOptions.defaultPeriod;
42
+ this.displayedPeriodType = this.ɵOptions.periodsDefinition[this.displayedPeriodName];
43
+ if (!this.displayedPeriodType) {
44
+ throw new Error(CORRUPTED_CONFIG_TEXT);
45
+ }
46
+ }
47
+ /**
48
+ * Options for date time picker
49
+ */
50
+ get options() {
51
+ return this.ɵOptions;
52
+ }
53
+ set options(value) {
54
+ this.ɵOptions = extend(true, {}, defaultOptions, value);
55
+ if (value === null || value === void 0 ? void 0 : value.periodsDefinition) {
56
+ this.ɵOptions.periodsDefinition = value.periodsDefinition;
57
+ }
58
+ }
59
+ //######################### public methods - implementation of OnChanges #########################
60
+ /**
61
+ * Called when input value changes
62
+ */
63
+ ngOnChanges(changes) {
64
+ if (nameof('value') in changes) {
65
+ //empty value show now
66
+ if (isBlank(this.value)) {
67
+ const now = this.dateApi.now();
68
+ this.showPicker(this.displayedPeriodType, now.value);
69
+ return;
70
+ }
71
+ }
72
+ }
73
+ //######################### public methods - implementation of OnDestroy #########################
74
+ /**
75
+ * Called when component is destroyed
76
+ */
77
+ ngOnDestroy() {
78
+ var _a, _b;
79
+ (_a = this.component) === null || _a === void 0 ? void 0 : _a.destroy();
80
+ this.component = null;
81
+ (_b = this.periodChangesSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
82
+ this.periodChangesSubscription = null;
83
+ }
84
+ //######################### protected methods #########################
85
+ /**
86
+ * Shows picker
87
+ * @param type - Type of period that should be displayed
88
+ * @param displayDate - Display date to be shown
89
+ */
90
+ showPicker(type, displayDate) {
91
+ var _a, _b;
92
+ if (!this.pickerContainer) {
93
+ return;
94
+ }
95
+ //create new component and destroy previous one
96
+ if (!this.component || (this.component && type != this.displayedPeriodType)) {
97
+ (_a = this.periodChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
98
+ this.periodChangesSubscription = new Subscription();
99
+ (_b = this.component) === null || _b === void 0 ? void 0 : _b.destroy();
100
+ this.component = this.pickerContainer.createComponent(type);
101
+ this.periodChangesSubscription.add(this.component.instance.valueChange.subscribe(() => {
102
+ var _a;
103
+ const component = (_a = this.component) === null || _a === void 0 ? void 0 : _a.instance;
104
+ if (!component) {
105
+ return;
106
+ }
107
+ this.value = formatDateTime(component.value, DateTimeValueFormat.DateInstance, null);
108
+ this.valueChange.emit();
109
+ }));
110
+ this.periodChangesSubscription.add(this.component.instance.goUp.subscribe(date => this.showPicker(this.getUpperType(), date)));
111
+ this.periodChangesSubscription.add(this.component.instance.goDown.subscribe(date => this.showPicker(this.getLowerType(), date)));
112
+ }
113
+ const component = this.component.instance;
114
+ component.canGoDown = false,
115
+ component.canGoUp = false;
116
+ component.display = displayDate;
117
+ // component.options
118
+ //TODO: maybe add support for format!
119
+ component.value = parseDateTime(this.value, this.dateApi, null, null);
120
+ }
121
+ /**
122
+ * Gets type that is above current period picker
123
+ */
124
+ getUpperType() {
125
+ const periods = Object.keys(this.ɵOptions.periodsDefinition);
126
+ const index = periods.indexOf(this.displayedPeriodName);
127
+ if (index < 0) {
128
+ throw new Error(CORRUPTED_CONFIG_TEXT);
129
+ }
130
+ if (index >= periods.length) {
131
+ return this.displayedPeriodType;
132
+ }
133
+ this.displayedPeriodName = periods[index + 1];
134
+ this.displayedPeriodType = this.ɵOptions.periodsDefinition[this.displayedPeriodName];
135
+ return this.displayedPeriodType;
136
+ }
137
+ /**
138
+ * Gets type that is below current period picker
139
+ */
140
+ getLowerType() {
141
+ const periods = Object.keys(this.ɵOptions.periodsDefinition);
142
+ const index = periods.indexOf(this.displayedPeriodName);
143
+ if (index < 0) {
144
+ throw new Error(CORRUPTED_CONFIG_TEXT);
145
+ }
146
+ if (index <= 0) {
147
+ return this.displayedPeriodType;
148
+ }
149
+ this.displayedPeriodName = periods[index - 1];
150
+ this.displayedPeriodType = this.ɵOptions.periodsDefinition[this.displayedPeriodName];
151
+ return this.displayedPeriodType;
152
+ }
153
+ }
154
+ DateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: POSITION }, { token: DATE_API }, { token: DATE_TIME_PICKER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
155
+ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: DateTimePickerComponent, selector: "date-time-picker", inputs: { value: "value", options: "options" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "pickerContainer", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container #container></ng-container>", changeDetection: i0.ChangeDetectionStrategy.OnPush });
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DateTimePickerComponent, decorators: [{
157
+ type: Component,
158
+ args: [{ selector: 'date-time-picker', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container #container></ng-container>" }]
159
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
160
+ type: Inject,
161
+ args: [POSITION]
162
+ }] }, { type: undefined, decorators: [{
163
+ type: Inject,
164
+ args: [DATE_API]
165
+ }] }, { type: undefined, decorators: [{
166
+ type: Inject,
167
+ args: [DATE_TIME_PICKER_OPTIONS]
168
+ }, {
169
+ type: Optional
170
+ }] }]; }, propDecorators: { pickerContainer: [{
171
+ type: ViewChild,
172
+ args: ['container', { read: ViewContainerRef, static: true }]
173
+ }], value: [{
174
+ type: Input
175
+ }], options: [{
176
+ type: Input
177
+ }], valueChange: [{
178
+ type: Output
179
+ }] } });
180
+ //# sourceMappingURL=dateTimePicker.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateTimePicker.component.js","sourceRoot":"","sources":["../../../../../../src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.ts","../../../../../../src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.component.html"],"names":[],"mappings":"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","sourcesContent":["import {Component, ChangeDetectionStrategy, ViewChild, ViewContainerRef, Type, EventEmitter, Output, Input, OnChanges, SimpleChanges, Inject, Optional, OnDestroy, ComponentRef} from '@angular/core';\nimport {Position, POSITION} from '@anglr/common';\nimport {extend, isBlank, nameof} from '@jscrpt/common';\nimport {Subscription} from 'rxjs';\n\nimport {DateTimeInputValue} from '../../../../interfaces';\nimport {DateTimeInputOutputValue} from '../../../../misc/types';\nimport {DATE_TIME_PICKER_OPTIONS} from '../../misc/tokens';\nimport {DayPickerSAComponent} from '../dayPicker/dayPicker.component';\nimport {DateTimePickerOptions} from './dateTimePicker.interface';\nimport {DateTimePicker} from '../../interfaces';\nimport {DateApi} from '../../../../services';\nimport {DATE_API} from '../../../../misc/tokens';\nimport {formatDateTime, parseDateTime} from '../../../../misc/utils';\nimport {DateTimeValueFormat} from '../../../../misc/enums';\n\n/**\n * Text to be displayed when configuration, options are corrupted\n */\nconst CORRUPTED_CONFIG_TEXT = 'DateTime: Corrupted configuration for DateTimePicker!';\n\n/**\n * Default options for date time picker\n */\nconst defaultOptions: DateTimePickerOptions = \n{\n defaultPeriod: 'day',\n periodsDefinition:\n {\n 'day': DayPickerSAComponent,\n },\n};\n\n/**\n * Component used for displaying date time picker\n */\n@Component(\n{\n selector: 'date-time-picker',\n templateUrl: 'dateTimePicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DateTimePickerComponent<TDate = unknown> implements DateTimeInputValue<TDate>, OnChanges, OnDestroy\n{\n //######################### protected properties #########################\n \n /**\n * Subscription for changes in date time period picker\n */\n protected periodChangesSubscription: Subscription|undefined|null;\n\n /**\n * Options for date time picker\n */\n protected ɵOptions: DateTimePickerOptions<TDate>;\n\n /**\n * Currently displayed period type\n */\n protected displayedPeriodType: Type<DateTimePicker<TDate>>;\n\n /**\n * Name of period which is currently displayed\n */\n protected displayedPeriodName: string;\n\n /**\n * Instance of created date time period picker\n */\n protected component: ComponentRef<DateTimePicker<TDate>>|undefined|null;\n \n //######################### protected properties - children #########################\n\n /**\n * Container used for displaying pickers for specific date time part\n */\n @ViewChild('container', {read: ViewContainerRef, static: true})\n protected pickerContainer: ViewContainerRef|undefined|null;\n\n //######################### public properties - inputs #########################\n\n /**\n * @inheritdoc\n */\n @Input()\n public value: DateTimeInputOutputValue<TDate>|undefined|null;\n\n /**\n * Options for date time picker\n */\n @Input()\n public get options(): Partial<DateTimePickerOptions<TDate>>\n {\n return this.ɵOptions;\n }\n public set options(value: Partial<DateTimePickerOptions<TDate>>)\n {\n this.ɵOptions = extend(true, {}, defaultOptions, value);\n\n if(value?.periodsDefinition)\n {\n this.ɵOptions.periodsDefinition = value.periodsDefinition;\n }\n }\n\n //######################### public properties - outputs #########################\n\n /**\n * @inheritdoc\n */\n @Output()\n public valueChange: EventEmitter<void> = new EventEmitter<void>();\n\n //######################### constructor #########################\n constructor(@Inject(POSITION) protected position: Position,\n @Inject(DATE_API) protected dateApi: DateApi<TDate>,\n @Inject(DATE_TIME_PICKER_OPTIONS) @Optional() options?: DateTimePickerOptions<TDate>,)\n {\n this.ɵOptions = extend(true, {}, defaultOptions, options);\n \n if(options?.periodsDefinition)\n {\n this.ɵOptions.periodsDefinition = options.periodsDefinition;\n }\n\n this.displayedPeriodName = this.ɵOptions.defaultPeriod;\n this.displayedPeriodType = this.ɵOptions.periodsDefinition[this.displayedPeriodName];\n\n if(!this.displayedPeriodType)\n {\n throw new Error(CORRUPTED_CONFIG_TEXT);\n }\n }\n\n //######################### public methods - implementation of OnChanges #########################\n \n /**\n * Called when input value changes\n */\n public ngOnChanges(changes: SimpleChanges): void\n {\n if(nameof<DateTimePickerComponent>('value') in changes)\n {\n //empty value show now\n if(isBlank(this.value))\n {\n const now = this.dateApi.now();\n\n this.showPicker(this.displayedPeriodType, now.value);\n\n return;\n }\n\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this.component?.destroy();\n this.component = null;\n\n this.periodChangesSubscription?.unsubscribe();\n this.periodChangesSubscription = null;\n }\n\n //######################### protected methods #########################\n\n /**\n * Shows picker\n * @param type - Type of period that should be displayed\n * @param displayDate - Display date to be shown\n */\n protected showPicker(type: Type<DateTimePicker<TDate>>, displayDate: TDate): void\n {\n if(!this.pickerContainer)\n {\n return;\n }\n\n //create new component and destroy previous one\n if(!this.component || (this.component && type != this.displayedPeriodType))\n {\n this.periodChangesSubscription?.unsubscribe();\n this.periodChangesSubscription = new Subscription();\n this.component?.destroy();\n this.component = this.pickerContainer.createComponent(type);\n\n this.periodChangesSubscription.add(this.component.instance.valueChange.subscribe(() =>\n {\n const component = this.component?.instance;\n\n if(!component)\n {\n return;\n }\n\n this.value = formatDateTime(component.value, DateTimeValueFormat.DateInstance, null);\n this.valueChange.emit();\n }));\n\n this.periodChangesSubscription.add(this.component.instance.goUp.subscribe(date => this.showPicker(this.getUpperType(), date)));\n this.periodChangesSubscription.add(this.component.instance.goDown.subscribe(date => this.showPicker(this.getLowerType(), date)));\n }\n\n const component = this.component.instance;\n\n component.canGoDown = false,\n component.canGoUp = false;\n component.display = displayDate;\n // component.options\n //TODO: maybe add support for format!\n component.value = parseDateTime(this.value, this.dateApi, null, null);\n }\n\n /**\n * Gets type that is above current period picker\n */\n protected getUpperType(): Type<DateTimePicker<TDate>>\n {\n const periods = Object.keys(this.ɵOptions.periodsDefinition);\n const index = periods.indexOf(this.displayedPeriodName);\n\n if(index < 0)\n {\n throw new Error(CORRUPTED_CONFIG_TEXT);\n }\n\n if(index >= periods.length)\n {\n return this.displayedPeriodType;\n }\n\n this.displayedPeriodName = periods[index + 1];\n this.displayedPeriodType = this.ɵOptions.periodsDefinition[this.displayedPeriodName];\n\n return this.displayedPeriodType;\n }\n\n /**\n * Gets type that is below current period picker\n */\n protected getLowerType(): Type<DateTimePicker<TDate>>\n {\n const periods = Object.keys(this.ɵOptions.periodsDefinition);\n const index = periods.indexOf(this.displayedPeriodName);\n\n if(index < 0)\n {\n throw new Error(CORRUPTED_CONFIG_TEXT);\n }\n\n if(index <= 0)\n {\n return this.displayedPeriodType;\n }\n\n this.displayedPeriodName = periods[index - 1];\n this.displayedPeriodType = this.ɵOptions.periodsDefinition[this.displayedPeriodName];\n\n return this.displayedPeriodType;\n }\n}","<ng-container #container></ng-container>"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dateTimePicker.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateTimePicker.interface.js","sourceRoot":"","sources":["../../../../../../src/modules/dateTimePicker/components/dateTimePicker/dateTimePicker.interface.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from '@angular/core';\nimport {Dictionary} from '@jscrpt/common';\n\nimport {DateTimePicker} from '../../interfaces';\n\n/**\n * Defintion of date time picker component options\n */\nexport interface DateTimePickerOptions<TDate = unknown>\n{\n /**\n * Definition of types for each period type for picker\n */\n periodsDefinition: Dictionary<Type<DateTimePicker<TDate>>>;\n\n /**\n * Name of default period for picker that is displayed after opening\n */\n defaultPeriod: string;\n}"]}
@@ -0,0 +1,17 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { DateTimePeriodPickerBase } from '../dateTimePeriodPickerBase';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Component used for displaying day picker
6
+ */
7
+ export class DayPickerSAComponent extends DateTimePeriodPickerBase {
8
+ }
9
+ DayPickerSAComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DayPickerSAComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
10
+ DayPickerSAComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: DayPickerSAComponent, isStandalone: true, selector: "day-picker", host: { properties: { "class.date-time-period": "true" } }, usesInheritance: true, ngImport: i0, template: "<!-- <div [ngClass]=\"cssClasses.periodSelection | asRequired\">\r\n <div [ngClass]=\"cssClasses.previousPeriod | asRequired\" (mousedown)=\"previousMonth($event)\"></div>\r\n <div [ngClass]=\"cssClasses.periodValue | asRequired | mergeCssClasses: [{'clickable': canGoUp}]\" (mousedown)=\"goUp($event)\">{{displayDate?.format('MMMM yyyy')}}</div>\r\n <div [ngClass]=\"cssClasses.nextPeriod | asRequired\" (mousedown)=\"nextMonth($event)\"></div>\r\n</div>\r\n\r\n<div [ngClass]=\"cssClasses.periodData | asRequired\">\r\n <div [ngClass]=\"cssClasses.weekdayName | asRequired\" *ngFor=\"let weekday of weekdays\">{{weekday}}</div>\r\n <div *ngFor=\"let day of periodData\"\r\n [ngClass]=\"cssClasses.periodDatum | asRequired\"\r\n [class.other-month]=\"day.otherMonth\"\r\n [class.today]=\"day.today\"\r\n [class.weekend]=\"day.weekend\"\r\n [class.active]=\"day.active\"\r\n [class.disabled]=\"day.disabled\"\r\n (mousedown)=\"select($event, day)\">{{day.day}}</div>\r\n</div>\r\n\r\n<div class=\"flex-row\" style=\"justify-content: center; border-top: 1px solid #FFF;\" *ngIf=\"canGoDown\">\r\n <div [class.clickable]=\"canGoDown\" (mousedown)=\"goDown($event)\">{{timeValue?.from | dateFormat: 'time'}}</div>\r\n</div> -->\r\n\r\nDAY", changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DayPickerSAComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'day-picker', host: {
14
+ '[class.date-time-period]': 'true',
15
+ }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <div [ngClass]=\"cssClasses.periodSelection | asRequired\">\r\n <div [ngClass]=\"cssClasses.previousPeriod | asRequired\" (mousedown)=\"previousMonth($event)\"></div>\r\n <div [ngClass]=\"cssClasses.periodValue | asRequired | mergeCssClasses: [{'clickable': canGoUp}]\" (mousedown)=\"goUp($event)\">{{displayDate?.format('MMMM yyyy')}}</div>\r\n <div [ngClass]=\"cssClasses.nextPeriod | asRequired\" (mousedown)=\"nextMonth($event)\"></div>\r\n</div>\r\n\r\n<div [ngClass]=\"cssClasses.periodData | asRequired\">\r\n <div [ngClass]=\"cssClasses.weekdayName | asRequired\" *ngFor=\"let weekday of weekdays\">{{weekday}}</div>\r\n <div *ngFor=\"let day of periodData\"\r\n [ngClass]=\"cssClasses.periodDatum | asRequired\"\r\n [class.other-month]=\"day.otherMonth\"\r\n [class.today]=\"day.today\"\r\n [class.weekend]=\"day.weekend\"\r\n [class.active]=\"day.active\"\r\n [class.disabled]=\"day.disabled\"\r\n (mousedown)=\"select($event, day)\">{{day.day}}</div>\r\n</div>\r\n\r\n<div class=\"flex-row\" style=\"justify-content: center; border-top: 1px solid #FFF;\" *ngIf=\"canGoDown\">\r\n <div [class.clickable]=\"canGoDown\" (mousedown)=\"goDown($event)\">{{timeValue?.from | dateFormat: 'time'}}</div>\r\n</div> -->\r\n\r\nDAY" }]
16
+ }] });
17
+ //# sourceMappingURL=dayPicker.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayPicker.component.js","sourceRoot":"","sources":["../../../../../../src/modules/dateTimePicker/components/dayPicker/dayPicker.component.ts","../../../../../../src/modules/dateTimePicker/components/dayPicker/dayPicker.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAGjE,OAAO,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;;AAErE;;GAEG;AAYH,MAAM,OAAO,oBAAsC,SAAQ,wBAA+B;;iHAA7E,oBAAoB;qGAApB,oBAAoB,yJCnBjC,+xCAsBG;2FDHU,oBAAoB;kBAXhC,SAAS;+BAEI,YAAY,QAGtB;wBACI,0BAA0B,EAAE,MAAM;qBACrC,cACW,IAAI,mBACC,uBAAuB,CAAC,MAAM","sourcesContent":["import {Component, ChangeDetectionStrategy} from '@angular/core';\n\nimport {DateTimePicker} from '../../interfaces';\nimport {DateTimePeriodPickerBase} from '../dateTimePeriodPickerBase';\n\n/**\n * Component used for displaying day picker\n */\n@Component(\n{\n selector: 'day-picker',\n templateUrl: 'dayPicker.component.html',\n host:\n {\n '[class.date-time-period]': 'true',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DayPickerSAComponent<TDate = unknown> extends DateTimePeriodPickerBase<TDate> implements DateTimePicker<TDate>\n{\n}","<!-- <div [ngClass]=\"cssClasses.periodSelection | asRequired\">\r\n <div [ngClass]=\"cssClasses.previousPeriod | asRequired\" (mousedown)=\"previousMonth($event)\"></div>\r\n <div [ngClass]=\"cssClasses.periodValue | asRequired | mergeCssClasses: [{'clickable': canGoUp}]\" (mousedown)=\"goUp($event)\">{{displayDate?.format('MMMM yyyy')}}</div>\r\n <div [ngClass]=\"cssClasses.nextPeriod | asRequired\" (mousedown)=\"nextMonth($event)\"></div>\r\n</div>\r\n\r\n<div [ngClass]=\"cssClasses.periodData | asRequired\">\r\n <div [ngClass]=\"cssClasses.weekdayName | asRequired\" *ngFor=\"let weekday of weekdays\">{{weekday}}</div>\r\n <div *ngFor=\"let day of periodData\"\r\n [ngClass]=\"cssClasses.periodDatum | asRequired\"\r\n [class.other-month]=\"day.otherMonth\"\r\n [class.today]=\"day.today\"\r\n [class.weekend]=\"day.weekend\"\r\n [class.active]=\"day.active\"\r\n [class.disabled]=\"day.disabled\"\r\n (mousedown)=\"select($event, day)\">{{day.day}}</div>\r\n</div>\r\n\r\n<div class=\"flex-row\" style=\"justify-content: center; border-top: 1px solid #FFF;\" *ngIf=\"canGoDown\">\r\n <div [class.clickable]=\"canGoDown\" (mousedown)=\"goDown($event)\">{{timeValue?.from | dateFormat: 'time'}}</div>\r\n</div> -->\r\n\r\nDAY"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dayPicker.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayPicker.interfaces.js","sourceRoot":"","sources":["../../../../../../src/modules/dateTimePicker/components/dayPicker/dayPicker.interfaces.ts"],"names":[],"mappings":"","sourcesContent":["import {CommonPickerCssClasses} from '../../../../legacy/picker/interfaces';\n\n/**\n * Specific css classes for day picker\n */\nexport interface DayPickerCssClasses extends CommonPickerCssClasses\n{\n /**\n * Element displaying weekday name\n */\n weekdayName?: string;\n}"]}
@@ -0,0 +1,5 @@
1
+ export * from './dateTimePeriodPickerBase';
2
+ export * from './dateTimePicker/dateTimePicker.component';
3
+ export * from './dateTimePicker/dateTimePicker.interface';
4
+ export * from './dayPicker/dayPicker.component';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/dateTimePicker/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC","sourcesContent":["export * from './dateTimePeriodPickerBase';\nexport * from './dateTimePicker/dateTimePicker.component';\nexport * from './dateTimePicker/dateTimePicker.interface';\nexport * from './dayPicker/dayPicker.component';\n"]}
@@ -0,0 +1,189 @@
1
+ import { __awaiter, __decorate, __metadata } from "tslib";
2
+ import { Directive, ElementRef, Inject, Input, Optional, ViewContainerRef } from '@angular/core';
3
+ import { DOCUMENT } from '@angular/common';
4
+ import { POSITION, applyPositionResult, PositionPlacement } from '@anglr/common';
5
+ import { extend, nameof, isDescendant, BindThis } from '@jscrpt/common';
6
+ import { lastValueFrom, Subscription } from 'rxjs';
7
+ import { DATE_TIME_INPUT } from '../../../../misc/tokens';
8
+ import { DateTimePickerComponent } from '../../components';
9
+ import { DATE_TIME_PICKER_DIRECTIVE_OPTIONS } from '../../misc/tokens';
10
+ import * as i0 from "@angular/core";
11
+ /**
12
+ * Default options for date time picker directive
13
+ */
14
+ const defaultOptions = {
15
+ absolute: true,
16
+ alwaysVisible: false,
17
+ closeOnValueSelect: true,
18
+ disabled: false,
19
+ positionOptions: PositionPlacement.BottomStart,
20
+ showOnFocus: true,
21
+ };
22
+ /**
23
+ * Directive that is used for displaying and attaching date time picker
24
+ */
25
+ export class DateTimePickerDirective {
26
+ //######################### constructor #########################
27
+ constructor(viewContainer, element, input, document, position, options) {
28
+ this.viewContainer = viewContainer;
29
+ this.element = element;
30
+ this.input = input;
31
+ this.document = document;
32
+ this.position = position;
33
+ //######################### protected properties #########################
34
+ /**
35
+ * Indication whether is value changes disabled
36
+ */
37
+ this.valueChangeDisabled = false;
38
+ /**
39
+ * Subscriptions created during initialization
40
+ */
41
+ this.initSubscriptions = new Subscription();
42
+ this.ɵWithPickerOptions = extend(true, {}, defaultOptions, options);
43
+ }
44
+ //######################### public properties - inputs #########################
45
+ /**
46
+ * Gets or sets options for date time picker directive
47
+ */
48
+ get withPickerOptions() {
49
+ return this.ɵWithPickerOptions;
50
+ }
51
+ set withPickerOptions(value) {
52
+ this.ɵWithPickerOptions = extend(true, {}, this.ɵWithPickerOptions, value);
53
+ }
54
+ //######################### public methods - implementation of OnInit #########################
55
+ /**
56
+ * Initialize component
57
+ */
58
+ ngOnInit() {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ if (this.withPickerOptions.alwaysVisible) {
61
+ this.showPicker();
62
+ }
63
+ this.initSubscriptions.add(this.input.valueChange.subscribe(() => this.setPickerValue()));
64
+ this.initSubscriptions.add(this.input.focus.subscribe(() => {
65
+ if (this.withPickerOptions.showOnFocus) {
66
+ this.showPicker();
67
+ }
68
+ }));
69
+ });
70
+ }
71
+ //######################### public methods - implementation of OnDestroy #########################
72
+ /**
73
+ * Called when component is destroyed
74
+ */
75
+ ngOnDestroy() {
76
+ this.hidePicker();
77
+ this.initSubscriptions.unsubscribe();
78
+ }
79
+ //######################### public methods #########################
80
+ /**
81
+ * Hides date time picker
82
+ */
83
+ showPicker() {
84
+ var _a;
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ if (this.withPickerOptions.disabled || this.componentRef) {
87
+ return;
88
+ }
89
+ this.componentRef = this.viewContainer.createComponent((DateTimePickerComponent));
90
+ this.componentElement = ((_a = this.componentRef) === null || _a === void 0 ? void 0 : _a.hostView).rootNodes[0];
91
+ this.component = this.componentRef.instance;
92
+ if (this.withPickerOptions.absolute) {
93
+ this.document.body.append(this.componentElement);
94
+ }
95
+ this.valueChangeSubscription = this.component.valueChange.subscribe(() => {
96
+ if (this.component) {
97
+ this.valueChangeDisabled = true;
98
+ this.input.value = this.component.value;
99
+ this.input.valueChange.emit();
100
+ this.valueChangeDisabled = false;
101
+ }
102
+ });
103
+ this.document.addEventListener('click', this.handleClickOutside);
104
+ const result = yield lastValueFrom(this.position.placeElement(this.componentElement, this.element.nativeElement, {
105
+ placement: this.withPickerOptions.positionOptions,
106
+ }));
107
+ applyPositionResult(result);
108
+ this.setPickerValue();
109
+ });
110
+ }
111
+ /**
112
+ * Shows date time picker
113
+ */
114
+ hidePicker() {
115
+ var _a, _b, _c;
116
+ if (this.withPickerOptions.alwaysVisible) {
117
+ return;
118
+ }
119
+ (_a = this.valueChangeSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
120
+ this.valueChangeSubscription = null;
121
+ this.component = null;
122
+ (_b = this.componentRef) === null || _b === void 0 ? void 0 : _b.destroy();
123
+ this.componentRef = null;
124
+ (_c = this.componentElement) === null || _c === void 0 ? void 0 : _c.remove();
125
+ this.componentElement = null;
126
+ this.document.removeEventListener('click', this.handleClickOutside);
127
+ }
128
+ //######################### protected methods #########################
129
+ /**
130
+ * Sets all picker value
131
+ */
132
+ setPickerValue() {
133
+ if (this.valueChangeDisabled) {
134
+ return;
135
+ }
136
+ if (this.componentRef) {
137
+ this.componentRef.setInput(nameof('value'), this.input.value);
138
+ // this.componentRef.changeDetectorRef.markForCheck();
139
+ this.componentRef.changeDetectorRef.detectChanges();
140
+ }
141
+ }
142
+ /**
143
+ * Handles clicking outside of picker
144
+ * @param event - Event that occured
145
+ */
146
+ handleClickOutside(event) {
147
+ if (!this.componentElement) {
148
+ return;
149
+ }
150
+ if (this.componentElement != event.target &&
151
+ !isDescendant(this.componentElement, event.target) &&
152
+ (!this.input.element || (this.input.element != event.target &&
153
+ !isDescendant(this.input.element, event.target)))) {
154
+ this.hidePicker();
155
+ }
156
+ }
157
+ }
158
+ DateTimePickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DateTimePickerDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: DATE_TIME_INPUT }, { token: DOCUMENT }, { token: POSITION }, { token: DATE_TIME_PICKER_DIRECTIVE_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
159
+ DateTimePickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.6", type: DateTimePickerDirective, selector: "[dateTime][withPicker]", inputs: { withPickerOptions: "withPickerOptions" }, exportAs: ["dateTimePicker"], ngImport: i0 });
160
+ __decorate([
161
+ BindThis,
162
+ __metadata("design:type", Function),
163
+ __metadata("design:paramtypes", [MouseEvent]),
164
+ __metadata("design:returntype", void 0)
165
+ ], DateTimePickerDirective.prototype, "handleClickOutside", null);
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DateTimePickerDirective, decorators: [{
167
+ type: Directive,
168
+ args: [{
169
+ selector: '[dateTime][withPicker]',
170
+ exportAs: 'dateTimePicker'
171
+ }]
172
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{
173
+ type: Inject,
174
+ args: [DATE_TIME_INPUT]
175
+ }] }, { type: Document, decorators: [{
176
+ type: Inject,
177
+ args: [DOCUMENT]
178
+ }] }, { type: undefined, decorators: [{
179
+ type: Inject,
180
+ args: [POSITION]
181
+ }] }, { type: undefined, decorators: [{
182
+ type: Inject,
183
+ args: [DATE_TIME_PICKER_DIRECTIVE_OPTIONS]
184
+ }, {
185
+ type: Optional
186
+ }] }]; }, propDecorators: { withPickerOptions: [{
187
+ type: Input
188
+ }], handleClickOutside: [] } });
189
+ //# sourceMappingURL=dateTimePicker.directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateTimePicker.directive.js","sourceRoot":"","sources":["../../../../../../src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComponentRef, Directive, ElementRef, EmbeddedViewRef, Inject, Input, OnDestroy, OnInit, Optional, ViewContainerRef} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {Position, POSITION, applyPositionResult, PositionPlacement} from '@anglr/common';\nimport {extend, nameof, isDescendant, BindThis} from '@jscrpt/common';\nimport {lastValueFrom, Subscription} from 'rxjs';\n\nimport {DateTimeInput} from '../../../../interfaces';\nimport {DATE_TIME_INPUT} from '../../../../misc/tokens';\nimport {DateTimePickerComponent} from '../../components';\nimport {DateTimePickerDirectiveOptions} from './dateTimePicker.interface';\nimport {DATE_TIME_PICKER_DIRECTIVE_OPTIONS} from '../../misc/tokens';\n\n/**\n * Default options for date time picker directive\n */\nconst defaultOptions: DateTimePickerDirectiveOptions =\n{\n absolute: true,\n alwaysVisible: false,\n closeOnValueSelect: true,\n disabled: false,\n positionOptions: PositionPlacement.BottomStart,\n showOnFocus: true,\n};\n\n/**\n * Directive that is used for displaying and attaching date time picker\n */\n@Directive(\n{\n selector: '[dateTime][withPicker]',\n exportAs: 'dateTimePicker'\n})\nexport class DateTimePickerDirective<TDate = unknown> implements OnInit, OnDestroy\n{\n //######################### protected properties #########################\n\n /**\n * Indication whether is value changes disabled\n */\n protected valueChangeDisabled: boolean = false;\n\n /**\n * Options for date time picker directive\n */\n protected ɵWithPickerOptions: DateTimePickerDirectiveOptions;\n\n /**\n * Subscriptions created during initialization\n */\n protected initSubscriptions: Subscription = new Subscription();\n\n /**\n * Date time picker component reference\n */\n protected componentRef: ComponentRef<DateTimePickerComponent<TDate>>|undefined|null;\n\n /**\n * Instance of date time picker component\n */\n protected component: DateTimePickerComponent<TDate>|undefined|null;\n\n /**\n * Instance of date time picker element\n */\n protected componentElement: HTMLElement|undefined|null;\n\n /**\n * Subscription for value changes in picker\n */\n protected valueChangeSubscription: Subscription|undefined|null;\n\n //######################### public properties - inputs #########################\n\n /**\n * Gets or sets options for date time picker directive\n */\n @Input()\n public get withPickerOptions(): Partial<DateTimePickerDirectiveOptions>\n {\n return this.ɵWithPickerOptions;\n }\n public set withPickerOptions(value: Partial<DateTimePickerDirectiveOptions>)\n {\n this.ɵWithPickerOptions = extend(true, {}, this.ɵWithPickerOptions, value);\n }\n\n //######################### constructor #########################\n constructor(protected viewContainer: ViewContainerRef,\n protected element: ElementRef<HTMLElement>,\n @Inject(DATE_TIME_INPUT) protected input: DateTimeInput<TDate>,\n @Inject(DOCUMENT) protected document: Document,\n @Inject(POSITION) protected position: Position,\n @Inject(DATE_TIME_PICKER_DIRECTIVE_OPTIONS) @Optional() options?: DateTimePickerDirectiveOptions,)\n {\n this.ɵWithPickerOptions = extend(true, {}, defaultOptions, options);\n }\n\n //######################### public methods - implementation of OnInit #########################\n\n /**\n * Initialize component\n */\n public async ngOnInit(): Promise<void>\n {\n if(this.withPickerOptions.alwaysVisible)\n {\n this.showPicker();\n }\n\n this.initSubscriptions.add(this.input.valueChange.subscribe(() => this.setPickerValue()));\n\n this.initSubscriptions.add(this.input.focus.subscribe(() =>\n {\n if(this.withPickerOptions.showOnFocus)\n {\n this.showPicker();\n }\n }));\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this.hidePicker();\n this.initSubscriptions.unsubscribe();\n }\n\n //######################### public methods #########################\n\n /**\n * Hides date time picker\n */\n public async showPicker(): Promise<void>\n {\n if(this.withPickerOptions.disabled || this.componentRef)\n {\n return;\n }\n\n this.componentRef = this.viewContainer.createComponent(DateTimePickerComponent<TDate>);\n this.componentElement = (this.componentRef?.hostView as EmbeddedViewRef<DateTimePickerComponent<TDate>>).rootNodes[0] as HTMLElement;\n this.component = this.componentRef.instance;\n\n if(this.withPickerOptions.absolute)\n {\n this.document.body.append(this.componentElement);\n }\n\n this.valueChangeSubscription = this.component.valueChange.subscribe(() =>\n {\n if(this.component)\n {\n this.valueChangeDisabled = true;\n this.input.value = this.component.value;\n this.input.valueChange.emit();\n this.valueChangeDisabled = false;\n }\n });\n\n this.document.addEventListener('click', this.handleClickOutside);\n\n const result = await lastValueFrom(this.position.placeElement(this.componentElement, this.element.nativeElement,\n {\n placement: this.withPickerOptions.positionOptions,\n }));\n\n applyPositionResult(result);\n this.setPickerValue();\n }\n\n /**\n * Shows date time picker\n */\n public hidePicker(): void\n {\n if(this.withPickerOptions.alwaysVisible)\n {\n return;\n }\n\n this.valueChangeSubscription?.unsubscribe();\n this.valueChangeSubscription = null;\n\n this.component = null;\n\n this.componentRef?.destroy();\n this.componentRef = null;\n\n this.componentElement?.remove();\n this.componentElement = null;\n\n this.document.removeEventListener('click', this.handleClickOutside);\n }\n\n //######################### protected methods #########################\n\n /**\n * Sets all picker value\n */\n protected setPickerValue(): void\n {\n if(this.valueChangeDisabled)\n {\n return;\n }\n\n if(this.componentRef)\n {\n this.componentRef.setInput(nameof<DateTimePickerComponent>('value'), this.input.value);\n // this.componentRef.changeDetectorRef.markForCheck();\n this.componentRef.changeDetectorRef.detectChanges();\n }\n }\n\n /**\n * Handles clicking outside of picker\n * @param event - Event that occured\n */\n @BindThis\n protected handleClickOutside(event: MouseEvent): void\n {\n if(!this.componentElement)\n {\n return;\n }\n\n if(this.componentElement != event.target &&\n !isDescendant(this.componentElement, event.target as HTMLElement) &&\n (!this.input.element || (this.input.element != event.target &&\n !isDescendant(this.input.element, event.target as HTMLElement))))\n {\n this.hidePicker();\n }\n }\n}"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dateTimePicker.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateTimePicker.interface.js","sourceRoot":"","sources":["../../../../../../src/modules/dateTimePicker/directives/dateTimePicker/dateTimePicker.interface.ts"],"names":[],"mappings":"","sourcesContent":["import {PositionPlacement} from '@anglr/common';\n\n/**\n * Defintion of date time picker directive options\n */\nexport interface DateTimePickerDirectiveOptions\n{\n /**\n * Indication whether close picker on value selection\n */\n closeOnValueSelect: boolean;\n\n /**\n * Indication whether display picker when date time input gets focus\n */\n showOnFocus: boolean;\n\n /**\n * Indication whether is picker always visible, mostly used for debugging\n */\n alwaysVisible: boolean;\n\n /**\n * Indication whether picker is disabled, if true, you cant display picker\n */\n disabled: boolean;\n\n /**\n * Indication whether use absolute global positioning of picker\n */\n absolute: boolean;\n\n /**\n * Position options that are used to position picker\n */\n positionOptions: Partial<PositionPlacement>;\n}"]}
@@ -0,0 +1,3 @@
1
+ export * from './dateTimePicker/dateTimePicker.directive';
2
+ export * from './dateTimePicker/dateTimePicker.interface';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/dateTimePicker/directives/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC","sourcesContent":["export * from './dateTimePicker/dateTimePicker.directive';\nexport * from './dateTimePicker/dateTimePicker.interface';\n"]}
@@ -0,0 +1,6 @@
1
+ export * from './components';
2
+ export * from './directives';
3
+ export * from './interfaces';
4
+ export * from './misc/tokens';
5
+ export * from './modules';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/dateTimePicker/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC","sourcesContent":["export * from './components';\nexport * from './directives';\nexport * from './interfaces';\nexport * from './misc/tokens';\nexport * from './modules';\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dateTimePicker.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateTimePicker.interface.js","sourceRoot":"","sources":["../../../../../../src/modules/dateTimePicker/interfaces/dateTimePicker/dateTimePicker.interface.ts"],"names":[],"mappings":"","sourcesContent":["import {Observable} from 'rxjs';\n\nimport {DateTimeObjectValue} from '../../../../misc/types';\n\n/**\n * Describes date time picker API for each date time period\n */\nexport interface DateTimePicker<TDate = unknown, TOptions = unknown>\n{\n /**\n * Value of date time picker\n */\n value: DateTimeObjectValue<TDate>|undefined|null;\n\n /**\n * Options for date time picker period\n */\n options: TOptions|undefined|null;\n\n /**\n * Date that describes which date should be displayed\n */\n display: TDate|undefined|null;\n\n /**\n * Indication whether picker can display lower granularity picker\n */\n canGoUp: boolean;\n\n /**\n * Indication whether picker can display higher granularity picker\n */\n canGoDown: boolean;\n\n /**\n * Occurs when date time picker value changes\n */\n readonly valueChange: Observable<void>; \n\n /**\n * Occurs when period with lower granularity should be displayed\n */\n readonly goUp: Observable<TDate>;\n\n /**\n * Occurs when period with higher granularity should be displayed\n */\n readonly goDown: Observable<TDate>;\n}"]}
@@ -0,0 +1,2 @@
1
+ export * from './dateTimePicker/dateTimePicker.interface';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/dateTimePicker/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC","sourcesContent":["export * from './dateTimePicker/dateTimePicker.interface';\n"]}
@@ -0,0 +1,10 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Injection token for global options for date time picker directive
4
+ */
5
+ export const DATE_TIME_PICKER_DIRECTIVE_OPTIONS = new InjectionToken('DATE_TIME_PICKER_DIRECTIVE_OPTIONS');
6
+ /**
7
+ * Injection token for global options for date time picker component
8
+ */
9
+ export const DATE_TIME_PICKER_OPTIONS = new InjectionToken('DATE_TIME_PICKER_OPTIONS');
10
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../../src/modules/dateTimePicker/misc/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAK7C;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAA4D,IAAI,cAAc,CAA0C,oCAAoC,CAAC,CAAC;AAE7M;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAmD,IAAI,cAAc,CAAiC,0BAA0B,CAAC,CAAC","sourcesContent":["import {InjectionToken} from '@angular/core';\n\nimport {DateTimePickerOptions} from '../components/dateTimePicker/dateTimePicker.interface';\nimport {DateTimePickerDirectiveOptions} from '../directives/dateTimePicker/dateTimePicker.interface';\n\n/**\n * Injection token for global options for date time picker directive\n */\nexport const DATE_TIME_PICKER_DIRECTIVE_OPTIONS: InjectionToken<Partial<DateTimePickerDirectiveOptions>> = new InjectionToken<Partial<DateTimePickerDirectiveOptions>>('DATE_TIME_PICKER_DIRECTIVE_OPTIONS');\n\n/**\n * Injection token for global options for date time picker component\n */\nexport const DATE_TIME_PICKER_OPTIONS: InjectionToken<Partial<DateTimePickerOptions>> = new InjectionToken<Partial<DateTimePickerOptions>>('DATE_TIME_PICKER_OPTIONS');"]}
@@ -0,0 +1,28 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DateTimePickerComponent } from '../components';
3
+ import { DateTimePickerDirective } from '../directives';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Module for components that are used as date time picker
7
+ */
8
+ export class DateTimePickerModule {
9
+ }
10
+ DateTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ DateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.6", ngImport: i0, type: DateTimePickerModule, declarations: [DateTimePickerComponent,
12
+ DateTimePickerDirective], exports: [DateTimePickerComponent,
13
+ DateTimePickerDirective] });
14
+ DateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DateTimePickerModule });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: DateTimePickerModule, decorators: [{
16
+ type: NgModule,
17
+ args: [{
18
+ declarations: [
19
+ DateTimePickerComponent,
20
+ DateTimePickerDirective,
21
+ ],
22
+ exports: [
23
+ DateTimePickerComponent,
24
+ DateTimePickerDirective,
25
+ ],
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=dateTimePicker.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateTimePicker.module.js","sourceRoot":"","sources":["../../../../../src/modules/dateTimePicker/modules/dateTimePicker.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;;AAEtD;;GAEG;AAcH,MAAM,OAAO,oBAAoB;;iHAApB,oBAAoB;kHAApB,oBAAoB,iBATzB,uBAAuB;QACvB,uBAAuB,aAIvB,uBAAuB;QACvB,uBAAuB;kHAGlB,oBAAoB;2FAApB,oBAAoB;kBAbhC,QAAQ;mBACT;oBACI,YAAY,EACZ;wBACI,uBAAuB;wBACvB,uBAAuB;qBAC1B;oBACD,OAAO,EACP;wBACI,uBAAuB;wBACvB,uBAAuB;qBAC1B;iBACJ","sourcesContent":["import {NgModule} from '@angular/core';\n\nimport {DateTimePickerComponent} from '../components';\nimport {DateTimePickerDirective} from '../directives';\n\n/**\n * Module for components that are used as date time picker\n */\n@NgModule(\n{\n declarations:\n [\n DateTimePickerComponent,\n DateTimePickerDirective,\n ],\n exports:\n [\n DateTimePickerComponent,\n DateTimePickerDirective,\n ],\n})\nexport class DateTimePickerModule\n{\n}"]}
@@ -0,0 +1,2 @@
1
+ export * from './dateTimePicker.module';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/dateTimePicker/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC","sourcesContent":["export * from './dateTimePicker.module';\n"]}
@@ -1,3 +1,4 @@
1
1
  export * from './datePipes.module';
2
2
  export * from './dateTime';
3
+ export * from './dateTimePicker';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC","sourcesContent":["export * from './datePipes.module';\nexport * from './dateTime';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './datePipes.module';\nexport * from './dateTime';\nexport * from './dateTimePicker';\n"]}