@vgip/meta-ui 1.9.9 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/fesm2022/vgip-meta-ui.mjs +5614 -78
  2. package/fesm2022/vgip-meta-ui.mjs.map +1 -1
  3. package/index.d.ts +709 -5
  4. package/package.json +5 -8
  5. package/vendor/volta3/README.md +1 -0
  6. package/vendor/volta3/fonts/Spezia-Regular.eot +0 -0
  7. package/vendor/volta3/fonts/Spezia-Regular.ttf +0 -0
  8. package/vendor/volta3/fonts/Spezia-Regular.woff +0 -0
  9. package/vendor/volta3/fonts/Spezia-Regular.woff2 +0 -0
  10. package/vendor/volta3/fonts/Spezia-SemiBold.eot +0 -0
  11. package/vendor/volta3/fonts/Spezia-SemiBold.ttf +0 -0
  12. package/vendor/volta3/fonts/Spezia-SemiBold.woff +0 -0
  13. package/vendor/volta3/fonts/Spezia-SemiBold.woff2 +0 -0
  14. package/vendor/volta3/fonts/Spezia-SemiMonoSemiBold.eot +0 -0
  15. package/vendor/volta3/fonts/Spezia-SemiMonoSemiBold.ttf +0 -0
  16. package/vendor/volta3/fonts/Spezia-SemiMonoSemiBold.woff +0 -0
  17. package/vendor/volta3/fonts/Spezia-SemiMonoSemiBold.woff2 +0 -0
  18. package/vendor/volta3/fonts/Spezia-WideMedium.eot +0 -0
  19. package/vendor/volta3/fonts/Spezia-WideMedium.ttf +0 -0
  20. package/vendor/volta3/fonts/Spezia-WideMedium.woff +0 -0
  21. package/vendor/volta3/fonts/Spezia-WideMedium.woff2 +0 -0
  22. package/vendor/volta3/scss/components/_accordions.scss +165 -0
  23. package/vendor/volta3/scss/components/_badge.scss +325 -0
  24. package/vendor/volta3/scss/components/_blockquote.scss +35 -0
  25. package/vendor/volta3/scss/components/_boxes.scss +113 -0
  26. package/vendor/volta3/scss/components/_buttons.scss +794 -0
  27. package/vendor/volta3/scss/components/_callouts.scss +427 -0
  28. package/vendor/volta3/scss/components/_card.scss +421 -0
  29. package/vendor/volta3/scss/components/_color-classes.scss +186 -0
  30. package/vendor/volta3/scss/components/_dialpad.scss +224 -0
  31. package/vendor/volta3/scss/components/_dropdowns.scss +495 -0
  32. package/vendor/volta3/scss/components/_empties.scss +77 -0
  33. package/vendor/volta3/scss/components/_flash-messages.scss +39 -0
  34. package/vendor/volta3/scss/components/_form-elements.scss +879 -0
  35. package/vendor/volta3/scss/components/_lists.scss +427 -0
  36. package/vendor/volta3/scss/components/_modals.scss +227 -0
  37. package/vendor/volta3/scss/components/_popups.scss +173 -0
  38. package/vendor/volta3/scss/components/_progress.scss +28 -0
  39. package/vendor/volta3/scss/components/_spinner.scss +105 -0
  40. package/vendor/volta3/scss/components/_steps.scss +242 -0
  41. package/vendor/volta3/scss/components/_switch.scss +353 -0
  42. package/vendor/volta3/scss/components/_tables.scss +739 -0
  43. package/vendor/volta3/scss/components/_tabs.scss +296 -0
  44. package/vendor/volta3/scss/components/_text-separator.scss +61 -0
  45. package/vendor/volta3/scss/components/_tooltips.scss +152 -0
  46. package/vendor/volta3/scss/components/side-navigation/_side-nav--aqua.scss +179 -0
  47. package/vendor/volta3/scss/components/side-navigation/_side-nav--collapsible.scss +381 -0
  48. package/vendor/volta3/scss/components/side-navigation/_side-nav--dark.scss +196 -0
  49. package/vendor/volta3/scss/components/side-navigation/_side-nav--light.scss +174 -0
  50. package/vendor/volta3/scss/components/side-navigation/_side-nav--structure.scss +631 -0
  51. package/vendor/volta3/scss/components/side-navigation/_side-nav--tabs.scss +88 -0
  52. package/vendor/volta3/scss/flatpickr/_flatpickr-volta.scss +407 -0
  53. package/vendor/volta3/scss/flatpickr/_flatpickr.css +785 -0
  54. package/vendor/volta3/scss/layout/_article.scss +119 -0
  55. package/vendor/volta3/scss/layout/_utils.scss +174 -0
  56. package/vendor/volta3/scss/lib/_grid.scss +374 -0
  57. package/vendor/volta3/scss/lib/_mediaqueries.scss +52 -0
  58. package/vendor/volta3/scss/lib/_reset.scss +110 -0
  59. package/vendor/volta3/scss/lib/_type.scss +345 -0
  60. package/vendor/volta3/scss/lib/_utils.scss +26 -0
  61. package/vendor/volta3/scss/lib/_variables.scss +115 -0
  62. package/vendor/volta3/scss/prism/_prism-volta.scss +390 -0
  63. package/vendor/volta3/scss/prism/_prism.css +326 -0
  64. package/vendor/volta3/scss/templates/volta-error-page.scss +57 -0
  65. package/vendor/volta3/scss/templates/volta-templates.scss +114 -0
  66. package/vendor/volta3/scss/volta-flatpickr.scss +10 -0
  67. package/vendor/volta3/scss/volta-prism.scss +7 -0
  68. package/vendor/volta3/scss/volta.scss +39 -0
  69. package/vendor/volta3/symbol/volta-brand-icons.svg +1 -0
  70. package/vendor/volta3/symbol/volta-flag-icons.svg +1 -0
  71. package/vendor/volta3/symbol/volta-icons.svg +1 -0
  72. package/esm2022/lib/common/fieldNormalizer/boolean.mjs +0 -12
  73. package/esm2022/lib/common/fieldNormalizer/datetime.mjs +0 -9
  74. package/esm2022/lib/common/fieldNormalizer/index.mjs +0 -183
  75. package/esm2022/lib/common/fieldNormalizer/number.mjs +0 -14
  76. package/esm2022/lib/common/fieldNormalizer/options.mjs +0 -50
  77. package/esm2022/lib/common/fieldNormalizer/radio.mjs +0 -30
  78. package/esm2022/lib/common/fieldNormalizer/reference.mjs +0 -36
  79. package/esm2022/lib/common/fieldNormalizer/richtext.mjs +0 -15
  80. package/esm2022/lib/common/fieldNormalizer/string.mjs +0 -24
  81. package/esm2022/lib/common/fieldNormalizer/text.mjs +0 -18
  82. package/esm2022/lib/common/fieldNormalizer/uniqueNameFilter.mjs +0 -23
  83. package/esm2022/lib/common/metaAutofocus.directive.mjs +0 -35
  84. package/esm2022/lib/common/metaIcons.pipe.mjs +0 -29
  85. package/esm2022/lib/common/metaModel.pipe.mjs +0 -23
  86. package/esm2022/lib/common/metaNormalizer.mjs +0 -375
  87. package/esm2022/lib/common/metaStripHtml.pipe.mjs +0 -22
  88. package/esm2022/lib/common/utils/colorThemes.mjs +0 -77
  89. package/esm2022/lib/common/utils/indexedDbStore/index.mjs +0 -228
  90. package/esm2022/lib/common/utils/relativeTimeBuilder.mjs +0 -49
  91. package/esm2022/lib/common/utils/resourceCardLabel.mjs +0 -24
  92. package/esm2022/lib/common/utils/smartProp.mjs +0 -31
  93. package/esm2022/lib/common/utils/templateBuilder.mjs +0 -103
  94. package/esm2022/lib/fieldAbstract.mjs +0 -291
  95. package/esm2022/lib/fieldBoolean/index.mjs +0 -53
  96. package/esm2022/lib/fieldComposite/index.mjs +0 -82
  97. package/esm2022/lib/fieldDatetime/index.mjs +0 -365
  98. package/esm2022/lib/fieldHidden/index.mjs +0 -18
  99. package/esm2022/lib/fieldInput/index.mjs +0 -475
  100. package/esm2022/lib/fieldList/index.mjs +0 -74
  101. package/esm2022/lib/fieldRadio/index.mjs +0 -88
  102. package/esm2022/lib/fieldReference/index.mjs +0 -834
  103. package/esm2022/lib/fieldRichtext/index.mjs +0 -93
  104. package/esm2022/lib/fieldSelect/index.mjs +0 -568
  105. package/esm2022/lib/fieldText/index.mjs +0 -83
  106. package/esm2022/lib/fieldUnknown/index.mjs +0 -19
  107. package/esm2022/lib/index.mjs +0 -163
  108. package/esm2022/lib/layout/index.mjs +0 -212
  109. package/esm2022/lib/metaField/index.mjs +0 -148
  110. package/esm2022/lib/refDialog/index.mjs +0 -135
  111. package/esm2022/lib/resource/index.mjs +0 -525
  112. package/esm2022/lib/resourceCard/index.mjs +0 -40
  113. package/esm2022/lib/services/metaContext/index.mjs +0 -52
  114. package/esm2022/lib/services/metaMsg/index.mjs +0 -84
  115. package/esm2022/lib/services/metaReference/index.mjs +0 -94
  116. package/esm2022/lib/services/metaResource/index.mjs +0 -139
  117. package/esm2022/lib/services/metaResource/metaHttpClient.mjs +0 -64
  118. package/esm2022/lib/services/metaTracker/index.mjs +0 -31
  119. package/esm2022/lib/services/resourceDrafts/index.mjs +0 -69
  120. package/esm2022/public-api.mjs +0 -5
  121. package/esm2022/vgip-meta-ui.mjs +0 -5
  122. package/fesm2022/vgip-meta-ui-fieldAbstract-baeaf24d.mjs +0 -399
  123. package/fesm2022/vgip-meta-ui-fieldAbstract-baeaf24d.mjs.map +0 -1
  124. package/fesm2022/vgip-meta-ui-index-0184d5ec.mjs +0 -478
  125. package/fesm2022/vgip-meta-ui-index-0184d5ec.mjs.map +0 -1
  126. package/fesm2022/vgip-meta-ui-index-050d4a8c.mjs +0 -87
  127. package/fesm2022/vgip-meta-ui-index-050d4a8c.mjs.map +0 -1
  128. package/fesm2022/vgip-meta-ui-index-1ddfcce0.mjs +0 -86
  129. package/fesm2022/vgip-meta-ui-index-1ddfcce0.mjs.map +0 -1
  130. package/fesm2022/vgip-meta-ui-index-37358620.mjs +0 -158
  131. package/fesm2022/vgip-meta-ui-index-37358620.mjs.map +0 -1
  132. package/fesm2022/vgip-meta-ui-index-4e9c383f.mjs +0 -95
  133. package/fesm2022/vgip-meta-ui-index-4e9c383f.mjs.map +0 -1
  134. package/fesm2022/vgip-meta-ui-index-70d40f26.mjs +0 -79
  135. package/fesm2022/vgip-meta-ui-index-70d40f26.mjs.map +0 -1
  136. package/fesm2022/vgip-meta-ui-index-7741951a.mjs +0 -23
  137. package/fesm2022/vgip-meta-ui-index-7741951a.mjs.map +0 -1
  138. package/fesm2022/vgip-meta-ui-index-80ab405f.mjs +0 -93
  139. package/fesm2022/vgip-meta-ui-index-80ab405f.mjs.map +0 -1
  140. package/fesm2022/vgip-meta-ui-index-86d5c4b7.mjs +0 -575
  141. package/fesm2022/vgip-meta-ui-index-86d5c4b7.mjs.map +0 -1
  142. package/fesm2022/vgip-meta-ui-index-926ae006.mjs +0 -58
  143. package/fesm2022/vgip-meta-ui-index-926ae006.mjs.map +0 -1
  144. package/fesm2022/vgip-meta-ui-index-ac6d744b.mjs +0 -867
  145. package/fesm2022/vgip-meta-ui-index-ac6d744b.mjs.map +0 -1
  146. package/fesm2022/vgip-meta-ui-index-c943b7c0.mjs +0 -24
  147. package/fesm2022/vgip-meta-ui-index-c943b7c0.mjs.map +0 -1
  148. package/fesm2022/vgip-meta-ui-index-f2a08550.mjs +0 -2058
  149. package/fesm2022/vgip-meta-ui-index-f2a08550.mjs.map +0 -1
  150. package/fesm2022/vgip-meta-ui-index-f8b00f06.mjs +0 -370
  151. package/fesm2022/vgip-meta-ui-index-f8b00f06.mjs.map +0 -1
  152. package/fesm2022/vgip-meta-ui-index-fa271433.mjs +0 -151
  153. package/fesm2022/vgip-meta-ui-index-fa271433.mjs.map +0 -1
  154. package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs +0 -26
  155. package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs.map +0 -1
  156. package/fesm2022/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs +0 -51
  157. package/fesm2022/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs.map +0 -1
  158. package/lib/common/fieldNormalizer/boolean.d.ts +0 -1
  159. package/lib/common/fieldNormalizer/datetime.d.ts +0 -1
  160. package/lib/common/fieldNormalizer/index.d.ts +0 -1
  161. package/lib/common/fieldNormalizer/number.d.ts +0 -1
  162. package/lib/common/fieldNormalizer/options.d.ts +0 -1
  163. package/lib/common/fieldNormalizer/radio.d.ts +0 -1
  164. package/lib/common/fieldNormalizer/reference.d.ts +0 -1
  165. package/lib/common/fieldNormalizer/richtext.d.ts +0 -1
  166. package/lib/common/fieldNormalizer/string.d.ts +0 -1
  167. package/lib/common/fieldNormalizer/text.d.ts +0 -1
  168. package/lib/common/fieldNormalizer/uniqueNameFilter.d.ts +0 -1
  169. package/lib/common/metaAutofocus.directive.d.ts +0 -10
  170. package/lib/common/metaIcons.pipe.d.ts +0 -10
  171. package/lib/common/metaModel.pipe.d.ts +0 -7
  172. package/lib/common/metaNormalizer.d.ts +0 -1
  173. package/lib/common/metaStripHtml.pipe.d.ts +0 -7
  174. package/lib/common/utils/colorThemes.d.ts +0 -8
  175. package/lib/common/utils/indexedDbStore/index.d.ts +0 -25
  176. package/lib/common/utils/relativeTimeBuilder.d.ts +0 -1
  177. package/lib/common/utils/resourceCardLabel.d.ts +0 -1
  178. package/lib/common/utils/smartProp.d.ts +0 -2
  179. package/lib/common/utils/templateBuilder.d.ts +0 -1
  180. package/lib/fieldAbstract.d.ts +0 -60
  181. package/lib/fieldBoolean/index.d.ts +0 -10
  182. package/lib/fieldComposite/index.d.ts +0 -14
  183. package/lib/fieldDatetime/index.d.ts +0 -26
  184. package/lib/fieldHidden/index.d.ts +0 -6
  185. package/lib/fieldInput/index.d.ts +0 -35
  186. package/lib/fieldList/index.d.ts +0 -15
  187. package/lib/fieldRadio/index.d.ts +0 -14
  188. package/lib/fieldReference/index.d.ts +0 -73
  189. package/lib/fieldRichtext/index.d.ts +0 -27
  190. package/lib/fieldSelect/index.d.ts +0 -49
  191. package/lib/fieldText/index.d.ts +0 -15
  192. package/lib/fieldUnknown/index.d.ts +0 -6
  193. package/lib/index.d.ts +0 -65
  194. package/lib/layout/index.d.ts +0 -46
  195. package/lib/metaField/index.d.ts +0 -28
  196. package/lib/refDialog/index.d.ts +0 -33
  197. package/lib/resource/index.d.ts +0 -68
  198. package/lib/resourceCard/index.d.ts +0 -17
  199. package/lib/services/metaContext/index.d.ts +0 -32
  200. package/lib/services/metaMsg/index.d.ts +0 -14
  201. package/lib/services/metaReference/index.d.ts +0 -11
  202. package/lib/services/metaResource/index.d.ts +0 -31
  203. package/lib/services/metaResource/metaHttpClient.d.ts +0 -15
  204. package/lib/services/metaTracker/index.d.ts +0 -19
  205. package/lib/services/resourceDrafts/index.d.ts +0 -26
  206. package/public-api.d.ts +0 -1
