@bravura/ui 1.21.6 → 2.0.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 (275) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -0
  3. package/alert/alert-container.component.d.ts +1 -1
  4. package/alert/alert-message.component.d.ts +1 -1
  5. package/alert/{bravura-ui-alert.d.ts → index.d.ts} +0 -0
  6. package/behavior/await.directive.d.ts +1 -1
  7. package/behavior/{bravura-ui-behavior.d.ts → index.d.ts} +0 -0
  8. package/behavior/sizing-monitor.directive.d.ts +1 -1
  9. package/behavior/sizing.directive.d.ts +1 -1
  10. package/common/{bravura-ui-common.d.ts → index.d.ts} +0 -0
  11. package/currency-input/currency-input.directive.d.ts +1 -1
  12. package/currency-input/{bravura-ui-currency-input.d.ts → index.d.ts} +0 -0
  13. package/decimal-input/decimal-input.directive.d.ts +1 -1
  14. package/decimal-input/{bravura-ui-decimal-input.d.ts → index.d.ts} +0 -0
  15. package/discrete-input/discrete-input.component.d.ts +6 -5
  16. package/discrete-input/{bravura-ui-discrete-input.d.ts → index.d.ts} +0 -0
  17. package/esm2020/alert/alert-container.component.mjs +201 -0
  18. package/esm2020/alert/alert-message.component.mjs +92 -0
  19. package/esm2020/alert/alert.module.mjs +22 -0
  20. package/{esm2015/alert/bravura-ui-alert.js → esm2020/alert/bravura-ui-alert.mjs} +0 -0
  21. package/{esm2015/alert/public-api.js → esm2020/alert/public-api.mjs} +0 -0
  22. package/{esm2015/behavior/await.directive.js → esm2020/behavior/await.directive.mjs} +4 -4
  23. package/esm2020/behavior/behavior.module.mjs +25 -0
  24. package/{esm2015/behavior/bravura-ui-behavior.js → esm2020/behavior/bravura-ui-behavior.mjs} +0 -0
  25. package/{esm2015/behavior/public-api.js → esm2020/behavior/public-api.mjs} +0 -0
  26. package/{esm2015/behavior/sizing-monitor.directive.js → esm2020/behavior/sizing-monitor.directive.mjs} +4 -4
  27. package/{esm2015/behavior/sizing.directive.js → esm2020/behavior/sizing.directive.mjs} +4 -4
  28. package/{esm2015/bravura-ui.js → esm2020/bravura-ui.mjs} +0 -0
  29. package/{esm2015/common/bravura-ui-common.js → esm2020/common/bravura-ui-common.mjs} +0 -0
  30. package/{esm2015/common/common-utils.js → esm2020/common/common-utils.mjs} +0 -0
  31. package/esm2020/common/common.module.mjs +52 -0
  32. package/{esm2015/common/public-api.js → esm2020/common/public-api.mjs} +0 -0
  33. package/{esm2015/currency-input/bravura-ui-currency-input.js → esm2020/currency-input/bravura-ui-currency-input.mjs} +0 -0
  34. package/esm2020/currency-input/currency-input.directive.mjs +279 -0
  35. package/esm2020/currency-input/currency-input.module.mjs +19 -0
  36. package/{esm2015/currency-input/public-api.js → esm2020/currency-input/public-api.mjs} +0 -0
  37. package/{esm2015/decimal-input/bravura-ui-decimal-input.js → esm2020/decimal-input/bravura-ui-decimal-input.mjs} +0 -0
  38. package/{esm2015/decimal-input/decimal-input.directive.js → esm2020/decimal-input/decimal-input.directive.mjs} +4 -4
  39. package/esm2020/decimal-input/decimal-input.module.mjs +19 -0
  40. package/{esm2015/decimal-input/public-api.js → esm2020/decimal-input/public-api.mjs} +0 -0
  41. package/{esm2015/discrete-input/bravura-ui-discrete-input.js → esm2020/discrete-input/bravura-ui-discrete-input.mjs} +0 -0
  42. package/esm2020/discrete-input/discrete-input.component.mjs +326 -0
  43. package/esm2020/discrete-input/discrete-input.module.mjs +21 -0
  44. package/{esm2015/discrete-input/public-api.js → esm2020/discrete-input/public-api.mjs} +0 -0
  45. package/{esm2015/file-upload/bravura-ui-file-upload.js → esm2020/file-upload/bravura-ui-file-upload.mjs} +0 -0
  46. package/esm2020/file-upload/file-upload.component.mjs +356 -0
  47. package/{esm2015/file-upload/file-upload.module.js → esm2020/file-upload/file-upload.module.mjs} +11 -13
  48. package/{esm2015/file-upload/file-upload.service.js → esm2020/file-upload/file-upload.service.mjs} +4 -4
  49. package/{esm2015/file-upload/public-api.js → esm2020/file-upload/public-api.mjs} +0 -0
  50. package/{esm2015/form-field/bravura-ui-form-field.js → esm2020/form-field/bravura-ui-form-field.mjs} +0 -0
  51. package/esm2020/form-field/form-field.component.mjs +96 -0
  52. package/esm2020/form-field/form-field.module.mjs +20 -0
  53. package/{esm2015/form-field/public-api.js → esm2020/form-field/public-api.mjs} +0 -0
  54. package/{esm2015/icon-font/bravura-ui-icon-font.js → esm2020/icon-font/bravura-ui-icon-font.mjs} +0 -0
  55. package/esm2020/icon-font/icon-font.module.mjs +22 -0
  56. package/{esm2015/icon-font/icon.directive.js → esm2020/icon-font/icon.directive.mjs} +4 -4
  57. package/{esm2015/icon-font/public-api.js → esm2020/icon-font/public-api.mjs} +0 -0
  58. package/{esm2015/icon-font/utilities.js → esm2020/icon-font/utilities.mjs} +0 -0
  59. package/{esm2015/phone-number/bravura-ui-phone-number.js → esm2020/phone-number/bravura-ui-phone-number.mjs} +0 -0
  60. package/esm2020/phone-number/phone-number.directive.mjs +187 -0
  61. package/esm2020/phone-number/phone-number.module.mjs +24 -0
  62. package/{esm2015/phone-number/phone-number.pipe.js → esm2020/phone-number/phone-number.pipe.mjs} +4 -4
  63. package/{esm2015/phone-number/phone-number.validator.js → esm2020/phone-number/phone-number.validator.mjs} +4 -4
  64. package/{esm2015/phone-number/public-api.js → esm2020/phone-number/public-api.mjs} +0 -0
  65. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  66. package/{esm2015/radio-panel/bravura-ui-radio-panel.js → esm2020/radio-panel/bravura-ui-radio-panel.mjs} +0 -0
  67. package/{esm2015/radio-panel/public-api.js → esm2020/radio-panel/public-api.mjs} +0 -0
  68. package/esm2020/radio-panel/radio-panel-item.component.mjs +97 -0
  69. package/esm2020/radio-panel/radio-panel.component.mjs +89 -0
  70. package/esm2020/radio-panel/radio-panel.module.mjs +25 -0
  71. package/{esm2015/selection-panel/bravura-ui-selection-panel.js → esm2020/selection-panel/bravura-ui-selection-panel.mjs} +0 -0
  72. package/{esm2015/selection-panel/public-api.js → esm2020/selection-panel/public-api.mjs} +0 -0
  73. package/esm2020/selection-panel/selection-panel-item.component.mjs +166 -0
  74. package/esm2020/selection-panel/selection-panel.directive.mjs +119 -0
  75. package/esm2020/selection-panel/selection-panel.module.mjs +23 -0
  76. package/{esm2015/skeletons/bravura-ui-skeletons.js → esm2020/skeletons/bravura-ui-skeletons.mjs} +0 -0
  77. package/{esm2015/skeletons/public-api.js → esm2020/skeletons/public-api.mjs} +0 -0
  78. package/esm2020/skeletons/skeleton-loader-presets.directive.mjs +83 -0
  79. package/{esm2015/skeletons/skeleton-loader.component.js → esm2020/skeletons/skeleton-loader.component.mjs} +4 -4
  80. package/esm2020/skeletons/skeletons.module.mjs +35 -0
  81. package/{esm2015/stepper/bravura-ui-stepper.js → esm2020/stepper/bravura-ui-stepper.mjs} +0 -0
  82. package/{esm2015/stepper/public-api.js → esm2020/stepper/public-api.mjs} +0 -0
  83. package/esm2020/stepper/stepper-animation.mjs +23 -0
  84. package/esm2020/stepper/stepper.component.mjs +166 -0
  85. package/{esm2015/stepper/stepper.module.js → esm2020/stepper/stepper.module.mjs} +13 -15
  86. package/{esm2015/tooltip/bravura-ui-tooltip.js → esm2020/tooltip/bravura-ui-tooltip.mjs} +0 -0
  87. package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
  88. package/esm2020/tooltip/tooltip.component.mjs +51 -0
  89. package/{esm2015/tooltip/tooltip.directive.js → esm2020/tooltip/tooltip.directive.mjs} +4 -4
  90. package/esm2020/tooltip/tooltip.module.mjs +25 -0
  91. package/fesm2015/bravura-ui-alert.mjs +324 -0
  92. package/fesm2015/bravura-ui-alert.mjs.map +1 -0
  93. package/fesm2015/bravura-ui-behavior.mjs +407 -0
  94. package/fesm2015/bravura-ui-behavior.mjs.map +1 -0
  95. package/fesm2015/bravura-ui-common.mjs +74 -0
  96. package/fesm2015/bravura-ui-common.mjs.map +1 -0
  97. package/fesm2015/bravura-ui-currency-input.mjs +303 -0
  98. package/fesm2015/bravura-ui-currency-input.mjs.map +1 -0
  99. package/fesm2015/bravura-ui-decimal-input.mjs +147 -0
  100. package/fesm2015/bravura-ui-decimal-input.mjs.map +1 -0
  101. package/fesm2015/bravura-ui-discrete-input.mjs +354 -0
  102. package/fesm2015/bravura-ui-discrete-input.mjs.map +1 -0
  103. package/fesm2015/bravura-ui-file-upload.mjs +434 -0
  104. package/fesm2015/bravura-ui-file-upload.mjs.map +1 -0
  105. package/fesm2015/{bravura-ui-form-field.js → bravura-ui-form-field.mjs} +12 -23
  106. package/fesm2015/bravura-ui-form-field.mjs.map +1 -0
  107. package/fesm2015/{bravura-ui-icon-font.js → bravura-ui-icon-font.mjs} +8 -8
  108. package/fesm2015/bravura-ui-icon-font.mjs.map +1 -0
  109. package/fesm2015/{bravura-ui-phone-number.js → bravura-ui-phone-number.mjs} +34 -30
  110. package/fesm2015/bravura-ui-phone-number.mjs.map +1 -0
  111. package/fesm2015/bravura-ui-radio-panel.mjs +212 -0
  112. package/fesm2015/bravura-ui-radio-panel.mjs.map +1 -0
  113. package/fesm2015/{bravura-ui-selection-panel.js → bravura-ui-selection-panel.mjs} +24 -28
  114. package/fesm2015/bravura-ui-selection-panel.mjs.map +1 -0
  115. package/fesm2015/bravura-ui-skeletons.mjs +195 -0
  116. package/fesm2015/bravura-ui-skeletons.mjs.map +1 -0
  117. package/fesm2015/bravura-ui-stepper.mjs +243 -0
  118. package/fesm2015/bravura-ui-stepper.mjs.map +1 -0
  119. package/fesm2015/bravura-ui-tooltip.mjs +195 -0
  120. package/fesm2015/bravura-ui-tooltip.mjs.map +1 -0
  121. package/fesm2015/{bravura-ui.js → bravura-ui.mjs} +1 -1
  122. package/fesm2015/bravura-ui.mjs.map +1 -0
  123. package/fesm2020/bravura-ui-alert.mjs +312 -0
  124. package/fesm2020/bravura-ui-alert.mjs.map +1 -0
  125. package/{fesm2015/bravura-ui-behavior.js → fesm2020/bravura-ui-behavior.mjs} +14 -14
  126. package/fesm2020/bravura-ui-behavior.mjs.map +1 -0
  127. package/{fesm2015/bravura-ui-common.js → fesm2020/bravura-ui-common.mjs} +7 -7
  128. package/fesm2020/bravura-ui-common.mjs.map +1 -0
  129. package/{fesm2015/bravura-ui-currency-input.js → fesm2020/bravura-ui-currency-input.mjs} +9 -10
  130. package/fesm2020/bravura-ui-currency-input.mjs.map +1 -0
  131. package/{fesm2015/bravura-ui-decimal-input.js → fesm2020/bravura-ui-decimal-input.mjs} +8 -8
  132. package/fesm2020/bravura-ui-decimal-input.mjs.map +1 -0
  133. package/{fesm2015/bravura-ui-discrete-input.js → fesm2020/bravura-ui-discrete-input.mjs} +18 -26
  134. package/fesm2020/bravura-ui-discrete-input.mjs.map +1 -0
  135. package/fesm2020/bravura-ui-file-upload.mjs +430 -0
  136. package/fesm2020/bravura-ui-file-upload.mjs.map +1 -0
  137. package/fesm2020/bravura-ui-form-field.mjs +119 -0
  138. package/fesm2020/bravura-ui-form-field.mjs.map +1 -0
  139. package/fesm2020/bravura-ui-icon-font.mjs +178 -0
  140. package/fesm2020/bravura-ui-icon-font.mjs.map +1 -0
  141. package/fesm2020/bravura-ui-phone-number.mjs +317 -0
  142. package/fesm2020/bravura-ui-phone-number.mjs.map +1 -0
  143. package/fesm2020/bravura-ui-radio-panel.mjs +209 -0
  144. package/fesm2020/bravura-ui-radio-panel.mjs.map +1 -0
  145. package/fesm2020/bravura-ui-selection-panel.mjs +306 -0
  146. package/fesm2020/bravura-ui-selection-panel.mjs.map +1 -0
  147. package/{fesm2015/bravura-ui-skeletons.js → fesm2020/bravura-ui-skeletons.mjs} +13 -13
  148. package/fesm2020/bravura-ui-skeletons.mjs.map +1 -0
  149. package/{fesm2015/bravura-ui-stepper.js → fesm2020/bravura-ui-stepper.mjs} +27 -44
  150. package/fesm2020/bravura-ui-stepper.mjs.map +1 -0
  151. package/{fesm2015/bravura-ui-tooltip.js → fesm2020/bravura-ui-tooltip.mjs} +13 -22
  152. package/fesm2020/bravura-ui-tooltip.mjs.map +1 -0
  153. package/fesm2020/bravura-ui.mjs +8 -0
  154. package/fesm2020/bravura-ui.mjs.map +1 -0
  155. package/file-upload/file-upload.component.d.ts +1 -1
  156. package/file-upload/{bravura-ui-file-upload.d.ts → index.d.ts} +0 -0
  157. package/form-field/form-field.component.d.ts +1 -1
  158. package/form-field/{bravura-ui-form-field.d.ts → index.d.ts} +0 -0
  159. package/icon-font/icon.directive.d.ts +1 -1
  160. package/icon-font/{bravura-ui-icon-font.d.ts → index.d.ts} +0 -0
  161. package/{bravura-ui.d.ts → index.d.ts} +0 -0
  162. package/package.json +149 -14
  163. package/phone-number/{bravura-ui-phone-number.d.ts → index.d.ts} +0 -0
  164. package/phone-number/phone-number.directive.d.ts +1 -1
  165. package/phone-number/phone-number.pipe.d.ts +1 -1
  166. package/phone-number/phone-number.validator.d.ts +1 -1
  167. package/radio-panel/{bravura-ui-radio-panel.d.ts → index.d.ts} +0 -0
  168. package/radio-panel/radio-panel-item.component.d.ts +1 -1
  169. package/radio-panel/radio-panel.component.d.ts +1 -1
  170. package/selection-panel/{bravura-ui-selection-panel.d.ts → index.d.ts} +0 -0
  171. package/selection-panel/selection-panel-item.component.d.ts +1 -1
  172. package/selection-panel/selection-panel.directive.d.ts +1 -1
  173. package/skeletons/{bravura-ui-skeletons.d.ts → index.d.ts} +0 -0
  174. package/skeletons/skeleton-loader-presets.directive.d.ts +1 -1
  175. package/skeletons/skeleton-loader.component.d.ts +1 -1
  176. package/stepper/{bravura-ui-stepper.d.ts → index.d.ts} +0 -0
  177. package/stepper/stepper.component.d.ts +1 -1
  178. package/theme/_ui-theme.scss +1 -1
  179. package/tooltip/{bravura-ui-tooltip.d.ts → index.d.ts} +0 -0
  180. package/tooltip/tooltip.component.d.ts +1 -1
  181. package/tooltip/tooltip.directive.d.ts +1 -1
  182. package/alert/package.json +0 -10
  183. package/behavior/package.json +0 -10
  184. package/bundles/bravura-ui-alert.umd.js +0 -745
  185. package/bundles/bravura-ui-alert.umd.js.map +0 -1
  186. package/bundles/bravura-ui-behavior.umd.js +0 -788
  187. package/bundles/bravura-ui-behavior.umd.js.map +0 -1
  188. package/bundles/bravura-ui-common.umd.js +0 -103
  189. package/bundles/bravura-ui-common.umd.js.map +0 -1
  190. package/bundles/bravura-ui-currency-input.umd.js +0 -335
  191. package/bundles/bravura-ui-currency-input.umd.js.map +0 -1
  192. package/bundles/bravura-ui-decimal-input.umd.js +0 -176
  193. package/bundles/bravura-ui-decimal-input.umd.js.map +0 -1
  194. package/bundles/bravura-ui-discrete-input.umd.js +0 -747
  195. package/bundles/bravura-ui-discrete-input.umd.js.map +0 -1
  196. package/bundles/bravura-ui-file-upload.umd.js +0 -845
  197. package/bundles/bravura-ui-file-upload.umd.js.map +0 -1
  198. package/bundles/bravura-ui-form-field.umd.js +0 -494
  199. package/bundles/bravura-ui-form-field.umd.js.map +0 -1
  200. package/bundles/bravura-ui-icon-font.umd.js +0 -539
  201. package/bundles/bravura-ui-icon-font.umd.js.map +0 -1
  202. package/bundles/bravura-ui-phone-number.umd.js +0 -690
  203. package/bundles/bravura-ui-phone-number.umd.js.map +0 -1
  204. package/bundles/bravura-ui-radio-panel.umd.js +0 -595
  205. package/bundles/bravura-ui-radio-panel.umd.js.map +0 -1
  206. package/bundles/bravura-ui-selection-panel.umd.js +0 -699
  207. package/bundles/bravura-ui-selection-panel.umd.js.map +0 -1
  208. package/bundles/bravura-ui-skeletons.umd.js +0 -525
  209. package/bundles/bravura-ui-skeletons.umd.js.map +0 -1
  210. package/bundles/bravura-ui-stepper.umd.js +0 -613
  211. package/bundles/bravura-ui-stepper.umd.js.map +0 -1
  212. package/bundles/bravura-ui-tooltip.umd.js +0 -586
  213. package/bundles/bravura-ui-tooltip.umd.js.map +0 -1
  214. package/bundles/bravura-ui.umd.js +0 -18
  215. package/bundles/bravura-ui.umd.js.map +0 -1
  216. package/common/package.json +0 -10
  217. package/currency-input/package.json +0 -10
  218. package/decimal-input/package.json +0 -10
  219. package/discrete-input/package.json +0 -10
  220. package/esm2015/alert/alert-container.component.js +0 -220
  221. package/esm2015/alert/alert-message.component.js +0 -98
  222. package/esm2015/alert/alert.module.js +0 -22
  223. package/esm2015/behavior/behavior.module.js +0 -25
  224. package/esm2015/common/common.module.js +0 -52
  225. package/esm2015/currency-input/currency-input.directive.js +0 -280
  226. package/esm2015/currency-input/currency-input.module.js +0 -19
  227. package/esm2015/decimal-input/decimal-input.module.js +0 -19
  228. package/esm2015/discrete-input/discrete-input.component.js +0 -334
  229. package/esm2015/discrete-input/discrete-input.module.js +0 -21
  230. package/esm2015/file-upload/file-upload.component.js +0 -367
  231. package/esm2015/form-field/form-field.component.js +0 -107
  232. package/esm2015/form-field/form-field.module.js +0 -20
  233. package/esm2015/icon-font/icon-font.module.js +0 -22
  234. package/esm2015/phone-number/phone-number.directive.js +0 -192
  235. package/esm2015/phone-number/phone-number.module.js +0 -24
  236. package/esm2015/radio-panel/radio-panel-item.component.js +0 -109
  237. package/esm2015/radio-panel/radio-panel.component.js +0 -98
  238. package/esm2015/radio-panel/radio-panel.module.js +0 -25
  239. package/esm2015/selection-panel/selection-panel-item.component.js +0 -174
  240. package/esm2015/selection-panel/selection-panel.directive.js +0 -120
  241. package/esm2015/selection-panel/selection-panel.module.js +0 -23
  242. package/esm2015/skeletons/skeleton-loader-presets.directive.js +0 -83
  243. package/esm2015/skeletons/skeletons.module.js +0 -35
  244. package/esm2015/stepper/stepper-animation.js +0 -23
  245. package/esm2015/stepper/stepper.component.js +0 -181
  246. package/esm2015/tooltip/tooltip.component.js +0 -59
  247. package/esm2015/tooltip/tooltip.module.js +0 -26
  248. package/fesm2015/bravura-ui-alert.js +0 -337
  249. package/fesm2015/bravura-ui-alert.js.map +0 -1
  250. package/fesm2015/bravura-ui-behavior.js.map +0 -1
  251. package/fesm2015/bravura-ui-common.js.map +0 -1
  252. package/fesm2015/bravura-ui-currency-input.js.map +0 -1
  253. package/fesm2015/bravura-ui-decimal-input.js.map +0 -1
  254. package/fesm2015/bravura-ui-discrete-input.js.map +0 -1
  255. package/fesm2015/bravura-ui-file-upload.js +0 -443
  256. package/fesm2015/bravura-ui-file-upload.js.map +0 -1
  257. package/fesm2015/bravura-ui-form-field.js.map +0 -1
  258. package/fesm2015/bravura-ui-icon-font.js.map +0 -1
  259. package/fesm2015/bravura-ui-phone-number.js.map +0 -1
  260. package/fesm2015/bravura-ui-radio-panel.js +0 -230
  261. package/fesm2015/bravura-ui-radio-panel.js.map +0 -1
  262. package/fesm2015/bravura-ui-selection-panel.js.map +0 -1
  263. package/fesm2015/bravura-ui-skeletons.js.map +0 -1
  264. package/fesm2015/bravura-ui-stepper.js.map +0 -1
  265. package/fesm2015/bravura-ui-tooltip.js.map +0 -1
  266. package/fesm2015/bravura-ui.js.map +0 -1
  267. package/file-upload/package.json +0 -10
  268. package/form-field/package.json +0 -10
  269. package/icon-font/package.json +0 -10
  270. package/phone-number/package.json +0 -10
  271. package/radio-panel/package.json +0 -10
  272. package/selection-panel/package.json +0 -10
  273. package/skeletons/package.json +0 -10
  274. package/stepper/package.json +0 -10
  275. package/tooltip/package.json +0 -10
