@sebgroup/green-angular 4.6.1 → 4.6.3

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 (189) hide show
  1. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +9 -9
  2. package/esm2022/src/v-angular/button/button.component.mjs +5 -5
  3. package/esm2022/src/v-angular/character-countdown/character-countdown.directive.mjs +5 -5
  4. package/esm2022/src/v-angular/core/core.globals.mjs +3 -3
  5. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +4 -4
  6. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +4 -1
  7. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +5 -5
  8. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
  9. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +3 -3
  10. package/esm2022/src/v-angular/input/input.component.mjs +7 -7
  11. package/esm2022/src/v-angular/input-mask/input-mask-format.pipe.mjs +5 -4
  12. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +8 -8
  13. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +16 -16
  14. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +3 -3
  15. package/esm2022/src/v-angular/modal/modal.globals.mjs +3 -3
  16. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +15 -15
  17. package/esm2022/src/v-angular/textarea/textarea.component.mjs +4 -3
  18. package/esm2022/src/v-angular/textarea/textarea.module.mjs +5 -4
  19. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +13 -13
  20. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +287 -0
  21. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +17 -0
  22. package/esm2022/v-angular/base-control-value-accessor/index.mjs +3 -0
  23. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +25 -0
  24. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +20 -0
  25. package/esm2022/v-angular/breadcrumbs/index.mjs +3 -0
  26. package/esm2022/v-angular/button/button.component.mjs +108 -0
  27. package/esm2022/v-angular/button/button.module.mjs +20 -0
  28. package/esm2022/v-angular/button/index.mjs +3 -0
  29. package/esm2022/v-angular/card/card.component.mjs +11 -0
  30. package/esm2022/v-angular/card/card.module.mjs +18 -0
  31. package/esm2022/v-angular/card/index.mjs +3 -0
  32. package/esm2022/v-angular/character-countdown/character-countdown.directive.mjs +51 -0
  33. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +18 -0
  34. package/esm2022/v-angular/character-countdown/index.mjs +3 -0
  35. package/esm2022/v-angular/checkbox/checkbox.component.mjs +72 -0
  36. package/esm2022/v-angular/checkbox/checkbox.module.mjs +19 -0
  37. package/esm2022/v-angular/checkbox/index.mjs +3 -0
  38. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +256 -0
  39. package/esm2022/v-angular/dropdown/dropdown-list/index.mjs +2 -0
  40. package/esm2022/v-angular/dropdown/dropdown.component.mjs +239 -0
  41. package/esm2022/v-angular/dropdown/dropdown.module.mjs +22 -0
  42. package/esm2022/v-angular/dropdown/index.mjs +6 -0
  43. package/esm2022/v-angular/dropdown/typeahead/index.mjs +6 -0
  44. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +98 -0
  45. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +85 -0
  46. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +132 -0
  47. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +177 -0
  48. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +33 -0
  49. package/esm2022/v-angular/i18n/i18n.json +12 -0
  50. package/esm2022/v-angular/i18n/i18n.module.mjs +83 -0
  51. package/esm2022/v-angular/i18n/i18n.test.module.mjs +89 -0
  52. package/esm2022/v-angular/i18n/index.mjs +3 -0
  53. package/esm2022/v-angular/index.mjs +18 -0
  54. package/esm2022/v-angular/info-circle/index.mjs +3 -0
  55. package/esm2022/v-angular/info-circle/info-circle.component.mjs +28 -0
  56. package/esm2022/v-angular/info-circle/info-circle.module.mjs +21 -0
  57. package/esm2022/v-angular/input/index.mjs +3 -0
  58. package/esm2022/v-angular/input/input.component.mjs +221 -0
  59. package/esm2022/v-angular/input/input.module.mjs +32 -0
  60. package/esm2022/v-angular/input-mask/config.mjs +9 -0
  61. package/esm2022/v-angular/input-mask/constants.mjs +2 -0
  62. package/esm2022/v-angular/input-mask/index.mjs +6 -0
  63. package/esm2022/v-angular/input-mask/input-mask-format.pipe.mjs +21 -0
  64. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +165 -0
  65. package/esm2022/v-angular/input-mask/input-mask.module.mjs +35 -0
  66. package/esm2022/v-angular/input-mask/input-mask.types.mjs +2 -0
  67. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +190 -0
  68. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +56 -0
  69. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +19 -0
  70. package/esm2022/v-angular/modal/index.mjs +6 -0
  71. package/esm2022/v-angular/modal/modal.globals.mjs +20 -0
  72. package/esm2022/v-angular/modal/modal.module.mjs +40 -0
  73. package/esm2022/v-angular/modal/modal.types.mjs +2 -0
  74. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +229 -0
  75. package/esm2022/v-angular/radio/index.mjs +3 -0
  76. package/esm2022/v-angular/radio/radio.component.mjs +130 -0
  77. package/esm2022/v-angular/radio/radio.module.mjs +20 -0
  78. package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +5 -0
  79. package/esm2022/v-angular/textarea/index.mjs +3 -0
  80. package/esm2022/v-angular/textarea/textarea.component.mjs +102 -0
  81. package/esm2022/v-angular/textarea/textarea.module.mjs +19 -0
  82. package/esm2022/v-angular/tooltip/index.mjs +3 -0
  83. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +273 -0
  84. package/esm2022/v-angular/tooltip/tooltip.module.mjs +18 -0
  85. package/esm2022/v-angular/v-angular.module.mjs +80 -0
  86. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +8 -8
  87. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  88. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +4 -4
  89. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  90. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +4 -4
  91. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  92. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +2 -2
  93. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  94. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +179 -10
  95. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  96. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +2 -2
  97. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  98. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +11 -10
  99. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  100. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +6 -6
  101. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  102. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +33 -33
  103. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  104. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +7 -5
  105. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  106. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +12 -12
  107. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  108. package/fesm2022/sebgroup-green-angular-v-angular.mjs +3408 -0
  109. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -0
  110. package/package.json +8 -2
  111. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +3 -3
  112. package/src/v-angular/button/button.component.d.ts +2 -2
  113. package/src/v-angular/character-countdown/character-countdown.directive.d.ts +1 -1
  114. package/src/v-angular/core/core.globals.d.ts +1 -1
  115. package/src/v-angular/dropdown/typeahead/index.d.ts +3 -0
  116. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
  117. package/src/v-angular/input/input.component.d.ts +3 -3
  118. package/src/v-angular/input-mask/input-mask-format.pipe.d.ts +1 -1
  119. package/src/v-angular/input-mask/input-mask.directive.d.ts +2 -2
  120. package/src/v-angular/modal/dialog/dialog.component.d.ts +5 -5
  121. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +1 -1
  122. package/src/v-angular/modal/modal.globals.d.ts +1 -1
  123. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +6 -6
  124. package/src/v-angular/textarea/textarea.module.d.ts +2 -1
  125. package/src/v-angular/tooltip/tooltip.directive.d.ts +4 -4
  126. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +124 -0
  127. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +7 -0
  128. package/v-angular/base-control-value-accessor/index.d.ts +2 -0
  129. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +18 -0
  130. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +10 -0
  131. package/v-angular/breadcrumbs/index.d.ts +2 -0
  132. package/v-angular/button/button.component.d.ts +62 -0
  133. package/v-angular/button/button.module.d.ts +10 -0
  134. package/v-angular/button/index.d.ts +2 -0
  135. package/v-angular/card/card.component.d.ts +5 -0
  136. package/v-angular/card/card.module.d.ts +8 -0
  137. package/v-angular/card/index.d.ts +2 -0
  138. package/v-angular/character-countdown/character-countdown.directive.d.ts +17 -0
  139. package/v-angular/character-countdown/character-countdown.module.d.ts +8 -0
  140. package/v-angular/character-countdown/index.d.ts +2 -0
  141. package/v-angular/checkbox/checkbox.component.d.ts +27 -0
  142. package/v-angular/checkbox/checkbox.module.d.ts +9 -0
  143. package/v-angular/checkbox/index.d.ts +2 -0
  144. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +89 -0
  145. package/v-angular/dropdown/dropdown-list/index.d.ts +1 -0
  146. package/v-angular/dropdown/dropdown.component.d.ts +99 -0
  147. package/v-angular/dropdown/dropdown.module.d.ts +12 -0
  148. package/v-angular/dropdown/index.d.ts +5 -0
  149. package/v-angular/dropdown/typeahead/index.d.ts +5 -0
  150. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +34 -0
  151. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +34 -0
  152. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +59 -0
  153. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +76 -0
  154. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +11 -0
  155. package/v-angular/i18n/i18n.module.d.ts +15 -0
  156. package/v-angular/i18n/i18n.test.module.d.ts +27 -0
  157. package/v-angular/i18n/index.d.ts +2 -0
  158. package/v-angular/index.d.ts +17 -0
  159. package/v-angular/info-circle/index.d.ts +2 -0
  160. package/v-angular/info-circle/info-circle.component.d.ts +16 -0
  161. package/v-angular/info-circle/info-circle.module.d.ts +10 -0
  162. package/v-angular/input/index.d.ts +2 -0
  163. package/v-angular/input/input.component.d.ts +90 -0
  164. package/v-angular/input/input.module.d.ts +11 -0
  165. package/v-angular/input-mask/config.d.ts +6 -0
  166. package/v-angular/input-mask/constants.d.ts +2 -0
  167. package/v-angular/input-mask/index.d.ts +5 -0
  168. package/v-angular/input-mask/input-mask-format.pipe.d.ts +8 -0
  169. package/v-angular/input-mask/input-mask.directive.d.ts +39 -0
  170. package/v-angular/input-mask/input-mask.module.d.ts +11 -0
  171. package/v-angular/input-mask/input-mask.types.d.ts +20 -0
  172. package/v-angular/modal/dialog/dialog.component.d.ts +55 -0
  173. package/v-angular/modal/fold-out/fold-out.component.d.ts +24 -0
  174. package/v-angular/modal/fold-out/fold-out.directive.d.ts +6 -0
  175. package/v-angular/modal/index.d.ts +5 -0
  176. package/v-angular/modal/modal.globals.d.ts +13 -0
  177. package/v-angular/modal/modal.module.d.ts +13 -0
  178. package/v-angular/modal/modal.types.d.ts +5 -0
  179. package/v-angular/modal/slide-out/slide-out.component.d.ts +76 -0
  180. package/v-angular/radio/index.d.ts +2 -0
  181. package/v-angular/radio/radio.component.d.ts +48 -0
  182. package/v-angular/radio/radio.module.d.ts +9 -0
  183. package/v-angular/textarea/index.d.ts +2 -0
  184. package/v-angular/textarea/textarea.component.d.ts +44 -0
  185. package/v-angular/textarea/textarea.module.d.ts +9 -0
  186. package/v-angular/tooltip/index.d.ts +2 -0
  187. package/v-angular/tooltip/tooltip.directive.d.ts +106 -0
  188. package/v-angular/tooltip/tooltip.module.d.ts +8 -0
  189. package/v-angular/v-angular.module.d.ts +23 -0
