ng-tailwind 5.2.0 → 5.2.2
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.
- package/README.md +24 -24
- package/animations/ngt-angular-animations.d.ts +5 -5
- package/base/ngt-base-ng-model.d.ts +32 -32
- package/components/ngt-action/ngt-action.component.d.ts +30 -30
- package/components/ngt-action/ngt-action.module.d.ts +10 -10
- package/components/ngt-button/ngt-button.component.d.ts +35 -35
- package/components/ngt-button/ngt-button.module.d.ts +10 -10
- package/components/ngt-checkbox/ngt-checkbox.component.d.ts +53 -53
- package/components/ngt-checkbox/ngt-checkbox.module.d.ts +10 -10
- package/components/ngt-content/ngt-content.component.d.ts +12 -12
- package/components/ngt-content/ngt-content.module.d.ts +8 -8
- package/components/ngt-context-menu/ngt-context-menu.component.d.ts +19 -19
- package/components/ngt-context-menu/ngt-context-menu.directive.d.ts +25 -25
- package/components/ngt-context-menu/ngt-context-menu.module.d.ts +10 -10
- package/components/ngt-datatable/ngt-datatable.component.d.ts +125 -125
- package/components/ngt-datatable/ngt-datatable.module.d.ts +25 -25
- package/components/ngt-datatable/ngt-tbody/ngt-tbody.component.d.ts +14 -14
- package/components/ngt-datatable/ngt-td/ngt-td.component.d.ts +14 -14
- package/components/ngt-datatable/ngt-td-check/ngt-td-check.component.d.ts +29 -29
- package/components/ngt-datatable/ngt-th/ngt-th.component.d.ts +55 -55
- package/components/ngt-datatable/ngt-th-check/ngt-th-check.component.d.ts +32 -32
- package/components/ngt-datatable/ngt-thead/ngt-thead.component.d.ts +13 -13
- package/components/ngt-datatable/ngt-tr/ngt-tr.component.d.ts +20 -20
- package/components/ngt-date/ngt-date.component.d.ts +85 -85
- package/components/ngt-date/ngt-date.module.d.ts +13 -13
- package/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.d.ts +8 -8
- package/components/ngt-dropdown/ngt-dropdown.component.d.ts +53 -53
- package/components/ngt-dropdown/ngt-dropdown.module.d.ts +9 -9
- package/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.d.ts +14 -14
- package/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.d.ts +25 -25
- package/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.d.ts +35 -35
- package/components/ngt-dropzone/ngt-dropzone.component.d.ts +95 -95
- package/components/ngt-dropzone/ngt-dropzone.meta.d.ts +27 -27
- package/components/ngt-dropzone/ngt-dropzone.module.d.ts +17 -17
- package/components/ngt-floating-button/ngt-floating-button.component.d.ts +35 -35
- package/components/ngt-floating-button/ngt-floating-button.module.d.ts +10 -10
- package/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.d.ts +10 -10
- package/components/ngt-form/ngt-form.component.d.ts +60 -60
- package/components/ngt-form/ngt-form.module.d.ts +9 -9
- package/components/ngt-header-nav/ngt-header-nav.component.d.ts +14 -14
- package/components/ngt-header-nav/ngt-header-nav.module.d.ts +8 -8
- package/components/ngt-helper/ngt-helper.component.d.ts +25 -25
- package/components/ngt-helper/ngt-helper.module.d.ts +10 -10
- package/components/ngt-input/ngt-input.component.d.ts +129 -129
- package/components/ngt-input/ngt-input.module.d.ts +14 -14
- package/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.d.ts +17 -17
- package/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.d.ts +12 -5
- package/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.d.ts +15 -15
- package/components/ngt-modal/ngt-modal.component.d.ts +31 -31
- package/components/ngt-modal/ngt-modal.module.d.ts +11 -11
- package/components/ngt-multi-select/ngt-multi-select.component.d.ts +116 -116
- package/components/ngt-multi-select/ngt-multi-select.module.d.ts +15 -15
- package/components/ngt-pagination/ngt-pagination.component.d.ts +43 -43
- package/components/ngt-pagination/ngt-pagination.module.d.ts +12 -12
- package/components/ngt-popover/ngt-popover-tooltip/ngt-popover-tooltip.component.d.ts +21 -21
- package/components/ngt-popover/ngt-popover.component.d.ts +31 -31
- package/components/ngt-popover/ngt-popover.directive.d.ts +31 -31
- package/components/ngt-popover/ngt-popover.module.d.ts +11 -11
- package/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.d.ts +12 -12
- package/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.d.ts +12 -12
- package/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.d.ts +18 -18
- package/components/ngt-portlet/ngt-portlet.component.d.ts +20 -20
- package/components/ngt-portlet/ngt-portlet.module.d.ts +13 -13
- package/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.d.ts +9 -9
- package/components/ngt-radio-button/ngt-radio-button.component.d.ts +45 -45
- package/components/ngt-radio-button/ngt-radio-button.module.d.ts +11 -11
- package/components/ngt-section/ngt-section.component.d.ts +38 -38
- package/components/ngt-section/ngt-section.module.d.ts +11 -11
- package/components/ngt-select/ngt-select.component.d.ts +154 -154
- package/components/ngt-select/ngt-select.directive.d.ts +20 -20
- package/components/ngt-select/ngt-select.module.d.ts +16 -16
- package/components/ngt-shining/ngt-shining.component.d.ts +19 -19
- package/components/ngt-shining/ngt-shining.module.d.ts +8 -8
- package/components/ngt-sidenav/ngt-sidenav.component.d.ts +32 -32
- package/components/ngt-sidenav/ngt-sidenav.module.d.ts +8 -8
- package/components/ngt-slider/ngt-slider.component.d.ts +36 -36
- package/components/ngt-slider/ngt-slider.module.d.ts +9 -9
- package/components/ngt-svg/ngt-svg.component.d.ts +13 -13
- package/components/ngt-svg/ngt-svg.module.d.ts +10 -10
- package/components/ngt-tag/ngt-tag.component.d.ts +13 -13
- package/components/ngt-tag/ngt-tag.module.d.ts +9 -9
- package/components/ngt-textarea/ngt-textarea.component.d.ts +49 -49
- package/components/ngt-textarea/ngt-textarea.module.d.ts +13 -13
- package/components/ngt-validation/ngt-validation.component.d.ts +13 -13
- package/components/ngt-validation/ngt-validation.module.d.ts +8 -8
- package/directives/ngt-stylizable/ngt-stylizable.directive.d.ts +68 -68
- package/directives/ngt-stylizable/ngt-stylizable.module.d.ts +8 -8
- package/enums/size.enum.d.ts +8 -8
- package/esm2020/animations/ngt-angular-animations.mjs +34 -34
- package/esm2020/base/ngt-base-ng-model.mjs +90 -90
- package/esm2020/components/ngt-action/ngt-action.component.mjs +96 -96
- package/esm2020/components/ngt-action/ngt-action.module.mjs +28 -28
- package/esm2020/components/ngt-button/ngt-button.component.mjs +142 -142
- package/esm2020/components/ngt-button/ngt-button.module.mjs +28 -28
- package/esm2020/components/ngt-checkbox/ngt-checkbox.component.mjs +192 -192
- package/esm2020/components/ngt-checkbox/ngt-checkbox.module.mjs +28 -28
- package/esm2020/components/ngt-content/ngt-content.component.mjs +32 -32
- package/esm2020/components/ngt-content/ngt-content.module.mjs +20 -20
- package/esm2020/components/ngt-context-menu/ngt-context-menu.component.mjs +25 -25
- package/esm2020/components/ngt-context-menu/ngt-context-menu.directive.mjs +89 -89
- package/esm2020/components/ngt-context-menu/ngt-context-menu.module.mjs +33 -33
- package/esm2020/components/ngt-datatable/ngt-datatable.component.mjs +470 -470
- package/esm2020/components/ngt-datatable/ngt-datatable.module.mjs +99 -99
- package/esm2020/components/ngt-datatable/ngt-tbody/ngt-tbody.component.mjs +57 -57
- package/esm2020/components/ngt-datatable/ngt-td/ngt-td.component.mjs +62 -62
- package/esm2020/components/ngt-datatable/ngt-td-check/ngt-td-check.component.mjs +113 -113
- package/esm2020/components/ngt-datatable/ngt-th/ngt-th.component.mjs +228 -228
- package/esm2020/components/ngt-datatable/ngt-th-check/ngt-th-check.component.mjs +127 -127
- package/esm2020/components/ngt-datatable/ngt-thead/ngt-thead.component.mjs +55 -55
- package/esm2020/components/ngt-datatable/ngt-tr/ngt-tr.component.mjs +86 -86
- package/esm2020/components/ngt-date/ngt-date.component.mjs +435 -435
- package/esm2020/components/ngt-date/ngt-date.module.mjs +40 -40
- package/esm2020/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.mjs +19 -19
- package/esm2020/components/ngt-dropdown/ngt-dropdown.component.mjs +204 -204
- package/esm2020/components/ngt-dropdown/ngt-dropdown.module.mjs +21 -21
- package/esm2020/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.mjs +54 -54
- package/esm2020/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.mjs +69 -66
- package/esm2020/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.mjs +94 -94
- package/esm2020/components/ngt-dropzone/ngt-dropzone.component.mjs +496 -496
- package/esm2020/components/ngt-dropzone/ngt-dropzone.meta.mjs +24 -24
- package/esm2020/components/ngt-dropzone/ngt-dropzone.module.mjs +55 -55
- package/esm2020/components/ngt-floating-button/ngt-floating-button.component.mjs +119 -119
- package/esm2020/components/ngt-floating-button/ngt-floating-button.module.mjs +28 -28
- package/esm2020/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.mjs +22 -22
- package/esm2020/components/ngt-form/ngt-form.component.mjs +207 -207
- package/esm2020/components/ngt-form/ngt-form.module.mjs +29 -29
- package/esm2020/components/ngt-header-nav/ngt-header-nav.component.mjs +39 -39
- package/esm2020/components/ngt-header-nav/ngt-header-nav.module.mjs +20 -20
- package/esm2020/components/ngt-helper/ngt-helper.component.mjs +68 -68
- package/esm2020/components/ngt-helper/ngt-helper.module.mjs +28 -28
- package/esm2020/components/ngt-input/ngt-input.component.mjs +844 -844
- package/esm2020/components/ngt-input/ngt-input.module.mjs +47 -47
- package/esm2020/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.mjs +46 -46
- package/esm2020/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.mjs +33 -11
- package/esm2020/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.mjs +40 -40
- package/esm2020/components/ngt-modal/ngt-modal.component.mjs +122 -122
- package/esm2020/components/ngt-modal/ngt-modal.module.mjs +39 -39
- package/esm2020/components/ngt-multi-select/ngt-multi-select.component.mjs +503 -503
- package/esm2020/components/ngt-multi-select/ngt-multi-select.module.mjs +52 -52
- package/esm2020/components/ngt-pagination/ngt-pagination.component.mjs +162 -162
- package/esm2020/components/ngt-pagination/ngt-pagination.module.mjs +36 -36
- package/esm2020/components/ngt-popover/ngt-popover-tooltip/ngt-popover-tooltip.component.mjs +58 -58
- package/esm2020/components/ngt-popover/ngt-popover.component.mjs +85 -85
- package/esm2020/components/ngt-popover/ngt-popover.directive.mjs +126 -126
- package/esm2020/components/ngt-popover/ngt-popover.module.mjs +36 -36
- package/esm2020/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.mjs +34 -34
- package/esm2020/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.mjs +35 -35
- package/esm2020/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.mjs +57 -57
- package/esm2020/components/ngt-portlet/ngt-portlet.component.mjs +74 -74
- package/esm2020/components/ngt-portlet/ngt-portlet.module.mjs +47 -47
- package/esm2020/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.mjs +19 -19
- package/esm2020/components/ngt-radio-button/ngt-radio-button.component.mjs +153 -153
- package/esm2020/components/ngt-radio-button/ngt-radio-button.module.mjs +29 -29
- package/esm2020/components/ngt-section/ngt-section.component.mjs +151 -151
- package/esm2020/components/ngt-section/ngt-section.module.mjs +32 -32
- package/esm2020/components/ngt-select/ngt-select.component.mjs +670 -670
- package/esm2020/components/ngt-select/ngt-select.directive.mjs +36 -36
- package/esm2020/components/ngt-select/ngt-select.module.mjs +65 -65
- package/esm2020/components/ngt-shining/ngt-shining.component.mjs +40 -40
- package/esm2020/components/ngt-shining/ngt-shining.module.mjs +20 -20
- package/esm2020/components/ngt-sidenav/ngt-sidenav.component.mjs +132 -132
- package/esm2020/components/ngt-sidenav/ngt-sidenav.module.mjs +20 -20
- package/esm2020/components/ngt-slider/ngt-slider.component.mjs +100 -100
- package/esm2020/components/ngt-slider/ngt-slider.module.mjs +24 -24
- package/esm2020/components/ngt-svg/ngt-svg.component.mjs +53 -53
- package/esm2020/components/ngt-svg/ngt-svg.module.mjs +28 -28
- package/esm2020/components/ngt-tag/ngt-tag.component.mjs +37 -37
- package/esm2020/components/ngt-tag/ngt-tag.module.mjs +24 -24
- package/esm2020/components/ngt-textarea/ngt-textarea.component.mjs +238 -238
- package/esm2020/components/ngt-textarea/ngt-textarea.module.mjs +43 -43
- package/esm2020/components/ngt-validation/ngt-validation.component.mjs +26 -26
- package/esm2020/components/ngt-validation/ngt-validation.module.mjs +20 -20
- package/esm2020/directives/ngt-stylizable/ngt-stylizable.directive.mjs +290 -290
- package/esm2020/directives/ngt-stylizable/ngt-stylizable.module.mjs +20 -20
- package/esm2020/enums/size.enum.mjs +11 -11
- package/esm2020/helpers/enum/enum.mjs +7 -7
- package/esm2020/helpers/form/form.mjs +14 -14
- package/esm2020/helpers/input-mask/input-mask.helper.mjs +26 -26
- package/esm2020/helpers/promise/promise-helper.mjs +4 -4
- package/esm2020/helpers/routing/route.mjs +11 -11
- package/esm2020/helpers/uuid.mjs +10 -10
- package/esm2020/ng-tailwind.mjs +4 -4
- package/esm2020/public-api.mjs +127 -127
- package/esm2020/services/http/ngt-attachment-http.service.mjs +3 -3
- package/esm2020/services/http/ngt-http-form.service.mjs +3 -3
- package/esm2020/services/http/ngt-http-resource.service.mjs +3 -3
- package/esm2020/services/http/ngt-http-validation.service.mjs +3 -3
- package/esm2020/services/http/ngt-http.service.mjs +3 -3
- package/esm2020/services/http/ngt-translate.service.mjs +3 -3
- package/esm2020/services/ngt-stylizable/ngt-stylizable.service.mjs +273 -273
- package/esm2020/services/validation/ngt-ability-validation.service.mjs +3 -3
- package/fesm2015/ng-tailwind.mjs +8657 -8632
- package/fesm2015/ng-tailwind.mjs.map +1 -1
- package/fesm2020/ng-tailwind.mjs +8482 -8459
- package/fesm2020/ng-tailwind.mjs.map +1 -1
- package/helpers/enum/enum.d.ts +1 -1
- package/helpers/form/form.d.ts +4 -4
- package/helpers/input-mask/input-mask.helper.d.ts +20 -20
- package/helpers/promise/promise-helper.d.ts +1 -1
- package/helpers/routing/route.d.ts +2 -2
- package/helpers/uuid.d.ts +1 -1
- package/index.d.ts +5 -5
- package/package.json +1 -1
- package/public-api.d.ts +87 -87
- package/services/http/ngt-attachment-http.service.d.ts +9 -9
- package/services/http/ngt-http-form.service.d.ts +5 -5
- package/services/http/ngt-http-resource.service.d.ts +12 -12
- package/services/http/ngt-http-validation.service.d.ts +12 -12
- package/services/http/ngt-http.service.d.ts +27 -27
- package/services/http/ngt-translate.service.d.ts +33 -33
- package/services/ngt-stylizable/ngt-stylizable.service.d.ts +96 -96
- package/services/validation/ngt-ability-validation.service.d.ts +5 -5
|
@@ -1,435 +1,435 @@
|
|
|
1
|
-
import { Component, Host, Input, Optional, Self, SkipSelf, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
|
-
import { ControlContainer, NgForm, Validators } from '@angular/forms';
|
|
3
|
-
import { english } from 'flatpickr/dist/l10n/default.js';
|
|
4
|
-
import { Portuguese } from 'flatpickr/dist/l10n/pt.js';
|
|
5
|
-
import moment from 'moment';
|
|
6
|
-
import { NgtBaseNgModel, NgtMakeProvider } from '../../base/ngt-base-ng-model';
|
|
7
|
-
import { getEnumFromString } from '../../helpers/enum/enum';
|
|
8
|
-
import { applyInputMask, InputMaskEnum } from '../../helpers/input-mask/input-mask.helper';
|
|
9
|
-
import { uuid } from '../../helpers/uuid';
|
|
10
|
-
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/forms";
|
|
13
|
-
import * as i2 from "../../directives/ngt-stylizable/ngt-stylizable.directive";
|
|
14
|
-
import * as i3 from "../ngt-form/ngt-form.component";
|
|
15
|
-
import * as i4 from "../ngt-section/ngt-section.component";
|
|
16
|
-
import * as i5 from "../ngt-modal/ngt-modal.component";
|
|
17
|
-
import * as i6 from "@angular/common";
|
|
18
|
-
import * as i7 from "ng2-flatpickr";
|
|
19
|
-
import * as i8 from "../ngt-validation/ngt-validation.component";
|
|
20
|
-
import * as i9 from "../ngt-shining/ngt-shining.component";
|
|
21
|
-
import * as i10 from "../ngt-helper/ngt-helper.component";
|
|
22
|
-
export class NgtDateComponent extends NgtBaseNgModel {
|
|
23
|
-
constructor(formContainer, injector, ngtStylizableDirective, ngtForm, ngtSection, ngtModal) {
|
|
24
|
-
super();
|
|
25
|
-
this.formContainer = formContainer;
|
|
26
|
-
this.injector = injector;
|
|
27
|
-
this.ngtStylizableDirective = ngtStylizableDirective;
|
|
28
|
-
this.ngtForm = ngtForm;
|
|
29
|
-
this.ngtSection = ngtSection;
|
|
30
|
-
this.ngtModal = ngtModal;
|
|
31
|
-
// Visual
|
|
32
|
-
this.label = "";
|
|
33
|
-
this.placeholder = "dd/mm/yyyy";
|
|
34
|
-
this.helpTextColor = 'text-green-500';
|
|
35
|
-
this.shining = false;
|
|
36
|
-
this.dateFormat = 'd/m/Y H:i';
|
|
37
|
-
this.dateFormatNgModel = 'YYYY-MM-DD HH:mm:00';
|
|
38
|
-
this.showCalendarIcon = false;
|
|
39
|
-
this.isDisabled = false;
|
|
40
|
-
this.isReadonly = false;
|
|
41
|
-
this.time_24hr = true;
|
|
42
|
-
this.enableTime = true;
|
|
43
|
-
this.noCalendar = false;
|
|
44
|
-
this.minuteIncrement = 1;
|
|
45
|
-
this.allowInput = false;
|
|
46
|
-
this.locale = NgtDateLocale.BRAZIL;
|
|
47
|
-
this.allowClear = true;
|
|
48
|
-
// Validation
|
|
49
|
-
this.isRequired = false;
|
|
50
|
-
this.componentReady = false;
|
|
51
|
-
this.nativeName = uuid();
|
|
52
|
-
this.inputProperties = {};
|
|
53
|
-
this.subscriptions = [];
|
|
54
|
-
if (this.ngtForm) {
|
|
55
|
-
this.shining = this.ngtForm.isShining();
|
|
56
|
-
this.subscriptions.push(this.ngtForm.onShiningChange.subscribe((shining) => {
|
|
57
|
-
this.shining = shining;
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
if (this.ngtStylizableDirective) {
|
|
61
|
-
this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
this.ngtStyle = new NgtStylizableService();
|
|
65
|
-
}
|
|
66
|
-
this.ngtStyle.load(this.injector, 'NgtDate', {
|
|
67
|
-
h: 'h-10',
|
|
68
|
-
text: 'text-xs',
|
|
69
|
-
fontCase: '',
|
|
70
|
-
color: {
|
|
71
|
-
text: 'text-gray-800'
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
ngOnChanges(changes) {
|
|
76
|
-
if (changes.isRequired) {
|
|
77
|
-
this.updateValidations();
|
|
78
|
-
}
|
|
79
|
-
if (changes.mode) {
|
|
80
|
-
this.mode = getEnumFromString(changes.mode.currentValue, NgtDateMode);
|
|
81
|
-
}
|
|
82
|
-
if (changes.locale) {
|
|
83
|
-
this.locale = getEnumFromString(changes.locale.currentValue, NgtDateLocale);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
ngOnInit() {
|
|
87
|
-
this.dateConfig = {
|
|
88
|
-
dateFormat: this.dateFormat,
|
|
89
|
-
mode: this.getDateMode(),
|
|
90
|
-
minuteIncrement: this.minuteIncrement,
|
|
91
|
-
minDate: this.minDate,
|
|
92
|
-
maxDate: this.maxDate,
|
|
93
|
-
time_24hr: this.time_24hr,
|
|
94
|
-
enableTime: this.enableTime,
|
|
95
|
-
noCalendar: this.noCalendar,
|
|
96
|
-
allowInput: this.allowInput && !this.enableTime,
|
|
97
|
-
locale: this.getLocale(),
|
|
98
|
-
onChange: (selectedDates, dateStr, instance) => this.onNativeChange(selectedDates, dateStr, instance, true),
|
|
99
|
-
onClose: (selectedDates, dateStr, instance) => this.onNativeChange(selectedDates, dateStr, instance, false),
|
|
100
|
-
};
|
|
101
|
-
if (!this.formContainer) {
|
|
102
|
-
console.error("The element must be inside a <form #form='ngForm'> tag!");
|
|
103
|
-
}
|
|
104
|
-
if (!this.name) {
|
|
105
|
-
console.error("The element must contain a name attribute!");
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
setTimeout(() => {
|
|
109
|
-
this.componentReady = true;
|
|
110
|
-
setTimeout(() => {
|
|
111
|
-
this.initComponent();
|
|
112
|
-
});
|
|
113
|
-
}, 500);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
ngOnDestroy() {
|
|
117
|
-
this.ng2FlatpickrComponent.flatpickr['calendarContainer']?.remove();
|
|
118
|
-
this.destroySubscriptions();
|
|
119
|
-
}
|
|
120
|
-
clearInput(clearInstance = false) {
|
|
121
|
-
this.value = '';
|
|
122
|
-
this.nativeValue = '';
|
|
123
|
-
if (this.ng2FlatpickrComponent && clearInstance) {
|
|
124
|
-
this.ng2FlatpickrComponent.setDateFromInput('');
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
change(value) {
|
|
128
|
-
if (this.componentReady) {
|
|
129
|
-
this.onValueChangeEvent.emit(this.value);
|
|
130
|
-
}
|
|
131
|
-
if (!value || (value instanceof Object && !Object.keys(value).length)) {
|
|
132
|
-
return this.clearInput();
|
|
133
|
-
}
|
|
134
|
-
if (value && value != this.nativeValue) {
|
|
135
|
-
let firstValue = moment(value);
|
|
136
|
-
if ((value instanceof Object && Object.keys(value).length) || (value instanceof Array && value.length)) {
|
|
137
|
-
firstValue = moment(value[0]);
|
|
138
|
-
if (value.length == 2) {
|
|
139
|
-
firstValue = firstValue;
|
|
140
|
-
let secondValue = moment(value[1]);
|
|
141
|
-
if (firstValue.isValid() && secondValue.isValid()) {
|
|
142
|
-
return this.ng2FlatpickrComponent.flatpickr.setDate([
|
|
143
|
-
firstValue.format(this.getMomentDateFormat()),
|
|
144
|
-
secondValue.format(this.getMomentDateFormat())
|
|
145
|
-
], true, this.dateFormat);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
if (firstValue.isValid()) {
|
|
150
|
-
return this.ng2FlatpickrComponent.flatpickr.setDate(firstValue.format(this.getMomentDateFormat()), true, this.dateFormat);
|
|
151
|
-
}
|
|
152
|
-
this.ng2FlatpickrComponent.setDateFromInput('');
|
|
153
|
-
this.clearInput();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
onNativeChange(value, dateStr, instance, triggerClose) {
|
|
157
|
-
if (dateStr && this.allowInput && !this.enableTime && dateStr != this.lastInputedDateString) {
|
|
158
|
-
this.lastInputedDateString = dateStr;
|
|
159
|
-
return this.change(this.convertDateToAmericanFormat(dateStr));
|
|
160
|
-
}
|
|
161
|
-
if (!value || (value instanceof Object && !Object.keys(value).length)) {
|
|
162
|
-
if (triggerClose) {
|
|
163
|
-
instance.close();
|
|
164
|
-
}
|
|
165
|
-
return this.clearInput();
|
|
166
|
-
}
|
|
167
|
-
if (this.mode == NgtDateMode.RANGE) {
|
|
168
|
-
this.nativeValue = [];
|
|
169
|
-
value.forEach(element => {
|
|
170
|
-
element = moment(element);
|
|
171
|
-
if (element && element.isValid()) {
|
|
172
|
-
this.nativeValue.push(element.format(this.dateFormatNgModel));
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else if (value[0]) {
|
|
177
|
-
value = moment(value[0]);
|
|
178
|
-
if (value && value.isValid()) {
|
|
179
|
-
this.nativeValue = value.format(this.dateFormatNgModel);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (this.value != this.nativeValue) {
|
|
183
|
-
this.value = this.nativeValue;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
getNativeValue() {
|
|
187
|
-
let nativeValue = this.nativeValue;
|
|
188
|
-
if (nativeValue && nativeValue.format) {
|
|
189
|
-
nativeValue = nativeValue.format(this.dateFormatNgModel);
|
|
190
|
-
}
|
|
191
|
-
return nativeValue;
|
|
192
|
-
}
|
|
193
|
-
getFormattedNativeValue() {
|
|
194
|
-
let nativeValue = this.nativeValue;
|
|
195
|
-
if (nativeValue && Array.isArray(nativeValue)) {
|
|
196
|
-
let formattedNativeValue = '';
|
|
197
|
-
nativeValue.forEach(element => {
|
|
198
|
-
element = moment(element);
|
|
199
|
-
if (element.format && !this.enableTime) {
|
|
200
|
-
formattedNativeValue += element.format('DD/MM/YYYY') + ' ';
|
|
201
|
-
}
|
|
202
|
-
else if (element.format && this.enableTime) {
|
|
203
|
-
formattedNativeValue += element.format('DD/MM/YYYY HH:mm:00') + ' ';
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
return formattedNativeValue;
|
|
207
|
-
}
|
|
208
|
-
else if (this.dateFormat == 'H:i') {
|
|
209
|
-
return nativeValue;
|
|
210
|
-
}
|
|
211
|
-
else if (nativeValue) {
|
|
212
|
-
nativeValue = moment(nativeValue);
|
|
213
|
-
if (nativeValue.format && !this.enableTime) {
|
|
214
|
-
return nativeValue.format('DD/MM/YYYY') + ' ';
|
|
215
|
-
}
|
|
216
|
-
else if (nativeValue.format && this.enableTime) {
|
|
217
|
-
return nativeValue.format('DD/MM/YYYY HH:mm:00') + ' ';
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return this.placeholder;
|
|
221
|
-
}
|
|
222
|
-
hasErrors() {
|
|
223
|
-
return this.formControl?.errors && (this.formControl?.dirty || (this.formContainer && this.formContainer['submitted']));
|
|
224
|
-
}
|
|
225
|
-
disabled() {
|
|
226
|
-
return this.isDisabled || this.isDisabledByParent();
|
|
227
|
-
}
|
|
228
|
-
initComponent() {
|
|
229
|
-
if (this.formContainer && this.formContainer.control && (this.formControl = this.formContainer.control.get(this.name))) {
|
|
230
|
-
if (this.defaultDate && !this.value) {
|
|
231
|
-
this.value = moment(this.defaultDate).format(this.dateFormatNgModel);
|
|
232
|
-
}
|
|
233
|
-
this.updateValidations();
|
|
234
|
-
if (this.value) {
|
|
235
|
-
this.formControl.markAsDirty();
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
this.formControl.markAsPristine();
|
|
239
|
-
}
|
|
240
|
-
if (this.allowInput && !this.enableTime) {
|
|
241
|
-
this.setupDateInputMask();
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
setupDateInputMask() {
|
|
246
|
-
if (this.locale == NgtDateLocale.BRAZIL) {
|
|
247
|
-
return applyInputMask(this.ng2FlatpickrComponent.flatpickr['input'], InputMaskEnum.DATE, { mask: '99/99/9999' });
|
|
248
|
-
}
|
|
249
|
-
if (this.locale == NgtDateLocale.US) {
|
|
250
|
-
return applyInputMask(this.ng2FlatpickrComponent.flatpickr['input'], InputMaskEnum.DATE, { mask: '9999-99-99' });
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
updateValidations() {
|
|
254
|
-
if (!this.formControl) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
let syncValidators = [];
|
|
258
|
-
if (this.isRequired) {
|
|
259
|
-
syncValidators.push(Validators.required);
|
|
260
|
-
}
|
|
261
|
-
setTimeout(() => {
|
|
262
|
-
this.formControl.setValidators(syncValidators);
|
|
263
|
-
this.formControl.updateValueAndValidity();
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
getLocale() {
|
|
267
|
-
return this.locale == NgtDateLocale.US
|
|
268
|
-
? english
|
|
269
|
-
: Portuguese;
|
|
270
|
-
}
|
|
271
|
-
getDateMode() {
|
|
272
|
-
if (this.mode) {
|
|
273
|
-
if (this.mode == NgtDateMode.RANGE) {
|
|
274
|
-
return 'range';
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
return 'single';
|
|
278
|
-
}
|
|
279
|
-
getMomentDateFormat() {
|
|
280
|
-
let dateFormat = '';
|
|
281
|
-
for (let i = 0; i < this.dateFormat.length; i++) {
|
|
282
|
-
switch (this.dateFormat.charAt(i)) {
|
|
283
|
-
case 'd':
|
|
284
|
-
dateFormat += 'DD';
|
|
285
|
-
break;
|
|
286
|
-
case 'm':
|
|
287
|
-
dateFormat += 'MM';
|
|
288
|
-
break;
|
|
289
|
-
case 'M':
|
|
290
|
-
dateFormat += 'MMM';
|
|
291
|
-
break;
|
|
292
|
-
case 'Y':
|
|
293
|
-
dateFormat += 'YYYY';
|
|
294
|
-
break;
|
|
295
|
-
case '/':
|
|
296
|
-
dateFormat += '/';
|
|
297
|
-
break;
|
|
298
|
-
case '-':
|
|
299
|
-
dateFormat += '-';
|
|
300
|
-
break;
|
|
301
|
-
case ':':
|
|
302
|
-
dateFormat += ':';
|
|
303
|
-
break;
|
|
304
|
-
case 'H':
|
|
305
|
-
dateFormat += 'HH';
|
|
306
|
-
break;
|
|
307
|
-
case 'i':
|
|
308
|
-
dateFormat += 'mm';
|
|
309
|
-
break;
|
|
310
|
-
case 's':
|
|
311
|
-
dateFormat += 'ss';
|
|
312
|
-
break;
|
|
313
|
-
default:
|
|
314
|
-
if (this.dateFormat.charAt(i) != '.') {
|
|
315
|
-
dateFormat += this.dateFormat.charAt(i);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
return dateFormat ? dateFormat : 'DD/MM/YYYY HH:mm:00';
|
|
320
|
-
}
|
|
321
|
-
convertDateToAmericanFormat(dateTimeString) {
|
|
322
|
-
if (this.locale == NgtDateLocale.US) {
|
|
323
|
-
return dateTimeString;
|
|
324
|
-
}
|
|
325
|
-
const splittedDate = dateTimeString.split('/');
|
|
326
|
-
return `${splittedDate[2]}-${splittedDate[1]}-${splittedDate[0]}`;
|
|
327
|
-
}
|
|
328
|
-
isDisabledByParent() {
|
|
329
|
-
return this.ngtForm?.isDisabled
|
|
330
|
-
|| this.ngtSection?.isDisabled
|
|
331
|
-
|| this.ngtModal?.isDisabled;
|
|
332
|
-
}
|
|
333
|
-
destroySubscriptions() {
|
|
334
|
-
this.subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
335
|
-
this.subscriptions = [];
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
NgtDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDateComponent, deps: [{ token: i1.ControlContainer, host: true, optional: true }, { token: i0.Injector }, { token: i2.NgtStylizableDirective, optional: true, self: true }, { token: i3.NgtFormComponent, optional: true, skipSelf: true }, { token: i4.NgtSectionComponent, optional: true, skipSelf: true }, { token: i5.NgtModalComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
339
|
-
NgtDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtDateComponent, selector: "ngt-date", inputs: { label: "label", placeholder: "placeholder", helpTitle: "helpTitle", helpText: "helpText", helpTextColor: "helpTextColor", shining: "shining", dateFormat: "dateFormat", dateFormatNgModel: "dateFormatNgModel", showCalendarIcon: "showCalendarIcon", helperReverseYPosition: "helperReverseYPosition", name: "name", isDisabled: "isDisabled", isReadonly: "isReadonly", mode: "mode", time_24hr: "time_24hr", enableTime: "enableTime", noCalendar: "noCalendar", minuteIncrement: "minuteIncrement", allowInput: "allowInput", locale: "locale", allowClear: "allowClear", minDate: "minDate", maxDate: "maxDate", defaultDate: "defaultDate", isRequired: "isRequired" }, providers: [
|
|
340
|
-
NgtMakeProvider(NgtDateComponent),
|
|
341
|
-
], viewQueries: [{ propertyName: "ng2FlatpickrComponent", first: true, predicate: ["ng2FlatpickrComponent"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label class=\"{{ shining ? '' : 'block' }} mb-2 {{ngtStyle.compile(['text', 'fontCase'])}} flex\" *ngIf=\"label\"\n [hidden]='shining'>\n {{ label }}:\n\n <span class=\"text-red-500 font-bold text-xxs ml-1\" *ngIf=\"isRequired\">*</span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n [helperReverseYPosition]=\"helperReverseYPosition\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<div class=\"relative\" [hidden]='shining || disabled() || isReadonly'>\n <div\n class=\"overflow-hidden {{ ngtStyle.compile(['h', 'color.text']) }} {{ hasErrors() ? 'border-error' : 'border-normal' }}\">\n <ng2-flatpickr class=\"block h-full\" [config]='dateConfig' disabled='true' placeholder=\"{{ placeholder }}\"\n #ng2FlatpickrComponent>\n </ng2-flatpickr>\n\n <div *ngIf=\"allowClear && value\"\n class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer {{showCalendarIcon ? 'mr-5' : 'mr-2'}}\"\n (click)='clearInput(true)'>\n <svg class=\"fill-current text-red-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n </svg>\n </div>\n\n <div *ngIf=\"showCalendarIcon\"\n class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer mr-2\">\n <svg class=\"fill-current text-sm\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M19,4H17V3a1,1,0,0,0-2,0V4H9V3A1,1,0,0,0,7,3V4H5A3,3,0,0,0,2,7V19a3,3,0,0,0,3,3H19a3,3,0,0,0,3-3V7A3,3,0,0,0,19,4Zm1,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V12H20Zm0-9H4V7A1,1,0,0,1,5,6H7V7A1,1,0,0,0,9,7V6h6V7a1,1,0,0,0,2,0V6h2a1,1,0,0,1,1,1Z\" />\n </svg>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf='shining'>\n <div class=\"flex\">\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n </div>\n</ng-container>\n\n<ng-container *ngIf='disabled() || isReadonly'>\n <div\n class=\"{{disabled() ? 'disabledDiv' : ''}} {{ngtStyle.compile(['h'])}} w-full text-xs px-4 rounded appearance-none flex items-center border border-gray-400\">\n {{ getFormattedNativeValue() }}\n </div>\n</ng-container>\n\n<input *ngIf='componentReady' type=\"hidden\" [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\n\n<ng-content></ng-content>\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>\n", styles: [".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:auto;box-sizing:border-box;touch-action:manipulation;background:#fff;box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:30px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\"\";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.rightMost:after{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;user-select:none;overflow:hidden;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:flex;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:flex;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;justify-content:space-around;transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:flex;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:30px;max-height:40px;box-sizing:border-box;overflow:hidden;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{flex:1;width:40%;height:30px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:12px;position:relative;box-sizing:border-box;-webkit-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;user-select:none;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.border-error{border:solid #c53030 1px;background-color:unset!important;border-radius:.25rem}.border-normal{border:solid #cbd5e0 1px;background-color:unset!important;border-radius:.25rem}.ng2-flatpickr-input:focus{outline:none}.ng2-flatpickr-input{border:0;width:100%;height:100%;padding-left:.8rem;font-size:.75rem}.ng2-flatpickr-input-container{height:100%!important}.disabledDiv{background-color:#fafafa}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.Ng2FlatpickrComponent, selector: "ng2-flatpickr", inputs: ["placeholder", "addClass", "hideButton", "tabindex", "config", "setDate"] }, { kind: "component", type: i8.NgtValidationComponent, selector: "ngt-validation", inputs: ["control", "container", "minValue", "minLength"] }, { kind: "component", type: i9.NgtShiningComponent, selector: "ngt-shining", inputs: ["shiningWidth"] }, { kind: "component", type: i10.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }], viewProviders: [
|
|
342
|
-
{ provide: ControlContainer, useExisting: NgForm }
|
|
343
|
-
], encapsulation: i0.ViewEncapsulation.None });
|
|
344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDateComponent, decorators: [{
|
|
345
|
-
type: Component,
|
|
346
|
-
args: [{ selector: 'ngt-date', encapsulation: ViewEncapsulation.None, providers: [
|
|
347
|
-
NgtMakeProvider(NgtDateComponent),
|
|
348
|
-
], viewProviders: [
|
|
349
|
-
{ provide: ControlContainer, useExisting: NgForm }
|
|
350
|
-
], template: "<label class=\"{{ shining ? '' : 'block' }} mb-2 {{ngtStyle.compile(['text', 'fontCase'])}} flex\" *ngIf=\"label\"\n [hidden]='shining'>\n {{ label }}:\n\n <span class=\"text-red-500 font-bold text-xxs ml-1\" *ngIf=\"isRequired\">*</span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n [helperReverseYPosition]=\"helperReverseYPosition\" class=\"ml-1\">\n {{ helpText }}\n </ngt-helper>\n</label>\n\n<div class=\"relative\" [hidden]='shining || disabled() || isReadonly'>\n <div\n class=\"overflow-hidden {{ ngtStyle.compile(['h', 'color.text']) }} {{ hasErrors() ? 'border-error' : 'border-normal' }}\">\n <ng2-flatpickr class=\"block h-full\" [config]='dateConfig' disabled='true' placeholder=\"{{ placeholder }}\"\n #ng2FlatpickrComponent>\n </ng2-flatpickr>\n\n <div *ngIf=\"allowClear && value\"\n class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer {{showCalendarIcon ? 'mr-5' : 'mr-2'}}\"\n (click)='clearInput(true)'>\n <svg class=\"fill-current text-red-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n </svg>\n </div>\n\n <div *ngIf=\"showCalendarIcon\"\n class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer mr-2\">\n <svg class=\"fill-current text-sm\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M19,4H17V3a1,1,0,0,0-2,0V4H9V3A1,1,0,0,0,7,3V4H5A3,3,0,0,0,2,7V19a3,3,0,0,0,3,3H19a3,3,0,0,0,3-3V7A3,3,0,0,0,19,4Zm1,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V12H20Zm0-9H4V7A1,1,0,0,1,5,6H7V7A1,1,0,0,0,9,7V6h6V7a1,1,0,0,0,2,0V6h2a1,1,0,0,1,1,1Z\" />\n </svg>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf='shining'>\n <div class=\"flex\">\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n </div>\n</ng-container>\n\n<ng-container *ngIf='disabled() || isReadonly'>\n <div\n class=\"{{disabled() ? 'disabledDiv' : ''}} {{ngtStyle.compile(['h'])}} w-full text-xs px-4 rounded appearance-none flex items-center border border-gray-400\">\n {{ getFormattedNativeValue() }}\n </div>\n</ng-container>\n\n<input *ngIf='componentReady' type=\"hidden\" [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\n\n<ng-content></ng-content>\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>\n", styles: [".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:auto;box-sizing:border-box;touch-action:manipulation;background:#fff;box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:30px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\"\";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.rightMost:after{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;user-select:none;overflow:hidden;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:flex;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:flex;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;justify-content:space-around;transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:flex;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:30px;max-height:40px;box-sizing:border-box;overflow:hidden;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{flex:1;width:40%;height:30px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:12px;position:relative;box-sizing:border-box;-webkit-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;user-select:none;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.border-error{border:solid #c53030 1px;background-color:unset!important;border-radius:.25rem}.border-normal{border:solid #cbd5e0 1px;background-color:unset!important;border-radius:.25rem}.ng2-flatpickr-input:focus{outline:none}.ng2-flatpickr-input{border:0;width:100%;height:100%;padding-left:.8rem;font-size:.75rem}.ng2-flatpickr-input-container{height:100%!important}.disabledDiv{background-color:#fafafa}\n"] }]
|
|
351
|
-
}], ctorParameters: function () { return [{ type: i1.ControlContainer, decorators: [{
|
|
352
|
-
type: Optional
|
|
353
|
-
}, {
|
|
354
|
-
type: Host
|
|
355
|
-
}] }, { type: i0.Injector }, { type: i2.NgtStylizableDirective, decorators: [{
|
|
356
|
-
type: Self
|
|
357
|
-
}, {
|
|
358
|
-
type: Optional
|
|
359
|
-
}] }, { type: i3.NgtFormComponent, decorators: [{
|
|
360
|
-
type: Optional
|
|
361
|
-
}, {
|
|
362
|
-
type: SkipSelf
|
|
363
|
-
}] }, { type: i4.NgtSectionComponent, decorators: [{
|
|
364
|
-
type: Optional
|
|
365
|
-
}, {
|
|
366
|
-
type: SkipSelf
|
|
367
|
-
}] }, { type: i5.NgtModalComponent, decorators: [{
|
|
368
|
-
type: Optional
|
|
369
|
-
}, {
|
|
370
|
-
type: SkipSelf
|
|
371
|
-
}] }]; }, propDecorators: { ng2FlatpickrComponent: [{
|
|
372
|
-
type: ViewChild,
|
|
373
|
-
args: ["ng2FlatpickrComponent", { static: true }]
|
|
374
|
-
}], label: [{
|
|
375
|
-
type: Input
|
|
376
|
-
}], placeholder: [{
|
|
377
|
-
type: Input
|
|
378
|
-
}], helpTitle: [{
|
|
379
|
-
type: Input
|
|
380
|
-
}], helpText: [{
|
|
381
|
-
type: Input
|
|
382
|
-
}], helpTextColor: [{
|
|
383
|
-
type: Input
|
|
384
|
-
}], shining: [{
|
|
385
|
-
type: Input
|
|
386
|
-
}], dateFormat: [{
|
|
387
|
-
type: Input
|
|
388
|
-
}], dateFormatNgModel: [{
|
|
389
|
-
type: Input
|
|
390
|
-
}], showCalendarIcon: [{
|
|
391
|
-
type: Input
|
|
392
|
-
}], helperReverseYPosition: [{
|
|
393
|
-
type: Input
|
|
394
|
-
}], name: [{
|
|
395
|
-
type: Input
|
|
396
|
-
}], isDisabled: [{
|
|
397
|
-
type: Input
|
|
398
|
-
}], isReadonly: [{
|
|
399
|
-
type: Input
|
|
400
|
-
}], mode: [{
|
|
401
|
-
type: Input
|
|
402
|
-
}], time_24hr: [{
|
|
403
|
-
type: Input
|
|
404
|
-
}], enableTime: [{
|
|
405
|
-
type: Input
|
|
406
|
-
}], noCalendar: [{
|
|
407
|
-
type: Input
|
|
408
|
-
}], minuteIncrement: [{
|
|
409
|
-
type: Input
|
|
410
|
-
}], allowInput: [{
|
|
411
|
-
type: Input
|
|
412
|
-
}], locale: [{
|
|
413
|
-
type: Input
|
|
414
|
-
}], allowClear: [{
|
|
415
|
-
type: Input
|
|
416
|
-
}], minDate: [{
|
|
417
|
-
type: Input
|
|
418
|
-
}], maxDate: [{
|
|
419
|
-
type: Input
|
|
420
|
-
}], defaultDate: [{
|
|
421
|
-
type: Input
|
|
422
|
-
}], isRequired: [{
|
|
423
|
-
type: Input
|
|
424
|
-
}] } });
|
|
425
|
-
export var NgtDateLocale;
|
|
426
|
-
(function (NgtDateLocale) {
|
|
427
|
-
NgtDateLocale["BRAZIL"] = "BRAZIL";
|
|
428
|
-
NgtDateLocale["US"] = "US";
|
|
429
|
-
})(NgtDateLocale || (NgtDateLocale = {}));
|
|
430
|
-
export var NgtDateMode;
|
|
431
|
-
(function (NgtDateMode) {
|
|
432
|
-
NgtDateMode["SINGLE"] = "SINGLE";
|
|
433
|
-
NgtDateMode["RANGE"] = "RANGE";
|
|
434
|
-
})(NgtDateMode || (NgtDateMode = {}));
|
|
435
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRhdGUvbmd0LWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRhdGUvbmd0LWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBRUosS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEVBRUosUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUk1QixPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7Ozs7QUFpQjVGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBK0NoRCxZQUVXLGFBQStCLEVBRTlCLFFBQWtCLEVBR2xCLHNCQUE4QyxFQUc5QyxPQUF5QixF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QUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUdVLFVBQVU7c0JBQXpCLEtBQUs7O0FBMFhWLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsMEJBQVMsQ0FBQTtBQUNiLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsZ0NBQWlCLENBQUE7SUFDakIsOEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0Zvcm0sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBlbmdsaXNoIH0gZnJvbSAnZmxhdHBpY2tyL2Rpc3QvbDEwbi9kZWZhdWx0LmpzJztcbmltcG9ydCB7IFBvcnR1Z3Vlc2UgfSBmcm9tICdmbGF0cGlja3IvZGlzdC9sMTBuL3B0LmpzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEZsYXRwaWNrck9wdGlvbnMsIE5nMkZsYXRwaWNrckNvbXBvbmVudCB9IGZyb20gJ25nMi1mbGF0cGlja3InO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5ndEJhc2VOZ01vZGVsLCBOZ3RNYWtlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9iYXNlL25ndC1iYXNlLW5nLW1vZGVsJztcbmltcG9ydCB7IE5ndFN0eWxpemFibGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25ndC1zdHlsaXphYmxlL25ndC1zdHlsaXphYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBnZXRFbnVtRnJvbVN0cmluZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZW51bS9lbnVtJztcbmltcG9ydCB7IGFwcGx5SW5wdXRNYXNrLCBJbnB1dE1hc2tFbnVtIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbnB1dC1tYXNrL2lucHV0LW1hc2suaGVscGVyJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3V1aWQnO1xuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9uZ3QtZm9ybS9uZ3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd0U2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25ndC1zZWN0aW9uL25ndC1zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3RNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL25ndC1tb2RhbC9uZ3QtbW9kYWwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtZGF0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZ3QtZGF0ZS5jb21wb25lbnQuY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTmd0TWFrZVByb3ZpZGVyKE5ndERhdGVDb21wb25lbnQpLFxuICAgIF0sXG4gICAgdmlld1Byb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd0RGF0ZUNvbXBvbmVudCBleHRlbmRzIE5ndEJhc2VOZ01vZGVsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoXCJuZzJGbGF0cGlja3JDb21wb25lbnRcIiwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIG5nMkZsYXRwaWNrckNvbXBvbmVudDogTmcyRmxhdHBpY2tyQ29tcG9uZW50O1xuXG4gICAgLy8gVmlzdWFsXG4gICAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmcgPSBcIlwiO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gXCJkZC9tbS95eXl5XCI7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUaXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWxwVGV4dDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWxwVGV4dENvbG9yOiBzdHJpbmcgPSAndGV4dC1ncmVlbi01MDAnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaGluaW5nID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdkL20vWSBIOmknO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRlRm9ybWF0TmdNb2RlbCA9ICdZWVlZLU1NLUREIEhIOm1tOjAwJztcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0NhbGVuZGFySWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWxwZXJSZXZlcnNlWVBvc2l0aW9uOiBib29sZWFuO1xuXG4gICAgLy8gQmVoYXZpb3JcbiAgICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGlzUmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbW9kZTogTmd0RGF0ZU1vZGU7XG4gICAgQElucHV0KCkgcHVibGljIHRpbWVfMjRocjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIGVuYWJsZVRpbWU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBub0NhbGVuZGFyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIG1pbnV0ZUluY3JlbWVudDogbnVtYmVyID0gMTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWxsb3dJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsb2NhbGU6IE5ndERhdGVMb2NhbGUgPSBOZ3REYXRlTG9jYWxlLkJSQVpJTDtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWxsb3dDbGVhcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIG1pbkRhdGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgbWF4RGF0ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkZWZhdWx0RGF0ZTogc3RyaW5nO1xuXG4gICAgLy8gVmFsaWRhdGlvblxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgbmd0U3R5bGU6IE5ndFN0eWxpemFibGVTZXJ2aWNlO1xuICAgIHB1YmxpYyBkYXRlQ29uZmlnOiBGbGF0cGlja3JPcHRpb25zO1xuICAgIHB1YmxpYyBuYXRpdmVWYWx1ZTogYW55O1xuICAgIHB1YmxpYyBjb21wb25lbnRSZWFkeSA9IGZhbHNlO1xuICAgIHB1YmxpYyBuYXRpdmVOYW1lID0gdXVpZCgpO1xuICAgIHB1YmxpYyBpbnB1dFByb3BlcnRpZXM6IHtcbiAgICAgICAgaHRtbFR5cGU/OiBzdHJpbmc7XG4gICAgICAgIGxlbmd0aD86IG51bWJlcjtcbiAgICB9ID0ge307XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcbiAgICBwcml2YXRlIGxhc3RJbnB1dGVkRGF0ZVN0cmluZzogc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBmb3JtQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKClcbiAgICAgICAgcHJpdmF0ZSBuZ3RTdHlsaXphYmxlRGlyZWN0aXZlOiBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlLFxuXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpXG4gICAgICAgIHByaXZhdGUgbmd0Rm9ybTogTmd0Rm9ybUNvbXBvbmVudCxcblxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwcml2YXRlIG5ndFNlY3Rpb246IE5ndFNlY3Rpb25Db21wb25lbnQsXG5cbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcbiAgICAgICAgcHJpdmF0ZSBuZ3RNb2RhbDogTmd0TW9kYWxDb21wb25lbnRcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5uZ3RGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLnNoaW5pbmcgPSB0aGlzLm5ndEZvcm0uaXNTaGluaW5nKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMubmd0Rm9ybS5vblNoaW5pbmdDaGFuZ2Uuc3Vic2NyaWJlKChzaGluaW5nOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hpbmluZyA9IHNoaW5pbmc7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLm5ndFN0eWxlID0gdGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlLmdldE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5ndFN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5ndFN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndERhdGUnLCB7XG4gICAgICAgICAgICBoOiAnaC0xMCcsXG4gICAgICAgICAgICB0ZXh0OiAndGV4dC14cycsXG4gICAgICAgICAgICBmb250Q2FzZTogJycsXG4gICAgICAgICAgICBjb2xvcjoge1xuICAgICAgICAgICAgICAgIHRleHQ6ICd0ZXh0LWdyYXktODAwJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5tb2RlKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBnZXRFbnVtRnJvbVN0cmluZyhjaGFuZ2VzLm1vZGUuY3VycmVudFZhbHVlLCBOZ3REYXRlTW9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5sb2NhbGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxlID0gZ2V0RW51bUZyb21TdHJpbmcoY2hhbmdlcy5sb2NhbGUuY3VycmVudFZhbHVlLCBOZ3REYXRlTG9jYWxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5kYXRlQ29uZmlnID0ge1xuICAgICAgICAgICAgZGF0ZUZvcm1hdDogdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgbW9kZTogdGhpcy5nZXREYXRlTW9kZSgpLFxuICAgICAgICAgICAgbWludXRlSW5jcmVtZW50OiB0aGlzLm1pbnV0ZUluY3JlbWVudCxcbiAgICAgICAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgICAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZSxcbiAgICAgICAgICAgIHRpbWVfMjRocjogdGhpcy50aW1lXzI0aHIsXG4gICAgICAgICAgICBlbmFibGVUaW1lOiB0aGlzLmVuYWJsZVRpbWUsXG4gICAgICAgICAgICBub0NhbGVuZGFyOiB0aGlzLm5vQ2FsZW5kYXIsXG4gICAgICAgICAgICBhbGxvd0lucHV0OiB0aGlzLmFsbG93SW5wdXQgJiYgIXRoaXMuZW5hYmxlVGltZSxcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5nZXRMb2NhbGUoKSxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoc2VsZWN0ZWREYXRlcywgZGF0ZVN0ciwgaW5zdGFuY2UpID0+IHRoaXMub25OYXRpdmVDaGFuZ2Uoc2VsZWN0ZWREYXRlcywgZGF0ZVN0ciwgaW5zdGFuY2UsIHRydWUpLFxuICAgICAgICAgICAgb25DbG9zZTogKHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHIsIGluc3RhbmNlKSA9PiB0aGlzLm9uTmF0aXZlQ2hhbmdlKHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHIsIGluc3RhbmNlLCBmYWxzZSksXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Db250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgZWxlbWVudCBtdXN0IGJlIGluc2lkZSBhIDxmb3JtICNmb3JtPSduZ0Zvcm0nPiB0YWchXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgZWxlbWVudCBtdXN0IGNvbnRhaW4gYSBuYW1lIGF0dHJpYnV0ZSFcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nMkZsYXRwaWNrckNvbXBvbmVudC5mbGF0cGlja3JbJ2NhbGVuZGFyQ29udGFpbmVyJ10/LnJlbW92ZSgpO1xuXG4gICAgICAgIHRoaXMuZGVzdHJveVN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJJbnB1dChjbGVhckluc3RhbmNlID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMubmcyRmxhdHBpY2tyQ29tcG9uZW50ICYmIGNsZWFySW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubmcyRmxhdHBpY2tyQ29tcG9uZW50LnNldERhdGVGcm9tSW5wdXQoJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlYWR5KSB7XG4gICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgIU9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhcklucHV0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT0gdGhpcy5uYXRpdmVWYWx1ZSkge1xuICAgICAgICAgICAgbGV0IGZpcnN0VmFsdWUgPSBtb21lbnQodmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAoKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGgpIHx8ICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIHZhbHVlLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFZhbHVlID0gbW9tZW50KHZhbHVlWzBdKTtcblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT0gMikge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdFZhbHVlID0gZmlyc3RWYWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgc2Vjb25kVmFsdWUgPSBtb21lbnQodmFsdWVbMV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFZhbHVlLmlzVmFsaWQoKSAmJiBzZWNvbmRWYWx1ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoPGFueT50aGlzLm5nMkZsYXRwaWNrckNvbXBvbmVudC5mbGF0cGlja3IpLnNldERhdGUoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0VmFsdWUuZm9ybWF0KHRoaXMuZ2V0TW9tZW50RGF0ZUZvcm1hdCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRWYWx1ZS5mb3JtYXQodGhpcy5nZXRNb21lbnREYXRlRm9ybWF0KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCB0cnVlLCB0aGlzLmRhdGVGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmlyc3RWYWx1ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDxhbnk+dGhpcy5uZzJGbGF0cGlja3JDb21wb25lbnQuZmxhdHBpY2tyKS5zZXREYXRlKGZpcnN0VmFsdWUuZm9ybWF0KHRoaXMuZ2V0TW9tZW50RGF0ZUZvcm1hdCgpKSwgdHJ1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5uZzJGbGF0cGlja3JDb21wb25lbnQuc2V0RGF0ZUZyb21JbnB1dCgnJyk7XG4gICAgICAgICAgICB0aGlzLmNsZWFySW5wdXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbk5hdGl2ZUNoYW5nZSh2YWx1ZTogYW55LCBkYXRlU3RyOiBzdHJpbmcsIGluc3RhbmNlOiBhbnksIHRyaWdnZXJDbG9zZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoZGF0ZVN0ciAmJiB0aGlzLmFsbG93SW5wdXQgJiYgIXRoaXMuZW5hYmxlVGltZSAmJiBkYXRlU3RyICE9IHRoaXMubGFzdElucHV0ZWREYXRlU3RyaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RJbnB1dGVkRGF0ZVN0cmluZyA9IGRhdGVTdHI7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYW5nZSh0aGlzLmNvbnZlcnREYXRlVG9BbWVyaWNhbkZvcm1hdChkYXRlU3RyKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlIHx8ICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhcklucHV0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb2RlID09IE5ndERhdGVNb2RlLlJBTkdFKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gW107XG5cbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IG1vbWVudChlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUucHVzaChlbGVtZW50LmZvcm1hdCh0aGlzLmRhdGVGb3JtYXROZ01vZGVsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVbMF0pIHtcbiAgICAgICAgICAgIHZhbHVlID0gbW9tZW50KHZhbHVlWzBdKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB2YWx1ZS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0TmdNb2RlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSAhPSB0aGlzLm5hdGl2ZVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5uYXRpdmVWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYXRpdmVWYWx1ZSgpIHtcbiAgICAgICAgbGV0IG5hdGl2ZVZhbHVlOiBhbnkgPSB0aGlzLm5hdGl2ZVZhbHVlO1xuXG4gICAgICAgIGlmIChuYXRpdmVWYWx1ZSAmJiBuYXRpdmVWYWx1ZS5mb3JtYXQpIHtcbiAgICAgICAgICAgIG5hdGl2ZVZhbHVlID0gbmF0aXZlVmFsdWUuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdE5nTW9kZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5hdGl2ZVZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGb3JtYXR0ZWROYXRpdmVWYWx1ZSgpIHtcbiAgICAgICAgbGV0IG5hdGl2ZVZhbHVlOiBhbnkgPSB0aGlzLm5hdGl2ZVZhbHVlO1xuXG4gICAgICAgIGlmIChuYXRpdmVWYWx1ZSAmJiBBcnJheS5pc0FycmF5KG5hdGl2ZVZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IGZvcm1hdHRlZE5hdGl2ZVZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAgICAgICAgICAgbmF0aXZlVmFsdWUuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gbW9tZW50KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybWF0ICYmICF0aGlzLmVuYWJsZVRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTmF0aXZlVmFsdWUgKz0gZWxlbWVudC5mb3JtYXQoJ0REL01NL1lZWVknKSArICcgJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZm9ybWF0ICYmIHRoaXMuZW5hYmxlVGltZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROYXRpdmVWYWx1ZSArPSBlbGVtZW50LmZvcm1hdCgnREQvTU0vWVlZWSBISDptbTowMCcpICsgJyAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkTmF0aXZlVmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlRm9ybWF0ID09ICdIOmknKSB7XG4gICAgICAgICAgICByZXR1cm4gbmF0aXZlVmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAobmF0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgIG5hdGl2ZVZhbHVlID0gbW9tZW50KG5hdGl2ZVZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKG5hdGl2ZVZhbHVlLmZvcm1hdCAmJiAhdGhpcy5lbmFibGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZVZhbHVlLmZvcm1hdCgnREQvTU0vWVlZWScpICsgJyAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChuYXRpdmVWYWx1ZS5mb3JtYXQgJiYgdGhpcy5lbmFibGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZVZhbHVlLmZvcm1hdCgnREQvTU0vWVlZWSBISDptbTowMCcpICsgJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2w/LmVycm9ycyAmJiAodGhpcy5mb3JtQ29udHJvbD8uZGlydHkgfHwgKHRoaXMuZm9ybUNvbnRhaW5lciAmJiB0aGlzLmZvcm1Db250YWluZXJbJ3N1Ym1pdHRlZCddKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZEJ5UGFyZW50KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Q29tcG9uZW50KCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtQ29udGFpbmVyICYmIHRoaXMuZm9ybUNvbnRhaW5lci5jb250cm9sICYmICh0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMubmFtZSkpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0RGF0ZSAmJiAhdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodGhpcy5kZWZhdWx0RGF0ZSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdE5nTW9kZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFsbG93SW5wdXQgJiYgIXRoaXMuZW5hYmxlVGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBEYXRlSW5wdXRNYXNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRGF0ZUlucHV0TWFzaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxlID09IE5ndERhdGVMb2NhbGUuQlJBWklMKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHlJbnB1dE1hc2sodGhpcy5uZzJGbGF0cGlja3JDb21wb25lbnQuZmxhdHBpY2tyWydpbnB1dCddLCBJbnB1dE1hc2tFbnVtLkRBVEUsIHsgbWFzazogJzk5Lzk5Lzk5OTknIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubG9jYWxlID09IE5ndERhdGVMb2NhbGUuVVMpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBseUlucHV0TWFzayh0aGlzLm5nMkZsYXRwaWNrckNvbXBvbmVudC5mbGF0cGlja3JbJ2lucHV0J10sIElucHV0TWFza0VudW0uREFURSwgeyBtYXNrOiAnOTk5OS05OS05OScgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZhbGlkYXRpb25zKCkge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzeW5jVmFsaWRhdG9ycyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHN5bmNWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhzeW5jVmFsaWRhdG9ycyk7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZSA9PSBOZ3REYXRlTG9jYWxlLlVTXG4gICAgICAgICAgICA/IGVuZ2xpc2hcbiAgICAgICAgICAgIDogUG9ydHVndWVzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGVNb2RlKCkge1xuICAgICAgICBpZiAodGhpcy5tb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlID09IE5ndERhdGVNb2RlLlJBTkdFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYW5nZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3NpbmdsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNb21lbnREYXRlRm9ybWF0KCkge1xuICAgICAgICBsZXQgZGF0ZUZvcm1hdCA9ICcnO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRlRm9ybWF0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF0ZUZvcm1hdC5jaGFyQXQoaSkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCArPSAnREQnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCArPSAnTU0nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCArPSAnTU1NJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnWSc6XG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJ1lZWVknO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICcvJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCArPSAnLyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0ICs9ICctJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnOic6XG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJzonO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCArPSAnSEgnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdpJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCArPSAnbW0nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCArPSAnc3MnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlRm9ybWF0LmNoYXJBdChpKSAhPSAnLicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gdGhpcy5kYXRlRm9ybWF0LmNoYXJBdChpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGVGb3JtYXQgPyBkYXRlRm9ybWF0IDogJ0REL01NL1lZWVkgSEg6bW06MDAnO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydERhdGVUb0FtZXJpY2FuRm9ybWF0KGRhdGVUaW1lU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5sb2NhbGUgPT0gTmd0RGF0ZUxvY2FsZS5VUykge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGVUaW1lU3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3BsaXR0ZWREYXRlOiBBcnJheTxzdHJpbmc+ID0gZGF0ZVRpbWVTdHJpbmcuc3BsaXQoJy8nKTtcblxuICAgICAgICByZXR1cm4gYCR7c3BsaXR0ZWREYXRlWzJdfS0ke3NwbGl0dGVkRGF0ZVsxXX0tJHtzcGxpdHRlZERhdGVbMF19YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGlzYWJsZWRCeVBhcmVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmd0Rm9ybT8uaXNEaXNhYmxlZFxuICAgICAgICAgICAgfHwgdGhpcy5uZ3RTZWN0aW9uPy5pc0Rpc2FibGVkXG4gICAgICAgICAgICB8fCB0aGlzLm5ndE1vZGFsPy5pc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIH1cbn1cblxuZXhwb3J0IGVudW0gTmd0RGF0ZUxvY2FsZSB7XG4gICAgQlJBWklMID0gJ0JSQVpJTCcsXG4gICAgVVMgPSAnVVMnXG59XG5cbmV4cG9ydCBlbnVtIE5ndERhdGVNb2RlIHtcbiAgICBTSU5HTEUgPSAnU0lOR0xFJyxcbiAgICBSQU5HRSA9ICdSQU5HRSdcbn1cbiIsIjxsYWJlbCBjbGFzcz1cInt7IHNoaW5pbmcgPyAnJyA6ICdibG9jaycgfX0gbWItMiB7e25ndFN0eWxlLmNvbXBpbGUoWyd0ZXh0JywgJ2ZvbnRDYXNlJ10pfX0gZmxleFwiICpuZ0lmPVwibGFiZWxcIlxuICAgIFtoaWRkZW5dPSdzaGluaW5nJz5cbiAgICB7eyBsYWJlbCB9fTpcblxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwIGZvbnQtYm9sZCB0ZXh0LXh4cyBtbC0xXCIgKm5nSWY9XCJpc1JlcXVpcmVkXCI+Kjwvc3Bhbj5cblxuICAgIDxuZ3QtaGVscGVyICpuZ0lmPVwiaGVscFRleHRcIiBbaGVscFRpdGxlXT1cImhlbHBUaXRsZVwiIFtpY29uQ29sb3JdPVwiaGVscFRleHRDb2xvclwiXG4gICAgICAgIFtoZWxwZXJSZXZlcnNlWVBvc2l0aW9uXT1cImhlbHBlclJldmVyc2VZUG9zaXRpb25cIiBjbGFzcz1cIm1sLTFcIj5cbiAgICAgICAge3sgaGVscFRleHQgfX1cbiAgICA8L25ndC1oZWxwZXI+XG48L2xhYmVsPlxuXG48ZGl2IGNsYXNzPVwicmVsYXRpdmVcIiBbaGlkZGVuXT0nc2hpbmluZyB8fCBkaXNhYmxlZCgpIHx8IGlzUmVhZG9ubHknPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4ge3sgbmd0U3R5bGUuY29tcGlsZShbJ2gnLCAnY29sb3IudGV4dCddKSB9fSB7eyBoYXNFcnJvcnMoKSA/ICdib3JkZXItZXJyb3InIDogJ2JvcmRlci1ub3JtYWwnIH19XCI+XG4gICAgICAgIDxuZzItZmxhdHBpY2tyIGNsYXNzPVwiYmxvY2sgaC1mdWxsXCIgW2NvbmZpZ109J2RhdGVDb25maWcnIGRpc2FibGVkPSd0cnVlJyBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICNuZzJGbGF0cGlja3JDb21wb25lbnQ+XG4gICAgICAgIDwvbmcyLWZsYXRwaWNrcj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWxsb3dDbGVhciAmJiB2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggaC1mdWxsIGFic29sdXRlIGl0ZW1zLWNlbnRlciByaWdodC0wIHRvcC0wIHctYXV0byBjdXJzb3ItcG9pbnRlciB7e3Nob3dDYWxlbmRhckljb24gPyAnbXItNScgOiAnbXItMid9fVwiXG4gICAgICAgICAgICAoY2xpY2spPSdjbGVhcklucHV0KHRydWUpJz5cbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnQgdGV4dC1yZWQtNDAwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjEgMTcuMmwtNS4zLTUuMyA1LjMtNS4zLTEuOC0xLjgtNS4zIDUuNC01LjMtNS4zLTEuOCAxLjcgNS4zIDUuMy01LjMgNS4zTDYuNyAxOWw1LjMtNS4zIDUuMyA1LjMgMS44LTEuOHpcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q2FsZW5kYXJJY29uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBoLWZ1bGwgYWJzb2x1dGUgaXRlbXMtY2VudGVyIHJpZ2h0LTAgdG9wLTAgdy1hdXRvIGN1cnNvci1wb2ludGVyIG1yLTJcIj5cbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnQgdGV4dC1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xOSw0SDE3VjNhMSwxLDAsMCwwLTIsMFY0SDlWM0ExLDEsMCwwLDAsNywzVjRINUEzLDMsMCwwLDAsMiw3VjE5YTMsMywwLDAsMCwzLDNIMTlhMywzLDAsMCwwLDMtM1Y3QTMsMywwLDAsMCwxOSw0Wm0xLDE1YTEsMSwwLDAsMS0xLDFINWExLDEsMCwwLDEtMS0xVjEySDIwWm0wLTlINFY3QTEsMSwwLDAsMSw1LDZIN1Y3QTEsMSwwLDAsMCw5LDdWNmg2VjdhMSwxLDAsMCwwLDIsMFY2aDJhMSwxLDAsMCwxLDEsMVpcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9J3NoaW5pbmcnPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgIDxuZ3Qtc2hpbmluZyBjbGFzcz1cImgtMTAgdy1mdWxsXCI+PC9uZ3Qtc2hpbmluZz5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPSdkaXNhYmxlZCgpIHx8IGlzUmVhZG9ubHknPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ7e2Rpc2FibGVkKCkgPyAnZGlzYWJsZWREaXYnIDogJyd9fSB7e25ndFN0eWxlLmNvbXBpbGUoWydoJ10pfX0gdy1mdWxsIHRleHQteHMgcHgtNCByb3VuZGVkIGFwcGVhcmFuY2Utbm9uZSBmbGV4IGl0ZW1zLWNlbnRlciBib3JkZXIgYm9yZGVyLWdyYXktNDAwXCI+XG4gICAgICAgIHt7IGdldEZvcm1hdHRlZE5hdGl2ZVZhbHVlKCkgfX1cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48aW5wdXQgKm5nSWY9J2NvbXBvbmVudFJlYWR5JyB0eXBlPVwiaGlkZGVuXCIgW25nTW9kZWxdPVwidmFsdWVcIiBbbmFtZV09XCJuYW1lXCIgW3ZhbHVlXT1cInZhbHVlXCI+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjxuZ3QtdmFsaWRhdGlvbiBbY29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtjb250YWluZXJdPVwiZm9ybUNvbnRhaW5lclwiPjwvbmd0LXZhbGlkYXRpb24+XG4iXX0=
|
|
1
|
+
import { Component, Host, Input, Optional, Self, SkipSelf, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { ControlContainer, NgForm, Validators } from '@angular/forms';
|
|
3
|
+
import { english } from 'flatpickr/dist/l10n/default.js';
|
|
4
|
+
import { Portuguese } from 'flatpickr/dist/l10n/pt.js';
|
|
5
|
+
import moment from 'moment';
|
|
6
|
+
import { NgtBaseNgModel, NgtMakeProvider } from '../../base/ngt-base-ng-model';
|
|
7
|
+
import { getEnumFromString } from '../../helpers/enum/enum';
|
|
8
|
+
import { applyInputMask, InputMaskEnum } from '../../helpers/input-mask/input-mask.helper';
|
|
9
|
+
import { uuid } from '../../helpers/uuid';
|
|
10
|
+
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/forms";
|
|
13
|
+
import * as i2 from "../../directives/ngt-stylizable/ngt-stylizable.directive";
|
|
14
|
+
import * as i3 from "../ngt-form/ngt-form.component";
|
|
15
|
+
import * as i4 from "../ngt-section/ngt-section.component";
|
|
16
|
+
import * as i5 from "../ngt-modal/ngt-modal.component";
|
|
17
|
+
import * as i6 from "@angular/common";
|
|
18
|
+
import * as i7 from "ng2-flatpickr";
|
|
19
|
+
import * as i8 from "../ngt-validation/ngt-validation.component";
|
|
20
|
+
import * as i9 from "../ngt-shining/ngt-shining.component";
|
|
21
|
+
import * as i10 from "../ngt-helper/ngt-helper.component";
|
|
22
|
+
export class NgtDateComponent extends NgtBaseNgModel {
|
|
23
|
+
constructor(formContainer, injector, ngtStylizableDirective, ngtForm, ngtSection, ngtModal) {
|
|
24
|
+
super();
|
|
25
|
+
this.formContainer = formContainer;
|
|
26
|
+
this.injector = injector;
|
|
27
|
+
this.ngtStylizableDirective = ngtStylizableDirective;
|
|
28
|
+
this.ngtForm = ngtForm;
|
|
29
|
+
this.ngtSection = ngtSection;
|
|
30
|
+
this.ngtModal = ngtModal;
|
|
31
|
+
// Visual
|
|
32
|
+
this.label = "";
|
|
33
|
+
this.placeholder = "dd/mm/yyyy";
|
|
34
|
+
this.helpTextColor = 'text-green-500';
|
|
35
|
+
this.shining = false;
|
|
36
|
+
this.dateFormat = 'd/m/Y H:i';
|
|
37
|
+
this.dateFormatNgModel = 'YYYY-MM-DD HH:mm:00';
|
|
38
|
+
this.showCalendarIcon = false;
|
|
39
|
+
this.isDisabled = false;
|
|
40
|
+
this.isReadonly = false;
|
|
41
|
+
this.time_24hr = true;
|
|
42
|
+
this.enableTime = true;
|
|
43
|
+
this.noCalendar = false;
|
|
44
|
+
this.minuteIncrement = 1;
|
|
45
|
+
this.allowInput = false;
|
|
46
|
+
this.locale = NgtDateLocale.BRAZIL;
|
|
47
|
+
this.allowClear = true;
|
|
48
|
+
// Validation
|
|
49
|
+
this.isRequired = false;
|
|
50
|
+
this.componentReady = false;
|
|
51
|
+
this.nativeName = uuid();
|
|
52
|
+
this.inputProperties = {};
|
|
53
|
+
this.subscriptions = [];
|
|
54
|
+
if (this.ngtForm) {
|
|
55
|
+
this.shining = this.ngtForm.isShining();
|
|
56
|
+
this.subscriptions.push(this.ngtForm.onShiningChange.subscribe((shining) => {
|
|
57
|
+
this.shining = shining;
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
if (this.ngtStylizableDirective) {
|
|
61
|
+
this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.ngtStyle = new NgtStylizableService();
|
|
65
|
+
}
|
|
66
|
+
this.ngtStyle.load(this.injector, 'NgtDate', {
|
|
67
|
+
h: 'h-10',
|
|
68
|
+
text: 'text-xs',
|
|
69
|
+
fontCase: '',
|
|
70
|
+
color: {
|
|
71
|
+
text: 'text-gray-800'
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
ngOnChanges(changes) {
|
|
76
|
+
if (changes.isRequired) {
|
|
77
|
+
this.updateValidations();
|
|
78
|
+
}
|
|
79
|
+
if (changes.mode) {
|
|
80
|
+
this.mode = getEnumFromString(changes.mode.currentValue, NgtDateMode);
|
|
81
|
+
}
|
|
82
|
+
if (changes.locale) {
|
|
83
|
+
this.locale = getEnumFromString(changes.locale.currentValue, NgtDateLocale);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
ngOnInit() {
|
|
87
|
+
this.dateConfig = {
|
|
88
|
+
dateFormat: this.dateFormat,
|
|
89
|
+
mode: this.getDateMode(),
|
|
90
|
+
minuteIncrement: this.minuteIncrement,
|
|
91
|
+
minDate: this.minDate,
|
|
92
|
+
maxDate: this.maxDate,
|
|
93
|
+
time_24hr: this.time_24hr,
|
|
94
|
+
enableTime: this.enableTime,
|
|
95
|
+
noCalendar: this.noCalendar,
|
|
96
|
+
allowInput: this.allowInput && !this.enableTime,
|
|
97
|
+
locale: this.getLocale(),
|
|
98
|
+
onChange: (selectedDates, dateStr, instance) => this.onNativeChange(selectedDates, dateStr, instance, true),
|
|
99
|
+
onClose: (selectedDates, dateStr, instance) => this.onNativeChange(selectedDates, dateStr, instance, false),
|
|
100
|
+
};
|
|
101
|
+
if (!this.formContainer) {
|
|
102
|
+
console.error("The element must be inside a <form #form='ngForm'> tag!");
|
|
103
|
+
}
|
|
104
|
+
if (!this.name) {
|
|
105
|
+
console.error("The element must contain a name attribute!");
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
setTimeout(() => {
|
|
109
|
+
this.componentReady = true;
|
|
110
|
+
setTimeout(() => {
|
|
111
|
+
this.initComponent();
|
|
112
|
+
});
|
|
113
|
+
}, 500);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
ngOnDestroy() {
|
|
117
|
+
this.ng2FlatpickrComponent.flatpickr['calendarContainer']?.remove();
|
|
118
|
+
this.destroySubscriptions();
|
|
119
|
+
}
|
|
120
|
+
clearInput(clearInstance = false) {
|
|
121
|
+
this.value = '';
|
|
122
|
+
this.nativeValue = '';
|
|
123
|
+
if (this.ng2FlatpickrComponent && clearInstance) {
|
|
124
|
+
this.ng2FlatpickrComponent.setDateFromInput('');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
change(value) {
|
|
128
|
+
if (this.componentReady) {
|
|
129
|
+
this.onValueChangeEvent.emit(this.value);
|
|
130
|
+
}
|
|
131
|
+
if (!value || (value instanceof Object && !Object.keys(value).length)) {
|
|
132
|
+
return this.clearInput();
|
|
133
|
+
}
|
|
134
|
+
if (value && value != this.nativeValue) {
|
|
135
|
+
let firstValue = moment(value);
|
|
136
|
+
if ((value instanceof Object && Object.keys(value).length) || (value instanceof Array && value.length)) {
|
|
137
|
+
firstValue = moment(value[0]);
|
|
138
|
+
if (value.length == 2) {
|
|
139
|
+
firstValue = firstValue;
|
|
140
|
+
let secondValue = moment(value[1]);
|
|
141
|
+
if (firstValue.isValid() && secondValue.isValid()) {
|
|
142
|
+
return this.ng2FlatpickrComponent.flatpickr.setDate([
|
|
143
|
+
firstValue.format(this.getMomentDateFormat()),
|
|
144
|
+
secondValue.format(this.getMomentDateFormat())
|
|
145
|
+
], true, this.dateFormat);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (firstValue.isValid()) {
|
|
150
|
+
return this.ng2FlatpickrComponent.flatpickr.setDate(firstValue.format(this.getMomentDateFormat()), true, this.dateFormat);
|
|
151
|
+
}
|
|
152
|
+
this.ng2FlatpickrComponent.setDateFromInput('');
|
|
153
|
+
this.clearInput();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
onNativeChange(value, dateStr, instance, triggerClose) {
|
|
157
|
+
if (dateStr && this.allowInput && !this.enableTime && dateStr != this.lastInputedDateString) {
|
|
158
|
+
this.lastInputedDateString = dateStr;
|
|
159
|
+
return this.change(this.convertDateToAmericanFormat(dateStr));
|
|
160
|
+
}
|
|
161
|
+
if (!value || (value instanceof Object && !Object.keys(value).length)) {
|
|
162
|
+
if (triggerClose) {
|
|
163
|
+
instance.close();
|
|
164
|
+
}
|
|
165
|
+
return this.clearInput();
|
|
166
|
+
}
|
|
167
|
+
if (this.mode == NgtDateMode.RANGE) {
|
|
168
|
+
this.nativeValue = [];
|
|
169
|
+
value.forEach(element => {
|
|
170
|
+
element = moment(element);
|
|
171
|
+
if (element && element.isValid()) {
|
|
172
|
+
this.nativeValue.push(element.format(this.dateFormatNgModel));
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
else if (value[0]) {
|
|
177
|
+
value = moment(value[0]);
|
|
178
|
+
if (value && value.isValid()) {
|
|
179
|
+
this.nativeValue = value.format(this.dateFormatNgModel);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (this.value != this.nativeValue) {
|
|
183
|
+
this.value = this.nativeValue;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
getNativeValue() {
|
|
187
|
+
let nativeValue = this.nativeValue;
|
|
188
|
+
if (nativeValue && nativeValue.format) {
|
|
189
|
+
nativeValue = nativeValue.format(this.dateFormatNgModel);
|
|
190
|
+
}
|
|
191
|
+
return nativeValue;
|
|
192
|
+
}
|
|
193
|
+
getFormattedNativeValue() {
|
|
194
|
+
let nativeValue = this.nativeValue;
|
|
195
|
+
if (nativeValue && Array.isArray(nativeValue)) {
|
|
196
|
+
let formattedNativeValue = '';
|
|
197
|
+
nativeValue.forEach(element => {
|
|
198
|
+
element = moment(element);
|
|
199
|
+
if (element.format && !this.enableTime) {
|
|
200
|
+
formattedNativeValue += element.format('DD/MM/YYYY') + ' ';
|
|
201
|
+
}
|
|
202
|
+
else if (element.format && this.enableTime) {
|
|
203
|
+
formattedNativeValue += element.format('DD/MM/YYYY HH:mm:00') + ' ';
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
return formattedNativeValue;
|
|
207
|
+
}
|
|
208
|
+
else if (this.dateFormat == 'H:i') {
|
|
209
|
+
return nativeValue;
|
|
210
|
+
}
|
|
211
|
+
else if (nativeValue) {
|
|
212
|
+
nativeValue = moment(nativeValue);
|
|
213
|
+
if (nativeValue.format && !this.enableTime) {
|
|
214
|
+
return nativeValue.format('DD/MM/YYYY') + ' ';
|
|
215
|
+
}
|
|
216
|
+
else if (nativeValue.format && this.enableTime) {
|
|
217
|
+
return nativeValue.format('DD/MM/YYYY HH:mm:00') + ' ';
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return this.placeholder;
|
|
221
|
+
}
|
|
222
|
+
hasErrors() {
|
|
223
|
+
return this.formControl?.errors && (this.formControl?.dirty || (this.formContainer && this.formContainer['submitted']));
|
|
224
|
+
}
|
|
225
|
+
disabled() {
|
|
226
|
+
return this.isDisabled || this.isDisabledByParent();
|
|
227
|
+
}
|
|
228
|
+
initComponent() {
|
|
229
|
+
if (this.formContainer && this.formContainer.control && (this.formControl = this.formContainer.control.get(this.name))) {
|
|
230
|
+
if (this.defaultDate && !this.value) {
|
|
231
|
+
this.value = moment(this.defaultDate).format(this.dateFormatNgModel);
|
|
232
|
+
}
|
|
233
|
+
this.updateValidations();
|
|
234
|
+
if (this.value) {
|
|
235
|
+
this.formControl.markAsDirty();
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
this.formControl.markAsPristine();
|
|
239
|
+
}
|
|
240
|
+
if (this.allowInput && !this.enableTime) {
|
|
241
|
+
this.setupDateInputMask();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
setupDateInputMask() {
|
|
246
|
+
if (this.locale == NgtDateLocale.BRAZIL) {
|
|
247
|
+
return applyInputMask(this.ng2FlatpickrComponent.flatpickr['input'], InputMaskEnum.DATE, { mask: '99/99/9999' });
|
|
248
|
+
}
|
|
249
|
+
if (this.locale == NgtDateLocale.US) {
|
|
250
|
+
return applyInputMask(this.ng2FlatpickrComponent.flatpickr['input'], InputMaskEnum.DATE, { mask: '9999-99-99' });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
updateValidations() {
|
|
254
|
+
if (!this.formControl) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
let syncValidators = [];
|
|
258
|
+
if (this.isRequired) {
|
|
259
|
+
syncValidators.push(Validators.required);
|
|
260
|
+
}
|
|
261
|
+
setTimeout(() => {
|
|
262
|
+
this.formControl.setValidators(syncValidators);
|
|
263
|
+
this.formControl.updateValueAndValidity();
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
getLocale() {
|
|
267
|
+
return this.locale == NgtDateLocale.US
|
|
268
|
+
? english
|
|
269
|
+
: Portuguese;
|
|
270
|
+
}
|
|
271
|
+
getDateMode() {
|
|
272
|
+
if (this.mode) {
|
|
273
|
+
if (this.mode == NgtDateMode.RANGE) {
|
|
274
|
+
return 'range';
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return 'single';
|
|
278
|
+
}
|
|
279
|
+
getMomentDateFormat() {
|
|
280
|
+
let dateFormat = '';
|
|
281
|
+
for (let i = 0; i < this.dateFormat.length; i++) {
|
|
282
|
+
switch (this.dateFormat.charAt(i)) {
|
|
283
|
+
case 'd':
|
|
284
|
+
dateFormat += 'DD';
|
|
285
|
+
break;
|
|
286
|
+
case 'm':
|
|
287
|
+
dateFormat += 'MM';
|
|
288
|
+
break;
|
|
289
|
+
case 'M':
|
|
290
|
+
dateFormat += 'MMM';
|
|
291
|
+
break;
|
|
292
|
+
case 'Y':
|
|
293
|
+
dateFormat += 'YYYY';
|
|
294
|
+
break;
|
|
295
|
+
case '/':
|
|
296
|
+
dateFormat += '/';
|
|
297
|
+
break;
|
|
298
|
+
case '-':
|
|
299
|
+
dateFormat += '-';
|
|
300
|
+
break;
|
|
301
|
+
case ':':
|
|
302
|
+
dateFormat += ':';
|
|
303
|
+
break;
|
|
304
|
+
case 'H':
|
|
305
|
+
dateFormat += 'HH';
|
|
306
|
+
break;
|
|
307
|
+
case 'i':
|
|
308
|
+
dateFormat += 'mm';
|
|
309
|
+
break;
|
|
310
|
+
case 's':
|
|
311
|
+
dateFormat += 'ss';
|
|
312
|
+
break;
|
|
313
|
+
default:
|
|
314
|
+
if (this.dateFormat.charAt(i) != '.') {
|
|
315
|
+
dateFormat += this.dateFormat.charAt(i);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return dateFormat ? dateFormat : 'DD/MM/YYYY HH:mm:00';
|
|
320
|
+
}
|
|
321
|
+
convertDateToAmericanFormat(dateTimeString) {
|
|
322
|
+
if (this.locale == NgtDateLocale.US) {
|
|
323
|
+
return dateTimeString;
|
|
324
|
+
}
|
|
325
|
+
const splittedDate = dateTimeString.split('/');
|
|
326
|
+
return `${splittedDate[2]}-${splittedDate[1]}-${splittedDate[0]}`;
|
|
327
|
+
}
|
|
328
|
+
isDisabledByParent() {
|
|
329
|
+
return this.ngtForm?.isDisabled
|
|
330
|
+
|| this.ngtSection?.isDisabled
|
|
331
|
+
|| this.ngtModal?.isDisabled;
|
|
332
|
+
}
|
|
333
|
+
destroySubscriptions() {
|
|
334
|
+
this.subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
335
|
+
this.subscriptions = [];
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
NgtDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDateComponent, deps: [{ token: i1.ControlContainer, host: true, optional: true }, { token: i0.Injector }, { token: i2.NgtStylizableDirective, optional: true, self: true }, { token: i3.NgtFormComponent, optional: true, skipSelf: true }, { token: i4.NgtSectionComponent, optional: true, skipSelf: true }, { token: i5.NgtModalComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
339
|
+
NgtDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtDateComponent, selector: "ngt-date", inputs: { label: "label", placeholder: "placeholder", helpTitle: "helpTitle", helpText: "helpText", helpTextColor: "helpTextColor", shining: "shining", dateFormat: "dateFormat", dateFormatNgModel: "dateFormatNgModel", showCalendarIcon: "showCalendarIcon", helperReverseYPosition: "helperReverseYPosition", name: "name", isDisabled: "isDisabled", isReadonly: "isReadonly", mode: "mode", time_24hr: "time_24hr", enableTime: "enableTime", noCalendar: "noCalendar", minuteIncrement: "minuteIncrement", allowInput: "allowInput", locale: "locale", allowClear: "allowClear", minDate: "minDate", maxDate: "maxDate", defaultDate: "defaultDate", isRequired: "isRequired" }, providers: [
|
|
340
|
+
NgtMakeProvider(NgtDateComponent),
|
|
341
|
+
], viewQueries: [{ propertyName: "ng2FlatpickrComponent", first: true, predicate: ["ng2FlatpickrComponent"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label class=\"{{ shining ? '' : 'block' }} mb-2 {{ngtStyle.compile(['text', 'fontCase'])}} flex\" *ngIf=\"label\"\r\n [hidden]='shining'>\r\n {{ label }}:\r\n\r\n <span class=\"text-red-500 font-bold text-xxs ml-1\" *ngIf=\"isRequired\">*</span>\r\n\r\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\r\n [helperReverseYPosition]=\"helperReverseYPosition\" class=\"ml-1\">\r\n {{ helpText }}\r\n </ngt-helper>\r\n</label>\r\n\r\n<div class=\"relative\" [hidden]='shining || disabled() || isReadonly'>\r\n <div\r\n class=\"overflow-hidden {{ ngtStyle.compile(['h', 'color.text']) }} {{ hasErrors() ? 'border-error' : 'border-normal' }}\">\r\n <ng2-flatpickr class=\"block h-full\" [config]='dateConfig' disabled='true' placeholder=\"{{ placeholder }}\"\r\n #ng2FlatpickrComponent>\r\n </ng2-flatpickr>\r\n\r\n <div *ngIf=\"allowClear && value\"\r\n class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer {{showCalendarIcon ? 'mr-5' : 'mr-2'}}\"\r\n (click)='clearInput(true)'>\r\n <svg class=\"fill-current text-red-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\r\n </svg>\r\n </div>\r\n\r\n <div *ngIf=\"showCalendarIcon\"\r\n class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer mr-2\">\r\n <svg class=\"fill-current text-sm\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M19,4H17V3a1,1,0,0,0-2,0V4H9V3A1,1,0,0,0,7,3V4H5A3,3,0,0,0,2,7V19a3,3,0,0,0,3,3H19a3,3,0,0,0,3-3V7A3,3,0,0,0,19,4Zm1,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V12H20Zm0-9H4V7A1,1,0,0,1,5,6H7V7A1,1,0,0,0,9,7V6h6V7a1,1,0,0,0,2,0V6h2a1,1,0,0,1,1,1Z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf='shining'>\r\n <div class=\"flex\">\r\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf='disabled() || isReadonly'>\r\n <div\r\n class=\"{{disabled() ? 'disabledDiv' : ''}} {{ngtStyle.compile(['h'])}} w-full text-xs px-4 rounded appearance-none flex items-center border border-gray-400\">\r\n {{ getFormattedNativeValue() }}\r\n </div>\r\n</ng-container>\r\n\r\n<input *ngIf='componentReady' type=\"hidden\" [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\r\n\r\n<ng-content></ng-content>\r\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>\r\n", styles: [".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:auto;box-sizing:border-box;touch-action:manipulation;background:#fff;box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:30px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\"\";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.rightMost:after{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;user-select:none;overflow:hidden;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:flex;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:flex;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;justify-content:space-around;transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:flex;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:30px;max-height:40px;box-sizing:border-box;overflow:hidden;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{flex:1;width:40%;height:30px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:12px;position:relative;box-sizing:border-box;-webkit-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;user-select:none;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.border-error{border:solid #c53030 1px;background-color:unset!important;border-radius:.25rem}.border-normal{border:solid #cbd5e0 1px;background-color:unset!important;border-radius:.25rem}.ng2-flatpickr-input:focus{outline:none}.ng2-flatpickr-input{border:0;width:100%;height:100%;padding-left:.8rem;font-size:.75rem}.ng2-flatpickr-input-container{height:100%!important}.disabledDiv{background-color:#fafafa}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.Ng2FlatpickrComponent, selector: "ng2-flatpickr", inputs: ["placeholder", "addClass", "hideButton", "tabindex", "config", "setDate"] }, { kind: "component", type: i8.NgtValidationComponent, selector: "ngt-validation", inputs: ["control", "container", "minValue", "minLength"] }, { kind: "component", type: i9.NgtShiningComponent, selector: "ngt-shining", inputs: ["shiningWidth"] }, { kind: "component", type: i10.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }], viewProviders: [
|
|
342
|
+
{ provide: ControlContainer, useExisting: NgForm }
|
|
343
|
+
], encapsulation: i0.ViewEncapsulation.None });
|
|
344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDateComponent, decorators: [{
|
|
345
|
+
type: Component,
|
|
346
|
+
args: [{ selector: 'ngt-date', encapsulation: ViewEncapsulation.None, providers: [
|
|
347
|
+
NgtMakeProvider(NgtDateComponent),
|
|
348
|
+
], viewProviders: [
|
|
349
|
+
{ provide: ControlContainer, useExisting: NgForm }
|
|
350
|
+
], template: "<label class=\"{{ shining ? '' : 'block' }} mb-2 {{ngtStyle.compile(['text', 'fontCase'])}} flex\" *ngIf=\"label\"\r\n [hidden]='shining'>\r\n {{ label }}:\r\n\r\n <span class=\"text-red-500 font-bold text-xxs ml-1\" *ngIf=\"isRequired\">*</span>\r\n\r\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\r\n [helperReverseYPosition]=\"helperReverseYPosition\" class=\"ml-1\">\r\n {{ helpText }}\r\n </ngt-helper>\r\n</label>\r\n\r\n<div class=\"relative\" [hidden]='shining || disabled() || isReadonly'>\r\n <div\r\n class=\"overflow-hidden {{ ngtStyle.compile(['h', 'color.text']) }} {{ hasErrors() ? 'border-error' : 'border-normal' }}\">\r\n <ng2-flatpickr class=\"block h-full\" [config]='dateConfig' disabled='true' placeholder=\"{{ placeholder }}\"\r\n #ng2FlatpickrComponent>\r\n </ng2-flatpickr>\r\n\r\n <div *ngIf=\"allowClear && value\"\r\n class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer {{showCalendarIcon ? 'mr-5' : 'mr-2'}}\"\r\n (click)='clearInput(true)'>\r\n <svg class=\"fill-current text-red-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\r\n </svg>\r\n </div>\r\n\r\n <div *ngIf=\"showCalendarIcon\"\r\n class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer mr-2\">\r\n <svg class=\"fill-current text-sm\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M19,4H17V3a1,1,0,0,0-2,0V4H9V3A1,1,0,0,0,7,3V4H5A3,3,0,0,0,2,7V19a3,3,0,0,0,3,3H19a3,3,0,0,0,3-3V7A3,3,0,0,0,19,4Zm1,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V12H20Zm0-9H4V7A1,1,0,0,1,5,6H7V7A1,1,0,0,0,9,7V6h6V7a1,1,0,0,0,2,0V6h2a1,1,0,0,1,1,1Z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf='shining'>\r\n <div class=\"flex\">\r\n <ngt-shining class=\"h-10 w-full\"></ngt-shining>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf='disabled() || isReadonly'>\r\n <div\r\n class=\"{{disabled() ? 'disabledDiv' : ''}} {{ngtStyle.compile(['h'])}} w-full text-xs px-4 rounded appearance-none flex items-center border border-gray-400\">\r\n {{ getFormattedNativeValue() }}\r\n </div>\r\n</ng-container>\r\n\r\n<input *ngIf='componentReady' type=\"hidden\" [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\r\n\r\n<ng-content></ng-content>\r\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>\r\n", styles: [".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:auto;box-sizing:border-box;touch-action:manipulation;background:#fff;box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:30px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\"\";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.rightMost:after{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;user-select:none;overflow:hidden;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:flex;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:flex;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;justify-content:space-around;transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:flex;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:30px;max-height:40px;box-sizing:border-box;overflow:hidden;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{flex:1;width:40%;height:30px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:12px;position:relative;box-sizing:border-box;-webkit-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;user-select:none;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.border-error{border:solid #c53030 1px;background-color:unset!important;border-radius:.25rem}.border-normal{border:solid #cbd5e0 1px;background-color:unset!important;border-radius:.25rem}.ng2-flatpickr-input:focus{outline:none}.ng2-flatpickr-input{border:0;width:100%;height:100%;padding-left:.8rem;font-size:.75rem}.ng2-flatpickr-input-container{height:100%!important}.disabledDiv{background-color:#fafafa}\n"] }]
|
|
351
|
+
}], ctorParameters: function () { return [{ type: i1.ControlContainer, decorators: [{
|
|
352
|
+
type: Optional
|
|
353
|
+
}, {
|
|
354
|
+
type: Host
|
|
355
|
+
}] }, { type: i0.Injector }, { type: i2.NgtStylizableDirective, decorators: [{
|
|
356
|
+
type: Self
|
|
357
|
+
}, {
|
|
358
|
+
type: Optional
|
|
359
|
+
}] }, { type: i3.NgtFormComponent, decorators: [{
|
|
360
|
+
type: Optional
|
|
361
|
+
}, {
|
|
362
|
+
type: SkipSelf
|
|
363
|
+
}] }, { type: i4.NgtSectionComponent, decorators: [{
|
|
364
|
+
type: Optional
|
|
365
|
+
}, {
|
|
366
|
+
type: SkipSelf
|
|
367
|
+
}] }, { type: i5.NgtModalComponent, decorators: [{
|
|
368
|
+
type: Optional
|
|
369
|
+
}, {
|
|
370
|
+
type: SkipSelf
|
|
371
|
+
}] }]; }, propDecorators: { ng2FlatpickrComponent: [{
|
|
372
|
+
type: ViewChild,
|
|
373
|
+
args: ["ng2FlatpickrComponent", { static: true }]
|
|
374
|
+
}], label: [{
|
|
375
|
+
type: Input
|
|
376
|
+
}], placeholder: [{
|
|
377
|
+
type: Input
|
|
378
|
+
}], helpTitle: [{
|
|
379
|
+
type: Input
|
|
380
|
+
}], helpText: [{
|
|
381
|
+
type: Input
|
|
382
|
+
}], helpTextColor: [{
|
|
383
|
+
type: Input
|
|
384
|
+
}], shining: [{
|
|
385
|
+
type: Input
|
|
386
|
+
}], dateFormat: [{
|
|
387
|
+
type: Input
|
|
388
|
+
}], dateFormatNgModel: [{
|
|
389
|
+
type: Input
|
|
390
|
+
}], showCalendarIcon: [{
|
|
391
|
+
type: Input
|
|
392
|
+
}], helperReverseYPosition: [{
|
|
393
|
+
type: Input
|
|
394
|
+
}], name: [{
|
|
395
|
+
type: Input
|
|
396
|
+
}], isDisabled: [{
|
|
397
|
+
type: Input
|
|
398
|
+
}], isReadonly: [{
|
|
399
|
+
type: Input
|
|
400
|
+
}], mode: [{
|
|
401
|
+
type: Input
|
|
402
|
+
}], time_24hr: [{
|
|
403
|
+
type: Input
|
|
404
|
+
}], enableTime: [{
|
|
405
|
+
type: Input
|
|
406
|
+
}], noCalendar: [{
|
|
407
|
+
type: Input
|
|
408
|
+
}], minuteIncrement: [{
|
|
409
|
+
type: Input
|
|
410
|
+
}], allowInput: [{
|
|
411
|
+
type: Input
|
|
412
|
+
}], locale: [{
|
|
413
|
+
type: Input
|
|
414
|
+
}], allowClear: [{
|
|
415
|
+
type: Input
|
|
416
|
+
}], minDate: [{
|
|
417
|
+
type: Input
|
|
418
|
+
}], maxDate: [{
|
|
419
|
+
type: Input
|
|
420
|
+
}], defaultDate: [{
|
|
421
|
+
type: Input
|
|
422
|
+
}], isRequired: [{
|
|
423
|
+
type: Input
|
|
424
|
+
}] } });
|
|
425
|
+
export var NgtDateLocale;
|
|
426
|
+
(function (NgtDateLocale) {
|
|
427
|
+
NgtDateLocale["BRAZIL"] = "BRAZIL";
|
|
428
|
+
NgtDateLocale["US"] = "US";
|
|
429
|
+
})(NgtDateLocale || (NgtDateLocale = {}));
|
|
430
|
+
export var NgtDateMode;
|
|
431
|
+
(function (NgtDateMode) {
|
|
432
|
+
NgtDateMode["SINGLE"] = "SINGLE";
|
|
433
|
+
NgtDateMode["RANGE"] = "RANGE";
|
|
434
|
+
})(NgtDateMode || (NgtDateMode = {}));
|
|
435
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRhdGUvbmd0LWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRhdGUvbmd0LWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBRUosS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEVBRUosUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUk1QixPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7Ozs7QUFpQjVGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBK0NoRCxZQUVXLGFBQStCLEVBRTlCLFFBQWtCLEVBR2xCLHNCQUE4QyxFQUc5QyxPQUF5QixF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QUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUdVLFVBQVU7c0JBQXpCLEtBQUs7O0FBMFhWLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsMEJBQVMsQ0FBQTtBQUNiLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsZ0NBQWlCLENBQUE7SUFDakIsOEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgSG9zdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIFNlbGYsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBlbmdsaXNoIH0gZnJvbSAnZmxhdHBpY2tyL2Rpc3QvbDEwbi9kZWZhdWx0LmpzJztcclxuaW1wb3J0IHsgUG9ydHVndWVzZSB9IGZyb20gJ2ZsYXRwaWNrci9kaXN0L2wxMG4vcHQuanMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEZsYXRwaWNrck9wdGlvbnMsIE5nMkZsYXRwaWNrckNvbXBvbmVudCB9IGZyb20gJ25nMi1mbGF0cGlja3InO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE5ndEJhc2VOZ01vZGVsLCBOZ3RNYWtlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9iYXNlL25ndC1iYXNlLW5nLW1vZGVsJztcclxuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbmd0LXN0eWxpemFibGUvbmd0LXN0eWxpemFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgZ2V0RW51bUZyb21TdHJpbmcgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2VudW0vZW51bSc7XHJcbmltcG9ydCB7IGFwcGx5SW5wdXRNYXNrLCBJbnB1dE1hc2tFbnVtIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbnB1dC1tYXNrL2lucHV0LW1hc2suaGVscGVyJztcclxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdXVpZCc7XHJcbmltcG9ydCB7IE5ndFN0eWxpemFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmd0LXN0eWxpemFibGUvbmd0LXN0eWxpemFibGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE5ndEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9uZ3QtZm9ybS9uZ3QtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ3RTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd0LXNlY3Rpb24vbmd0LXNlY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmd0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9uZ3QtbW9kYWwvbmd0LW1vZGFsLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmd0LWRhdGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL25ndC1kYXRlLmNvbXBvbmVudC5jc3MnXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBOZ3RNYWtlUHJvdmlkZXIoTmd0RGF0ZUNvbXBvbmVudCksXHJcbiAgICBdLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3REYXRlQ29tcG9uZW50IGV4dGVuZHMgTmd0QmFzZU5nTW9kZWwgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBAVmlld0NoaWxkKFwibmcyRmxhdHBpY2tyQ29tcG9uZW50XCIsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBuZzJGbGF0cGlja3JDb21wb25lbnQ6IE5nMkZsYXRwaWNrckNvbXBvbmVudDtcclxuXHJcbiAgICAvLyBWaXN1YWxcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gXCJcIjtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gXCJkZC9tbS95eXl5XCI7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRpdGxlOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWxwVGV4dENvbG9yOiBzdHJpbmcgPSAndGV4dC1ncmVlbi01MDAnO1xyXG4gICAgQElucHV0KCkgcHVibGljIHNoaW5pbmcgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRlRm9ybWF0OiBzdHJpbmcgPSAnZC9tL1kgSDppJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRlRm9ybWF0TmdNb2RlbCA9ICdZWVlZLU1NLUREIEhIOm1tOjAwJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93Q2FsZW5kYXJJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscGVyUmV2ZXJzZVlQb3NpdGlvbjogYm9vbGVhbjtcclxuXHJcbiAgICAvLyBCZWhhdmlvclxyXG4gICAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcHVibGljIG1vZGU6IE5ndERhdGVNb2RlO1xyXG4gICAgQElucHV0KCkgcHVibGljIHRpbWVfMjRocjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZW5hYmxlVGltZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbm9DYWxlbmRhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcHVibGljIG1pbnV0ZUluY3JlbWVudDogbnVtYmVyID0gMTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhbGxvd0lucHV0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbG9jYWxlOiBOZ3REYXRlTG9jYWxlID0gTmd0RGF0ZUxvY2FsZS5CUkFaSUw7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYWxsb3dDbGVhcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbWluRGF0ZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHVibGljIG1heERhdGU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBkZWZhdWx0RGF0ZTogc3RyaW5nO1xyXG5cclxuICAgIC8vIFZhbGlkYXRpb25cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIG5ndFN0eWxlOiBOZ3RTdHlsaXphYmxlU2VydmljZTtcclxuICAgIHB1YmxpYyBkYXRlQ29uZmlnOiBGbGF0cGlja3JPcHRpb25zO1xyXG4gICAgcHVibGljIG5hdGl2ZVZhbHVlOiBhbnk7XHJcbiAgICBwdWJsaWMgY29tcG9uZW50UmVhZHkgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBuYXRpdmVOYW1lID0gdXVpZCgpO1xyXG4gICAgcHVibGljIGlucHV0UHJvcGVydGllczoge1xyXG4gICAgICAgIGh0bWxUeXBlPzogc3RyaW5nO1xyXG4gICAgICAgIGxlbmd0aD86IG51bWJlcjtcclxuICAgIH0gPSB7fTtcclxuXHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuICAgIHByaXZhdGUgbGFzdElucHV0ZWREYXRlU3RyaW5nOiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBIb3N0KClcclxuICAgICAgICBwdWJsaWMgZm9ybUNvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuXHJcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcblxyXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKClcclxuICAgICAgICBwcml2YXRlIG5ndFN0eWxpemFibGVEaXJlY3RpdmU6IE5ndFN0eWxpemFibGVEaXJlY3RpdmUsXHJcblxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpXHJcbiAgICAgICAgcHJpdmF0ZSBuZ3RGb3JtOiBOZ3RGb3JtQ29tcG9uZW50LFxyXG5cclxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxyXG4gICAgICAgIHByaXZhdGUgbmd0U2VjdGlvbjogTmd0U2VjdGlvbkNvbXBvbmVudCxcclxuXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcclxuICAgICAgICBwcml2YXRlIG5ndE1vZGFsOiBOZ3RNb2RhbENvbXBvbmVudFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmd0Rm9ybSkge1xyXG4gICAgICAgICAgICB0aGlzLnNoaW5pbmcgPSB0aGlzLm5ndEZvcm0uaXNTaGluaW5nKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgIHRoaXMubmd0Rm9ybS5vblNoaW5pbmdDaGFuZ2Uuc3Vic2NyaWJlKChzaGluaW5nOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGluaW5nID0gc2hpbmluZztcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmd0U3R5bGUgPSB0aGlzLm5ndFN0eWxpemFibGVEaXJlY3RpdmUuZ2V0Tmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5ndFN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5ndFN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndERhdGUnLCB7XHJcbiAgICAgICAgICAgIGg6ICdoLTEwJyxcclxuICAgICAgICAgICAgdGV4dDogJ3RleHQteHMnLFxyXG4gICAgICAgICAgICBmb250Q2FzZTogJycsXHJcbiAgICAgICAgICAgIGNvbG9yOiB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiAndGV4dC1ncmF5LTgwMCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuaXNSZXF1aXJlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlcy5tb2RlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IGdldEVudW1Gcm9tU3RyaW5nKGNoYW5nZXMubW9kZS5jdXJyZW50VmFsdWUsIE5ndERhdGVNb2RlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLmxvY2FsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2FsZSA9IGdldEVudW1Gcm9tU3RyaW5nKGNoYW5nZXMubG9jYWxlLmN1cnJlbnRWYWx1ZSwgTmd0RGF0ZUxvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmRhdGVDb25maWcgPSB7XHJcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IHRoaXMuZGF0ZUZvcm1hdCxcclxuICAgICAgICAgICAgbW9kZTogdGhpcy5nZXREYXRlTW9kZSgpLFxyXG4gICAgICAgICAgICBtaW51dGVJbmNyZW1lbnQ6IHRoaXMubWludXRlSW5jcmVtZW50LFxyXG4gICAgICAgICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXHJcbiAgICAgICAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZSxcclxuICAgICAgICAgICAgdGltZV8yNGhyOiB0aGlzLnRpbWVfMjRocixcclxuICAgICAgICAgICAgZW5hYmxlVGltZTogdGhpcy5lbmFibGVUaW1lLFxyXG4gICAgICAgICAgICBub0NhbGVuZGFyOiB0aGlzLm5vQ2FsZW5kYXIsXHJcbiAgICAgICAgICAgIGFsbG93SW5wdXQ6IHRoaXMuYWxsb3dJbnB1dCAmJiAhdGhpcy5lbmFibGVUaW1lLFxyXG4gICAgICAgICAgICBsb2NhbGU6IHRoaXMuZ2V0TG9jYWxlKCksXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoc2VsZWN0ZWREYXRlcywgZGF0ZVN0ciwgaW5zdGFuY2UpID0+IHRoaXMub25OYXRpdmVDaGFuZ2Uoc2VsZWN0ZWREYXRlcywgZGF0ZVN0ciwgaW5zdGFuY2UsIHRydWUpLFxyXG4gICAgICAgICAgICBvbkNsb3NlOiAoc2VsZWN0ZWREYXRlcywgZGF0ZVN0ciwgaW5zdGFuY2UpID0+IHRoaXMub25OYXRpdmVDaGFuZ2Uoc2VsZWN0ZWREYXRlcywgZGF0ZVN0ciwgaW5zdGFuY2UsIGZhbHNlKSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZm9ybUNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGVsZW1lbnQgbXVzdCBiZSBpbnNpZGUgYSA8Zm9ybSAjZm9ybT0nbmdGb3JtJz4gdGFnIVwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgZWxlbWVudCBtdXN0IGNvbnRhaW4gYSBuYW1lIGF0dHJpYnV0ZSFcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLm5nMkZsYXRwaWNrckNvbXBvbmVudC5mbGF0cGlja3JbJ2NhbGVuZGFyQ29udGFpbmVyJ10/LnJlbW92ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsZWFySW5wdXQoY2xlYXJJbnN0YW5jZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmcyRmxhdHBpY2tyQ29tcG9uZW50ICYmIGNsZWFySW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5uZzJGbGF0cGlja3JDb21wb25lbnQuc2V0RGF0ZUZyb21JbnB1dCgnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2UodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlYWR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZUV2ZW50LmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXZhbHVlIHx8ICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYXJJbnB1dCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlICE9IHRoaXMubmF0aXZlVmFsdWUpIHtcclxuICAgICAgICAgICAgbGV0IGZpcnN0VmFsdWUgPSBtb21lbnQodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoKSB8fCAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB2YWx1ZS5sZW5ndGgpKSB7XHJcbiAgICAgICAgICAgICAgICBmaXJzdFZhbHVlID0gbW9tZW50KHZhbHVlWzBdKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaXJzdFZhbHVlID0gZmlyc3RWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlY29uZFZhbHVlID0gbW9tZW50KHZhbHVlWzFdKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUuaXNWYWxpZCgpICYmIHNlY29uZFZhbHVlLmlzVmFsaWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDxhbnk+dGhpcy5uZzJGbGF0cGlja3JDb21wb25lbnQuZmxhdHBpY2tyKS5zZXREYXRlKFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0VmFsdWUuZm9ybWF0KHRoaXMuZ2V0TW9tZW50RGF0ZUZvcm1hdCgpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZFZhbHVlLmZvcm1hdCh0aGlzLmdldE1vbWVudERhdGVGb3JtYXQoKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgdHJ1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChmaXJzdFZhbHVlLmlzVmFsaWQoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICg8YW55PnRoaXMubmcyRmxhdHBpY2tyQ29tcG9uZW50LmZsYXRwaWNrcikuc2V0RGF0ZShmaXJzdFZhbHVlLmZvcm1hdCh0aGlzLmdldE1vbWVudERhdGVGb3JtYXQoKSksIHRydWUsIHRoaXMuZGF0ZUZvcm1hdCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMubmcyRmxhdHBpY2tyQ29tcG9uZW50LnNldERhdGVGcm9tSW5wdXQoJycpO1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFySW5wdXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uTmF0aXZlQ2hhbmdlKHZhbHVlOiBhbnksIGRhdGVTdHI6IHN0cmluZywgaW5zdGFuY2U6IGFueSwgdHJpZ2dlckNsb3NlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKGRhdGVTdHIgJiYgdGhpcy5hbGxvd0lucHV0ICYmICF0aGlzLmVuYWJsZVRpbWUgJiYgZGF0ZVN0ciAhPSB0aGlzLmxhc3RJbnB1dGVkRGF0ZVN0cmluZykge1xyXG4gICAgICAgICAgICB0aGlzLmxhc3RJbnB1dGVkRGF0ZVN0cmluZyA9IGRhdGVTdHI7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFuZ2UodGhpcy5jb252ZXJ0RGF0ZVRvQW1lcmljYW5Gb3JtYXQoZGF0ZVN0cikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgIU9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGgpKSB7XHJcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyQ2xvc2UpIHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFySW5wdXQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT0gTmd0RGF0ZU1vZGUuUkFOR0UpIHtcclxuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBtb21lbnQoZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5pc1ZhbGlkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnB1c2goZWxlbWVudC5mb3JtYXQodGhpcy5kYXRlRm9ybWF0TmdNb2RlbCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlWzBdKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gbW9tZW50KHZhbHVlWzBdKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc1ZhbGlkKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB2YWx1ZS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0TmdNb2RlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICE9IHRoaXMubmF0aXZlVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubmF0aXZlVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXROYXRpdmVWYWx1ZSgpIHtcclxuICAgICAgICBsZXQgbmF0aXZlVmFsdWU6IGFueSA9IHRoaXMubmF0aXZlVmFsdWU7XHJcblxyXG4gICAgICAgIGlmIChuYXRpdmVWYWx1ZSAmJiBuYXRpdmVWYWx1ZS5mb3JtYXQpIHtcclxuICAgICAgICAgICAgbmF0aXZlVmFsdWUgPSBuYXRpdmVWYWx1ZS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0TmdNb2RlbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbmF0aXZlVmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEZvcm1hdHRlZE5hdGl2ZVZhbHVlKCkge1xyXG4gICAgICAgIGxldCBuYXRpdmVWYWx1ZTogYW55ID0gdGhpcy5uYXRpdmVWYWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKG5hdGl2ZVZhbHVlICYmIEFycmF5LmlzQXJyYXkobmF0aXZlVmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGxldCBmb3JtYXR0ZWROYXRpdmVWYWx1ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgICAgICAgICBuYXRpdmVWYWx1ZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IG1vbWVudChlbGVtZW50KTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtYXQgJiYgIXRoaXMuZW5hYmxlVGltZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZE5hdGl2ZVZhbHVlICs9IGVsZW1lbnQuZm9ybWF0KCdERC9NTS9ZWVlZJykgKyAnICc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZm9ybWF0ICYmIHRoaXMuZW5hYmxlVGltZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZE5hdGl2ZVZhbHVlICs9IGVsZW1lbnQuZm9ybWF0KCdERC9NTS9ZWVlZIEhIOm1tOjAwJykgKyAnICc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZE5hdGl2ZVZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlRm9ybWF0ID09ICdIOmknKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuYXRpdmVWYWx1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKG5hdGl2ZVZhbHVlKSB7XHJcbiAgICAgICAgICAgIG5hdGl2ZVZhbHVlID0gbW9tZW50KG5hdGl2ZVZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChuYXRpdmVWYWx1ZS5mb3JtYXQgJiYgIXRoaXMuZW5hYmxlVGltZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZVZhbHVlLmZvcm1hdCgnREQvTU0vWVlZWScpICsgJyAnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5hdGl2ZVZhbHVlLmZvcm1hdCAmJiB0aGlzLmVuYWJsZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuYXRpdmVWYWx1ZS5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW06MDAnKSArICcgJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhc0Vycm9ycygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzICYmICh0aGlzLmZvcm1Db250cm9sPy5kaXJ0eSB8fCAodGhpcy5mb3JtQ29udGFpbmVyICYmIHRoaXMuZm9ybUNvbnRhaW5lclsnc3VibWl0dGVkJ10pKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZCB8fCB0aGlzLmlzRGlzYWJsZWRCeVBhcmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdENvbXBvbmVudCgpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtQ29udGFpbmVyICYmIHRoaXMuZm9ybUNvbnRhaW5lci5jb250cm9sICYmICh0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMubmFtZSkpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHREYXRlICYmICF0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KHRoaXMuZGVmYXVsdERhdGUpLmZvcm1hdCh0aGlzLmRhdGVGb3JtYXROZ01vZGVsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9ucygpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dJbnB1dCAmJiAhdGhpcy5lbmFibGVUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwRGF0ZUlucHV0TWFzaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0dXBEYXRlSW5wdXRNYXNrKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmxvY2FsZSA9PSBOZ3REYXRlTG9jYWxlLkJSQVpJTCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXBwbHlJbnB1dE1hc2sodGhpcy5uZzJGbGF0cGlja3JDb21wb25lbnQuZmxhdHBpY2tyWydpbnB1dCddLCBJbnB1dE1hc2tFbnVtLkRBVEUsIHsgbWFzazogJzk5Lzk5Lzk5OTknIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubG9jYWxlID09IE5ndERhdGVMb2NhbGUuVVMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFwcGx5SW5wdXRNYXNrKHRoaXMubmcyRmxhdHBpY2tyQ29tcG9uZW50LmZsYXRwaWNrclsnaW5wdXQnXSwgSW5wdXRNYXNrRW51bS5EQVRFLCB7IG1hc2s6ICc5OTk5LTk5LTk5JyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWxpZGF0aW9ucygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN5bmNWYWxpZGF0b3JzID0gW107XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgc3luY1ZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoc3luY1ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldExvY2FsZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGUgPT0gTmd0RGF0ZUxvY2FsZS5VU1xyXG4gICAgICAgICAgICA/IGVuZ2xpc2hcclxuICAgICAgICAgICAgOiBQb3J0dWd1ZXNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RGF0ZU1vZGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlID09IE5ndERhdGVNb2RlLlJBTkdFKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JhbmdlJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICdzaW5nbGUnO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TW9tZW50RGF0ZUZvcm1hdCgpIHtcclxuICAgICAgICBsZXQgZGF0ZUZvcm1hdCA9ICcnO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0ZUZvcm1hdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF0ZUZvcm1hdC5jaGFyQXQoaSkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJ0REJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ20nOlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJ01NJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJ01NTSc7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdZJzpcclxuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0ICs9ICdZWVlZJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJy8nOlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJy8nO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnLSc6XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCArPSAnLSc7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICc6JzpcclxuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0ICs9ICc6JztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0gnOlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJ0hIJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2knOlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJ21tJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3MnOlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gJ3NzJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZUZvcm1hdC5jaGFyQXQoaSkgIT0gJy4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgKz0gdGhpcy5kYXRlRm9ybWF0LmNoYXJBdChpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRlRm9ybWF0ID8gZGF0ZUZvcm1hdCA6ICdERC9NTS9ZWVlZIEhIOm1tOjAwJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbnZlcnREYXRlVG9BbWVyaWNhbkZvcm1hdChkYXRlVGltZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5sb2NhbGUgPT0gTmd0RGF0ZUxvY2FsZS5VUykge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0ZVRpbWVTdHJpbmc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzcGxpdHRlZERhdGU6IEFycmF5PHN0cmluZz4gPSBkYXRlVGltZVN0cmluZy5zcGxpdCgnLycpO1xyXG5cclxuICAgICAgICByZXR1cm4gYCR7c3BsaXR0ZWREYXRlWzJdfS0ke3NwbGl0dGVkRGF0ZVsxXX0tJHtzcGxpdHRlZERhdGVbMF19YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzRGlzYWJsZWRCeVBhcmVudCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZ3RGb3JtPy5pc0Rpc2FibGVkXHJcbiAgICAgICAgICAgIHx8IHRoaXMubmd0U2VjdGlvbj8uaXNEaXNhYmxlZFxyXG4gICAgICAgICAgICB8fCB0aGlzLm5ndE1vZGFsPy5pc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGVudW0gTmd0RGF0ZUxvY2FsZSB7XHJcbiAgICBCUkFaSUwgPSAnQlJBWklMJyxcclxuICAgIFVTID0gJ1VTJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBOZ3REYXRlTW9kZSB7XHJcbiAgICBTSU5HTEUgPSAnU0lOR0xFJyxcclxuICAgIFJBTkdFID0gJ1JBTkdFJ1xyXG59XHJcbiIsIjxsYWJlbCBjbGFzcz1cInt7IHNoaW5pbmcgPyAnJyA6ICdibG9jaycgfX0gbWItMiB7e25ndFN0eWxlLmNvbXBpbGUoWyd0ZXh0JywgJ2ZvbnRDYXNlJ10pfX0gZmxleFwiICpuZ0lmPVwibGFiZWxcIlxyXG4gICAgW2hpZGRlbl09J3NoaW5pbmcnPlxyXG4gICAge3sgbGFiZWwgfX06XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZm9udC1ib2xkIHRleHQteHhzIG1sLTFcIiAqbmdJZj1cImlzUmVxdWlyZWRcIj4qPC9zcGFuPlxyXG5cclxuICAgIDxuZ3QtaGVscGVyICpuZ0lmPVwiaGVscFRleHRcIiBbaGVscFRpdGxlXT1cImhlbHBUaXRsZVwiIFtpY29uQ29sb3JdPVwiaGVscFRleHRDb2xvclwiXHJcbiAgICAgICAgW2hlbHBlclJldmVyc2VZUG9zaXRpb25dPVwiaGVscGVyUmV2ZXJzZVlQb3NpdGlvblwiIGNsYXNzPVwibWwtMVwiPlxyXG4gICAgICAgIHt7IGhlbHBUZXh0IH19XHJcbiAgICA8L25ndC1oZWxwZXI+XHJcbjwvbGFiZWw+XHJcblxyXG48ZGl2IGNsYXNzPVwicmVsYXRpdmVcIiBbaGlkZGVuXT0nc2hpbmluZyB8fCBkaXNhYmxlZCgpIHx8IGlzUmVhZG9ubHknPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHt7IG5ndFN0eWxlLmNvbXBpbGUoWydoJywgJ2NvbG9yLnRleHQnXSkgfX0ge3sgaGFzRXJyb3JzKCkgPyAnYm9yZGVyLWVycm9yJyA6ICdib3JkZXItbm9ybWFsJyB9fVwiPlxyXG4gICAgICAgIDxuZzItZmxhdHBpY2tyIGNsYXNzPVwiYmxvY2sgaC1mdWxsXCIgW2NvbmZpZ109J2RhdGVDb25maWcnIGRpc2FibGVkPSd0cnVlJyBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcclxuICAgICAgICAgICAgI25nMkZsYXRwaWNrckNvbXBvbmVudD5cclxuICAgICAgICA8L25nMi1mbGF0cGlja3I+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd0NsZWFyICYmIHZhbHVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGgtZnVsbCBhYnNvbHV0ZSBpdGVtcy1jZW50ZXIgcmlnaHQtMCB0b3AtMCB3LWF1dG8gY3Vyc29yLXBvaW50ZXIge3tzaG93Q2FsZW5kYXJJY29uID8gJ21yLTUnIDogJ21yLTInfX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPSdjbGVhcklucHV0KHRydWUpJz5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImZpbGwtY3VycmVudCB0ZXh0LXJlZC00MDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjEgMTcuMmwtNS4zLTUuMyA1LjMtNS4zLTEuOC0xLjgtNS4zIDUuNC01LjMtNS4zLTEuOCAxLjcgNS4zIDUuMy01LjMgNS4zTDYuNyAxOWw1LjMtNS4zIDUuMyA1LjMgMS44LTEuOHpcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDYWxlbmRhckljb25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggaC1mdWxsIGFic29sdXRlIGl0ZW1zLWNlbnRlciByaWdodC0wIHRvcC0wIHctYXV0byBjdXJzb3ItcG9pbnRlciBtci0yXCI+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnQgdGV4dC1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTksNEgxN1YzYTEsMSwwLDAsMC0yLDBWNEg5VjNBMSwxLDAsMCwwLDcsM1Y0SDVBMywzLDAsMCwwLDIsN1YxOWEzLDMsMCwwLDAsMywzSDE5YTMsMywwLDAsMCwzLTNWN0EzLDMsMCwwLDAsMTksNFptMSwxNWExLDEsMCwwLDEtMSwxSDVhMSwxLDAsMCwxLTEtMVYxMkgyMFptMC05SDRWN0ExLDEsMCwwLDEsNSw2SDdWN0ExLDEsMCwwLDAsOSw3VjZoNlY3YTEsMSwwLDAsMCwyLDBWNmgyYTEsMSwwLDAsMSwxLDFaXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPSdzaGluaW5nJz5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgPG5ndC1zaGluaW5nIGNsYXNzPVwiaC0xMCB3LWZ1bGxcIj48L25ndC1zaGluaW5nPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj0nZGlzYWJsZWQoKSB8fCBpc1JlYWRvbmx5Jz5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInt7ZGlzYWJsZWQoKSA/ICdkaXNhYmxlZERpdicgOiAnJ319IHt7bmd0U3R5bGUuY29tcGlsZShbJ2gnXSl9fSB3LWZ1bGwgdGV4dC14cyBweC00IHJvdW5kZWQgYXBwZWFyYW5jZS1ub25lIGZsZXggaXRlbXMtY2VudGVyIGJvcmRlciBib3JkZXItZ3JheS00MDBcIj5cclxuICAgICAgICB7eyBnZXRGb3JtYXR0ZWROYXRpdmVWYWx1ZSgpIH19XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48aW5wdXQgKm5nSWY9J2NvbXBvbmVudFJlYWR5JyB0eXBlPVwiaGlkZGVuXCIgW25nTW9kZWxdPVwidmFsdWVcIiBbbmFtZV09XCJuYW1lXCIgW3ZhbHVlXT1cInZhbHVlXCI+XHJcblxyXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjxuZ3QtdmFsaWRhdGlvbiBbY29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtjb250YWluZXJdPVwiZm9ybUNvbnRhaW5lclwiPjwvbmd0LXZhbGlkYXRpb24+XHJcbiJdfQ==
|