@porscheinformatik/clr-addons 15.0.0 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/clr-addons.module.d.ts +2 -1
- package/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.d.ts +2 -0
- package/datagrid/datagrid-state-persistence/index.d.ts +1 -0
- package/datagrid/datagrid-state-persistence/state-persistence-key.directive.d.ts +13 -4
- package/datagrid/datagrid-state-persistence/state-persistence-options.interface.d.ts +8 -0
- package/daterangepicker/daterange.constants.d.ts +21 -0
- package/daterangepicker/daterangepicker.module.d.ts +17 -0
- package/daterangepicker/directives/abstract-container.component.d.ts +53 -0
- package/daterangepicker/directives/datepicker/datepicker.component.d.ts +65 -0
- package/daterangepicker/directives/daterangepicker/daterangepicker.directive.d.ts +127 -0
- package/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.d.ts +118 -0
- package/daterangepicker/directives/if-daterange-error.directive.d.ts +40 -0
- package/daterangepicker/index.d.ts +13 -0
- package/daterangepicker/interfaces/daterange-preset.interface.d.ts +8 -0
- package/daterangepicker/interfaces/daterange.interface.d.ts +12 -0
- package/daterangepicker/models/day.model.d.ts +80 -0
- package/daterangepicker/models/popover-positions.model.d.ts +20 -0
- package/daterangepicker/providers/daterange-control-state.service.d.ts +42 -0
- package/daterangepicker/providers/daterange-parsing.service.d.ts +66 -0
- package/daterangepicker/providers/daterange.service.d.ts +38 -0
- package/daterangepicker/providers/opened-datepickers-tracker.service.d.ts +20 -0
- package/daterangepicker/validators/daterange-max.validator.d.ts +32 -0
- package/daterangepicker/validators/daterange-min.validator.d.ts +32 -0
- package/daterangepicker/validators/daterange-order.validator.d.ts +29 -0
- package/daterangepicker/validators/daterange-required.validator.d.ts +29 -0
- package/esm2020/clr-addons.module.mjs +8 -4
- package/esm2020/datagrid/datagrid-state-persistence/column-hidden-state-persistence.directive.mjs +3 -2
- package/esm2020/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.mjs +1 -1
- package/esm2020/datagrid/datagrid-state-persistence/index.mjs +2 -1
- package/esm2020/datagrid/datagrid-state-persistence/state-persistence-key.directive.mjs +58 -12
- package/esm2020/datagrid/datagrid-state-persistence/state-persistence-options.interface.mjs +2 -0
- package/esm2020/daterangepicker/daterange.constants.mjs +27 -0
- package/esm2020/daterangepicker/daterangepicker.module.mjs +58 -0
- package/esm2020/daterangepicker/directives/abstract-container.component.mjs +104 -0
- package/esm2020/daterangepicker/directives/datepicker/datepicker.component.mjs +97 -0
- package/esm2020/daterangepicker/directives/daterangepicker/daterangepicker.directive.mjs +256 -0
- package/esm2020/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.mjs +251 -0
- package/esm2020/daterangepicker/directives/if-daterange-error.directive.mjs +94 -0
- package/esm2020/daterangepicker/index.mjs +14 -0
- package/esm2020/daterangepicker/interfaces/daterange-preset.interface.mjs +2 -0
- package/esm2020/daterangepicker/interfaces/daterange.interface.mjs +2 -0
- package/esm2020/daterangepicker/models/day.model.mjs +99 -0
- package/esm2020/daterangepicker/models/popover-positions.model.mjs +66 -0
- package/esm2020/daterangepicker/providers/daterange-control-state.service.mjs +62 -0
- package/esm2020/daterangepicker/providers/daterange-parsing.service.mjs +206 -0
- package/esm2020/daterangepicker/providers/daterange.service.mjs +54 -0
- package/esm2020/daterangepicker/providers/opened-datepickers-tracker.service.mjs +36 -0
- package/esm2020/daterangepicker/validators/daterange-max.validator.mjs +85 -0
- package/esm2020/daterangepicker/validators/daterange-min.validator.mjs +85 -0
- package/esm2020/daterangepicker/validators/daterange-order.validator.mjs +75 -0
- package/esm2020/daterangepicker/validators/daterange-required.validator.mjs +71 -0
- package/esm2020/index.mjs +3 -2
- package/esm2020/searchfield/search-field.mjs +7 -5
- package/fesm2015/clr-addons.mjs +1977 -270
- package/fesm2015/clr-addons.mjs.map +1 -1
- package/fesm2020/clr-addons.mjs +1858 -177
- package/fesm2020/clr-addons.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/package.json +3 -3
- package/searchfield/search-field.d.ts +2 -2
- package/styles/clr-addons-phs.css +0 -13
- package/styles/clr-addons-phs.css.map +1 -1
- package/styles/clr-addons-phs.min.css +1 -1
- package/styles/clr-addons-phs.min.css.map +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Directive, Input, Optional, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { DaterangeControlStateService } from '../providers/daterange-control-state.service';
|
|
3
|
+
import { ClrDaterangepickerContainerComponent } from './daterangepicker-container/daterangepicker-container.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../providers/daterange-control-state.service";
|
|
6
|
+
import * as i2 from "./daterangepicker-container/daterangepicker-container.component";
|
|
7
|
+
/**
|
|
8
|
+
* Directive for multiple error messages.
|
|
9
|
+
* It works the same as Clarity `ClrIfError`, but for customized `ClrDaterangepickerContainerComponent`.
|
|
10
|
+
* Using Clarity `ClrIfError` requires the container to have service implemented that are not publicly exported.
|
|
11
|
+
*
|
|
12
|
+
* @see https://clarity.design/documentation/forms (section "Multiple error messages").
|
|
13
|
+
*
|
|
14
|
+
* Altered version from https://github.com/vmware-clarity/ng-clarity/blob/138a6dd95fdc4ffb67b054391c44ce5fa3c44660/projects/angular/src/forms/common/if-control-state/if-error.ts
|
|
15
|
+
*/
|
|
16
|
+
export class ClrIfDaterangeErrorDirective {
|
|
17
|
+
constructor(template, container, daterangeControlStateService, daterangepickerContainerComponent) {
|
|
18
|
+
this.template = template;
|
|
19
|
+
this.container = container;
|
|
20
|
+
this.daterangeControlStateService = daterangeControlStateService;
|
|
21
|
+
this.daterangepickerContainerComponent = daterangepickerContainerComponent;
|
|
22
|
+
/** Flag to remember if content is displayed. */
|
|
23
|
+
this.displayedContent = false;
|
|
24
|
+
/** List of subscriptions to later destroy. */
|
|
25
|
+
this.subscriptions = [];
|
|
26
|
+
// This directive only works inside `clr-daterangepicker-container`.
|
|
27
|
+
if (this.daterangeControlStateService == null || this.daterangepickerContainerComponent == null) {
|
|
28
|
+
throw new Error('`ClrIfDaterangeErrorDirective` can only be used within `ClrDaterangepickerContainerComponent`');
|
|
29
|
+
}
|
|
30
|
+
// Listen to status changes to toggle error visibility.
|
|
31
|
+
this.subscriptions.push(this.daterangeControlStateService.statusChange.subscribe((_status) => {
|
|
32
|
+
this.handleState();
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Handle error depending on states.
|
|
40
|
+
*/
|
|
41
|
+
handleState() {
|
|
42
|
+
if (!this.daterangeControlStateService.invalid) {
|
|
43
|
+
// If control is not invalid, hide all errors.
|
|
44
|
+
this.toggleErrorVisibility(false);
|
|
45
|
+
}
|
|
46
|
+
else if (this.clrIfDaterangeError) {
|
|
47
|
+
// Display error only if error input is list of errors.
|
|
48
|
+
const hasError = this.clrIfDaterangeError in this.daterangeControlStateService.errors;
|
|
49
|
+
this.toggleErrorVisibility(hasError);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Display error.
|
|
53
|
+
this.toggleErrorVisibility(true);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Display/hide error.
|
|
58
|
+
* @param displayError - Wether to show/hide error.
|
|
59
|
+
*/
|
|
60
|
+
toggleErrorVisibility(displayError) {
|
|
61
|
+
if (displayError) {
|
|
62
|
+
const error = this.daterangeControlStateService.errors[this.clrIfDaterangeError];
|
|
63
|
+
if (this.displayedContent === false) {
|
|
64
|
+
this.embeddedViewRef = this.container.createEmbeddedView(this.template, {
|
|
65
|
+
error,
|
|
66
|
+
});
|
|
67
|
+
this.displayedContent = true;
|
|
68
|
+
}
|
|
69
|
+
else if (this.embeddedViewRef && this.embeddedViewRef.context) {
|
|
70
|
+
// If view is already rendered, update the error object to keep it in sync.
|
|
71
|
+
this.embeddedViewRef.context.error = error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.container.clear();
|
|
76
|
+
this.displayedContent = false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
ClrIfDaterangeErrorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrIfDaterangeErrorDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.DaterangeControlStateService, optional: true }, { token: i2.ClrDaterangepickerContainerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
81
|
+
ClrIfDaterangeErrorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ClrIfDaterangeErrorDirective, selector: "[clrIfDaterangeError]", inputs: { clrIfDaterangeError: "clrIfDaterangeError" }, ngImport: i0 });
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrIfDaterangeErrorDirective, decorators: [{
|
|
83
|
+
type: Directive,
|
|
84
|
+
args: [{
|
|
85
|
+
selector: '[clrIfDaterangeError]',
|
|
86
|
+
}]
|
|
87
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.DaterangeControlStateService, decorators: [{
|
|
88
|
+
type: Optional
|
|
89
|
+
}] }, { type: i2.ClrDaterangepickerContainerComponent, decorators: [{
|
|
90
|
+
type: Optional
|
|
91
|
+
}] }]; }, propDecorators: { clrIfDaterangeError: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}] } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtZGF0ZXJhbmdlLWVycm9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kaXJlY3RpdmVzL2lmLWRhdGVyYW5nZS1lcnJvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsS0FBSyxFQUFhLFFBQVEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFNUYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7Ozs7QUFFdkg7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8sNEJBQTRCO0lBY3ZDLFlBQ21CLFFBQTBCLEVBQzFCLFNBQTJCLEVBQ2YsNEJBQTBELEVBRXRFLGlDQUF1RTtRQUp2RSxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNmLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFFdEUsc0NBQWlDLEdBQWpDLGlDQUFpQyxDQUFzQztRQVgxRixnREFBZ0Q7UUFDdEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLDhDQUE4QztRQUN0QyxrQkFBYSxHQUF3QixFQUFFLENBQUM7UUFTOUMsb0VBQW9FO1FBQ3BFLElBQUksSUFBSSxDQUFDLDRCQUE0QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsaUNBQWlDLElBQUksSUFBSSxFQUFFO1lBQy9GLE1BQU0sSUFBSSxLQUFLLENBQUMsK0ZBQStGLENBQUMsQ0FBQztTQUNsSDtRQUVELHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDNUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUU7WUFDOUMsOENBQThDO1lBQzlDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQzthQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ25DLHVEQUF1RDtZQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQztZQUN0RixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLGlCQUFpQjtZQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0sscUJBQXFCLENBQUMsWUFBcUI7UUFDakQsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNqRixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxLQUFLLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUN0RSxLQUFLO2lCQUNOLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2FBQzlCO2lCQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRTtnQkFDL0QsMkVBQTJFO2dCQUMzRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQzVDO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUMvQjtJQUNILENBQUM7O3lIQTNFVSw0QkFBNEI7NkdBQTVCLDRCQUE0QjsyRkFBNUIsNEJBQTRCO2tCQUh4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7aUJBQ2xDOzswQkFrQkksUUFBUTs7MEJBQ1IsUUFBUTs0Q0FmSixtQkFBbUI7c0JBRHpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgSW5wdXQsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9wcm92aWRlcnMvZGF0ZXJhbmdlLWNvbnRyb2wtc3RhdGUuc2VydmljZSc7XG5cbmltcG9ydCB7IENsckRhdGVyYW5nZXBpY2tlckNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lci9kYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogRGlyZWN0aXZlIGZvciBtdWx0aXBsZSBlcnJvciBtZXNzYWdlcy5cbiAqIEl0IHdvcmtzIHRoZSBzYW1lIGFzIENsYXJpdHkgYENscklmRXJyb3JgLCBidXQgZm9yIGN1c3RvbWl6ZWQgYENsckRhdGVyYW5nZXBpY2tlckNvbnRhaW5lckNvbXBvbmVudGAuXG4gKiBVc2luZyBDbGFyaXR5IGBDbHJJZkVycm9yYCByZXF1aXJlcyB0aGUgY29udGFpbmVyIHRvIGhhdmUgc2VydmljZSBpbXBsZW1lbnRlZCB0aGF0IGFyZSBub3QgcHVibGljbHkgZXhwb3J0ZWQuXG4gKlxuICogQHNlZSBodHRwczovL2NsYXJpdHkuZGVzaWduL2RvY3VtZW50YXRpb24vZm9ybXMgKHNlY3Rpb24gXCJNdWx0aXBsZSBlcnJvciBtZXNzYWdlc1wiKS5cbiAqXG4gKiBBbHRlcmVkIHZlcnNpb24gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm13YXJlLWNsYXJpdHkvbmctY2xhcml0eS9ibG9iLzEzOGE2ZGQ5NWZkYzRmZmI2N2IwNTQzOTFjNDRjZTVmYTNjNDQ2NjAvcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtZXJyb3IudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NscklmRGF0ZXJhbmdlRXJyb3JdJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xySWZEYXRlcmFuZ2VFcnJvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBFcnJvciBuYW1lLiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2xySWZEYXRlcmFuZ2VFcnJvcjogc3RyaW5nO1xuXG4gIC8qKiBSZW5kZXJlZCB2aWV3LiAqL1xuICBwcml2YXRlIGVtYmVkZGVkVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgLyoqIEZsYWcgdG8gcmVtZW1iZXIgaWYgY29udGVudCBpcyBkaXNwbGF5ZWQuICovXG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRDb250ZW50ID0gZmFsc2U7XG5cbiAgLyoqIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucyB0byBsYXRlciBkZXN0cm95LiAqL1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2U6IERhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVyYW5nZXBpY2tlckNvbnRhaW5lckNvbXBvbmVudDogQ2xyRGF0ZXJhbmdlcGlja2VyQ29udGFpbmVyQ29tcG9uZW50XG4gICkge1xuICAgIC8vIFRoaXMgZGlyZWN0aXZlIG9ubHkgd29ya3MgaW5zaWRlIGBjbHItZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcmAuXG4gICAgaWYgKHRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZSA9PSBudWxsIHx8IHRoaXMuZGF0ZXJhbmdlcGlja2VyQ29udGFpbmVyQ29tcG9uZW50ID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYENscklmRGF0ZXJhbmdlRXJyb3JEaXJlY3RpdmVgIGNhbiBvbmx5IGJlIHVzZWQgd2l0aGluIGBDbHJEYXRlcmFuZ2VwaWNrZXJDb250YWluZXJDb21wb25lbnRgJyk7XG4gICAgfVxuXG4gICAgLy8gTGlzdGVuIHRvIHN0YXR1cyBjaGFuZ2VzIHRvIHRvZ2dsZSBlcnJvciB2aXNpYmlsaXR5LlxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLnN0YXR1c0NoYW5nZS5zdWJzY3JpYmUoKF9zdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdGF0ZSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGVycm9yIGRlcGVuZGluZyBvbiBzdGF0ZXMuXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVN0YXRlKCkge1xuICAgIGlmICghdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmludmFsaWQpIHtcbiAgICAgIC8vIElmIGNvbnRyb2wgaXMgbm90IGludmFsaWQsIGhpZGUgYWxsIGVycm9ycy5cbiAgICAgIHRoaXMudG9nZ2xlRXJyb3JWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2xySWZEYXRlcmFuZ2VFcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBvbmx5IGlmIGVycm9yIGlucHV0IGlzIGxpc3Qgb2YgZXJyb3JzLlxuICAgICAgY29uc3QgaGFzRXJyb3IgPSB0aGlzLmNscklmRGF0ZXJhbmdlRXJyb3IgaW4gdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmVycm9ycztcbiAgICAgIHRoaXMudG9nZ2xlRXJyb3JWaXNpYmlsaXR5KGhhc0Vycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGlzcGxheSBlcnJvci5cbiAgICAgIHRoaXMudG9nZ2xlRXJyb3JWaXNpYmlsaXR5KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5L2hpZGUgZXJyb3IuXG4gICAqIEBwYXJhbSBkaXNwbGF5RXJyb3IgLSBXZXRoZXIgdG8gc2hvdy9oaWRlIGVycm9yLlxuICAgKi9cbiAgcHJpdmF0ZSB0b2dnbGVFcnJvclZpc2liaWxpdHkoZGlzcGxheUVycm9yOiBib29sZWFuKSB7XG4gICAgaWYgKGRpc3BsYXlFcnJvcikge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuZXJyb3JzW3RoaXMuY2xySWZEYXRlcmFuZ2VFcnJvcl07XG4gICAgICBpZiAodGhpcy5kaXNwbGF5ZWRDb250ZW50ID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmVtYmVkZGVkVmlld1JlZiA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlLCB7XG4gICAgICAgICAgZXJyb3IsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbnRlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmVtYmVkZGVkVmlld1JlZiAmJiB0aGlzLmVtYmVkZGVkVmlld1JlZi5jb250ZXh0KSB7XG4gICAgICAgIC8vIElmIHZpZXcgaXMgYWxyZWFkeSByZW5kZXJlZCwgdXBkYXRlIHRoZSBlcnJvciBvYmplY3QgdG8ga2VlcCBpdCBpbiBzeW5jLlxuICAgICAgICB0aGlzLmVtYmVkZGVkVmlld1JlZi5jb250ZXh0LmVycm9yID0gZXJyb3I7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udGFpbmVyLmNsZWFyKCk7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbnRlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './daterange.constants';
|
|
2
|
+
export * from './daterangepicker.module';
|
|
3
|
+
export * from './directives/daterangepicker-container/daterangepicker-container.component';
|
|
4
|
+
export * from './directives/daterangepicker/daterangepicker.directive';
|
|
5
|
+
export * from './directives/if-daterange-error.directive';
|
|
6
|
+
export * from './interfaces/daterange-preset.interface';
|
|
7
|
+
export * from './interfaces/daterange.interface';
|
|
8
|
+
export * from './models/day.model';
|
|
9
|
+
export * from './models/popover-positions.model';
|
|
10
|
+
export * from './validators/daterange-max.validator';
|
|
11
|
+
export * from './validators/daterange-min.validator';
|
|
12
|
+
export * from './validators/daterange-order.validator';
|
|
13
|
+
export * from './validators/daterange-required.validator';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRlcmFuZ2VwaWNrZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEVBQTRFLENBQUM7QUFDM0YsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZXJhbmdlLmNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGVyYW5nZXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2RhdGVyYW5nZXBpY2tlci1jb250YWluZXIvZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9pZi1kYXRlcmFuZ2UtZXJyb3IuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9kYXRlcmFuZ2UtcHJlc2V0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZGF0ZXJhbmdlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9kYXkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvcG9wb3Zlci1wb3NpdGlvbnMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0b3JzL2RhdGVyYW5nZS1tYXgudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdG9ycy9kYXRlcmFuZ2UtbWluLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvcnMvZGF0ZXJhbmdlLW9yZGVyLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvcnMvZGF0ZXJhbmdlLXJlcXVpcmVkLnZhbGlkYXRvcic7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLXByZXNldC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRlcmFuZ2VwaWNrZXIvaW50ZXJmYWNlcy9kYXRlcmFuZ2UtcHJlc2V0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZXJhbmdlIH0gZnJvbSAnLi9kYXRlcmFuZ2UuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBEYXRlcmFuZ2UgcHJlc2V0IGZvciBkYXRlcmFuZ2VwaWNrZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZXJhbmdlUHJlc2V0IHtcbiAgdGV4dDogc3RyaW5nO1xuICByYW5nZSgpOiBEYXRlcmFuZ2U7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9pbnRlcmZhY2VzL2RhdGVyYW5nZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE51bGxhYmxlRGF5TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZGF5Lm1vZGVsJztcblxuLyoqXG4gKiBEYXRlcmFuZ2UgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVyYW5nZSB7XG4gIGZyb206IE51bGxhYmxlRGF5TW9kZWw7XG4gIHRvOiBOdWxsYWJsZURheU1vZGVsO1xufVxuXG4vKipcbiAqIERhdGVyYW5nZS5cbiAqL1xuZXhwb3J0IHR5cGUgTnVsbGFibGVEYXRlcmFuZ2UgPSBEYXRlcmFuZ2UgfCB1bmRlZmluZWQgfCBudWxsO1xuIl19
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Day model.
|
|
3
|
+
* Takes care of keeping records of full days, without the times & timezone issues.
|
|
4
|
+
*/
|
|
5
|
+
export class DayModel {
|
|
6
|
+
constructor(...args) {
|
|
7
|
+
if (args[0] instanceof Date) {
|
|
8
|
+
const date = args[0];
|
|
9
|
+
this.year = date.getFullYear();
|
|
10
|
+
this.month = date.getMonth();
|
|
11
|
+
this.date = date.getDate();
|
|
12
|
+
}
|
|
13
|
+
else if (typeof args[0] === 'string') {
|
|
14
|
+
const [year, month, day] = args[0].split('-').map(n => parseInt(n, 10));
|
|
15
|
+
this.year = year;
|
|
16
|
+
this.month = month - 1;
|
|
17
|
+
this.date = day;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this.year = args[0];
|
|
21
|
+
this.month = args[1];
|
|
22
|
+
this.date = args[2];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Checks if the passed value is equal to current day model.
|
|
27
|
+
* @param value - Day model.
|
|
28
|
+
* @returns Wether value is equal to current day model.
|
|
29
|
+
*/
|
|
30
|
+
isEqual(value) {
|
|
31
|
+
if (value) {
|
|
32
|
+
return this.year === value.year && this.month === value.month && this.date === value.date;
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Increment day model with date value.
|
|
38
|
+
* @param value - Incremental date value.
|
|
39
|
+
* @returns Updated day model with incremented date value.
|
|
40
|
+
*/
|
|
41
|
+
incrementBy(value) {
|
|
42
|
+
// Creating new Javascript Date object to increment because
|
|
43
|
+
// it will automatically take care of switching to next or previous
|
|
44
|
+
// months & years without we having to worry about it.
|
|
45
|
+
const date = new Date(this.year, this.month, this.date + value);
|
|
46
|
+
this.year = date.getFullYear();
|
|
47
|
+
this.month = date.getMonth();
|
|
48
|
+
this.date = date.getDate();
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Checks if current day model is after value.
|
|
53
|
+
* @param value - Day model.
|
|
54
|
+
* @returns Wether current day model is after value.
|
|
55
|
+
*/
|
|
56
|
+
isAfter(value) {
|
|
57
|
+
return this.toDate() > value.toDate();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Checks if current day model is before value.
|
|
61
|
+
* @param value - Day model.
|
|
62
|
+
* @returns Wether current day model is before value.
|
|
63
|
+
*/
|
|
64
|
+
isBefore(value) {
|
|
65
|
+
return this.toDate() < value.toDate();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Clones the current day model.
|
|
69
|
+
* @returns Cloned day model.
|
|
70
|
+
*/
|
|
71
|
+
clone() {
|
|
72
|
+
return new DayModel(this.year, this.month, this.date);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Convert to Javascript Date object.
|
|
76
|
+
* @returns Javascript Date object.
|
|
77
|
+
*/
|
|
78
|
+
toDate() {
|
|
79
|
+
return new Date(this.year, this.month, this.date);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* To HTML5 date spec string.
|
|
83
|
+
* See https://clarity.design/documentation/datepicker
|
|
84
|
+
* @returns Date as HTML5 spec string.
|
|
85
|
+
*/
|
|
86
|
+
toHTML5SpecDateString() {
|
|
87
|
+
// The clarity date picker uses the format 'YYYY-MM-DD'.
|
|
88
|
+
return `${this.year}-${this.pad(this.month + 1)}-${this.pad(this.date)}`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* String padding with zeros.
|
|
92
|
+
* @param num - Number to pad.
|
|
93
|
+
* @returns Padded string.
|
|
94
|
+
*/
|
|
95
|
+
pad(num) {
|
|
96
|
+
return num < 10 ? `0${num}` : `${num}`;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0ZXJhbmdlcGlja2VyL21vZGVscy9kYXkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUEyQm5CLFlBQW1CLEdBQUcsSUFBbUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFO1lBQzNCLE1BQU0sSUFBSSxHQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM1QjthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNqQjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFXLENBQUM7WUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFXLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFlO1FBQzVCLElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQztTQUMzRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsS0FBYTtRQUM5QiwyREFBMkQ7UUFDM0QsbUVBQW1FO1FBQ25FLHNEQUFzRDtRQUN0RCxNQUFNLElBQUksR0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLEtBQWU7UUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLEtBQWU7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLO1FBQ1YsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0kscUJBQXFCO1FBQzFCLHdEQUF3RDtRQUN4RCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEdBQUcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERheSBtb2RlbC5cbiAqIFRha2VzIGNhcmUgb2Yga2VlcGluZyByZWNvcmRzIG9mIGZ1bGwgZGF5cywgd2l0aG91dCB0aGUgdGltZXMgJiB0aW1lem9uZSBpc3N1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXlNb2RlbCB7XG4gIC8qKiBZZWFyLiAqL1xuICBwcml2YXRlIHllYXIhOiBudW1iZXI7XG5cbiAgLyoqIE1vbnRoLCB6ZXJvLWluZGV4ZWQuICovXG4gIHByaXZhdGUgbW9udGghOiBudW1iZXI7XG5cbiAgLyoqIERhdGUgb2YgdGhlIG1vbnRoLiAqL1xuICBwcml2YXRlIGRhdGUhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZGF5IG1vZGVsLlxuICAgKiBAcGFyYW0geWVhciAtIFRoZSBmdWxsIHllYXIuXG4gICAqIEBwYXJhbSBtb250aCAtIFRoZSBtb250aCBhcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDExIChKYW51YXJ5IHRvIERlY2VtYmVyKS5cbiAgICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSBhcyBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDMxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZGF5IG1vZGVsLlxuICAgKiBAcGFyYW0gZGF0ZSAtIEphdmFzY3JpcHQgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoZGF0ZTogRGF0ZSk7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGRheSBtb2RlbC5cbiAgICogQHBhcmFtIGRhdGUgLSBEYXRlIHN0cmluZyBpbiBgeXl5eS1tbS1kZGAgZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGU6IHN0cmluZyk7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvciguLi5hcmdzOiBBcnJheTxudW1iZXIgfCBEYXRlIHwgc3RyaW5nPikge1xuICAgIGlmIChhcmdzWzBdIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgY29uc3QgZGF0ZTogRGF0ZSA9IGFyZ3NbMF07XG4gICAgICB0aGlzLnllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICB0aGlzLm1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgICAgdGhpcy5kYXRlID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IFt5ZWFyLCBtb250aCwgZGF5XSA9IGFyZ3NbMF0uc3BsaXQoJy0nKS5tYXAobiA9PiBwYXJzZUludChuLCAxMCkpO1xuICAgICAgdGhpcy55ZWFyID0geWVhcjtcbiAgICAgIHRoaXMubW9udGggPSBtb250aCAtIDE7XG4gICAgICB0aGlzLmRhdGUgPSBkYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMueWVhciA9IGFyZ3NbMF07XG4gICAgICB0aGlzLm1vbnRoID0gYXJnc1sxXSBhcyBudW1iZXI7XG4gICAgICB0aGlzLmRhdGUgPSBhcmdzWzJdIGFzIG51bWJlcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBwYXNzZWQgdmFsdWUgaXMgZXF1YWwgdG8gY3VycmVudCBkYXkgbW9kZWwuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIERheSBtb2RlbC5cbiAgICogQHJldHVybnMgV2V0aGVyIHZhbHVlIGlzIGVxdWFsIHRvIGN1cnJlbnQgZGF5IG1vZGVsLlxuICAgKi9cbiAgcHVibGljIGlzRXF1YWwodmFsdWU6IERheU1vZGVsKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy55ZWFyID09PSB2YWx1ZS55ZWFyICYmIHRoaXMubW9udGggPT09IHZhbHVlLm1vbnRoICYmIHRoaXMuZGF0ZSA9PT0gdmFsdWUuZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluY3JlbWVudCBkYXkgbW9kZWwgd2l0aCBkYXRlIHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBJbmNyZW1lbnRhbCBkYXRlIHZhbHVlLlxuICAgKiBAcmV0dXJucyBVcGRhdGVkIGRheSBtb2RlbCB3aXRoIGluY3JlbWVudGVkIGRhdGUgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgaW5jcmVtZW50QnkodmFsdWU6IG51bWJlcik6IERheU1vZGVsIHtcbiAgICAvLyBDcmVhdGluZyBuZXcgSmF2YXNjcmlwdCBEYXRlIG9iamVjdCB0byBpbmNyZW1lbnQgYmVjYXVzZVxuICAgIC8vIGl0IHdpbGwgYXV0b21hdGljYWxseSB0YWtlIGNhcmUgb2Ygc3dpdGNoaW5nIHRvIG5leHQgb3IgcHJldmlvdXNcbiAgICAvLyBtb250aHMgJiB5ZWFycyB3aXRob3V0IHdlIGhhdmluZyB0byB3b3JyeSBhYm91dCBpdC5cbiAgICBjb25zdCBkYXRlOiBEYXRlID0gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLmRhdGUgKyB2YWx1ZSk7XG4gICAgdGhpcy55ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIHRoaXMubW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gICAgdGhpcy5kYXRlID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGN1cnJlbnQgZGF5IG1vZGVsIGlzIGFmdGVyIHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBEYXkgbW9kZWwuXG4gICAqIEByZXR1cm5zIFdldGhlciBjdXJyZW50IGRheSBtb2RlbCBpcyBhZnRlciB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBpc0FmdGVyKHZhbHVlOiBEYXlNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpID4gdmFsdWUudG9EYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGN1cnJlbnQgZGF5IG1vZGVsIGlzIGJlZm9yZSB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIC0gRGF5IG1vZGVsLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgY3VycmVudCBkYXkgbW9kZWwgaXMgYmVmb3JlIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGlzQmVmb3JlKHZhbHVlOiBEYXlNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpIDwgdmFsdWUudG9EYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvbmVzIHRoZSBjdXJyZW50IGRheSBtb2RlbC5cbiAgICogQHJldHVybnMgQ2xvbmVkIGRheSBtb2RlbC5cbiAgICovXG4gIHB1YmxpYyBjbG9uZSgpOiBEYXlNb2RlbCB7XG4gICAgcmV0dXJuIG5ldyBEYXlNb2RlbCh0aGlzLnllYXIsIHRoaXMubW9udGgsIHRoaXMuZGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBKYXZhc2NyaXB0IERhdGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBKYXZhc2NyaXB0IERhdGUgb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHRvRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLmRhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIEhUTUw1IGRhdGUgc3BlYyBzdHJpbmcuXG4gICAqIFNlZSBodHRwczovL2NsYXJpdHkuZGVzaWduL2RvY3VtZW50YXRpb24vZGF0ZXBpY2tlclxuICAgKiBAcmV0dXJucyBEYXRlIGFzIEhUTUw1IHNwZWMgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHRvSFRNTDVTcGVjRGF0ZVN0cmluZygpOiBzdHJpbmcge1xuICAgIC8vIFRoZSBjbGFyaXR5IGRhdGUgcGlja2VyIHVzZXMgdGhlIGZvcm1hdCAnWVlZWS1NTS1ERCcuXG4gICAgcmV0dXJuIGAke3RoaXMueWVhcn0tJHt0aGlzLnBhZCh0aGlzLm1vbnRoICsgMSl9LSR7dGhpcy5wYWQodGhpcy5kYXRlKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmluZyBwYWRkaW5nIHdpdGggemVyb3MuXG4gICAqIEBwYXJhbSBudW0gLSBOdW1iZXIgdG8gcGFkLlxuICAgKiBAcmV0dXJucyBQYWRkZWQgc3RyaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBwYWQobnVtOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBudW0gPCAxMCA/IGAwJHtudW19YCA6IGAke251bX1gO1xuICB9XG59XG5cbi8qKlxuICogRGF5IG1vZGVsLlxuICogVGFrZXMgY2FyZSBvZiBrZWVwaW5nIHJlY29yZHMgb2YgZnVsbCBkYXlzLCB3aXRob3V0IHRoZSB0aW1lcyAmIHRpbWV6b25lIGlzc3Vlcy5cbiAqL1xuZXhwb3J0IHR5cGUgTnVsbGFibGVEYXlNb2RlbCA9IERheU1vZGVsIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiJdfQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ClrAlignment, ClrAxis, ClrSide } from '@clr/angular';
|
|
2
|
+
/**
|
|
3
|
+
* Popover positions.
|
|
4
|
+
* https://github.com/vmware-clarity/ng-clarity/blob/f1a668086bf88bcf5ef1cd36b0d150e45e88def7/projects/angular/src/utils/popover/enums/positions.enum.ts
|
|
5
|
+
*/
|
|
6
|
+
export class PopoverPositions {
|
|
7
|
+
}
|
|
8
|
+
PopoverPositions.options = [
|
|
9
|
+
'bottom-left',
|
|
10
|
+
'bottom-right',
|
|
11
|
+
'left-bottom',
|
|
12
|
+
'left-top',
|
|
13
|
+
'right-bottom',
|
|
14
|
+
'right-top',
|
|
15
|
+
'top-left',
|
|
16
|
+
'top-right',
|
|
17
|
+
];
|
|
18
|
+
PopoverPositions['bottom-left'] = {
|
|
19
|
+
axis: ClrAxis.VERTICAL,
|
|
20
|
+
side: ClrSide.AFTER,
|
|
21
|
+
anchor: ClrAlignment.START,
|
|
22
|
+
content: ClrAlignment.START,
|
|
23
|
+
};
|
|
24
|
+
PopoverPositions['bottom-right'] = {
|
|
25
|
+
axis: ClrAxis.VERTICAL,
|
|
26
|
+
side: ClrSide.AFTER,
|
|
27
|
+
anchor: ClrAlignment.END,
|
|
28
|
+
content: ClrAlignment.END,
|
|
29
|
+
};
|
|
30
|
+
PopoverPositions['left-bottom'] = {
|
|
31
|
+
axis: ClrAxis.HORIZONTAL,
|
|
32
|
+
side: ClrSide.BEFORE,
|
|
33
|
+
anchor: ClrAlignment.START,
|
|
34
|
+
content: ClrAlignment.START,
|
|
35
|
+
};
|
|
36
|
+
PopoverPositions['left-top'] = {
|
|
37
|
+
axis: ClrAxis.HORIZONTAL,
|
|
38
|
+
side: ClrSide.BEFORE,
|
|
39
|
+
anchor: ClrAlignment.CENTER,
|
|
40
|
+
content: ClrAlignment.END,
|
|
41
|
+
};
|
|
42
|
+
PopoverPositions['right-bottom'] = {
|
|
43
|
+
axis: ClrAxis.HORIZONTAL,
|
|
44
|
+
side: ClrSide.AFTER,
|
|
45
|
+
anchor: ClrAlignment.START,
|
|
46
|
+
content: ClrAlignment.START,
|
|
47
|
+
};
|
|
48
|
+
PopoverPositions['right-top'] = {
|
|
49
|
+
axis: ClrAxis.HORIZONTAL,
|
|
50
|
+
side: ClrSide.AFTER,
|
|
51
|
+
anchor: ClrAlignment.CENTER,
|
|
52
|
+
content: ClrAlignment.END,
|
|
53
|
+
};
|
|
54
|
+
PopoverPositions['top-left'] = {
|
|
55
|
+
axis: ClrAxis.VERTICAL,
|
|
56
|
+
side: ClrSide.BEFORE,
|
|
57
|
+
anchor: ClrAlignment.START,
|
|
58
|
+
content: ClrAlignment.START,
|
|
59
|
+
};
|
|
60
|
+
PopoverPositions['top-right'] = {
|
|
61
|
+
axis: ClrAxis.VERTICAL,
|
|
62
|
+
side: ClrSide.BEFORE,
|
|
63
|
+
anchor: ClrAlignment.END,
|
|
64
|
+
content: ClrAlignment.END,
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1wb3NpdGlvbnMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRlcmFuZ2VwaWNrZXIvbW9kZWxzL3BvcG92ZXItcG9zaXRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFzQixPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjs7QUFDYix3QkFBTyxHQUFHO0lBQ3RCLGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLFVBQVU7SUFDVixjQUFjO0lBQ2QsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0NBQ1osQ0FBQztBQUVZLCtCQUFhLEdBQXVCO0lBQ2hELElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtJQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUs7SUFDbkIsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLO0lBQzFCLE9BQU8sRUFBRSxZQUFZLENBQUMsS0FBSztDQUM1QixDQUFDO0FBRVksZ0NBQWMsR0FBdUI7SUFDakQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRO0lBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSztJQUNuQixNQUFNLEVBQUUsWUFBWSxDQUFDLEdBQUc7SUFDeEIsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHO0NBQzFCLENBQUM7QUFFWSwrQkFBYSxHQUF1QjtJQUNoRCxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7SUFDeEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0lBQ3BCLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSztJQUMxQixPQUFPLEVBQUUsWUFBWSxDQUFDLEtBQUs7Q0FDNUIsQ0FBQztBQUVZLDRCQUFVLEdBQXVCO0lBQzdDLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVTtJQUN4QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDcEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNO0lBQzNCLE9BQU8sRUFBRSxZQUFZLENBQUMsR0FBRztDQUMxQixDQUFDO0FBRVksZ0NBQWMsR0FBdUI7SUFDakQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO0lBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSztJQUNuQixNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUs7SUFDMUIsT0FBTyxFQUFFLFlBQVksQ0FBQyxLQUFLO0NBQzVCLENBQUM7QUFFWSw2QkFBVyxHQUF1QjtJQUM5QyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7SUFDeEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO0lBQ25CLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTTtJQUMzQixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUc7Q0FDMUIsQ0FBQztBQUVZLDRCQUFVLEdBQXVCO0lBQzdDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtJQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDcEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLO0lBQzFCLE9BQU8sRUFBRSxZQUFZLENBQUMsS0FBSztDQUM1QixDQUFDO0FBRVksNkJBQVcsR0FBdUI7SUFDOUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRO0lBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtJQUNwQixNQUFNLEVBQUUsWUFBWSxDQUFDLEdBQUc7SUFDeEIsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbHJBbGlnbm1lbnQsIENsckF4aXMsIENsclBvcG92ZXJQb3NpdGlvbiwgQ2xyU2lkZSB9IGZyb20gJ0BjbHIvYW5ndWxhcic7XG5cbi8qKlxuICogUG9wb3ZlciBwb3NpdGlvbnMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdm13YXJlLWNsYXJpdHkvbmctY2xhcml0eS9ibG9iL2YxYTY2ODA4NmJmODhiY2Y1ZWYxY2QzNmIwZDE1MGU0NWU4OGRlZjcvcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvcG9wb3Zlci9lbnVtcy9wb3NpdGlvbnMuZW51bS50c1xuICovXG5leHBvcnQgY2xhc3MgUG9wb3ZlclBvc2l0aW9ucyB7XG4gIHB1YmxpYyBzdGF0aWMgb3B0aW9ucyA9IFtcbiAgICAnYm90dG9tLWxlZnQnLFxuICAgICdib3R0b20tcmlnaHQnLFxuICAgICdsZWZ0LWJvdHRvbScsXG4gICAgJ2xlZnQtdG9wJyxcbiAgICAncmlnaHQtYm90dG9tJyxcbiAgICAncmlnaHQtdG9wJyxcbiAgICAndG9wLWxlZnQnLFxuICAgICd0b3AtcmlnaHQnLFxuICBdO1xuXG4gIHB1YmxpYyBzdGF0aWMgJ2JvdHRvbS1sZWZ0JzogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuVkVSVElDQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5BRlRFUixcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5TVEFSVCxcbiAgICBjb250ZW50OiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAnYm90dG9tLXJpZ2h0JzogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuVkVSVElDQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5BRlRFUixcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5FTkQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LkVORCxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljICdsZWZ0LWJvdHRvbSc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLkhPUklaT05UQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5CRUZPUkUsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LlNUQVJULFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgJ2xlZnQtdG9wJzogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuSE9SSVpPTlRBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkJFRk9SRSxcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5DRU5URVIsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LkVORCxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljICdyaWdodC1ib3R0b20nOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5IT1JJWk9OVEFMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LlNUQVJULFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgJ3JpZ2h0LXRvcCc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLkhPUklaT05UQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5BRlRFUixcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5DRU5URVIsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LkVORCxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljICd0b3AtbGVmdCc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLlZFUlRJQ0FMLFxuICAgIHNpZGU6IENsclNpZGUuQkVGT1JFLFxuICAgIGFuY2hvcjogQ2xyQWxpZ25tZW50LlNUQVJULFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5TVEFSVCxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljICd0b3AtcmlnaHQnOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5WRVJUSUNBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkJFRk9SRSxcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5FTkQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LkVORCxcbiAgfTtcbn1cblxuLyoqXG4gKiBQb3BvdmVyIHBvc2l0aW9uLlxuICovXG5leHBvcnQgdHlwZSBQb3BvdmVyUG9zaXRpb24gPSAodHlwZW9mIFBvcG92ZXJQb3NpdGlvbnMub3B0aW9ucylbbnVtYmVyXTtcbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Daterange control state service.
|
|
5
|
+
* Stores data for communication between daterange container and input.
|
|
6
|
+
*/
|
|
7
|
+
export class DaterangeControlStateService {
|
|
8
|
+
constructor() {
|
|
9
|
+
/** Disabled control state. */
|
|
10
|
+
this.disabled = false;
|
|
11
|
+
/** Focused. */
|
|
12
|
+
this.focused = false;
|
|
13
|
+
/** List of validation errors. */
|
|
14
|
+
this.errors = null;
|
|
15
|
+
this._invalid = false;
|
|
16
|
+
this._touched = false;
|
|
17
|
+
/**
|
|
18
|
+
* Event triggered when status changes.
|
|
19
|
+
*/
|
|
20
|
+
this.statusChange = new EventEmitter();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Control invalid status.
|
|
24
|
+
* @returns Control invalid status.
|
|
25
|
+
*/
|
|
26
|
+
get invalid() {
|
|
27
|
+
return this._invalid;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Touched.
|
|
31
|
+
* @returns Touched.
|
|
32
|
+
*/
|
|
33
|
+
get touched() {
|
|
34
|
+
return this._touched;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Update status.
|
|
38
|
+
* Only for valid & invalid status changes.
|
|
39
|
+
* And only if there was a real change.
|
|
40
|
+
* Also updates errors list.
|
|
41
|
+
* Emits `statusChange` event.
|
|
42
|
+
* @param control
|
|
43
|
+
*/
|
|
44
|
+
updateStatus(control) {
|
|
45
|
+
this._touched = control.touched;
|
|
46
|
+
// We only care about valid & invalid status changes.
|
|
47
|
+
// There is an bug where `ClrDaterangepickerDirective.writeValue` is called twice with same value (`null`).
|
|
48
|
+
// Setting ` && (control.touched || control.dirty)` in next if-statement will hide the errors,
|
|
49
|
+
// but the control will still be invalid with errors (just hidden).
|
|
50
|
+
if (['VALID', 'INVALID'].includes(control.status)) {
|
|
51
|
+
this.errors = control.errors;
|
|
52
|
+
this._invalid = control.invalid;
|
|
53
|
+
this.statusChange.emit(this._invalid);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
DaterangeControlStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DaterangeControlStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
58
|
+
DaterangeControlStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DaterangeControlStateService });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DaterangeControlStateService, decorators: [{
|
|
60
|
+
type: Injectable
|
|
61
|
+
}] });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLWNvbnRyb2wtc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9wcm92aWRlcnMvZGF0ZXJhbmdlLWNvbnRyb2wtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHekQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQUR6QztRQUVFLDhCQUE4QjtRQUN2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGVBQWU7UUFDUixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGlDQUFpQztRQUMxQixXQUFNLEdBQTRCLElBQUksQ0FBQztRQUV0QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBU2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUErQnpCOztXQUVHO1FBQ0ksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0tBQ25EO0lBM0NDOzs7T0FHRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxZQUFZLENBQUMsT0FBd0I7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRWhDLHFEQUFxRDtRQUNyRCwyR0FBMkc7UUFDM0csOEZBQThGO1FBQzlGLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDOzt5SEFoRFUsNEJBQTRCOzZIQUE1Qiw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIERhdGVyYW5nZSBjb250cm9sIHN0YXRlIHNlcnZpY2UuXG4gKiBTdG9yZXMgZGF0YSBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGRhdGVyYW5nZSBjb250YWluZXIgYW5kIGlucHV0LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZSB7XG4gIC8qKiBEaXNhYmxlZCBjb250cm9sIHN0YXRlLiAqL1xuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKiogRm9jdXNlZC4gKi9cbiAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcblxuICAvKiogTGlzdCBvZiB2YWxpZGF0aW9uIGVycm9ycy4gKi9cbiAgcHVibGljIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2ludmFsaWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIENvbnRyb2wgaW52YWxpZCBzdGF0dXMuXG4gICAqIEByZXR1cm5zIENvbnRyb2wgaW52YWxpZCBzdGF0dXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ludmFsaWQ7XG4gIH1cblxuICBwcml2YXRlIF90b3VjaGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUb3VjaGVkLlxuICAgKiBAcmV0dXJucyBUb3VjaGVkLlxuICAgKi9cbiAgcHVibGljIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90b3VjaGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzdGF0dXMuXG4gICAqIE9ubHkgZm9yIHZhbGlkICYgaW52YWxpZCBzdGF0dXMgY2hhbmdlcy5cbiAgICogQW5kIG9ubHkgaWYgdGhlcmUgd2FzIGEgcmVhbCBjaGFuZ2UuXG4gICAqIEFsc28gdXBkYXRlcyBlcnJvcnMgbGlzdC5cbiAgICogRW1pdHMgYHN0YXR1c0NoYW5nZWAgZXZlbnQuXG4gICAqIEBwYXJhbSBjb250cm9sXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlU3RhdHVzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIHRoaXMuX3RvdWNoZWQgPSBjb250cm9sLnRvdWNoZWQ7XG5cbiAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgdmFsaWQgJiBpbnZhbGlkIHN0YXR1cyBjaGFuZ2VzLlxuICAgIC8vIFRoZXJlIGlzIGFuIGJ1ZyB3aGVyZSBgQ2xyRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlLndyaXRlVmFsdWVgIGlzIGNhbGxlZCB0d2ljZSB3aXRoIHNhbWUgdmFsdWUgKGBudWxsYCkuXG4gICAgLy8gU2V0dGluZyBgICYmIChjb250cm9sLnRvdWNoZWQgfHwgY29udHJvbC5kaXJ0eSlgIGluIG5leHQgaWYtc3RhdGVtZW50IHdpbGwgaGlkZSB0aGUgZXJyb3JzLFxuICAgIC8vIGJ1dCB0aGUgY29udHJvbCB3aWxsIHN0aWxsIGJlIGludmFsaWQgd2l0aCBlcnJvcnMgKGp1c3QgaGlkZGVuKS5cbiAgICBpZiAoWydWQUxJRCcsICdJTlZBTElEJ10uaW5jbHVkZXMoY29udHJvbC5zdGF0dXMpKSB7XG4gICAgICB0aGlzLmVycm9ycyA9IGNvbnRyb2wuZXJyb3JzO1xuICAgICAgdGhpcy5faW52YWxpZCA9IGNvbnRyb2wuaW52YWxpZDtcbiAgICAgIHRoaXMuc3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5faW52YWxpZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIHN0YXR1cyBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXR1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { FormatWidth, getLocaleDateFormat } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable, LOCALE_ID } from '@angular/core';
|
|
3
|
+
import { BIG_ENDIAN, DELIMITER_REGEX, LITTLE_ENDIAN, LITTLE_ENDIAN_REGEX, MIDDLE_ENDIAN, MIDDLE_ENDIAN_REGEX, SEPARATOR_TEXT_DEFAULT, USER_INPUT_REGEX, } from '../daterange.constants';
|
|
4
|
+
import { DayModel } from '../models/day.model';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Daterange parsing service.
|
|
8
|
+
* Heavy inspired by `date-io.service.ts` from Clarity.
|
|
9
|
+
* https://github.com/vmware-clarity/ng-clarity/blob/a21fe726fe91ae3c929b8f016359afe354bb89c6/projects/angular/src/forms/datepicker/providers/date-io.service.ts
|
|
10
|
+
*/
|
|
11
|
+
export class DaterangeParsingService {
|
|
12
|
+
constructor(locale) {
|
|
13
|
+
this.locale = locale;
|
|
14
|
+
this.localeDelimiter = [];
|
|
15
|
+
const localeFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);
|
|
16
|
+
const format = localeFormat.toLocaleLowerCase();
|
|
17
|
+
if (LITTLE_ENDIAN_REGEX.test(format)) {
|
|
18
|
+
this.localeDisplayFormat = LITTLE_ENDIAN;
|
|
19
|
+
}
|
|
20
|
+
else if (MIDDLE_ENDIAN_REGEX.test(format)) {
|
|
21
|
+
this.localeDisplayFormat = MIDDLE_ENDIAN;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.localeDisplayFormat = BIG_ENDIAN;
|
|
25
|
+
}
|
|
26
|
+
// Splitting it by date, month and year, leaves us with the delimiters.
|
|
27
|
+
// E.g. `"dd/MM/y".split(/d+|m+|y+/i)` results in `["", "/", "/", ""]`.
|
|
28
|
+
const delimiters = localeFormat.split(DELIMITER_REGEX);
|
|
29
|
+
this.localeDelimiter = [delimiters[1], delimiters[2]];
|
|
30
|
+
}
|
|
31
|
+
/** Locale format. */
|
|
32
|
+
get localeFormat() {
|
|
33
|
+
return (this.localeDisplayFormat.format[0] +
|
|
34
|
+
this.localeDelimiter[0] +
|
|
35
|
+
this.localeDisplayFormat.format[1] +
|
|
36
|
+
this.localeDelimiter[1] +
|
|
37
|
+
this.localeDisplayFormat.format[2]);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Convert daterange to locale friendly text.
|
|
41
|
+
* @param daterange - Daterange.
|
|
42
|
+
* @param separator - Separator between 'from' and 'to' dates.
|
|
43
|
+
* @returns Friendly daterange text.
|
|
44
|
+
*/
|
|
45
|
+
toLocaleString(daterange, separator = SEPARATOR_TEXT_DEFAULT) {
|
|
46
|
+
if (daterange == null) {
|
|
47
|
+
return '';
|
|
48
|
+
}
|
|
49
|
+
const { from, to } = daterange;
|
|
50
|
+
if (from == null || to == null) {
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
const fromDate = from.toDate();
|
|
54
|
+
const toDate = to.toDate();
|
|
55
|
+
const fromDateStr = this.toLocaleDisplayFormatString(fromDate);
|
|
56
|
+
const toDateStr = this.toLocaleDisplayFormatString(toDate);
|
|
57
|
+
return fromDateStr + separator + toDateStr;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Convert date to locale display format string.
|
|
61
|
+
* @param date - Javascript Date object.
|
|
62
|
+
* @returns Locale display format string.
|
|
63
|
+
*/
|
|
64
|
+
toLocaleDisplayFormatString(date) {
|
|
65
|
+
const dateNo = date.getDate();
|
|
66
|
+
const monthNo = date.getMonth() + 1;
|
|
67
|
+
const yearNo = date.getFullYear();
|
|
68
|
+
const dateStr = this.pad(dateNo);
|
|
69
|
+
const monthStr = this.pad(monthNo);
|
|
70
|
+
const delim1 = this.localeDelimiter[0];
|
|
71
|
+
const delim2 = this.localeDelimiter[1];
|
|
72
|
+
if (this.localeDisplayFormat === LITTLE_ENDIAN) {
|
|
73
|
+
return dateStr + delim1 + monthStr + delim2 + yearNo;
|
|
74
|
+
}
|
|
75
|
+
else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {
|
|
76
|
+
return monthStr + delim1 + dateStr + delim2 + yearNo;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return yearNo + delim1 + monthStr + delim2 + dateStr;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* String padding with zeros.
|
|
84
|
+
* @param num - Number to pad.
|
|
85
|
+
* @returns Padded string.
|
|
86
|
+
*/
|
|
87
|
+
pad(num) {
|
|
88
|
+
return num < 10 ? `0${num}` : `${num}`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Parse daterange string to daterange object.
|
|
92
|
+
* @param daterangeString - Daterange string.
|
|
93
|
+
* @param separator - Separator text.
|
|
94
|
+
* @returns Daterange object.
|
|
95
|
+
*/
|
|
96
|
+
parse(daterangeString, separator = SEPARATOR_TEXT_DEFAULT) {
|
|
97
|
+
if (daterangeString == null || daterangeString === '') {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
const [fromString, toString] = daterangeString.split(separator);
|
|
101
|
+
const from = this.getDayModelFromDateString(fromString);
|
|
102
|
+
const to = this.getDayModelFromDateString(toString);
|
|
103
|
+
if (from == null && to == null) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
return { from, to };
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get `DayModel` from date string.
|
|
110
|
+
* @param dateString - Date string.
|
|
111
|
+
* @returns DayModel.
|
|
112
|
+
*/
|
|
113
|
+
getDayModelFromDateString(dateString) {
|
|
114
|
+
if (dateString == null || dateString === '') {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const dateParts = dateString.match(USER_INPUT_REGEX);
|
|
118
|
+
if (dateParts == null || dateParts.length !== 3) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const [firstPart, secondPart, thirdPart] = dateParts;
|
|
122
|
+
if (this.localeDisplayFormat === LITTLE_ENDIAN) {
|
|
123
|
+
// secondPart is month && firstPart is date.
|
|
124
|
+
return this.getDayModelFromDateParts(thirdPart, secondPart, firstPart);
|
|
125
|
+
}
|
|
126
|
+
else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {
|
|
127
|
+
// firstPart is month && secondPart is date.
|
|
128
|
+
return this.getDayModelFromDateParts(thirdPart, firstPart, secondPart);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
// secondPart is month && thirdPart is date.
|
|
132
|
+
return this.getDayModelFromDateParts(firstPart, secondPart, thirdPart);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get `DayModel` from date string parts.
|
|
137
|
+
* @param yearString - Year string.
|
|
138
|
+
* @param monthString - Month string.
|
|
139
|
+
* @param dateString - Date string.
|
|
140
|
+
* @returns DayModel.
|
|
141
|
+
*/
|
|
142
|
+
getDayModelFromDateParts(yearString, monthString, dateString) {
|
|
143
|
+
// Check for valid date part strings.
|
|
144
|
+
let year = parseInt(yearString);
|
|
145
|
+
if (isNaN(year)) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
let month = parseInt(monthString);
|
|
149
|
+
if (isNaN(month)) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
const date = parseInt(dateString);
|
|
153
|
+
if (isNaN(date)) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
// Convert year to 4 digit year.
|
|
157
|
+
year = this.parseToFourDigitYear(year);
|
|
158
|
+
if (year == null) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
// Month is zero-indexed.
|
|
162
|
+
month -= 1;
|
|
163
|
+
// Creating new Javascript Date object, because it will automatically take care of
|
|
164
|
+
// switching to next or previous months & years without we having to worry about it.
|
|
165
|
+
const parsedDate = new Date(year, month, date);
|
|
166
|
+
if (isNaN(parsedDate.getTime())) {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
return new DayModel(parsedDate);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.
|
|
173
|
+
* Window of 80 years before and 20 years after the present year.
|
|
174
|
+
* Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js
|
|
175
|
+
* @param year - Year.
|
|
176
|
+
* @returns Four-digit year.
|
|
177
|
+
*/
|
|
178
|
+
parseToFourDigitYear(year) {
|
|
179
|
+
// Impossible years.
|
|
180
|
+
if (year > 9999 || (year > 100 && year < 999) || year < 10) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
if (year > 999) {
|
|
184
|
+
return year;
|
|
185
|
+
}
|
|
186
|
+
const currYear = new Date().getFullYear();
|
|
187
|
+
const century = Math.floor(currYear / 100) * 100;
|
|
188
|
+
let result = year + century;
|
|
189
|
+
if (result > currYear + 20) {
|
|
190
|
+
result = result - 100;
|
|
191
|
+
}
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
DaterangeParsingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DaterangeParsingService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
196
|
+
DaterangeParsingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DaterangeParsingService, providedIn: 'root' });
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DaterangeParsingService, decorators: [{
|
|
198
|
+
type: Injectable,
|
|
199
|
+
args: [{
|
|
200
|
+
providedIn: 'root',
|
|
201
|
+
}]
|
|
202
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
203
|
+
type: Inject,
|
|
204
|
+
args: [LOCALE_ID]
|
|
205
|
+
}] }]; } });
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLXBhcnNpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9wcm92aWRlcnMvZGF0ZXJhbmdlLXBhcnNpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFDTCxVQUFVLEVBQ1YsZUFBZSxFQUVmLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUFFLFFBQVEsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFakU7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFlbEMsWUFBdUQsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFickQsb0JBQWUsR0FBa0IsRUFBRSxDQUFDO1FBY2xELE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFXLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXhELElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxhQUFhLENBQUM7U0FDMUM7YUFBTSxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsYUFBYSxDQUFDO1NBQzFDO2FBQU07WUFDTCxJ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QyxDQUFDO1FBQy9DLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxvQkFBb0IsQ0FBQyxJQUFZO1FBQ3ZDLG9CQUFvQjtRQUNwQixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxRQUFRLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDekQsSUFBSSxNQUFNLEdBQVcsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQyxJQUFJLE1BQU0sR0FBRyxRQUFRLEdBQUcsRUFBRSxFQUFFO1lBQzFCLE1BQU0sR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7b0hBL01VLHVCQUF1QixrQkFlUCxTQUFTO3dIQWZ6Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFnQnFCLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1hdFdpZHRoLCBnZXRMb2NhbGVEYXRlRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEJJR19FTkRJQU4sXG4gIERFTElNSVRFUl9SRUdFWCxcbiAgSW5wdXREYXRlRGlzcGxheUZvcm1hdCxcbiAgTElUVExFX0VORElBTixcbiAgTElUVExFX0VORElBTl9SRUdFWCxcbiAgTUlERExFX0VORElBTixcbiAgTUlERExFX0VORElBTl9SRUdFWCxcbiAgU0VQQVJBVE9SX1RFWFRfREVGQVVMVCxcbiAgVVNFUl9JTlBVVF9SRUdFWCxcbn0gZnJvbSAnLi4vZGF0ZXJhbmdlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBOdWxsYWJsZURhdGVyYW5nZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0ZXJhbmdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXlNb2RlbCwgTnVsbGFibGVEYXlNb2RlbCB9IGZyb20gJy4uL21vZGVscy9kYXkubW9kZWwnO1xuXG4vKipcbiAqIERhdGVyYW5nZSBwYXJzaW5nIHNlcnZpY2UuXG4gKiBIZWF2eSBpbnNwaXJlZCBieSBgZGF0ZS1pby5zZXJ2aWNlLnRzYCBmcm9tIENsYXJpdHkuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdm13YXJlLWNsYXJpdHkvbmctY2xhcml0eS9ibG9iL2EyMWZlNzI2ZmU5MWFlM2M5MjliOGYwMTYzNTlhZmUzNTRiYjg5YzYvcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvZGF0ZXBpY2tlci9wcm92aWRlcnMvZGF0ZS1pby5zZXJ2aWNlLnRzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcmFuZ2VQYXJzaW5nU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhbGVEaXNwbGF5Rm9ybWF0OiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWxlRGVsaW1pdGVyOiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgLyoqIExvY2FsZSBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXQgbG9jYWxlRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdC5mb3JtYXRbMF0gK1xuICAgICAgdGhpcy5sb2NhbGVEZWxpbWl0ZXJbMF0gK1xuICAgICAgdGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0LmZvcm1hdFsxXSArXG4gICAgICB0aGlzLmxvY2FsZURlbGltaXRlclsxXSArXG4gICAgICB0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQuZm9ybWF0WzJdXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSByZWFkb25seSBsb2NhbGU6IHN0cmluZykge1xuICAgIGNvbnN0IGxvY2FsZUZvcm1hdCA9IGdldExvY2FsZURhdGVGb3JtYXQodGhpcy5sb2NhbGUsIEZvcm1hdFdpZHRoLlNob3J0KTtcbiAgICBjb25zdCBmb3JtYXQ6IHN0cmluZyA9IGxvY2FsZUZvcm1hdC50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKExJVFRMRV9FTkRJQU5fUkVHRVgudGVzdChmb3JtYXQpKSB7XG4gICAgICB0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQgPSBMSVRUTEVfRU5ESUFOO1xuICAgIH0gZWxzZSBpZiAoTUlERExFX0VORElBTl9SRUdFWC50ZXN0KGZvcm1hdCkpIHtcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9IE1JRERMRV9FTkRJQU47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9IEJJR19FTkRJQU47XG4gICAgfVxuXG4gICAgLy8gU3BsaXR0aW5nIGl0IGJ5IGRhdGUsIG1vbnRoIGFuZCB5ZWFyLCBsZWF2ZXMgdXMgd2l0aCB0aGUgZGVsaW1pdGVycy5cbiAgICAvLyBFLmcuIGBcImRkL01NL3lcIi5zcGxpdCgvZCt8bSt8eSsvaSlgIHJlc3VsdHMgaW4gYFtcIlwiLCBcIi9cIiwgXCIvXCIsIFwiXCJdYC5cbiAgICBjb25zdCBkZWxpbWl0ZXJzOiBBcnJheTxzdHJpbmc+ID0gbG9jYWxlRm9ybWF0LnNwbGl0KERFTElNSVRFUl9SRUdFWCk7XG4gICAgdGhpcy5sb2NhbGVEZWxpbWl0ZXIgPSBbZGVsaW1pdGVyc1sxXSwgZGVsaW1pdGVyc1syXV07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBkYXRlcmFuZ2UgdG8gbG9jYWxlIGZyaWVuZGx5IHRleHQuXG4gICAqIEBwYXJhbSBkYXRlcmFuZ2UgLSBEYXRlcmFuZ2UuXG4gICAqIEBwYXJhbSBzZXBhcmF0b3IgLSBTZXBhcmF0b3IgYmV0d2VlbiAnZnJvbScgYW5kICd0bycgZGF0ZXMuXG4gICAqIEByZXR1cm5zIEZyaWVuZGx5IGRhdGVyYW5nZSB0ZXh0LlxuICAgKi9cbiAgcHVibGljIHRvTG9jYWxlU3RyaW5nKGRhdGVyYW5nZTogTnVsbGFibGVEYXRlcmFuZ2UsIHNlcGFyYXRvcjogc3RyaW5nID0gU0VQQVJBVE9SX1RFWFRfREVGQVVMVCk6IHN0cmluZyB7XG4gICAgaWYgKGRhdGVyYW5nZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID0gZGF0ZXJhbmdlO1xuICAgIGlmIChmcm9tID09IG51bGwgfHwgdG8gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGZyb21EYXRlID0gZnJvbS50b0RhdGUoKTtcbiAgICBjb25zdCB0b0RhdGUgPSB0by50b0RhdGUoKTtcblxuICAgIGNvbnN0IGZyb21EYXRlU3RyID0gdGhpcy50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoZnJvbURhdGUpO1xuICAgIGNvbnN0IHRvRGF0ZVN0ciA9IHRoaXMudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKHRvRGF0ZSk7XG5cbiAgICByZXR1cm4gZnJvbURhdGVTdHIgKyBzZXBhcmF0b3IgKyB0b0RhdGVTdHI7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBkYXRlIHRvIGxvY2FsZSBkaXNwbGF5IGZvcm1hdCBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIC0gSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICogQHJldHVybnMgTG9jYWxlIGRpc3BsYXkgZm9ybWF0IHN0cmluZy5cbiAgICovXG4gIHByaXZhdGUgdG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGVObzogbnVtYmVyID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGhObzogbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICBjb25zdCB5ZWFyTm86IG51bWJlciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgIGNvbnN0IGRhdGVTdHI6IHN0cmluZyA9IHRoaXMucGFkKGRhdGVObyk7XG4gICAgY29uc3QgbW9udGhTdHI6IHN0cmluZyA9IHRoaXMucGFkKG1vbnRoTm8pO1xuXG4gICAgY29uc3QgZGVsaW0xID0gdGhpcy5sb2NhbGVEZWxpbWl0ZXJbMF07XG4gICAgY29uc3QgZGVsaW0yID0gdGhpcy5sb2NhbGVEZWxpbWl0ZXJbMV07XG5cbiAgICBpZiAodGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0ID09PSBMSVRUTEVfRU5ESUFOKSB7XG4gICAgICByZXR1cm4gZGF0ZVN0ciArIGRlbGltMSArIG1vbnRoU3RyICsgZGVsaW0yICsgeWVhck5vO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0ID09PSBNSURETEVfRU5ESUFOKSB7XG4gICAgICByZXR1cm4gbW9udGhTdHIgKyBkZWxpbTEgKyBkYXRlU3RyICsgZGVsaW0yICsgeWVhck5vO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geWVhck5vICsgZGVsaW0xICsgbW9udGhTdHIgKyBkZWxpbTIgKyBkYXRlU3RyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpbmcgcGFkZGluZyB3aXRoIHplcm9zLlxuICAgKiBAcGFyYW0gbnVtIC0gTnVtYmVyIHRvIHBhZC5cbiAgICogQHJldHVybnMgUGFkZGVkIHN0cmluZy5cbiAgICovXG4gIHByaXZhdGUgcGFkKG51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbnVtIDwgMTAgPyBgMCR7bnVtfWAgOiBgJHtudW19YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBkYXRlcmFuZ2Ugc3RyaW5nIHRvIGRhdGVyYW5nZSBvYmplY3QuXG4gICAqIEBwYXJhbSBkYXRlcmFuZ2VTdHJpbmcgLSBEYXRlcmFuZ2Ugc3RyaW5nLlxuICAgKiBAcGFyYW0gc2VwYXJhdG9yIC0gU2VwYXJhdG9yIHRleHQuXG4gICAqIEByZXR1cm5zIERhdGVyYW5nZSBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgcGFyc2UoZGF0ZXJhbmdlU3RyaW5nOiBzdHJpbmcsIHNlcGFyYXRvcjogc3RyaW5nID0gU0VQQVJBVE9SX1RFWFRfREVGQVVMVCk6IE51bGxhYmxlRGF0ZXJhbmdlIHtcbiAgICBpZiAoZGF0ZXJhbmdlU3RyaW5nID09IG51bGwgfHwgZGF0ZXJhbmdlU3RyaW5nID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgW2Zyb21TdHJpbmcsIHRvU3RyaW5nXSA9IGRhdGVyYW5nZVN0cmluZy5zcGxpdChzZXBhcmF0b3IpO1xuICAgIGNvbnN0IGZyb20gPSB0aGlzLmdldERheU1vZGVsRnJvbURhdGVTdHJpbmcoZnJvbVN0cmluZyk7XG4gICAgY29uc3QgdG8gPSB0aGlzLmdldERheU1vZGVsRnJvbURhdGVTdHJpbmcodG9TdHJpbmcpO1xuXG4gICAgaWYgKGZyb20gPT0gbnVsbCAmJiB0byA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBmcm9tLCB0byB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBgRGF5TW9kZWxgIGZyb20gZGF0ZSBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlU3RyaW5nIC0gRGF0ZSBzdHJpbmcuXG4gICAqIEByZXR1cm5zIERheU1vZGVsLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXREYXlNb2RlbEZyb21EYXRlU3RyaW5nKGRhdGVTdHJpbmc6IHN0cmluZyk6IE51bGxhYmxlRGF5TW9kZWwge1xuICAgIGlmIChkYXRlU3RyaW5nID09IG51bGwgfHwgZGF0ZVN0cmluZyA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVQYXJ0czogUmVnRXhwTWF0Y2hBcnJheSA9IGRhdGVTdHJpbmcubWF0Y2goVVNFUl9JTlBVVF9SRUdFWCk7XG4gICAgaWYgKGRhdGVQYXJ0cyA9PSBudWxsIHx8IGRhdGVQYXJ0cy5sZW5ndGggIT09IDMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFtmaXJzdFBhcnQsIHNlY29uZFBhcnQsIHRoaXJkUGFydF0gPSBkYXRlUGFydHM7XG4gICAgaWYgKHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9PT0gTElUVExFX0VORElBTikge1xuICAgICAgLy8gc2Vjb25kUGFydCBpcyBtb250aCAmJiBmaXJzdFBhcnQgaXMgZGF0ZS5cbiAgICAgIHJldHVybiB0aGlzLmdldERheU1vZGVsRnJvbURhdGVQYXJ0cyh0aGlyZFBhcnQsIHNlY29uZFBhcnQsIGZpcnN0UGFydCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQgPT09IE1JRERMRV9FTkRJQU4pIHtcbiAgICAgIC8vIGZpcnN0UGFydCBpcyBtb250aCAmJiBzZWNvbmRQYXJ0IGlzIGRhdGUuXG4gICAgICByZXR1cm4gdGhpcy5nZXREYXlNb2RlbEZyb21EYXRlUGFydHModGhpcmRQYXJ0LCBmaXJzdFBhcnQsIHNlY29uZFBhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZWNvbmRQYXJ0IGlzIG1vbnRoICYmIHRoaXJkUGFydCBpcyBkYXRlLlxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF5TW9kZWxGcm9tRGF0ZVBhcnRzKGZpcnN0UGFydCwgc2Vjb25kUGFydCwgdGhpcmRQYXJ0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGBEYXlNb2RlbGAgZnJvbSBkYXRlIHN0cmluZyBwYXJ0cy5cbiAgICogQHBhcmFtIHllYXJTdHJpbmcgLSBZZWFyIHN0cmluZy5cbiAgICogQHBhcmFtIG1vbnRoU3RyaW5nIC0gTW9udGggc3RyaW5nLlxuICAgKiBAcGFyYW0gZGF0ZVN0cmluZyAtIERhdGUgc3RyaW5nLlxuICAgKiBAcmV0dXJucyBEYXlNb2RlbC5cbiAgICovXG4gIHByaXZhdGUgZ2V0RGF5TW9kZWxGcm9tRGF0ZVBhcnRzKHllYXJTdHJpbmc6IHN0cmluZywgbW9udGhTdHJpbmc6IHN0cmluZywgZGF0ZVN0cmluZzogc3RyaW5nKTogTnVsbGFibGVEYXlNb2RlbCB7XG4gICAgLy8gQ2hlY2sgZm9yIHZhbGlkIGRhdGUgcGFydCBzdHJpbmdzLlxuICAgIGxldCB5ZWFyOiBudW1iZXIgPSBwYXJzZUludCh5ZWFyU3RyaW5nKTtcbiAgICBpZiAoaXNOYU4oeWVhcikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgbW9udGg6IG51bWJlciA9IHBhcnNlSW50KG1vbnRoU3RyaW5nKTtcbiAgICBpZiAoaXNOYU4obW9udGgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGF0ZTogbnVtYmVyID0gcGFyc2VJbnQoZGF0ZVN0cmluZyk7XG4gICAgaWYgKGlzTmFOKGRhdGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHllYXIgdG8gNCBkaWdpdCB5ZWFyLlxuICAgIHllYXIgPSB0aGlzLnBhcnNlVG9Gb3VyRGlnaXRZZWFyKHllYXIpO1xuICAgIGlmICh5ZWFyID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIE1vbnRoIGlzIHplcm8taW5kZXhlZC5cbiAgICBtb250aCAtPSAxO1xuXG4gICAgLy8gQ3JlYXRpbmcgbmV3IEphdmFzY3JpcHQgRGF0ZSBvYmplY3QsIGJlY2F1c2UgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHRha2UgY2FyZSBvZlxuICAgIC8vIHN3aXRjaGluZyB0byBuZXh0IG9yIHByZXZpb3VzIG1vbnRocyAmIHllYXJzIHdpdGhvdXQgd2UgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGl0LlxuICAgIGNvbnN0IHBhcnNlZERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSk7XG4gICAgaWYgKGlzTmFOKHBhcnNlZERhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXlNb2RlbChwYXJzZWREYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBpbiBhIHllYXIgYW5kIGlmIGl0IGlzIGEgMiBkaWdpdCB5ZWFyLCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIDQgZGlnaXQgeWVhci5cbiAgICogV2luZG93IG9mIDgwIHllYXJzIGJlZm9yZSBhbmQgMjAgeWVhcnMgYWZ0ZXIgdGhlIHByZXNlbnQgeWVhci5cbiAgICogQ3JlZGl0OiBodHRwczovL2dpdGh1Yi5jb20vZ2xvYmFsaXplanMvZ2xvYmFsaXplL2Jsb2IvZTFiMzFjZDZhNGYxY2ZmNzViMTg1YjY4YjdhMzIyMjBhYWM1MTk2Zi9zcmMvZGF0ZS9wYXJzZS5qc1xuICAgKiBAcGFyYW0geWVhciAtIFllYXIuXG4gICAqIEByZXR1cm5zIEZvdXItZGlnaXQgeWVhci5cbiAgICovXG4gIHByaXZhdGUgcGFyc2VUb0ZvdXJEaWdpdFllYXIoeWVhcjogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgLy8gSW1wb3NzaWJsZSB5ZWFycy5cbiAgICBpZiAoeWVhciA+IDk5OTkgfHwgKHllYXIgPiAxMDAgJiYgeWVhciA8IDk5OSkgfHwgeWVhciA8IDEwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoeWVhciA+IDk5OSkge1xuICAgICAgcmV0dXJuIHllYXI7XG4gICAgfVxuXG4gICAgY29uc3QgY3VyclllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBjZW50dXJ5OiBudW1iZXIgPSBNYXRoLmZsb29yKGN1cnJZZWFyIC8gMTAwKSAqIDEwMDtcbiAgICBsZXQgcmVzdWx0OiBudW1iZXIgPSB5ZWFyICsgY2VudHVyeTtcbiAgICBpZiAocmVzdWx0ID4gY3VyclllYXIgKyAyMCkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IC0gMTAwO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
|