@ngx-formly/material 6.0.0-next.1 → 6.0.0-next.5

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 (256) hide show
  1. package/README.md +2 -2
  2. package/checkbox/checkbox.module.d.ts +10 -0
  3. package/checkbox/checkbox.type.d.ts +3 -0
  4. package/checkbox/ngx-formly-material-checkbox.d.ts +1 -0
  5. package/checkbox/package.json +5 -6
  6. package/datepicker/datepicker.module.d.ts +11 -0
  7. package/datepicker/datepicker.type.d.ts +3 -0
  8. package/datepicker/ngx-formly-material-datepicker.d.ts +1 -1
  9. package/datepicker/package.json +5 -6
  10. package/esm2020/checkbox/checkbox.module.mjs +61 -0
  11. package/esm2020/checkbox/checkbox.type.mjs +109 -0
  12. package/{esm2015/checkbox/ngx-formly-material-checkbox.js → esm2020/checkbox/ngx-formly-material-checkbox.mjs} +0 -0
  13. package/{esm2015/checkbox/public_api.js → esm2020/checkbox/public_api.mjs} +0 -0
  14. package/esm2020/datepicker/datepicker.module.mjs +57 -0
  15. package/esm2020/datepicker/datepicker.type.mjs +117 -0
  16. package/esm2020/datepicker/ngx-formly-material-datepicker.mjs +5 -0
  17. package/{esm2015/datepicker/public_api.js → esm2020/datepicker/public_api.mjs} +0 -0
  18. package/esm2020/form-field/field.type.mjs +124 -0
  19. package/esm2020/form-field/form-field.module.mjs +47 -0
  20. package/esm2020/form-field/form-field.wrapper.mjs +141 -0
  21. package/esm2020/form-field/ngx-formly-material-form-field.mjs +5 -0
  22. package/{esm2015/form-field/public_api.js → esm2020/form-field/public_api.mjs} +0 -0
  23. package/esm2020/input/input.module.mjs +91 -0
  24. package/esm2020/input/input.type.mjs +79 -0
  25. package/{esm2015/input/ngx-formly-material-input.js → esm2020/input/ngx-formly-material-input.mjs} +0 -0
  26. package/{esm2015/input/public_api.js → esm2020/input/public_api.mjs} +0 -0
  27. package/{esm2015/lib/ui-material.js → esm2020/lib/ui-material.mjs} +0 -0
  28. package/esm2020/lib/ui-material.module.mjs +43 -0
  29. package/esm2020/multicheckbox/multicheckbox.module.mjs +57 -0
  30. package/esm2020/multicheckbox/multicheckbox.type.mjs +82 -0
  31. package/{esm2015/multicheckbox/ngx-formly-material-multicheckbox.js → esm2020/multicheckbox/ngx-formly-material-multicheckbox.mjs} +0 -0
  32. package/{esm2015/multicheckbox/public_api.js → esm2020/multicheckbox/public_api.mjs} +0 -0
  33. package/esm2020/native-select/native-select.module.mjs +57 -0
  34. package/esm2020/native-select/native-select.type.mjs +97 -0
  35. package/{esm2015/native-select/ngx-formly-material-native-select.js → esm2020/native-select/ngx-formly-material-native-select.mjs} +0 -0
  36. package/{esm2015/native-select/public_api.js → esm2020/native-select/public_api.mjs} +0 -0
  37. package/{esm2015/ngx-formly-material.js → esm2020/ngx-formly-material.mjs} +0 -0
  38. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  39. package/{esm2015/radio/ngx-formly-material-radio.js → esm2020/radio/ngx-formly-material-radio.mjs} +0 -0
  40. package/{esm2015/radio/public_api.js → esm2020/radio/public_api.mjs} +0 -0
  41. package/esm2020/radio/radio.module.mjs +57 -0
  42. package/esm2020/radio/radio.type.mjs +89 -0
  43. package/{esm2015/select/ngx-formly-material-select.js → esm2020/select/ngx-formly-material-select.mjs} +0 -0
  44. package/{esm2015/select/public_api.js → esm2020/select/public_api.mjs} +0 -0
  45. package/esm2020/select/select.module.mjs +63 -0
  46. package/esm2020/select/select.type.mjs +151 -0
  47. package/{esm2015/slider/ngx-formly-material-slider.js → esm2020/slider/ngx-formly-material-slider.mjs} +1 -2
  48. package/{esm2015/slider/public_api.js → esm2020/slider/public_api.mjs} +0 -0
  49. package/esm2020/slider/slider.module.mjs +53 -0
  50. package/esm2020/slider/slider.type.mjs +79 -0
  51. package/{esm2015/textarea/ngx-formly-material-textarea.js → esm2020/textarea/ngx-formly-material-textarea.mjs} +0 -0
  52. package/{esm2015/textarea/public_api.js → esm2020/textarea/public_api.mjs} +0 -0
  53. package/esm2020/textarea/textarea.module.mjs +53 -0
  54. package/esm2020/textarea/textarea.type.mjs +77 -0
  55. package/{esm2015/toggle/ngx-formly-material-toggle.js → esm2020/toggle/ngx-formly-material-toggle.mjs} +1 -2
  56. package/{esm2015/toggle/public_api.js → esm2020/toggle/public_api.mjs} +0 -0
  57. package/esm2020/toggle/toggle.module.mjs +53 -0
  58. package/esm2020/toggle/toggle.type.mjs +61 -0
  59. package/fesm2015/ngx-formly-material-checkbox.mjs +171 -0
  60. package/fesm2015/ngx-formly-material-checkbox.mjs.map +1 -0
  61. package/fesm2015/ngx-formly-material-datepicker.mjs +177 -0
  62. package/fesm2015/ngx-formly-material-datepicker.mjs.map +1 -0
  63. package/fesm2015/ngx-formly-material-form-field.mjs +312 -0
  64. package/fesm2015/ngx-formly-material-form-field.mjs.map +1 -0
  65. package/fesm2015/ngx-formly-material-input.mjs +172 -0
  66. package/fesm2015/ngx-formly-material-input.mjs.map +1 -0
  67. package/fesm2015/ngx-formly-material-multicheckbox.mjs +140 -0
  68. package/fesm2015/ngx-formly-material-multicheckbox.mjs.map +1 -0
  69. package/fesm2015/ngx-formly-material-native-select.mjs +156 -0
  70. package/fesm2015/ngx-formly-material-native-select.mjs.map +1 -0
  71. package/fesm2015/ngx-formly-material-radio.mjs +146 -0
  72. package/fesm2015/ngx-formly-material-radio.mjs.map +1 -0
  73. package/fesm2015/ngx-formly-material-select.mjs +219 -0
  74. package/fesm2015/ngx-formly-material-select.mjs.map +1 -0
  75. package/fesm2015/ngx-formly-material-slider.mjs +133 -0
  76. package/fesm2015/ngx-formly-material-slider.mjs.map +1 -0
  77. package/fesm2015/ngx-formly-material-textarea.mjs +131 -0
  78. package/fesm2015/ngx-formly-material-textarea.mjs.map +1 -0
  79. package/fesm2015/ngx-formly-material-toggle.mjs +115 -0
  80. package/fesm2015/ngx-formly-material-toggle.mjs.map +1 -0
  81. package/fesm2015/ngx-formly-material.mjs +55 -0
  82. package/fesm2015/ngx-formly-material.mjs.map +1 -0
  83. package/fesm2020/ngx-formly-material-checkbox.mjs +171 -0
  84. package/fesm2020/ngx-formly-material-checkbox.mjs.map +1 -0
  85. package/fesm2020/ngx-formly-material-datepicker.mjs +176 -0
  86. package/fesm2020/ngx-formly-material-datepicker.mjs.map +1 -0
  87. package/fesm2020/ngx-formly-material-form-field.mjs +309 -0
  88. package/fesm2020/ngx-formly-material-form-field.mjs.map +1 -0
  89. package/fesm2020/ngx-formly-material-input.mjs +172 -0
  90. package/fesm2020/ngx-formly-material-input.mjs.map +1 -0
  91. package/fesm2020/ngx-formly-material-multicheckbox.mjs +140 -0
  92. package/fesm2020/ngx-formly-material-multicheckbox.mjs.map +1 -0
  93. package/fesm2020/ngx-formly-material-native-select.mjs +156 -0
  94. package/fesm2020/ngx-formly-material-native-select.mjs.map +1 -0
  95. package/fesm2020/ngx-formly-material-radio.mjs +146 -0
  96. package/fesm2020/ngx-formly-material-radio.mjs.map +1 -0
  97. package/fesm2020/ngx-formly-material-select.mjs +216 -0
  98. package/fesm2020/ngx-formly-material-select.mjs.map +1 -0
  99. package/fesm2020/ngx-formly-material-slider.mjs +133 -0
  100. package/fesm2020/ngx-formly-material-slider.mjs.map +1 -0
  101. package/fesm2020/ngx-formly-material-textarea.mjs +131 -0
  102. package/fesm2020/ngx-formly-material-textarea.mjs.map +1 -0
  103. package/fesm2020/ngx-formly-material-toggle.mjs +115 -0
  104. package/fesm2020/ngx-formly-material-toggle.mjs.map +1 -0
  105. package/fesm2020/ngx-formly-material.mjs +55 -0
  106. package/fesm2020/ngx-formly-material.mjs.map +1 -0
  107. package/form-field/field.type.d.ts +3 -0
  108. package/form-field/form-field.module.d.ts +9 -0
  109. package/form-field/form-field.wrapper.d.ts +4 -3
  110. package/form-field/ngx-formly-material-form-field.d.ts +1 -1
  111. package/form-field/package.json +5 -6
  112. package/input/input.module.d.ts +10 -0
  113. package/input/input.type.d.ts +3 -0
  114. package/input/ngx-formly-material-input.d.ts +1 -0
  115. package/input/package.json +5 -6
  116. package/lib/ui-material.module.d.ts +11 -0
  117. package/multicheckbox/multicheckbox.module.d.ts +11 -0
  118. package/multicheckbox/multicheckbox.type.d.ts +3 -0
  119. package/multicheckbox/ngx-formly-material-multicheckbox.d.ts +1 -0
  120. package/multicheckbox/package.json +5 -6
  121. package/native-select/native-select.module.d.ts +11 -0
  122. package/native-select/native-select.type.d.ts +3 -0
  123. package/native-select/ngx-formly-material-native-select.d.ts +1 -0
  124. package/native-select/package.json +5 -6
  125. package/ngx-formly-material.d.ts +1 -0
  126. package/package.json +109 -9
  127. package/radio/ngx-formly-material-radio.d.ts +1 -0
  128. package/radio/package.json +5 -6
  129. package/radio/radio.module.d.ts +11 -0
  130. package/radio/radio.type.d.ts +3 -0
  131. package/select/ngx-formly-material-select.d.ts +1 -0
  132. package/select/package.json +5 -6
  133. package/select/select.module.d.ts +12 -0
  134. package/select/select.type.d.ts +5 -1
  135. package/slider/ngx-formly-material-slider.d.ts +1 -1
  136. package/slider/package.json +5 -6
  137. package/slider/slider.module.d.ts +10 -0
  138. package/slider/slider.type.d.ts +3 -0
  139. package/textarea/ngx-formly-material-textarea.d.ts +1 -0
  140. package/textarea/package.json +5 -6
  141. package/textarea/textarea.module.d.ts +10 -0
  142. package/textarea/textarea.type.d.ts +3 -0
  143. package/toggle/ngx-formly-material-toggle.d.ts +1 -1
  144. package/toggle/package.json +5 -6
  145. package/toggle/toggle.module.d.ts +10 -0
  146. package/toggle/toggle.type.d.ts +3 -0
  147. package/bundles/ngx-formly-material-checkbox.umd.js +0 -423
  148. package/bundles/ngx-formly-material-checkbox.umd.js.map +0 -1
  149. package/bundles/ngx-formly-material-checkbox.umd.min.js +0 -16
  150. package/bundles/ngx-formly-material-checkbox.umd.min.js.map +0 -1
  151. package/bundles/ngx-formly-material-datepicker.umd.js +0 -392
  152. package/bundles/ngx-formly-material-datepicker.umd.js.map +0 -1
  153. package/bundles/ngx-formly-material-datepicker.umd.min.js +0 -16
  154. package/bundles/ngx-formly-material-datepicker.umd.min.js.map +0 -1
  155. package/bundles/ngx-formly-material-form-field.umd.js +0 -575
  156. package/bundles/ngx-formly-material-form-field.umd.js.map +0 -1
  157. package/bundles/ngx-formly-material-form-field.umd.min.js +0 -16
  158. package/bundles/ngx-formly-material-form-field.umd.min.js.map +0 -1
  159. package/bundles/ngx-formly-material-input.umd.js +0 -393
  160. package/bundles/ngx-formly-material-input.umd.js.map +0 -1
  161. package/bundles/ngx-formly-material-input.umd.min.js +0 -16
  162. package/bundles/ngx-formly-material-input.umd.min.js.map +0 -1
  163. package/bundles/ngx-formly-material-multicheckbox.umd.js +0 -397
  164. package/bundles/ngx-formly-material-multicheckbox.umd.js.map +0 -1
  165. package/bundles/ngx-formly-material-multicheckbox.umd.min.js +0 -16
  166. package/bundles/ngx-formly-material-multicheckbox.umd.min.js.map +0 -1
  167. package/bundles/ngx-formly-material-native-select.umd.js +0 -374
  168. package/bundles/ngx-formly-material-native-select.umd.js.map +0 -1
  169. package/bundles/ngx-formly-material-native-select.umd.min.js +0 -16
  170. package/bundles/ngx-formly-material-native-select.umd.min.js.map +0 -1
  171. package/bundles/ngx-formly-material-radio.umd.js +0 -398
  172. package/bundles/ngx-formly-material-radio.umd.js.map +0 -1
  173. package/bundles/ngx-formly-material-radio.umd.min.js +0 -16
  174. package/bundles/ngx-formly-material-radio.umd.min.js.map +0 -1
  175. package/bundles/ngx-formly-material-select.umd.js +0 -411
  176. package/bundles/ngx-formly-material-select.umd.js.map +0 -1
  177. package/bundles/ngx-formly-material-select.umd.min.js +0 -16
  178. package/bundles/ngx-formly-material-select.umd.min.js.map +0 -1
  179. package/bundles/ngx-formly-material-slider.umd.js +0 -382
  180. package/bundles/ngx-formly-material-slider.umd.js.map +0 -1
  181. package/bundles/ngx-formly-material-slider.umd.min.js +0 -16
  182. package/bundles/ngx-formly-material-slider.umd.min.js.map +0 -1
  183. package/bundles/ngx-formly-material-textarea.umd.js +0 -379
  184. package/bundles/ngx-formly-material-textarea.umd.js.map +0 -1
  185. package/bundles/ngx-formly-material-textarea.umd.min.js +0 -16
  186. package/bundles/ngx-formly-material-textarea.umd.min.js.map +0 -1
  187. package/bundles/ngx-formly-material-toggle.umd.js +0 -382
  188. package/bundles/ngx-formly-material-toggle.umd.js.map +0 -1
  189. package/bundles/ngx-formly-material-toggle.umd.min.js +0 -16
  190. package/bundles/ngx-formly-material-toggle.umd.min.js.map +0 -1
  191. package/bundles/ngx-formly-material.umd.js +0 -45
  192. package/bundles/ngx-formly-material.umd.js.map +0 -1
  193. package/bundles/ngx-formly-material.umd.min.js +0 -2
  194. package/bundles/ngx-formly-material.umd.min.js.map +0 -1
  195. package/checkbox/ngx-formly-material-checkbox.metadata.json +0 -1
  196. package/datepicker/ngx-formly-material-datepicker.metadata.json +0 -1
  197. package/esm2015/checkbox/checkbox.module.js +0 -34
  198. package/esm2015/checkbox/checkbox.type.js +0 -80
  199. package/esm2015/datepicker/datepicker.module.js +0 -32
  200. package/esm2015/datepicker/datepicker.type.js +0 -73
  201. package/esm2015/datepicker/ngx-formly-material-datepicker.js +0 -6
  202. package/esm2015/form-field/field.type.js +0 -120
  203. package/esm2015/form-field/form-field.module.js +0 -27
  204. package/esm2015/form-field/form-field.wrapper.js +0 -91
  205. package/esm2015/form-field/ngx-formly-material-form-field.js +0 -6
  206. package/esm2015/input/input.module.js +0 -49
  207. package/esm2015/input/input.type.js +0 -43
  208. package/esm2015/lib/ui-material.module.js +0 -24
  209. package/esm2015/multicheckbox/multicheckbox.module.js +0 -32
  210. package/esm2015/multicheckbox/multicheckbox.type.js +0 -59
  211. package/esm2015/native-select/native-select.module.js +0 -32
  212. package/esm2015/native-select/native-select.type.js +0 -54
  213. package/esm2015/radio/radio.module.js +0 -32
  214. package/esm2015/radio/radio.type.js +0 -62
  215. package/esm2015/select/select.module.js +0 -35
  216. package/esm2015/select/select.type.js +0 -95
  217. package/esm2015/slider/slider.module.js +0 -30
  218. package/esm2015/slider/slider.type.js +0 -44
  219. package/esm2015/textarea/textarea.module.js +0 -30
  220. package/esm2015/textarea/textarea.type.js +0 -46
  221. package/esm2015/toggle/toggle.module.js +0 -30
  222. package/esm2015/toggle/toggle.type.js +0 -41
  223. package/fesm2015/ngx-formly-material-checkbox.js +0 -117
  224. package/fesm2015/ngx-formly-material-checkbox.js.map +0 -1
  225. package/fesm2015/ngx-formly-material-datepicker.js +0 -109
  226. package/fesm2015/ngx-formly-material-datepicker.js.map +0 -1
  227. package/fesm2015/ngx-formly-material-form-field.js +0 -238
  228. package/fesm2015/ngx-formly-material-form-field.js.map +0 -1
  229. package/fesm2015/ngx-formly-material-input.js +0 -96
  230. package/fesm2015/ngx-formly-material-input.js.map +0 -1
  231. package/fesm2015/ngx-formly-material-multicheckbox.js +0 -94
  232. package/fesm2015/ngx-formly-material-multicheckbox.js.map +0 -1
  233. package/fesm2015/ngx-formly-material-native-select.js +0 -90
  234. package/fesm2015/ngx-formly-material-native-select.js.map +0 -1
  235. package/fesm2015/ngx-formly-material-radio.js +0 -96
  236. package/fesm2015/ngx-formly-material-radio.js.map +0 -1
  237. package/fesm2015/ngx-formly-material-select.js +0 -134
  238. package/fesm2015/ngx-formly-material-select.js.map +0 -1
  239. package/fesm2015/ngx-formly-material-slider.js +0 -77
  240. package/fesm2015/ngx-formly-material-slider.js.map +0 -1
  241. package/fesm2015/ngx-formly-material-textarea.js +0 -79
  242. package/fesm2015/ngx-formly-material-textarea.js.map +0 -1
  243. package/fesm2015/ngx-formly-material-toggle.js +0 -74
  244. package/fesm2015/ngx-formly-material-toggle.js.map +0 -1
  245. package/fesm2015/ngx-formly-material.js +0 -36
  246. package/fesm2015/ngx-formly-material.js.map +0 -1
  247. package/form-field/ngx-formly-material-form-field.metadata.json +0 -1
  248. package/input/ngx-formly-material-input.metadata.json +0 -1
  249. package/multicheckbox/ngx-formly-material-multicheckbox.metadata.json +0 -1
  250. package/native-select/ngx-formly-material-native-select.metadata.json +0 -1
  251. package/ngx-formly-material.metadata.json +0 -1
  252. package/radio/ngx-formly-material-radio.metadata.json +0 -1
  253. package/select/ngx-formly-material-select.metadata.json +0 -1
  254. package/slider/ngx-formly-material-slider.metadata.json +0 -1
  255. package/textarea/ngx-formly-material-textarea.metadata.json +0 -1
  256. package/toggle/ngx-formly-material-toggle.metadata.json +0 -1