@@ -0,0 +1,119 @@
1
+ import * as i2 from '@angular/cdk/observers';
2
+ import { ObserversModule } from '@angular/cdk/observers';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i0 from '@angular/core';
6
+ import { forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy, HostListener, NgModule } from '@angular/core';
7
+ import { MatFormField, MAT_FORM_FIELD, matFormFieldAnimations, MatFormFieldModule } from '@angular/material/form-field';
8
+
9
+ /** @ignore */
10
+ const TYPE_REF = forwardRef(() => FormFieldComponent);
11
+ /**
12
+ * Container for form controls that applies Material Design styling and behavior.
13
+ *
14
+ * This component extends Angular Material's [mat-form-field](https://material.angular.io/components/form-field) and provides two additional appearances
15
+ * `bound` and `detach`. `bound` renders the label outside the outlined area of the field, while `detach` remove the borders all together. `detach`
16
+ * is generally used with form controls that render their own borders.
17
+ */
18
+ class FormFieldComponent extends MatFormField {
19
+ /**
20
+ * @ignore
21
+ */
22
+ _shouldAlwaysFloat() {
23
+ return super._shouldAlwaysFloat() || this._enhancedAppearance();
24
+ }
25
+ /**
26
+ * @ignore
27
+ */
28
+ _borderClass() {
29
+ if (this.appearance !== 'bound') {
30
+ return 'bui-form-field-flex-default';
31
+ }
32
+ if (this._control.disabled) {
33
+ return 'bui-form-field-border-disabled';
34
+ }
35
+ else if (this._control.errorState) {
36
+ return 'bui-border-warn bui-form-field-border-thick';
37
+ }
38
+ else if (this._control.focused) {
39
+ return `bui-border-${this.color || 'primary'} bui-form-field-border-thick`;
40
+ }
41
+ else {
42
+ return 'bui-form-field-border-default bui-border-emphasis';
43
+ }
44
+ }
45
+ /**
46
+ * @ignore
47
+ */
48
+ _enhancedAppearance() {
49
+ return this.appearance === 'detach' || this.appearance === 'bound';
50
+ }
51
+ /** @ignore */
52
+ _hostClicked(event) {
53
+ this._control.onContainerClick && this._control.onContainerClick(event);
54
+ }
55
+ get __defaults() {
56
+ return this._defaults;
57
+ }
58
+ }
59
+ FormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
60
+ FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FormFieldComponent, selector: "bui-form-field", inputs: { color: "color" }, host: { listeners: { "click": "_hostClicked($event)" }, properties: { "class.mat-form-field-appearance-standard": "appearance == \"standard\"", "class.mat-form-field-appearance-fill": "appearance == \"fill\"", "class.mat-form-field-appearance-outline": "appearance == \"outline\"", "class.mat-form-field-appearance-detach": "appearance == \"detach\"", "class.mat-form-field-appearance-bound": "appearance == \"bound\"", "class.mat-form-field-appearance-legacy": "appearance == \"legacy\"", "class.mat-form-field-invalid": "_control.errorState", "class.mat-form-field-can-float": "_canLabelFloat()", "class.mat-form-field-should-float": "_shouldLabelFloat()", "class.mat-form-field-has-label": "_hasFloatingLabel()", "class.mat-form-field-hide-placeholder": "_hideControlPlaceholder()", "class.mat-form-field-disabled": "_control.disabled", "class.mat-form-field-autofilled": "_control.autofilled", "class.mat-focused": "_control.focused", "class.ng-untouched": "_shouldForward(\"untouched\")", "class.ng-touched": "_shouldForward(\"touched\")", "class.ng-pristine": "_shouldForward(\"pristine\")", "class.ng-dirty": "_shouldForward(\"dirty\")", "class.ng-valid": "_shouldForward(\"valid\")", "class.ng-invalid": "_shouldForward(\"invalid\")", "class.ng-pending": "_shouldForward(\"pending\")", "class._mat-animation-noopable": "!_animationsEnabled" }, classAttribute: "mat-form-field bui-form-field bui-host" }, providers: [
61
+ { provide: MAT_FORM_FIELD, useExisting: TYPE_REF },
62
+ { provide: MatFormField, useExisting: TYPE_REF }
63
+ ], exportAs: ["buiFormField"], usesInheritance: true, ngImport: i0, template: "<div class=\"mat-form-field-wrapper\">\n\t<div class=\"mat-form-field-flex {{ _borderClass() }}\" #connectionContainer>\n\t\t<!-- Outline used for outline appearance. -->\n\t\t<ng-container *ngIf=\"appearance == 'outline'\">\n\t\t\t<div class=\"mat-form-field-outline\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n\t\t\t<ng-content select=\"[matPrefix]\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"{{ _enhancedAppearance() ? 'bui-form-field-infix' : 'mat-form-field-infix' }}\" #inputContainer>\n\t\t\t<ng-content></ng-content>\n\n\t\t\t<span class=\"mat-form-field-label-wrapper\">\n\t\t\t\t<!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n\t\t\t read if it comes before the control in the DOM. -->\n\t\t\t\t<label\n\t\t\t\t\tclass=\"mat-form-field-label\"\n\t\t\t\t\t(cdkObserveContent)=\"updateOutlineGap()\"\n\t\t\t\t\t[cdkObserveContentDisabled]=\"appearance != 'outline'\"\n\t\t\t\t\t[id]=\"_labelId\"\n\t\t\t\t\t[attr.for]=\"_control.id\"\n\t\t\t\t\t[attr.aria-owns]=\"_control.id\"\n\t\t\t\t\t[class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t\t\t\t[class.bui-bold-label]=\"__defaults?.boldLabel\"\n\t\t\t\t\t#label\n\t\t\t\t\t*ngIf=\"_hasFloatingLabel()\"\n\t\t\t\t\t[ngSwitch]=\"_hasLabel()\"\n\t\t\t\t>\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n\t\t\t\t\t<ng-container *ngSwitchCase=\"false\">\n\t\t\t\t\t\t<ng-content select=\"mat-placeholder\"></ng-content>\n\t\t\t\t\t\t<span>{{ _control.placeholder }}</span>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"mat-placeholder-required mat-form-field-required-marker\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t*ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\"\n\t\t\t\t\t\t>&#32;*</span\n\t\t\t\t\t>\n\t\t\t\t</label>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n\t\t\t<ng-content select=\"[matSuffix]\"></ng-content>\n\t\t</div>\n\t</div>\n\n\t<!-- Underline used for legacy, standard, and box appearances. -->\n\t<div class=\"mat-form-field-underline\" #underline *ngIf=\"appearance != 'outline'\">\n\t\t<span\n\t\t\tclass=\"mat-form-field-ripple\"\n\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t></span>\n\t</div>\n\n\t<div class=\"mat-form-field-subscript-wrapper\" [ngSwitch]=\"_getDisplayedMessages()\" (click)=\"$event.stopPropagation()\">\n\t\t<div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<ng-content select=\"mat-error\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n\t\t\t<div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{ hintLabel }}</div>\n\t\t\t<ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n\t\t\t<div class=\"mat-form-field-hint-spacer\"></div>\n\t\t\t<ng-content select=\"mat-hint[align='end']\"></ng-content>\n\t\t</div>\n\t</div>\n</div>\n", styles: [".mat-form-field-appearance-bound{width:215px}.mat-form-field-appearance-bound .mat-form-field-flex{align-items:center;border-radius:4px;border-style:solid}.mat-form-field-appearance-bound .mat-form-field-flex:not(.bui-form-field-border-thick):not(:hover),.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{padding:8px;border-width:1px;margin:1px}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{border-color:#80808033;border-style:dotted}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-default{border-color:#80808066}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-thick,.mat-form-field-appearance-bound .mat-form-field-flex.bui-border-emphasis:hover{border-width:2px;padding:8px 6px 8px 8px}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-icon{height:.667em!important;line-height:.667em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix button[matsuffix],.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix button.mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix button[matsuffix],.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix button.mat-icon-button{display:flex;height:1em;width:1.5em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix.mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix.mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-datepicker-toggle{display:flex;align-items:center;justify-content:center;width:1.5em;height:1em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix.mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix.mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-datepicker-toggle .mat-icon-button{width:2em;height:2em}.mat-form-field-appearance-detach,.mat-form-field-appearance-bound{padding-top:.75em}.mat-form-field-appearance-detach .mat-form-field-wrapper,.mat-form-field-appearance-bound .mat-form-field-wrapper{padding-top:.5em}.mat-form-field-appearance-detach .bui-form-field-infix,.mat-form-field-appearance-bound .bui-form-field-infix{flex-grow:1}.mat-form-field-appearance-detach .mat-form-field-label,.mat-form-field-appearance-bound .mat-form-field-label{font-size:1.125em}.mat-form-field-appearance-detach .mat-form-field-flex,.mat-form-field-appearance-bound .mat-form-field-flex{align-items:center}.mat-form-field-appearance-detach .mat-form-field-flex{padding:.125em 0;align-items:center}.bui-form-field .bui-bold-label{font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormFieldComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'bui-form-field', exportAs: 'buiFormField', animations: [matFormFieldAnimations.transitionMessages], host: {
67
+ class: 'mat-form-field bui-form-field bui-host',
68
+ '[class.mat-form-field-appearance-standard]': 'appearance == "standard"',
69
+ '[class.mat-form-field-appearance-fill]': 'appearance == "fill"',
70
+ '[class.mat-form-field-appearance-outline]': 'appearance == "outline"',
71
+ '[class.mat-form-field-appearance-detach]': 'appearance == "detach"',
72
+ '[class.mat-form-field-appearance-bound]': 'appearance == "bound"',
73
+ '[class.mat-form-field-appearance-legacy]': 'appearance == "legacy"',
74
+ '[class.mat-form-field-invalid]': '_control.errorState',
75
+ '[class.mat-form-field-can-float]': '_canLabelFloat()',
76
+ '[class.mat-form-field-should-float]': '_shouldLabelFloat()',
77
+ '[class.mat-form-field-has-label]': '_hasFloatingLabel()',
78
+ '[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',
79
+ '[class.mat-form-field-disabled]': '_control.disabled',
80
+ '[class.mat-form-field-autofilled]': '_control.autofilled',
81
+ '[class.mat-focused]': '_control.focused',
82
+ '[class.ng-untouched]': '_shouldForward("untouched")',
83
+ '[class.ng-touched]': '_shouldForward("touched")',
84
+ '[class.ng-pristine]': '_shouldForward("pristine")',
85
+ '[class.ng-dirty]': '_shouldForward("dirty")',
86
+ '[class.ng-valid]': '_shouldForward("valid")',
87
+ '[class.ng-invalid]': '_shouldForward("invalid")',
88
+ '[class.ng-pending]': '_shouldForward("pending")',
89
+ '[class._mat-animation-noopable]': '!_animationsEnabled'
90
+ }, inputs: ['color'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
91
+ { provide: MAT_FORM_FIELD, useExisting: TYPE_REF },
92
+ { provide: MatFormField, useExisting: TYPE_REF }
93
+ ], template: "<div class=\"mat-form-field-wrapper\">\n\t<div class=\"mat-form-field-flex {{ _borderClass() }}\" #connectionContainer>\n\t\t<!-- Outline used for outline appearance. -->\n\t\t<ng-container *ngIf=\"appearance == 'outline'\">\n\t\t\t<div class=\"mat-form-field-outline\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n\t\t\t<ng-content select=\"[matPrefix]\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"{{ _enhancedAppearance() ? 'bui-form-field-infix' : 'mat-form-field-infix' }}\" #inputContainer>\n\t\t\t<ng-content></ng-content>\n\n\t\t\t<span class=\"mat-form-field-label-wrapper\">\n\t\t\t\t<!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n\t\t\t read if it comes before the control in the DOM. -->\n\t\t\t\t<label\n\t\t\t\t\tclass=\"mat-form-field-label\"\n\t\t\t\t\t(cdkObserveContent)=\"updateOutlineGap()\"\n\t\t\t\t\t[cdkObserveContentDisabled]=\"appearance != 'outline'\"\n\t\t\t\t\t[id]=\"_labelId\"\n\t\t\t\t\t[attr.for]=\"_control.id\"\n\t\t\t\t\t[attr.aria-owns]=\"_control.id\"\n\t\t\t\t\t[class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t\t\t\t[class.bui-bold-label]=\"__defaults?.boldLabel\"\n\t\t\t\t\t#label\n\t\t\t\t\t*ngIf=\"_hasFloatingLabel()\"\n\t\t\t\t\t[ngSwitch]=\"_hasLabel()\"\n\t\t\t\t>\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n\t\t\t\t\t<ng-container *ngSwitchCase=\"false\">\n\t\t\t\t\t\t<ng-content select=\"mat-placeholder\"></ng-content>\n\t\t\t\t\t\t<span>{{ _control.placeholder }}</span>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"mat-placeholder-required mat-form-field-required-marker\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t*ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\"\n\t\t\t\t\t\t>&#32;*</span\n\t\t\t\t\t>\n\t\t\t\t</label>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n\t\t\t<ng-content select=\"[matSuffix]\"></ng-content>\n\t\t</div>\n\t</div>\n\n\t<!-- Underline used for legacy, standard, and box appearances. -->\n\t<div class=\"mat-form-field-underline\" #underline *ngIf=\"appearance != 'outline'\">\n\t\t<span\n\t\t\tclass=\"mat-form-field-ripple\"\n\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t></span>\n\t</div>\n\n\t<div class=\"mat-form-field-subscript-wrapper\" [ngSwitch]=\"_getDisplayedMessages()\" (click)=\"$event.stopPropagation()\">\n\t\t<div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<ng-content select=\"mat-error\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n\t\t\t<div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{ hintLabel }}</div>\n\t\t\t<ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n\t\t\t<div class=\"mat-form-field-hint-spacer\"></div>\n\t\t\t<ng-content select=\"mat-hint[align='end']\"></ng-content>\n\t\t</div>\n\t</div>\n</div>\n", styles: [".mat-form-field-appearance-bound{width:215px}.mat-form-field-appearance-bound .mat-form-field-flex{align-items:center;border-radius:4px;border-style:solid}.mat-form-field-appearance-bound .mat-form-field-flex:not(.bui-form-field-border-thick):not(:hover),.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{padding:8px;border-width:1px;margin:1px}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{border-color:#80808033;border-style:dotted}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-default{border-color:#80808066}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-thick,.mat-form-field-appearance-bound .mat-form-field-flex.bui-border-emphasis:hover{border-width:2px;padding:8px 6px 8px 8px}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-icon{height:.667em!important;line-height:.667em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix button[matsuffix],.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix button.mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix button[matsuffix],.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix button.mat-icon-button{display:flex;height:1em;width:1.5em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix.mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix.mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-datepicker-toggle{display:flex;align-items:center;justify-content:center;width:1.5em;height:1em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix.mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix.mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-datepicker-toggle .mat-icon-button{width:2em;height:2em}.mat-form-field-appearance-detach,.mat-form-field-appearance-bound{padding-top:.75em}.mat-form-field-appearance-detach .mat-form-field-wrapper,.mat-form-field-appearance-bound .mat-form-field-wrapper{padding-top:.5em}.mat-form-field-appearance-detach .bui-form-field-infix,.mat-form-field-appearance-bound .bui-form-field-infix{flex-grow:1}.mat-form-field-appearance-detach .mat-form-field-label,.mat-form-field-appearance-bound .mat-form-field-label{font-size:1.125em}.mat-form-field-appearance-detach .mat-form-field-flex,.mat-form-field-appearance-bound .mat-form-field-flex{align-items:center}.mat-form-field-appearance-detach .mat-form-field-flex{padding:.125em 0;align-items:center}.bui-form-field .bui-bold-label{font-weight:700}\n"] }]
94
+ }], propDecorators: { _hostClicked: [{
95
+ type: HostListener,
96
+ args: ['click', ['$event']]
97
+ }] } });
98
+ FormFieldComponent.ɵcmp.styles.push(MatFormField.ɵcmp.styles);
99
+
100
+ class FormFieldModule {
101
+ }
102
+ FormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
103
+ FormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: FormFieldModule, declarations: [FormFieldComponent], imports: [CommonModule, MatFormFieldModule, ObserversModule], exports: [FormFieldComponent, MatFormFieldModule] });
104
+ FormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormFieldModule, imports: [CommonModule, MatFormFieldModule, ObserversModule, MatFormFieldModule] });
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FormFieldModule, decorators: [{
106
+ type: NgModule,
107
+ args: [{
108
+ declarations: [FormFieldComponent],
109
+ imports: [CommonModule, MatFormFieldModule, ObserversModule],
110
+ exports: [FormFieldComponent, MatFormFieldModule]
111
+ }]
112
+ }] });
113
+
114
+ /**
115
+ * Generated bundle index. Do not edit.
116
+ */
117
+
118
+ export { FormFieldComponent, FormFieldModule };
119
+ //# sourceMappingURL=bravura-ui-form-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bravura-ui-form-field.mjs","sources":["../../../projects/ui/form-field/form-field.component.ts","../../../projects/ui/form-field/form-field.component.html","../../../projects/ui/form-field/form-field.module.ts","../../../projects/ui/form-field/bravura-ui-form-field.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, forwardRef, HostListener, ViewEncapsulation } from '@angular/core';\nimport {\n\tMatFormField,\n\tmatFormFieldAnimations,\n\tMatFormFieldDefaultOptions,\n\tMAT_FORM_FIELD\n} from '@angular/material/form-field';\n\n/** @ignore */\nconst TYPE_REF = forwardRef(() => FormFieldComponent);\n\n/**\n * Represents the default options for the form field that can be configured\n * using the `MAT_FORM_FIELD_DEFAULT_OPTIONS` injection token.\n */\nexport interface BuiFormFieldDefaultOptions extends MatFormFieldDefaultOptions {\n\t/**\n\t * Render labels inb bold fonts\n\t * @default false\n\t */\n\tboldLabel?: boolean;\n}\n/**\n * Container for form controls that applies Material Design styling and behavior.\n *\n * This component extends Angular Material's [mat-form-field](https://material.angular.io/components/form-field) and provides two additional appearances\n * `bound` and `detach`. `bound` renders the label outside the outlined area of the field, while `detach` remove the borders all together. `detach`\n * is generally used with form controls that render their own borders.\n */\n@Component({\n\tselector: 'bui-form-field',\n\texportAs: 'buiFormField',\n\ttemplateUrl: 'form-field.component.html',\n\tstyleUrls: ['./form-field.component.scss'],\n\tanimations: [matFormFieldAnimations.transitionMessages],\n\thost: {\n\t\tclass: 'mat-form-field bui-form-field bui-host',\n\t\t'[class.mat-form-field-appearance-standard]': 'appearance == \"standard\"',\n\t\t'[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n\t\t'[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n\t\t'[class.mat-form-field-appearance-detach]': 'appearance == \"detach\"',\n\t\t'[class.mat-form-field-appearance-bound]': 'appearance == \"bound\"',\n\t\t'[class.mat-form-field-appearance-legacy]': 'appearance == \"legacy\"',\n\t\t'[class.mat-form-field-invalid]': '_control.errorState',\n\t\t'[class.mat-form-field-can-float]': '_canLabelFloat()',\n\t\t'[class.mat-form-field-should-float]': '_shouldLabelFloat()',\n\t\t'[class.mat-form-field-has-label]': '_hasFloatingLabel()',\n\t\t'[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',\n\t\t'[class.mat-form-field-disabled]': '_control.disabled',\n\t\t'[class.mat-form-field-autofilled]': '_control.autofilled',\n\t\t'[class.mat-focused]': '_control.focused',\n\t\t'[class.ng-untouched]': '_shouldForward(\"untouched\")',\n\t\t'[class.ng-touched]': '_shouldForward(\"touched\")',\n\t\t'[class.ng-pristine]': '_shouldForward(\"pristine\")',\n\t\t'[class.ng-dirty]': '_shouldForward(\"dirty\")',\n\t\t'[class.ng-valid]': '_shouldForward(\"valid\")',\n\t\t'[class.ng-invalid]': '_shouldForward(\"invalid\")',\n\t\t'[class.ng-pending]': '_shouldForward(\"pending\")',\n\t\t'[class._mat-animation-noopable]': '!_animationsEnabled'\n\t},\n\tinputs: ['color'],\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{ provide: MAT_FORM_FIELD, useExisting: TYPE_REF },\n\t\t{ provide: MatFormField, useExisting: TYPE_REF }\n\t]\n})\nexport class FormFieldComponent extends MatFormField {\n\t/**\n\t * @ignore\n\t */\n\t_shouldAlwaysFloat(): boolean {\n\t\treturn super._shouldAlwaysFloat() || this._enhancedAppearance();\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\t_borderClass(): string {\n\t\tif ((this.appearance as any) !== 'bound') {\n\t\t\treturn 'bui-form-field-flex-default';\n\t\t}\n\t\tif (this._control.disabled) {\n\t\t\treturn 'bui-form-field-border-disabled';\n\t\t} else if (this._control.errorState) {\n\t\t\treturn 'bui-border-warn bui-form-field-border-thick';\n\t\t} else if (this._control.focused) {\n\t\t\treturn `bui-border-${this.color || 'primary'} bui-form-field-border-thick`;\n\t\t} else {\n\t\t\treturn 'bui-form-field-border-default bui-border-emphasis';\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\t_enhancedAppearance() {\n\t\treturn (this.appearance as any) === 'detach' || (this.appearance as any) === 'bound';\n\t}\n\n\t/** @ignore */\n\t@HostListener('click', ['$event'])\n\t_hostClicked(event: MouseEvent) {\n\t\tthis._control.onContainerClick && this._control.onContainerClick(event);\n\t}\n\n\tget __defaults() {\n\t\treturn (this as any)._defaults;\n\t}\n}\n\n(FormFieldComponent as any).ɵcmp.styles.push((MatFormField as any).ɵcmp.styles);\n","<div class=\"mat-form-field-wrapper\">\n\t<div class=\"mat-form-field-flex {{ _borderClass() }}\" #connectionContainer>\n\t\t<!-- Outline used for outline appearance. -->\n\t\t<ng-container *ngIf=\"appearance == 'outline'\">\n\t\t\t<div class=\"mat-form-field-outline\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n\t\t\t<ng-content select=\"[matPrefix]\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"{{ _enhancedAppearance() ? 'bui-form-field-infix' : 'mat-form-field-infix' }}\" #inputContainer>\n\t\t\t<ng-content></ng-content>\n\n\t\t\t<span class=\"mat-form-field-label-wrapper\">\n\t\t\t\t<!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n\t\t\t read if it comes before the control in the DOM. -->\n\t\t\t\t<label\n\t\t\t\t\tclass=\"mat-form-field-label\"\n\t\t\t\t\t(cdkObserveContent)=\"updateOutlineGap()\"\n\t\t\t\t\t[cdkObserveContentDisabled]=\"appearance != 'outline'\"\n\t\t\t\t\t[id]=\"_labelId\"\n\t\t\t\t\t[attr.for]=\"_control.id\"\n\t\t\t\t\t[attr.aria-owns]=\"_control.id\"\n\t\t\t\t\t[class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t\t\t\t[class.bui-bold-label]=\"__defaults?.boldLabel\"\n\t\t\t\t\t#label\n\t\t\t\t\t*ngIf=\"_hasFloatingLabel()\"\n\t\t\t\t\t[ngSwitch]=\"_hasLabel()\"\n\t\t\t\t>\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n\t\t\t\t\t<ng-container *ngSwitchCase=\"false\">\n\t\t\t\t\t\t<ng-content select=\"mat-placeholder\"></ng-content>\n\t\t\t\t\t\t<span>{{ _control.placeholder }}</span>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"mat-placeholder-required mat-form-field-required-marker\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t*ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\"\n\t\t\t\t\t\t>&#32;*</span\n\t\t\t\t\t>\n\t\t\t\t</label>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n\t\t\t<ng-content select=\"[matSuffix]\"></ng-content>\n\t\t</div>\n\t</div>\n\n\t<!-- Underline used for legacy, standard, and box appearances. -->\n\t<div class=\"mat-form-field-underline\" #underline *ngIf=\"appearance != 'outline'\">\n\t\t<span\n\t\t\tclass=\"mat-form-field-ripple\"\n\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t></span>\n\t</div>\n\n\t<div class=\"mat-form-field-subscript-wrapper\" [ngSwitch]=\"_getDisplayedMessages()\" (click)=\"$event.stopPropagation()\">\n\t\t<div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<ng-content select=\"mat-error\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n\t\t\t<div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{ hintLabel }}</div>\n\t\t\t<ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n\t\t\t<div class=\"mat-form-field-hint-spacer\"></div>\n\t\t\t<ng-content select=\"mat-hint[align='end']\"></ng-content>\n\t\t</div>\n\t</div>\n</div>\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormFieldComponent } from './form-field.component';\n\n@NgModule({\n\tdeclarations: [FormFieldComponent],\n\timports: [CommonModule, MatFormFieldModule, ObserversModule],\n\texports: [FormFieldComponent, MatFormFieldModule]\n})\nexport class FormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,178 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive, Input, NgModule } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import * as i1 from '@angular/material/icon';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+
7
+ /**
8
+ * @ignore
9
+ */
10
+ const faReplacementMap = {
11
+ 'fa-shield': 'fa-shield-alt',
12
+ 'fa-line-chart': 'fa-chart-line'
13
+ };
14
+ /**
15
+ * Decode the FontAwesome icon font set name from the icon name
16
+ *
17
+ * `'far fa-alarm' => 'far'`
18
+ *
19
+ * `'home' => ''`
20
+ *
21
+ * `'fa-user' => 'fas'`
22
+ */
23
+ function decodeFAIconFontSet(iconName) {
24
+ let fontSet = '';
25
+ let isFA = false;
26
+ if (iconName) {
27
+ iconName.split(/\s/).forEach(s => {
28
+ if (s.startsWith('fa-')) {
29
+ isFA = true;
30
+ }
31
+ else {
32
+ fontSet = s;
33
+ }
34
+ });
35
+ }
36
+ if (isFA) {
37
+ return fontSet || 'fas';
38
+ }
39
+ return '';
40
+ }
41
+ /**
42
+ * Decode the FontAwesome icon font name from the icon name
43
+ *
44
+ * `'far fa-alarm' => 'fa-alarm'`
45
+ *
46
+ * `'home' => ''`
47
+ *
48
+ * `'fa-user' => 'fa-user'`
49
+ */
50
+ function decodeFAIconFontName(iconName) {
51
+ if (iconName) {
52
+ const name = iconName.split(/\s/).find(s => s && s.startsWith('fa-')) || '';
53
+ return faReplacementMap[name] || name;
54
+ }
55
+ return '';
56
+ }
57
+
58
+ /**
59
+ * @ignore
60
+ */
61
+ const BUI_ICON_CLASS = 'bui-font-awesome-icon';
62
+ /**
63
+ * @ignore
64
+ */
65
+ const BUI_ICON_MAT_VARIANTS = ['filled', 'outlined', 'round', 'two-tone', 'sharp'];
66
+ /**
67
+ * @ignore
68
+ */
69
+ function variantToClass(variant) {
70
+ return `material-icons-${variant}`.replace(/-filled$/, '');
71
+ }
72
+ /**
73
+ * @ignore
74
+ */
75
+ const ALL_MAT_CLASSES = BUI_ICON_MAT_VARIANTS.map(variantToClass);
76
+ /**
77
+ * Use this directive, together with `<mat-icon>`, to display an icon font character/symbol
78
+ * from Material or FontAwesome icons.
79
+ *
80
+ * To use the icon fonts, add the following statements to one of your global SCSS files:
81
+ *
82
+ * ```css
83
+ * @import url(https://fonts.googleapis.com/css2?family=Material+Icons);
84
+ * @import url(https://use.fontawesome.com/releases/v5.15.0/css/all.css);
85
+ * ```
86
+ *
87
+ * @example <mat-icon buiIcon="far fa-circle"></mat-icon> <!-- FontAwesome -->
88
+ * @example <mat-icon buiIcon="home" [size]="42"></mat-icon> <!-- Material -->
89
+ */
90
+ class IconDirective {
91
+ constructor(_icon) {
92
+ this._icon = _icon;
93
+ /**
94
+ * The icon name
95
+ *
96
+ * @example 'far fa-circle'
97
+ * @example 'home'
98
+ */
99
+ this.buiIcon = '';
100
+ /**
101
+ * Override the default icon size
102
+ *
103
+ * @default 24
104
+ */
105
+ this.size = 24;
106
+ /**
107
+ * The style variant of Material Icons. It is not applicable for Font Awesome Icons or any other custom font icon sets.
108
+ * @default `filled`
109
+ */
110
+ this.variant = 'filled';
111
+ if (!this._icon) {
112
+ throw new Error('Directive [buiIcon] must be used on a mat-icon!');
113
+ }
114
+ }
115
+ ngOnChanges(_) {
116
+ const iconFontSet = this.buiIcon && decodeFAIconFontSet(this.buiIcon);
117
+ const iconFontName = this.buiIcon && decodeFAIconFontName(this.buiIcon);
118
+ const element = this._icon._elementRef.nativeElement;
119
+ if (iconFontSet) {
120
+ this._icon.fontSet = iconFontSet;
121
+ this._icon.fontIcon = iconFontName;
122
+ element.textContent = '';
123
+ element.classList.add(BUI_ICON_CLASS);
124
+ element.style.fontSize = `${(this.size * 20) / 24}px`;
125
+ this._icon['_updateFontIconClasses']();
126
+ }
127
+ else {
128
+ element.textContent = this.buiIcon;
129
+ this._icon.fontSet = '';
130
+ this._icon.fontIcon = '';
131
+ element.classList.remove(BUI_ICON_CLASS);
132
+ element.style.fontSize = `${this.size}px`;
133
+ this._icon['_updateFontIconClasses']();
134
+ element.classList.remove(...ALL_MAT_CLASSES);
135
+ element.classList.add(variantToClass(this.variant));
136
+ }
137
+ element.style.width = `${this.size}px`;
138
+ element.style.height = `${this.size}px`;
139
+ }
140
+ }
141
+ IconDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IconDirective, deps: [{ token: i1.MatIcon }], target: i0.ɵɵFactoryTarget.Directive });
142
+ IconDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.3", type: IconDirective, selector: "[buiIcon]", inputs: { buiIcon: "buiIcon", size: "size", variant: "variant" }, usesOnChanges: true, ngImport: i0 });
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IconDirective, decorators: [{
144
+ type: Directive,
145
+ args: [{
146
+ selector: '[buiIcon]'
147
+ }]
148
+ }], ctorParameters: function () { return [{ type: i1.MatIcon }]; }, propDecorators: { buiIcon: [{
149
+ type: Input
150
+ }], size: [{
151
+ type: Input
152
+ }], variant: [{
153
+ type: Input
154
+ }] } });
155
+
156
+ /**
157
+ * Module for utility functions and directives based on `mat-icon` and icon fonts.
158
+ */
159
+ class IconFontModule {
160
+ }
161
+ IconFontModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IconFontModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
162
+ IconFontModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: IconFontModule, declarations: [IconDirective], imports: [CommonModule, MatIconModule], exports: [MatIconModule, IconDirective] });
163
+ IconFontModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IconFontModule, imports: [CommonModule, MatIconModule, MatIconModule] });
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IconFontModule, decorators: [{
165
+ type: NgModule,
166
+ args: [{
167
+ declarations: [IconDirective],
168
+ imports: [CommonModule, MatIconModule],
169
+ exports: [MatIconModule, IconDirective]
170
+ }]
171
+ }] });
172
+
173
+ /**
174
+ * Generated bundle index. Do not edit.
175
+ */
176
+
177
+ export { BUI_ICON_MAT_VARIANTS, IconDirective, IconFontModule, decodeFAIconFontName, decodeFAIconFontSet };
178
+ //# sourceMappingURL=bravura-ui-icon-font.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bravura-ui-icon-font.mjs","sources":["../../../projects/ui/icon-font/utilities.ts","../../../projects/ui/icon-font/icon.directive.ts","../../../projects/ui/icon-font/icon-font.module.ts","../../../projects/ui/icon-font/bravura-ui-icon-font.ts"],"sourcesContent":["/**\n * @ignore\n */\nconst faReplacementMap: { [key: string]: string } = {\n\t'fa-shield': 'fa-shield-alt',\n\t'fa-line-chart': 'fa-chart-line'\n};\n\n/**\n * Decode the FontAwesome icon font set name from the icon name\n *\n * `'far fa-alarm' => 'far'`\n *\n * `'home' => ''`\n *\n * `'fa-user' => 'fas'`\n */\nexport function decodeFAIconFontSet(iconName: string): string {\n\tlet fontSet = '';\n\tlet isFA = false;\n\tif (iconName) {\n\t\ticonName.split(/\\s/).forEach(s => {\n\t\t\tif (s.startsWith('fa-')) {\n\t\t\t\tisFA = true;\n\t\t\t} else {\n\t\t\t\tfontSet = s;\n\t\t\t}\n\t\t});\n\t}\n\tif (isFA) {\n\t\treturn fontSet || 'fas';\n\t}\n\n\treturn '';\n}\n\n/**\n * Decode the FontAwesome icon font name from the icon name\n *\n * `'far fa-alarm' => 'fa-alarm'`\n *\n * `'home' => ''`\n *\n * `'fa-user' => 'fa-user'`\n */\nexport function decodeFAIconFontName(iconName: string): string {\n\tif (iconName) {\n\t\tconst name = iconName.split(/\\s/).find(s => s && s.startsWith('fa-')) || '';\n\t\treturn faReplacementMap[name] || name;\n\t}\n\n\treturn '';\n}\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { decodeFAIconFontName, decodeFAIconFontSet } from './utilities';\n\n/**\n * @ignore\n */\nconst BUI_ICON_CLASS = 'bui-font-awesome-icon';\n\n/**\n * @ignore\n */\nexport const BUI_ICON_MAT_VARIANTS = ['filled', 'outlined', 'round', 'two-tone', 'sharp'];\n\n/**\n * @ignore\n */\nfunction variantToClass(variant: string) {\n\treturn `material-icons-${variant}`.replace(/-filled$/, '');\n}\n\n/**\n * @ignore\n */\nconst ALL_MAT_CLASSES = BUI_ICON_MAT_VARIANTS.map(variantToClass);\n\n/**\n * Use this directive, together with `<mat-icon>`, to display an icon font character/symbol\n * from Material or FontAwesome icons.\n *\n * To use the icon fonts, add the following statements to one of your global SCSS files:\n *\n * ```css\n * @import url(https://fonts.googleapis.com/css2?family=Material+Icons);\n * @import url(https://use.fontawesome.com/releases/v5.15.0/css/all.css);\n * ```\n *\n * @example <mat-icon buiIcon=\"far fa-circle\"></mat-icon> <!-- FontAwesome -->\n * @example <mat-icon buiIcon=\"home\" [size]=\"42\"></mat-icon> <!-- Material -->\n */\n@Directive({\n\tselector: '[buiIcon]'\n})\nexport class IconDirective implements OnChanges {\n\t/**\n\t * The icon name\n\t *\n\t * @example 'far fa-circle'\n\t * @example 'home'\n\t */\n\t@Input()\n\tbuiIcon = '';\n\n\t/**\n\t * Override the default icon size\n\t *\n\t * @default 24\n\t */\n\t@Input()\n\tsize = 24;\n\n\t/**\n\t * The style variant of Material Icons. It is not applicable for Font Awesome Icons or any other custom font icon sets.\n\t * @default `filled`\n\t */\n\t@Input()\n\tvariant: 'filled' | 'outlined' | 'round' | 'two-tone' | 'sharp' = 'filled';\n\n\tconstructor(private _icon: MatIcon) {\n\t\tif (!this._icon) {\n\t\t\tthrow new Error('Directive [buiIcon] must be used on a mat-icon!');\n\t\t}\n\t}\n\n\tngOnChanges(_: SimpleChanges) {\n\t\tconst iconFontSet = this.buiIcon && decodeFAIconFontSet(this.buiIcon);\n\t\tconst iconFontName = this.buiIcon && decodeFAIconFontName(this.buiIcon);\n\n\t\tconst element: HTMLElement = this._icon._elementRef.nativeElement;\n\t\tif (iconFontSet) {\n\t\t\tthis._icon.fontSet = iconFontSet;\n\t\t\tthis._icon.fontIcon = iconFontName;\n\t\t\telement.textContent = '';\n\t\t\telement.classList.add(BUI_ICON_CLASS);\n\t\t\telement.style.fontSize = `${(this.size * 20) / 24}px`;\n\t\t\tthis._icon['_updateFontIconClasses']();\n\t\t} else {\n\t\t\telement.textContent = this.buiIcon;\n\t\t\tthis._icon.fontSet = '';\n\t\t\tthis._icon.fontIcon = '';\n\t\t\telement.classList.remove(BUI_ICON_CLASS);\n\t\t\telement.style.fontSize = `${this.size}px`;\n\t\t\tthis._icon['_updateFontIconClasses']();\n\t\t\telement.classList.remove(...ALL_MAT_CLASSES);\n\t\t\telement.classList.add(variantToClass(this.variant));\n\t\t}\n\t\telement.style.width = `${this.size}px`;\n\t\telement.style.height = `${this.size}px`;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconDirective } from './icon.directive';\nimport { MatIconModule } from '@angular/material/icon';\n\n/**\n * Module for utility functions and directives based on `mat-icon` and icon fonts.\n */\n@NgModule({\n\tdeclarations: [IconDirective],\n\timports: [CommonModule, MatIconModule],\n\texports: [MatIconModule, IconDirective]\n})\nexport class IconFontModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}