@impartner/design-components 2.0.0 → 2.1.0

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 (157) hide show
  1. package/README.md +2 -1
  2. package/esm2022/lib/badge/badge.component.mjs +17 -1
  3. package/esm2022/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.mjs +105 -0
  4. package/esm2022/lib/datetime-picker/components/datepicker-nav/index.mjs +2 -0
  5. package/esm2022/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.mjs +30 -0
  6. package/esm2022/lib/datetime-picker/components/datepicker-template-host/index.mjs +2 -0
  7. package/esm2022/lib/datetime-picker/components/datetime-picker/datetime-picker.component.mjs +370 -0
  8. package/esm2022/lib/datetime-picker/components/datetime-picker/index.mjs +2 -0
  9. package/esm2022/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.mjs +367 -0
  10. package/esm2022/lib/datetime-picker/components/datetime-picker-input/index.mjs +2 -0
  11. package/esm2022/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.mjs +68 -0
  12. package/esm2022/lib/datetime-picker/components/datetime-picker-input-footer/index.mjs +2 -0
  13. package/esm2022/lib/datetime-picker/components/index.mjs +6 -0
  14. package/esm2022/lib/datetime-picker/constants/datetime-picker-defaults.mjs +12 -0
  15. package/esm2022/lib/datetime-picker/constants/index.mjs +2 -0
  16. package/esm2022/lib/datetime-picker/datetime-picker.module.mjs +22 -0
  17. package/esm2022/lib/datetime-picker/index.mjs +4 -0
  18. package/esm2022/lib/datetime-picker/services/datetime-formatter/datetime-formatter.service.mjs +40 -0
  19. package/esm2022/lib/datetime-picker/services/datetime-formatter/index.mjs +2 -0
  20. package/esm2022/lib/datetime-picker/services/index.mjs +2 -0
  21. package/esm2022/lib/datetime-picker/types/datetime-picker-value.interface.mjs +2 -0
  22. package/esm2022/lib/datetime-picker/types/index.mjs +2 -0
  23. package/esm2022/lib/design-components.module.mjs +20 -7
  24. package/esm2022/lib/form-field/component/directives/corner-hint.directive.mjs +15 -0
  25. package/esm2022/lib/form-field/component/directives/error.directive.mjs +27 -0
  26. package/esm2022/lib/form-field/component/directives/form-root.directive.mjs +93 -0
  27. package/esm2022/lib/form-field/component/directives/hint.directive.mjs +25 -0
  28. package/esm2022/lib/form-field/component/directives/index.mjs +25 -0
  29. package/esm2022/lib/form-field/component/directives/label.directive.mjs +15 -0
  30. package/esm2022/lib/form-field/component/directives/prefix.directive.mjs +25 -0
  31. package/esm2022/lib/form-field/component/directives/suffix.directive.mjs +25 -0
  32. package/esm2022/lib/form-field/component/form-field.component.mjs +131 -0
  33. package/esm2022/lib/form-field/component/form-field.module.mjs +24 -0
  34. package/esm2022/lib/form-field/component/index.mjs +4 -0
  35. package/esm2022/lib/form-field/controls/checkbox/checkbox.component.mjs +14 -6
  36. package/esm2022/lib/form-field/controls/checkbox/checkbox.module.mjs +4 -7
  37. package/esm2022/lib/form-field/controls/index.mjs +2 -1
  38. package/esm2022/lib/form-field/controls/input/input.directive.mjs +4 -3
  39. package/esm2022/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +6 -4
  40. package/esm2022/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +4 -3
  41. package/esm2022/lib/form-field/controls/radio/radio.module.mjs +4 -7
  42. package/esm2022/lib/form-field/controls/select/index.mjs +6 -3
  43. package/esm2022/lib/form-field/controls/select/interfaces/index.mjs +2 -0
  44. package/esm2022/lib/form-field/controls/select/interfaces/select-option.interface.mjs +2 -0
  45. package/esm2022/lib/form-field/controls/select/option/index.mjs +2 -2
  46. package/esm2022/lib/form-field/controls/select/option/select-option.component.mjs +33 -128
  47. package/esm2022/lib/form-field/controls/select/option-display/index.mjs +2 -0
  48. package/esm2022/lib/form-field/controls/select/option-display/select-option-display.component.mjs +162 -0
  49. package/esm2022/lib/form-field/controls/select/option-group/index.mjs +2 -0
  50. package/esm2022/lib/form-field/controls/select/option-group/select-option-group.component.mjs +35 -0
  51. package/esm2022/lib/form-field/controls/select/option-parent.mjs +2 -1
  52. package/esm2022/lib/form-field/controls/select/select.component.mjs +348 -148
  53. package/esm2022/lib/form-field/controls/select/select.module.mjs +20 -13
  54. package/esm2022/lib/form-field/controls/select/value-tags-display/index.mjs +2 -0
  55. package/esm2022/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.mjs +91 -0
  56. package/esm2022/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +3 -3
  57. package/esm2022/lib/form-field/controls/shared/toggle/toggle.component.mjs +19 -3
  58. package/esm2022/lib/form-field/controls/shared/toggle/toggle.module.mjs +4 -6
  59. package/esm2022/lib/form-field/controls/tag-select/index.mjs +2 -0
  60. package/esm2022/lib/form-field/controls/tag-select/tag-select.component.mjs +146 -0
  61. package/esm2022/lib/form-field/impdc-forms.mjs +2 -3
  62. package/esm2022/lib/form-field/impdc-forms.module.mjs +32 -47
  63. package/esm2022/lib/form-field/shared/error-state.mixin.mjs +1 -1
  64. package/esm2022/lib/icon/icon.component.mjs +12 -5
  65. package/esm2022/lib/index.mjs +3 -1
  66. package/esm2022/lib/pagination/pagination.component.mjs +6 -6
  67. package/esm2022/lib/select-icon/select-icon.component.mjs +6 -6
  68. package/esm2022/lib/select-icon/select-icon.module.mjs +5 -1
  69. package/esm2022/lib/table/containers/table.component.mjs +3 -3
  70. package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +1 -1
  71. package/esm2022/lib/tag/index.mjs +2 -0
  72. package/esm2022/lib/tag/tag.component.mjs +104 -0
  73. package/esm2022/lib/text-highlight/text-highlight.component.mjs +52 -37
  74. package/esm2022/lib/text-highlight/text-highlight.module.mjs +4 -6
  75. package/fesm2022/impartner-design-components.mjs +5620 -3983
  76. package/fesm2022/impartner-design-components.mjs.map +1 -1
  77. package/lib/badge/badge.component.d.ts +15 -1
  78. package/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.d.ts +31 -0
  79. package/lib/datetime-picker/components/datepicker-nav/index.d.ts +1 -0
  80. package/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.d.ts +14 -0
  81. package/lib/datetime-picker/components/datepicker-template-host/index.d.ts +1 -0
  82. package/lib/datetime-picker/components/datetime-picker/datetime-picker.component.d.ts +157 -0
  83. package/lib/datetime-picker/components/datetime-picker/index.d.ts +1 -0
  84. package/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.d.ts +160 -0
  85. package/lib/datetime-picker/components/datetime-picker-input/index.d.ts +1 -0
  86. package/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.d.ts +24 -0
  87. package/lib/datetime-picker/components/datetime-picker-input-footer/index.d.ts +1 -0
  88. package/lib/datetime-picker/components/index.d.ts +5 -0
  89. package/lib/datetime-picker/constants/datetime-picker-defaults.d.ts +4 -0
  90. package/lib/datetime-picker/constants/index.d.ts +1 -0
  91. package/lib/datetime-picker/datetime-picker.module.d.ts +8 -0
  92. package/lib/datetime-picker/index.d.ts +4 -0
  93. package/lib/datetime-picker/services/datetime-formatter/datetime-formatter.service.d.ts +20 -0
  94. package/lib/datetime-picker/services/datetime-formatter/index.d.ts +1 -0
  95. package/lib/datetime-picker/services/index.d.ts +1 -0
  96. package/lib/datetime-picker/types/datetime-picker-value.interface.d.ts +5 -0
  97. package/lib/datetime-picker/types/index.d.ts +1 -0
  98. package/lib/design-components.module.d.ts +14 -12
  99. package/lib/form-field/{directives → component/directives}/corner-hint.directive.d.ts +1 -1
  100. package/lib/form-field/{directives → component/directives}/error.directive.d.ts +1 -1
  101. package/lib/form-field/{directives → component/directives}/form-root.directive.d.ts +2 -2
  102. package/lib/form-field/{directives → component/directives}/hint.directive.d.ts +1 -1
  103. package/lib/form-field/component/directives/index.d.ts +15 -0
  104. package/lib/form-field/{directives → component/directives}/label.directive.d.ts +1 -1
  105. package/lib/form-field/{directives → component/directives}/prefix.directive.d.ts +1 -1
  106. package/lib/form-field/{directives → component/directives}/suffix.directive.d.ts +1 -1
  107. package/lib/form-field/{form-field.component.d.ts → component/form-field.component.d.ts} +3 -5
  108. package/lib/form-field/component/form-field.module.d.ts +14 -0
  109. package/lib/form-field/component/index.d.ts +3 -0
  110. package/lib/form-field/controls/checkbox/checkbox.component.d.ts +6 -2
  111. package/lib/form-field/controls/checkbox/checkbox.module.d.ts +1 -3
  112. package/lib/form-field/controls/index.d.ts +1 -0
  113. package/lib/form-field/controls/input/input.directive.d.ts +2 -2
  114. package/lib/form-field/controls/radio/radio-button/radio-button.component.d.ts +1 -1
  115. package/lib/form-field/controls/radio/radio-group/radio-group.directive.d.ts +2 -2
  116. package/lib/form-field/controls/radio/radio.module.d.ts +1 -3
  117. package/lib/form-field/controls/select/index.d.ts +6 -2
  118. package/lib/form-field/controls/select/interfaces/index.d.ts +1 -0
  119. package/lib/form-field/controls/select/interfaces/select-option.interface.d.ts +6 -0
  120. package/lib/form-field/controls/select/option/index.d.ts +1 -1
  121. package/lib/form-field/controls/select/option/select-option.component.d.ts +10 -49
  122. package/lib/form-field/controls/select/option-display/index.d.ts +1 -0
  123. package/lib/form-field/controls/select/option-display/select-option-display.component.d.ts +64 -0
  124. package/lib/form-field/controls/select/option-group/index.d.ts +1 -0
  125. package/lib/form-field/controls/select/option-group/select-option-group.component.d.ts +11 -0
  126. package/lib/form-field/controls/select/option-parent.d.ts +12 -1
  127. package/lib/form-field/controls/select/select.component.d.ts +113 -51
  128. package/lib/form-field/controls/select/select.module.d.ts +5 -6
  129. package/lib/form-field/controls/select/value-tags-display/index.d.ts +1 -0
  130. package/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.d.ts +46 -0
  131. package/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.d.ts +1 -1
  132. package/lib/form-field/controls/shared/toggle/toggle.component.d.ts +4 -1
  133. package/lib/form-field/controls/shared/toggle/toggle.module.d.ts +1 -2
  134. package/lib/form-field/controls/tag-select/index.d.ts +1 -0
  135. package/lib/form-field/controls/tag-select/tag-select.component.d.ts +43 -0
  136. package/lib/form-field/impdc-forms.d.ts +1 -2
  137. package/lib/form-field/impdc-forms.module.d.ts +8 -14
  138. package/lib/form-field/shared/error-state.mixin.d.ts +4 -4
  139. package/lib/icon/icon.component.d.ts +5 -3
  140. package/lib/index.d.ts +2 -0
  141. package/lib/select-icon/select-icon.module.d.ts +4 -3
  142. package/lib/table/interfaces/table-row-action.interface.d.ts +1 -1
  143. package/lib/tag/index.d.ts +1 -0
  144. package/lib/tag/tag.component.d.ts +54 -0
  145. package/lib/text-highlight/text-highlight.component.d.ts +12 -6
  146. package/lib/text-highlight/text-highlight.module.d.ts +1 -2
  147. package/package.json +2 -2
  148. package/esm2022/lib/form-field/directives/corner-hint.directive.mjs +0 -14
  149. package/esm2022/lib/form-field/directives/error.directive.mjs +0 -26
  150. package/esm2022/lib/form-field/directives/form-root.directive.mjs +0 -91
  151. package/esm2022/lib/form-field/directives/hint.directive.mjs +0 -24
  152. package/esm2022/lib/form-field/directives/index.mjs +0 -8
  153. package/esm2022/lib/form-field/directives/label.directive.mjs +0 -14
  154. package/esm2022/lib/form-field/directives/prefix.directive.mjs +0 -24
  155. package/esm2022/lib/form-field/directives/suffix.directive.mjs +0 -24
  156. package/esm2022/lib/form-field/form-field.component.mjs +0 -132
  157. package/lib/form-field/directives/index.d.ts +0 -7
