@ifsworld/granite-components 6.0.0-beta.5 → 6.0.0-beta.6

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 (139) hide show
  1. package/README.md +4 -28
  2. package/date-picker/index.d.ts +4 -0
  3. package/date-picker/lib/date-picker-base.d.ts +34 -0
  4. package/date-picker/lib/date-picker-trigger-for.directive.d.ts +70 -0
  5. package/date-picker/lib/date-picker.component.d.ts +10 -0
  6. package/date-picker/lib/date-picker.module.d.ts +15 -0
  7. package/date-picker/lib/date-range-picker.component.d.ts +12 -0
  8. package/esm2020/date-picker/ifsworld-granite-components-date-picker.mjs +5 -0
  9. package/esm2020/date-picker/index.mjs +5 -0
  10. package/esm2020/date-picker/lib/date-picker-base.mjs +53 -0
  11. package/esm2020/date-picker/lib/date-picker-trigger-for.directive.mjs +228 -0
  12. package/esm2020/date-picker/lib/date-picker.component.mjs +30 -0
  13. package/esm2020/date-picker/lib/date-picker.module.mjs +58 -0
  14. package/esm2020/date-picker/lib/date-range-picker.component.mjs +46 -0
  15. package/esm2020/lib/arrange-grid/arrange-grid-item.component.mjs +14 -14
  16. package/esm2020/lib/arrange-grid/arrange-grid.component.mjs +19 -19
  17. package/esm2020/lib/arrange-grid/arrange-grid.module.mjs +5 -5
  18. package/esm2020/lib/badge/badge.component.mjs +5 -5
  19. package/esm2020/lib/badge/badge.module.mjs +5 -5
  20. package/esm2020/lib/button/button.component.mjs +9 -9
  21. package/esm2020/lib/button/button.module.mjs +5 -5
  22. package/esm2020/lib/checkbox/checkbox-group.component.mjs +4 -4
  23. package/esm2020/lib/checkbox/checkbox.component.mjs +11 -8
  24. package/esm2020/lib/checkbox/checkbox.module.mjs +5 -5
  25. package/esm2020/lib/chips/chip-input.mjs +25 -25
  26. package/esm2020/lib/chips/chip-list.component.mjs +47 -47
  27. package/esm2020/lib/chips/chip.component.mjs +48 -48
  28. package/esm2020/lib/chips/chips.module.mjs +5 -5
  29. package/esm2020/lib/core/common-behaviors/disabled.mjs +4 -4
  30. package/esm2020/lib/core/core.module.mjs +5 -5
  31. package/esm2020/lib/core/devices/client-input-desktop.directive.mjs +4 -4
  32. package/esm2020/lib/core/devices/client-input-touch.directive.mjs +4 -4
  33. package/esm2020/lib/core/devices/client-output-desktop.directive.mjs +4 -4
  34. package/esm2020/lib/core/devices/client-output-touch.directive.mjs +4 -4
  35. package/esm2020/lib/core/pipes/pure-pipes.module.mjs +5 -5
  36. package/esm2020/lib/core/pipes/title.pipe.mjs +4 -4
  37. package/esm2020/lib/core/radio-checkbox-base.mjs +4 -4
  38. package/esm2020/lib/grid/grid.component.mjs +10 -10
  39. package/esm2020/lib/grid/grid.module.mjs +5 -5
  40. package/esm2020/lib/icon/icon.component.mjs +5 -5
  41. package/esm2020/lib/icon/icon.module.mjs +5 -5
  42. package/esm2020/lib/input-field/input-field.component.mjs +7 -7
  43. package/esm2020/lib/input-field/input-field.module.mjs +5 -5
  44. package/esm2020/lib/label/label.component.mjs +4 -4
  45. package/esm2020/lib/label/label.module.mjs +5 -5
  46. package/esm2020/lib/menu/divider.directive.mjs +4 -4
  47. package/esm2020/lib/menu/menu-base.mjs +31 -31
  48. package/esm2020/lib/menu/menu-item.component.mjs +8 -8
  49. package/esm2020/lib/menu/menu-touch-close.component.mjs +5 -5
  50. package/esm2020/lib/menu/menu-touch-title.component.mjs +8 -8
  51. package/esm2020/lib/menu/menu-trigger-for.directive.mjs +9 -7
  52. package/esm2020/lib/menu/menu.component.mjs +8 -8
  53. package/esm2020/lib/menu/menu.module.mjs +5 -5
  54. package/esm2020/lib/menu/title.directive.mjs +4 -4
  55. package/esm2020/lib/radio-button/radio-button.component.mjs +11 -8
  56. package/esm2020/lib/radio-button/radio-button.module.mjs +5 -5
  57. package/esm2020/lib/radio-button/radio-group.component.mjs +4 -4
  58. package/esm2020/lib/toggle-switch/toggle-switch.component.mjs +12 -8
  59. package/esm2020/lib/toggle-switch/toggle-switch.module.mjs +5 -5
  60. package/esm2020/table/lib/cell/cell-align/cell-align-classes.directive.mjs +4 -4
  61. package/esm2020/table/lib/cell/cell.mjs +4 -4
  62. package/esm2020/table/lib/cell/table-data-cell.component.mjs +5 -5
  63. package/esm2020/table/lib/cell/table-header-cell.component.mjs +5 -5
  64. package/esm2020/table/lib/column/table-column.directive.mjs +4 -4
  65. package/esm2020/table/lib/table.component.mjs +9 -9
  66. package/esm2020/table/lib/table.module.mjs +5 -5
  67. package/esm2020/tooltip/lib/tooltip-trigger-for.directive.mjs +4 -4
  68. package/esm2020/tooltip/lib/tooltip.component.mjs +5 -5
  69. package/esm2020/tooltip/lib/tooltip.module.mjs +5 -5
  70. package/fesm2015/ifsworld-granite-components-date-picker.mjs +401 -0
  71. package/fesm2015/ifsworld-granite-components-date-picker.mjs.map +1 -0
  72. package/fesm2015/ifsworld-granite-components-table.mjs +26 -26
  73. package/fesm2015/ifsworld-granite-components-table.mjs.map +1 -1
  74. package/fesm2015/ifsworld-granite-components-tooltip.mjs +11 -11
  75. package/fesm2015/ifsworld-granite-components-tooltip.mjs.map +1 -1
  76. package/fesm2015/ifsworld-granite-components.mjs +368 -356
  77. package/fesm2015/ifsworld-granite-components.mjs.map +1 -1
  78. package/fesm2020/ifsworld-granite-components-date-picker.mjs +396 -0
  79. package/fesm2020/ifsworld-granite-components-date-picker.mjs.map +1 -0
  80. package/fesm2020/ifsworld-granite-components-table.mjs +26 -26
  81. package/fesm2020/ifsworld-granite-components-table.mjs.map +1 -1
  82. package/fesm2020/ifsworld-granite-components-tooltip.mjs +11 -11
  83. package/fesm2020/ifsworld-granite-components-tooltip.mjs.map +1 -1
  84. package/fesm2020/ifsworld-granite-components.mjs +368 -356
  85. package/fesm2020/ifsworld-granite-components.mjs.map +1 -1
  86. package/lib/arrange-grid/arrange-grid-item.component.d.ts +1 -1
  87. package/lib/arrange-grid/arrange-grid.component.d.ts +1 -1
  88. package/lib/badge/badge.component.d.ts +1 -1
  89. package/lib/button/button.component.d.ts +2 -2
  90. package/lib/checkbox/checkbox-group.component.d.ts +1 -1
  91. package/lib/checkbox/checkbox.component.d.ts +1 -1
  92. package/lib/chips/chip-input.d.ts +1 -1
  93. package/lib/chips/chip-list.component.d.ts +1 -1
  94. package/lib/chips/chip.component.d.ts +1 -1
  95. package/lib/core/client-environment.d.ts +2 -2
  96. package/lib/core/common-behaviors/disabled.d.ts +1 -1
  97. package/lib/core/devices/client-input-desktop.directive.d.ts +1 -1
  98. package/lib/core/devices/client-input-touch.directive.d.ts +1 -1
  99. package/lib/core/devices/client-output-desktop.directive.d.ts +1 -1
  100. package/lib/core/devices/client-output-touch.directive.d.ts +1 -1
  101. package/lib/core/pipes/title.pipe.d.ts +1 -1
  102. package/lib/core/radio-checkbox-base.d.ts +1 -1
  103. package/lib/core/types.d.ts +2 -2
  104. package/lib/grid/grid.component.d.ts +2 -2
  105. package/lib/icon/icon.component.d.ts +1 -1
  106. package/lib/input-field/input-field.component.d.ts +1 -1
  107. package/lib/label/label.component.d.ts +1 -1
  108. package/lib/menu/divider.directive.d.ts +1 -1
  109. package/lib/menu/menu-base.d.ts +3 -3
  110. package/lib/menu/menu-item.component.d.ts +1 -1
  111. package/lib/menu/menu-panel.d.ts +1 -1
  112. package/lib/menu/menu-positions.d.ts +2 -2
  113. package/lib/menu/menu-touch-close.component.d.ts +1 -1
  114. package/lib/menu/menu-touch-title.component.d.ts +1 -1
  115. package/lib/menu/menu-trigger-for.directive.d.ts +2 -1
  116. package/lib/menu/menu.component.d.ts +1 -1
  117. package/lib/menu/title.directive.d.ts +1 -1
  118. package/lib/radio-button/radio-button.component.d.ts +1 -1
  119. package/lib/radio-button/radio-group.component.d.ts +1 -1
  120. package/lib/toggle-switch/toggle-switch.component.d.ts +1 -1
  121. package/package.json +25 -14
  122. package/src/lib/core/style/_mixins.scss +14 -6
  123. package/src/lib/core/style/_overlay.scss +11 -1
  124. package/src/lib/core/style/_tokens.scss +1 -1
  125. package/src/lib/core/style/_z-index.scss +4 -0
  126. package/table/lib/cell/cell-align/cell-align-classes.directive.d.ts +1 -1
  127. package/table/lib/cell/cell.d.ts +1 -1
  128. package/table/lib/cell/table-data-cell.component.d.ts +1 -1
  129. package/table/lib/cell/table-header-cell.component.d.ts +1 -1
  130. package/table/lib/column/table-column.directive.d.ts +1 -1
  131. package/table/lib/table.component.d.ts +1 -1
  132. package/table/lib/table.types.d.ts +1 -1
  133. package/tooltip/lib/tooltip-trigger-for.directive.d.ts +1 -1
  134. package/tooltip/lib/tooltip.component.d.ts +1 -1
  135. package/ifsworld-granite-components.d.ts +0 -5
  136. package/table/ifsworld-granite-components-table.d.ts +0 -5
  137. package/table/package.json +0 -18
  138. package/tooltip/ifsworld-granite-components-tooltip.d.ts +0 -5
  139. package/tooltip/package.json +0 -10