@@ -1,370 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component } from '@angular/core';
3
- import * as i2 from '@angular/forms';
4
- import { ControlContainer, NgForm } from '@angular/forms';
5
- import { F as FieldAbstract } from './vgip-meta-ui-fieldAbstract-baeaf24d.mjs';
6
- import { r as relativeTimeBuilder } from './vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs';
7
- import * as i1 from '@angular/common';
8
- import { M as MetaModelPipe } from './vgip-meta-ui-metaModel.pipe-6b803e66.mjs';
9
- import 'rxjs';
10
- import 'rxjs/operators';
11
-
12
- /*
13
- * @Author: Alexander.Vangelov@vonage.com
14
- * @Date: 2020-04-18 18:05:46
15
- * @Last Modified by: Alexander.Vangelov@vonage.com
16
- * @Last Modified time: 2020-04-18 21:09:16
17
- */
18
- class FieldDatetime extends FieldAbstract {
19
- constructor() {
20
- super(...arguments);
21
- this.placeholder = 'dd/mm/yyyy';
22
- this.clickout = (event) => {
23
- if (event.target.className === 'Vlt-dropdown__link' && this.elementRef.nativeElement.contains(event.target)) {
24
- this.focus();
25
- // this.dismissDropdown();
26
- // this.parent[this.meta.name] = event.target.textContent;
27
- }
28
- else if (event.target !== this.input && event.target.className !== 'Vlt-dropdown__title') {
29
- this.dismissDropdown();
30
- }
31
- else {
32
- this.focus();
33
- }
34
- };
35
- this.keydown = (event) => {
36
- switch (event.key) {
37
- case 'ArrowDown': {
38
- if (['datetime', 'time', 'date', 'datetime-local'].indexOf(this.meta.type || this.meta.subtype) !== -1) {
39
- break;
40
- }
41
- this.showDropdown();
42
- event.preventDefault();
43
- if (typeof (this.activeSuggestionIndex) === 'undefined') {
44
- this.activeSuggestionIndex = 0;
45
- }
46
- else {
47
- this.activeSuggestionIndex++;
48
- if (this.activeSuggestionIndex >= this.suggestions.length) {
49
- this.activeSuggestionIndex = 0;
50
- }
51
- }
52
- break;
53
- }
54
- case 'ArrowUp': {
55
- if (['datetime', 'time', 'date', 'datetime-local'].indexOf(this.meta.type || this.meta.subtype) !== -1) {
56
- break;
57
- }
58
- this.showDropdown();
59
- event.preventDefault();
60
- if (typeof (this.activeSuggestionIndex) === 'undefined') {
61
- this.activeSuggestionIndex = this.suggestions.length - 1;
62
- }
63
- else {
64
- this.activeSuggestionIndex--;
65
- if (this.activeSuggestionIndex < 0) {
66
- this.activeSuggestionIndex = this.suggestions.length - 1;
67
- }
68
- }
69
- break;
70
- }
71
- case 'Space':
72
- case 'Enter': {
73
- if (typeof (this.activeSuggestionIndex) !== 'undefined') {
74
- event.preventDefault();
75
- event.stopPropagation();
76
- this.onSuggestionSelect(event, this.suggestions[this.activeSuggestionIndex]);
77
- delete this.activeSuggestionIndex;
78
- }
79
- break;
80
- }
81
- case 'Escape': {
82
- event.preventDefault();
83
- event.stopPropagation();
84
- this.dismissDropdown();
85
- break;
86
- }
87
- }
88
- };
89
- }
90
- get suggestions() {
91
- return this.meta.suggestions || [];
92
- }
93
- ngOnInit() {
94
- this.validationAttributes = ['required', 'min', 'max', 'step'];
95
- this.type = this.meta.type;
96
- if (this.meta.type === 'datetime') {
97
- this.type = 'datetime-local';
98
- this.placeholder += ' --:-- --';
99
- }
100
- else if (this.meta.type === 'time') {
101
- this.placeholder = '--:-- --';
102
- }
103
- const origValue = this.parent[this.meta.name];
104
- Object.defineProperty(this.parent, this.meta.name, {
105
- set: (value) => {
106
- if (value) {
107
- if (['datetime', 'date', 'datetime-local'].indexOf(this.meta.type || this.meta.subtype) !== -1 && value) {
108
- try {
109
- let date;
110
- if ((typeof (value) === 'number')) {
111
- date = new Date(parseInt(value, 10));
112
- if ('date' === (this.meta.type || this.meta.subtype)) {
113
- date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000));
114
- }
115
- }
116
- else {
117
- if ('date' === (this.meta.type || this.meta.subtype)) {
118
- date = new Date(Date.parse(value));
119
- }
120
- else {
121
- date = new Date(Date.parse(`${value}Z`) + (new Date().getTimezoneOffset() * 60000));
122
- }
123
- }
124
- switch (this.meta.type || this.meta.subtype) {
125
- case 'datetime-local':
126
- case 'datetime': {
127
- this.model = `${date.getFullYear()}-${('00' + (date.getMonth() + 1)).slice(-2)}-${('00' + date.getDate()).slice(-2)}`;
128
- this.model += `T${('00' + date.getHours()).slice(-2)}:${('00' + date.getMinutes()).slice(-2)}`;
129
- break;
130
- }
131
- case 'date': {
132
- this.model = date.toISOString().split('T')[0];
133
- break;
134
- }
135
- }
136
- if (this.meta.valueType === 'isostring') {
137
- this.value = date.toISOString();
138
- }
139
- else if (this.meta.valueType === 'string') {
140
- if ((this.meta.type || this.meta.subtype) === 'date') {
141
- this.value = date.toISOString().split('T')[0];
142
- }
143
- else {
144
- this.value = date.toISOString();
145
- }
146
- }
147
- else {
148
- if ((this.meta.type || this.meta.subtype) === 'date') {
149
- date.setFullYear(date.getUTCFullYear());
150
- date.setMonth(date.getUTCMonth());
151
- date.setDate(date.getUTCDate());
152
- date.setMinutes(0);
153
- date.setHours(0);
154
- date.setSeconds(0);
155
- date.setMilliseconds(0);
156
- this.value = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).getTime();
157
- }
158
- else {
159
- this.value = date.getTime();
160
- }
161
- }
162
- }
163
- catch (e) {
164
- console.error('Date parse error', e.message, `"${value}"`, `(${typeof (value)})`);
165
- }
166
- }
167
- else if ('time' === (this.meta.type || this.meta.subtype)) {
168
- try {
169
- let date;
170
- if (typeof (value) === 'number') {
171
- date = new Date(parseInt(value, 10));
172
- if (value < 86400000) {
173
- date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000));
174
- }
175
- }
176
- else {
177
- date = new Date(Date.parse(new Date().toISOString().replace(/T.*Z/, `T${value}Z`)) + (new Date().getTimezoneOffset() * 60000));
178
- }
179
- this.model = date.toTimeString().split(' ')[0];
180
- if (this.meta.valueType === 'isostring') {
181
- this.value = date.toISOString();
182
- }
183
- else {
184
- date.setFullYear(1970);
185
- date.setMonth(0);
186
- date.setDate(1);
187
- date.setMilliseconds(0);
188
- if (this.meta.valueType === 'string') {
189
- this.value = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString().split('T')[1].substring(0, 8);
190
- }
191
- else {
192
- this.value = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).getTime();
193
- }
194
- }
195
- }
196
- catch (e) {
197
- console.error('Date parse error', e.message, `"${value}"`, `(${typeof (value)})`);
198
- }
199
- }
200
- }
201
- else {
202
- delete this.model;
203
- delete this.value;
204
- }
205
- this.meta.$optional = this.isOptional;
206
- },
207
- get: () => this.value,
208
- enumerable: this.sendToServer,
209
- configurable: true
210
- });
211
- if (typeof (origValue) !== 'undefined') {
212
- this.parent[this.meta.name] = origValue;
213
- }
214
- const d = this.meta.default || this.meta.defaultValue;
215
- if (d && typeof (this.model) === 'undefined') {
216
- const defaultValue = (typeof (d) === 'string') ? d : (d.id || d.value);
217
- if (defaultValue || defaultValue === 0) {
218
- if (/^(date|time)/.test(this.meta.type || this.meta.subtype) && typeof (defaultValue) === 'string') {
219
- this.parent[this.meta.name] = relativeTimeBuilder(this.meta.type || this.meta.subtype, defaultValue, this.validations.step);
220
- }
221
- else {
222
- this.parent[this.meta.name] = defaultValue;
223
- }
224
- }
225
- }
226
- if (typeof (this.meta.auto) === 'object') {
227
- Object.keys(this.meta.auto || {}).filter(n => ['gt', 'lt'].indexOf(n) !== -1).map(v => this.setupLogicalValidation(v));
228
- }
229
- }
230
- onActivated(ev) {
231
- this.input = ev.srcElement;
232
- if (!this.dropdown) {
233
- this.dropdown = ev.srcElement.parentNode.parentNode;
234
- }
235
- this.showDropdown();
236
- }
237
- clear(ev) {
238
- delete this.model;
239
- this.onModelChange(this.model);
240
- if (ev) {
241
- ev.preventDefault();
242
- ev.stopPropagation();
243
- return false;
244
- }
245
- }
246
- onBlur(ev) {
247
- let internalControl = false;
248
- if (ev.relatedTarget) {
249
- if (!this.elementRef.nativeElement.contains(ev.relatedTarget)) {
250
- this.dismissDropdown();
251
- }
252
- else {
253
- internalControl = true;
254
- }
255
- }
256
- if (this.keyListenerActive && !internalControl) {
257
- this.input.removeEventListener('keydown', this.keydown);
258
- setTimeout(() => {
259
- if (!this.keyListenerActive) {
260
- document.removeEventListener('click', this.clickout);
261
- }
262
- }, 400);
263
- delete this.keyListenerActive;
264
- }
265
- }
266
- onSuggestionSelect(ev, suggestion) {
267
- if (!suggestion) {
268
- return;
269
- }
270
- ev.preventDefault();
271
- ev.stopPropagation();
272
- this.focus();
273
- this.dismissDropdown();
274
- this.model = suggestion;
275
- this.onModelChange(suggestion);
276
- }
277
- dismissDropdown(event) {
278
- if (event) {
279
- this.focus();
280
- }
281
- if (this.dropdown) {
282
- this.dropdown.classList.remove('Vlt-dropdown--expanded');
283
- }
284
- }
285
- ensureDropdownIsVisible() {
286
- setTimeout(() => {
287
- const holder = this.dropdown.closest('.Vlt-card__content, .Vlt-modal__content');
288
- if (holder) {
289
- const el = this.elementRef.nativeElement.querySelector('.Vlt-dropdown__panel');
290
- const elRect = el.getBoundingClientRect();
291
- const holderRect = holder.getBoundingClientRect();
292
- if (holderRect.top + holderRect.height < elRect.top + elRect.height) {
293
- el.scrollIntoView({ block: 'end' });
294
- }
295
- }
296
- }, 400);
297
- }
298
- showDropdown() {
299
- if (this.meta.suggestions?.length) {
300
- this.dropdown.classList.add('Vlt-dropdown--expanded');
301
- this.ensureDropdownIsVisible();
302
- }
303
- if (!this.keyListenerActive) {
304
- this.input.addEventListener('keydown', this.keydown);
305
- setTimeout(() => {
306
- document.addEventListener('click', this.clickout);
307
- }, 200);
308
- this.keyListenerActive = true;
309
- if (this.parent[this.meta.name]) {
310
- for (let suggestionIndex = 0; suggestionIndex < (this.meta.suggestions || []).length; suggestionIndex++) {
311
- if (this.meta.suggestions[suggestionIndex] === this.parent[this.meta.name]) {
312
- this.activeSuggestionIndex = suggestionIndex;
313
- }
314
- }
315
- }
316
- }
317
- }
318
- autoSetValue(againstTimestamp, v, cfg) {
319
- const compareValue = relativeTimeBuilder(this.meta.type, cfg.offset, this.validations.step, againstTimestamp);
320
- if (this.model) {
321
- const currentValue = new Date(this.model).getTime();
322
- let isInvalid;
323
- if (v === 'gt') {
324
- isInvalid = compareValue > currentValue;
325
- }
326
- else if (v === 'lt') {
327
- isInvalid = currentValue > compareValue;
328
- }
329
- if (isInvalid) {
330
- this.parent[this.meta.name] = compareValue;
331
- }
332
- }
333
- else {
334
- this.parent[this.meta.name] = compareValue;
335
- }
336
- }
337
- setupLogicalValidation(v) {
338
- const cfg = this.meta.auto[v];
339
- if (typeof (cfg.against) === 'string') {
340
- let againstValue = this.parent[cfg.against];
341
- try {
342
- let againstTimestamp = Date.parse(`${againstValue}Z`) + (new Date().getTimezoneOffset() * 60000);
343
- if (againstValue) {
344
- this.autoSetValue(againstTimestamp, v, cfg);
345
- }
346
- this.parentChangeSubject.subscribe((value) => {
347
- if (value && value.hasOwnProperty(cfg.against)) {
348
- againstValue = value[cfg.against];
349
- if (againstValue) {
350
- againstTimestamp = Date.parse(`${againstValue}Z`) + (new Date().getTimezoneOffset() * 60000);
351
- this.autoSetValue(againstTimestamp, v, cfg);
352
- }
353
- }
354
- });
355
- }
356
- catch (e) {
357
- /* empty */
358
- }
359
- }
360
- }
361
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: FieldDatetime, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
362
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: FieldDatetime, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label' [title]='meta.label || meta.name'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>{{model}}</div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element Vlt-form__element--big\" [ngClass]=\"{'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched), 'has-value': f.value, active: keyListenerActive }\">\n <div class=\"Vlt-input\" [ngClass]=\"{'vgip-disable': disabled}\">\n <label class='wrapper'>\n <input class='main model' [pattern]=\"validations.pattern ? validations.pattern.value || validations.pattern : null\" [required]='validations.required' [minlength]='validations.minlength' [maxlength]='validations.maxlength' [min]='validations.min' [max]='validations.max' [step]='validations.step' [disabled]='disabled' [readonly]='readonly' [(ngModel)]='model' (ngModelChange)=\"onModelChange($event)\" #f='ngModel' [name]='name' [type]=\"type\" [placeholder]=\"placeholder\" (click)='onActivated($event)' (focus)='onActivated($event)' (blur)='onBlur($event)'/>\n <label class='Vlt-truncate'>{{meta.label || meta.name}}<span *ngIf='validations.required' class='Vlt-red'>*</span></label> <!-- eslint-disable-line @angular-eslint/template/label-has-associated-control -->\n </label>\n <div class='Vlt-composite__append right-actions'>\n <a href='#' *ngIf='model' class=\"Vlt-composite__append--icon\" (click)='clear($event)' tabindex='0'>\n <div class=\"Vlt-composite__icon\">\n <svg><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-cross\"/></svg>\n </div>\n </a>\n </div>\n </div>\n <small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched && keyListenerActive))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required.&nbsp;</span>\n <span *ngIf=\"f.errors.min\">Must be later than {{validations.min}}.&nbsp;</span>\n <span *ngIf=\"f.errors.max\">Must be no later than {{validations}}.&nbsp;</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}}&nbsp;</span>\n </small>\n <small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n", styles: [".Vlt-form__element--big.Vlt-form__element--error input.main,.Vlt-form__element--big.Vlt-form__element--error .Vlt-composite__append button{background:var(--vgip-meta-input-bg-color);border-color:#f25a6b;box-shadow:none}@-moz-document url-prefix(){.Vlt-composite__append.right-actions{right:10px!important}}.Vlt-composite__append.right-actions{position:absolute;top:5px;right:10px;cursor:pointer}@media screen and (-webkit-min-device-pixel-ratio: 0) and (-webkit-min-device-pixel-ratio: 0),screen and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm){.Vlt-composite__append.right-actions{right:53px}}.Vlt-composite__append.right-actions .Vlt-composite__append--icon{width:36px;outline:none;position:initial;display:inline-block}.Vlt-composite__append.right-actions .Vlt-composite__append--icon svg{height:14px;width:14px}.Vlt-composite__append.right-actions .Vlt-composite__append--icon:hover svg,.Vlt-composite__append.right-actions .Vlt-composite__append--icon:focus svg{fill:#2c2d30}.vgip-disable .Vlt-composite__append{cursor:not-allowed;pointer-events:none}:host-context ::ng-deep input::-webkit-calendar-picker-indicator{height:48px;width:51px;margin-top:-15px;margin-right:-15px;padding:0 2px 0 0;cursor:pointer;color:transparent;background-origin:content-box;background-size:initial;background-repeat:no-repeat;background-position:center;opacity:1;visibility:visible;background-image:var(--vgip-meta-date-icon)}:host-context ::ng-deep input::-webkit-calendar-picker-indicator:hover{background-color:var(--vgip-meta-input-action-hover-bg-color)}:host-context ::ng-deep input[type=time]::-webkit-calendar-picker-indicator{background-image:var(--vgip-meta-time-icon)}:host-context ::ng-deep input[readonly]::-webkit-calendar-picker-indicator{visibility:visible}:host-context ::ng-deep input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-clear-button{opacity:0;pointer-events:none}:host-context ::ng-deep input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-inner-spin-button{opacity:0;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: MetaModelPipe, name: "metaModel" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
363
- }
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: FieldDatetime, decorators: [{
365
- type: Component,
366
- args: [{ viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label' [title]='meta.label || meta.name'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>{{model}}</div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element Vlt-form__element--big\" [ngClass]=\"{'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched), 'has-value': f.value, active: keyListenerActive }\">\n <div class=\"Vlt-input\" [ngClass]=\"{'vgip-disable': disabled}\">\n <label class='wrapper'>\n <input class='main model' [pattern]=\"validations.pattern ? validations.pattern.value || validations.pattern : null\" [required]='validations.required' [minlength]='validations.minlength' [maxlength]='validations.maxlength' [min]='validations.min' [max]='validations.max' [step]='validations.step' [disabled]='disabled' [readonly]='readonly' [(ngModel)]='model' (ngModelChange)=\"onModelChange($event)\" #f='ngModel' [name]='name' [type]=\"type\" [placeholder]=\"placeholder\" (click)='onActivated($event)' (focus)='onActivated($event)' (blur)='onBlur($event)'/>\n <label class='Vlt-truncate'>{{meta.label || meta.name}}<span *ngIf='validations.required' class='Vlt-red'>*</span></label> <!-- eslint-disable-line @angular-eslint/template/label-has-associated-control -->\n </label>\n <div class='Vlt-composite__append right-actions'>\n <a href='#' *ngIf='model' class=\"Vlt-composite__append--icon\" (click)='clear($event)' tabindex='0'>\n <div class=\"Vlt-composite__icon\">\n <svg><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-cross\"/></svg>\n </div>\n </a>\n </div>\n </div>\n <small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched && keyListenerActive))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required.&nbsp;</span>\n <span *ngIf=\"f.errors.min\">Must be later than {{validations.min}}.&nbsp;</span>\n <span *ngIf=\"f.errors.max\">Must be no later than {{validations}}.&nbsp;</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}}&nbsp;</span>\n </small>\n <small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n", styles: [".Vlt-form__element--big.Vlt-form__element--error input.main,.Vlt-form__element--big.Vlt-form__element--error .Vlt-composite__append button{background:var(--vgip-meta-input-bg-color);border-color:#f25a6b;box-shadow:none}@-moz-document url-prefix(){.Vlt-composite__append.right-actions{right:10px!important}}.Vlt-composite__append.right-actions{position:absolute;top:5px;right:10px;cursor:pointer}@media screen and (-webkit-min-device-pixel-ratio: 0) and (-webkit-min-device-pixel-ratio: 0),screen and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm){.Vlt-composite__append.right-actions{right:53px}}.Vlt-composite__append.right-actions .Vlt-composite__append--icon{width:36px;outline:none;position:initial;display:inline-block}.Vlt-composite__append.right-actions .Vlt-composite__append--icon svg{height:14px;width:14px}.Vlt-composite__append.right-actions .Vlt-composite__append--icon:hover svg,.Vlt-composite__append.right-actions .Vlt-composite__append--icon:focus svg{fill:#2c2d30}.vgip-disable .Vlt-composite__append{cursor:not-allowed;pointer-events:none}:host-context ::ng-deep input::-webkit-calendar-picker-indicator{height:48px;width:51px;margin-top:-15px;margin-right:-15px;padding:0 2px 0 0;cursor:pointer;color:transparent;background-origin:content-box;background-size:initial;background-repeat:no-repeat;background-position:center;opacity:1;visibility:visible;background-image:var(--vgip-meta-date-icon)}:host-context ::ng-deep input::-webkit-calendar-picker-indicator:hover{background-color:var(--vgip-meta-input-action-hover-bg-color)}:host-context ::ng-deep input[type=time]::-webkit-calendar-picker-indicator{background-image:var(--vgip-meta-time-icon)}:host-context ::ng-deep input[readonly]::-webkit-calendar-picker-indicator{visibility:visible}:host-context ::ng-deep input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-clear-button{opacity:0;pointer-events:none}:host-context ::ng-deep input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-inner-spin-button{opacity:0;pointer-events:none}\n"] }]
367
- }] });
368
-
369
- export { FieldDatetime };
370
- //# sourceMappingURL=vgip-meta-ui-index-f8b00f06.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vgip-meta-ui-index-f8b00f06.mjs","sources":["../../../projects/meta-ui/src/lib/fieldDatetime/index.ts","../../../projects/meta-ui/src/lib/fieldDatetime/view.html"],"sourcesContent":["/*\n* @Author: Alexander.Vangelov@vonage.com\n* @Date: 2020-04-18 18:05:46\n * @Last Modified by: Alexander.Vangelov@vonage.com\n * @Last Modified time: 2020-04-18 21:09:16\n*/\n\nimport { Component, OnInit } from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { FieldAbstract } from '../fieldAbstract';\nimport { relativeTimeBuilder } from '../common/utils/relativeTimeBuilder';\n\n@Component({\n templateUrl: './view.html',\n styleUrls: ['./style.scss'],\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class FieldDatetime extends FieldAbstract implements OnInit {\n input: any;\n dropdown: any;\n activeSuggestionIndex: number;\n value: any;\n type: string;\n placeholder = 'dd/mm/yyyy';\n\n get suggestions() {\n return this.meta.suggestions || [];\n }\n\n ngOnInit() {\n this.validationAttributes = ['required', 'min', 'max', 'step'];\n this.type = this.meta.type;\n if (this.meta.type === 'datetime') {\n this.type = 'datetime-local';\n this.placeholder += ' --:-- --';\n } else if (this.meta.type === 'time') {\n this.placeholder = '--:-- --';\n }\n const origValue = this.parent[this.meta.name];\n Object.defineProperty(this.parent, this.meta.name, {\n set: (value) => {\n if (value) {\n if (['datetime', 'date', 'datetime-local'].indexOf(this.meta.type || this.meta.subtype) !== -1 && value) {\n try {\n let date: Date;\n if ((typeof (value) === 'number')) {\n date = new Date(parseInt(value as any, 10));\n if ('date' === (this.meta.type || this.meta.subtype)) {\n date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000));\n }\n } else {\n if ('date' === (this.meta.type || this.meta.subtype)) {\n date = new Date(Date.parse(value));\n } else {\n date = new Date(Date.parse(`${value}Z`) + (new Date().getTimezoneOffset() * 60000));\n }\n }\n switch (this.meta.type || this.meta.subtype) {\n case 'datetime-local':\n case 'datetime': {\n this.model = `${date.getFullYear()}-${('00' + (date.getMonth() + 1)).slice(-2)}-${('00' + date.getDate()).slice(-2)}`;\n this.model += `T${('00' + date.getHours()).slice(-2)}:${('00' + date.getMinutes()).slice(-2)}`;\n break;\n }\n case 'date': {\n this.model = date.toISOString().split('T')[0];\n break;\n }\n }\n if (this.meta.valueType === 'isostring') {\n this.value = date.toISOString();\n } else if (this.meta.valueType === 'string') {\n if ((this.meta.type || this.meta.subtype) === 'date') {\n this.value = date.toISOString().split('T')[0];\n } else {\n this.value = date.toISOString();\n }\n } else {\n if ((this.meta.type || this.meta.subtype) === 'date') {\n date.setFullYear(date.getUTCFullYear());\n date.setMonth(date.getUTCMonth());\n date.setDate(date.getUTCDate());\n date.setMinutes(0);\n date.setHours(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n this.value = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).getTime();\n } else {\n this.value = date.getTime();\n }\n }\n } catch (e) {\n console.error('Date parse error', e.message, `\"${value}\"`, `(${typeof (value)})`);\n }\n } else if ('time' === (this.meta.type || this.meta.subtype)) {\n try {\n let date: Date;\n if (typeof (value) === 'number') {\n date = new Date(parseInt(value as any, 10));\n if (value < 86400000) {\n date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000));\n }\n } else {\n date = new Date(\n Date.parse(new Date().toISOString().replace(/T.*Z/, `T${value}Z`)) + (new Date().getTimezoneOffset() * 60000)\n );\n }\n this.model = date.toTimeString().split(' ')[0];\n if (this.meta.valueType === 'isostring') {\n this.value = date.toISOString();\n } else {\n date.setFullYear(1970);\n date.setMonth(0);\n date.setDate(1);\n date.setMilliseconds(0);\n if (this.meta.valueType === 'string') {\n this.value = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString().split('T')[1].substring(0,8);\n } else {\n this.value = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).getTime();\n }\n }\n } catch (e) {\n console.error('Date parse error', e.message, `\"${value}\"`, `(${typeof (value)})`);\n }\n }\n } else {\n delete this.model;\n delete this.value;\n }\n this.meta.$optional = this.isOptional;\n },\n get: () => this.value,\n enumerable: this.sendToServer,\n configurable: true\n });\n if (typeof(origValue) !== 'undefined') {\n this.parent[this.meta.name] = origValue;\n }\n const d = this.meta.default || this.meta.defaultValue;\n if (d && typeof(this.model) === 'undefined') {\n const defaultValue = (typeof (d) === 'string') ? d : (d.id || d.value);\n if (defaultValue || defaultValue === 0) {\n if (/^(date|time)/.test(this.meta.type || this.meta.subtype) && typeof(defaultValue) === 'string') {\n this.parent[this.meta.name] = relativeTimeBuilder(this.meta.type || this.meta.subtype, defaultValue, this.validations.step);\n } else {\n this.parent[this.meta.name] = defaultValue;\n }\n }\n }\n if (typeof(this.meta.auto) === 'object') {\n Object.keys(this.meta.auto || {}).filter(n => ['gt', 'lt'].indexOf(n) !== -1).map(v => this.setupLogicalValidation(v));\n }\n }\n\n onActivated(ev) {\n this.input = ev.srcElement;\n if (!this.dropdown) {\n this.dropdown = ev.srcElement.parentNode.parentNode;\n }\n this.showDropdown();\n }\n\n clear(ev?) {\n delete this.model;\n this.onModelChange(this.model);\n if (ev) {\n ev.preventDefault();\n ev.stopPropagation();\n return false;\n }\n }\n\n onBlur(ev) {\n let internalControl = false;\n if (ev.relatedTarget) {\n if (!this.elementRef.nativeElement.contains(ev.relatedTarget)) {\n this.dismissDropdown();\n } else {\n internalControl = true;\n }\n }\n if (this.keyListenerActive && !internalControl) {\n this.input.removeEventListener('keydown', this.keydown);\n setTimeout(() => {\n if (!this.keyListenerActive) {\n document.removeEventListener('click', this.clickout);\n }\n }, 400);\n delete this.keyListenerActive;\n }\n }\n\n onSuggestionSelect(ev, suggestion) {\n if (!suggestion) {\n return;\n }\n ev.preventDefault();\n ev.stopPropagation();\n this.focus();\n this.dismissDropdown();\n this.model = suggestion;\n this.onModelChange(suggestion);\n }\n\n dismissDropdown(event?) {\n if (event) {\n this.focus();\n }\n if (this.dropdown) {\n this.dropdown.classList.remove('Vlt-dropdown--expanded');\n }\n }\n\n private ensureDropdownIsVisible() {\n setTimeout(() => {\n const holder = this.dropdown.closest('.Vlt-card__content, .Vlt-modal__content');\n if (holder) {\n const el = this.elementRef.nativeElement.querySelector('.Vlt-dropdown__panel');\n const elRect = el.getBoundingClientRect();\n const holderRect = holder.getBoundingClientRect();\n if (holderRect.top + holderRect.height < elRect.top + elRect.height) {\n el.scrollIntoView({ block: 'end' });\n }\n }\n }, 400);\n }\n\n private showDropdown() {\n if (this.meta.suggestions?.length) {\n this.dropdown.classList.add('Vlt-dropdown--expanded');\n this.ensureDropdownIsVisible();\n }\n if (!this.keyListenerActive) {\n this.input.addEventListener('keydown', this.keydown);\n setTimeout(() => {\n document.addEventListener('click', this.clickout);\n }, 200);\n this.keyListenerActive = true;\n if (this.parent[this.meta.name]) {\n for (let suggestionIndex = 0; suggestionIndex < (this.meta.suggestions || []).length; suggestionIndex++) {\n if (this.meta.suggestions[suggestionIndex] === this.parent[this.meta.name]) {\n this.activeSuggestionIndex = suggestionIndex;\n }\n }\n }\n }\n }\n\n private clickout = (event) => {\n if (event.target.className === 'Vlt-dropdown__link' && this.elementRef.nativeElement.contains(event.target)) {\n this.focus();\n // this.dismissDropdown();\n // this.parent[this.meta.name] = event.target.textContent;\n\n } else if (event.target !== this.input && event.target.className !== 'Vlt-dropdown__title') {\n this.dismissDropdown();\n } else {\n this.focus();\n }\n };\n\n private keydown = (event) => {\n switch (event.key) {\n case 'ArrowDown': {\n if (['datetime', 'time', 'date', 'datetime-local'].indexOf(this.meta.type || this.meta.subtype) !== -1) {\n break;\n }\n this.showDropdown();\n event.preventDefault();\n if (typeof (this.activeSuggestionIndex) === 'undefined') {\n this.activeSuggestionIndex = 0;\n } else {\n this.activeSuggestionIndex++;\n if (this.activeSuggestionIndex >= this.suggestions.length) {\n this.activeSuggestionIndex = 0;\n }\n }\n break;\n }\n case 'ArrowUp': {\n if (['datetime', 'time', 'date', 'datetime-local'].indexOf(this.meta.type || this.meta.subtype) !== -1) {\n break;\n }\n this.showDropdown();\n event.preventDefault();\n if (typeof (this.activeSuggestionIndex) === 'undefined') {\n this.activeSuggestionIndex = this.suggestions.length - 1;\n } else {\n this.activeSuggestionIndex--;\n if (this.activeSuggestionIndex < 0) {\n this.activeSuggestionIndex = this.suggestions.length - 1;\n }\n }\n break;\n }\n case 'Space':\n case 'Enter': {\n if (typeof (this.activeSuggestionIndex) !== 'undefined') {\n event.preventDefault();\n event.stopPropagation();\n this.onSuggestionSelect(event, this.suggestions[this.activeSuggestionIndex]);\n delete this.activeSuggestionIndex;\n }\n break;\n }\n case 'Escape': {\n event.preventDefault();\n event.stopPropagation();\n this.dismissDropdown();\n break;\n }\n }\n };\n\n\n private autoSetValue(againstTimestamp, v, cfg) {\n const compareValue = relativeTimeBuilder(this.meta.type, cfg.offset, this.validations.step, againstTimestamp);\n if (this.model) {\n const currentValue = new Date(this.model).getTime();\n let isInvalid: boolean;\n if (v === 'gt') {\n isInvalid = compareValue > currentValue;\n } else if (v === 'lt') {\n isInvalid = currentValue > compareValue;\n }\n if (isInvalid) {\n this.parent[this.meta.name] = compareValue;\n }\n } else {\n this.parent[this.meta.name] = compareValue;\n }\n }\n\n private setupLogicalValidation(v: string) {\n const cfg = this.meta.auto[v];\n if (typeof(cfg.against) === 'string') {\n let againstValue = this.parent[cfg.against];\n try {\n let againstTimestamp = Date.parse(`${againstValue}Z`) + (new Date().getTimezoneOffset() * 60000);\n if (againstValue) {\n this.autoSetValue(againstTimestamp, v, cfg);\n }\n this.parentChangeSubject.subscribe((value) => {\n if (value && value.hasOwnProperty(cfg.against)) {\n againstValue = value[cfg.against];\n if (againstValue) {\n againstTimestamp = Date.parse(`${againstValue}Z`) + (new Date().getTimezoneOffset() * 60000);\n this.autoSetValue(againstTimestamp, v, cfg);\n }\n }\n });\n } catch (e) {\n /* empty */\n }\n }\n }\n}\n","<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label' [title]='meta.label || meta.name'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>{{model}}</div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element Vlt-form__element--big\" [ngClass]=\"{'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched), 'has-value': f.value, active: keyListenerActive }\">\n <div class=\"Vlt-input\" [ngClass]=\"{'vgip-disable': disabled}\">\n <label class='wrapper'>\n <input class='main model' [pattern]=\"validations.pattern ? validations.pattern.value || validations.pattern : null\" [required]='validations.required' [minlength]='validations.minlength' [maxlength]='validations.maxlength' [min]='validations.min' [max]='validations.max' [step]='validations.step' [disabled]='disabled' [readonly]='readonly' [(ngModel)]='model' (ngModelChange)=\"onModelChange($event)\" #f='ngModel' [name]='name' [type]=\"type\" [placeholder]=\"placeholder\" (click)='onActivated($event)' (focus)='onActivated($event)' (blur)='onBlur($event)'/>\n <label class='Vlt-truncate'>{{meta.label || meta.name}}<span *ngIf='validations.required' class='Vlt-red'>*</span></label> <!-- eslint-disable-line @angular-eslint/template/label-has-associated-control -->\n </label>\n <div class='Vlt-composite__append right-actions'>\n <a href='#' *ngIf='model' class=\"Vlt-composite__append--icon\" (click)='clear($event)' tabindex='0'>\n <div class=\"Vlt-composite__icon\">\n <svg><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-cross\"/></svg>\n </div>\n </a>\n </div>\n </div>\n <small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched && keyListenerActive))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required.&nbsp;</span>\n <span *ngIf=\"f.errors.min\">Must be later than {{validations.min}}.&nbsp;</span>\n <span *ngIf=\"f.errors.max\">Must be no later than {{validations}}.&nbsp;</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}}&nbsp;</span>\n </small>\n <small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n"],"names":["i3.MetaModelPipe"],"mappings":"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"}