@@ -0,0 +1,312 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, NgModule, Type, Directive, ViewChildren } from '@angular/core';
3
+ import * as i4 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i3 from '@ngx-formly/core';
6
+ import { FieldWrapper, ɵdefineHiddenProp, FormlyModule, FieldType as FieldType$1, ɵobserve } from '@ngx-formly/core';
7
+ import { ReactiveFormsModule } from '@angular/forms';
8
+ import * as i2 from '@angular/material/form-field';
9
+ import { MatFormField, MatFormFieldModule, MatFormFieldControl } from '@angular/material/form-field';
10
+ import * as i1 from '@angular/cdk/a11y';
11
+ import { Subject } from 'rxjs';
12
+
13
+ class FormlyWrapperFormField extends FieldWrapper {
14
+ constructor(renderer, elementRef, focusMonitor) {
15
+ super();
16
+ this.renderer = renderer;
17
+ this.elementRef = elementRef;
18
+ this.focusMonitor = focusMonitor;
19
+ }
20
+ ngOnInit() {
21
+ ɵdefineHiddenProp(this.field, '_formField', this.formField);
22
+ this.focusMonitor.monitor(this.elementRef, true).subscribe((origin) => {
23
+ if (!origin && this.field.focus) {
24
+ this.field.focus = false;
25
+ }
26
+ });
27
+ }
28
+ ngAfterViewInit() {
29
+ // temporary fix for https://github.com/angular/material2/issues/7891
30
+ if (this.formField.appearance !== 'outline' && this.to.hideFieldUnderline === true) {
31
+ const underlineElement = this.formField._elementRef.nativeElement.querySelector('.mat-form-field-underline');
32
+ underlineElement && this.renderer.removeChild(underlineElement.parentNode, underlineElement);
33
+ }
34
+ }
35
+ ngOnDestroy() {
36
+ delete this.field._formField;
37
+ this.focusMonitor.stopMonitoring(this.elementRef);
38
+ }
39
+ }
40
+ FormlyWrapperFormField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyWrapperFormField, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
41
+ FormlyWrapperFormField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: FormlyWrapperFormField, selector: "formly-wrapper-mat-form-field", viewQueries: [{ propertyName: "formField", first: true, predicate: MatFormField, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
42
+ <!-- fix https://github.com/angular/material2/pull/7083 by setting width to 100% -->
43
+ <mat-form-field
44
+ [hideRequiredMarker]="true"
45
+ [floatLabel]="to.floatLabel"
46
+ [appearance]="to.appearance"
47
+ [color]="to.color"
48
+ >
49
+ <ng-container #fieldComponent></ng-container>
50
+ <mat-label *ngIf="to.label && to.hideLabel !== true">
51
+ {{ to.label }}
52
+ <span
53
+ *ngIf="to.required && to.hideRequiredMarker !== true"
54
+ aria-hidden="true"
55
+ class="mat-form-field-required-marker"
56
+ >*</span
57
+ >
58
+ </mat-label>
59
+
60
+ <ng-container matPrefix *ngIf="to._matPrefix">
61
+ <ng-container [ngTemplateOutlet]="to._matPrefix" [ngTemplateOutletContext]="{ field: field }"></ng-container>
62
+ </ng-container>
63
+
64
+ <ng-container matSuffix *ngIf="to._matSuffix">
65
+ <ng-container [ngTemplateOutlet]="to._matSuffix" [ngTemplateOutletContext]="{ field: field }"></ng-container>
66
+ </ng-container>
67
+
68
+ <mat-error>
69
+ <formly-validation-message [field]="field"></formly-validation-message>
70
+ </mat-error>
71
+
72
+ <mat-hint *ngIf="to.description || to.hintStart as hint">
73
+ <ng-container [ngTemplateOutlet]="stringOrTemplate" [ngTemplateOutletContext]="{ content: hint }">
74
+ </ng-container>
75
+ </mat-hint>
76
+
77
+ <mat-hint *ngIf="to.hintEnd as hintEnd" align="end">
78
+ <ng-container [ngTemplateOutlet]="stringOrTemplate" [ngTemplateOutletContext]="{ content: hintEnd }">
79
+ </ng-container>
80
+ </mat-hint>
81
+ </mat-form-field>
82
+
83
+ <ng-template #stringOrTemplate let-content="content">
84
+ <ng-container *ngIf="!content.createEmbeddedView; else template">{{ content }}</ng-container>
85
+ <ng-template #template>
86
+ <ng-container [ngTemplateOutlet]="content" [ngTemplateOutletContext]="{ field: field }"></ng-container>
87
+ </ng-template>
88
+ </ng-template>
89
+ `, isInline: true, styles: ["formly-wrapper-mat-form-field .mat-form-field{width:100%}formly-wrapper-mat-form-field .mat-form-field-underline,formly-wrapper-mat-form-field .mat-form-field-subscript-wrapper{position:static}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i2.MatPrefix, selector: "[matPrefix]" }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.MatSuffix, selector: "[matSuffix]" }, { type: i2.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyWrapperFormField, decorators: [{
91
+ type: Component,
92
+ args: [{ selector: 'formly-wrapper-mat-form-field', template: `
93
+ <!-- fix https://github.com/angular/material2/pull/7083 by setting width to 100% -->
94
+ <mat-form-field
95
+ [hideRequiredMarker]="true"
96
+ [floatLabel]="to.floatLabel"
97
+ [appearance]="to.appearance"
98
+ [color]="to.color"
99
+ >
100
+ <ng-container #fieldComponent></ng-container>
101
+ <mat-label *ngIf="to.label && to.hideLabel !== true">
102
+ {{ to.label }}
103
+ <span
104
+ *ngIf="to.required && to.hideRequiredMarker !== true"
105
+ aria-hidden="true"
106
+ class="mat-form-field-required-marker"
107
+ >*</span
108
+ >
109
+ </mat-label>
110
+
111
+ <ng-container matPrefix *ngIf="to._matPrefix">
112
+ <ng-container [ngTemplateOutlet]="to._matPrefix" [ngTemplateOutletContext]="{ field: field }"></ng-container>
113
+ </ng-container>
114
+
115
+ <ng-container matSuffix *ngIf="to._matSuffix">
116
+ <ng-container [ngTemplateOutlet]="to._matSuffix" [ngTemplateOutletContext]="{ field: field }"></ng-container>
117
+ </ng-container>
118
+
119
+ <mat-error>
120
+ <formly-validation-message [field]="field"></formly-validation-message>
121
+ </mat-error>
122
+
123
+ <mat-hint *ngIf="to.description || to.hintStart as hint">
124
+ <ng-container [ngTemplateOutlet]="stringOrTemplate" [ngTemplateOutletContext]="{ content: hint }">
125
+ </ng-container>
126
+ </mat-hint>
127
+
128
+ <mat-hint *ngIf="to.hintEnd as hintEnd" align="end">
129
+ <ng-container [ngTemplateOutlet]="stringOrTemplate" [ngTemplateOutletContext]="{ content: hintEnd }">
130
+ </ng-container>
131
+ </mat-hint>
132
+ </mat-form-field>
133
+
134
+ <ng-template #stringOrTemplate let-content="content">
135
+ <ng-container *ngIf="!content.createEmbeddedView; else template">{{ content }}</ng-container>
136
+ <ng-template #template>
137
+ <ng-container [ngTemplateOutlet]="content" [ngTemplateOutletContext]="{ field: field }"></ng-container>
138
+ </ng-template>
139
+ </ng-template>
140
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["formly-wrapper-mat-form-field .mat-form-field{width:100%}formly-wrapper-mat-form-field .mat-form-field-underline,formly-wrapper-mat-form-field .mat-form-field-subscript-wrapper{position:static}\n"] }]
141
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.FocusMonitor }]; }, propDecorators: { formField: [{
142
+ type: ViewChild,
143
+ args: [MatFormField, { static: true }]
144
+ }] } });
145
+
146
+ class FormlyMatFormFieldModule {
147
+ }
148
+ FormlyMatFormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyMatFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
149
+ FormlyMatFormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyMatFormFieldModule, declarations: [FormlyWrapperFormField], imports: [CommonModule,
150
+ ReactiveFormsModule,
151
+ MatFormFieldModule, i3.FormlyModule] });
152
+ FormlyMatFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyMatFormFieldModule, imports: [[
153
+ CommonModule,
154
+ ReactiveFormsModule,
155
+ MatFormFieldModule,
156
+ FormlyModule.forChild({
157
+ wrappers: [
158
+ {
159
+ name: 'form-field',
160
+ component: FormlyWrapperFormField,
161
+ },
162
+ ],
163
+ }),
164
+ ]] });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyMatFormFieldModule, decorators: [{
166
+ type: NgModule,
167
+ args: [{
168
+ declarations: [FormlyWrapperFormField],
169
+ imports: [
170
+ CommonModule,
171
+ ReactiveFormsModule,
172
+ MatFormFieldModule,
173
+ FormlyModule.forChild({
174
+ wrappers: [
175
+ {
176
+ name: 'form-field',
177
+ component: FormlyWrapperFormField,
178
+ },
179
+ ],
180
+ }),
181
+ ],
182
+ }]
183
+ }] });
184
+
185
+ class FieldType extends FieldType$1 {
186
+ constructor() {
187
+ super(...arguments);
188
+ this.errorStateMatcher = { isErrorState: () => this.field && this.showError };
189
+ this.stateChanges = new Subject();
190
+ this._errorState = false;
191
+ }
192
+ set _controls(controls) {
193
+ if (controls.length === 1 && !this.formFieldControl) {
194
+ this.formFieldControl = controls.first;
195
+ }
196
+ }
197
+ ngOnInit() {
198
+ ɵobserve(this, ['formFieldControl'], ({ currentValue }) => {
199
+ this.attachControl(currentValue || this);
200
+ });
201
+ }
202
+ ngAfterViewInit() {
203
+ if (this.matPrefix) {
204
+ this.to.prefix = this.matPrefix;
205
+ }
206
+ if (this.matSuffix) {
207
+ this.to.prefix = this.matSuffix;
208
+ }
209
+ }
210
+ ngOnDestroy() {
211
+ var _a;
212
+ (_a = this.formField) === null || _a === void 0 ? true : delete _a._control;
213
+ this.stateChanges.complete();
214
+ }
215
+ setDescribedByIds(ids) { }
216
+ onContainerClick(event) {
217
+ this.field.focus = true;
218
+ this.stateChanges.next();
219
+ }
220
+ get errorState() {
221
+ const showError = this.options.showError(this);
222
+ if (showError !== this._errorState) {
223
+ this._errorState = showError;
224
+ this.stateChanges.next();
225
+ }
226
+ return showError;
227
+ }
228
+ get controlType() {
229
+ if (this.to.type) {
230
+ return this.to.type;
231
+ }
232
+ if (this.field.type instanceof Type) {
233
+ return this.field.type.constructor.name;
234
+ }
235
+ return this.field.type;
236
+ }
237
+ get focused() {
238
+ return !!this.field.focus && !this.disabled;
239
+ }
240
+ get disabled() {
241
+ return !!this.to.disabled;
242
+ }
243
+ get required() {
244
+ return !!this.to.required;
245
+ }
246
+ get placeholder() {
247
+ return this.to.placeholder || '';
248
+ }
249
+ get shouldPlaceholderFloat() {
250
+ return this.shouldLabelFloat;
251
+ }
252
+ get value() {
253
+ return this.formControl.value;
254
+ }
255
+ set value(value) {
256
+ this.formControl.patchValue(value);
257
+ }
258
+ get ngControl() {
259
+ return this.formControl;
260
+ }
261
+ get empty() {
262
+ return this.value == null || this.value === '';
263
+ }
264
+ get shouldLabelFloat() {
265
+ return this.focused || !this.empty;
266
+ }
267
+ get formField() {
268
+ var _a;
269
+ return (_a = this.field) === null || _a === void 0 ? void 0 : _a['_formField'];
270
+ }
271
+ attachControl(control) {
272
+ var _a, _b;
273
+ if (this.formField && control !== this.formField._control) {
274
+ this.formField._control = control;
275
+ // temporary fix for https://github.com/angular/material2/issues/6728
276
+ if ((_b = (_a = control === null || control === void 0 ? void 0 : control.ngControl) === null || _a === void 0 ? void 0 : _a.valueAccessor) === null || _b === void 0 ? void 0 : _b.hasOwnProperty('_formField')) {
277
+ control.ngControl.valueAccessor['_formField'] = this.formField;
278
+ }
279
+ ['Prefix', 'Suffix'].forEach((type) => ɵobserve(this.field, ['templateOptions', type.toLowerCase()], ({ currentValue }) => currentValue &&
280
+ Promise.resolve().then(() => {
281
+ this.field.templateOptions[`_mat${type}`] = currentValue;
282
+ this.options.detectChanges(this.field);
283
+ })));
284
+ // https://github.com/angular/components/issues/16209
285
+ const setDescribedByIds = control.setDescribedByIds.bind(control);
286
+ control.setDescribedByIds = (ids) => {
287
+ setTimeout(() => setDescribedByIds(ids));
288
+ };
289
+ }
290
+ }
291
+ }
292
+ FieldType.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FieldType, deps: null, target: i0.ɵɵFactoryTarget.Directive });
293
+ FieldType.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: FieldType, viewQueries: [{ propertyName: "matPrefix", first: true, predicate: ["matPrefix"], descendants: true }, { propertyName: "matSuffix", first: true, predicate: ["matSuffix"], descendants: true }, { propertyName: "_controls", predicate: MatFormFieldControl, descendants: true }], usesInheritance: true, ngImport: i0 });
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FieldType, decorators: [{
295
+ type: Directive
296
+ }], propDecorators: { matPrefix: [{
297
+ type: ViewChild,
298
+ args: ['matPrefix']
299
+ }], matSuffix: [{
300
+ type: ViewChild,
301
+ args: ['matSuffix']
302
+ }], _controls: [{
303
+ type: ViewChildren,
304
+ args: [MatFormFieldControl]
305
+ }] } });
306
+
307
+ /**
308
+ * Generated bundle index. Do not edit.
309
+ */
310
+
311
+ export { FieldType, FormlyMatFormFieldModule };
312
+ //# sourceMappingURL=ngx-formly-material-form-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-formly-material-form-field.mjs","sources":["../../../../src/ui/material/form-field/src/form-field.wrapper.ts","../../../../src/ui/material/form-field/src/form-field.module.ts","../../../../src/ui/material/form-field/src/field.type.ts","../../../../src/ui/material/form-field/src/ngx-formly-material-form-field.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewChild,\n OnInit,\n OnDestroy,\n Renderer2,\n AfterViewInit,\n ElementRef,\n ViewEncapsulation,\n TemplateRef,\n} from '@angular/core';\nimport {\n ɵdefineHiddenProp as defineHiddenProp,\n FormlyFieldConfig as CoreFieldConfig,\n FormlyTemplateOptions,\n FieldWrapper,\n} from '@ngx-formly/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field/form-field';\nimport { ThemePalette } from '@angular/material/core';\n\ninterface MatFormlyFieldConfig extends FormlyFieldConfig {\n _formField?: FormlyWrapperFormField;\n}\n\nexport interface FormlyFieldConfig extends CoreFieldConfig {\n templateOptions?: MatFormlyTemplateOptions;\n}\n\ninterface MatFormlyTemplateOptions extends FormlyTemplateOptions {\n prefix?: TemplateRef<any>;\n suffix?: TemplateRef<any>;\n hideLabel?: boolean;\n hideRequiredMarker?: boolean;\n hideFieldUnderline?: boolean;\n floatLabel?: FloatLabelType;\n appearance?: MatFormFieldAppearance;\n color?: ThemePalette;\n hintStart?: TemplateRef<any> | string;\n hintEnd?: TemplateRef<any> | string;\n}\n\n@Component({\n selector: 'formly-wrapper-mat-form-field',\n template: `\n <!-- fix https://github.com/angular/material2/pull/7083 by setting width to 100% -->\n <mat-form-field\n [hideRequiredMarker]=\"true\"\n [floatLabel]=\"to.floatLabel\"\n [appearance]=\"to.appearance\"\n [color]=\"to.color\"\n >\n <ng-container #fieldComponent></ng-container>\n <mat-label *ngIf=\"to.label && to.hideLabel !== true\">\n {{ to.label }}\n <span\n *ngIf=\"to.required && to.hideRequiredMarker !== true\"\n aria-hidden=\"true\"\n class=\"mat-form-field-required-marker\"\n >*</span\n >\n </mat-label>\n\n <ng-container matPrefix *ngIf=\"to._matPrefix\">\n <ng-container [ngTemplateOutlet]=\"to._matPrefix\" [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\n </ng-container>\n\n <ng-container matSuffix *ngIf=\"to._matSuffix\">\n <ng-container [ngTemplateOutlet]=\"to._matSuffix\" [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\n </ng-container>\n\n <mat-error>\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </mat-error>\n\n <mat-hint *ngIf=\"to.description || to.hintStart as hint\">\n <ng-container [ngTemplateOutlet]=\"stringOrTemplate\" [ngTemplateOutletContext]=\"{ content: hint }\">\n </ng-container>\n </mat-hint>\n\n <mat-hint *ngIf=\"to.hintEnd as hintEnd\" align=\"end\">\n <ng-container [ngTemplateOutlet]=\"stringOrTemplate\" [ngTemplateOutletContext]=\"{ content: hintEnd }\">\n </ng-container>\n </mat-hint>\n </mat-form-field>\n\n <ng-template #stringOrTemplate let-content=\"content\">\n <ng-container *ngIf=\"!content.createEmbeddedView; else template\">{{ content }}</ng-container>\n <ng-template #template>\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ field: field }\"></ng-container>\n </ng-template>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./form-field.wrapper.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class FormlyWrapperFormField\n extends FieldWrapper<MatFormlyFieldConfig>\n implements OnInit, OnDestroy, AfterViewInit\n{\n @ViewChild(MatFormField, { static: true }) formField!: MatFormField;\n field!: MatFormlyFieldConfig;\n\n constructor(private renderer: Renderer2, private elementRef: ElementRef, private focusMonitor: FocusMonitor) {\n super();\n }\n\n ngOnInit() {\n defineHiddenProp(this.field, '_formField', this.formField);\n this.focusMonitor.monitor(this.elementRef, true).subscribe((origin) => {\n if (!origin && this.field.focus) {\n this.field.focus = false;\n }\n });\n }\n\n ngAfterViewInit() {\n // temporary fix for https://github.com/angular/material2/issues/7891\n if (this.formField.appearance !== 'outline' && this.to.hideFieldUnderline === true) {\n const underlineElement = this.formField._elementRef.nativeElement.querySelector('.mat-form-field-underline');\n underlineElement && this.renderer.removeChild(underlineElement.parentNode, underlineElement);\n }\n }\n\n ngOnDestroy() {\n delete this.field._formField;\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormlyWrapperFormField } from './form-field.wrapper';\n\n@NgModule({\n declarations: [FormlyWrapperFormField],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n FormlyModule.forChild({\n wrappers: [\n {\n name: 'form-field',\n component: FormlyWrapperFormField,\n },\n ],\n }),\n ],\n})\nexport class FormlyMatFormFieldModule {}\n","import {\n OnInit,\n OnDestroy,\n AfterViewInit,\n TemplateRef,\n ViewChild,\n Type,\n Directive,\n ViewChildren,\n QueryList,\n} from '@angular/core';\nimport { FieldType as CoreFieldType, ɵobserve as observe } from '@ngx-formly/core';\nimport { Subject } from 'rxjs';\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { FormlyFieldConfig } from './form-field.wrapper';\n\n@Directive()\nexport abstract class FieldType<F extends FormlyFieldConfig = FormlyFieldConfig>\n extends CoreFieldType<F>\n implements OnInit, AfterViewInit, OnDestroy, MatFormFieldControl<any>\n{\n @ViewChild('matPrefix') matPrefix!: TemplateRef<any>;\n @ViewChild('matSuffix') matSuffix!: TemplateRef<any>;\n\n formFieldControl!: MatFormFieldControl<any>;\n @ViewChildren(MatFormFieldControl) set _controls(controls: QueryList<MatFormFieldControl<any>>) {\n if (controls.length === 1 && !this.formFieldControl) {\n this.formFieldControl = controls.first;\n }\n }\n\n errorStateMatcher: ErrorStateMatcher = { isErrorState: () => this.field && this.showError };\n stateChanges = new Subject<void>();\n _errorState = false;\n\n ngOnInit() {\n observe(this, ['formFieldControl'], ({ currentValue }) => {\n this.attachControl(currentValue || this);\n });\n }\n\n ngAfterViewInit() {\n if (this.matPrefix) {\n this.to.prefix = this.matPrefix;\n }\n if (this.matSuffix) {\n this.to.prefix = this.matSuffix;\n }\n }\n\n ngOnDestroy() {\n delete (this.formField as any)?._control;\n this.stateChanges.complete();\n }\n\n setDescribedByIds(ids: string[]): void {}\n onContainerClick(event: MouseEvent): void {\n this.field.focus = true;\n this.stateChanges.next();\n }\n\n get errorState() {\n const showError = this.options!.showError!(this);\n if (showError !== this._errorState) {\n this._errorState = showError;\n this.stateChanges.next();\n }\n\n return showError;\n }\n\n get controlType() {\n if (this.to.type) {\n return this.to.type;\n }\n\n if (<any>this.field.type instanceof Type) {\n return this.field.type!.constructor.name;\n }\n\n return this.field.type!;\n }\n get focused() {\n return !!this.field.focus && !this.disabled;\n }\n get disabled() {\n return !!this.to.disabled;\n }\n get required() {\n return !!this.to.required;\n }\n get placeholder() {\n return this.to.placeholder || '';\n }\n get shouldPlaceholderFloat() {\n return this.shouldLabelFloat;\n }\n get value() {\n return this.formControl.value;\n }\n set value(value) {\n this.formControl.patchValue(value);\n }\n get ngControl() {\n return this.formControl as any;\n }\n get empty() {\n return this.value == null || this.value === '';\n }\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n get formField(): MatFormField {\n return (this.field as any)?.['_formField'];\n }\n\n private attachControl(control: MatFormFieldControl<any>) {\n if (this.formField && control !== this.formField._control) {\n this.formField._control = control;\n\n // temporary fix for https://github.com/angular/material2/issues/6728\n if (control?.ngControl?.valueAccessor?.hasOwnProperty('_formField')) {\n (control.ngControl.valueAccessor as any)['_formField'] = this.formField;\n }\n\n ['Prefix', 'Suffix'].forEach((type) =>\n observe<TemplateRef<any>>(\n this.field,\n ['templateOptions', type.toLowerCase()],\n ({ currentValue }) =>\n currentValue &&\n Promise.resolve().then(() => {\n this.field.templateOptions![`_mat${type}`] = currentValue;\n this.options.detectChanges!(this.field);\n }),\n ),\n );\n\n // https://github.com/angular/components/issues/16209\n const setDescribedByIds = control.setDescribedByIds.bind(control);\n control.setDescribedByIds = (ids: string[]) => {\n setTimeout(() => setDescribedByIds(ids));\n };\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["defineHiddenProp","CoreFieldType","observe"],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i4 from '@ngx-formly/core';
6
+ import { FormlyModule } from '@ngx-formly/core';
7
+ import * as i3 from '@angular/forms';
8
+ import { ReactiveFormsModule } from '@angular/forms';
9
+ import { FieldType, FormlyMatFormFieldModule } from '@ngx-formly/material/form-field';
10
+ import * as i2 from '@angular/material/input';
11
+ import { MatInputModule } from '@angular/material/input';
12
+
13
+ class FormlyFieldInput extends FieldType {
14
+ get type() {
15
+ return this.to.type || 'text';
16
+ }
17
+ }
18
+ FormlyFieldInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyFieldInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
19
+ FormlyFieldInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: FormlyFieldInput, selector: "formly-field-mat-input", usesInheritance: true, ngImport: i0, template: `
20
+ <input
21
+ *ngIf="type !== 'number'; else numberTmp"
22
+ matInput
23
+ [id]="id"
24
+ [type]="type || 'text'"
25
+ [readonly]="to.readonly"
26
+ [required]="to.required"
27
+ [errorStateMatcher]="errorStateMatcher"
28
+ [formControl]="formControl"
29
+ [formlyAttributes]="field"
30
+ [tabIndex]="to.tabindex"
31
+ [placeholder]="to.placeholder"
32
+ />
33
+ <ng-template #numberTmp>
34
+ <input
35
+ matInput
36
+ [id]="id"
37
+ type="number"
38
+ [readonly]="to.readonly"
39
+ [required]="to.required"
40
+ [errorStateMatcher]="errorStateMatcher"
41
+ [formControl]="formControl"
42
+ [formlyAttributes]="field"
43
+ [tabIndex]="to.tabindex"
44
+ [placeholder]="to.placeholder"
45
+ />
46
+ </ng-template>
47
+ `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyFieldInput, decorators: [{
49
+ type: Component,
50
+ args: [{
51
+ selector: 'formly-field-mat-input',
52
+ template: `
53
+ <input
54
+ *ngIf="type !== 'number'; else numberTmp"
55
+ matInput
56
+ [id]="id"
57
+ [type]="type || 'text'"
58
+ [readonly]="to.readonly"
59
+ [required]="to.required"
60
+ [errorStateMatcher]="errorStateMatcher"
61
+ [formControl]="formControl"
62
+ [formlyAttributes]="field"
63
+ [tabIndex]="to.tabindex"
64
+ [placeholder]="to.placeholder"
65
+ />
66
+ <ng-template #numberTmp>
67
+ <input
68
+ matInput
69
+ [id]="id"
70
+ type="number"
71
+ [readonly]="to.readonly"
72
+ [required]="to.required"
73
+ [errorStateMatcher]="errorStateMatcher"
74
+ [formControl]="formControl"
75
+ [formlyAttributes]="field"
76
+ [tabIndex]="to.tabindex"
77
+ [placeholder]="to.placeholder"
78
+ />
79
+ </ng-template>
80
+ `,
81
+ changeDetection: ChangeDetectionStrategy.OnPush,
82
+ }]
83
+ }] });
84
+
85
+ class FormlyMatInputModule {
86
+ }
87
+ FormlyMatInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyMatInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
88
+ FormlyMatInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyMatInputModule, declarations: [FormlyFieldInput], imports: [CommonModule,
89
+ ReactiveFormsModule,
90
+ MatInputModule,
91
+ FormlyMatFormFieldModule, i4.FormlyModule] });
92
+ FormlyMatInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyMatInputModule, imports: [[
93
+ CommonModule,
94
+ ReactiveFormsModule,
95
+ MatInputModule,
96
+ FormlyMatFormFieldModule,
97
+ FormlyModule.forChild({
98
+ types: [
99
+ {
100
+ name: 'input',
101
+ component: FormlyFieldInput,
102
+ wrappers: ['form-field'],
103
+ },
104
+ { name: 'string', extends: 'input' },
105
+ {
106
+ name: 'number',
107
+ extends: 'input',
108
+ defaultOptions: {
109
+ templateOptions: {
110
+ type: 'number',
111
+ },
112
+ },
113
+ },
114
+ {
115
+ name: 'integer',
116
+ extends: 'input',
117
+ defaultOptions: {
118
+ templateOptions: {
119
+ type: 'number',
120
+ },
121
+ },
122
+ },
123
+ ],
124
+ }),
125
+ ]] });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FormlyMatInputModule, decorators: [{
127
+ type: NgModule,
128
+ args: [{
129
+ declarations: [FormlyFieldInput],
130
+ imports: [
131
+ CommonModule,
132
+ ReactiveFormsModule,
133
+ MatInputModule,
134
+ FormlyMatFormFieldModule,
135
+ FormlyModule.forChild({
136
+ types: [
137
+ {
138
+ name: 'input',
139
+ component: FormlyFieldInput,
140
+ wrappers: ['form-field'],
141
+ },
142
+ { name: 'string', extends: 'input' },
143
+ {
144
+ name: 'number',
145
+ extends: 'input',
146
+ defaultOptions: {
147
+ templateOptions: {
148
+ type: 'number',
149
+ },
150
+ },
151
+ },
152
+ {
153
+ name: 'integer',
154
+ extends: 'input',
155
+ defaultOptions: {
156
+ templateOptions: {
157
+ type: 'number',
158
+ },
159
+ },
160
+ },
161
+ ],
162
+ }),
163
+ ],
164
+ }]
165
+ }] });
166
+
167
+ /**
168
+ * Generated bundle index. Do not edit.
169
+ */
170
+
171
+ export { FormlyFieldInput, FormlyMatInputModule };
172
+ //# sourceMappingURL=ngx-formly-material-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-formly-material-input.mjs","sources":["../../../../src/ui/material/input/src/input.type.ts","../../../../src/ui/material/input/src/input.module.ts","../../../../src/ui/material/input/src/ngx-formly-material-input.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { FieldType } from '@ngx-formly/material/form-field';\n\n@Component({\n selector: 'formly-field-mat-input',\n template: `\n <input\n *ngIf=\"type !== 'number'; else numberTmp\"\n matInput\n [id]=\"id\"\n [type]=\"type || 'text'\"\n [readonly]=\"to.readonly\"\n [required]=\"to.required\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [tabIndex]=\"to.tabindex\"\n [placeholder]=\"to.placeholder\"\n />\n <ng-template #numberTmp>\n <input\n matInput\n [id]=\"id\"\n type=\"number\"\n [readonly]=\"to.readonly\"\n [required]=\"to.required\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [tabIndex]=\"to.tabindex\"\n [placeholder]=\"to.placeholder\"\n />\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFieldInput extends FieldType implements OnInit {\n get type() {\n return this.to.type || 'text';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { FormlyMatFormFieldModule } from '@ngx-formly/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { FormlyFieldInput } from './input.type';\n\n@NgModule({\n declarations: [FormlyFieldInput],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatInputModule,\n\n FormlyMatFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'input',\n component: FormlyFieldInput,\n wrappers: ['form-field'],\n },\n { name: 'string', extends: 'input' },\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'number',\n },\n },\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'number',\n },\n },\n },\n ],\n }),\n ],\n})\nexport class FormlyMatInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;MAoCa,yBAAyB,SAAS;IAC7C,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC;KAC/B;;6GAHU,gBAAgB;iGAAhB,gBAAgB,qFA/BjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BT;2FAGU,gBAAgB;kBAjC5B,SAAS;mBAAC;oBACT,QAAQ,EAAE,wBAAwB;oBAClC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BT;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;;MCaY,oBAAoB;;iHAApB,oBAAoB;kHAApB,oBAAoB,iBArChB,gBAAgB,aAE7B,YAAY;QACZ,mBAAmB;QACnB,cAAc;QAEd,wBAAwB;kHA+Bf,oBAAoB,YApCtB;YACP,YAAY;YACZ,mBAAmB;YACnB,cAAc;YAEd,wBAAwB;YACxB,YAAY,CAAC,QAAQ,CAAC;gBACpB,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,OAAO;wBACb,SAAS,EAAE,gBAAgB;wBAC3B,QAAQ,EAAE,CAAC,YAAY,CAAC;qBACzB;oBACD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;oBACpC;wBACE,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,OAAO;wBAChB,cAAc,EAAE;4BACd,eAAe,EAAE;gCACf,IAAI,EAAE,QAAQ;6BACf;yBACF;qBACF;oBACD;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,OAAO;wBAChB,cAAc,EAAE;4BACd,eAAe,EAAE;gCACf,IAAI,EAAE,QAAQ;6BACf;yBACF;qBACF;iBACF;aACF,CAAC;SACH;2FAEU,oBAAoB;kBAtChC,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;oBAChC,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBAEd,wBAAwB;wBACxB,YAAY,CAAC,QAAQ,CAAC;4BACpB,KAAK,EAAE;gCACL;oCACE,IAAI,EAAE,OAAO;oCACb,SAAS,EAAE,gBAAgB;oCAC3B,QAAQ,EAAE,CAAC,YAAY,CAAC;iCACzB;gCACD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;gCACpC;oCACE,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,OAAO;oCAChB,cAAc,EAAE;wCACd,eAAe,EAAE;4CACf,IAAI,EAAE,QAAQ;yCACf;qCACF;iCACF;gCACD;oCACE,IAAI,EAAE,SAAS;oCACf,OAAO,EAAE,OAAO;oCAChB,cAAc,EAAE;wCACd,eAAe,EAAE;4CACf,IAAI,EAAE,QAAQ;yCACf;qCACF;iCACF;6BACF;yBACF,CAAC;qBACH;iBACF;;;AC/CD;;;;;;"}