package/README.md CHANGED
@@ -2,12 +2,7 @@
2
2
 
3
3
  This library is an Angular implementation of the [IFS Design System](https://design.ifs.com). The IFS User Experience product group builds and maintains common UI components and tools. [The goal](docs/strategy.md) is to help product teams rapidly build applications with a delightful IFS branded experience.
4
4
 
5
- ![npm](https://img.shields.io/npm/v/@ifsworld/granite-components)
6
- ![npm weekly downloads](https://img.shields.io/npm/dw/@ifsworld/granite-components)
7
- [![@ifsworld/granite-components](https://snyk.io/advisor/npm-package/@ifsworld/granite-components/badge.svg)](https://snyk.io/advisor/npm-package/@ifsworld/granite-components)
8
-
9
- [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
10
- [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
5
+ [![npm peer dependency version (scoped)](https://img.shields.io/npm/dependency-version/%40ifsworld/granite-components/peer/%40angular%2Fcore?color=%23DE3641)](https://angular.io/guide/creating-libraries#ensuring-library-version-compatibility)
11
6
  [![Storybook](https://cdn.jsdelivr.net/gh/storybookjs/brand@main/badge/badge-storybook.svg)](https://uxstorybooklatest.z16.web.core.windows.net/)
12
7
 
13
8
  ## Deployments
@@ -53,21 +48,7 @@ Finally, add them in `src/styles.scss`:
53
48
 
54
49
  ### Support
55
50
 
56
- #### Angular version support matrix
57
-
58
- | Angular / Library | 0.x.x | 1.x.x | 2.x.x | 3.x.x | 4.x.x | 5.x.x |
59
- | ----------------- | ----- | ----- | ----- | ----- | ----- | ----- |
60
- | 10 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
61
- | 11 | ✅ | 🔶 | ✅ | ✅ | ✅ | ❌ |
62
- | 12 | ✅ | ✅ | ✅ | ✅ | 🔶 | ❌ |
63
- | 13 | ✅ | ✅ | ✅ | ✅ | 🔶 | ✅ |
64
- | 14 | 🔶 | 🔶 | 🔶 | 🔶 | 🔶 | 🔶 |
65
-
66
- _Note: we plan to only support our latest release. Beyond that we make no guarantees of continued support._
67
-
68
- ❌ unsupported
69
- 🔶 limited support
70
- ✅ fully supported
51
+ _Note: we only support our latest release. Beyond that we make no guarantees of continued support. Make sure to stay up to date._
71
52
 
72
53
  ## Contributing
73
54
 
@@ -85,14 +66,9 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C
85
66
  - [Create your Standalone Angular Library in 10 minutes](https://indepth.dev/create-your-standalone-angular-library-in-10-minutes/)
86
67
  - [Creating monorepos using NX](https://nx.dev/)
87
68
 
88
- ## What we're working on now (2022)
69
+ ## What we're working on now
89
70
 
90
- - Multi Select Input Control
91
- - Date Picker Control
92
- - Advance Input Control
93
- - Advance Table Control
94
- - Rating Control
95
- - Label Control
71
+ Visit <https://design.ifs.com> to learn more.
96
72
 
97
73
  ## About the product group
98
74
 
@@ -0,0 +1,4 @@
1
+ export * from './lib/date-picker.module';
2
+ export * from './lib/date-picker.component';
3
+ export * from './lib/date-range-picker.component';
4
+ export * from './lib/date-picker-trigger-for.directive';
@@ -0,0 +1,34 @@
1
+ import { ElementRef, EventEmitter, OnInit, TemplateRef } from '@angular/core';
2
+ import { Direction } from '@angular/cdk/bidi';
3
+ import { PrimeNGConfig } from 'primeng/api';
4
+ import { ClientInputInterface, ClientOutputInterface } from '@ifsworld/granite-components';
5
+ import * as i0 from "@angular/core";
6
+ export type PositionX = 'before' | 'after';
7
+ export type PositionY = 'above' | 'below';
8
+ /** Base class with common functionality for date/date-range pickers. */
9
+ export declare class _DatePickerBase implements OnInit {
10
+ _elementRef: ElementRef;
11
+ config: PrimeNGConfig;
12
+ minDate: Date | null;
13
+ maxDate: Date | null;
14
+ firstDayOfWeek: number;
15
+ readonly pickerClosed: EventEmitter<any>;
16
+ templateRef: TemplateRef<any>;
17
+ xPosition: PositionX;
18
+ yPosition: PositionY;
19
+ direction: Direction;
20
+ /**
21
+ * Used for locating the panel in tests and setting the aria-control attribute
22
+ * for the picker trigger.
23
+ */
24
+ readonly panelId: string;
25
+ /** Client input device information */
26
+ clientInput: ClientInputInterface;
27
+ /** Client output device information */
28
+ clientOutput: ClientOutputInterface;
29
+ constructor(_elementRef: ElementRef, config: PrimeNGConfig);
30
+ ngOnInit(): void;
31
+ _handleKeydown(event: KeyboardEvent): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<_DatePickerBase, never>;
33
+ static ɵdir: i0.ɵɵDirectiveDeclaration<_DatePickerBase, never, never, { "minDate": "minDate"; "maxDate": "maxDate"; "firstDayOfWeek": "firstDayOfWeek"; }, { "pickerClosed": "pickerClosed"; }, never, never, false, never>;
34
+ }
@@ -0,0 +1,70 @@
1
+ import { AfterContentInit, ElementRef, OnDestroy, ViewContainerRef } from '@angular/core';
2
+ import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
3
+ import { Directionality } from '@angular/cdk/bidi';
4
+ import { Overlay, OverlayOutsideClickDispatcher } from '@angular/cdk/overlay';
5
+ import { ClientInputInterface, ClientOutputInterface } from '@ifsworld/granite-components';
6
+ import { GraniteDatePickerComponent } from './date-picker.component';
7
+ import { GraniteDateRangePickerComponent } from './date-range-picker.component';
8
+ import * as i0 from "@angular/core";
9
+ export declare class GraniteDatePickerTriggerForDirective implements AfterContentInit, OnDestroy {
10
+ private _overlay;
11
+ private _element;
12
+ private _viewContainerRef;
13
+ private _outsideClickDispatcher;
14
+ /** Client input device information */
15
+ _clientInput: ClientInputInterface;
16
+ /** Client output device information */
17
+ _clientOutput: ClientOutputInterface;
18
+ private _dir;
19
+ private _focusMonitor;
20
+ /** References the picker instance that the trigger is associated with. */
21
+ picker: GraniteDatePickerComponent | GraniteDateRangePickerComponent;
22
+ /** Whether the associated picker is open */
23
+ _isPickerOpen: boolean;
24
+ private _pickerCloseSubscription;
25
+ private _portal;
26
+ private _overlayRef;
27
+ constructor(_overlay: Overlay, _element: ElementRef<HTMLElement>, _viewContainerRef: ViewContainerRef, _outsideClickDispatcher: OverlayOutsideClickDispatcher,
28
+ /** Client input device information */
29
+ _clientInput: ClientInputInterface,
30
+ /** Client output device information */
31
+ _clientOutput: ClientOutputInterface, _dir: Directionality, _focusMonitor: FocusMonitor);
32
+ ngAfterContentInit(): void;
33
+ ngOnDestroy(): void;
34
+ isOpen(): boolean;
35
+ openPicker(): void;
36
+ /** Toggles the picker between the open and closed states. */
37
+ togglePicker(): void;
38
+ /** Close the associated picker */
39
+ closePicker(): void;
40
+ /** Handles key presses on the trigger. */
41
+ _handleKeydown(event: KeyboardEvent): void;
42
+ /** Handles click events on the trigger. */
43
+ _handleClick(): void;
44
+ /**
45
+ * Restores focus to the element that was focused before the picker was open.
46
+ */
47
+ _restoreFocus(origin?: FocusOrigin, options?: FocusOptions): void;
48
+ /**
49
+ * Returns strategy for positioning the overlay for desktop devices:
50
+ */
51
+ private _desktopPositionStrategy;
52
+ /**
53
+ * Sets the appropriate positions on a position strategy
54
+ * so the overlay connects with the trigger correctly.
55
+ * @param positionStrategy Strategy whose position to update.
56
+ */
57
+ private _setPosition;
58
+ /**
59
+ * Returns strategy for positioning the overlay depending on what type of
60
+ * device the picker is being shown on
61
+ */
62
+ private _positionStrategy;
63
+ /**
64
+ * Returns strategy for positioning the overlay for touch devices:
65
+ * Place centered in the screen.
66
+ */
67
+ private _touchPositionStrategy;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDatePickerTriggerForDirective, [null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, null]>;
69
+ static ɵdir: i0.ɵɵDirectiveDeclaration<GraniteDatePickerTriggerForDirective, "[graniteDatePickerTriggerFor]", never, { "picker": "graniteDatePickerTriggerFor"; }, {}, never, never, false, never>;
70
+ }
@@ -0,0 +1,10 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { _DatePickerBase } from './date-picker-base';
3
+ import * as i0 from "@angular/core";
4
+ export declare class GraniteDatePickerComponent extends _DatePickerBase {
5
+ selectedDate: Date | undefined;
6
+ readonly selectionChanged: EventEmitter<Date>;
7
+ dateSelectionChanged(newDate: Date): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDatePickerComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<GraniteDatePickerComponent, "granite-date-picker", never, { "selectedDate": "selectedDate"; }, { "selectionChanged": "selectionChanged"; }, never, never, false, never>;
10
+ }
@@ -0,0 +1,15 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./date-picker.component";
3
+ import * as i2 from "./date-range-picker.component";
4
+ import * as i3 from "./date-picker-trigger-for.directive";
5
+ import * as i4 from "@angular/common";
6
+ import * as i5 from "@angular/cdk/overlay";
7
+ import * as i6 from "primeng/calendar";
8
+ import * as i7 from "@angular/forms";
9
+ import * as i8 from "@ifsworld/granite-components";
10
+ import * as i9 from "@angular/cdk/a11y";
11
+ export declare class GraniteDatePickerModule {
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDatePickerModule, never>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<GraniteDatePickerModule, [typeof i1.GraniteDatePickerComponent, typeof i2.GraniteDateRangePickerComponent, typeof i3.GraniteDatePickerTriggerForDirective], [typeof i4.CommonModule, typeof i5.OverlayModule, typeof i6.CalendarModule, typeof i7.FormsModule, typeof i8.GraniteIconModule, typeof i8.GraniteButtonModule, typeof i9.A11yModule], [typeof i1.GraniteDatePickerComponent, typeof i2.GraniteDateRangePickerComponent, typeof i3.GraniteDatePickerTriggerForDirective]>;
14
+ static ɵinj: i0.ɵɵInjectorDeclaration<GraniteDatePickerModule>;
15
+ }
@@ -0,0 +1,12 @@
1
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { _DatePickerBase } from './date-picker-base';
3
+ import * as i0 from "@angular/core";
4
+ export declare class GraniteDateRangePickerComponent extends _DatePickerBase implements OnChanges {
5
+ selectedDateRange: Date[];
6
+ readonly selectionChanged: EventEmitter<Date[]>;
7
+ _selectedDateRangeInternal: Date[];
8
+ ngOnChanges(changes: SimpleChanges): void;
9
+ dateRangeSelectionChanged(date: Date): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDateRangePickerComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<GraniteDateRangePickerComponent, "granite-date-range-picker", never, { "selectedDateRange": "selectedDateRange"; }, { "selectionChanged": "selectionChanged"; }, never, never, false, never>;
12
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZzd29ybGQtZ3Jhbml0ZS1jb21wb25lbnRzLWRhdGUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvZGF0ZS1waWNrZXIvc3JjL2lmc3dvcmxkLWdyYW5pdGUtY29tcG9uZW50cy1kYXRlLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './lib/date-picker.module';
2
+ export * from './lib/date-picker.component';
3
+ export * from './lib/date-range-picker.component';
4
+ export * from './lib/date-picker-trigger-for.directive';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9kYXRlLXBpY2tlci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcGlja2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcGlja2VyLXRyaWdnZXItZm9yLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { Directive, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
2
+ // eslint-disable-next-line import/no-internal-modules
3
+ import { PrimeNGConfig } from 'primeng/api';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "primeng/api";
6
+ let pickerPanelUid = 0;
7
+ /** Base class with common functionality for date/date-range pickers. */
8
+ // eslint-disable-next-line @angular-eslint/directive-class-suffix
9
+ export class _DatePickerBase {
10
+ constructor(_elementRef, config) {
11
+ this._elementRef = _elementRef;
12
+ this.config = config;
13
+ this.minDate = null;
14
+ this.maxDate = null;
15
+ this.firstDayOfWeek = 0;
16
+ this.pickerClosed = new EventEmitter();
17
+ this.xPosition = 'before';
18
+ this.yPosition = 'below';
19
+ /**
20
+ * Used for locating the panel in tests and setting the aria-control attribute
21
+ * for the picker trigger.
22
+ */
23
+ this.panelId = `granite-date-picker-panel-${pickerPanelUid++}`;
24
+ }
25
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
26
+ ngOnInit() {
27
+ this.config.setTranslation({
28
+ dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
29
+ });
30
+ }
31
+ _handleKeydown(event) {
32
+ if (event.key === 'Escape') {
33
+ this.pickerClosed.emit();
34
+ }
35
+ }
36
+ }
37
+ _DatePickerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: _DatePickerBase, deps: [{ token: i0.ElementRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Directive });
38
+ _DatePickerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: _DatePickerBase, inputs: { minDate: "minDate", maxDate: "maxDate", firstDayOfWeek: "firstDayOfWeek" }, outputs: { pickerClosed: "pickerClosed" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: _DatePickerBase, decorators: [{
40
+ type: Directive
41
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { minDate: [{
42
+ type: Input
43
+ }], maxDate: [{
44
+ type: Input
45
+ }], firstDayOfWeek: [{
46
+ type: Input
47
+ }], pickerClosed: [{
48
+ type: Output
49
+ }], templateRef: [{
50
+ type: ViewChild,
51
+ args: [TemplateRef]
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL2RhdGUtcGlja2VyL3NyYy9saWIvZGF0ZS1waWNrZXItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLHNEQUFzRDtBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFVNUMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBRXZCLHdFQUF3RTtBQUV4RSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLGVBQWU7SUFnQzFCLFlBQW1CLFdBQXVCLEVBQVMsTUFBcUI7UUFBckQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBOUJ4RSxZQUFPLEdBQWdCLElBQUksQ0FBQztRQUc1QixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUc1QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUdsQixpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSTlELGNBQVMsR0FBYyxRQUFRLENBQUM7UUFDaEMsY0FBUyxHQUFjLE9BQU8sQ0FBQztRQUkvQjs7O1dBR0c7UUFDTSxZQUFPLEdBQUcsNkJBQTZCLGNBQWMsRUFBRSxFQUFFLENBQUM7SUFRUSxDQUFDO0lBRTVFLDZFQUE2RTtJQUM3RSxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDekIsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ2pELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBb0I7UUFDakMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7NEdBN0NVLGVBQWU7Z0dBQWYsZUFBZSx3TUFhZixXQUFXOzJGQWJYLGVBQWU7a0JBRjNCLFNBQVM7NkhBSVIsT0FBTztzQkFETixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSUcsWUFBWTtzQkFEcEIsTUFBTTtnQkFHaUIsV0FBVztzQkFBbEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWludGVybmFsLW1vZHVsZXNcbmltcG9ydCB7IFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1xuICBDbGllbnRJbnB1dEludGVyZmFjZSxcbiAgQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxufSBmcm9tICdAaWZzd29ybGQvZ3Jhbml0ZS1jb21wb25lbnRzJztcblxuZXhwb3J0IHR5cGUgUG9zaXRpb25YID0gJ2JlZm9yZScgfCAnYWZ0ZXInO1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvblkgPSAnYWJvdmUnIHwgJ2JlbG93JztcblxubGV0IHBpY2tlclBhbmVsVWlkID0gMDtcblxuLyoqIEJhc2UgY2xhc3Mgd2l0aCBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgZGF0ZS9kYXRlLXJhbmdlIHBpY2tlcnMuICovXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIF9EYXRlUGlja2VyQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBtYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgZmlyc3REYXlPZldlZWs6IG51bWJlciA9IDA7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHBpY2tlckNsb3NlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgeFBvc2l0aW9uOiBQb3NpdGlvblggPSAnYmVmb3JlJztcbiAgeVBvc2l0aW9uOiBQb3NpdGlvblkgPSAnYmVsb3cnO1xuXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBsb2NhdGluZyB0aGUgcGFuZWwgaW4gdGVzdHMgYW5kIHNldHRpbmcgdGhlIGFyaWEtY29udHJvbCBhdHRyaWJ1dGVcbiAgICogZm9yIHRoZSBwaWNrZXIgdHJpZ2dlci5cbiAgICovXG4gIHJlYWRvbmx5IHBhbmVsSWQgPSBgZ3Jhbml0ZS1kYXRlLXBpY2tlci1wYW5lbC0ke3BpY2tlclBhbmVsVWlkKyt9YDtcblxuICAvKiogQ2xpZW50IGlucHV0IGRldmljZSBpbmZvcm1hdGlvbiAqL1xuICBjbGllbnRJbnB1dDogQ2xpZW50SW5wdXRJbnRlcmZhY2U7XG5cbiAgLyoqIENsaWVudCBvdXRwdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gIGNsaWVudE91dHB1dDogQ2xpZW50T3V0cHV0SW50ZXJmYWNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHVibGljIGNvbmZpZzogUHJpbWVOR0NvbmZpZykge31cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbmZpZy5zZXRUcmFuc2xhdGlvbih7XG4gICAgICBkYXlOYW1lc01pbjogWydTJywgJ00nLCAnVCcsICdXJywgJ1QnLCAnRicsICdTJ10sXG4gICAgfSk7XG4gIH1cblxuICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLnBpY2tlckNsb3NlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,228 @@
1
+ import { Directive, ElementRef, Inject, Input, Optional, ViewContainerRef, } from '@angular/core';
2
+ import { FocusMonitor } from '@angular/cdk/a11y';
3
+ import { Directionality } from '@angular/cdk/bidi';
4
+ import { Overlay, OverlayConfig, OverlayOutsideClickDispatcher, } from '@angular/cdk/overlay';
5
+ import { TemplatePortal } from '@angular/cdk/portal';
6
+ import { merge, Subscription } from 'rxjs';
7
+ import { GRANITE_CLIENT_INPUT, GRANITE_CLIENT_OUTPUT, } from '@ifsworld/granite-components';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/cdk/overlay";
10
+ import * as i2 from "@angular/cdk/bidi";
11
+ import * as i3 from "@angular/cdk/a11y";
12
+ export class GraniteDatePickerTriggerForDirective {
13
+ constructor(_overlay, _element, _viewContainerRef, _outsideClickDispatcher,
14
+ /** Client input device information */
15
+ _clientInput,
16
+ /** Client output device information */
17
+ _clientOutput, _dir, _focusMonitor) {
18
+ this._overlay = _overlay;
19
+ this._element = _element;
20
+ this._viewContainerRef = _viewContainerRef;
21
+ this._outsideClickDispatcher = _outsideClickDispatcher;
22
+ this._clientInput = _clientInput;
23
+ this._clientOutput = _clientOutput;
24
+ this._dir = _dir;
25
+ this._focusMonitor = _focusMonitor;
26
+ /** Whether the associated picker is open */
27
+ this._isPickerOpen = false;
28
+ this._pickerCloseSubscription = Subscription.EMPTY;
29
+ this._portal = null;
30
+ this._overlayRef = null;
31
+ }
32
+ ngAfterContentInit() {
33
+ const selectionChanged = this.picker.selectionChanged;
34
+ const closed = this.picker.pickerClosed;
35
+ this._pickerCloseSubscription = merge(selectionChanged, closed).subscribe(() => {
36
+ this.closePicker();
37
+ });
38
+ }
39
+ ngOnDestroy() {
40
+ if (this._overlayRef) {
41
+ this._overlayRef.dispose();
42
+ this._overlayRef = null;
43
+ }
44
+ this._pickerCloseSubscription.unsubscribe();
45
+ }
46
+ isOpen() {
47
+ return this._isPickerOpen;
48
+ }
49
+ openPicker() {
50
+ if (this._isPickerOpen) {
51
+ return;
52
+ }
53
+ this.picker.direction = this._dir.value === 'rtl' ? 'rtl' : 'ltr';
54
+ this.picker.clientInput = this._clientInput;
55
+ this.picker.clientOutput = this._clientOutput;
56
+ const panelClass = [];
57
+ if (this._clientOutput?.device === 'touch') {
58
+ panelClass.push('granite-overlay-pane-center');
59
+ }
60
+ const scrollStrategy = this._clientOutput?.device !== 'touch'
61
+ ? this._overlay.scrollStrategies.reposition()
62
+ : this._overlay.scrollStrategies.block();
63
+ const hasBackdrop = this._clientOutput?.device === 'touch';
64
+ if (!this._overlayRef) {
65
+ const config = new OverlayConfig({
66
+ positionStrategy: this._positionStrategy(),
67
+ backdropClass: 'granite-overlay-dark-glass-backdrop',
68
+ scrollStrategy,
69
+ direction: this._dir,
70
+ panelClass,
71
+ hasBackdrop,
72
+ });
73
+ this._overlayRef = this._overlay.create(config);
74
+ }
75
+ if (!this._portal || this._portal.templateRef !== this.picker.templateRef) {
76
+ this._portal = new TemplatePortal(this.picker.templateRef, this._viewContainerRef);
77
+ }
78
+ // Attach portal to overlay ref (which is a portal outlet)
79
+ this._overlayRef.attach(this._portal);
80
+ this._outsideClickDispatcher.add(this._overlayRef);
81
+ this._overlayRef.outsidePointerEvents().subscribe((event) => {
82
+ event.stopPropagation();
83
+ this.closePicker();
84
+ });
85
+ this._isPickerOpen = true;
86
+ }
87
+ /** Toggles the picker between the open and closed states. */
88
+ togglePicker() {
89
+ if (this._isPickerOpen) {
90
+ this.closePicker();
91
+ }
92
+ else {
93
+ this.openPicker();
94
+ }
95
+ }
96
+ /** Close the associated picker */
97
+ closePicker() {
98
+ if (!this._overlayRef || !this._isPickerOpen) {
99
+ return;
100
+ }
101
+ this._outsideClickDispatcher.remove(this._overlayRef);
102
+ this._overlayRef.detach();
103
+ this._restoreFocus();
104
+ this._isPickerOpen = false;
105
+ }
106
+ /** Handles key presses on the trigger. */
107
+ _handleKeydown(event) {
108
+ if (event.key === 'Enter') {
109
+ event.preventDefault();
110
+ this.togglePicker();
111
+ }
112
+ }
113
+ /** Handles click events on the trigger. */
114
+ _handleClick() {
115
+ this.togglePicker();
116
+ }
117
+ /**
118
+ * Restores focus to the element that was focused before the picker was open.
119
+ */
120
+ _restoreFocus(origin = 'program', options) {
121
+ if (this._focusMonitor) {
122
+ this._focusMonitor.focusVia(this._element, origin, options);
123
+ }
124
+ else {
125
+ this._element.nativeElement.focus(options);
126
+ }
127
+ }
128
+ /**
129
+ * Returns strategy for positioning the overlay for desktop devices:
130
+ */
131
+ _desktopPositionStrategy() {
132
+ const positionStrategy = this._overlay
133
+ .position()
134
+ .flexibleConnectedTo(this._element)
135
+ .withLockedPosition()
136
+ .withTransformOriginOn('.granite-date-picker')
137
+ .withPush(false);
138
+ this._setPosition(positionStrategy);
139
+ return positionStrategy;
140
+ }
141
+ /**
142
+ * Sets the appropriate positions on a position strategy
143
+ * so the overlay connects with the trigger correctly.
144
+ * @param positionStrategy Strategy whose position to update.
145
+ */
146
+ _setPosition(positionStrategy) {
147
+ const [originX, originFallbackX] = this.picker.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];
148
+ const [overlayY, overlayFallbackY] = this.picker.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];
149
+ let [originY, originFallbackY] = [overlayY, overlayFallbackY];
150
+ const [overlayX, overlayFallbackX] = [originX, originFallbackX];
151
+ const offsetY = 0;
152
+ originY = overlayY === 'top' ? 'bottom' : 'top';
153
+ originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
154
+ positionStrategy.withPositions([
155
+ { originX, originY, overlayX, overlayY, offsetY },
156
+ {
157
+ originX: originFallbackX,
158
+ originY,
159
+ overlayX: overlayFallbackX,
160
+ overlayY,
161
+ offsetY,
162
+ },
163
+ {
164
+ originX,
165
+ originY: originFallbackY,
166
+ overlayX,
167
+ overlayY: overlayFallbackY,
168
+ offsetY: -offsetY,
169
+ },
170
+ {
171
+ originX: originFallbackX,
172
+ originY: originFallbackY,
173
+ overlayX: overlayFallbackX,
174
+ overlayY: overlayFallbackY,
175
+ offsetY: -offsetY,
176
+ },
177
+ ]);
178
+ }
179
+ /**
180
+ * Returns strategy for positioning the overlay depending on what type of
181
+ * device the picker is being shown on
182
+ */
183
+ _positionStrategy() {
184
+ if (this._clientOutput?.device !== 'touch') {
185
+ return this._desktopPositionStrategy();
186
+ }
187
+ return this._touchPositionStrategy();
188
+ }
189
+ /**
190
+ * Returns strategy for positioning the overlay for touch devices:
191
+ * Place centered in the screen.
192
+ */
193
+ _touchPositionStrategy() {
194
+ return this._overlay.position().global();
195
+ }
196
+ }
197
+ GraniteDatePickerTriggerForDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GraniteDatePickerTriggerForDirective, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.OverlayOutsideClickDispatcher }, { token: GRANITE_CLIENT_INPUT, optional: true }, { token: GRANITE_CLIENT_OUTPUT, optional: true }, { token: i2.Directionality, optional: true }, { token: i3.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });
198
+ GraniteDatePickerTriggerForDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: GraniteDatePickerTriggerForDirective, selector: "[graniteDatePickerTriggerFor]", inputs: { picker: ["graniteDatePickerTriggerFor", "picker"] }, host: { attributes: { "aria-haspopup": "true" }, listeners: { "keydown": "_handleKeydown($event)", "click": "_handleClick($event)" }, properties: { "attr.aria-expanded": "_isPickerOpen || null", "attr.aria-controls": "_isPickerOpen ? picker.panelId : null" }, classAttribute: "granite-date-picker-trigger" }, ngImport: i0 });
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GraniteDatePickerTriggerForDirective, decorators: [{
200
+ type: Directive,
201
+ args: [{
202
+ selector: `[graniteDatePickerTriggerFor]`,
203
+ host: {
204
+ class: 'granite-date-picker-trigger',
205
+ 'aria-haspopup': 'true',
206
+ '[attr.aria-expanded]': '_isPickerOpen || null',
207
+ '[attr.aria-controls]': '_isPickerOpen ? picker.panelId : null',
208
+ '(keydown)': '_handleKeydown($event)',
209
+ '(click)': '_handleClick($event)',
210
+ },
211
+ }]
212
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1.OverlayOutsideClickDispatcher }, { type: undefined, decorators: [{
213
+ type: Inject,
214
+ args: [GRANITE_CLIENT_INPUT]
215
+ }, {
216
+ type: Optional
217
+ }] }, { type: undefined, decorators: [{
218
+ type: Inject,
219
+ args: [GRANITE_CLIENT_OUTPUT]
220
+ }, {
221
+ type: Optional
222
+ }] }, { type: i2.Directionality, decorators: [{
223
+ type: Optional
224
+ }] }, { type: i3.FocusMonitor }]; }, propDecorators: { picker: [{
225
+ type: Input,
226
+ args: ['graniteDatePickerTriggerFor']
227
+ }] } });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItdHJpZ2dlci1mb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvZGF0ZS1waWNrZXIvc3JjL2xpYi9kYXRlLXBpY2tlci10cmlnZ2VyLWZvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUdMLE9BQU8sRUFDUCxhQUFhLEVBQ2IsNkJBQTZCLEdBSTlCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZELE9BQU8sRUFHTCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBQ3RCLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBZXRDLE1BQU0sT0FBTyxvQ0FBb0M7SUFnQi9DLFlBQ1UsUUFBaUIsRUFDakIsUUFBaUMsRUFDakMsaUJBQW1DLEVBQ25DLHVCQUFzRDtJQUU5RCxzQ0FBc0M7SUFHL0IsWUFBa0M7SUFFekMsdUNBQXVDO0lBR2hDLGFBQW9DLEVBR25DLElBQW9CLEVBRXBCLGFBQTJCO1FBbEIzQixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQXlCO1FBQ2pDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUErQjtRQUt2RCxpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFLbEMsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBR25DLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRXBCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBM0JyQyw0Q0FBNEM7UUFDNUMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdkIsNkJBQXdCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUU5QyxZQUFPLEdBQTBCLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFzQixJQUFJLENBQUM7SUFzQjNDLENBQUM7SUFFSixrQkFBa0I7UUFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFtQyxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBK0IsQ0FBQztRQUUzRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FDdkUsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUU5QyxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sS0FBSyxPQUFPLEVBQUU7WUFDMUMsVUFBVSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsTUFBTSxjQUFjLEdBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxLQUFLLE9BQU87WUFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQzdDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTdDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxLQUFLLE9BQU8sQ0FBQztRQUUzRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQztnQkFDL0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMxQyxhQUFhLEVBQUUscUNBQXFDO2dCQUNwRCxjQUFjO2dCQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDcEIsVUFBVTtnQkFDVixXQUFXO2FBQ1osQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqRDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUM7U0FDSDtRQUNELDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUN0RSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzVDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsY0FBYyxDQUFDLEtBQW9CO1FBQ2pDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsU0FBc0IsU0FBUyxFQUFFLE9BQXNCO1FBQ25FLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM3RDthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLE1BQU0sZ0JBQWdCLEdBQXNDLElBQUksQ0FBQyxRQUFRO2FBQ3RFLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDbEMsa0JBQWtCLEVBQUU7YUFDcEIscUJBQXFCLENBQUMsc0JBQXNCLENBQUM7YUFDN0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5CLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLGdCQUFtRDtRQUN0RSxNQUFNLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxHQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzRSxNQUFNLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEdBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTVFLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLE9BQU8sR0FBRyxRQUFRLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNoRCxlQUFlLEdBQUcsZ0JBQWdCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVoRSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7WUFDN0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO1lBQ2pEO2dCQUNFLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixPQUFPO2dCQUNQLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVE7Z0JBQ1IsT0FBTzthQUNSO1lBQ0Q7Z0JBQ0UsT0FBTztnQkFDUCxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsUUFBUTtnQkFDUixRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixPQUFPLEVBQUUsQ0FBQyxPQUFPO2FBQ2xCO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixPQUFPLEVBQUUsQ0FBQyxPQUFPO2FBQ2xCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGlCQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxLQUFLLE9BQU8sRUFBRTtZQUMxQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssc0JBQXNCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQyxDQUFDOztpSUEzT1Usb0NBQW9DLGdKQXVCckMsb0JBQW9CLDZCQUtwQixxQkFBcUI7cUhBNUJwQixvQ0FBb0M7MkZBQXBDLG9DQUFvQztrQkFYaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLDZCQUE2Qjt3QkFDcEMsZUFBZSxFQUFFLE1BQU07d0JBQ3ZCLHNCQUFzQixFQUFFLHVCQUF1Qjt3QkFDL0Msc0JBQXNCLEVBQUUsdUNBQXVDO3dCQUMvRCxXQUFXLEVBQUUsd0JBQXdCO3dCQUNyQyxTQUFTLEVBQUUsc0JBQXNCO3FCQUNsQztpQkFDRjs7MEJBd0JJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsUUFBUTs7MEJBSVIsTUFBTTsyQkFBQyxxQkFBcUI7OzBCQUM1QixRQUFROzswQkFHUixRQUFRO3VFQTFCWCxNQUFNO3NCQURMLEtBQUs7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtcbiAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICBIb3Jpem9udGFsQ29ubmVjdGlvblBvcyxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIsXG4gIE92ZXJsYXlSZWYsXG4gIFBvc2l0aW9uU3RyYXRlZ3ksXG4gIFZlcnRpY2FsQ29ubmVjdGlvblBvcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBDbGllbnRJbnB1dEludGVyZmFjZSxcbiAgQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxuICBHUkFOSVRFX0NMSUVOVF9JTlBVVCxcbiAgR1JBTklURV9DTElFTlRfT1VUUFVULFxufSBmcm9tICdAaWZzd29ybGQvZ3Jhbml0ZS1jb21wb25lbnRzJztcbmltcG9ydCB7IEdyYW5pdGVEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgW2dyYW5pdGVEYXRlUGlja2VyVHJpZ2dlckZvcl1gLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdncmFuaXRlLWRhdGUtcGlja2VyLXRyaWdnZXInLFxuICAgICdhcmlhLWhhc3BvcHVwJzogJ3RydWUnLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdfaXNQaWNrZXJPcGVuIHx8IG51bGwnLFxuICAgICdbYXR0ci5hcmlhLWNvbnRyb2xzXSc6ICdfaXNQaWNrZXJPcGVuID8gcGlja2VyLnBhbmVsSWQgOiBudWxsJyxcbiAgICAnKGtleWRvd24pJzogJ19oYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICcoY2xpY2spJzogJ19oYW5kbGVDbGljaygkZXZlbnQpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZURhdGVQaWNrZXJUcmlnZ2VyRm9yRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKiBSZWZlcmVuY2VzIHRoZSBwaWNrZXIgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnZ3Jhbml0ZURhdGVQaWNrZXJUcmlnZ2VyRm9yJylcbiAgcGlja2VyOiBHcmFuaXRlRGF0ZVBpY2tlckNvbXBvbmVudCB8IEdyYW5pdGVEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQ7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGFzc29jaWF0ZWQgcGlja2VyIGlzIG9wZW4gKi9cbiAgX2lzUGlja2VyT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3BpY2tlckNsb3NlU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIHByaXZhdGUgX3BvcnRhbDogVGVtcGxhdGVQb3J0YWwgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyOiBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcblxuICAgIC8qKiBDbGllbnQgaW5wdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gICAgQEluamVjdChHUkFOSVRFX0NMSUVOVF9JTlBVVClcbiAgICBAT3B0aW9uYWwoKVxuICAgIHB1YmxpYyBfY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlLFxuXG4gICAgLyoqIENsaWVudCBvdXRwdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gICAgQEluamVjdChHUkFOSVRFX0NMSUVOVF9PVVRQVVQpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgX2NsaWVudE91dHB1dDogQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxuXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxuXG4gICAgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3JcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3Rpb25DaGFuZ2VkID0gdGhpcy5waWNrZXIuc2VsZWN0aW9uQ2hhbmdlZCBhcyBPYnNlcnZhYmxlPGFueT47XG4gICAgY29uc3QgY2xvc2VkID0gdGhpcy5waWNrZXIucGlja2VyQ2xvc2VkIGFzIE9ic2VydmFibGU8YW55PjtcblxuICAgIHRoaXMuX3BpY2tlckNsb3NlU3Vic2NyaXB0aW9uID0gbWVyZ2Uoc2VsZWN0aW9uQ2hhbmdlZCwgY2xvc2VkKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX3BpY2tlckNsb3NlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzUGlja2VyT3BlbjtcbiAgfVxuXG4gIG9wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzUGlja2VyT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGlja2VyLmRpcmVjdGlvbiA9IHRoaXMuX2Rpci52YWx1ZSA9PT0gJ3J0bCcgPyAncnRsJyA6ICdsdHInO1xuICAgIHRoaXMucGlja2VyLmNsaWVudElucHV0ID0gdGhpcy5fY2xpZW50SW5wdXQ7XG4gICAgdGhpcy5waWNrZXIuY2xpZW50T3V0cHV0ID0gdGhpcy5fY2xpZW50T3V0cHV0O1xuXG4gICAgY29uc3QgcGFuZWxDbGFzczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5fY2xpZW50T3V0cHV0Py5kZXZpY2UgPT09ICd0b3VjaCcpIHtcbiAgICAgIHBhbmVsQ2xhc3MucHVzaCgnZ3Jhbml0ZS1vdmVybGF5LXBhbmUtY2VudGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPVxuICAgICAgdGhpcy5fY2xpZW50T3V0cHV0Py5kZXZpY2UgIT09ICd0b3VjaCdcbiAgICAgICAgPyB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIDogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCk7XG5cbiAgICBjb25zdCBoYXNCYWNrZHJvcCA9IHRoaXMuX2NsaWVudE91dHB1dD8uZGV2aWNlID09PSAndG91Y2gnO1xuXG4gICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3koKSxcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ2dyYW5pdGUtb3ZlcmxheS1kYXJrLWdsYXNzLWJhY2tkcm9wJyxcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICBoYXNCYWNrZHJvcCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3BvcnRhbCB8fCB0aGlzLl9wb3J0YWwudGVtcGxhdGVSZWYgIT09IHRoaXMucGlja2VyLnRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLl9wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIHRoaXMucGlja2VyLnRlbXBsYXRlUmVmLFxuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBBdHRhY2ggcG9ydGFsIHRvIG92ZXJsYXkgcmVmICh3aGljaCBpcyBhIHBvcnRhbCBvdXRsZXQpXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2godGhpcy5fcG9ydGFsKTtcbiAgICB0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLmFkZCh0aGlzLl9vdmVybGF5UmVmKTtcbiAgICB0aGlzLl9vdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCkuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9pc1BpY2tlck9wZW4gPSB0cnVlO1xuICB9XG5cbiAgLyoqIFRvZ2dsZXMgdGhlIHBpY2tlciBiZXR3ZWVuIHRoZSBvcGVuIGFuZCBjbG9zZWQgc3RhdGVzLiAqL1xuICB0b2dnbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzUGlja2VyT3Blbikge1xuICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2UgdGhlIGFzc29jaWF0ZWQgcGlja2VyICovXG4gIGNsb3NlUGlja2VyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZiB8fCAhdGhpcy5faXNQaWNrZXJPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUodGhpcy5fb3ZlcmxheVJlZik7XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcblxuICAgIHRoaXMuX3Jlc3RvcmVGb2N1cygpO1xuICAgIHRoaXMuX2lzUGlja2VyT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMga2V5IHByZXNzZXMgb24gdGhlIHRyaWdnZXIuICovXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG9nZ2xlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgY2xpY2sgZXZlbnRzIG9uIHRoZSB0cmlnZ2VyLiAqL1xuICBfaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVQaWNrZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBmb2N1cyB0byB0aGUgZWxlbWVudCB0aGF0IHdhcyBmb2N1c2VkIGJlZm9yZSB0aGUgcGlja2VyIHdhcyBvcGVuLlxuICAgKi9cbiAgX3Jlc3RvcmVGb2N1cyhvcmlnaW46IEZvY3VzT3JpZ2luID0gJ3Byb2dyYW0nLCBvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZvY3VzTW9uaXRvcikge1xuICAgICAgdGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2VsZW1lbnQsIG9yaWdpbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyhvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBzdHJhdGVneSBmb3IgcG9zaXRpb25pbmcgdGhlIG92ZXJsYXkgZm9yIGRlc2t0b3AgZGV2aWNlczpcbiAgICovXG4gIHByaXZhdGUgX2Rlc2t0b3BQb3NpdGlvblN0cmF0ZWd5KCk6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50KVxuICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcuZ3Jhbml0ZS1kYXRlLXBpY2tlcicpXG4gICAgICAud2l0aFB1c2goZmFsc2UpO1xuXG4gICAgdGhpcy5fc2V0UG9zaXRpb24ocG9zaXRpb25TdHJhdGVneSk7XG4gICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYXBwcm9wcmlhdGUgcG9zaXRpb25zIG9uIGEgcG9zaXRpb24gc3RyYXRlZ3lcbiAgICogc28gdGhlIG92ZXJsYXkgY29ubmVjdHMgd2l0aCB0aGUgdHJpZ2dlciBjb3JyZWN0bHkuXG4gICAqIEBwYXJhbSBwb3NpdGlvblN0cmF0ZWd5IFN0cmF0ZWd5IHdob3NlIHBvc2l0aW9uIHRvIHVwZGF0ZS5cbiAgICovXG4gIHByaXZhdGUgX3NldFBvc2l0aW9uKHBvc2l0aW9uU3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSkge1xuICAgIGNvbnN0IFtvcmlnaW5YLCBvcmlnaW5GYWxsYmFja1hdOiBIb3Jpem9udGFsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgIHRoaXMucGlja2VyLnhQb3NpdGlvbiA9PT0gJ2JlZm9yZScgPyBbJ2VuZCcsICdzdGFydCddIDogWydzdGFydCcsICdlbmQnXTtcblxuICAgIGNvbnN0IFtvdmVybGF5WSwgb3ZlcmxheUZhbGxiYWNrWV06IFZlcnRpY2FsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgIHRoaXMucGlja2VyLnlQb3NpdGlvbiA9PT0gJ2Fib3ZlJyA/IFsnYm90dG9tJywgJ3RvcCddIDogWyd0b3AnLCAnYm90dG9tJ107XG5cbiAgICBsZXQgW29yaWdpblksIG9yaWdpbkZhbGxiYWNrWV0gPSBbb3ZlcmxheVksIG92ZXJsYXlGYWxsYmFja1ldO1xuICAgIGNvbnN0IFtvdmVybGF5WCwgb3ZlcmxheUZhbGxiYWNrWF0gPSBbb3JpZ2luWCwgb3JpZ2luRmFsbGJhY2tYXTtcbiAgICBjb25zdCBvZmZzZXRZID0gMDtcblxuICAgIG9yaWdpblkgPSBvdmVybGF5WSA9PT0gJ3RvcCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgIG9yaWdpbkZhbGxiYWNrWSA9IG92ZXJsYXlGYWxsYmFja1kgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcblxuICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyhbXG4gICAgICB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSwgb2Zmc2V0WSB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXG4gICAgICAgIG9yaWdpblksXG4gICAgICAgIG92ZXJsYXlYOiBvdmVybGF5RmFsbGJhY2tYLFxuICAgICAgICBvdmVybGF5WSxcbiAgICAgICAgb2Zmc2V0WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblgsXG4gICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgIG9mZnNldFk6IC1vZmZzZXRZLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0cmF0ZWd5IGZvciBwb3NpdGlvbmluZyB0aGUgb3ZlcmxheSBkZXBlbmRpbmcgb24gd2hhdCB0eXBlIG9mXG4gICAqIGRldmljZSB0aGUgcGlja2VyIGlzIGJlaW5nIHNob3duIG9uXG4gICAqL1xuICBwcml2YXRlIF9wb3NpdGlvblN0cmF0ZWd5KCk6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGlmICh0aGlzLl9jbGllbnRPdXRwdXQ/LmRldmljZSAhPT0gJ3RvdWNoJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2Rlc2t0b3BQb3NpdGlvblN0cmF0ZWd5KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90b3VjaFBvc2l0aW9uU3RyYXRlZ3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0cmF0ZWd5IGZvciBwb3NpdGlvbmluZyB0aGUgb3ZlcmxheSBmb3IgdG91Y2ggZGV2aWNlczpcbiAgICogUGxhY2UgY2VudGVyZWQgaW4gdGhlIHNjcmVlbi5cbiAgICovXG4gIHByaXZhdGUgX3RvdWNoUG9zaXRpb25TdHJhdGVneSgpOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpO1xuICB9XG59XG4iXX0=