@datarailsshared/datarailsshared 1.4.22-tigers → 1.4.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/bundles/datarailsshared-datarailsshared.umd.js +1280 -1403
  2. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
  3. package/datarailsshared-datarailsshared-1.4.23.tgz +0 -0
  4. package/datarailsshared-datarailsshared.d.ts +3 -5
  5. package/datarailsshared-datarailsshared.metadata.json +1 -1
  6. package/esm2015/datarailsshared-datarailsshared.js +4 -6
  7. package/esm2015/lib/dr-avatar/dr-avatar.component.js +1 -1
  8. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.js +47 -0
  9. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.component.js +183 -0
  10. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.service.js +41 -0
  11. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +129 -0
  12. package/esm2015/lib/dr-inputs/dr-inputs.module.js +9 -13
  13. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +3 -13
  14. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +10 -43
  15. package/esm2015/lib/models/datePicker.js +1 -8
  16. package/esm2015/public-api.js +3 -3
  17. package/fesm2015/datarailsshared-datarailsshared.js +1256 -1357
  18. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
  19. package/lib/dr-inputs/{date-pickers/directives → dr-date-picker}/dr-date-picker-format.directive.d.ts +1 -1
  20. package/lib/dr-inputs/dr-date-picker/dr-date-picker.component.d.ts +54 -0
  21. package/lib/dr-inputs/dr-date-picker/dr-date-picker.service.d.ts +12 -0
  22. package/lib/dr-inputs/{date-pickers → dr-date-picker}/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +4 -4
  23. package/lib/dr-tooltip/dr-tooltip.component.d.ts +0 -4
  24. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +0 -4
  25. package/lib/models/datePicker.d.ts +0 -12
  26. package/package.json +1 -1
  27. package/public-api.d.ts +2 -1
  28. package/datarailsshared-datarailsshared-1.4.22-tigers.tgz +0 -0
  29. package/esm2015/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.js +0 -47
  30. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +0 -152
  31. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +0 -72
  32. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +0 -128
  33. package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +0 -55
  34. package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +0 -55
  35. package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +0 -26
  36. package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +0 -18
@@ -1,5 +1,5 @@
1
1
  import { NgControl } from '@angular/forms';