@@ -0,0 +1,273 @@
1
+ import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * A tooltip is a text label that acts as a helper to a specific item.
5
+ * Recommended to use value `top` or `bottom` with `placement` for responsive design.
6
+ * Dynamic resizing and tooltip position are a work in progress.
7
+ * https://designlibrary.sebgroup.com/components/component-tooltip
8
+ */
9
+ export class NgvTooltipDirective {
10
+ /** @internal Check if changes should trigger a re-render */
11
+ static shouldUpdate(change) {
12
+ return (change &&
13
+ !change.firstChange &&
14
+ change.previousValue !== change.currentValue);
15
+ }
16
+ constructor(anchorElementRef, renderer) {
17
+ this.anchorElementRef = anchorElementRef;
18
+ this.renderer = renderer;
19
+ /** Special property used for selecting DOM elements during automated UI testing. */
20
+ this.thook = 'tooltip';
21
+ /** The side of the anchor which the tooltip will be rendered.
22
+ * Recommended `top` and `bottom` for responsive designs as these are more stable.
23
+ */
24
+ this.placement = 'top';
25
+ /** Initial state and subsequent updates on wether the tooltip is visible. */
26
+ this.shown = false;
27
+ /** How far off from the text the tooltip will be rendered. */
28
+ this.offset = 10;
29
+ /** How frequently the tooltip will be re-rendered when the page size changes. */
30
+ this.resizeThrottle = 50;
31
+ /** Numeric max-width for tooltip. */
32
+ this.maxWidth = 343;
33
+ /** Emits a show event triggered changing visibility state of the tooltip. */
34
+ this.nggvShow = new EventEmitter();
35
+ /** Emits a hide event triggered changing visibility state of the tooltip. */
36
+ this.nggvHide = new EventEmitter();
37
+ /** @internal */
38
+ this.timeout = 0;
39
+ this.anchorElement = this.anchorElementRef.nativeElement;
40
+ this.parentElement = document.body;
41
+ }
42
+ ngAfterViewInit() {
43
+ // Set a timeout to allow view to fully render before creating tooltip.
44
+ setTimeout(() => (this.shown ? this.show(true) : this.hide(true)));
45
+ }
46
+ ngOnChanges(changes) {
47
+ if (NgvTooltipDirective.shouldUpdate(changes.nggvTooltip) ||
48
+ NgvTooltipDirective.shouldUpdate(changes.placement) ||
49
+ NgvTooltipDirective.shouldUpdate(changes.thook)) {
50
+ this.shown ? this.show(true) : this.hide(true);
51
+ }
52
+ if (NgvTooltipDirective.shouldUpdate(changes.shown)) {
53
+ this.shown ? this.show() : this.hide();
54
+ }
55
+ if (NgvTooltipDirective.shouldUpdate(changes.offset)) {
56
+ this.updatePosition();
57
+ }
58
+ }
59
+ ngOnDestroy() {
60
+ this.hide(true);
61
+ }
62
+ /** @internal */
63
+ onMouseEnter() {
64
+ this.show();
65
+ }
66
+ /** @internal */
67
+ onMouseLeave() {
68
+ this.hide();
69
+ }
70
+ /** @internal */
71
+ resize() {
72
+ if (this.timeout)
73
+ return;
74
+ this.timeout = window.setTimeout(() => {
75
+ this.timeout = 0;
76
+ this.updatePosition();
77
+ }, this.resizeThrottle);
78
+ }
79
+ /**
80
+ * Sets the visibility state of the tooltip to true and creates a new tooltip if it doesn't exist or `recreate` is set.
81
+ * @param recreate if set to true, destroy any existing tooltip and create a new one.
82
+ */
83
+ show(recreate = false) {
84
+ // Require tooltip text to create
85
+ if (!this.nggvTooltip || this.nggvTooltip.length === 0)
86
+ return;
87
+ if (recreate || !this.tooltipElement) {
88
+ this.hide(true);
89
+ this.create(this.nggvTooltip);
90
+ }
91
+ else {
92
+ this.renderer.appendChild(this.parentElement, this.tooltipElement);
93
+ }
94
+ this.updatePosition();
95
+ this.shown = true;
96
+ this.nggvShow.emit(this.tooltipElement);
97
+ }
98
+ /**
99
+ * Sets the visibility state of the tooltip to false and destroys an existing tooltip if `destroy` is set.
100
+ * @param destroy if set to true, destroy any existing tooltip.
101
+ */
102
+ hide(destroy = false) {
103
+ if (!this.tooltipElement)
104
+ return;
105
+ if (this.parentElement.contains(this.tooltipElement))
106
+ this.renderer.removeChild(this.parentElement, this.tooltipElement);
107
+ if (destroy)
108
+ this.destroy();
109
+ this.shown = false;
110
+ this.nggvHide.emit(this.tooltipElement);
111
+ }
112
+ /**
113
+ * @internal
114
+ * Creates a new tooltip with the set placement and a given text as its body.
115
+ * @param text the string to be displayed in the tooltip body.
116
+ */
117
+ create(text) {
118
+ this.tooltipElement = this.renderer.createElement('div');
119
+ this.renderer.addClass(this.tooltipElement, 'gds-tooltip');
120
+ this.renderer.setAttribute(this.tooltipElement, 'data-thook', this.thook);
121
+ this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');
122
+ this.renderer.setStyle(this.tooltipElement, 'z-index', '1040');
123
+ this.renderer.setStyle(this.tooltipElement, 'border-radius', '.25rem');
124
+ this.renderer.setStyle(this.tooltipElement, 'padding', '.5rem 1rem');
125
+ const relativeMaxWidth = this.pxToRem(this.maxWidth);
126
+ this.renderer.setStyle(this.tooltipElement, 'max-width', relativeMaxWidth);
127
+ this.renderer.appendChild(this.tooltipElement, this.renderer.createText(text));
128
+ // add tooltip to DOM
129
+ this.renderer.appendChild(this.parentElement, this.tooltipElement);
130
+ this.arrowElement = this.renderer.createElement('div');
131
+ this.renderer.addClass(this.arrowElement, `gds-tooltip__arrow-${this.placement}`);
132
+ // add arrow to tooltip element
133
+ this.renderer.appendChild(this.tooltipElement, this.arrowElement);
134
+ }
135
+ /**
136
+ * @internal
137
+ * Destroys the current tooltip by un-setting variables, should only be used after detaching elements from the DOM.
138
+ */
139
+ destroy() {
140
+ this.tooltipElement = undefined;
141
+ this.arrowElement = undefined;
142
+ }
143
+ /**
144
+ * @internal
145
+ * Recalculates the position of the tooltip.
146
+ */
147
+ updatePosition() {
148
+ if (!this.tooltipElement || !this.arrowElement)
149
+ return;
150
+ const scrollPos = window.pageYOffset ||
151
+ document.documentElement.scrollTop ||
152
+ this.parentElement.scrollTop ||
153
+ 0;
154
+ const anchorRect = this.anchorElement.getBoundingClientRect();
155
+ const tooltipRect = this.tooltipElement.getBoundingClientRect();
156
+ const arrowRect = this.arrowElement.getBoundingClientRect();
157
+ switch (this.placement) {
158
+ case 'top':
159
+ this.alignVertical(true, scrollPos, anchorRect, tooltipRect.width, tooltipRect.height, arrowRect.width);
160
+ break;
161
+ case 'bottom':
162
+ this.alignVertical(false, scrollPos, anchorRect, tooltipRect.width, tooltipRect.height, arrowRect.width);
163
+ break;
164
+ case 'left':
165
+ this.alignHorizontal(true, scrollPos, anchorRect, tooltipRect.height);
166
+ break;
167
+ case 'right':
168
+ this.alignHorizontal(false, scrollPos, anchorRect, tooltipRect.height);
169
+ break;
170
+ default:
171
+ return;
172
+ }
173
+ }
174
+ /**
175
+ * @internal
176
+ * Calculates and set the position of the tooltip when the placement is `top` or `bottom`.
177
+ */
178
+ alignVertical(above, scrollPos, anchor, tooltipWidth, tooltipHeight, arrowWidth) {
179
+ const width = this.parentElement.clientWidth;
180
+ const anchorMidX = anchor.left + anchor.width / 2;
181
+ const tooltip = {};
182
+ const arrow = {};
183
+ if (above)
184
+ tooltip.top = anchor.top - tooltipHeight - this.offset + scrollPos;
185
+ else
186
+ tooltip.top = anchor.bottom + this.offset + scrollPos;
187
+ if (anchorMidX < width / 2) {
188
+ tooltip.left = Math.max(0, anchorMidX - tooltipWidth / 2);
189
+ arrow.left = anchorMidX - tooltip.left;
190
+ }
191
+ else {
192
+ tooltip.right = Math.max(0, width - (anchorMidX + tooltipWidth / 2));
193
+ arrow.right = width - anchorMidX - tooltip.right - arrowWidth;
194
+ }
195
+ this.setStyle(tooltip, arrow);
196
+ }
197
+ /**
198
+ * @internal
199
+ * Calculates and set the position of the tooltip when the placement is `left` or `right`.
200
+ */
201
+ alignHorizontal(before, scrollPos, anchor, tooltipHeight) {
202
+ const width = this.parentElement.clientWidth;
203
+ const top = anchor.top + (anchor.height - tooltipHeight) / 2 + scrollPos;
204
+ const tooltip = { top };
205
+ const arrow = { top: tooltipHeight / 2 };
206
+ if (before)
207
+ tooltip.right = width - anchor.left + this.offset;
208
+ else
209
+ tooltip.left = anchor.right + this.offset;
210
+ this.setStyle(tooltip, arrow);
211
+ }
212
+ /**
213
+ * @internal
214
+ * Updates the CSS properties for the tooltip position.
215
+ */
216
+ setStyle(tooltip, arrow) {
217
+ // Tooltip
218
+ Object.entries(tooltip).forEach(([prop, value]) => {
219
+ const position = this.pxToRem(value);
220
+ this.renderer.setStyle(this.tooltipElement, prop, position);
221
+ });
222
+ // Arrow
223
+ Object.entries(arrow).forEach(([prop, value]) => {
224
+ const position = this.pxToRem(value);
225
+ this.renderer.setStyle(this.arrowElement, prop, position);
226
+ });
227
+ }
228
+ pxToRem(value) {
229
+ const fontSizePx = window
230
+ ?.getComputedStyle(this.parentElement)
231
+ ?.getPropertyValue('font-size');
232
+ const fontSizeNumberMatch = fontSizePx?.match(/\d{1,}/);
233
+ const fontSize = fontSizeNumberMatch ? +fontSizeNumberMatch[0] : 16;
234
+ const remValue = value / fontSize;
235
+ return `${remValue}rem`;
236
+ }
237
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
238
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgvTooltipDirective, selector: "[nggvTooltip]", inputs: { nggvTooltip: "nggvTooltip", thook: "thook", placement: "placement", shown: "shown", offset: "offset", resizeThrottle: "resizeThrottle", maxWidth: "maxWidth" }, outputs: { nggvShow: "nggvShow", nggvHide: "nggvHide" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "window:resize": "resize()" } }, usesOnChanges: true, ngImport: i0 }); }
239
+ }
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipDirective, decorators: [{
241
+ type: Directive,
242
+ args: [{
243
+ selector: '[nggvTooltip]',
244
+ }]
245
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { nggvTooltip: [{
246
+ type: Input
247
+ }], thook: [{
248
+ type: Input
249
+ }], placement: [{
250
+ type: Input
251
+ }], shown: [{
252
+ type: Input
253
+ }], offset: [{
254
+ type: Input
255
+ }], resizeThrottle: [{
256
+ type: Input
257
+ }], maxWidth: [{
258
+ type: Input
259
+ }], nggvShow: [{
260
+ type: Output
261
+ }], nggvHide: [{
262
+ type: Output
263
+ }], onMouseEnter: [{
264
+ type: HostListener,
265
+ args: ['mouseenter']
266
+ }], onMouseLeave: [{
267
+ type: HostListener,
268
+ args: ['mouseleave']
269
+ }], resize: [{
270
+ type: HostListener,
271
+ args: ['window:resize']
272
+ }] } });
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUE7O0FBV3RCOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLG1CQUFtQjtJQXdDOUIsNERBQTREO0lBQzVELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBb0I7UUFDdEMsT0FBTyxDQUNMLE1BQU07WUFDTixDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQ25CLE1BQU0sQ0FBQyxhQUFhLEtBQUssTUFBTSxDQUFDLFlBQVksQ0FDN0MsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUNVLGdCQUE0QixFQUM1QixRQUFtQjtRQURuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVk7UUFDNUIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTlDN0Isb0ZBQW9GO1FBQzNFLFVBQUssR0FBRyxTQUFTLENBQUE7UUFDMUI7O1dBRUc7UUFDTSxjQUFTLEdBQWMsS0FBSyxDQUFBO1FBQ3JDLDZFQUE2RTtRQUNwRSxVQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ3RCLDhEQUE4RDtRQUNyRCxXQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ3BCLGlGQUFpRjtRQUN4RSxtQkFBYyxHQUFHLEVBQUUsQ0FBQTtRQUM1QixxQ0FBcUM7UUFDNUIsYUFBUSxHQUFHLEdBQUcsQ0FBQTtRQUV2Qiw2RUFBNkU7UUFDbkUsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUE7UUFDcEQsNkVBQTZFO1FBQ25FLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFBO1FBRXBELGdCQUFnQjtRQUNOLFlB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QkFPMUIsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmV4cG9ydCB0eXBlIFBsYWNlbWVudCA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnXG5cbnR5cGUgUG9zaXRpb24gPSB7XG4gIHRvcD86IG51bWJlclxuICByaWdodD86IG51bWJlclxuICBib3R0b20/OiBudW1iZXJcbiAgbGVmdD86IG51bWJlclxufVxuXG4vKipcbiAqIEEgdG9vbHRpcCBpcyBhIHRleHQgbGFiZWwgdGhhdCBhY3RzIGFzIGEgaGVscGVyIHRvIGEgc3BlY2lmaWMgaXRlbS5cbiAqIFJlY29tbWVuZGVkIHRvIHVzZSB2YWx1ZSBgdG9wYCBvciBgYm90dG9tYCB3aXRoIGBwbGFjZW1lbnRgIGZvciByZXNwb25zaXZlIGRlc2lnbi5cbiAqIER5bmFtaWMgcmVzaXppbmcgYW5kIHRvb2x0aXAgcG9zaXRpb24gYXJlIGEgd29yayBpbiBwcm9ncmVzcy5cbiAqIGh0dHBzOi8vZGVzaWdubGlicmFyeS5zZWJncm91cC5jb20vY29tcG9uZW50cy9jb21wb25lbnQtdG9vbHRpcFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdndlRvb2x0aXBdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd2VG9vbHRpcERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gIC8qKiBUaGUgdGV4dCB0aGF0IHdpbGwgYmUgc2hvd24gaW4gdGhlIHRvb2x0aXAuICovXG4gIEBJbnB1dCgpIG5nZ3ZUb29sdGlwPzogc3RyaW5nXG4gIC8qKiBTcGVjaWFsIHByb3BlcnR5IHVzZWQgZm9yIHNlbGVjdGluZyBET00gZWxlbWVudHMgZHVyaW5nIGF1dG9tYXRlZCBVSSB0ZXN0aW5nLiAqL1xuICBASW5wdXQoKSB0aG9vayA9ICd0b29sdGlwJ1xuICAvKiogVGhlIHNpZGUgb2YgdGhlIGFuY2hvciB3aGljaCB0aGUgdG9vbHRpcCB3aWxsIGJlIHJlbmRlcmVkLlxuICAgKiBSZWNvbW1lbmRlZCBgdG9wYCBhbmQgYGJvdHRvbWAgZm9yIHJlc3BvbnNpdmUgZGVzaWducyBhcyB0aGVzZSBhcmUgbW9yZSBzdGFibGUuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZW1lbnQ6IFBsYWNlbWVudCA9ICd0b3AnXG4gIC8qKiBJbml0aWFsIHN0YXRlIGFuZCBzdWJzZXF1ZW50IHVwZGF0ZXMgb24gd2V0aGVyIHRoZSB0b29sdGlwIGlzIHZpc2libGUuICovXG4gIEBJbnB1dCgpIHNob3duID0gZmFsc2VcbiAgLyoqIEhvdyBmYXIgb2ZmIGZyb20gdGhlIHRleHQgdGhlIHRvb2x0aXAgd2lsbCBiZSByZW5kZXJlZC4gKi9cbiAgQElucHV0KCkgb2Zmc2V0ID0gMTBcbiAgLyoqIEhvdyBmcmVxdWVudGx5IHRoZSB0b29sdGlwIHdpbGwgYmUgcmUtcmVuZGVyZWQgd2hlbiB0aGUgcGFnZSBzaXplIGNoYW5nZXMuICovXG4gIEBJbnB1dCgpIHJlc2l6ZVRocm90dGxlID0gNTBcbiAgLyoqIE51bWVyaWMgbWF4LXdpZHRoIGZvciB0b29sdGlwLiAqL1xuICBASW5wdXQoKSBtYXhXaWR0aCA9IDM0M1xuXG4gIC8qKiBFbWl0cyBhIHNob3cgZXZlbnQgdHJpZ2dlcmVkIGNoYW5naW5nIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIHRvb2x0aXAuICovXG4gIEBPdXRwdXQoKSBuZ2d2U2hvdyA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KClcbiAgLyoqIEVtaXRzIGEgaGlkZSBldmVudCB0cmlnZ2VyZWQgY2hhbmdpbmcgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgdG9vbHRpcC4gKi9cbiAgQE91dHB1dCgpIG5nZ3ZIaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MRWxlbWVudD4oKVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIHRpbWVvdXQgPSAwXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgcGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnRcblxuICAvKiogQGludGVybmFsICovXG4gIHByb3RlY3RlZCBhbmNob3JFbGVtZW50OiBIVE1MRWxlbWVudFxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIHRvb2x0aXBFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIGFycm93RWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWRcblxuICAvKiogQGludGVybmFsIENoZWNrIGlmIGNoYW5nZXMgc2hvdWxkIHRyaWdnZXIgYSByZS1yZW5kZXIgKi9cbiAgc3RhdGljIHNob3VsZFVwZGF0ZShjaGFuZ2U6IFNpbXBsZUNoYW5nZSkge1xuICAgIHJldHVybiAoXG4gICAgICBjaGFuZ2UgJiZcbiAgICAgICFjaGFuZ2UuZmlyc3RDaGFuZ2UgJiZcbiAgICAgIGNoYW5nZS5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2UuY3VycmVudFZhbHVlXG4gICAgKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmNob3JFbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgKSB7XG4gICAgdGhpcy5hbmNob3JFbGVtZW50ID0gdGhpcy5hbmNob3JFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICB0aGlzLnBhcmVudEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gU2V0IGEgdGltZW91dCB0byBhbGxvdyB2aWV3IHRvIGZ1bGx5IHJlbmRlciBiZWZvcmUgY3JlYXRpbmcgdG9vbHRpcC5cbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLnNob3duID8gdGhpcy5zaG93KHRydWUpIDogdGhpcy5oaWRlKHRydWUpKSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBOZ3ZUb29sdGlwRGlyZWN0aXZlLnNob3VsZFVwZGF0ZShjaGFuZ2VzLm5nZ3ZUb29sdGlwKSB8fFxuICAgICAgTmd2VG9vbHRpcERpcmVjdGl2ZS5zaG91bGRVcGRhdGUoY2hhbmdlcy5wbGFjZW1lbnQpIHx8XG4gICAgICBOZ3ZUb29sdGlwRGlyZWN0aXZlLnNob3VsZFVwZGF0ZShjaGFuZ2VzLnRob29rKVxuICAgICkge1xuICAgICAgdGhpcy5zaG93biA/IHRoaXMuc2hvdyh0cnVlKSA6IHRoaXMuaGlkZSh0cnVlKVxuICAgIH1cblxuICAgIGlmIChOZ3ZUb29sdGlwRGlyZWN0aXZlLnNob3VsZFVwZGF0ZShjaGFuZ2VzLnNob3duKSkge1xuICAgICAgdGhpcy5zaG93biA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKClcbiAgICB9XG5cbiAgICBpZiAoTmd2VG9vbHRpcERpcmVjdGl2ZS5zaG91bGRVcGRhdGUoY2hhbmdlcy5vZmZzZXQpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKClcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmhpZGUodHJ1ZSlcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIG9uTW91c2VFbnRlcigpIHtcbiAgICB0aGlzLnNob3coKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgb25Nb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuaGlkZSgpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICByZXNpemUoKSB7XG4gICAgaWYgKHRoaXMudGltZW91dCkgcmV0dXJuXG4gICAgdGhpcy50aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50aW1lb3V0ID0gMFxuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpXG4gICAgfSwgdGhpcy5yZXNpemVUaHJvdHRsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSB0b29sdGlwIHRvIHRydWUgYW5kIGNyZWF0ZXMgYSBuZXcgdG9vbHRpcCBpZiBpdCBkb2Vzbid0IGV4aXN0IG9yIGByZWNyZWF0ZWAgaXMgc2V0LlxuICAgKiBAcGFyYW0gcmVjcmVhdGUgaWYgc2V0IHRvIHRydWUsIGRlc3Ryb3kgYW55IGV4aXN0aW5nIHRvb2x0aXAgYW5kIGNyZWF0ZSBhIG5ldyBvbmUuXG4gICAqL1xuICBzaG93KHJlY3JlYXRlID0gZmFsc2UpIHtcbiAgICAvLyBSZXF1aXJlIHRvb2x0aXAgdGV4dCB0byBjcmVhdGVcbiAgICBpZiAoIXRoaXMubmdndlRvb2x0aXAgfHwgdGhpcy5uZ2d2VG9vbHRpcC5sZW5ndGggPT09IDApIHJldHVyblxuXG4gICAgaWYgKHJlY3JlYXRlIHx8ICF0aGlzLnRvb2x0aXBFbGVtZW50KSB7XG4gICAgICB0aGlzLmhpZGUodHJ1ZSlcbiAgICAgIHRoaXMuY3JlYXRlKHRoaXMubmdndlRvb2x0aXApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5wYXJlbnRFbGVtZW50LCB0aGlzLnRvb2x0aXBFbGVtZW50KVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKVxuICAgIHRoaXMuc2hvd24gPSB0cnVlXG4gICAgdGhpcy5uZ2d2U2hvdy5lbWl0KHRoaXMudG9vbHRpcEVsZW1lbnQpXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgdG9vbHRpcCB0byBmYWxzZSBhbmQgZGVzdHJveXMgYW4gZXhpc3RpbmcgdG9vbHRpcCBpZiBgZGVzdHJveWAgaXMgc2V0LlxuICAgKiBAcGFyYW0gZGVzdHJveSBpZiBzZXQgdG8gdHJ1ZSwgZGVzdHJveSBhbnkgZXhpc3RpbmcgdG9vbHRpcC5cbiAgICovXG4gIGhpZGUoZGVzdHJveSA9IGZhbHNlKSB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXBFbGVtZW50KSByZXR1cm5cbiAgICBpZiAodGhpcy5wYXJlbnRFbGVtZW50LmNvbnRhaW5zKHRoaXMudG9vbHRpcEVsZW1lbnQpKVxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLnBhcmVudEVsZW1lbnQsIHRoaXMudG9vbHRpcEVsZW1lbnQpXG4gICAgaWYgKGRlc3Ryb3kpIHRoaXMuZGVzdHJveSgpXG4gICAgdGhpcy5zaG93biA9IGZhbHNlXG4gICAgdGhpcy5uZ2d2SGlkZS5lbWl0KHRoaXMudG9vbHRpcEVsZW1lbnQpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIENyZWF0ZXMgYSBuZXcgdG9vbHRpcCB3aXRoIHRoZSBzZXQgcGxhY2VtZW50IGFuZCBhIGdpdmVuIHRleHQgYXMgaXRzIGJvZHkuXG4gICAqIEBwYXJhbSB0ZXh0IHRoZSBzdHJpbmcgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0b29sdGlwIGJvZHkuXG4gICAqL1xuICBjcmVhdGUodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy50b29sdGlwRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcEVsZW1lbnQsICdnZHMtdG9vbHRpcCcpXG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy50b29sdGlwRWxlbWVudCwgJ2RhdGEtdGhvb2snLCB0aGlzLnRob29rKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJylcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcEVsZW1lbnQsICd6LWluZGV4JywgJzEwNDAnKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwRWxlbWVudCwgJ2JvcmRlci1yYWRpdXMnLCAnLjI1cmVtJylcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcEVsZW1lbnQsICdwYWRkaW5nJywgJy41cmVtIDFyZW0nKVxuICAgIGNvbnN0IHJlbGF0aXZlTWF4V2lkdGggPSB0aGlzLnB4VG9SZW0odGhpcy5tYXhXaWR0aClcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcEVsZW1lbnQsICdtYXgtd2lkdGgnLCByZWxhdGl2ZU1heFdpZHRoKVxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoXG4gICAgICB0aGlzLnRvb2x0aXBFbGVtZW50LFxuICAgICAgdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHRleHQpLFxuICAgIClcblxuICAgIC8vIGFkZCB0b29sdGlwIHRvIERPTVxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5wYXJlbnRFbGVtZW50LCB0aGlzLnRvb2x0aXBFbGVtZW50KVxuXG4gICAgdGhpcy5hcnJvd0VsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgIHRoaXMuYXJyb3dFbGVtZW50LFxuICAgICAgYGdkcy10b29sdGlwX19hcnJvdy0ke3RoaXMucGxhY2VtZW50fWAsXG4gICAgKVxuXG4gICAgLy8gYWRkIGFycm93IHRvIHRvb2x0aXAgZWxlbWVudFxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwRWxlbWVudCwgdGhpcy5hcnJvd0VsZW1lbnQpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIERlc3Ryb3lzIHRoZSBjdXJyZW50IHRvb2x0aXAgYnkgdW4tc2V0dGluZyB2YXJpYWJsZXMsIHNob3VsZCBvbmx5IGJlIHVzZWQgYWZ0ZXIgZGV0YWNoaW5nIGVsZW1lbnRzIGZyb20gdGhlIERPTS5cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy50b29sdGlwRWxlbWVudCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYXJyb3dFbGVtZW50ID0gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFJlY2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAuXG4gICAqL1xuICB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudG9vbHRpcEVsZW1lbnQgfHwgIXRoaXMuYXJyb3dFbGVtZW50KSByZXR1cm5cbiAgICBjb25zdCBzY3JvbGxQb3MgPVxuICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0IHx8XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8XG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8XG4gICAgICAwXG4gICAgY29uc3QgYW5jaG9yUmVjdCA9IHRoaXMuYW5jaG9yRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IHRvb2x0aXBSZWN0ID0gdGhpcy50b29sdGlwRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGFycm93UmVjdCA9IHRoaXMuYXJyb3dFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgICBzd2l0Y2ggKHRoaXMucGxhY2VtZW50KSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICB0aGlzLmFsaWduVmVydGljYWwoXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBzY3JvbGxQb3MsXG4gICAgICAgICAgYW5jaG9yUmVjdCxcbiAgICAgICAgICB0b29sdGlwUmVjdC53aWR0aCxcbiAgICAgICAgICB0b29sdGlwUmVjdC5oZWlnaHQsXG4gICAgICAgICAgYXJyb3dSZWN0LndpZHRoLFxuICAgICAgICApXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHRoaXMuYWxpZ25WZXJ0aWNhbChcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBzY3JvbGxQb3MsXG4gICAgICAgICAgYW5jaG9yUmVjdCxcbiAgICAgICAgICB0b29sdGlwUmVjdC53aWR0aCxcbiAgICAgICAgICB0b29sdGlwUmVjdC5oZWlnaHQsXG4gICAgICAgICAgYXJyb3dSZWN0LndpZHRoLFxuICAgICAgICApXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICB0aGlzLmFsaWduSG9yaXpvbnRhbCh0cnVlLCBzY3JvbGxQb3MsIGFuY2hvclJlY3QsIHRvb2x0aXBSZWN0LmhlaWdodClcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICB0aGlzLmFsaWduSG9yaXpvbnRhbChmYWxzZSwgc2Nyb2xsUG9zLCBhbmNob3JSZWN0LCB0b29sdGlwUmVjdC5oZWlnaHQpXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ2FsY3VsYXRlcyBhbmQgc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCB3aGVuIHRoZSBwbGFjZW1lbnQgaXMgYHRvcGAgb3IgYGJvdHRvbWAuXG4gICAqL1xuICBhbGlnblZlcnRpY2FsKFxuICAgIGFib3ZlOiBib29sZWFuLFxuICAgIHNjcm9sbFBvczogbnVtYmVyLFxuICAgIGFuY2hvcjogRE9NUmVjdCxcbiAgICB0b29sdGlwV2lkdGg6IG51bWJlcixcbiAgICB0b29sdGlwSGVpZ2h0OiBudW1iZXIsXG4gICAgYXJyb3dXaWR0aDogbnVtYmVyLFxuICApIHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aFxuICAgIGNvbnN0IGFuY2hvck1pZFggPSBhbmNob3IubGVmdCArIGFuY2hvci53aWR0aCAvIDJcbiAgICBjb25zdCB0b29sdGlwOiBQb3NpdGlvbiA9IHt9XG4gICAgY29uc3QgYXJyb3c6IFBvc2l0aW9uID0ge31cblxuICAgIGlmIChhYm92ZSlcbiAgICAgIHRvb2x0aXAudG9wID0gYW5jaG9yLnRvcCAtIHRvb2x0aXBIZWlnaHQgLSB0aGlzLm9mZnNldCArIHNjcm9sbFBvc1xuICAgIGVsc2UgdG9vbHRpcC50b3AgPSBhbmNob3IuYm90dG9tICsgdGhpcy5vZmZzZXQgKyBzY3JvbGxQb3NcblxuICAgIGlmIChhbmNob3JNaWRYIDwgd2lkdGggLyAyKSB7XG4gICAgICB0b29sdGlwLmxlZnQgPSBNYXRoLm1heCgwLCBhbmNob3JNaWRYIC0gdG9vbHRpcFdpZHRoIC8gMilcbiAgICAgIGFycm93LmxlZnQgPSBhbmNob3JNaWRYIC0gdG9vbHRpcC5sZWZ0XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvb2x0aXAucmlnaHQgPSBNYXRoLm1heCgwLCB3aWR0aCAtIChhbmNob3JNaWRYICsgdG9vbHRpcFdpZHRoIC8gMikpXG4gICAgICBhcnJvdy5yaWdodCA9IHdpZHRoIC0gYW5jaG9yTWlkWCAtIHRvb2x0aXAucmlnaHQgLSBhcnJvd1dpZHRoXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdHlsZSh0b29sdGlwLCBhcnJvdylcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ2FsY3VsYXRlcyBhbmQgc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCB3aGVuIHRoZSBwbGFjZW1lbnQgaXMgYGxlZnRgIG9yIGByaWdodGAuXG4gICAqL1xuICBhbGlnbkhvcml6b250YWwoXG4gICAgYmVmb3JlOiBib29sZWFuLFxuICAgIHNjcm9sbFBvczogbnVtYmVyLFxuICAgIGFuY2hvcjogRE9NUmVjdCxcbiAgICB0b29sdGlwSGVpZ2h0OiBudW1iZXIsXG4gICkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoXG4gICAgY29uc3QgdG9wID0gYW5jaG9yLnRvcCArIChhbmNob3IuaGVpZ2h0IC0gdG9vbHRpcEhlaWdodCkgLyAyICsgc2Nyb2xsUG9zXG4gICAgY29uc3QgdG9vbHRpcDogUG9zaXRpb24gPSB7IHRvcCB9XG4gICAgY29uc3QgYXJyb3c6IFBvc2l0aW9uID0geyB0b3A6IHRvb2x0aXBIZWlnaHQgLyAyIH1cblxuICAgIGlmIChiZWZvcmUpIHRvb2x0aXAucmlnaHQgPSB3aWR0aCAtIGFuY2hvci5sZWZ0ICsgdGhpcy5vZmZzZXRcbiAgICBlbHNlIHRvb2x0aXAubGVmdCA9IGFuY2hvci5yaWdodCArIHRoaXMub2Zmc2V0XG5cbiAgICB0aGlzLnNldFN0eWxlKHRvb2x0aXAsIGFycm93KVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBVcGRhdGVzIHRoZSBDU1MgcHJvcGVydGllcyBmb3IgdGhlIHRvb2x0aXAgcG9zaXRpb24uXG4gICAqL1xuICBzZXRTdHlsZSh0b29sdGlwOiBQb3NpdGlvbiwgYXJyb3c6IFBvc2l0aW9uKSB7XG4gICAgLy8gVG9vbHRpcFxuICAgIE9iamVjdC5lbnRyaWVzKHRvb2x0aXApLmZvckVhY2goKFtwcm9wLCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5weFRvUmVtKHZhbHVlKVxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXBFbGVtZW50LCBwcm9wLCBwb3NpdGlvbilcbiAgICB9KVxuXG4gICAgLy8gQXJyb3dcbiAgICBPYmplY3QuZW50cmllcyhhcnJvdykuZm9yRWFjaCgoW3Byb3AsIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnB4VG9SZW0odmFsdWUpXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYXJyb3dFbGVtZW50LCBwcm9wLCBwb3NpdGlvbilcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBweFRvUmVtKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvbnRTaXplUHggPSB3aW5kb3dcbiAgICAgID8uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnBhcmVudEVsZW1lbnQpXG4gICAgICA/LmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpXG4gICAgY29uc3QgZm9udFNpemVOdW1iZXJNYXRjaCA9IGZvbnRTaXplUHg/Lm1hdGNoKC9cXGR7MSx9LylcbiAgICBjb25zdCBmb250U2l6ZSA9IGZvbnRTaXplTnVtYmVyTWF0Y2ggPyArZm9udFNpemVOdW1iZXJNYXRjaFswXSA6IDE2XG4gICAgY29uc3QgcmVtVmFsdWUgPSB2YWx1ZSAvIGZvbnRTaXplXG4gICAgcmV0dXJuIGAke3JlbVZhbHVlfXJlbWBcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { NgvI18nModule } from '@sebgroup/green-angular/src/v-angular/i18n';
3
+ import { NgvTooltipDirective } from './tooltip.directive';
4
+ import * as i0 from "@angular/core";
5
+ export class NgvTooltipModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, declarations: [NgvTooltipDirective], imports: [NgvI18nModule], exports: [NgvTooltipDirective] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, imports: [NgvI18nModule] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvTooltipModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [NgvTooltipDirective],
14
+ exports: [NgvTooltipDirective],
15
+ imports: [NgvI18nModule],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci90b29sdGlwL3Rvb2x0aXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFBOztBQU96RCxNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7Z0hBQWhCLGdCQUFnQixpQkFKWixtQkFBbUIsYUFFeEIsYUFBYSxhQURiLG1CQUFtQjtnSEFHbEIsZ0JBQWdCLFlBRmpCLGFBQWE7OzRGQUVaLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ3ZJMThuTW9kdWxlIH0gZnJvbSAnQHNlYmdyb3VwL2dyZWVuLWFuZ3VsYXIvc3JjL3YtYW5ndWxhci9pMThuJ1xuaW1wb3J0IHsgTmd2VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4vdG9vbHRpcC5kaXJlY3RpdmUnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05ndlRvb2x0aXBEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbTmd2VG9vbHRpcERpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtOZ3ZJMThuTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd2VG9vbHRpcE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,80 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { NgvBaseControlValueAccessorModule } from './base-control-value-accessor';
4
+ import { NgvBreadcrumbsModule } from './breadcrumbs';
5
+ import { NgvButtonModule } from './button';
6
+ import { NgvCardModule } from './card';
7
+ import { NgvCheckboxModule } from './checkbox';
8
+ import { NgvDropdownModule } from './dropdown';
9
+ import { NgvI18nModule } from './i18n';
10
+ import { NgvInfoCircleModule } from './info-circle';
11
+ import { NgvInputModule } from './input';
12
+ import { NgvInputMaskModule } from './input-mask';
13
+ import { NgvModalModule } from './modal';
14
+ import { NgvRadioModule } from './radio';
15
+ import { NgvTextareaModule } from './textarea';
16
+ import { NgvTooltipModule } from './tooltip';
17
+ import { NgvTypeaheadModule } from './dropdown/typeahead/typeahead.module';
18
+ import { NggCharacterCountdownDirectiveModule } from './character-countdown/character-countdown.module';
19
+ import * as i0 from "@angular/core";
20
+ export class NggvModule {
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NggvModule, imports: [CommonModule], exports: [NgvBaseControlValueAccessorModule,
23
+ NgvBreadcrumbsModule,
24
+ NgvButtonModule,
25
+ NgvCardModule,
26
+ NggCharacterCountdownDirectiveModule,
27
+ NgvCheckboxModule,
28
+ NgvDropdownModule,
29
+ NgvI18nModule,
30
+ NgvInfoCircleModule,
31
+ NgvInputModule,
32
+ NgvInputMaskModule,
33
+ NgvModalModule,
34
+ NgvRadioModule,
35
+ NgvTextareaModule,
36
+ NgvTooltipModule,
37
+ NgvTypeaheadModule] }); }
38
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggvModule, imports: [CommonModule, NgvBaseControlValueAccessorModule,
39
+ NgvBreadcrumbsModule,
40
+ NgvButtonModule,
41
+ NgvCardModule,
42
+ NggCharacterCountdownDirectiveModule,
43
+ NgvCheckboxModule,
44
+ NgvDropdownModule,
45
+ NgvI18nModule,
46
+ NgvInfoCircleModule,
47
+ NgvInputModule,
48
+ NgvInputMaskModule,
49
+ NgvModalModule,
50
+ NgvRadioModule,
51
+ NgvTextareaModule,
52
+ NgvTooltipModule,
53
+ NgvTypeaheadModule] }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NggvModule, decorators: [{
56
+ type: NgModule,
57
+ args: [{
58
+ declarations: [],
59
+ imports: [CommonModule],
60
+ exports: [
61
+ NgvBaseControlValueAccessorModule,
62
+ NgvBreadcrumbsModule,
63
+ NgvButtonModule,
64
+ NgvCardModule,
65
+ NggCharacterCountdownDirectiveModule,
66
+ NgvCheckboxModule,
67
+ NgvDropdownModule,
68
+ NgvI18nModule,
69
+ NgvInfoCircleModule,
70
+ NgvInputModule,
71
+ NgvInputMaskModule,
72
+ NgvModalModule,
73
+ NgvRadioModule,
74
+ NgvTextareaModule,
75
+ NgvTooltipModule,
76
+ NgvTypeaheadModule,
77
+ ],
78
+ }]
79
+ }] });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidi1hbmd1bGFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL3YtYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFBOztBQXdCdkcsTUFBTSxPQUFPLFVBQVU7K0dBQVYsVUFBVTtnSEFBVixVQUFVLFlBcEJYLFlBQVksYUFFcEIsaUNBQWlDO1lBQ2pDLG9CQUFvQjtZQUNwQixlQUFlO1lBQ2YsYUFBYTtZQUNiLG9DQUFvQztZQUNwQyxpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsa0JBQWtCO2dIQUdULFVBQVUsWUFwQlgsWUFBWSxFQUVwQixpQ0FBaUM7WUFDakMsb0JBQW9CO1lBQ3BCLGVBQWU7WUFDZixhQUFhO1lBQ2Isb0NBQW9DO1lBQ3BDLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixrQkFBa0I7OzRGQUdULFVBQVU7a0JBdEJ0QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRTt3QkFDUCxpQ0FBaUM7d0JBQ2pDLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLG9DQUFvQzt3QkFDcEMsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7cUJBQ25CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTmd2QmFzZUNvbnRyb2xWYWx1ZUFjY2Vzc29yTW9kdWxlIH0gZnJvbSAnLi9iYXNlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3InXG5pbXBvcnQgeyBOZ3ZCcmVhZGNydW1ic01vZHVsZSB9IGZyb20gJy4vYnJlYWRjcnVtYnMnXG5pbXBvcnQgeyBOZ3ZCdXR0b25Nb2R1bGUgfSBmcm9tICcuL2J1dHRvbidcbmltcG9ydCB7IE5ndkNhcmRNb2R1bGUgfSBmcm9tICcuL2NhcmQnXG5pbXBvcnQgeyBOZ3ZDaGVja2JveE1vZHVsZSB9IGZyb20gJy4vY2hlY2tib3gnXG5pbXBvcnQgeyBOZ3ZEcm9wZG93bk1vZHVsZSB9IGZyb20gJy4vZHJvcGRvd24nXG5pbXBvcnQgeyBOZ3ZJMThuTW9kdWxlIH0gZnJvbSAnLi9pMThuJ1xuaW1wb3J0IHsgTmd2SW5mb0NpcmNsZU1vZHVsZSB9IGZyb20gJy4vaW5mby1jaXJjbGUnXG5pbXBvcnQgeyBOZ3ZJbnB1dE1vZHVsZSB9IGZyb20gJy4vaW5wdXQnXG5pbXBvcnQgeyBOZ3ZJbnB1dE1hc2tNb2R1bGUgfSBmcm9tICcuL2lucHV0LW1hc2snXG5pbXBvcnQgeyBOZ3ZNb2RhbE1vZHVsZSB9IGZyb20gJy4vbW9kYWwnXG5pbXBvcnQgeyBOZ3ZSYWRpb01vZHVsZSB9IGZyb20gJy4vcmFkaW8nXG5pbXBvcnQgeyBOZ3ZUZXh0YXJlYU1vZHVsZSB9IGZyb20gJy4vdGV4dGFyZWEnXG5pbXBvcnQgeyBOZ3ZUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi90b29sdGlwJ1xuaW1wb3J0IHsgTmd2VHlwZWFoZWFkTW9kdWxlIH0gZnJvbSAnLi9kcm9wZG93bi90eXBlYWhlYWQvdHlwZWFoZWFkLm1vZHVsZSdcbmltcG9ydCB7IE5nZ0NoYXJhY3RlckNvdW50ZG93bkRpcmVjdGl2ZU1vZHVsZSB9IGZyb20gJy4vY2hhcmFjdGVyLWNvdW50ZG93bi9jaGFyYWN0ZXItY291bnRkb3duLm1vZHVsZSdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ3ZCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3JNb2R1bGUsXG4gICAgTmd2QnJlYWRjcnVtYnNNb2R1bGUsXG4gICAgTmd2QnV0dG9uTW9kdWxlLFxuICAgIE5ndkNhcmRNb2R1bGUsXG4gICAgTmdnQ2hhcmFjdGVyQ291bnRkb3duRGlyZWN0aXZlTW9kdWxlLFxuICAgIE5ndkNoZWNrYm94TW9kdWxlLFxuICAgIE5ndkRyb3Bkb3duTW9kdWxlLFxuICAgIE5ndkkxOG5Nb2R1bGUsXG4gICAgTmd2SW5mb0NpcmNsZU1vZHVsZSxcbiAgICBOZ3ZJbnB1dE1vZHVsZSxcbiAgICBOZ3ZJbnB1dE1hc2tNb2R1bGUsXG4gICAgTmd2TW9kYWxNb2R1bGUsXG4gICAgTmd2UmFkaW9Nb2R1bGUsXG4gICAgTmd2VGV4dGFyZWFNb2R1bGUsXG4gICAgTmd2VG9vbHRpcE1vZHVsZSxcbiAgICBOZ3ZUeXBlYWhlYWRNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5nZ3ZNb2R1bGUge31cbiJdfQ==
@@ -74,7 +74,7 @@ class NgvBaseControlValueAccessorComponent {
74
74
  this.cdr = cdr;
75
75
  /* ATTRIBUTES */
76
76
  /** Id of the host element and is accessible by the children, automatically generated if not provided. */
77
- this.id = window.ngv?.nextId();
77
+ this.id = window.nggv?.nextId();
78
78
  /** If set to true, the browser will try to automatically set focus to the child input element. */
79
79
  this.autofocus = false;
80
80
  this._locked = undefined;
@@ -87,9 +87,9 @@ class NgvBaseControlValueAccessorComponent {
87
87
  this._disabled = undefined;
88
88
  /* TRIGGERS */
89
89
  /** Emits focus events triggered by the child elements. */
90
- this.ngvFocus = new EventEmitter();
90
+ this.nggvFocus = new EventEmitter();
91
91
  /** Emits focus events triggered by the child elements. */
92
- this.ngvBlur = new EventEmitter();
92
+ this.nggvBlur = new EventEmitter();
93
93
  /* VALUE HANDLERS */
94
94
  this._state = null;
95
95
  /** @internal */
@@ -146,7 +146,7 @@ class NgvBaseControlValueAccessorComponent {
146
146
  ? event.stopPropagation()
147
147
  : (event.cancelBubble = true);
148
148
  this.focused = true;
149
- this.ngvFocus.emit(event);
149
+ this.nggvFocus.emit(event);
150
150
  }
151
151
  /** @internal */
152
152
  onBlur(event) {
@@ -155,7 +155,7 @@ class NgvBaseControlValueAccessorComponent {
155
155
  : (event.cancelBubble = true);
156
156
  this.onTouched();
157
157
  this.focused = false;
158
- this.ngvBlur.emit(event);
158
+ this.nggvBlur.emit(event);
159
159
  }
160
160
  /** Sets the focus on the actual input element. */
161
161
  setFocus() {
@@ -218,7 +218,7 @@ class NgvBaseControlValueAccessorComponent {
218
218
  return { code, params: errors[code] };
219
219
  }
220
220
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
221
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvBaseControlValueAccessorComponent, selector: "ng-component", inputs: { id: "id", name: "name", label: "label", role: "role", value: "value", error: "error", description: "description", autofocus: "autofocus", defaultValue: "defaultValue", reset: "reset", optional: "optional", locked: "locked", displayDisabledAsLocked: "displayDisabledAsLocked", required: "required", invalid: "invalid", valid: "valid", focused: "focused", disabled: "disabled" }, outputs: { ngvFocus: "ngvFocus", ngvBlur: "ngvBlur" }, host: { properties: { "attr.id": "this.id" } }, queries: [{ propertyName: "labelContentTpl", first: true, predicate: ["labelTpl"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: '', isInline: true }); }
221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvBaseControlValueAccessorComponent, selector: "ng-component", inputs: { id: "id", name: "name", label: "label", role: "role", value: "value", error: "error", description: "description", autofocus: "autofocus", defaultValue: "defaultValue", reset: "reset", optional: "optional", locked: "locked", displayDisabledAsLocked: "displayDisabledAsLocked", required: "required", invalid: "invalid", valid: "valid", focused: "focused", disabled: "disabled" }, outputs: { nggvFocus: "nggvFocus", nggvBlur: "nggvBlur" }, host: { properties: { "attr.id": "this.id" } }, queries: [{ propertyName: "labelContentTpl", first: true, predicate: ["labelTpl"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: '', isInline: true }); }
222
222
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorComponent }); }
223
223
  }