@@ -0,0 +1,367 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, EventEmitter, Inject, Input, Optional, Output, Self, ViewChild, booleanAttribute, inject } from '@angular/core';
3
+ import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
4
+ import { NgbDateAdapter, NgbDropdownModule, NgbTimeAdapter } from '@ng-bootstrap/ng-bootstrap';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import { nanoid } from 'nanoid';
7
+ import { Subject } from 'rxjs';
8
+ import { IMPDC_FORM_ROOT, ImpdcFormFieldControl, mixinDisabled, mixinErrorState, mixinTabIndex } from '../../../form-field';
9
+ import { ImpdcDatetimeFormatter } from '../../services';
10
+ import { DatetimePickerComponent } from '../datetime-picker/datetime-picker.component';
11
+ import { DatetimePickerInputFooterComponent } from '../datetime-picker-input-footer';
12
+ import { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE } from '../../constants';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "../../../form-field";
15
+ import * as i2 from "@angular/forms";
16
+ import * as i3 from "@angular/common";
17
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
18
+ export const DEFAULT_POPUP_BUTTON_LABELS = {
19
+ cancelLabel: 'Cancel',
20
+ clearLabel: 'Clear',
21
+ saveLabel: 'Save'
22
+ };
23
+ const _DatetimePickerInputComponentBase = mixinTabIndex(mixinDisabled(mixinErrorState(class {
24
+ constructor(_defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl) {
25
+ this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
26
+ this._formRoot = _formRoot;
27
+ this._parentForm = _parentForm;
28
+ this._parentFormGroup = _parentFormGroup;
29
+ this.ngControl = ngControl;
30
+ this.stateChanges = new Subject();
31
+ }
32
+ })));
33
+ /**
34
+ * A control for selecting date or datetime via an interactive dropdown control.
35
+ *
36
+ * Implements [ControlValueAccessor](https://angular.io/api/forms/ControlValueAccessor) to support two-way binding with
37
+ * Angular forms via usage of the \`[(ngModel)]\`, \`[formControl]\`, and \`[formControlName]\` directives.
38
+ *
39
+ * The date and time controls inside this component leverage the value adapter patterns and services of NG-Bootstrap's
40
+ * [Datepicker](https://ng-bootstrap.github.io/#/components/datepicker/overview#date-model) and
41
+ * [Timepicker](https://ng-bootstrap.github.io/#/components/timepicker/examples#adapter) components when working with input values.
42
+ * This means that `date` values will be [NgbDateStruct](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateStruct)
43
+ * objects and `time` values will be [NgbTimeStruct](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeStruct) objects
44
+ * by default, and the [NgbDateAdapter](https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateAdapter) and
45
+ * [NgbTimeAdapter](https://ng-bootstrap.github.io/#/components/timepicker/api#NgbTimeAdapter) services will be used to handle them respectively.
46
+ * If usage of alternative date and time models is desired, consult NG-Bootstrap's documentation for directions.
47
+ */
48
+ export class DatetimePickerInputComponent extends _DatetimePickerInputComponentBase {
49
+ /**
50
+ * The earliest allowable date for display or selection.
51
+ *
52
+ * @default { year: 1900, month: 1, day: 1 }
53
+ */
54
+ get minDate() {
55
+ return { ...this._minDate };
56
+ }
57
+ set minDate(value) {
58
+ this._minDate = value || DEFAULT_MIN_DATE;
59
+ }
60
+ /**
61
+ * The latest allowable date for display or selection.
62
+ *
63
+ * @default { year: 2099, month: 12, day: 31 }
64
+ */
65
+ get maxDate() {
66
+ return { ...this._maxDate };
67
+ }
68
+ set maxDate(value) {
69
+ this._maxDate = value || DEFAULT_MAX_DATE;
70
+ }
71
+ /**
72
+ * Object dictating the labels used for the buttons displayed in the footer of the datetime picker popup.
73
+ *
74
+ * @default { cancelLabel: "Cancel", clearLabel: "Clear", saveLabel: "Save" }
75
+ */
76
+ get popupButtonLabels() {
77
+ return this._popupButtonLabels;
78
+ }
79
+ set popupButtonLabels(value) {
80
+ this._popupButtonLabels = {
81
+ ...DEFAULT_POPUP_BUTTON_LABELS,
82
+ ...value
83
+ };
84
+ }
85
+ /**
86
+ * The placeholder text that will be displayed when no selection has been made.
87
+ *
88
+ * @default YYYY-MM-DD hh:mm
89
+ */
90
+ get placeholder() {
91
+ return this._placeholder;
92
+ }
93
+ set placeholder(value) {
94
+ this._placeholder = value;
95
+ this.stateChanges.next();
96
+ }
97
+ constructor(_defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl) {
98
+ super(_defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl);
99
+ this._changeDetector = inject(ChangeDetectorRef);
100
+ this._destroyRef = inject(DestroyRef);
101
+ this._ngbDateAdapter = inject((NgbDateAdapter));
102
+ this._ngbTimeAdapter = inject((NgbTimeAdapter));
103
+ this._datetimeFormatter = inject(ImpdcDatetimeFormatter);
104
+ this._uid = `impdc-datetime-picker-input-${nanoid()}`;
105
+ this._dropdownOpen = false;
106
+ this.datetimePickerControl = new FormControl(null);
107
+ this.cvaOnChange = (_) => { };
108
+ this.cvaOnTouched = () => { };
109
+ this._minDate = DEFAULT_MIN_DATE;
110
+ this._maxDate = DEFAULT_MAX_DATE;
111
+ /**
112
+ * Set whether to display controls for selecting a time value in addition to the date.
113
+ */
114
+ this.withTime = false;
115
+ /**
116
+ * Label to be displayed with time controls to allow the user to input 24-hour or meridian-based (AM, PM) time.
117
+ */
118
+ this.meridianToggleLabel = 'Use 24-hour format';
119
+ this._popupButtonLabels = DEFAULT_POPUP_BUTTON_LABELS;
120
+ this._placeholder = '';
121
+ /**
122
+ * Events fire when raw value of picker input changes. Mainly exists to handle
123
+ * two-way binding of `value` input property.
124
+ * @ignore
125
+ */
126
+ this.valueChange = new EventEmitter();
127
+ this._focused = false;
128
+ this.controlType = 'impdc-datetime-picker-input';
129
+ this.supportsAffixes = true;
130
+ /* Internals */
131
+ this.displayedValue = '';
132
+ if (this.ngControl) {
133
+ this.ngControl.valueAccessor = this;
134
+ }
135
+ this.id = this.id;
136
+ }
137
+ /** @ignore */
138
+ get empty() {
139
+ return !this.value;
140
+ }
141
+ /** @ignore */
142
+ focus(options) {
143
+ this._toggleButtonRef.nativeElement.focus(options);
144
+ }
145
+ /* Lifecycle Hooks */
146
+ /** @ignore */
147
+ ngDoCheck() {
148
+ const ngControl = this.ngControl;
149
+ if (!ngControl) {
150
+ return;
151
+ }
152
+ if (this._previousControl !== ngControl.control) {
153
+ if (this._previousControl !== undefined &&
154
+ ngControl.disabled !== null &&
155
+ ngControl.disabled !== this.disabled) {
156
+ this.disabled = ngControl?.disabled;
157
+ }
158
+ this._previousControl = ngControl.control;
159
+ }
160
+ this.updateErrorState();
161
+ }
162
+ /** @ignore */
163
+ ngOnChanges(changes) {
164
+ // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal
165
+ // to the parent form field so it can run change detection when disabled state is changed.
166
+ if (changes['disabled']) {
167
+ this.stateChanges.next();
168
+ }
169
+ }
170
+ /** @ignore */
171
+ ngOnDestroy() {
172
+ this.stateChanges.complete();
173
+ }
174
+ /** @ignore */
175
+ ngOnInit() {
176
+ this.datetimePickerControl.valueChanges
177
+ .pipe(takeUntilDestroyed(this._destroyRef))
178
+ .subscribe(v => {
179
+ this.cvaOnChange(v);
180
+ this.valueChange.emit(v);
181
+ this._updateDisplayedValue(v);
182
+ });
183
+ }
184
+ /* ControlValueAccessor */
185
+ /** @ignore */
186
+ writeValue(obj) {
187
+ this.datetimePickerControl.setValue(obj, { emitEvent: false });
188
+ this._changeDetector.markForCheck();
189
+ }
190
+ /** @ignore */
191
+ registerOnChange(fn) {
192
+ this.cvaOnChange = fn;
193
+ }
194
+ /** @ignore */
195
+ registerOnTouched(fn) {
196
+ this.cvaOnTouched = fn;
197
+ }
198
+ /** @ignore */
199
+ setDisabledState(isDisabled) {
200
+ this.disabled = isDisabled;
201
+ if (isDisabled) {
202
+ this.datetimePickerControl.disable();
203
+ }
204
+ else {
205
+ this.datetimePickerControl.enable();
206
+ }
207
+ this._changeDetector.markForCheck();
208
+ }
209
+ /* ImpdcFormFieldControl */
210
+ get value() {
211
+ return this.datetimePickerControl.value;
212
+ }
213
+ set value(value) {
214
+ if (value !== this.datetimePickerControl.value) {
215
+ this.datetimePickerControl.setValue(value);
216
+ this.stateChanges.next();
217
+ }
218
+ }
219
+ get id() {
220
+ return this._id;
221
+ }
222
+ set id(value) {
223
+ this._id = value || this._uid;
224
+ this.stateChanges.next();
225
+ }
226
+ /**
227
+ * Used to set requiredness of control in a template-based manner;
228
+ * not necessary when using the Angular reactive forms API and `required` validator.
229
+ *
230
+ * @default false
231
+ */
232
+ get required() {
233
+ return (this._required ??
234
+ this.ngControl?.control?.hasValidator(Validators.required) ??
235
+ false);
236
+ }
237
+ set required(value) {
238
+ this._required = value;
239
+ this.stateChanges.next();
240
+ }
241
+ get focused() {
242
+ return this._focused || this._dropdownOpen;
243
+ }
244
+ get placeholderText() {
245
+ return (this.placeholder?.trim() || `YYYY-MM-DD${this.withTime ? ' hh:mm' : ''}`);
246
+ }
247
+ updateValue(newValue) {
248
+ this.datetimePickerControl.setValue(newValue);
249
+ }
250
+ handleOpenChange(isOpen) {
251
+ this._dropdownOpen = isOpen;
252
+ if (isOpen) {
253
+ this._onFocus();
254
+ }
255
+ else {
256
+ this._onBlur();
257
+ }
258
+ this.stateChanges.next();
259
+ }
260
+ _onFocus() {
261
+ if (!this.disabled) {
262
+ this._focused = true;
263
+ this.stateChanges.next();
264
+ }
265
+ }
266
+ _onBlur() {
267
+ this._focused = false;
268
+ if (!this.disabled && !this._dropdownOpen) {
269
+ this.cvaOnTouched();
270
+ this._changeDetector.markForCheck();
271
+ this.stateChanges.next();
272
+ }
273
+ }
274
+ _updateDisplayedValue(datetimePickerValue) {
275
+ let newValue = '';
276
+ if (datetimePickerValue) {
277
+ const convertedDateValue = this._ngbDateAdapter.fromModel(datetimePickerValue.date);
278
+ if (convertedDateValue) {
279
+ newValue = this._datetimeFormatter.format(convertedDateValue, {
280
+ value: this.withTime
281
+ ? this._ngbTimeAdapter.fromModel(datetimePickerValue.time)
282
+ : null,
283
+ withSeconds: false
284
+ });
285
+ }
286
+ }
287
+ this.displayedValue = newValue;
288
+ }
289
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerInputComponent, deps: [{ token: i1.ErrorStateMatcher }, { token: IMPDC_FORM_ROOT, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
290
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.1", type: DatetimePickerInputComponent, isStandalone: true, selector: "impdc-datetime-picker-input", inputs: { disabled: "disabled", tabIndex: "tabIndex", markDateDisabled: "markDateDisabled", minDate: "minDate", maxDate: "maxDate", withTime: "withTime", meridianToggleLabel: "meridianToggleLabel", popupButtonLabels: "popupButtonLabels", placeholder: "placeholder", errorStateMatcher: "errorStateMatcher", value: "value", id: "id", required: ["required", "required", booleanAttribute] }, outputs: { valueChange: "valueChange" }, host: { listeners: { "focus": "_onFocus(); focus()" }, properties: { "attr.id": "id", "attr.tabindex": "tabIndex", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.form-control": "true", "class.is-invalid": "errorState", "class.impdc-form-field-control": "true", "class.impdc-datetime-picker-input--required": "required", "class.impdc-datetime-picker-input--disabled": "disabled", "class.impdc-datetime-picker-input--invalid": "errorState", "class.impdc-datetime-picker-input--empty": "empty" } }, providers: [
291
+ {
292
+ provide: ImpdcFormFieldControl,
293
+ useExisting: DatetimePickerInputComponent
294
+ }
295
+ ], viewQueries: [{ propertyName: "_toggleButtonRef", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n ngbDropdown\n #ngbDropdown=\"ngbDropdown\"\n autoClose=\"outside\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom bottom-start bottom-end top top-start top-end\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"h-100 w-100\">\n <button\n #toggleButton\n class=\"impdc-datetime-picker--toggle btn border-0 h-100 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"_onFocus()\"\n ngbDropdownToggle>\n @if (!displayedValue) {\n <span\n class=\"impdc-datetime-picker--text impdc-datetime-picker--placeholder\"\n >{{ placeholderText }}</span\n >\n } @else {\n <span\n class=\"impdc-datetime-picker--text impdc-datetime-picker--value-text\"\n >{{ displayedValue }}</span\n >\n }\n </button>\n <div\n ngbDropdownMenu\n class=\"impdc-datetime-picker--dropdown w-100 bg-white overflow-y-visible text-gray-600\"\n tabindex=\"-1\">\n <ng-container *ngIf=\"ngbDropdown.isOpen()\">\n <impdc-datetime-picker\n #picker\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [markDateDisabled]=\"markDateDisabled\"\n [withTime]=\"withTime\"\n [meridianToggleLabel]=\"meridianToggleLabel\"\n [timeLayout]=\"{ layout: 'stacked', border: true }\" />\n <div\n class=\"border-gray-200 border-top d-flex flex-column gap-4 mt-2 p-4 w-100\">\n <impdc-datetime-picker-input-footer\n [datetimePicker]=\"picker\"\n [initialValue]=\"datetimePickerControl.value\"\n [cancelLabel]=\"popupButtonLabels.cancelLabel\"\n [clearLabel]=\"popupButtonLabels.clearLabel\"\n [saveLabel]=\"popupButtonLabels.saveLabel\"\n (datetimeSelected)=\"updateValue($event)\"\n (closeRequested)=\"ngbDropdown.close()\" />\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [":host{--impartner-hex-form-select-bg-img: none;padding:0!important;position:relative}:host.impdc-datetime-picker--disabled{background-color:var(--impd-color-gray-100)}.impdc-datetime-picker--toggle{font-weight:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%}.impdc-datetime-picker--toggle :host-context(.is-invalid){padding-right:3rem}.impdc-datetime-picker--toggle:disabled{cursor:default}.impdc-datetime-picker--text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.impdc-datetime-picker--placeholder{color:var(--impd-color-gray-400)}.impdc-datetime-picker--dropdown{max-height:unset}button[ngbDropdownToggle].dropdown-toggle:after{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: DatetimePickerComponent, selector: "impdc-datetime-picker", inputs: ["disabled", "tabIndex", "markDateDisabled", "minDate", "maxDate", "timeLayout", "meridianToggleLabel", "withTime", "errorStateMatcher", "value", "id", "required"], outputs: ["valueChange", "blur"] }, { kind: "component", type: DatetimePickerInputFooterComponent, selector: "impdc-datetime-picker-input-footer", inputs: ["datetimePicker", "initialValue", "cancelLabel", "clearLabel", "saveLabel"], outputs: ["datetimeSelected", "closeRequested"] }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
296
+ }
297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerInputComponent, decorators: [{
298
+ type: Component,
299
+ args: [{ selector: 'impdc-datetime-picker-input', standalone: true, imports: [
300
+ CommonModule,
301
+ ReactiveFormsModule,
302
+ DatetimePickerComponent,
303
+ DatetimePickerInputFooterComponent,
304
+ NgbDropdownModule
305
+ ], changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled', 'tabIndex'], host: {
306
+ '[attr.id]': 'id',
307
+ '[attr.tabindex]': 'tabIndex',
308
+ '[attr.aria-required]': 'required.toString()',
309
+ '[attr.aria-disabled]': 'disabled.toString()',
310
+ '[attr.aria-invalid]': 'errorState',
311
+ '[class.form-control]': 'true',
312
+ '[class.is-invalid]': 'errorState',
313
+ '[class.impdc-form-field-control]': 'true',
314
+ '[class.impdc-datetime-picker-input--required]': 'required',
315
+ '[class.impdc-datetime-picker-input--disabled]': 'disabled',
316
+ '[class.impdc-datetime-picker-input--invalid]': 'errorState',
317
+ '[class.impdc-datetime-picker-input--empty]': 'empty',
318
+ '(focus)': '_onFocus(); focus()'
319
+ }, providers: [
320
+ {
321
+ provide: ImpdcFormFieldControl,
322
+ useExisting: DatetimePickerInputComponent
323
+ }
324
+ ], template: "<div\n ngbDropdown\n #ngbDropdown=\"ngbDropdown\"\n autoClose=\"outside\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n placement=\"bottom bottom-start bottom-end top top-start top-end\"\n (openChange)=\"handleOpenChange($event)\"\n class=\"h-100 w-100\">\n <button\n #toggleButton\n class=\"impdc-datetime-picker--toggle btn border-0 h-100 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"_onFocus()\"\n ngbDropdownToggle>\n @if (!displayedValue) {\n <span\n class=\"impdc-datetime-picker--text impdc-datetime-picker--placeholder\"\n >{{ placeholderText }}</span\n >\n } @else {\n <span\n class=\"impdc-datetime-picker--text impdc-datetime-picker--value-text\"\n >{{ displayedValue }}</span\n >\n }\n </button>\n <div\n ngbDropdownMenu\n class=\"impdc-datetime-picker--dropdown w-100 bg-white overflow-y-visible text-gray-600\"\n tabindex=\"-1\">\n <ng-container *ngIf=\"ngbDropdown.isOpen()\">\n <impdc-datetime-picker\n #picker\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [markDateDisabled]=\"markDateDisabled\"\n [withTime]=\"withTime\"\n [meridianToggleLabel]=\"meridianToggleLabel\"\n [timeLayout]=\"{ layout: 'stacked', border: true }\" />\n <div\n class=\"border-gray-200 border-top d-flex flex-column gap-4 mt-2 p-4 w-100\">\n <impdc-datetime-picker-input-footer\n [datetimePicker]=\"picker\"\n [initialValue]=\"datetimePickerControl.value\"\n [cancelLabel]=\"popupButtonLabels.cancelLabel\"\n [clearLabel]=\"popupButtonLabels.clearLabel\"\n [saveLabel]=\"popupButtonLabels.saveLabel\"\n (datetimeSelected)=\"updateValue($event)\"\n (closeRequested)=\"ngbDropdown.close()\" />\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [":host{--impartner-hex-form-select-bg-img: none;padding:0!important;position:relative}:host.impdc-datetime-picker--disabled{background-color:var(--impd-color-gray-100)}.impdc-datetime-picker--toggle{font-weight:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%}.impdc-datetime-picker--toggle :host-context(.is-invalid){padding-right:3rem}.impdc-datetime-picker--toggle:disabled{cursor:default}.impdc-datetime-picker--text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.impdc-datetime-picker--placeholder{color:var(--impd-color-gray-400)}.impdc-datetime-picker--dropdown{max-height:unset}button[ngbDropdownToggle].dropdown-toggle:after{display:none}\n"] }]
325
+ }], ctorParameters: () => [{ type: i1.ErrorStateMatcher }, { type: undefined, decorators: [{
326
+ type: Optional
327
+ }, {
328
+ type: Inject,
329
+ args: [IMPDC_FORM_ROOT]
330
+ }] }, { type: i2.NgForm, decorators: [{
331
+ type: Optional
332
+ }] }, { type: i2.FormGroupDirective, decorators: [{
333
+ type: Optional
334
+ }] }, { type: i2.NgControl, decorators: [{
335
+ type: Self
336
+ }, {
337
+ type: Optional
338
+ }] }], propDecorators: { _toggleButtonRef: [{
339
+ type: ViewChild,
340
+ args: ['toggleButton', { static: true, read: ElementRef }]
341
+ }], markDateDisabled: [{
342
+ type: Input
343
+ }], minDate: [{
344
+ type: Input
345
+ }], maxDate: [{
346
+ type: Input
347
+ }], withTime: [{
348
+ type: Input
349
+ }], meridianToggleLabel: [{
350
+ type: Input
351
+ }], popupButtonLabels: [{
352
+ type: Input
353
+ }], placeholder: [{
354
+ type: Input
355
+ }], errorStateMatcher: [{
356
+ type: Input
357
+ }], valueChange: [{
358
+ type: Output
359
+ }], value: [{
360
+ type: Input
361
+ }], id: [{
362
+ type: Input
363
+ }], required: [{
364
+ type: Input,
365
+ args: [{ transform: booleanAttribute }]
366
+ }] } });
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZGF0ZXRpbWUtcGlja2VyL2NvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyLWlucHV0L2RhdGV0aW1lLXBpY2tlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci1pbnB1dC9kYXRldGltZS1waWNrZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBRVYsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUVKLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBSVgsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxjQUFjLEVBRWQsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBSUwsZUFB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QUFlOzswQkFDbEMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQUksUUFBUTt5Q0E1R1QsZ0JBQWdCO3NCQUR6QixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFXdEQsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVlLLE9BQU87c0JBRGpCLEtBQUs7Z0JBZUssT0FBTztzQkFEakIsS0FBSztnQkFhQyxRQUFRO3NCQURkLEtBQUs7Z0JBT0MsbUJBQW1CO3NCQUR6QixLQUFLO2dCQVNLLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFvQkssV0FBVztzQkFEckIsS0FBSztnQkFXVSxpQkFBaUI7c0JBRGhDLEtBQUs7Z0JBU1UsV0FBVztzQkFEMUIsTUFBTTtnQkEwSEksS0FBSztzQkFEZixLQUFLO2dCQVlLLEVBQUU7c0JBRFosS0FBSztnQkFpQkssUUFBUTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElEYXRldGltZVBpY2tlclZhbHVlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgTmdiRGF0ZUFkYXB0ZXIsXG4gIE5nYkRhdGVTdHJ1Y3QsXG4gIE5nYkRyb3Bkb3duTW9kdWxlLFxuICBOZ2JUaW1lQWRhcHRlclxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRXJyb3JTdGF0ZU1hdGNoZXIsXG4gIElDYW5VcGRhdGVFcnJvclN0YXRlLFxuICBJSGFzRXJyb3JTdGF0ZSxcbiAgSU1QRENfRk9STV9ST09ULFxuICBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gIEltcGRjRm9ybVJvb3QsXG4gIG1peGluRGlzYWJsZWQsXG4gIG1peGluRXJyb3JTdGF0ZSxcbiAgbWl4aW5UYWJJbmRleFxufSBmcm9tICcuLi8uLi8uLi9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEltcGRjRGF0ZXRpbWVGb3JtYXR0ZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBEYXRldGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGV0aW1lUGlja2VySW5wdXRGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRldGltZS1waWNrZXItaW5wdXQtZm9vdGVyJztcbmltcG9ydCB7IERFRkFVTFRfTUFYX0RBVEUsIERFRkFVTFRfTUlOX0RBVEUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRldGltZVBpY2tlclBvcHVwQnV0dG9uTGFiZWxzIHtcbiAgcmVhZG9ubHkgY2FuY2VsTGFiZWw6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xlYXJMYWJlbDogc3RyaW5nO1xuICByZWFkb25seSBzYXZlTGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9QVVBfQlVUVE9OX0xBQkVMUzogSURhdGV0aW1lUGlja2VyUG9wdXBCdXR0b25MYWJlbHMgPSB7XG4gIGNhbmNlbExhYmVsOiAnQ2FuY2VsJyxcbiAgY2xlYXJMYWJlbDogJ0NsZWFyJyxcbiAgc2F2ZUxhYmVsOiAnU2F2ZSdcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IF9EYXRldGltZVBpY2tlcklucHV0Q29tcG9uZW50QmFzZSA9IG1peGluVGFiSW5kZXgoXG4gIG1peGluRGlzYWJsZWQoXG4gICAgbWl4aW5FcnJvclN0YXRlKFxuICAgICAgY2xhc3Mge1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgICAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgICAgcHVibGljIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGxcbiAgICAgICAgKSB7fVxuICAgICAgfVxuICAgIClcbiAgKVxuKTtcblxuLyoqXG4gKiBBIGNvbnRyb2wgZm9yIHNlbGVjdGluZyBkYXRlIG9yIGRhdGV0aW1lIHZpYSBhbiBpbnRlcmFjdGl2ZSBkcm9wZG93biBjb250cm9sLlxuICpcbiAqIEltcGxlbWVudHMgW0NvbnRyb2xWYWx1ZUFjY2Vzc29yXShodHRwczovL2FuZ3VsYXIuaW8vYXBpL2Zvcm1zL0NvbnRyb2xWYWx1ZUFjY2Vzc29yKSB0byBzdXBwb3J0IHR3by13YXkgYmluZGluZyB3aXRoXG4gKiBBbmd1bGFyIGZvcm1zIHZpYSB1c2FnZSBvZiB0aGUgXFxgWyhuZ01vZGVsKV1cXGAsIFxcYFtmb3JtQ29udHJvbF1cXGAsIGFuZCBcXGBbZm9ybUNvbnRyb2xOYW1lXVxcYCBkaXJlY3RpdmVzLlxuICpcbiAqIFRoZSBkYXRlIGFuZCB0aW1lIGNvbnRyb2xzIGluc2lkZSB0aGlzIGNvbXBvbmVudCBsZXZlcmFnZSB0aGUgdmFsdWUgYWRhcHRlciBwYXR0ZXJucyBhbmQgc2VydmljZXMgb2YgTkctQm9vdHN0cmFwJ3NcbiAqIFtEYXRlcGlja2VyXShodHRwczovL25nLWJvb3RzdHJhcC5naXRodWIuaW8vIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvb3ZlcnZpZXcjZGF0ZS1tb2RlbCkgYW5kXG4gKiBbVGltZXBpY2tlcl0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy90aW1lcGlja2VyL2V4YW1wbGVzI2FkYXB0ZXIpIGNvbXBvbmVudHMgd2hlbiB3b3JraW5nIHdpdGggaW5wdXQgdmFsdWVzLlxuICogVGhpcyBtZWFucyB0aGF0IGBkYXRlYCB2YWx1ZXMgd2lsbCBiZSBbTmdiRGF0ZVN0cnVjdF0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JEYXRlU3RydWN0KVxuICogb2JqZWN0cyBhbmQgYHRpbWVgIHZhbHVlcyB3aWxsIGJlIFtOZ2JUaW1lU3RydWN0XShodHRwczovL25nLWJvb3RzdHJhcC5naXRodWIuaW8vIy9jb21wb25lbnRzL3RpbWVwaWNrZXIvYXBpI05nYlRpbWVTdHJ1Y3QpIG9iamVjdHNcbiAqIGJ5IGRlZmF1bHQsIGFuZCB0aGUgW05nYkRhdGVBZGFwdGVyXShodHRwczovL25nLWJvb3RzdHJhcC5naXRodWIuaW8vIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVBZGFwdGVyKSBhbmRcbiAqIFtOZ2JUaW1lQWRhcHRlcl0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy90aW1lcGlja2VyL2FwaSNOZ2JUaW1lQWRhcHRlcikgc2VydmljZXMgd2lsbCBiZSB1c2VkIHRvIGhhbmRsZSB0aGVtIHJlc3BlY3RpdmVseS5cbiAqIElmIHVzYWdlIG9mIGFsdGVybmF0aXZlIGRhdGUgYW5kIHRpbWUgbW9kZWxzIGlzIGRlc2lyZWQsIGNvbnN1bHQgTkctQm9vdHN0cmFwJ3MgZG9jdW1lbnRhdGlvbiBmb3IgZGlyZWN0aW9ucy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtZGF0ZXRpbWUtcGlja2VyLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIERhdGV0aW1lUGlja2VyQ29tcG9uZW50LFxuICAgIERhdGV0aW1lUGlja2VySW5wdXRGb290ZXJDb21wb25lbnQsXG4gICAgTmdiRHJvcGRvd25Nb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLXBpY2tlci1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGV0aW1lLXBpY2tlci1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3RhYkluZGV4J10sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIuYXJpYS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmZvcm0tY29udHJvbF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5pcy1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmltcGRjLWZvcm0tZmllbGQtY29udHJvbF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1kYXRldGltZS1waWNrZXItaW5wdXQtLXJlcXVpcmVkXSc6ICdyZXF1aXJlZCcsXG4gICAgJ1tjbGFzcy5pbXBkYy1kYXRldGltZS1waWNrZXItaW5wdXQtLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5pbXBkYy1kYXRldGltZS1waWNrZXItaW5wdXQtLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtZGF0ZXRpbWUtcGlja2VyLWlucHV0LS1lbXB0eV0nOiAnZW1wdHknLFxuICAgICcoZm9jdXMpJzogJ19vbkZvY3VzKCk7IGZvY3VzKCknXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEltcGRjRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgIHVzZUV4aXN0aW5nOiBEYXRldGltZVBpY2tlcklucHV0Q29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGV0aW1lUGlja2VySW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBfRGF0ZXRpbWVQaWNrZXJJbnB1dENvbXBvbmVudEJhc2VcbiAgaW1wbGVtZW50c1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIERvQ2hlY2ssXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgSW1wZGNGb3JtRmllbGRDb250cm9sPElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGw+LFxuICAgIElDYW5VcGRhdGVFcnJvclN0YXRlLFxuICAgIElIYXNFcnJvclN0YXRlXG57XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmdiRGF0ZUFkYXB0ZXIgPSBpbmplY3QoTmdiRGF0ZUFkYXB0ZXI8YW55Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25nYlRpbWVBZGFwdGVyID0gaW5qZWN0KE5nYlRpbWVBZGFwdGVyPGFueT4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRldGltZUZvcm1hdHRlciA9IGluamVjdChJbXBkY0RhdGV0aW1lRm9ybWF0dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdWlkID0gYGltcGRjLWRhdGV0aW1lLXBpY2tlci1pbnB1dC0ke25hbm9pZCgpfWA7XG4gIHByaXZhdGUgX3ByZXZpb3VzQ29udHJvbD86IEFic3RyYWN0Q29udHJvbCB8IG51bGw7XG4gIHByaXZhdGUgX2Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRldGltZVBpY2tlckNvbnRyb2wgPVxuICAgIG5ldyBGb3JtQ29udHJvbDxJRGF0ZXRpbWVQaWNrZXJWYWx1ZTxhbnksIGFueT4gfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGN2YU9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIHByb3RlY3RlZCBjdmFPblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBAVmlld0NoaWxkKCd0b2dnbGVCdXR0b24nLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgX3RvZ2dsZUJ1dHRvblJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGV2YWx1YXRlZCB0byBkZWNpZGUgaWYgYSBnaXZlbiBkYXRlIGlzIGRpc2FibGVkXG4gICAqIGluIHRoZSBjYWxlbmRhciB2aWV3LlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZSBBbiBbYE5nYkRhdGVgXShodHRwczovL25nLWJvb3RzdHJhcC5naXRodWIuaW8vIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGUpIHZhbHVlIGRlc2NyaWJpbmcgdGhlIHNpbmd1bGFyIGRhdGUgYmVpbmcgZXZhbHVhdGVkLlxuICAgKiBAcGFyYW0gY3VycmVudCBUaGUgbW9udGggYW5kIHllYXIgc2VsZWN0ZWQgZm9yIHRoZSBjdXJyZW50IGNhbGVuZGFyIHZpZXcuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWFya0RhdGVEaXNhYmxlZD86IChcbiAgICBkYXRlOiBOZ2JEYXRlU3RydWN0LFxuICAgIGN1cnJlbnQ/OiB7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlciB9XG4gICkgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGFsbG93YWJsZSBkYXRlIGZvciBkaXNwbGF5IG9yIHNlbGVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgeyB5ZWFyOiAxOTAwLCBtb250aDogMSwgZGF5OiAxIH1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbWluRGF0ZSgpOiBOZ2JEYXRlU3RydWN0IHtcbiAgICByZXR1cm4geyAuLi50aGlzLl9taW5EYXRlIH07XG4gIH1cbiAgcHVibGljIHNldCBtaW5EYXRlKHZhbHVlOiBOZ2JEYXRlU3RydWN0IHwgbnVsbCkge1xuICAgIHRoaXMuX21pbkRhdGUgPSB2YWx1ZSB8fCBERUZBVUxUX01JTl9EQVRFO1xuICB9XG4gIHByaXZhdGUgX21pbkRhdGU6IE5nYkRhdGVTdHJ1Y3QgPSBERUZBVUxUX01JTl9EQVRFO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGFsbG93YWJsZSBkYXRlIGZvciBkaXNwbGF5IG9yIHNlbGVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgeyB5ZWFyOiAyMDk5LCBtb250aDogMTIsIGRheTogMzEgfVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBtYXhEYXRlKCk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX21heERhdGUgfTtcbiAgfVxuICBwdWJsaWMgc2V0IG1heERhdGUodmFsdWU6IE5nYkRhdGVTdHJ1Y3QgfCBudWxsKSB7XG4gICAgdGhpcy5fbWF4RGF0ZSA9IHZhbHVlIHx8IERFRkFVTFRfTUFYX0RBVEU7XG4gIH1cbiAgcHJpdmF0ZSBfbWF4RGF0ZTogTmdiRGF0ZVN0cnVjdCA9IERFRkFVTFRfTUFYX0RBVEU7XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIHRvIGRpc3BsYXkgY29udHJvbHMgZm9yIHNlbGVjdGluZyBhIHRpbWUgdmFsdWUgaW4gYWRkaXRpb24gdG8gdGhlIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgd2l0aFRpbWUgPSBmYWxzZTtcblxuICAvKipcbiAgICogTGFiZWwgdG8gYmUgZGlzcGxheWVkIHdpdGggdGltZSBjb250cm9scyB0byBhbGxvdyB0aGUgdXNlciB0byBpbnB1dCAyNC1ob3VyIG9yIG1lcmlkaWFuLWJhc2VkIChBTSwgUE0pIHRpbWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWVyaWRpYW5Ub2dnbGVMYWJlbDogc3RyaW5nID0gJ1VzZSAyNC1ob3VyIGZvcm1hdCc7XG5cbiAgLyoqXG4gICAqIE9iamVjdCBkaWN0YXRpbmcgdGhlIGxhYmVscyB1c2VkIGZvciB0aGUgYnV0dG9ucyBkaXNwbGF5ZWQgaW4gdGhlIGZvb3RlciBvZiB0aGUgZGF0ZXRpbWUgcGlja2VyIHBvcHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7IGNhbmNlbExhYmVsOiBcIkNhbmNlbFwiLCBjbGVhckxhYmVsOiBcIkNsZWFyXCIsIHNhdmVMYWJlbDogXCJTYXZlXCIgfVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBwb3B1cEJ1dHRvbkxhYmVscygpOiBJRGF0ZXRpbWVQaWNrZXJQb3B1cEJ1dHRvbkxhYmVscyB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcHVwQnV0dG9uTGFiZWxzO1xuICB9XG4gIHB1YmxpYyBzZXQgcG9wdXBCdXR0b25MYWJlbHMoXG4gICAgdmFsdWU6IFBhcnRpYWw8SURhdGV0aW1lUGlja2VyUG9wdXBCdXR0b25MYWJlbHM+XG4gICkge1xuICAgIHRoaXMuX3BvcHVwQnV0dG9uTGFiZWxzID0ge1xuICAgICAgLi4uREVGQVVMVF9QT1BVUF9CVVRUT05fTEFCRUxTLFxuICAgICAgLi4udmFsdWVcbiAgICB9O1xuICB9XG4gIHByaXZhdGUgX3BvcHVwQnV0dG9uTGFiZWxzID0gREVGQVVMVF9QT1BVUF9CVVRUT05fTEFCRUxTO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdGV4dCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIHdoZW4gbm8gc2VsZWN0aW9uIGhhcyBiZWVuIG1hZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFlZWVktTU0tREQgaGg6bW1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cbiAgcHVibGljIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXIgPSAnJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZXJyb3JTdGF0ZU1hdGNoZXIhOiBFcnJvclN0YXRlTWF0Y2hlcjtcblxuICAvKipcbiAgICogRXZlbnRzIGZpcmUgd2hlbiByYXcgdmFsdWUgb2YgcGlja2VyIGlucHV0IGNoYW5nZXMuIE1haW5seSBleGlzdHMgdG8gaGFuZGxlXG4gICAqIHR3by13YXkgYmluZGluZyBvZiBgdmFsdWVgIGlucHV0IHByb3BlcnR5LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SURhdGV0aW1lUGlja2VyVmFsdWU8XG4gICAgYW55LFxuICAgIGFueVxuICA+IHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChJTVBEQ19GT1JNX1JPT1QpIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICBAT3B0aW9uYWwoKSBfcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgIEBPcHRpb25hbCgpIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIG5nQ29udHJvbDogTmdDb250cm9sXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgIF9mb3JtUm9vdCxcbiAgICAgIF9wYXJlbnRGb3JtLFxuICAgICAgX3BhcmVudEZvcm1Hcm91cCxcbiAgICAgIG5nQ29udHJvbFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudmFsdWU7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX3RvZ2dsZUJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKG9wdGlvbnMpO1xuICB9XG5cbiAgLyogTGlmZWN5Y2xlIEhvb2tzICovXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBjb25zdCBuZ0NvbnRyb2wgPSB0aGlzLm5nQ29udHJvbDtcblxuICAgIGlmICghbmdDb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzQ29udHJvbCAhPT0gbmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5fcHJldmlvdXNDb250cm9sICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgbmdDb250cm9sLmRpc2FibGVkICE9PSBudWxsICYmXG4gICAgICAgIG5nQ29udHJvbC5kaXNhYmxlZCAhPT0gdGhpcy5kaXNhYmxlZFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBuZ0NvbnRyb2w/LmRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wcmV2aW91c0NvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbDtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gTWFuYWdpbmcgZGlzYWJsZWQgc3RhdGUgaXMgaGFuZGxlZCB2aWEgdGhlIGBtaXhpbkRpc2FibGVkYCBtaXhpbi9nZW5lcmF0b3IsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHNpZ25hbFxuICAgIC8vIHRvIHRoZSBwYXJlbnQgZm9ybSBmaWVsZCBzbyBpdCBjYW4gcnVuIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBkaXNhYmxlZCBzdGF0ZSBpcyBjaGFuZ2VkLlxuICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddKSB7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kYXRldGltZVBpY2tlckNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKHYpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgICAgIHRoaXMuX3VwZGF0ZURpc3BsYXllZFZhbHVlKHYpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiBDb250cm9sVmFsdWVBY2Nlc3NvciAqL1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kYXRldGltZVBpY2tlckNvbnRyb2wuc2V0VmFsdWUob2JqLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jdmFPbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmN2YU9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcblxuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmRhdGV0aW1lUGlja2VyQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZXRpbWVQaWNrZXJDb250cm9sLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyogSW1wZGNGb3JtRmllbGRDb250cm9sICovXG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBJRGF0ZXRpbWVQaWNrZXJWYWx1ZTxhbnksIGFueT4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5kYXRldGltZVBpY2tlckNvbnRyb2wudmFsdWU7XG4gIH1cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogSURhdGV0aW1lUGlja2VyVmFsdWU8YW55LCBhbnk+IHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5kYXRldGltZVBpY2tlckNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHRoaXMuZGF0ZXRpbWVQaWNrZXJDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2lkO1xuICB9XG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy5fdWlkO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcm90ZWN0ZWQgX2lkITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNldCByZXF1aXJlZG5lc3Mgb2YgY29udHJvbCBpbiBhIHRlbXBsYXRlLWJhc2VkIG1hbm5lcjtcbiAgICogbm90IG5lY2Vzc2FyeSB3aGVuIHVzaW5nIHRoZSBBbmd1bGFyIHJlYWN0aXZlIGZvcm1zIEFQSSBhbmQgYHJlcXVpcmVkYCB2YWxpZGF0b3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fcmVxdWlyZWQgPz9cbiAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz9cbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkIHx8IHRoaXMuX2Ryb3Bkb3duT3BlbjtcbiAgfVxuICBwcm90ZWN0ZWQgX2ZvY3VzZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbFR5cGU6IHN0cmluZyA9ICdpbXBkYy1kYXRldGltZS1waWNrZXItaW5wdXQnO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNBZmZpeGVzOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiBJbnRlcm5hbHMgKi9cblxuICBwcm90ZWN0ZWQgZGlzcGxheWVkVmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gIHByb3RlY3RlZCBnZXQgcGxhY2Vob2xkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucGxhY2Vob2xkZXI/LnRyaW0oKSB8fCBgWVlZWS1NTS1ERCR7dGhpcy53aXRoVGltZSA/ICcgaGg6bW0nIDogJyd9YFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVmFsdWUobmV3VmFsdWU6IElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGV0aW1lUGlja2VyQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3BlbkNoYW5nZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9kcm9wZG93bk9wZW4gPSBpc09wZW47XG5cbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB0aGlzLl9vbkZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29uQmx1cigpO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb25Gb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5fZHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLmN2YU9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRGlzcGxheWVkVmFsdWUoXG4gICAgZGF0ZXRpbWVQaWNrZXJWYWx1ZTogSURhdGV0aW1lUGlja2VyVmFsdWU8YW55LCBhbnk+IHwgbnVsbFxuICApOiB2b2lkIHtcbiAgICBsZXQgbmV3VmFsdWUgPSAnJztcbiAgICBpZiAoZGF0ZXRpbWVQaWNrZXJWYWx1ZSkge1xuICAgICAgY29uc3QgY29udmVydGVkRGF0ZVZhbHVlID0gdGhpcy5fbmdiRGF0ZUFkYXB0ZXIuZnJvbU1vZGVsKFxuICAgICAgICBkYXRldGltZVBpY2tlclZhbHVlLmRhdGVcbiAgICAgICk7XG5cbiAgICAgIGlmIChjb252ZXJ0ZWREYXRlVmFsdWUpIHtcbiAgICAgICAgbmV3VmFsdWUgPSB0aGlzLl9kYXRldGltZUZvcm1hdHRlci5mb3JtYXQoY29udmVydGVkRGF0ZVZhbHVlLCB7XG4gICAgICAgICAgdmFsdWU6IHRoaXMud2l0aFRpbWVcbiAgICAgICAgICAgID8gdGhpcy5fbmdiVGltZUFkYXB0ZXIuZnJvbU1vZGVsKGRhdGV0aW1lUGlja2VyVmFsdWUudGltZSlcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICB3aXRoU2Vjb25kczogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwbGF5ZWRWYWx1ZSA9IG5ld1ZhbHVlO1xuICB9XG59XG4iLCI8ZGl2XG4gIG5nYkRyb3Bkb3duXG4gICNuZ2JEcm9wZG93bj1cIm5nYkRyb3Bkb3duXCJcbiAgYXV0b0Nsb3NlPVwib3V0c2lkZVwiXG4gIGNvbnRhaW5lcj1cImJvZHlcIlxuICBkcm9wZG93bkNsYXNzPVwiaW1wYXJ0bmVyLWhleFwiXG4gIHBsYWNlbWVudD1cImJvdHRvbSBib3R0b20tc3RhcnQgYm90dG9tLWVuZCB0b3AgdG9wLXN0YXJ0IHRvcC1lbmRcIlxuICAob3BlbkNoYW5nZSk9XCJoYW5kbGVPcGVuQ2hhbmdlKCRldmVudClcIlxuICBjbGFzcz1cImgtMTAwIHctMTAwXCI+XG4gIDxidXR0b25cbiAgICAjdG9nZ2xlQnV0dG9uXG4gICAgY2xhc3M9XCJpbXBkYy1kYXRldGltZS1waWNrZXItLXRvZ2dsZSBidG4gYm9yZGVyLTAgaC0xMDAgdGV4dC1zdGFydFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIChmb2N1cyk9XCJfb25Gb2N1cygpXCJcbiAgICBuZ2JEcm9wZG93blRvZ2dsZT5cbiAgICBAaWYgKCFkaXNwbGF5ZWRWYWx1ZSkge1xuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImltcGRjLWRhdGV0aW1lLXBpY2tlci0tdGV4dCBpbXBkYy1kYXRldGltZS1waWNrZXItLXBsYWNlaG9sZGVyXCJcbiAgICAgID57eyBwbGFjZWhvbGRlclRleHQgfX08L3NwYW5cbiAgICA+XG4gICAgfSBAZWxzZSB7XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiaW1wZGMtZGF0ZXRpbWUtcGlja2VyLS10ZXh0IGltcGRjLWRhdGV0aW1lLXBpY2tlci0tdmFsdWUtdGV4dFwiXG4gICAgICA+e3sgZGlzcGxheWVkVmFsdWUgfX08L3NwYW5cbiAgICA+XG4gICAgfVxuICA8L2J1dHRvbj5cbiAgPGRpdlxuICAgIG5nYkRyb3Bkb3duTWVudVxuICAgIGNsYXNzPVwiaW1wZGMtZGF0ZXRpbWUtcGlja2VyLS1kcm9wZG93biB3LTEwMCBiZy13aGl0ZSBvdmVyZmxvdy15LXZpc2libGUgdGV4dC1ncmF5LTYwMFwiXG4gICAgdGFiaW5kZXg9XCItMVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuZ2JEcm9wZG93bi5pc09wZW4oKVwiPlxuICAgICAgPGltcGRjLWRhdGV0aW1lLXBpY2tlclxuICAgICAgICAjcGlja2VyXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgW21hcmtEYXRlRGlzYWJsZWRdPVwibWFya0RhdGVEaXNhYmxlZFwiXG4gICAgICAgIFt3aXRoVGltZV09XCJ3aXRoVGltZVwiXG4gICAgICAgIFttZXJpZGlhblRvZ2dsZUxhYmVsXT1cIm1lcmlkaWFuVG9nZ2xlTGFiZWxcIlxuICAgICAgICBbdGltZUxheW91dF09XCJ7IGxheW91dDogJ3N0YWNrZWQnLCBib3JkZXI6IHRydWUgfVwiIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYm9yZGVyLWdyYXktMjAwIGJvcmRlci10b3AgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC00IG10LTIgcC00IHctMTAwXCI+XG4gICAgICAgIDxpbXBkYy1kYXRldGltZS1waWNrZXItaW5wdXQtZm9vdGVyXG4gICAgICAgICAgW2RhdGV0aW1lUGlja2VyXT1cInBpY2tlclwiXG4gICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJkYXRldGltZVBpY2tlckNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgIFtjYW5jZWxMYWJlbF09XCJwb3B1cEJ1dHRvbkxhYmVscy5jYW5jZWxMYWJlbFwiXG4gICAgICAgICAgW2NsZWFyTGFiZWxdPVwicG9wdXBCdXR0b25MYWJlbHMuY2xlYXJMYWJlbFwiXG4gICAgICAgICAgW3NhdmVMYWJlbF09XCJwb3B1cEJ1dHRvbkxhYmVscy5zYXZlTGFiZWxcIlxuICAgICAgICAgIChkYXRldGltZVNlbGVjdGVkKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVJlcXVlc3RlZCk9XCJuZ2JEcm9wZG93bi5jbG9zZSgpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './datetime-picker-input.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci1pbnB1dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRldGltZS1waWNrZXItaW5wdXQuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, EventEmitter, Input, Output, inject } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { FormControl } from '@angular/forms';
5
+ import { ButtonModule } from '../../../button';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../button/button.component";
8
+ export class DatetimePickerInputFooterComponent {
9
+ constructor() {
10
+ this._cd = inject(ChangeDetectorRef);
11
+ this._destroyRef = inject(DestroyRef);
12
+ this.datetimePickerFormControl = new FormControl(null);
13
+ this.initialValue = null;
14
+ this.cancelLabel = 'Cancel';
15
+ this.clearLabel = 'Clear';
16
+ this.saveLabel = 'Save';
17
+ this.datetimeSelected = new EventEmitter();
18
+ this.closeRequested = new EventEmitter();
19
+ }
20
+ ngOnInit() {
21
+ this.datetimePickerFormControl.valueChanges
22
+ .pipe(takeUntilDestroyed(this._destroyRef))
23
+ .subscribe(v => this.datetimePicker.writeValue(v));
24
+ this.datetimePickerFormControl.reset(this.initialValue);
25
+ this.datetimePicker.registerOnChange((value) => {
26
+ this.datetimePickerFormControl.setValue(value, { emitEvent: false });
27
+ this._cd.markForCheck();
28
+ });
29
+ }
30
+ allowSave() {
31
+ const currentValue = this.datetimePickerFormControl.value;
32
+ return (!!currentValue?.date &&
33
+ (!this.datetimePicker.withTime || !!currentValue.time));
34
+ }
35
+ clearAndClose() {
36
+ this.datetimePickerFormControl.reset(null);
37
+ this.saveAndClose();
38
+ }
39
+ saveAndClose() {
40
+ this.datetimeSelected.emit(this.datetimePickerFormControl.value);
41
+ this.closePicker();
42
+ }
43
+ closePicker() {
44
+ this.closeRequested.emit();
45
+ }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerInputFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: DatetimePickerInputFooterComponent, isStandalone: true, selector: "impdc-datetime-picker-input-footer", inputs: { datetimePicker: "datetimePicker", initialValue: "initialValue", cancelLabel: "cancelLabel", clearLabel: "clearLabel", saveLabel: "saveLabel" }, outputs: { datetimeSelected: "datetimeSelected", closeRequested: "closeRequested" }, ngImport: i0, template: "<div class=\"d-flex gap-3\">\n <button class=\"btn btn-link me-auto\" type=\"button\" (click)=\"clearAndClose()\">\n {{ clearLabel }}\n </button>\n <button impdcButton theme=\"secondary\" (click)=\"closePicker()\">\n {{ cancelLabel }}\n </button>\n <button\n impdcButton\n theme=\"primary\"\n [disabled]=\"!allowSave()\"\n (click)=\"saveAndClose()\">\n {{ saveLabel }}\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerInputFooterComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'impdc-datetime-picker-input-footer', standalone: true, imports: [CommonModule, ButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"d-flex gap-3\">\n <button class=\"btn btn-link me-auto\" type=\"button\" (click)=\"clearAndClose()\">\n {{ clearLabel }}\n </button>\n <button impdcButton theme=\"secondary\" (click)=\"closePicker()\">\n {{ cancelLabel }}\n </button>\n <button\n impdcButton\n theme=\"primary\"\n [disabled]=\"!allowSave()\"\n (click)=\"saveAndClose()\">\n {{ saveLabel }}\n </button>\n</div>\n" }]
52
+ }], propDecorators: { datetimePicker: [{
53
+ type: Input,
54
+ args: [{ required: true }]
55
+ }], initialValue: [{
56
+ type: Input
57
+ }], cancelLabel: [{
58
+ type: Input
59
+ }], clearLabel: [{
60
+ type: Input
61
+ }], saveLabel: [{
62
+ type: Input
63
+ }], datetimeSelected: [{
64
+ type: Output
65
+ }], closeRequested: [{
66
+ type: Output
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLWlucHV0LWZvb3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci1pbnB1dC1mb290ZXIvZGF0ZXRpbWUtcGlja2VyLWlucHV0LWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci1pbnB1dC1mb290ZXIvZGF0ZXRpbWUtcGlja2VyLWlucHV0LWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBWS9DLE1BQU0sT0FBTyxrQ0FBa0M7SUFSL0M7UUFTbUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLDhCQUF5QixHQUMxQyxJQUFJLFdBQVcsQ0FBd0MsSUFBSSxDQUFDLENBQUM7UUFNeEQsaUJBQVksR0FBMEMsSUFBSSxDQUFDO1FBRzNELGdCQUFXLEdBQVcsUUFBUSxDQUFDO1FBRy9CLGVBQVUsR0FBVyxPQUFPLENBQUM7UUFHN0IsY0FBUyxHQUFXLE1BQU0sQ0FBQztRQUdsQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFHeEMsQ0FBQztRQUdJLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQXFDM0Q7SUFuQ1EsUUFBUTtRQUNiLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZO2FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDMUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUNsQyxDQUFDLEtBQW9ELEVBQUUsRUFBRTtZQUN2RCxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sU0FBUztRQUNkLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7UUFFMUQsT0FBTyxDQUNMLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSTtZQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FDdkQsQ0FBQztJQUNKLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBaEVVLGtDQUFrQztrR0FBbEMsa0NBQWtDLDZVQzFCL0MsbWFBZUEseURETVksWUFBWSw4QkFBRSxZQUFZOzsyRkFLekIsa0NBQWtDO2tCQVI5QyxTQUFTOytCQUNFLG9DQUFvQyxjQUNsQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVN4QyxjQUFjO3NCQURwQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJbEIsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlVLGdCQUFnQjtzQkFEL0IsTUFBTTtnQkFPUyxjQUFjO3NCQUQ3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9idXR0b24nO1xuaW1wb3J0IHsgSURhdGV0aW1lUGlja2VyVmFsdWUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBEYXRldGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtZGF0ZXRpbWUtcGlja2VyLWlucHV0LWZvb3RlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRldGltZS1waWNrZXItaW5wdXQtZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXRpbWUtcGlja2VyLWlucHV0LWZvb3Rlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRldGltZVBpY2tlcklucHV0Rm9vdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0ZXRpbWVQaWNrZXJGb3JtQ29udHJvbCA9XG4gICAgbmV3IEZvcm1Db250cm9sPElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGw+KG51bGwpO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBkYXRldGltZVBpY2tlciE6IERhdGV0aW1lUGlja2VyQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbml0aWFsVmFsdWU6IElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYW5jZWxMYWJlbDogc3RyaW5nID0gJ0NhbmNlbCc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNsZWFyTGFiZWw6IHN0cmluZyA9ICdDbGVhcic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNhdmVMYWJlbDogc3RyaW5nID0gJ1NhdmUnO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZXRpbWVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SURhdGV0aW1lUGlja2VyVmFsdWU8XG4gICAgYW55LFxuICAgIGFueVxuICA+IHwgbnVsbD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGNsb3NlUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRhdGV0aW1lUGlja2VyRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKHYgPT4gdGhpcy5kYXRldGltZVBpY2tlci53cml0ZVZhbHVlKHYpKTtcbiAgICB0aGlzLmRhdGV0aW1lUGlja2VyRm9ybUNvbnRyb2wucmVzZXQodGhpcy5pbml0aWFsVmFsdWUpO1xuICAgIHRoaXMuZGF0ZXRpbWVQaWNrZXIucmVnaXN0ZXJPbkNoYW5nZShcbiAgICAgICh2YWx1ZTogSURhdGV0aW1lUGlja2VyVmFsdWU8dW5rbm93biwgdW5rbm93bj4gfCBudWxsKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZXRpbWVQaWNrZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFsbG93U2F2ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmRhdGV0aW1lUGlja2VyRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgISFjdXJyZW50VmFsdWU/LmRhdGUgJiZcbiAgICAgICghdGhpcy5kYXRldGltZVBpY2tlci53aXRoVGltZSB8fCAhIWN1cnJlbnRWYWx1ZS50aW1lKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBbmRDbG9zZSgpIHtcbiAgICB0aGlzLmRhdGV0aW1lUGlja2VyRm9ybUNvbnRyb2wucmVzZXQobnVsbCk7XG4gICAgdGhpcy5zYXZlQW5kQ2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQW5kQ2xvc2UoKSB7XG4gICAgdGhpcy5kYXRldGltZVNlbGVjdGVkLmVtaXQodGhpcy5kYXRldGltZVBpY2tlckZvcm1Db250cm9sLnZhbHVlKTtcbiAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VQaWNrZXIoKSB7XG4gICAgdGhpcy5jbG9zZVJlcXVlc3RlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTNcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBtZS1hdXRvXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhckFuZENsb3NlKClcIj5cbiAgICB7eyBjbGVhckxhYmVsIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIGltcGRjQnV0dG9uIHRoZW1lPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNsb3NlUGlja2VyKClcIj5cbiAgICB7eyBjYW5jZWxMYWJlbCB9fVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGltcGRjQnV0dG9uXG4gICAgdGhlbWU9XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiIWFsbG93U2F2ZSgpXCJcbiAgICAoY2xpY2spPVwic2F2ZUFuZENsb3NlKClcIj5cbiAgICB7eyBzYXZlTGFiZWwgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './datetime-picker-input-footer.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci1pbnB1dC1mb290ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZXRpbWUtcGlja2VyLWlucHV0LWZvb3Rlci5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,6 @@
1
+ export * from './datepicker-nav';
2
+ export * from './datepicker-template-host';
3
+ export * from './datetime-picker';
4
+ export * from './datetime-picker-input-footer';
5
+ export * from './datetime-picker-input';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlci1uYXYnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlcGlja2VyLXRlbXBsYXRlLWhvc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRldGltZS1waWNrZXInO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRldGltZS1waWNrZXItaW5wdXQtZm9vdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXRpbWUtcGlja2VyLWlucHV0JztcbiJdfQ==
@@ -0,0 +1,12 @@
1
+ export const DEFAULT_USE_MERIDIAN_LABEL = 'Use 24-hour format';
2
+ export const DEFAULT_MIN_DATE = {
3
+ year: 1900,
4
+ month: 1,
5
+ day: 1
6
+ };
7
+ export const DEFAULT_MAX_DATE = {
8
+ year: 2099,
9
+ month: 12,
10
+ day: 31
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLWRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9kYXRldGltZS1waWNrZXIvY29uc3RhbnRzL2RhdGV0aW1lLXBpY2tlci1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxvQkFBb0IsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBa0I7SUFDN0MsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsQ0FBQztJQUNSLEdBQUcsRUFBRSxDQUFDO0NBQ0UsQ0FBQztBQUNYLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFrQjtJQUM3QyxJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxFQUFFO0lBQ1QsR0FBRyxFQUFFLEVBQUU7Q0FDQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdiRGF0ZVN0cnVjdCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFX01FUklESUFOX0xBQkVMID0gJ1VzZSAyNC1ob3VyIGZvcm1hdCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NSU5fREFURTogTmdiRGF0ZVN0cnVjdCA9IHtcbiAgeWVhcjogMTkwMCxcbiAgbW9udGg6IDEsXG4gIGRheTogMVxufSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BWF9EQVRFOiBOZ2JEYXRlU3RydWN0ID0ge1xuICB5ZWFyOiAyMDk5LFxuICBtb250aDogMTIsXG4gIGRheTogMzFcbn0gYXMgY29uc3Q7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './datetime-picker-defaults';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb25zdGFudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZXRpbWUtcGlja2VyLWRlZmF1bHRzJztcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DatetimePickerComponent, DatetimePickerInputComponent } from './components';
3
+ import * as i0 from "@angular/core";
4
+ const DATETIME_PICKER_DIRECTIVES = [
5
+ DatetimePickerComponent,
6
+ DatetimePickerInputComponent
7
+ ];
8
+ export class DatetimePickerModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerModule, imports: [DatetimePickerComponent,
11
+ DatetimePickerInputComponent], exports: [DatetimePickerComponent,
12
+ DatetimePickerInputComponent] }); }
13
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerModule, imports: [DATETIME_PICKER_DIRECTIVES] }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerModule, decorators: [{
16
+ type: NgModule,
17
+ args: [{
18
+ imports: DATETIME_PICKER_DIRECTIVES,
19
+ exports: DATETIME_PICKER_DIRECTIVES
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM3QixNQUFNLGNBQWMsQ0FBQzs7QUFFdEIsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyx1QkFBdUI7SUFDdkIsNEJBQTRCO0NBQzdCLENBQUM7QUFNRixNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixZQVIvQix1QkFBdUI7WUFDdkIsNEJBQTRCLGFBRDVCLHVCQUF1QjtZQUN2Qiw0QkFBNEI7K0dBT2pCLG9CQUFvQixZQUh0QiwwQkFBMEI7OzJGQUd4QixvQkFBb0I7a0JBSmhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLDBCQUEwQjtvQkFDbkMsT0FBTyxFQUFFLDBCQUEwQjtpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQsXG4gIERhdGV0aW1lUGlja2VySW5wdXRDb21wb25lbnRcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcblxuY29uc3QgREFURVRJTUVfUElDS0VSX0RJUkVDVElWRVMgPSBbXG4gIERhdGV0aW1lUGlja2VyQ29tcG9uZW50LFxuICBEYXRldGltZVBpY2tlcklucHV0Q29tcG9uZW50XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBEQVRFVElNRV9QSUNLRVJfRElSRUNUSVZFUyxcbiAgZXhwb3J0czogREFURVRJTUVfUElDS0VSX0RJUkVDVElWRVNcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVQaWNrZXJNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export { IMPDC_DATETIME_PICKER_FORMATTER_FACTORY, ImpdcDatetimeFormatter, ImpdcDatetimeISOFormatter } from './services';
2
+ export { DatepickerNavComponent, DatetimePickerInputFooterComponent, DatepickerTemplateHostComponent, DatetimePickerComponent, DatetimePickerInputComponent } from './components';
3
+ export * from './datetime-picker.module';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsdUNBQXVDLEVBQ3ZDLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDMUIsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDN0IsTUFBTSxjQUFjLENBQUM7QUFDdEIsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IElEYXRldGltZVBpY2tlclZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQge1xuICBJTVBEQ19EQVRFVElNRV9QSUNLRVJfRk9STUFUVEVSX0ZBQ1RPUlksXG4gIEltcGRjRGF0ZXRpbWVGb3JtYXR0ZXIsXG4gIEltcGRjRGF0ZXRpbWVJU09Gb3JtYXR0ZXJcbn0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5leHBvcnQge1xuICBEYXRlcGlja2VyTmF2Q29tcG9uZW50LFxuICBEYXRldGltZVBpY2tlcklucHV0Rm9vdGVyQ29tcG9uZW50LFxuICBEYXRlcGlja2VyVGVtcGxhdGVIb3N0Q29tcG9uZW50LFxuICBEYXRldGltZVBpY2tlckNvbXBvbmVudCxcbiAgRGF0ZXRpbWVQaWNrZXJJbnB1dENvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRldGltZS1waWNrZXIubW9kdWxlJztcbiJdfQ==