2
- import { CustomDateFormat, DateDisplay, DateParse } from '../../../models/datePicker';
2
+ import { CustomDateFormat, DateDisplay, DateParse } from '../../models/datePicker';
3
3
  export declare class DrDatePickerFormatDirective {
4
4
  matDateFormat: CustomDateFormat;
5
5
  private ngControl;
@@ -0,0 +1,54 @@
1
+ import { ChangeDetectorRef, AfterViewInit, OnDestroy, EventEmitter } from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+ import { MatDatepicker } from '@angular/material/datepicker';
4
+ import { Moment } from 'moment';
5
+ import { DrDatePickerCustomHeaderComponent } from './dr-date-picker_custom-header/dr-date-picker_custom-header.component';
6
+ import { DateAdapter } from '@angular/material/core';
7
+ import { DrDatePickerService } from './dr-date-picker.service';
8
+ export declare class DrDatePickerComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {
9
+ private cdr;
10
+ private _dateAdapter;
11
+ private datePickerService;
12
+ private _destroyed;
13
+ readonly: boolean;
14
+ _format: string;
15
+ customHeader: typeof DrDatePickerCustomHeaderComponent;
16
+ onChangeFormat: EventEmitter<string>;
17
+ set format(value: any);
18
+ timeframeSelection: boolean;
19
+ takeEndOfPeriod: boolean;
20
+ placeholder: string;
21
+ min: Date;
22
+ max: Date;
23
+ dp: any;
24
+ ngAfterViewInit(): void;
25
+ calendarViewSetup: {
26
+ year: (calendar: any) => string;
27
+ month: (calendar: any) => string;
28
+ quarter: (calendar: any) => string;
29
+ day: (calendar: any) => string;
30
+ };
31
+ pagingSetup: {
32
+ year: (forward: any) => void;
33
+ quarter: (forward: any) => void;
34
+ month: (forward: any) => void;
35
+ day: (forward: any) => void;
36
+ };
37
+ private innerValue;
38
+ private onTouchedCallback;
39
+ private onChangeCallback;
40
+ constructor(cdr: ChangeDetectorRef, _dateAdapter: DateAdapter<any>, datePickerService: DrDatePickerService);
41
+ tryToNormalaizeTimeframe(normalizedRef: Moment, timeframe: moment.unitOfTime.StartOf): void;
42
+ get value(): number;
43
+ set value(v: number);
44
+ registerOnChange(fn: any): void;
45
+ registerOnTouched(fn: any): void;
46
+ writeValue(value: any): void;
47
+ get quarterDisplay(): string;
48
+ normalizeValue(value: any): any;
49
+ chosenMonthHandler(normalizedMonth: Moment, datepicker: MatDatepicker<any>): void;
50
+ chosenYearHandler(normalizedYear: Moment, datepicker: MatDatepicker<any>): void;
51
+ pagingClicked(forward: any): void;
52
+ pagingDateChange(actionCall: string, amount: number, forward: boolean): void;
53
+ ngOnDestroy(): void;
54
+ }
@@ -0,0 +1,12 @@
1
+ import { MatDatepicker } from "@angular/material/datepicker";
2
+ import { Moment } from "moment";
3
+ import { Subject, BehaviorSubject } from "rxjs";
4
+ export declare type TimeframeOption = 'day' | 'quarter' | 'month' | 'year';
5
+ export declare class DrDatePickerService {
6
+ timeframe: TimeframeOption;
7
+ format: BehaviorSubject<string>;
8
+ updatedQuater: Subject<Moment>;
9
+ calendarInstance: MatDatepicker<any>;
10
+ getQuarterDisplay(value: any, format: any): string;
11
+ setTimeframe(format: any): void;
12
+ }
@@ -2,7 +2,7 @@ import { OnDestroy, ChangeDetectorRef } from "@angular/core";
2
2
  import { MatCalendar, MatCalendarView } from '@angular/material/datepicker';
3
3
  import { DateAdapter } from '@angular/material/core';
4
4
  import { CustomDateFormat } from "../../../models/datePicker";
5
- import { DrDatePickerService } from "../services/dr-date-picker.service";
5
+ import { DrDatePickerService } from "../dr-date-picker.service";
6
6
  export interface ITimeframeOption {
7
7
  title: string;
8
8
  value: MatCalendarView;
@@ -14,7 +14,7 @@ export declare class DrDatePickerCustomHeaderComponent<Moment> implements OnDest
14
14
  private _dateAdapter;
15
15
  private _dateFormats;
16
16
  private cdr;
17
- datePickerService: DrDatePickerService;
17
+ private datePickerService;
18
18
  private _destroyed;
19
19
  quarters: number[];
20
20
  selectedQuarter: number;
@@ -33,9 +33,9 @@ export declare class DrDatePickerCustomHeaderComponent<Moment> implements OnDest
33
33
  ngOnDestroy(): void;
34
34
  setPeriodLabels(): void;
35
35
  setTimeframe(): void;
36
- get currentViewIsQuarter(): boolean;
36
+ get currentViewIsQuater(): boolean;
37
37
  switchViewOnClickOnPeriodLabel(view: 'year' | 'multi-year'): void;
38
- onSelectQuarter(quarterNumber: number): void;
38
+ onSelectQuater(quarterNumber: number): void;
39
39
  pagingClicked(forward: any): void;
40
40
  pagingDateChange(actionCall: string, amount: number, forward: boolean): void;
41
41
  }
@@ -1,5 +1,4 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
2
  declare type TooltipOptions = {
4
3
  withoutContainerStyles?: boolean;
5
4
  withoutArrow?: boolean;
@@ -11,10 +10,7 @@ export declare class TooltipComponent implements OnInit {
11
10
  options: TooltipOptions;
12
11
  class: string;
13
12
  isContentTemplate: boolean;
14
- isMouseOn$: BehaviorSubject<boolean>;
15
13
  constructor();
16
14
  ngOnInit(): void;
17
- setMouseOn(): void;
18
- unsetMouseOn(): void;
19
15
  }
20
16
  export {};
@@ -8,15 +8,11 @@ export declare class DrTooltipDirective implements OnDestroy {
8
8
  contentContext: {};
9
9
  position: string;
10
10
  class: string;
11
- drTooltipMousleaveTimeout: number;
12
11
  set drTooltipOptions(options: any);
13
12
  set showTooltip(value: boolean);
14
13
  private overlayRef;
15
- private tooltipRef;
16
14
  private options;
17
15
  private manualHandling;
18
- private tooltipMouseOnSubscription;
19
- private mouseleaveTimer;
20
16
  constructor(overlay: Overlay, overlayPositionBuilder: OverlayPositionBuilder, elementRef: ElementRef);
21
17
  ngOnDestroy(): void;
22
18
  show(): void;
@@ -23,15 +23,3 @@ export declare class CustomDateFormat {
23
23
  get display(): DateDisplay;
24
24
  updateDateFormat(parse: DateParse, display?: DateDisplay): void;
25
25
  }
26
- export interface IDatePickerFormatConfig {
27
- day?: string;
28
- month?: string;
29
- year?: string;
30
- quarter?: string;
31
- }
32
- export declare enum DatePickerPeriodPosition {
33
- END_OF_PERIOD = 0,
34
- MIDDLE_OF_PERIOD = 1,
35
- START_OF_PERIOD = 2,
36
- DEFAULT = 3
37
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datarailsshared/datarailsshared",
3
- "version": "1.4.22-tigers",
3
+ "version": "1.4.23",
4
4
  "description": "DataRails shared components",
5
5
  "keywords": [
6
6
  "angular",
package/public-api.d.ts CHANGED
@@ -22,6 +22,8 @@ export * from './lib/dr-inputs/dr-toggle-button/dr-toggle-button.component';
22
22
  export * from './lib/dr-spinner/dr-spinner.component';
23
23
  export * from './lib/dr-spinner/dr-spinner.directive';
24
24
  export * from './lib/dr-inputs/button/button.component';
25
+ export * from './lib/dr-inputs/dr-date-picker/dr-date-picker.component';
26
+ export * from './lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive';
25
27
  export * from './lib/dr-popover/dr-popover.directive';
26
28
  export * from './lib/dr-popover/dr-popover.component';
27
29
  export * from './lib/dr-popover/dr-popover.service';
@@ -37,7 +39,6 @@ export * from './lib/dr-accordion/accordion-item.component';
37
39
  export * from './lib/dr-accordion/accordion-item-header.component';
38
40
  export * from './lib/dr-accordion/accordion-item-body.component';
39
41
  export * from './lib/dr-inputs/dr-model-debounce-change.directive';
40
- export * from './lib/models/datePicker';
41
42
  export { TAG_TYPES, ITag, IDateTag, IListTag, ITagForServer } from './lib/models/serverTags';
42
43
  export { ElPosition, IDropdown, IDropdownItem, IDropdownActionIcon, IDropdownCoordinate, IDropdownCallEvent, IDropdownAction } from './lib/models/dropdown';
43
44
  export { DrPopoverRef, IDrPopoverComponentModel, Point, DrPopoverConfig, IPopoverManualClosing, DrPopoverAlignment, DrPopoverAlignmentDimension, } from './lib/models/popover';
@@ -1,47 +0,0 @@
1
- import { Directive, Inject, Input, Optional } from '@angular/core';
2
- import { NgControl } from '@angular/forms';
3
- import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
4
- import { MomentDateAdapter } from '@angular/material-moment-adapter';
5
- import { CustomDateFormat } from '../../../models/datePicker';
6
- export class DrDatePickerFormatDirective {
7
- constructor(matDateFormat, ngControl) {
8
- this.matDateFormat = matDateFormat;
9
- this.ngControl = ngControl;
10
- }
11
- set datePickerFormat(format) {
12
- var _a;
13
- if (this.configDateParse) {
14
- this.matDateFormat.updateDateFormat(this.configDateParse, this.configDateDisplay);
15
- }
16
- else {
17
- this.matDateFormat.updateDateFormat({ dateInput: format });
18
- }
19
- const value = this.ngControl.value;
20
- (_a = this.ngControl.valueAccessor) === null || _a === void 0 ? void 0 : _a.writeValue(value);
21
- }
22
- }
23
- DrDatePickerFormatDirective.decorators = [
24
- { type: Directive, args: [{
25
- selector: '[drDatePickerFormat]',
26
- providers: [
27
- {
28
- provide: DateAdapter,
29
- useClass: MomentDateAdapter
30
- },
31
- {
32
- provide: MAT_DATE_FORMATS,
33
- useClass: CustomDateFormat
34
- }
35
- ]
36
- },] }
37
- ];
38
- DrDatePickerFormatDirective.ctorParameters = () => [
39
- { type: CustomDateFormat, decorators: [{ type: Inject, args: [MAT_DATE_FORMATS,] }] },
40
- { type: NgControl, decorators: [{ type: Optional }] }
41
- ];
42
- DrDatePickerFormatDirective.propDecorators = {
43
- configDateParse: [{ type: Input }],
44
- configDateDisplay: [{ type: Input }],
45
- datePickerFormat: [{ type: Input, args: ['drDatePickerFormat',] }]
46
- };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXItZm9ybWF0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvZGlyZWN0aXZlcy9kci1kYXRlLXBpY2tlci1mb3JtYXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sNEJBQTRCLENBQUM7QUFldEYsTUFBTSxPQUFPLDJCQUEyQjtJQWtCdEMsWUFDbUMsYUFBK0IsRUFDNUMsU0FBb0I7UUFEUCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDNUMsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUUxQyxDQUFDO0lBbEJELElBQ0ksZ0JBQWdCLENBQUMsTUFBYzs7UUFDakMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ2pDLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNuQyxNQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSwwQ0FBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7O1lBN0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLFdBQVc7d0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7cUJBQzVCO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7d0JBQ3pCLFFBQVEsRUFBRSxnQkFBZ0I7cUJBQzNCO2lCQUNGO2FBQ0Y7OztZQWRRLGdCQUFnQix1QkFrQ3BCLE1BQU0sU0FBQyxnQkFBZ0I7WUFyQ25CLFNBQVMsdUJBc0NiLFFBQVE7Ozs4QkFuQlYsS0FBSztnQ0FDTCxLQUFLOytCQUVMLEtBQUssU0FBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1vbWVudERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZUZvcm1hdCwgRGF0ZURpc3BsYXksIERhdGVQYXJzZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RyRGF0ZVBpY2tlckZvcm1hdF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlclxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUyxcbiAgICAgIHVzZUNsYXNzOiBDdXN0b21EYXRlRm9ybWF0XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERyRGF0ZVBpY2tlckZvcm1hdERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWdEYXRlUGFyc2U6IERhdGVQYXJzZTtcbiAgQElucHV0KCkgcHVibGljIGNvbmZpZ0RhdGVEaXNwbGF5OiBEYXRlRGlzcGxheTtcblxuICBASW5wdXQoJ2RyRGF0ZVBpY2tlckZvcm1hdCcpXG4gIHNldCBkYXRlUGlja2VyRm9ybWF0KGZvcm1hdDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnRGF0ZVBhcnNlKSB7XG4gICAgICB0aGlzLm1hdERhdGVGb3JtYXQudXBkYXRlRGF0ZUZvcm1hdChcbiAgICAgICAgdGhpcy5jb25maWdEYXRlUGFyc2UsXG4gICAgICAgIHRoaXMuY29uZmlnRGF0ZURpc3BsYXlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWF0RGF0ZUZvcm1hdC51cGRhdGVEYXRlRm9ybWF0KHtkYXRlSW5wdXQ6IGZvcm1hdH0pO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMubmdDb250cm9sLnZhbHVlO1xuICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3I/LndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfREFURV9GT1JNQVRTKSBwdWJsaWMgbWF0RGF0ZUZvcm1hdDogQ3VzdG9tRGF0ZUZvcm1hdCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sXG4gICkge1xuICB9XG59XG4iXX0=
@@ -1,152 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, Input, ChangeDetectorRef, ViewChild } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { DatePickerPeriodPosition } from '../../../models/datePicker';
4
- import { DateAdapter } from '@angular/material/core';
5
- import { DrDatePickerService } from '../services/dr-date-picker.service';
6
- import { Subject } from 'rxjs';
7
- import { takeUntil } from 'rxjs/operators';
8
- import { DrDatePickerCustomHeaderComponent } from '../dr-date-picker_custom-header/dr-date-picker_custom-header.component';
9
- const moment = require('moment');
10
- const noop = () => { };
11
- const ɵ0 = noop;
12
- export class DrDatePickerComponent {
13
- constructor(cdr, dateAdapter, datePickerService) {
14
- this.cdr = cdr;
15
- this.dateAdapter = dateAdapter;
16
- this.datePickerService = datePickerService;
17
- // Whether to transform date, taking end, start, middle of preiod (i.e. set middle of month if timeframe='month')
18
- this.periodPosition = DatePickerPeriodPosition.DEFAULT;
19
- this.placeholder = 'Select';
20
- this.calendarViewsTimeframeMapping = {
21
- year: 'multi-year',
22
- month: 'year',
23
- quarter: 'none',
24
- day: 'month',
25
- };
26
- this.customHeader = DrDatePickerCustomHeaderComponent;
27
- this.readonly = true;
28
- this.innerValue = null;
29
- this.destroyed$ = new Subject();
30
- this.onTouchedCallback = noop;
31
- this.onChangeCallback = noop;
32
- datePickerService.updatedQuarter$
33
- .pipe(takeUntil(this.destroyed$))
34
- .subscribe((value) => {
35
- this.setValueFromMoment(value);
36
- });
37
- }
38
- set format(value) {
39
- this.datePickerService.updateTimeframeAndFormat(value);
40
- }
41
- set min(minDate) {
42
- this._min = moment.unix(minDate).utc();
43
- }
44
- set max(maxDate) {
45
- this._max = moment.unix(maxDate).utc();
46
- }
47
- get value() {
48
- return this.innerValue;
49
- }
50
- set value(v) {
51
- if (v !== this.innerValue) {
52
- this.setValueFromMoment(v);
53
- }
54
- this.cdr.markForCheck();
55
- }
56
- ngAfterViewInit() {
57
- this.datePickerService.calendarInstance = this.dp;
58
- this.dp.startView = this.calendarViewsTimeframeMapping[this.datePickerService.timeframe];
59
- }
60
- ngOnDestroy() {
61
- this.destroyed$.next();
62
- this.destroyed$.complete();
63
- }
64
- /**
65
- * Updating component inner value according to datepicker timeframe (day, month etc.)
66
- * and date position in period (start, end, middle)
67
- */
68
- tryToNormalaizeTimeframe() {
69
- const timeframe = this.datePickerService.timeframe;
70
- switch (this.periodPosition) {
71
- case DatePickerPeriodPosition.START_OF_PERIOD:
72
- this.innerValue.startOf(timeframe);
73
- break;
74
- case DatePickerPeriodPosition.END_OF_PERIOD:
75
- this.innerValue.endOf(timeframe);
76
- break;
77
- case DatePickerPeriodPosition.MIDDLE_OF_PERIOD:
78
- this.innerValue.startOf(timeframe);
79
- const endOfPeriod = this.innerValue.clone().endOf(timeframe);
80
- const diff = endOfPeriod.diff(this.innerValue, 'seconds');
81
- this.innerValue.add(diff / 2 + 1, 'seconds');
82
- break;
83
- default:
84
- this.innerValue.startOf(timeframe);
85
- break;
86
- }
87
- }
88
- chosenPeriodHandler(chosenDate, timeframe) {
89
- if (this.datePickerService.timeframe === timeframe) {
90
- this.setValueFromMoment(chosenDate);
91
- this.dp.close();
92
- }
93
- }
94
- /**
95
- * Setting value from outside of component via ngModel or formControl updates
96
- */
97
- writeValue(value) {
98
- this.innerValue = value ? moment.unix(value).utc() : value;
99
- if (this.innerValue) {
100
- this.tryToNormalaizeTimeframe();
101
- }
102
- this.cdr.markForCheck();
103
- }
104
- registerOnChange(fn) {
105
- this.onChangeCallback = fn;
106
- }
107
- registerOnTouched(fn) {
108
- this.onTouchedCallback = fn;
109
- }
110
- /**
111
- * Set inner value from Moment and propagate
112
- * @param momentDate
113
- */
114
- setValueFromMoment(momentDate) {
115
- this.setValue(momentDate.unix());
116
- }
117
- /**
118
- * Set inner value from timestamp and propagate
119
- * @param timestamp
120
- */
121
- setValue(timestamp) {
122
- this.writeValue(timestamp);
123
- this.onChangeCallback(this.innerValue.unix());
124
- }
125
- }
126
- DrDatePickerComponent.decorators = [
127
- { type: Component, args: [{
128
- selector: 'dr-date-picker',
129
- template: "<i class=\"dr-icon-schedule\"></i>\n<input [(ngModel)]=\"value\"\n (click)=\"datePicker.open()\"\n [matDatepicker]=\"datePicker\"\n [placeholder]=\"placeholder\"\n [drDatePickerFormat]=\"datePickerService.format$ | async\"\n [readonly]=\"readonly\"\n [min]=\"_min\"\n [max]=\"_max\"/>\n<mat-datepicker #datePicker\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenPeriodHandler($event, 'year')\"\n (monthSelected)=\"chosenPeriodHandler($event, 'month')\">\n</mat-datepicker>\n",
130
- changeDetection: ChangeDetectionStrategy.OnPush,
131
- providers: [
132
- { provide: NG_VALUE_ACCESSOR, useExisting: DrDatePickerComponent, multi: true },
133
- { provide: DrDatePickerService }
134
- ],
135
- styles: [":host{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:\"Poppins\",sans-serif;background-color:#fff;border:1px solid #C3C4CE;border-radius:6px;color:#85889c;overflow:hidden;outline:none;cursor:pointer}:host:hover{border-color:#85889c}:host:focus-within{border-color:#21b8f1!important;color:#151b3f}:host.disabled{pointer-events:none;border:none;color:#85889c;background:#E5E6EA}:host.ng-valid.ng-dirty{border-color:#03a678}:host.ng-invalid.ng-dirty:not(:focus-within){border-color:#de2833!important}:host.ng-untouched.ng-valid{border-color:#c3c4ce}:host:after,:host:before{position:absolute;display:flex;border-color:#999999 transparent transparent;color:#999}:host:after{content:\"\";height:0;width:0;border-style:solid;border-width:5px 5px 2.5px;right:11px;top:13px}:host i{position:absolute;color:#999;left:8px;top:3px}:host input{display:flex;flex-grow:1;height:100%;border:none;text-align:left;padding-left:35px;padding-right:25px;cursor:pointer!important;outline:none}:host input.when-quarter{position:absolute;visibility:hidden}:host input:disabled{border:none;color:#85889c;background:transparent}:host input::-webkit-search-decoration,:host input::-webkit-search-cancel-button,:host input::-webkit-search-results-button,:host input::-webkit-search-results-decoration{-webkit-appearance:none}::ng-deep .mat-datepicker-content{margin:7px 0;box-shadow:0 4px 8px 1px #00000040;border-radius:12px!important}::ng-deep .mat-datepicker-content button[disabled]{border:inherit;color:inherit;background-color:inherit}::ng-deep .mat-datepicker-content button[disabled]:hover{border:inherit}::ng-deep .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#F2F2FB;color:#4646ce;font-weight:600}::ng-deep .mat-calendar-body-selected{background-color:#4646ce;color:#f2f2fb;font-weight:600}::ng-deep .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:none}::ng-deep .mat-button-focus-overlay{background:#F3F7FF}::ng-deep .mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:1!important;background:#F3F7FF;transition:opacity .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-calendar-controls .mat-calendar-period-button:hover{background:#F3F7FF;transition:background .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-calendar-table-header th{font-size:14px;font-weight:600;color:#19181a}::ng-deep .mat-calendar-table-header-divider{display:none}::ng-deep .mat-calendar-body-label{color:#fff;padding:0}\n"]
136
- },] }
137
- ];
138
- DrDatePickerComponent.ctorParameters = () => [
139
- { type: ChangeDetectorRef },
140
- { type: DateAdapter },
141
- { type: DrDatePickerService }
142
- ];
143
- DrDatePickerComponent.propDecorators = {
144
- format: [{ type: Input }],
145
- min: [{ type: Input }],
146
- max: [{ type: Input }],
147
- periodPosition: [{ type: Input }],
148
- placeholder: [{ type: Input }],
149
- dp: [{ type: ViewChild, args: ['datePicker',] }]
150
- };
151
- export { ɵ0 };
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLGlCQUFpQixFQUFFLFNBQVMsRUFDN0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUUzSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDOztBQVl0QixNQUFNLE9BQU8scUJBQXFCO0lBNkNoQyxZQUNZLEdBQXNCLEVBQ3RCLFdBQTZCLEVBQ2hDLGlCQUFzQztRQUZuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQXBDL0MsaUhBQWlIO1FBQ3hHLG1CQUFjLEdBQTZCLHdCQUF3QixDQUFDLE9BQU8sQ0FBQztRQUU1RSxnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUlqQyxrQ0FBNkIsR0FBUTtZQUMxQyxJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUUsTUFBTTtZQUNiLE9BQU8sRUFBRSxNQUFNO1lBQ2YsR0FBRyxFQUFFLE9BQU87U0FDYixDQUFBO1FBRU0saUJBQVksR0FBRyxpQ0FBaUMsQ0FBQztRQUNqRCxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBZWIsZUFBVSxHQUFXLElBQUksQ0FBQztRQUMxQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQW1FckMsc0JBQWlCLEdBQWUsSUFBSSxDQUFDO1FBQ3JDLHFCQUFnQixHQUFxQixJQUFJLENBQUM7UUE3RC9DLGlCQUFpQixDQUFDLGVBQWU7YUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQXJERCxJQUFhLE1BQU0sQ0FBQyxLQUFLO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsSUFBYSxHQUFHLENBQUMsT0FBZTtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUNELElBQWEsR0FBRyxDQUFDLE9BQWU7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFxQkQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLEtBQUssQ0FBQyxDQUFTO1FBQ3hCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBaUJELGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQTtRQUNsRCxRQUFPLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDMUIsS0FBSyx3QkFBd0IsQ0FBQyxlQUFlO2dCQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssd0JBQXdCLENBQUMsYUFBYTtnQkFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07WUFDUixLQUFLLHdCQUF3QixDQUFDLGdCQUFnQjtnQkFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksR0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1I7Z0JBQ0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07U0FDVDtJQUNILENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQzlELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUlNLGdCQUFnQixDQUFDLEVBQU87UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQ00saUJBQWlCLENBQUMsRUFBTztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDUSxrQkFBa0IsQ0FBQyxVQUFrQjtRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDTyxRQUFRLENBQUMsU0FBaUI7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7OztZQWhKRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsMGhCQUE4QztnQkFFOUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLFNBQVMsRUFBRTtvQkFDVCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtvQkFDL0UsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7aUJBQ2pDOzthQUNGOzs7WUF2QkMsaUJBQWlCO1lBS1YsV0FBVztZQUNYLG1CQUFtQjs7O3FCQW9CekIsS0FBSztrQkFHTCxLQUFLO2tCQUdMLEtBQUs7NkJBS0wsS0FBSzswQkFFTCxLQUFLO2lCQUVMLFNBQVMsU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RyLWRhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyQ3VzdG9tSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZHItZGF0ZS1waWNrZXJfY3VzdG9tLWhlYWRlci9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyLmNvbXBvbmVudCc7XG5cbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoJ21vbWVudCcpO1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkci1kYXRlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kci1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJEYXRlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogRHJEYXRlUGlja2VyU2VydmljZSB9XG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHNldCBmb3JtYXQodmFsdWUpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG1pbihtaW5EYXRlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9taW4gPSBtb21lbnQudW5peChtaW5EYXRlKS51dGMoKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbWF4KG1heERhdGU6IG51bWJlcikge1xuICAgIHRoaXMuX21heCA9IG1vbWVudC51bml4KG1heERhdGUpLnV0YygpO1xuICB9XG5cbiAgLy8gV2hldGhlciB0byB0cmFuc2Zvcm0gZGF0ZSwgdGFraW5nIGVuZCwgc3RhcnQsIG1pZGRsZSBvZiBwcmVpb2QgKGkuZS4gc2V0IG1pZGRsZSBvZiBtb250aCBpZiB0aW1lZnJhbWU9J21vbnRoJylcbiAgQElucHV0KCkgcGVyaW9kUG9zaXRpb246IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiA9IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5ERUZBVUxUO1xuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0JztcblxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgcHVibGljIGRwOiBhbnk7XG5cbiAgcHVibGljIGNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nOiBhbnkgPSB7XG4gICAgeWVhcjogJ211bHRpLXllYXInLFxuICAgIG1vbnRoOiAneWVhcicsXG4gICAgcXVhcnRlcjogJ25vbmUnLFxuICAgIGRheTogJ21vbnRoJyxcbiAgfVxuXG4gIHB1YmxpYyBjdXN0b21IZWFkZXIgPSBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQ7XG4gIHB1YmxpYyByZWFkb25seSA9IHRydWU7XG4gIHB1YmxpYyBfbWluOiBNb21lbnQ7XG4gIHB1YmxpYyBfbWF4OiBNb21lbnQ7XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBNb21lbnQge1xuICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IE1vbWVudCkge1xuICAgIGlmICh2ICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWVGcm9tTW9tZW50KHYpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbm5lclZhbHVlOiBNb21lbnQgPSBudWxsO1xuICBwcm90ZWN0ZWQgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+ICgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICBwdWJsaWMgZGF0ZVBpY2tlclNlcnZpY2U6IERyRGF0ZVBpY2tlclNlcnZpY2VcbiAgKSB7XG4gICAgZGF0ZVBpY2tlclNlcnZpY2UudXBkYXRlZFF1YXJ0ZXIkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tTW9tZW50KHZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZSA9IHRoaXMuZHA7XG4gICAgdGhpcy5kcC5zdGFydFZpZXcgPSB0aGlzLmNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nW3RoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRpbmcgY29tcG9uZW50IGlubmVyIHZhbHVlIGFjY29yZGluZyB0byBkYXRlcGlja2VyIHRpbWVmcmFtZSAoZGF5LCBtb250aCBldGMuKVxuICAgKiBhbmQgZGF0ZSBwb3NpdGlvbiBpbiBwZXJpb2QgKHN0YXJ0LCBlbmQsIG1pZGRsZSlcbiAgICovXG4gIHRyeVRvTm9ybWFsYWl6ZVRpbWVmcmFtZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZVxuICAgIHN3aXRjaCh0aGlzLnBlcmlvZFBvc2l0aW9uKSB7XG4gICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5TVEFSVF9PRl9QRVJJT0Q6XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZS5zdGFydE9mKHRpbWVmcmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uRU5EX09GX1BFUklPRDpcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlLmVuZE9mKHRpbWVmcmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uTUlERExFX09GX1BFUklPRDpcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlLnN0YXJ0T2YodGltZWZyYW1lKTtcbiAgICAgICAgY29uc3QgZW5kT2ZQZXJpb2QgPSB0aGlzLmlubmVyVmFsdWUuY2xvbmUoKS5lbmRPZih0aW1lZnJhbWUpO1xuICAgICAgICBjb25zdCBkaWZmID0gZW5kT2ZQZXJpb2QuZGlmZih0aGlzLmlubmVyVmFsdWUsICdzZWNvbmRzJyk7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZS5hZGQoZGlmZi8yICsgMSwgJ3NlY29uZHMnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmlubmVyVmFsdWUuc3RhcnRPZih0aW1lZnJhbWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hvc2VuUGVyaW9kSGFuZGxlcihjaG9zZW5EYXRlOiBNb21lbnQsIHRpbWVmcmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSB0aW1lZnJhbWUpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWVGcm9tTW9tZW50KGNob3NlbkRhdGUpO1xuICAgICAgdGhpcy5kcC5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHZhbHVlIGZyb20gb3V0c2lkZSBvZiBjb21wb25lbnQgdmlhIG5nTW9kZWwgb3IgZm9ybUNvbnRyb2wgdXBkYXRlc1xuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlID8gbW9tZW50LnVuaXgodmFsdWUpLnV0YygpIDogdmFsdWU7XG4gICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgdGhpcy50cnlUb05vcm1hbGFpemVUaW1lZnJhbWUoKTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwdWJsaWMgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSBNb21lbnQgYW5kIHByb3BhZ2F0ZVxuICAgKiBAcGFyYW0gbW9tZW50RGF0ZVxuICAgKi9cbiAgIHByb3RlY3RlZCBzZXRWYWx1ZUZyb21Nb21lbnQobW9tZW50RGF0ZTogTW9tZW50KSB7XG4gICAgdGhpcy5zZXRWYWx1ZShtb21lbnREYXRlLnVuaXgoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGlubmVyIHZhbHVlIGZyb20gdGltZXN0YW1wIGFuZCBwcm9wYWdhdGVcbiAgICogQHBhcmFtIHRpbWVzdGFtcFxuICAgKi9cbiAgcHJvdGVjdGVkIHNldFZhbHVlKHRpbWVzdGFtcDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKHRpbWVzdGFtcCk7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuaW5uZXJWYWx1ZS51bml4KCkpO1xuICB9XG59XG4iXX0=
@@ -1,72 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, Output, EventEmitter } from '@angular/core';
2
- import { DrDatePickerComponent } from '../dr-date-picker/dr-date-picker.component';
3
- import { DateAdapter } from '@angular/material/core';
4
- import { DrDatePickerService } from '../services/dr-date-picker.service';
5
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
- import { takeUntil } from 'rxjs/operators';
7
- export class DrDatePickerWithTimeframeComponent extends DrDatePickerComponent {
8
- constructor(cdr, dateAdapter, datePickerService) {
9
- super(cdr, dateAdapter, datePickerService);
10
- this.cdr = cdr;
11
- this.dateAdapter = dateAdapter;
12
- this.datePickerService = datePickerService;
13
- this.isDashboardDatepicker = false;
14
- this.onChangeFormat = new EventEmitter();
15
- this.pagingSetup = {
16
- 'year': (forward) => this.pagingDateChange('addCalendarYears', 1, forward),
17
- 'quarter': (forward) => this.pagingDateChange('addCalendarMonths', 3, forward),
18
- 'month': (forward) => this.pagingDateChange('addCalendarMonths', 1, forward),
19
- 'day': (forward) => this.pagingDateChange('addCalendarDays', 1, forward)
20
- };
21
- datePickerService.isTimeframeSelectionEnabled = true;
22
- datePickerService.format$
23
- .pipe(takeUntil(this.destroyed$))
24
- .subscribe((value) => {
25
- this.onChangeFormat.emit(datePickerService.normalizeValue(value));
26
- });
27
- }
28
- get isDashboardClassDisplayed() {
29
- return this.isDashboardDatepicker;
30
- }
31
- ;
32
- get quarterDisplay() {
33
- return this.datePickerService.getQuarterDisplay(this.value);
34
- }
35
- ngOnInit() {
36
- if (this.dateFormatConfig) {
37
- this.datePickerService.formatConfig = Object.assign(Object.assign({}, this.datePickerService.formatConfig), this.dateFormatConfig);
38
- }
39
- }
40
- pagingClicked(forward) {
41
- this.pagingSetup[this.datePickerService.timeframe] && this.pagingSetup[this.datePickerService.timeframe](forward);
42
- this.dp.close();
43
- }
44
- pagingDateChange(actionCall, amount, forward) {
45
- const newValue = this.dateAdapter[actionCall](this.innerValue, forward ? amount : -amount);
46
- this.setValueFromMoment(newValue);
47
- }
48
- }
49
- DrDatePickerWithTimeframeComponent.decorators = [
50
- { type: Component, args: [{
51
- selector: 'dr-date-picker-with-timeframe',
52
- template: "<div class=\"dr-input-date-paging__flip-page-button\"\n (click)=\"pagingClicked(false)\"\n>\n <i class=\"dr-icon-arrow-left presentation_buttons-navigate_input\"></i>\n</div>\n<div class=\"dr-datepicker__input-container\">\n <i *ngIf=\"isDashboardDatepicker\" class=\"dr-icon-date\"></i>\n <div\n class=\"dr-input-date-paging__formatted-value-display\"\n (click)=\"datepickerInput.click()\"\n >\n {{\n !value\n ? placeholder\n : (datePickerService.format$.getValue()?.includes('Q') ? quarterDisplay : value.format(datePickerService.format$.getValue()))\n }}\n </div>\n <input\n #datepickerInput\n [(ngModel)]=\"value\"\n (click)=\"datePicker.open()\"\n [matDatepicker]=\"datePicker\"\n [readonly]=\"readonly\"\n [min]=\"_min\"\n [max]=\"_max\"\n />\n</div>\n<div class=\"dr-input-date-paging__flip-page-button\"\n (click)=\"pagingClicked(true)\">\n <i class=\"dr-icon-arrow-right presentation_buttons-navigate_input\"></i>\n</div>\n<mat-datepicker #datePicker\n class=\"dr-timeframe-datepicker\"\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenPeriodHandler($event, 'year')\"\n (monthSelected)=\"chosenPeriodHandler($event, 'month')\">\n</mat-datepicker>\n",
53
- changeDetection: ChangeDetectionStrategy.OnPush,
54
- providers: [
55
- { provide: NG_VALUE_ACCESSOR, useExisting: DrDatePickerWithTimeframeComponent, multi: true },
56
- { provide: DrDatePickerService }
57
- ],
58
- styles: [":host{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:\"Poppins\",sans-serif;background-color:#fff;border:1px solid #C3C4CE;border-radius:6px;color:#85889c;overflow:hidden;outline:none;cursor:pointer}:host:hover{border-color:#85889c}:host:focus-within{border-color:#21b8f1!important;color:#151b3f}:host.disabled{pointer-events:none;border:none;color:#85889c;background:#E5E6EA}:host.ng-valid.ng-dirty{border-color:#03a678}:host.ng-invalid.ng-dirty:not(:focus-within){border-color:#de2833!important}:host.ng-untouched.ng-valid{border-color:#c3c4ce}:host:after,:host:before{position:absolute;display:flex;border-color:#999999 transparent transparent;color:#999}:host:after{content:\"\";height:0;width:0;border-style:solid;border-width:5px 5px 2.5px;right:11px;top:13px}:host i{position:absolute;color:#999;left:8px;top:3px}:host input{display:flex;flex-grow:1;height:100%;border:none;text-align:left;padding-left:35px;padding-right:25px;cursor:pointer!important;outline:none}:host input.when-quarter{position:absolute;visibility:hidden}:host input:disabled{border:none;color:#85889c;background:transparent}:host input::-webkit-search-decoration,:host input::-webkit-search-cancel-button,:host input::-webkit-search-results-button,:host input::-webkit-search-results-decoration{-webkit-appearance:none}::ng-deep .mat-datepicker-content{margin:7px 0;box-shadow:0 4px 8px 1px #00000040;border-radius:12px!important}::ng-deep .mat-datepicker-content button[disabled]{border:inherit;color:inherit;background-color:inherit}::ng-deep .mat-datepicker-content button[disabled]:hover{border:inherit}::ng-deep .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#F2F2FB;color:#4646ce;font-weight:600}::ng-deep .mat-calendar-body-selected{background-color:#4646ce;color:#f2f2fb;font-weight:600}::ng-deep .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:none}::ng-deep .mat-button-focus-overlay{background:#F3F7FF}::ng-deep .mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:1!important;background:#F3F7FF;transition:opacity .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-calendar-controls .mat-calendar-period-button:hover{background:#F3F7FF;transition:background .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-calendar-table-header th{font-size:14px;font-weight:600;color:#19181a}::ng-deep .mat-calendar-table-header-divider{display:none}::ng-deep .mat-calendar-body-label{color:#fff;padding:0}:host{border:none;display:flex;align-items:center}:host.dr-date-picker-on-dashboard{width:180px;justify-content:space-between}:host.dr-date-picker-on-dashboard mat-datepicker{position:absolute}:host.dr-date-picker-on-dashboard .dr-datepicker__input-container{display:flex;flex-direction:row;justify-content:center;align-items:center;margin-left:-10px}:host.dr-date-picker-on-dashboard .dr-datepicker__input-container .dr-input-date-paging__formatted-value-display{font-weight:600;width:auto;margin-left:5px}:host.dr-date-picker-on-dashboard .dr-datepicker__input-container .dr-icon-date{display:block;position:relative;top:0;margin-right:8px;color:#4e566c}:host .dr-input-date-paging__flip-page-button{width:25px;height:25px;border-radius:16px;padding:0;background-color:#fff}:host .dr-input-date-paging__flip-page-button i{position:relative;color:#0c142b;top:unset;left:unset}:host .dr-input-date-paging__flip-page-button:hover{background-color:#f2f2fb;color:#4646ce}:host input{visibility:hidden;position:absolute;width:100%}:host .dr-input-date-paging__formatted-value-display{width:90px;height:22px;padding-left:0;text-align:center;line-height:22px;color:#0c142b;-webkit-text-decoration-line:underline;text-decoration-line:underline}:host .dr-input-date-paging__formatted-value-display:hover{background-color:#f2f2fb;border-radius:5px;cursor:pointer;-webkit-text-decoration-line:underline;text-decoration-line:underline;color:#4646ce}\n"]
59
- },] }
60
- ];
61
- DrDatePickerWithTimeframeComponent.ctorParameters = () => [
62
- { type: ChangeDetectorRef },
63
- { type: DateAdapter },
64
- { type: DrDatePickerService }
65
- ];
66
- DrDatePickerWithTimeframeComponent.propDecorators = {
67
- isDashboardClassDisplayed: [{ type: HostBinding, args: ['class.dr-date-picker-on-dashboard',] }],
68
- isDashboardDatepicker: [{ type: Input }],
69
- dateFormatConfig: [{ type: Input }],
70
- onChangeFormat: [{ type: Output }]
71
- };
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXItd2l0aC10aW1lZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVkzQyxNQUFNLE9BQU8sa0NBQW1DLFNBQVEscUJBQXFCO0lBc0IzRSxZQUNZLEdBQXNCLEVBQ3RCLFdBQTZCLEVBQ2hDLGlCQUFzQztRQUU3QyxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBSmpDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBbkJ0QywwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFHN0IsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRS9DLGdCQUFXLEdBQUc7WUFD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blN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZHItZGF0ZS1waWNrZXIvZHItZGF0ZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckZvcm1hdENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHItZGF0ZS1waWNrZXItd2l0aC10aW1lZnJhbWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHItZGF0ZS1waWNrZXItd2l0aC10aW1lZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IERyRGF0ZVBpY2tlcldpdGhUaW1lZnJhbWVDb21wb25lbnQsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBEckRhdGVQaWNrZXJTZXJ2aWNlIH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJEYXRlUGlja2VyV2l0aFRpbWVmcmFtZUNvbXBvbmVudCBleHRlbmRzIERyRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kci1kYXRlLXBpY2tlci1vbi1kYXNoYm9hcmQnKSBnZXQgaXNEYXNoYm9hcmRDbGFzc0Rpc3BsYXllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Rhc2hib2FyZERhdGVwaWNrZXI7XG4gIH07XG5cbiAgQElucHV0KCkgaXNEYXNoYm9hcmREYXRlcGlja2VyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRhdGVGb3JtYXRDb25maWc6IElEYXRlUGlja2VyRm9ybWF0Q29uZmlnO1xuXG4gIEBPdXRwdXQoKSBvbkNoYW5nZUZvcm1hdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBwYWdpbmdTZXR1cCA9IHtcbiAgICAneWVhcic6IChmb3J3YXJkKSA9PiAgdGhpcy5wYWdpbmdEYXRlQ2hhbmdlKCdhZGRDYWxlbmRhclllYXJzJywgMSwgZm9yd2FyZCksXG4gICAgJ3F1YXJ0ZXInOiAoZm9yd2FyZCkgPT4gIHRoaXMucGFnaW5nRGF0ZUNoYW5nZSgnYWRkQ2FsZW5kYXJNb250aHMnLCAzLCBmb3J3YXJkKSxcbiAgICAnbW9udGgnOiAoZm9yd2FyZCkgPT4gIHRoaXMucGFnaW5nRGF0ZUNoYW5nZSgnYWRkQ2FsZW5kYXJNb250aHMnLCAxLCBmb3J3YXJkKSxcbiAgICAnZGF5JzogKGZvcndhcmQpID0+ICB0aGlzLnBhZ2luZ0RhdGVDaGFuZ2UoJ2FkZENhbGVuZGFyRGF5cycsIDEsIGZvcndhcmQpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1YXJ0ZXJEaXNwbGF5KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFF1YXJ0ZXJEaXNwbGF5KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxhbnk+LFxuICAgIHB1YmxpYyBkYXRlUGlja2VyU2VydmljZTogRHJEYXRlUGlja2VyU2VydmljZVxuICApIHtcbiAgICBzdXBlcihjZHIsIGRhdGVBZGFwdGVyLCBkYXRlUGlja2VyU2VydmljZSk7XG4gICAgZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVTZWxlY3Rpb25FbmFibGVkID0gdHJ1ZTtcblxuICAgIGRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZvcm1hdC5lbWl0KGRhdGVQaWNrZXJTZXJ2aWNlLm5vcm1hbGl6ZVZhbHVlKHZhbHVlKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhdGVGb3JtYXRDb25maWcpIHtcbiAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZm9ybWF0Q29uZmlnID0gey4uLnRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZm9ybWF0Q29uZmlnLCAuLi50aGlzLmRhdGVGb3JtYXRDb25maWd9O1xuICAgIH1cbiAgfVxuXG4gIHBhZ2luZ0NsaWNrZWQoZm9yd2FyZCkge1xuICAgIHRoaXMucGFnaW5nU2V0dXBbdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWVdICYmIHRoaXMucGFnaW5nU2V0dXBbdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWVdKGZvcndhcmQpO1xuICAgIHRoaXMuZHAuY2xvc2UoKTtcbiAgfVxuXG4gIHBhZ2luZ0RhdGVDaGFuZ2UoYWN0aW9uQ2FsbDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgZm9yd2FyZDogYm9vbGVhbikge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5kYXRlQWRhcHRlclthY3Rpb25DYWxsXSh0aGlzLmlubmVyVmFsdWUsIGZvcndhcmQ/IGFtb3VudDogLSBhbW91bnQpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tTW9tZW50KG5ld1ZhbHVlKTtcbiAgfVxufVxuIl19