224
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvBaseControlValueAccessorComponent, decorators: [{
@@ -280,9 +280,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
280
280
  type: Input
281
281
  }], disabled: [{
282
282
  type: Input
283
- }], ngvFocus: [{
283
+ }], nggvFocus: [{
284
284
  type: Output
285
- }], ngvBlur: [{
285
+ }], nggvBlur: [{
286
286
  type: Output
287
287
  }] } });
288
288
 
@@ -1 +1 @@
1
- {"version":3,"file":"sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs","sources":["../../../../libs/angular/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.ts","../../../../libs/angular/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.ts","../../../../libs/angular/src/v-angular/base-control-value-accessor/sebgroup-green-angular-src-v-angular-base-control-value-accessor.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChild,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Injectable,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport {\n AbstractControl,\n ControlValueAccessor,\n NgControl,\n ValidationErrors,\n Validator,\n Validators,\n} from '@angular/forms'\n\nimport { Observable, Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TRANSLOCO_SCOPE, TranslocoScope } from '@ngneat/transloco'\n\n@Injectable() // Workaround for Compodoc https://github.com/compodoc/compodoc/issues/984\n@Component({ template: '' }) // Required with Angular ivy compiler\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class NgvBaseControlValueAccessorComponent\n implements AfterViewInit, OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n /** Custom template for displaying the content of the label.\n * Specified by nesting an `<ng-template #labelTpl>Custom Label</ng-template>`.\n */\n @ContentChild('labelTpl', { read: TemplateRef })\n labelContentTpl?: TemplateRef<undefined>\n\n /** Reference to the native child input element. */\n @ViewChild('input', { read: ElementRef }) inputRef?: ElementRef\n\n /* ATTRIBUTES */\n\n /** Id of the host element and is accessible by the children, automatically generated if not provided. */\n @HostBinding('attr.id') @Input() id = (window as any).ngv?.nextId()\n /** Name of the child input element. */\n @Input() name?: string\n /**\n * Label of the child input element using the default template.\n * Can be overwritten by specifying an `<ng-template #labelTpl>Custom Label</ng-template>`.\n */\n @Input() label?: string\n /** Role of the child input element. https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles */\n @Input() role?: string\n /** Value of the child input element. Mostly used in conjunction with radio and checkboxes. */\n @Input() value: any\n /** An error string to be shown under invalid inputs. Overwrites any form errors. */\n @Input() error?: string\n /** Description of the child input element. Both visibly and as `aria-label`. */\n @Input() description?: string\n /** If set to true, the browser will try to automatically set focus to the child input element. */\n @Input() autofocus = false\n /** Deafult value of the child input element. Used when resetting child element. */\n @Input() defaultValue?: any\n /** If passed, the component will listen for updates and will reset its value. */\n @Input() reset?: Observable<any>\n /** Adds (Optional) to input label. */\n @Input() optional?: boolean | null | undefined\n\n private _locked: boolean | null | undefined = undefined\n /** Hides the input borders and displays current value as a text. */\n @Input() set locked(value: boolean | null | undefined) {\n this._locked = value\n this.cdr.detectChanges()\n }\n get locked(): boolean | null | undefined {\n return this._locked\n }\n /** If set to true, using a controls disabled state will display input as locked. */\n @Input() displayDisabledAsLocked?: boolean | null | undefined\n\n /* STATES */\n\n private _required: boolean | null | undefined = undefined\n /** Override the required flag of the component. */\n @Input() set required(value: boolean | null | undefined) {\n this._required = value\n }\n /** Child input element is considered required and changes default label template accordingly. */\n get required(): boolean | null | undefined {\n // if required is set => return required\n if (this._required !== undefined) return this._required\n\n // if required can be determined from the control => return control.required\n if (this.ngControl?.control?.validator) {\n const validator = this.ngControl?.control?.validator(\n {} as AbstractControl,\n )\n // returns true for any error that starts with required\n return Object.keys(validator ?? {}).some((key) =>\n key.startsWith('required'),\n )\n }\n\n return\n }\n\n private _invalid: boolean | undefined = undefined\n /** Override the invalid state of the component. */\n @Input() set invalid(value: boolean) {\n this._invalid = value\n }\n /** The component has the invalid state, usually decorating the elements red and shows the first error. */\n get invalid(): boolean {\n if (this._invalid === true || this._invalid === false) return this._invalid\n return (\n !!this.ngControl?.control?.invalid && this.ngControl?.control?.touched\n )\n }\n\n private _valid: boolean | undefined = undefined\n /** Override the valid state of the component. */\n @Input() set valid(value: boolean) {\n this._valid = value\n }\n /** The component has the valid state, usually decorating the elements green. */\n get valid(): boolean {\n if (this._valid === true || this._valid === false) return this._valid\n return !!this.ngControl?.control?.valid && this.ngControl?.control?.touched\n }\n\n /** The component has the focused state, updated by the child input element's focus state. */\n @Input() focused = false\n\n private _disabled: boolean | undefined = undefined\n /** Override the disabled state of the component. */\n @Input() set disabled(value: boolean) {\n this._disabled = value\n }\n /** The component has the disabled state, usually muting the colors and removes interaction. */\n get disabled(): boolean {\n if (this._disabled === true || this._disabled === false)\n return this._disabled\n return !!this.ngControl?.control?.disabled\n }\n\n /* TRIGGERS */\n\n /** Emits focus events triggered by the child elements. */\n @Output() readonly ngvFocus = new EventEmitter()\n /** Emits focus events triggered by the child elements. */\n @Output() readonly ngvBlur = new EventEmitter()\n\n /* VALUE HANDLERS */\n\n private _state: any = null\n /** @internal */\n protected onChange = (_: any) => {\n // do nothing\n }\n /** @internal */\n protected onTouched = () => {\n // do nothing\n }\n /** @internal */\n protected onValidatorChange: () => void = () => null\n\n /* OTHER VARIABLES */\n scope: string | undefined\n\n /* LIFE CYCLE VARIABLES */\n\n private _onDestroy$ = new Subject<boolean>()\n\n /**\n * Creates a new BaseControlValueAccessorComponent.\n * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.\n * @param translocoScope optional TranslocoScope provided if component is used within a scope.\n */\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n @Optional()\n @Inject(TRANSLOCO_SCOPE)\n protected translocoScope: TranslocoScope,\n protected cdr: ChangeDetectorRef,\n ) {\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this\n }\n\n if (this.translocoScope) this.scope = this.translocoScope.toString()\n }\n\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngOnInit(): void {\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValidators(\n Validators.compose([this.ngControl.control.validator, this.validate]),\n )\n }\n\n // if reset observable has been passed, subscribe after updates\n this.reset?.pipe(takeUntil(this._onDestroy$)).subscribe({\n next: () => {\n // reset value of controller\n this.state = this.defaultValue\n this.onChange(this.state)\n this.cdr.detectChanges()\n },\n })\n }\n\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngAfterViewInit(): void {\n // if default value is set, then don't alter it. Otherwise, use\n // current value of controller after initiation as default value\n this.defaultValue = this.defaultValue ?? this.ngControl?.value\n }\n\n ngOnDestroy(): void {\n this._onDestroy$.next(true)\n this._onDestroy$.complete()\n }\n\n detectChanges(): void {\n this.cdr.detectChanges()\n }\n\n /** @internal */\n onFocus(event: Event) {\n event.stopPropagation\n ? event.stopPropagation()\n : (event.cancelBubble = true)\n this.focused = true\n this.ngvFocus.emit(event)\n }\n\n /** @internal */\n onBlur(event: Event) {\n event.stopPropagation\n ? event.stopPropagation()\n : (event.cancelBubble = true)\n this.onTouched()\n this.focused = false\n this.ngvBlur.emit(event)\n }\n\n /** Sets the focus on the actual input element. */\n setFocus() {\n if (this.inputRef) this.inputRef.nativeElement.focus()\n }\n\n // ----------------------------------------------------------------------------\n // CONTROL VALUE ACCESSOR\n // ----------------------------------------------------------------------------\n\n /** Internal state/value that the native input element has. */\n get state() {\n return this._state\n }\n\n /** Internal state/value that the native input element has. */\n set state(value) {\n if (typeof value === 'undefined') value = null\n this._state = value\n }\n\n /** Writes a new value to the child input element. */\n writeValue(value: any): void {\n this.state = value\n }\n\n /** Registers a callback function that is called when the child input element's value changes. */\n registerOnChange(fn: (_: any) => object): void {\n this.onChange = fn\n }\n\n /** Registers a callback function that is called when the child input element triggers on blur. */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /** Function that is called by the forms API when the control status changes to or from 'DISABLED'. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n\n // if displayDisabledAsLocked is enabled - update locked state based on disabled state\n if (this.displayDisabledAsLocked) {\n this.locked = isDisabled\n }\n }\n\n // ----------------------------------------------------------------------------\n // VALIDATORS\n // ----------------------------------------------------------------------------\n\n /** Method that performs synchronous validation against the provided control. Used for internal validation. */\n validate(_control: AbstractControl): { [name: string]: any } | null {\n return null\n }\n\n /** Registers a callback function to call when the validator inputs change. */\n registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn\n }\n\n // ----------------------------------------------------------------------------\n // HELPERS\n // ----------------------------------------------------------------------------\n\n /** Returns the first entry in an error object. */\n get firstError(): { code: string; params: any } | null {\n const errors: ValidationErrors | null = this.ngControl.errors\n if (!errors) return null\n const code: string = Object.keys(errors)[0]\n return { code, params: errors[code] }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { NgvBaseControlValueAccessorComponent } from './base-control-value-accessor.component'\n\n@NgModule({\n declarations: [NgvBaseControlValueAccessorComponent],\n imports: [],\n exports: [NgvBaseControlValueAccessorComponent],\n})\nexport class NgvBaseControlValueAccessorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs","sources":["../../../../libs/angular/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.ts","../../../../libs/angular/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.ts","../../../../libs/angular/src/v-angular/base-control-value-accessor/sebgroup-green-angular-src-v-angular-base-control-value-accessor.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChild,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Injectable,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport {\n AbstractControl,\n ControlValueAccessor,\n NgControl,\n ValidationErrors,\n Validator,\n Validators,\n} from '@angular/forms'\n\nimport { Observable, Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TRANSLOCO_SCOPE, TranslocoScope } from '@ngneat/transloco'\n\n@Injectable() // Workaround for Compodoc https://github.com/compodoc/compodoc/issues/984\n@Component({ template: '' }) // Required with Angular ivy compiler\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class NgvBaseControlValueAccessorComponent\n implements AfterViewInit, OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n /** Custom template for displaying the content of the label.\n * Specified by nesting an `<ng-template #labelTpl>Custom Label</ng-template>`.\n */\n @ContentChild('labelTpl', { read: TemplateRef })\n labelContentTpl?: TemplateRef<undefined>\n\n /** Reference to the native child input element. */\n @ViewChild('input', { read: ElementRef }) inputRef?: ElementRef\n\n /* ATTRIBUTES */\n\n /** Id of the host element and is accessible by the children, automatically generated if not provided. */\n @HostBinding('attr.id') @Input() id = (window as any).nggv?.nextId()\n /** Name of the child input element. */\n @Input() name?: string\n /**\n * Label of the child input element using the default template.\n * Can be overwritten by specifying an `<ng-template #labelTpl>Custom Label</ng-template>`.\n */\n @Input() label?: string\n /** Role of the child input element. https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles */\n @Input() role?: string\n /** Value of the child input element. Mostly used in conjunction with radio and checkboxes. */\n @Input() value: any\n /** An error string to be shown under invalid inputs. Overwrites any form errors. */\n @Input() error?: string\n /** Description of the child input element. Both visibly and as `aria-label`. */\n @Input() description?: string\n /** If set to true, the browser will try to automatically set focus to the child input element. */\n @Input() autofocus = false\n /** Deafult value of the child input element. Used when resetting child element. */\n @Input() defaultValue?: any\n /** If passed, the component will listen for updates and will reset its value. */\n @Input() reset?: Observable<any>\n /** Adds (Optional) to input label. */\n @Input() optional?: boolean | null | undefined\n\n private _locked: boolean | null | undefined = undefined\n /** Hides the input borders and displays current value as a text. */\n @Input() set locked(value: boolean | null | undefined) {\n this._locked = value\n this.cdr.detectChanges()\n }\n get locked(): boolean | null | undefined {\n return this._locked\n }\n /** If set to true, using a controls disabled state will display input as locked. */\n @Input() displayDisabledAsLocked?: boolean | null | undefined\n\n /* STATES */\n\n private _required: boolean | null | undefined = undefined\n /** Override the required flag of the component. */\n @Input() set required(value: boolean | null | undefined) {\n this._required = value\n }\n /** Child input element is considered required and changes default label template accordingly. */\n get required(): boolean | null | undefined {\n // if required is set => return required\n if (this._required !== undefined) return this._required\n\n // if required can be determined from the control => return control.required\n if (this.ngControl?.control?.validator) {\n const validator = this.ngControl?.control?.validator(\n {} as AbstractControl,\n )\n // returns true for any error that starts with required\n return Object.keys(validator ?? {}).some((key) =>\n key.startsWith('required'),\n )\n }\n\n return\n }\n\n private _invalid: boolean | undefined = undefined\n /** Override the invalid state of the component. */\n @Input() set invalid(value: boolean) {\n this._invalid = value\n }\n /** The component has the invalid state, usually decorating the elements red and shows the first error. */\n get invalid(): boolean {\n if (this._invalid === true || this._invalid === false) return this._invalid\n return (\n !!this.ngControl?.control?.invalid && this.ngControl?.control?.touched\n )\n }\n\n private _valid: boolean | undefined = undefined\n /** Override the valid state of the component. */\n @Input() set valid(value: boolean) {\n this._valid = value\n }\n /** The component has the valid state, usually decorating the elements green. */\n get valid(): boolean {\n if (this._valid === true || this._valid === false) return this._valid\n return !!this.ngControl?.control?.valid && this.ngControl?.control?.touched\n }\n\n /** The component has the focused state, updated by the child input element's focus state. */\n @Input() focused = false\n\n private _disabled: boolean | undefined = undefined\n /** Override the disabled state of the component. */\n @Input() set disabled(value: boolean) {\n this._disabled = value\n }\n /** The component has the disabled state, usually muting the colors and removes interaction. */\n get disabled(): boolean {\n if (this._disabled === true || this._disabled === false)\n return this._disabled\n return !!this.ngControl?.control?.disabled\n }\n\n /* TRIGGERS */\n\n /** Emits focus events triggered by the child elements. */\n @Output() readonly nggvFocus = new EventEmitter()\n /** Emits focus events triggered by the child elements. */\n @Output() readonly nggvBlur = new EventEmitter()\n\n /* VALUE HANDLERS */\n\n private _state: any = null\n /** @internal */\n protected onChange = (_: any) => {\n // do nothing\n }\n /** @internal */\n protected onTouched = () => {\n // do nothing\n }\n /** @internal */\n protected onValidatorChange: () => void = () => null\n\n /* OTHER VARIABLES */\n scope: string | undefined\n\n /* LIFE CYCLE VARIABLES */\n\n private _onDestroy$ = new Subject<boolean>()\n\n /**\n * Creates a new BaseControlValueAccessorComponent.\n * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.\n * @param translocoScope optional TranslocoScope provided if component is used within a scope.\n */\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n @Optional()\n @Inject(TRANSLOCO_SCOPE)\n protected translocoScope: TranslocoScope,\n protected cdr: ChangeDetectorRef,\n ) {\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this\n }\n\n if (this.translocoScope) this.scope = this.translocoScope.toString()\n }\n\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngOnInit(): void {\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValidators(\n Validators.compose([this.ngControl.control.validator, this.validate]),\n )\n }\n\n // if reset observable has been passed, subscribe after updates\n this.reset?.pipe(takeUntil(this._onDestroy$)).subscribe({\n next: () => {\n // reset value of controller\n this.state = this.defaultValue\n this.onChange(this.state)\n this.cdr.detectChanges()\n },\n })\n }\n\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngAfterViewInit(): void {\n // if default value is set, then don't alter it. Otherwise, use\n // current value of controller after initiation as default value\n this.defaultValue = this.defaultValue ?? this.ngControl?.value\n }\n\n ngOnDestroy(): void {\n this._onDestroy$.next(true)\n this._onDestroy$.complete()\n }\n\n detectChanges(): void {\n this.cdr.detectChanges()\n }\n\n /** @internal */\n onFocus(event: Event) {\n event.stopPropagation\n ? event.stopPropagation()\n : (event.cancelBubble = true)\n this.focused = true\n this.nggvFocus.emit(event)\n }\n\n /** @internal */\n onBlur(event: Event) {\n event.stopPropagation\n ? event.stopPropagation()\n : (event.cancelBubble = true)\n this.onTouched()\n this.focused = false\n this.nggvBlur.emit(event)\n }\n\n /** Sets the focus on the actual input element. */\n setFocus() {\n if (this.inputRef) this.inputRef.nativeElement.focus()\n }\n\n // ----------------------------------------------------------------------------\n // CONTROL VALUE ACCESSOR\n // ----------------------------------------------------------------------------\n\n /** Internal state/value that the native input element has. */\n get state() {\n return this._state\n }\n\n /** Internal state/value that the native input element has. */\n set state(value) {\n if (typeof value === 'undefined') value = null\n this._state = value\n }\n\n /** Writes a new value to the child input element. */\n writeValue(value: any): void {\n this.state = value\n }\n\n /** Registers a callback function that is called when the child input element's value changes. */\n registerOnChange(fn: (_: any) => object): void {\n this.onChange = fn\n }\n\n /** Registers a callback function that is called when the child input element triggers on blur. */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /** Function that is called by the forms API when the control status changes to or from 'DISABLED'. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n\n // if displayDisabledAsLocked is enabled - update locked state based on disabled state\n if (this.displayDisabledAsLocked) {\n this.locked = isDisabled\n }\n }\n\n // ----------------------------------------------------------------------------\n // VALIDATORS\n // ----------------------------------------------------------------------------\n\n /** Method that performs synchronous validation against the provided control. Used for internal validation. */\n validate(_control: AbstractControl): { [name: string]: any } | null {\n return null\n }\n\n /** Registers a callback function to call when the validator inputs change. */\n registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn\n }\n\n // ----------------------------------------------------------------------------\n // HELPERS\n // ----------------------------------------------------------------------------\n\n /** Returns the first entry in an error object. */\n get firstError(): { code: string; params: any } | null {\n const errors: ValidationErrors | null = this.ngControl.errors\n if (!errors) return null\n const code: string = Object.keys(errors)[0]\n return { code, params: errors[code] }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { NgvBaseControlValueAccessorComponent } from './base-control-value-accessor.component'\n\n@NgModule({\n declarations: [NgvBaseControlValueAccessorComponent],\n imports: [],\n exports: [NgvBaseControlValueAccessorComponent],\n})\nexport class NgvBaseControlValueAccessorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}