@bravura/ui 3.8.0 → 4.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 (267) hide show
  1. package/CHANGELOG.md +579 -557
  2. package/LICENSE +6 -6
  3. package/README.md +56 -54
  4. package/alert/alert-container.component.d.ts +1 -1
  5. package/alert/alert-message.component.d.ts +1 -1
  6. package/behavior/await.directive.d.ts +1 -1
  7. package/behavior/observe-content-class.directive.d.ts +1 -1
  8. package/behavior/sizing.directive.d.ts +1 -1
  9. package/clip-note/clip-note.directive.d.ts +1 -1
  10. package/currency-input/currency-input.directive.d.ts +1 -1
  11. package/decimal-input/decimal-input.directive.d.ts +1 -1
  12. package/discrete-input/discrete-input.component.d.ts +1 -1
  13. package/esm2022/alert/alert-container.component.mjs +207 -0
  14. package/esm2022/alert/alert-message.component.mjs +101 -0
  15. package/esm2022/alert/alert.module.mjs +22 -0
  16. package/{esm2020 → esm2022}/alert/public-api.mjs +1 -1
  17. package/esm2022/alert/testing/test-api.mjs +44 -0
  18. package/{esm2020 → esm2022}/behavior/await.directive.mjs +6 -6
  19. package/esm2022/behavior/behavior.module.mjs +37 -0
  20. package/{esm2020 → esm2022}/behavior/observe-content-class.directive.mjs +5 -5
  21. package/{esm2020 → esm2022}/behavior/public-api.mjs +1 -1
  22. package/esm2022/behavior/sizing-monitor.directive.mjs +31 -0
  23. package/esm2022/behavior/sizing.directive.mjs +256 -0
  24. package/esm2022/clip-note/clip-note.component.mjs +216 -0
  25. package/esm2022/clip-note/clip-note.directive.mjs +141 -0
  26. package/esm2022/clip-note/clip-note.module.mjs +32 -0
  27. package/{esm2020 → esm2022}/clip-note/public-api.mjs +1 -1
  28. package/{esm2020 → esm2022}/common/common-utils.mjs +1 -1
  29. package/{esm2020 → esm2022}/common/common.module.mjs +7 -7
  30. package/{esm2020 → esm2022}/common/public-api.mjs +1 -1
  31. package/{esm2020 → esm2022}/currency-input/currency-input.directive.mjs +6 -6
  32. package/esm2022/currency-input/currency-input.module.mjs +19 -0
  33. package/{esm2020 → esm2022}/currency-input/public-api.mjs +1 -1
  34. package/{esm2020 → esm2022}/decimal-input/decimal-input.directive.mjs +9 -9
  35. package/{esm2020 → esm2022}/decimal-input/decimal-input.module.mjs +5 -5
  36. package/esm2022/discrete-input/discrete-input.component.mjs +337 -0
  37. package/esm2022/discrete-input/discrete-input.module.mjs +21 -0
  38. package/{esm2020 → esm2022}/discrete-input/public-api.mjs +1 -1
  39. package/esm2022/file-upload/file-upload.component.mjs +400 -0
  40. package/esm2022/file-upload/file-upload.module.mjs +44 -0
  41. package/esm2022/file-upload/file-upload.service.mjs +29 -0
  42. package/{esm2020 → esm2022}/file-upload/public-api.mjs +1 -1
  43. package/esm2022/form-field/form-field.component.mjs +82 -0
  44. package/esm2022/form-field/form-field.module.mjs +33 -0
  45. package/{esm2020 → esm2022}/form-field/public-api.mjs +1 -1
  46. package/esm2022/icon-font/icon-font.module.mjs +22 -0
  47. package/{esm2020 → esm2022}/icon-font/icon.directive.mjs +5 -5
  48. package/{esm2020 → esm2022}/icon-font/public-api.mjs +1 -1
  49. package/{esm2020 → esm2022}/icon-font/utilities.mjs +1 -1
  50. package/esm2022/panel/panel-section.component.mjs +41 -0
  51. package/esm2022/panel/panel.component.mjs +87 -0
  52. package/esm2022/panel/panel.module.mjs +23 -0
  53. package/{esm2020 → esm2022}/panel/public-api.mjs +1 -1
  54. package/esm2022/panel/tinted.directive.mjs +60 -0
  55. package/esm2022/phone-number/phone-number.directive.mjs +188 -0
  56. package/{esm2020 → esm2022}/phone-number/phone-number.module.mjs +5 -5
  57. package/{esm2020 → esm2022}/phone-number/phone-number.pipe.mjs +6 -6
  58. package/esm2022/phone-number/phone-number.validator.mjs +64 -0
  59. package/{esm2020 → esm2022}/phone-number/public-api.mjs +1 -1
  60. package/{esm2020 → esm2022}/public-api.mjs +1 -1
  61. package/esm2022/radio-panel/radio-panel-item.component.mjs +93 -0
  62. package/esm2022/radio-panel/radio-panel.component.mjs +81 -0
  63. package/{esm2020 → esm2022}/radio-panel/radio-panel.module.mjs +5 -5
  64. package/esm2022/radio-panel/testing/test-api.mjs +46 -0
  65. package/{esm2020 → esm2022}/selection-panel/public-api.mjs +1 -1
  66. package/esm2022/selection-panel/selection-panel-item.component.mjs +166 -0
  67. package/esm2022/selection-panel/selection-panel.directive.mjs +119 -0
  68. package/esm2022/selection-panel/selection-panel.module.mjs +23 -0
  69. package/{esm2020 → esm2022}/skeletons/public-api.mjs +1 -1
  70. package/esm2022/skeletons/skeleton-loader-presets.directive.mjs +83 -0
  71. package/{esm2020 → esm2022}/skeletons/skeleton-loader.component.mjs +5 -5
  72. package/esm2022/skeletons/skeletons.module.mjs +35 -0
  73. package/{esm2020 → esm2022}/stepper/public-api.mjs +1 -1
  74. package/{esm2020 → esm2022}/stepper/stepper-animation.mjs +1 -1
  75. package/esm2022/stepper/stepper.component.mjs +176 -0
  76. package/esm2022/stepper/stepper.module.mjs +52 -0
  77. package/{esm2020 → esm2022}/tooltip/public-api.mjs +1 -1
  78. package/esm2022/tooltip/tooltip.component.mjs +63 -0
  79. package/esm2022/tooltip/tooltip.directive.mjs +148 -0
  80. package/esm2022/tooltip/tooltip.module.mjs +25 -0
  81. package/{fesm2020 → fesm2022}/bravura-ui-alert-testing.mjs +2 -2
  82. package/fesm2022/bravura-ui-alert-testing.mjs.map +1 -0
  83. package/fesm2022/bravura-ui-alert.mjs +327 -0
  84. package/fesm2022/bravura-ui-alert.mjs.map +1 -0
  85. package/{fesm2020 → fesm2022}/bravura-ui-behavior.mjs +45 -45
  86. package/fesm2022/bravura-ui-behavior.mjs.map +1 -0
  87. package/{fesm2020 → fesm2022}/bravura-ui-clip-note.mjs +70 -70
  88. package/fesm2022/bravura-ui-clip-note.mjs.map +1 -0
  89. package/{fesm2020 → fesm2022}/bravura-ui-common.mjs +6 -6
  90. package/fesm2022/bravura-ui-common.mjs.map +1 -0
  91. package/{fesm2020 → fesm2022}/bravura-ui-currency-input.mjs +11 -11
  92. package/fesm2022/bravura-ui-currency-input.mjs.map +1 -0
  93. package/{fesm2020 → fesm2022}/bravura-ui-decimal-input.mjs +12 -12
  94. package/fesm2022/bravura-ui-decimal-input.mjs.map +1 -0
  95. package/{fesm2020 → fesm2022}/bravura-ui-discrete-input.mjs +48 -48
  96. package/fesm2022/bravura-ui-discrete-input.mjs.map +1 -0
  97. package/fesm2022/bravura-ui-file-upload.mjs +474 -0
  98. package/fesm2022/bravura-ui-file-upload.mjs.map +1 -0
  99. package/{fesm2020 → fesm2022}/bravura-ui-form-field.mjs +19 -19
  100. package/fesm2022/bravura-ui-form-field.mjs.map +1 -0
  101. package/{fesm2020 → fesm2022}/bravura-ui-icon-font.mjs +8 -8
  102. package/fesm2022/bravura-ui-icon-font.mjs.map +1 -0
  103. package/fesm2022/bravura-ui-panel.mjs +206 -0
  104. package/fesm2022/bravura-ui-panel.mjs.map +1 -0
  105. package/{fesm2020 → fesm2022}/bravura-ui-phone-number.mjs +30 -30
  106. package/fesm2022/bravura-ui-phone-number.mjs.map +1 -0
  107. package/{fesm2020 → fesm2022}/bravura-ui-radio-panel-testing.mjs +5 -6
  108. package/fesm2022/bravura-ui-radio-panel-testing.mjs.map +1 -0
  109. package/{fesm2020 → fesm2022}/bravura-ui-radio-panel.mjs +31 -31
  110. package/fesm2022/bravura-ui-radio-panel.mjs.map +1 -0
  111. package/fesm2022/bravura-ui-selection-panel.mjs +306 -0
  112. package/fesm2022/bravura-ui-selection-panel.mjs.map +1 -0
  113. package/{fesm2020 → fesm2022}/bravura-ui-skeletons.mjs +43 -43
  114. package/fesm2022/bravura-ui-skeletons.mjs.map +1 -0
  115. package/fesm2022/bravura-ui-stepper.mjs +251 -0
  116. package/fesm2022/bravura-ui-stepper.mjs.map +1 -0
  117. package/{fesm2020 → fesm2022}/bravura-ui-tooltip.mjs +32 -24
  118. package/fesm2022/bravura-ui-tooltip.mjs.map +1 -0
  119. package/fesm2022/bravura-ui.mjs.map +1 -0
  120. package/file-upload/file-upload.component.d.ts +1 -1
  121. package/form-field/form-field.component.d.ts +1 -1
  122. package/icon-font/icon.directive.d.ts +1 -1
  123. package/package.json +76 -120
  124. package/panel/panel.component.d.ts +1 -1
  125. package/panel/tinted.directive.d.ts +1 -1
  126. package/phone-number/phone-number.directive.d.ts +1 -1
  127. package/phone-number/phone-number.validator.d.ts +2 -2
  128. package/radio-panel/radio-panel-item.component.d.ts +1 -1
  129. package/radio-panel/radio-panel.component.d.ts +1 -1
  130. package/radio-panel/testing/test-api.d.ts +2 -3
  131. package/selection-panel/selection-panel-item.component.d.ts +1 -1
  132. package/selection-panel/selection-panel.directive.d.ts +1 -1
  133. package/skeletons/skeleton-loader-presets.directive.d.ts +3 -3
  134. package/stepper/stepper.component.d.ts +1 -1
  135. package/theme/_bui-card.scss +56 -56
  136. package/theme/_ui-theme.scss +112 -112
  137. package/theme/global-style-by-bootstrap.scss +3 -3
  138. package/theme/global-style-by-tailwind.scss +3 -3
  139. package/theme/scrollbar.scss +40 -40
  140. package/tooltip/tooltip.component.d.ts +2 -0
  141. package/tooltip/tooltip.directive.d.ts +3 -5
  142. package/esm2020/alert/alert-container.component.mjs +0 -207
  143. package/esm2020/alert/alert-message.component.mjs +0 -102
  144. package/esm2020/alert/alert.module.mjs +0 -22
  145. package/esm2020/alert/testing/test-api.mjs +0 -44
  146. package/esm2020/behavior/behavior.module.mjs +0 -37
  147. package/esm2020/behavior/sizing-monitor.directive.mjs +0 -31
  148. package/esm2020/behavior/sizing.directive.mjs +0 -256
  149. package/esm2020/clip-note/clip-note.component.mjs +0 -216
  150. package/esm2020/clip-note/clip-note.directive.mjs +0 -141
  151. package/esm2020/clip-note/clip-note.module.mjs +0 -32
  152. package/esm2020/currency-input/currency-input.module.mjs +0 -19
  153. package/esm2020/discrete-input/discrete-input.component.mjs +0 -337
  154. package/esm2020/discrete-input/discrete-input.module.mjs +0 -21
  155. package/esm2020/file-upload/file-upload.component.mjs +0 -400
  156. package/esm2020/file-upload/file-upload.module.mjs +0 -44
  157. package/esm2020/file-upload/file-upload.service.mjs +0 -29
  158. package/esm2020/form-field/form-field.component.mjs +0 -82
  159. package/esm2020/form-field/form-field.module.mjs +0 -33
  160. package/esm2020/icon-font/icon-font.module.mjs +0 -22
  161. package/esm2020/panel/panel-section.component.mjs +0 -41
  162. package/esm2020/panel/panel.component.mjs +0 -87
  163. package/esm2020/panel/panel.module.mjs +0 -23
  164. package/esm2020/panel/tinted.directive.mjs +0 -60
  165. package/esm2020/phone-number/phone-number.directive.mjs +0 -188
  166. package/esm2020/phone-number/phone-number.validator.mjs +0 -64
  167. package/esm2020/radio-panel/radio-panel-item.component.mjs +0 -93
  168. package/esm2020/radio-panel/radio-panel.component.mjs +0 -81
  169. package/esm2020/radio-panel/testing/test-api.mjs +0 -47
  170. package/esm2020/selection-panel/selection-panel-item.component.mjs +0 -166
  171. package/esm2020/selection-panel/selection-panel.directive.mjs +0 -119
  172. package/esm2020/selection-panel/selection-panel.module.mjs +0 -23
  173. package/esm2020/skeletons/skeleton-loader-presets.directive.mjs +0 -83
  174. package/esm2020/skeletons/skeletons.module.mjs +0 -35
  175. package/esm2020/stepper/stepper.component.mjs +0 -176
  176. package/esm2020/stepper/stepper.module.mjs +0 -52
  177. package/esm2020/tooltip/tooltip.component.mjs +0 -54
  178. package/esm2020/tooltip/tooltip.directive.mjs +0 -149
  179. package/esm2020/tooltip/tooltip.module.mjs +0 -25
  180. package/fesm2015/bravura-ui-alert-testing.mjs +0 -64
  181. package/fesm2015/bravura-ui-alert-testing.mjs.map +0 -1
  182. package/fesm2015/bravura-ui-alert.mjs +0 -340
  183. package/fesm2015/bravura-ui-alert.mjs.map +0 -1
  184. package/fesm2015/bravura-ui-behavior.mjs +0 -515
  185. package/fesm2015/bravura-ui-behavior.mjs.map +0 -1
  186. package/fesm2015/bravura-ui-clip-note.mjs +0 -393
  187. package/fesm2015/bravura-ui-clip-note.mjs.map +0 -1
  188. package/fesm2015/bravura-ui-common.mjs +0 -96
  189. package/fesm2015/bravura-ui-common.mjs.map +0 -1
  190. package/fesm2015/bravura-ui-currency-input.mjs +0 -300
  191. package/fesm2015/bravura-ui-currency-input.mjs.map +0 -1
  192. package/fesm2015/bravura-ui-decimal-input.mjs +0 -145
  193. package/fesm2015/bravura-ui-decimal-input.mjs.map +0 -1
  194. package/fesm2015/bravura-ui-discrete-input.mjs +0 -365
  195. package/fesm2015/bravura-ui-discrete-input.mjs.map +0 -1
  196. package/fesm2015/bravura-ui-file-upload.mjs +0 -478
  197. package/fesm2015/bravura-ui-file-upload.mjs.map +0 -1
  198. package/fesm2015/bravura-ui-form-field.mjs +0 -120
  199. package/fesm2015/bravura-ui-form-field.mjs.map +0 -1
  200. package/fesm2015/bravura-ui-icon-font.mjs +0 -178
  201. package/fesm2015/bravura-ui-icon-font.mjs.map +0 -1
  202. package/fesm2015/bravura-ui-panel.mjs +0 -210
  203. package/fesm2015/bravura-ui-panel.mjs.map +0 -1
  204. package/fesm2015/bravura-ui-phone-number.mjs +0 -327
  205. package/fesm2015/bravura-ui-phone-number.mjs.map +0 -1
  206. package/fesm2015/bravura-ui-radio-panel-testing.mjs +0 -63
  207. package/fesm2015/bravura-ui-radio-panel-testing.mjs.map +0 -1
  208. package/fesm2015/bravura-ui-radio-panel.mjs +0 -200
  209. package/fesm2015/bravura-ui-radio-panel.mjs.map +0 -1
  210. package/fesm2015/bravura-ui-selection-panel.mjs +0 -311
  211. package/fesm2015/bravura-ui-selection-panel.mjs.map +0 -1
  212. package/fesm2015/bravura-ui-skeletons.mjs +0 -195
  213. package/fesm2015/bravura-ui-skeletons.mjs.map +0 -1
  214. package/fesm2015/bravura-ui-stepper.mjs +0 -253
  215. package/fesm2015/bravura-ui-stepper.mjs.map +0 -1
  216. package/fesm2015/bravura-ui-tooltip.mjs +0 -229
  217. package/fesm2015/bravura-ui-tooltip.mjs.map +0 -1
  218. package/fesm2015/bravura-ui.mjs.map +0 -1
  219. package/fesm2020/bravura-ui-alert-testing.mjs.map +0 -1
  220. package/fesm2020/bravura-ui-alert.mjs +0 -328
  221. package/fesm2020/bravura-ui-alert.mjs.map +0 -1
  222. package/fesm2020/bravura-ui-behavior.mjs.map +0 -1
  223. package/fesm2020/bravura-ui-clip-note.mjs.map +0 -1
  224. package/fesm2020/bravura-ui-common.mjs.map +0 -1
  225. package/fesm2020/bravura-ui-currency-input.mjs.map +0 -1
  226. package/fesm2020/bravura-ui-decimal-input.mjs.map +0 -1
  227. package/fesm2020/bravura-ui-discrete-input.mjs.map +0 -1
  228. package/fesm2020/bravura-ui-file-upload.mjs +0 -474
  229. package/fesm2020/bravura-ui-file-upload.mjs.map +0 -1
  230. package/fesm2020/bravura-ui-form-field.mjs.map +0 -1
  231. package/fesm2020/bravura-ui-icon-font.mjs.map +0 -1
  232. package/fesm2020/bravura-ui-panel.mjs +0 -206
  233. package/fesm2020/bravura-ui-panel.mjs.map +0 -1
  234. package/fesm2020/bravura-ui-phone-number.mjs.map +0 -1
  235. package/fesm2020/bravura-ui-radio-panel-testing.mjs.map +0 -1
  236. package/fesm2020/bravura-ui-radio-panel.mjs.map +0 -1
  237. package/fesm2020/bravura-ui-selection-panel.mjs +0 -306
  238. package/fesm2020/bravura-ui-selection-panel.mjs.map +0 -1
  239. package/fesm2020/bravura-ui-skeletons.mjs.map +0 -1
  240. package/fesm2020/bravura-ui-stepper.mjs +0 -251
  241. package/fesm2020/bravura-ui-stepper.mjs.map +0 -1
  242. package/fesm2020/bravura-ui-tooltip.mjs.map +0 -1
  243. package/fesm2020/bravura-ui.mjs +0 -8
  244. package/fesm2020/bravura-ui.mjs.map +0 -1
  245. /package/{esm2020 → esm2022}/alert/bravura-ui-alert.mjs +0 -0
  246. /package/{esm2020 → esm2022}/alert/testing/bravura-ui-alert-testing.mjs +0 -0
  247. /package/{esm2020 → esm2022}/behavior/bravura-ui-behavior.mjs +0 -0
  248. /package/{esm2020 → esm2022}/bravura-ui.mjs +0 -0
  249. /package/{esm2020 → esm2022}/clip-note/bravura-ui-clip-note.mjs +0 -0
  250. /package/{esm2020 → esm2022}/common/bravura-ui-common.mjs +0 -0
  251. /package/{esm2020 → esm2022}/currency-input/bravura-ui-currency-input.mjs +0 -0
  252. /package/{esm2020 → esm2022}/decimal-input/bravura-ui-decimal-input.mjs +0 -0
  253. /package/{esm2020 → esm2022}/decimal-input/public-api.mjs +0 -0
  254. /package/{esm2020 → esm2022}/discrete-input/bravura-ui-discrete-input.mjs +0 -0
  255. /package/{esm2020 → esm2022}/file-upload/bravura-ui-file-upload.mjs +0 -0
  256. /package/{esm2020 → esm2022}/form-field/bravura-ui-form-field.mjs +0 -0
  257. /package/{esm2020 → esm2022}/icon-font/bravura-ui-icon-font.mjs +0 -0
  258. /package/{esm2020 → esm2022}/panel/bravura-ui-panel.mjs +0 -0
  259. /package/{esm2020 → esm2022}/phone-number/bravura-ui-phone-number.mjs +0 -0
  260. /package/{esm2020 → esm2022}/radio-panel/bravura-ui-radio-panel.mjs +0 -0
  261. /package/{esm2020 → esm2022}/radio-panel/public-api.mjs +0 -0
  262. /package/{esm2020 → esm2022}/radio-panel/testing/bravura-ui-radio-panel-testing.mjs +0 -0
  263. /package/{esm2020 → esm2022}/selection-panel/bravura-ui-selection-panel.mjs +0 -0
  264. /package/{esm2020 → esm2022}/skeletons/bravura-ui-skeletons.mjs +0 -0
  265. /package/{esm2020 → esm2022}/stepper/bravura-ui-stepper.mjs +0 -0
  266. /package/{esm2020 → esm2022}/tooltip/bravura-ui-tooltip.mjs +0 -0
  267. /package/{fesm2015 → fesm2022}/bravura-ui.mjs +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"bravura-ui-file-upload.mjs","sources":["../../../projects/ui/file-upload/file-upload.service.ts","../../../projects/ui/file-upload/file-upload.component.ts","../../../projects/ui/file-upload/file-upload.component.html","../../../projects/ui/file-upload/file-upload.module.ts","../../../projects/ui/file-upload/bravura-ui-file-upload.ts"],"sourcesContent":["import { HttpEvent } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * This type represents a file or form item that has been sent as part of a multipart/form-data POST request.\n */\nexport class FileUploadItem {\n\t/** The original filename in the client's filesystem, as provided by the browser. */\n\tname: string;\n\n\t/** The size of the file item. */\n\tsize: number;\n\n\t/** An alpha-numeric string that uniquely identifies the file item. */\n\tid: string;\n\n\t/** The content type (MIME type) of the file. */\n\ttype: string;\n\n\t/** @internal */\n\tconstructor(_id: string, _name: string, _size: number, _type: string) {\n\t\tthis.id = _id;\n\t\tthis.name = _name;\n\t\tthis.size = _size;\n\t\tthis.type = _type;\n\t}\n}\n\n/**\n * This is an API for processing file upload requests.\n *\n * A sub class of this type handles multiple file requests, sent using multipart/form-data encoding type, as specified by RFC 1867.\n *\n * Please extend this type and provide it in an injector at the same level, or ancestral to that, of the `FileUploadComponent`.\n */\n@Injectable()\nexport abstract class FileUploadService {\n\t/**\n\t * Upload a list of selected files from the browser. The returned `Observable` array provides the update of the uploading progress\n\t * through HTTP events.\n\t */\n\tabstract upload(files: File[]): Array<Observable<HttpEvent<FileUploadItem>>>;\n\n\t/** List all the uploaded file items in the current HTTP session. This list excludes the files still in the process of being uploaded*/\n\tabstract list(): Observable<FileUploadItem[]>;\n\n\t/** Get the content of an uploaded file item as a `Blob`. */\n\tabstract get(id: string): Observable<Blob>;\n\n\t/** Delete an uploaded file item from the server. */\n\tabstract delete(id: string): Observable<void>;\n\n\t/** Delete all uploaded file items in the current HTTP session. */\n\tabstract clear?(): Observable<void>;\n}\n","import { animate, query, stagger, style, transition, trigger } from '@angular/animations';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { Component, ElementRef, forwardRef, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, of, Subject, Subscription } from 'rxjs';\nimport { FileUploadItem, FileUploadService } from './file-upload.service';\n\n/** @ignore */\nclass UploadingItem {\n\tprogress = 0;\n\tuploadedItem: FileUploadItem | null | undefined;\n\tdownloadingSubs?: Subscription;\n\tprivate subscription: Subscription;\n\tprivate file?: File;\n\n\tconstructor(item: FileUploadItem, oncancel: (item: UploadingItem) => void);\n\tconstructor(\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\n\t\tfile: File,\n\t\toncomplete: () => void,\n\t\toncancel: (item: UploadingItem) => void\n\t);\n\tconstructor(\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\n\t\tfileOrOncancel?: File | ((item: UploadingItem) => void),\n\t\toncomplete?: () => void,\n\t\tprivate oncancel?: (item: UploadingItem) => void\n\t) {\n\t\tif (event$ instanceof Observable) {\n\t\t\tthis.file = fileOrOncancel as File;\n\t\t\tthis.subscription = event$.subscribe({\n\t\t\t\tnext: evt => {\n\t\t\t\t\tif (evt.type === HttpEventType.UploadProgress) {\n\t\t\t\t\t\tthis.progress = evt.loaded / (this.file as File).size;\n\t\t\t\t\t} else if (evt.type === HttpEventType.Response) {\n\t\t\t\t\t\tthis.uploadedItem = evt.body;\n\t\t\t\t\t\tthis.progress = 1;\n\t\t\t\t\t\toncomplete!();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.subscription = of(event$).subscribe();\n\t\t\tthis.uploadedItem = event$;\n\t\t\tthis.oncancel = fileOrOncancel as (item: UploadingItem) => void;\n\t\t}\n\t}\n\n\tcancel() {\n\t\tthis.subscription.unsubscribe();\n\t\tthis.oncancel!(this);\n\t}\n\n\tget done() {\n\t\treturn !!this.uploadedItem;\n\t}\n\n\tget name() {\n\t\treturn this.uploadedItem?.name || this.file?.name;\n\t}\n\n\tget downloading() {\n\t\treturn this.downloadingSubs && !this.downloadingSubs.closed;\n\t}\n}\n/**\n * A control value accessor component to provide the user interface for uploading files.\n *\n * The application that integrates this UI must provide an implementation of `FileUploadService`.\n *\n * The control's value is a list of alpha-numerical strings, which are the identifiers to the uploaded files.\n *\n * Example:\n *\n * ```html\n * <form>\n * <bui-file-upload [(ngModel)]=\"uploadedFileIds\" name=\"myFiles\"></bui-file-upload>\n * </form>\n * ```\n *\n * @see FileUploadService\n */\n@Component({\n\thost: {\n\t\tclass: 'bui-host bui-file-upload',\n\t\t'[class.bui-dnd-active]': '_overFrame && remaining >= _numberOfFilesDragged',\n\t\t'[class.bui-dnd-over]': '_overDropZone && remaining >= _numberOfFilesDragged',\n\t\t'[class.bui-dnd-invalid]': '_invalidFilesDragged'\n\t},\n\tselector: 'bui-file-upload',\n\ttemplateUrl: './file-upload.component.html',\n\tstyleUrls: ['./file-upload.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileUploadComponent), multi: true }],\n\tanimations: [\n\t\ttrigger('slideOut', [\n\t\t\ttransition('* => *', [\n\t\t\t\tquery(':leave', stagger(100, animate('0.25s', style({ height: 0, overflow: 'hidden' }))), { optional: true })\n\t\t\t])\n\t\t])\n\t]\n})\nexport class FileUploadComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\t/** @ignore */\n\t_value: string[] | null = null;\n\n\t/**\n\t * The caption of the button for opening file selection dialog.\n\t */\n\t@Input()\n\tuploadActionText = 'Drag files here to attach or browse';\n\n\t/**\n\t * The label for listing successful uploaded files.\n\t */\n\t@Input()\n\tfileUploadedLabel = 'List of files uploaded successfully';\n\n\t/**\n\t * The text to be displayed when the user starts to drag file items over the browser window.\n\t */\n\t@Input()\n\tdragHint = 'Please drag the files here.';\n\n\t/**\n\t * The text to be displayed when the user is dragging the file items over the drop zone.\n\t */\n\t@Input()\n\tdropHint = 'Please release the mouse button to start uploading.';\n\n\t/** Specifies the total number of files accepted. A falsy value removes the limit.*/\n\t@Input()\n\tlimit = 0;\n\n\t/**\n\t * specify the number of maximum bytes that can be uploaded.\n\t * if number is specified, bytes are assumed, otherwise enter a string for specific size type.\n\t */\n\t@Input()\n\tfileSize: number | string = '10MB';\n\n\t/**\n\t * Accepted MIME types\n\t *\n\t * @example ['text/*', 'image/png']\n\t */\n\t@Input()\n\tget types(): string[] {\n\t\treturn this._types;\n\t}\n\tset types(types: string[]) {\n\t\tif (Array.isArray(types) && types?.length) {\n\t\t\tthis._typeRegExps = [];\n\t\t\tthis._types = Array.from(types);\n\t\t\tthis._accept = this._types.join(',');\n\t\t\ttypes.forEach(t => this._typeRegExps.push(new RegExp(t.replace(/\\*/g, '.*'))));\n\t\t}\n\t}\n\n\t/** @ignore */\n\t_fileSizeExceedMsg: string = '';\n\n\t/** @ignore */\n\t_uploadingItems: UploadingItem[] = [];\n\n\t/** @ignore */\n\t_accept = '*/*';\n\n\t/** @ignore */\n\t_itemAnimationStart = new Subject<void>();\n\t/** @ignore */\n\t_itemAnimationDone = new Subject<void>();\n\t/** @ignore */\n\t_itemAnimationInProgress = false;\n\n\tprivate _onChange = (_: string[]) => {};\n\tprivate _onTouch = () => {};\n\tprivate _frameDndEnter: (event: DragEvent) => void;\n\tprivate _frameDndLeave: () => void;\n\tprivate _frameDndOver: (event: DragEvent) => void;\n\tprivate _frameDndStop: () => void;\n\tprivate _overFrameCounter = 0;\n\tprivate _overCounter = 0;\n\tprivate _typeRegExps: RegExp[] = [/.*\\/.*/];\n\tprivate _types: string[] = ['*/*'];\n\tprivate _initSubs?: Subscription;\n\tprivate _numberOfFilesDragged = 0;\n\n\t@ViewChild('fileInput', { read: ElementRef, static: true })\n\tprivate _fileInput!: ElementRef<HTMLInputElement>;\n\n\tconstructor(private _service: FileUploadService) {\n\t\tthis._onChange([]);\n\t\tthis._onTouch();\n\t\tthis._frameDndEnter = this._onDndEnterFrame.bind(this);\n\t\tthis._frameDndLeave = this._onDndLeaveFrame.bind(this);\n\t\tthis._frameDndStop = this._onDndStopFrame.bind(this);\n\t\tthis._frameDndOver = event => event.preventDefault();\n\t}\n\n\t/** @internal */\n\tngOnInit(): void {\n\t\tdocument.addEventListener('dragenter', this._frameDndEnter);\n\t\tdocument.addEventListener('dragleave', this._frameDndLeave);\n\t\tdocument.addEventListener('dragend', this._frameDndStop);\n\t\tdocument.addEventListener('drop', this._frameDndStop);\n\t\tdocument.addEventListener('dragover', this._frameDndOver);\n\t\tthis._itemAnimationStart.subscribe(() => (this._itemAnimationInProgress = true));\n\t\tthis._itemAnimationDone.subscribe(() => (this._itemAnimationInProgress = false));\n\t}\n\n\tngOnDestroy(): void {\n\t\tdocument.removeEventListener('dragenter', this._frameDndEnter);\n\t\tdocument.removeEventListener('dragleave', this._frameDndLeave);\n\t\tdocument.removeEventListener('dragend', this._frameDndStop);\n\t\tdocument.removeEventListener('drop', this._frameDndStop);\n\t\tdocument.removeEventListener('dragover', this._frameDndOver);\n\t\tthis._itemAnimationStart.complete();\n\t\tthis._itemAnimationDone.complete();\n\t}\n\n\t/** @internal */\n\twriteValue(obj: any): void {\n\t\tif (Array.isArray(obj)) {\n\t\t\tif (!this._value) {\n\t\t\t\tthis._acceptChange(obj);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst common = obj.filter(v => this._value!.includes(v));\n\t\t\tif (common.length === obj.length && common.length === this._value.length) {\n\t\t\t\treturn; // no change\n\t\t\t}\n\t\t\tthis._acceptChange(obj);\n\t\t} else {\n\t\t\tthis._value = null;\n\t\t}\n\t}\n\n\t/** @internal */\n\tregisterOnChange(fn: any): void {\n\t\tthis._onChange = fn;\n\t}\n\n\t/** @internal */\n\tregisterOnTouched(fn: any): void {\n\t\tthis._onTouch = fn;\n\t}\n\n\t/** @internal */\n\t@HostListener('dragenter', ['$event'])\n\tonDragEnter(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._overCounter++;\n\t}\n\n\t/** @internal */\n\t@HostListener('dragover', ['$event'])\n\tonDragOver(event: Event) {\n\t\tevent.preventDefault();\n\t}\n\n\t/** @internal */\n\t@HostListener('dragleave', ['$event'])\n\tonDragLeave(event: Event) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._overCounter--;\n\t}\n\n\t/** @internal */\n\t@HostListener('drop', ['$event'])\n\tonDndDrop(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._onDndStopFrame();\n\t\tconst files = event.dataTransfer?.files;\n\t\tif (files?.length && this._validateFileSize(files)) {\n\t\t\tthis._uploadFiles(Array.from(files));\n\t\t}\n\t}\n\n\t/** Open the file selection dialog */\n\tselectFiles() {\n\t\tthis._fileInput.nativeElement.click();\n\t}\n\n\t/** @ignore */\n\t_openItem(item: UploadingItem) {\n\t\titem.downloadingSubs = this._service.get(item.uploadedItem!.id).subscribe(blob => {\n\t\t\tconst url = URL.createObjectURL(blob);\n\t\t\twindow.open(url, '_blank');\n\t\t});\n\t}\n\n\t/** @ignore */\n\tget _overFrame(): boolean {\n\t\treturn this._overFrameCounter > 0;\n\t}\n\n\t/** @ignore */\n\tget _overDropZone(): boolean {\n\t\treturn this._overCounter > 0;\n\t}\n\n\t/** Whether file uploading is in progress */\n\tget uploading(): boolean {\n\t\treturn this._uploadingItems.some(i => !i.done);\n\t}\n\n\t/** The remaining number of files allowed.*/\n\tget remaining(): number {\n\t\treturn this.limit ? this.limit - this._uploadingItems.length : Infinity;\n\t}\n\n\t/** @ignore */\n\t_handleFileSelection() {\n\t\tconst fileList = this._fileInput.nativeElement.files;\n\t\tif (fileList?.length && this._validateFileSize(fileList)) {\n\t\t\tthis._uploadFiles(Array.from(fileList));\n\t\t\tthis._fileInput.nativeElement.value = '';\n\t\t}\n\t}\n\n\t/** @ignore */\n\tget _invalidFilesDragged(): boolean {\n\t\treturn this._numberOfFilesDragged > this.remaining && (this._overFrame || this._overDropZone);\n\t}\n\n\t/** @ignore */\n\tget _initialising(): boolean {\n\t\treturn !!this._initSubs && !this._initSubs.closed;\n\t}\n\n\tprivate returnFileSize(size: number) {\n\t\tif (size < 1024) {\n\t\t\treturn `${size} bytes`;\n\t\t} else if (size >= 1024 && size < 1048576) {\n\t\t\treturn `${(size / 1024).toFixed(1)} KB`;\n\t\t} else {\n\t\t\treturn `${(size / 1048576).toFixed(1)} MB`;\n\t\t}\n\t}\n\n\tprivate _validateFileSize(files: FileList) {\n\t\tthis._fileSizeExceedMsg = '';\n\t\tconst maxSize = this.returnFileSize(this._getMaxBytes());\n\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\tif (files[i]!.size > this._getMaxBytes()) {\n\t\t\t\tthis._fileSizeExceedMsg = `Selected file/s has exceeded the allowable size of ${maxSize} per file`;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate _getMaxBytes(): number {\n\t\tif (typeof this.fileSize === 'string') {\n\t\t\tif (this.fileSize.toUpperCase().endsWith('KB')) {\n\t\t\t\tconst kiloBytes = this.fileSize.substring(0, this.fileSize.indexOf('KB'));\n\t\t\t\treturn Number(kiloBytes) * 1024;\n\t\t\t} else if (this.fileSize.toUpperCase().endsWith('MB')) {\n\t\t\t\tconst megaBytes = this.fileSize.substring(0, this.fileSize.indexOf('MB'));\n\t\t\t\treturn Number(megaBytes) * 1048576;\n\t\t\t}\n\t\t}\n\t\treturn this.fileSize as number;\n\t}\n\n\tprivate _uploadFiles(files: File[]) {\n\t\tif (this._initialising || files.length > this.remaining) {\n\t\t\treturn;\n\t\t}\n\t\tconst filtered = files.filter(\n\t\t\tf =>\n\t\t\t\t(!f.type || this._typeRegExps.some(regexp => f.type.match(regexp))) &&\n\t\t\t\t!this._uploadingItems.some(i => i.name === f.name)\n\t\t);\n\t\tconst observables = this._service.upload(filtered);\n\t\tconst items = filtered.map(\n\t\t\t(f, i) => new UploadingItem(observables[i], f, this._updateItems.bind(this), this._deleteItem.bind(this))\n\t\t);\n\t\tthis._uploadingItems = [...this._uploadingItems, ...items];\n\t}\n\n\tprivate _onDndEnterFrame(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tthis._numberOfFilesDragged = event.dataTransfer?.items?.length || 0;\n\t\tthis._overFrameCounter++;\n\t}\n\n\tprivate _onDndLeaveFrame() {\n\t\tthis._overFrameCounter--;\n\t}\n\n\tprivate _onDndStopFrame() {\n\t\tthis._overFrameCounter = 0;\n\t\tthis._overCounter = 0;\n\t}\n\n\tprivate _acceptChange(v: string[]) {\n\t\tthis._initSubs = this._service.list().subscribe(list => {\n\t\t\tthis._uploadingItems = list\n\t\t\t\t.filter(i => v.includes(i.id))\n\t\t\t\t.map(f => new UploadingItem(f, this._deleteItem.bind(this)));\n\t\t});\n\t}\n\n\tprivate _updateItems() {\n\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\tthis._uploadingItems = [...completed, ...this._uploadingItems.filter(i => !i.uploadedItem)];\n\t\tthis._updateValue(completed);\n\t}\n\n\tprivate _deleteItem(item: UploadingItem) {\n\t\tconst key = item.uploadedItem?.id;\n\t\tif (key) {\n\t\t\tthis._service.delete(key).subscribe(() => {\n\t\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\n\t\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\t\t\tthis._updateValue(completed);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\n\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\t\tthis._updateValue(completed);\n\t\t}\n\t}\n\n\tprivate _updateValue(completed: UploadingItem[]) {\n\t\tconst completedIds = completed.map(c => c.uploadedItem!.id);\n\t\tthis._value = completedIds;\n\t\tif (!this._value.length) {\n\t\t\tthis._value = null;\n\t\t}\n\t\tthis._onChange(completedIds);\n\t}\n}\n","<div class=\"bui-file-upload-container\">\n\t<div\n\t\tclass=\"bui-file-upload-hint\"\n\t\t*ngIf=\"!_initialising && remaining > 0 && (!_itemAnimationInProgress || remaining > 1)\"\n\t>\n\t\t<ng-template [ngIf]=\"_invalidFilesDragged\" [ngIfElse]=\"validDnd\">\n\t\t\t<mat-icon [buiIcon]=\"'block'\" [size]=\"32\" color=\"warn\" variant=\"outlined\" style=\"opacity: 0.6\"></mat-icon>\n\t\t</ng-template>\n\t\t<ng-template #validDnd>\n\t\t\t<div *ngIf=\"!_overFrame && !_overDropZone\" class=\"bui-color-muted bui-upload-icon-link\" (click)=\"selectFiles()\">\n\t\t\t\t<mat-icon [buiIcon]=\"'fas fa-cloud-upload-alt'\" [size]=\"32\"></mat-icon>\n\t\t\t\t<a role=\"button\">{{ uploadActionText }}</a>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"_overFrame && !_overDropZone\" class=\"bui-color-light\">{{ dragHint }}</div>\n\t\t\t<div *ngIf=\"_overDropZone\" class=\"bui-color-light\">{{ dropHint }}</div>\n\t\t</ng-template>\n\t</div>\n\t<div\n\t\tclass=\"bui-file-upload-list\"\n\t\t[@slideOut]=\"_uploadingItems.length\"\n\t\t(@slideOut.start)=\"_itemAnimationStart.next()\"\n\t\t(@slideOut.done)=\"_itemAnimationDone.next()\"\n\t\t*ngIf=\"_uploadingItems.length\"\n\t>\n\t\t<span class=\"bui-file-uploaded-label\">{{ fileUploadedLabel }}</span>\n\n\t\t<ng-container *ngFor=\"let item of _uploadingItems; let idx = index\">\n\t\t\t<div class=\"bui-file-upload-item\" [class.in-progress]=\"!item.done\" #itemDiv>\n\t\t\t\t<div class=\"bui-file-upload-item-name\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<mat-icon class=\"bui-color-muted\">description</mat-icon>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"text\"\n\t\t\t\t\t\t\t*ngIf=\"item.done && !item.downloading; else staticName\"\n\t\t\t\t\t\t\thref=\"#{{ item.uploadedItem?.id }}\"\n\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); _openItem(item)\"\n\t\t\t\t\t\t\tcontextmenu=\"false\"\n\t\t\t\t\t\t\tmatTooltip=\"Download\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<ng-template #staticName>\n\t\t\t\t\t\t\t<span class=\"text\">{{ item.name }}</span>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"bui-file-upload-item-progress\">\n\t\t\t\t\t\t<mat-progress-bar\n\t\t\t\t\t\t\tmode=\"determinate\"\n\t\t\t\t\t\t\t[class.upload-completed]=\"item.done\"\n\t\t\t\t\t\t\t*ngIf=\"!item.downloading\"\n\t\t\t\t\t\t\t[value]=\"item.done ? 100 : item.progress * 100\"\n\t\t\t\t\t\t></mat-progress-bar>\n\t\t\t\t\t\t<mat-progress-bar mode=\"buffer\" *ngIf=\"item.downloading\"></mat-progress-bar>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<ng-template [ngIf]=\"item.done\" [ngIfElse]=\"inprogress\"> 100% </ng-template>\n\t\t\t\t\t\t\t<ng-template #inprogress>\n\t\t\t\t\t\t\t\t{{ item.progress | percent }}\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bui-file-upload-item-action\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t(click)=\"item.cancel()\"\n\t\t\t\t\t\t(mouseenter)=\"itemDiv.classList.add('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t(mouseleave)=\"itemDiv.classList.remove('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\tmatTooltip=\"Delete\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<mat-icon [buiIcon]=\"'cancel'\" style=\"line-height: 0.9\"></mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<mat-divider *ngIf=\"idx < _uploadingItems.length - 1\"></mat-divider>\n\t\t</ng-container>\n\t</div>\n\t<input\n\t\ttype=\"file\"\n\t\t#fileInput\n\t\tstyle=\"display: none\"\n\t\taccept=\"{{ _accept }}\"\n\t\t(change)=\"_handleFileSelection()\"\n\t\t[multiple]=\"remaining > 1\"\n\t/>\n\n\t<div *ngIf=\"_fileSizeExceedMsg\" class=\"bui-color-warn bui-file-size-exceed\">\n\t\t<span> {{ _fileSizeExceedMsg }}</span> <mat-icon role=\"button\" (click)=\"_fileSizeExceedMsg = ''\">cancel</mat-icon>\n\t</div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileUploadComponent } from './file-upload.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconFontModule } from '@bravura/ui/icon-font';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n\tdeclarations: [FileUploadComponent],\n\timports: [\n\t\tCommonModule,\n\t\tMatIconModule,\n\t\tIconFontModule,\n\t\tMatProgressBarModule,\n\t\tMatButtonModule,\n\t\tMatDividerModule,\n\t\tMatTooltipModule\n\t],\n\texports: [FileUploadComponent]\n})\nexport class FileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FileUploadService"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bravura-ui-form-field.mjs","sources":["../../../projects/ui/form-field/form-field.component.ts","../../../projects/ui/form-field/form-field.module.ts","../../../projects/ui/form-field/bravura-ui-form-field.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\tElementRef,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput,\n\tViewEncapsulation\n} from '@angular/core';\nimport { MatFormField } from '@angular/material/form-field';\n\nexport interface BuiFormFieldConfig {\n\tappearance?: 'fill' | 'outline' | 'bound';\n}\n\nexport const BUI_FORM_FIELD_CONFIG = new InjectionToken<BuiFormFieldConfig>('@bravura/ui/buiFormFieldConfig', {\n\tfactory: () => ({ appearance: 'fill' }),\n\tprovidedIn: 'root'\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 * ** IMPORTANT NOTICE **\n *\n * From version 3.0 onward, the selector `bui-form-field` is deprecated and will be removed in later releases. You no longer need to use this tag name\n * for the new appearances. As long as you import the `NgModule` from this package, the new appearances will be supported by Material's `mat-form-field`\n * component.\n */\n@Component({\n\tselector: 'bui-dummy-component',\n\ttemplate: ``,\n\tstyleUrls: ['./form-field.component.scss'],\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormFieldComponent extends MatFormField {}\n\n/**\n * @ignore\n */\n@Directive({\n\tselector: 'bui-form-field, mat-form-field',\n\thost: {\n\t\tclass: 'bui-host'\n\t}\n})\nexport class FormFieldStyleDirective {\n\tprivate _appearance: any;\n\tprivate _flowDetection: any;\n\n\t/** The form field appearance style. */\n\t@Input()\n\tget appearance(): any {\n\t\treturn this._appearance;\n\t}\n\tset appearance(value: any) {\n\t\tthis._appearance = value;\n\t\tthis.elemRef.nativeElement.classList.remove('bui-form-field-bound', 'bui-form-field-detach');\n\t\tif (['bound', 'detach'].includes(this._appearance)) {\n\t\t\tthis.matFormField.appearance = 'outline';\n\t\t\tthis.elemRef.nativeElement.classList.add(`bui-form-field-${value}`);\n\t\t\tthis.matFormField._shouldAlwaysFloat = () => true;\n\t\t} else {\n\t\t\tthis.matFormField.appearance = ['outline', 'fill'].includes(this._appearance) ? this._appearance : undefined;\n\t\t\tthis.matFormField._shouldAlwaysFloat = this._flowDetection;\n\t\t}\n\t}\n\n\tconstructor(\n\t\t@Host() private matFormField: MatFormField,\n\t\tprivate elemRef: ElementRef<HTMLElement>,\n\t\t@Inject(BUI_FORM_FIELD_CONFIG) config: BuiFormFieldConfig\n\t) {\n\t\tthis._flowDetection = matFormField._shouldAlwaysFloat;\n\t\tthis.appearance = config.appearance;\n\t}\n}\n\nconst matFormFieldRef: any = MatFormField.ɵcmp;\nconst formFieldRef: any = FormFieldComponent.ɵcmp;\n\nmatFormFieldRef.styles.push(...formFieldRef.styles);\nmatFormFieldRef.selectors.push(['bui-form-field']);\ndelete matFormFieldRef.inputs.appearance;\ndelete matFormFieldRef.declaredInputs.appearance;\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport {\n\tBuiFormFieldConfig,\n\tBUI_FORM_FIELD_CONFIG,\n\tFormFieldComponent,\n\tFormFieldStyleDirective\n} from './form-field.component';\n\n@NgModule({\n\tdeclarations: [FormFieldComponent, FormFieldStyleDirective],\n\timports: [CommonModule, MatFormFieldModule, ObserversModule],\n\texports: [FormFieldComponent, FormFieldStyleDirective, MatFormFieldModule]\n})\nexport class FormFieldModule {\n\tstatic forConfig(config: BuiFormFieldConfig): ModuleWithProviders<FormFieldModule> {\n\t\tconst cfg = { ...config };\n\t\tcfg.appearance = cfg.appearance || 'fill';\n\t\treturn {\n\t\t\tngModule: FormFieldModule,\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: BUI_FORM_FIELD_CONFIG,\n\t\t\t\t\tuseValue: cfg\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
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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"}
@@ -1,206 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Directive, Inject, Input, Component, ChangeDetectionStrategy, Host, NgModule } from '@angular/core';
3
- import { DOCUMENT, CommonModule } from '@angular/common';
4
- import { generateID } from '@bravura/ui/common';
5
- import * as i2 from '@angular/material/card';
6
- import { MatCardModule } from '@angular/material/card';
7
- import * as i3 from '@bravura/ui/behavior';
8
- import { BehaviorModule } from '@bravura/ui/behavior';
9
-
10
- /**
11
- * A "tinted" element has a shaded background specified by the `ThemePalette`, which
12
- * is compatible with both light and dark themes.
13
- */
14
- class TintedDirective {
15
- constructor(_doc, elemRef) {
16
- this._doc = _doc;
17
- this._color = 'default';
18
- this._addedStyle = this._doc.createElement('style');
19
- this._attr = 'bui-tinted-' + generateID();
20
- this._element = elemRef.nativeElement;
21
- elemRef.nativeElement.setAttribute(this._attr, '');
22
- }
23
- /**
24
- * The base color of the shaded background
25
- * @default 'primary'
26
- */
27
- get color() {
28
- return this._color;
29
- }
30
- set color(c) {
31
- this._color = c;
32
- this.generateStyle();
33
- }
34
- ngOnInit() {
35
- this._element.style.position = 'relative';
36
- this.generateStyle();
37
- this._element.appendChild(this._addedStyle);
38
- }
39
- ngOnDestroy() {
40
- this._element.removeChild(this._addedStyle);
41
- }
42
- generateStyle() {
43
- this._addedStyle.innerText =
44
- `[${this._attr}]::after { position: absolute; opacity: 0.1; border-radius: inherit; display: block; content: ''; ` +
45
- ` background-color: var(--bui-color-${this.color}); top: 0; left: 0; ` +
46
- ` bottom: 0; right: 0; pointer-events: none; }`;
47
- }
48
- }
49
- TintedDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TintedDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
50
- TintedDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: TintedDirective, selector: "[buiTinted], bui-panel", inputs: { color: ["buiTinted", "color"] }, host: { classAttribute: "bui-host" }, exportAs: ["buiTinted"], ngImport: i0 });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TintedDirective, decorators: [{
52
- type: Directive,
53
- args: [{
54
- selector: '[buiTinted], bui-panel',
55
- host: { class: 'bui-host' },
56
- exportAs: 'buiTinted'
57
- }]
58
- }], ctorParameters: function () { return [{ type: Document, decorators: [{
59
- type: Inject,
60
- args: [DOCUMENT]
61
- }] }, { type: i0.ElementRef }]; }, propDecorators: { color: [{
62
- type: Input,
63
- args: ['buiTinted']
64
- }] } });
65
-
66
- /**
67
- * A `bui-panel` consists of a `mat-card` and a tinted backdrop.
68
- *
69
- * Unlike `mat-card`, `bui-panel` has a flat appearance by default and a transparent background.
70
- * The backdrop is nearly transparent, blending the theme palette `color`
71
- * and the effective background color of the DOM ancestors.
72
- *
73
- * `bui-panel` supports all the content child directives of `mat-card` as well as `bui-panel-section`.
74
- *
75
- * `bui-panel-section`s are subdivisions of `bui-panel` that rearrange their orientation based on the width of the container element.
76
- *
77
- */
78
- class PanelComponent {
79
- constructor(_cd, _tinted) {
80
- this._cd = _cd;
81
- this._tinted = _tinted;
82
- /**
83
- * The width of the host element, at which the panel section container will change its orientation.
84
- */
85
- this.breakpoint = 600;
86
- /** @ignore */
87
- this._width = 600;
88
- this._color = 'primary';
89
- this._appearance = 'flat';
90
- }
91
- /**
92
- * This property defines the background (shaded) and border colors of the panel
93
- */
94
- get color() {
95
- return this._color;
96
- }
97
- set color(value) {
98
- this._color = value;
99
- this._tinted.color = value;
100
- this._cd.markForCheck();
101
- }
102
- /**
103
- * In contrast to using a `mat-card` alone, a `bui-panel` does not have a elevated appearance by default.
104
- *
105
- * This property can change the default appearance to
106
- *
107
- * * `raised` - the original `mat-card` default
108
- * * `outline` - a `mat-card` with borders
109
- * * `flat` - no border or elevation
110
- */
111
- get appearance() {
112
- return this._appearance;
113
- }
114
- set appearance(value) {
115
- this._appearance = value;
116
- this._cd.markForCheck();
117
- }
118
- ngOnInit() { }
119
- /** @ignore */
120
- _resized(width) {
121
- this._width = width;
122
- this._cd.markForCheck();
123
- }
124
- }
125
- PanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PanelComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TintedDirective, host: true }], target: i0.ɵɵFactoryTarget.Component });
126
- PanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: PanelComponent, selector: "bui-panel", inputs: { backdropClass: "backdropClass", cardClass: "cardClass", color: "color", appearance: "appearance", breakpoint: "breakpoint" }, host: { properties: { "class.bui-panel-vertical": "_width < breakpoint", "class.bui-panel-horizontal": "_width >= breakpoint" }, classAttribute: "bui-panel bui-host" }, ngImport: i0, template: "<mat-card\n\t[buiSizingBy]=\"'parent'\"\n\t(buiResized)=\"_resized($event.width)\"\n\t[appearance]=\"appearance === 'flat' ? 'raised' : appearance\"\n\tclass=\"bui-border-{{ color || 'none' }} {{ cardClass }} {{\n\t\tappearance === 'flat' ? 'mat-elevation-z' : appearance === 'outlined' ? 'mat-elevation-z bui-panel-border' : ''\n\t}}\"\n>\n\t<ng-content></ng-content>\n</mat-card>\n", styles: [":host{border-radius:var(--mdc-elevated-card-container-shape, var(--mdc-shape-medium, 4px));position:relative}:host .bui-panel-border{border-width:1px;border-style:solid}:host ::ng-deep .bui-panel-section-container{display:flex;box-sizing:border-box!important}:host(:not([hidden])){display:block}:host(:not([hidden])) .mat-mdc-card{background-color:transparent;padding:16px}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-header,:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-content,:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-actions{padding:0}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-actions{margin-inline-start:-10px}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-footer{margin:0 -16px -16px}:host(:not([hidden])) .mat-mdc-card.mat-elevation-z{box-shadow:none!important}:host(.bui-panel-horizontal) ::ng-deep .bui-panel-section-container{flex-direction:row}:host(.bui-panel-vertical) ::ng-deep .bui-panel-section-container{flex-direction:column}\n"], dependencies: [{ kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.SizingDirective, selector: "[buiSizing],[buiResized],[buiSizingBy],[buiFixedHeight]", inputs: ["buiSizing", "sizingBy", "buiSizingBy", "buiFixedHeight"], outputs: ["buiResized"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PanelComponent, decorators: [{
128
- type: Component,
129
- args: [{ selector: 'bui-panel', host: {
130
- class: 'bui-panel bui-host',
131
- '[class.bui-panel-vertical]': `_width < breakpoint`,
132
- '[class.bui-panel-horizontal]': `_width >= breakpoint`
133
- }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card\n\t[buiSizingBy]=\"'parent'\"\n\t(buiResized)=\"_resized($event.width)\"\n\t[appearance]=\"appearance === 'flat' ? 'raised' : appearance\"\n\tclass=\"bui-border-{{ color || 'none' }} {{ cardClass }} {{\n\t\tappearance === 'flat' ? 'mat-elevation-z' : appearance === 'outlined' ? 'mat-elevation-z bui-panel-border' : ''\n\t}}\"\n>\n\t<ng-content></ng-content>\n</mat-card>\n", styles: [":host{border-radius:var(--mdc-elevated-card-container-shape, var(--mdc-shape-medium, 4px));position:relative}:host .bui-panel-border{border-width:1px;border-style:solid}:host ::ng-deep .bui-panel-section-container{display:flex;box-sizing:border-box!important}:host(:not([hidden])){display:block}:host(:not([hidden])) .mat-mdc-card{background-color:transparent;padding:16px}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-header,:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-content,:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-actions{padding:0}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-actions{margin-inline-start:-10px}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-footer{margin:0 -16px -16px}:host(:not([hidden])) .mat-mdc-card.mat-elevation-z{box-shadow:none!important}:host(.bui-panel-horizontal) ::ng-deep .bui-panel-section-container{flex-direction:row}:host(.bui-panel-vertical) ::ng-deep .bui-panel-section-container{flex-direction:column}\n"] }]
134
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: TintedDirective, decorators: [{
135
- type: Host
136
- }] }]; }, propDecorators: { backdropClass: [{
137
- type: Input
138
- }], cardClass: [{
139
- type: Input
140
- }], color: [{
141
- type: Input
142
- }], appearance: [{
143
- type: Input
144
- }], breakpoint: [{
145
- type: Input
146
- }] } });
147
-
148
- const CONTAINER_PREFIX = 'bui-panel-section-container';
149
- const COUNT_ATTR = 'bui-section-count';
150
- /**
151
- * `bui-panel-section`s are subdivisions of `bui-panel` that rearrange their orientation based on the width of the container element.
152
- */
153
- class PanelSectionComponent {
154
- constructor(_elementRef) {
155
- this._elementRef = _elementRef;
156
- }
157
- ngOnInit() {
158
- this._parentElement = this._elementRef.nativeElement.parentElement;
159
- this._parentElement.classList.add(CONTAINER_PREFIX);
160
- this._calcCount(1);
161
- }
162
- ngOnDestroy() {
163
- this._calcCount(-1);
164
- }
165
- _calcCount(delta) {
166
- let count = this._parentElement.getAttribute(COUNT_ATTR);
167
- if (count) {
168
- this._parentElement.classList.remove(`${CONTAINER_PREFIX}-${count}`);
169
- }
170
- else {
171
- count = '0';
172
- }
173
- count = `${Math.max(Number(count) + delta, 0)}`;
174
- this._parentElement.setAttribute(COUNT_ATTR, count);
175
- this._parentElement.classList.add(`${CONTAINER_PREFIX}-${count}`);
176
- }
177
- }
178
- PanelSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PanelSectionComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
179
- PanelSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: PanelSectionComponent, selector: "bui-panel-section", host: { classAttribute: "bui-panel-section" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{flex-grow:1}:host-context(.bui-panel-horizontal) :host:not(:first-child){border-inline-start:1px solid rgba(128,128,128,.2);padding-inline-start:16px}:host-context(.bui-panel-horizontal) :host:not(:last-child){padding-inline-end:16px}:host-context(.bui-panel-vertical) :host:not(:first-child){border-top:1px solid rgba(128,128,128,.2);padding-top:16px}:host-context(.bui-panel-vertical) :host:not(:last-child){padding-bottom:16px}:host-context(.bui-panel-horizontal .bui-panel-section-container-2){flex-basis:50%}:host-context(.bui-panel-horizontal .bui-panel-section-container-3){flex-basis:33.3333333333%}:host-context(.bui-panel-horizontal .bui-panel-section-container-4){flex-basis:25%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PanelSectionComponent, decorators: [{
181
- type: Component,
182
- args: [{ selector: 'bui-panel-section', host: {
183
- class: 'bui-panel-section'
184
- }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{flex-grow:1}:host-context(.bui-panel-horizontal) :host:not(:first-child){border-inline-start:1px solid rgba(128,128,128,.2);padding-inline-start:16px}:host-context(.bui-panel-horizontal) :host:not(:last-child){padding-inline-end:16px}:host-context(.bui-panel-vertical) :host:not(:first-child){border-top:1px solid rgba(128,128,128,.2);padding-top:16px}:host-context(.bui-panel-vertical) :host:not(:last-child){padding-bottom:16px}:host-context(.bui-panel-horizontal .bui-panel-section-container-2){flex-basis:50%}:host-context(.bui-panel-horizontal .bui-panel-section-container-3){flex-basis:33.3333333333%}:host-context(.bui-panel-horizontal .bui-panel-section-container-4){flex-basis:25%}\n"] }]
185
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
186
-
187
- class PanelModule {
188
- }
189
- PanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
190
- PanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: PanelModule, declarations: [PanelComponent, PanelSectionComponent, TintedDirective], imports: [CommonModule, MatCardModule, BehaviorModule], exports: [MatCardModule, PanelComponent, PanelSectionComponent, TintedDirective] });
191
- PanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PanelModule, imports: [CommonModule, MatCardModule, BehaviorModule, MatCardModule] });
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PanelModule, decorators: [{
193
- type: NgModule,
194
- args: [{
195
- declarations: [PanelComponent, PanelSectionComponent, TintedDirective],
196
- imports: [CommonModule, MatCardModule, BehaviorModule],
197
- exports: [MatCardModule, PanelComponent, PanelSectionComponent, TintedDirective]
198
- }]
199
- }] });
200
-
201
- /**
202
- * Generated bundle index. Do not edit.
203
- */
204
-
205
- export { PanelComponent, PanelModule, PanelSectionComponent, TintedDirective };
206
- //# sourceMappingURL=bravura-ui-panel.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bravura-ui-panel.mjs","sources":["../../../projects/ui/panel/tinted.directive.ts","../../../projects/ui/panel/panel.component.ts","../../../projects/ui/panel/panel.component.html","../../../projects/ui/panel/panel-section.component.ts","../../../projects/ui/panel/panel-section.component.html","../../../projects/ui/panel/panel.module.ts","../../../projects/ui/panel/bravura-ui-panel.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { generateID } from '@bravura/ui/common';\n\n/**\n * A \"tinted\" element has a shaded background specified by the `ThemePalette`, which\n * is compatible with both light and dark themes.\n */\n@Directive({\n\tselector: '[buiTinted], bui-panel',\n\thost: { class: 'bui-host' },\n\texportAs: 'buiTinted'\n})\nexport class TintedDirective implements OnInit, OnDestroy {\n\t/**\n\t * The base color of the shaded background\n\t * @default 'primary'\n\t */\n\t@Input('buiTinted')\n\tget color(): ThemePalette {\n\t\treturn this._color;\n\t}\n\tset color(c: ThemePalette) {\n\t\tthis._color = c;\n\t\tthis.generateStyle();\n\t}\n\n\tprivate _color: any = 'default';\n\n\tprivate readonly _addedStyle: HTMLStyleElement;\n\tprivate readonly _attr: string;\n\tprivate _element: HTMLElement;\n\n\tconstructor(@Inject(DOCUMENT) private _doc: Document, elemRef: ElementRef<HTMLElement>) {\n\t\tthis._addedStyle = this._doc.createElement('style');\n\t\tthis._attr = 'bui-tinted-' + generateID();\n\t\tthis._element = elemRef.nativeElement;\n\t\telemRef.nativeElement.setAttribute(this._attr, '');\n\t}\n\n\tngOnInit(): void {\n\t\tthis._element.style.position = 'relative';\n\t\tthis.generateStyle();\n\t\tthis._element.appendChild(this._addedStyle);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._element.removeChild(this._addedStyle);\n\t}\n\n\tprivate generateStyle(): void {\n\t\tthis._addedStyle.innerText =\n\t\t\t`[${this._attr}]::after { position: absolute; opacity: 0.1; border-radius: inherit; display: block; content: ''; ` +\n\t\t\t` background-color: var(--bui-color-${this.color}); top: 0; left: 0; ` +\n\t\t\t` bottom: 0; right: 0; pointer-events: none; }`;\n\t}\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Host, Input, OnInit } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { TintedDirective } from './tinted.directive';\n\n/**\n * A `bui-panel` consists of a `mat-card` and a tinted backdrop.\n *\n * Unlike `mat-card`, `bui-panel` has a flat appearance by default and a transparent background.\n * The backdrop is nearly transparent, blending the theme palette `color`\n * and the effective background color of the DOM ancestors.\n *\n * `bui-panel` supports all the content child directives of `mat-card` as well as `bui-panel-section`.\n *\n * `bui-panel-section`s are subdivisions of `bui-panel` that rearrange their orientation based on the width of the container element.\n *\n */\n@Component({\n\tselector: 'bui-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrls: ['./panel.component.scss'],\n\thost: {\n\t\tclass: 'bui-panel bui-host',\n\t\t'[class.bui-panel-vertical]': `_width < breakpoint`,\n\t\t'[class.bui-panel-horizontal]': `_width >= breakpoint`\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PanelComponent implements OnInit {\n\t/**\n\t * Additional style classes on the tinted backdrop element.\n\t * @deprecated\n\t * @ignore\n\t */\n\t@Input()\n\tbackdropClass?: string;\n\n\t/**\n\t * Additional style classes on the `<mat-card>` element.\n\t */\n\t@Input()\n\tcardClass?: string;\n\n\t/**\n\t * This property defines the background (shaded) and border colors of the panel\n\t */\n\t@Input()\n\tget color(): ThemePalette {\n\t\treturn this._color;\n\t}\n\tset color(value: ThemePalette) {\n\t\tthis._color = value;\n\t\tthis._tinted.color = value;\n\t\tthis._cd.markForCheck();\n\t}\n\n\t/**\n\t * In contrast to using a `mat-card` alone, a `bui-panel` does not have a elevated appearance by default.\n\t *\n\t * This property can change the default appearance to\n\t *\n\t * * `raised` - the original `mat-card` default\n\t * * `outline` - a `mat-card` with borders\n\t * * `flat` - no border or elevation\n\t */\n\t@Input()\n\tget appearance(): 'outlined' | 'raised' | 'flat' {\n\t\treturn this._appearance;\n\t}\n\tset appearance(value: 'outlined' | 'raised' | 'flat') {\n\t\tthis._appearance = value;\n\t\tthis._cd.markForCheck();\n\t}\n\n\t/**\n\t * The width of the host element, at which the panel section container will change its orientation.\n\t */\n\t@Input()\n\tbreakpoint = 600;\n\n\t/** @ignore */\n\t_width = 600;\n\n\tprivate _color: ThemePalette = 'primary';\n\n\tprivate _appearance: 'outlined' | 'raised' | 'flat' = 'flat';\n\n\tconstructor(private _cd: ChangeDetectorRef, @Host() private _tinted: TintedDirective) {}\n\n\tngOnInit(): void {}\n\n\t/** @ignore */\n\t_resized(width: number): void {\n\t\tthis._width = width;\n\t\tthis._cd.markForCheck();\n\t}\n}\n","<mat-card\n\t[buiSizingBy]=\"'parent'\"\n\t(buiResized)=\"_resized($event.width)\"\n\t[appearance]=\"appearance === 'flat' ? 'raised' : appearance\"\n\tclass=\"bui-border-{{ color || 'none' }} {{ cardClass }} {{\n\t\tappearance === 'flat' ? 'mat-elevation-z' : appearance === 'outlined' ? 'mat-elevation-z bui-panel-border' : ''\n\t}}\"\n>\n\t<ng-content></ng-content>\n</mat-card>\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit } from '@angular/core';\n\nconst CONTAINER_PREFIX = 'bui-panel-section-container';\n\nconst COUNT_ATTR = 'bui-section-count';\n/**\n * `bui-panel-section`s are subdivisions of `bui-panel` that rearrange their orientation based on the width of the container element.\n */\n@Component({\n\tselector: 'bui-panel-section',\n\ttemplateUrl: './panel-section.component.html',\n\tstyleUrls: ['./panel-section.component.scss'],\n\thost: {\n\t\tclass: 'bui-panel-section'\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PanelSectionComponent implements OnInit, OnDestroy {\n\tprivate _parentElement!: HTMLElement;\n\n\tconstructor(private _elementRef: ElementRef<HTMLElement>) {}\n\n\tngOnInit(): void {\n\t\tthis._parentElement = this._elementRef.nativeElement.parentElement!;\n\t\tthis._parentElement.classList.add(CONTAINER_PREFIX);\n\t\tthis._calcCount(1);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._calcCount(-1);\n\t}\n\n\tprivate _calcCount(delta: number) {\n\t\tlet count = this._parentElement.getAttribute(COUNT_ATTR);\n\t\tif (count) {\n\t\t\tthis._parentElement.classList.remove(`${CONTAINER_PREFIX}-${count}`);\n\t\t} else {\n\t\t\tcount = '0';\n\t\t}\n\t\tcount = `${Math.max(Number(count) + delta, 0)}`;\n\t\tthis._parentElement.setAttribute(COUNT_ATTR, count);\n\t\tthis._parentElement.classList.add(`${CONTAINER_PREFIX}-${count}`);\n\t}\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PanelComponent } from './panel.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { BehaviorModule } from '@bravura/ui/behavior';\nimport { PanelSectionComponent } from './panel-section.component';\nimport { TintedDirective } from './tinted.directive';\n\n@NgModule({\n\tdeclarations: [PanelComponent, PanelSectionComponent, TintedDirective],\n\timports: [CommonModule, MatCardModule, BehaviorModule],\n\texports: [MatCardModule, PanelComponent, PanelSectionComponent, TintedDirective]\n})\nexport class PanelModule {}\n\nexport { PanelComponent, PanelSectionComponent, TintedDirective };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TintedDirective"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bravura-ui-phone-number.mjs","sources":["../../../projects/ui/phone-number/phone-number.pipe.ts","../../../projects/ui/phone-number/phone-number.validator.ts","../../../projects/ui/phone-number/phone-number.directive.ts","../../../projects/ui/phone-number/phone-number.module.ts","../../../projects/ui/phone-number/bravura-ui-phone-number.ts"],"sourcesContent":["import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\ndeclare const intlTelInputUtils: any;\n\n/**\n * @internal\n */\n@Pipe({\n\tname: 'buiPhone',\n\tpure: true\n})\nexport class PhoneNumberPipe implements PipeTransform {\n\tconstructor(@Inject(LOCALE_ID) private _locale: string) {}\n\n\ttransform(value: any, mode?: string, renderLink?: boolean): string {\n\t\tif (!value) {\n\t\t\treturn value;\n\t\t}\n\n\t\tconst countryCode = getCountryCodeFromLocale(this._locale);\n\n\t\tlet format: number;\n\t\tswitch (mode) {\n\t\t\tcase 'NATIONAL':\n\t\t\t\tformat = intlTelInputUtils.numberFormat.NATIONAL;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tformat = intlTelInputUtils.numberFormat.INTERNATIONAL;\n\t\t}\n\t\tconst result = intlTelInputUtils.formatNumber(value, countryCode, format);\n\t\tif (renderLink) {\n\t\t\treturn `<a href=\"tel:${result}\">${result}</a>`;\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n}\n\nexport function getCountryCodeFromLocale(locale: string): string {\n\treturn locale.replace(/.+[-_]([a-z][a-z])$/i, '$1');\n}\n","import { Directive, ElementRef, Input, StaticProvider, forwardRef } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\n\n/**\n * @internal\n */\nexport const SELECTOR =\n\t'[buiTelInput], input([type=tel])[ngModel], input([type=tel])[formControlName], input([type=tel])[formControl]';\n\n/**\n * @internal\n */\nexport const PHONE_VALIDATOR: StaticProvider = {\n\tprovide: NG_VALIDATORS,\n\tuseExisting: forwardRef(() => PhoneNumberValidator),\n\tmulti: true\n};\n\n/**\n * @internal\n */\nexport type TEL_TYPE = 'MOBILE' | 'FIXED_LINE_OR_MOBILE' | 'FIXED_LINE';\n\n/**\n * @internal\n */\ndeclare const intlTelInputUtils: any;\n\n/**\n * @internal\n */\n@Directive({\n\tselector: SELECTOR,\n\tproviders: [PHONE_VALIDATOR]\n})\nexport class PhoneNumberValidator implements Validator {\n\t@Input()\n\ttelType: TEL_TYPE = 'FIXED_LINE';\n\n\tstatic validateControl(inp: HTMLInputElement, type: TEL_TYPE, update: boolean): { [key: string]: any } | null {\n\t\tconst err = { tel: true };\n\t\tif (!inp.value) {\n\t\t\treturn null;\n\t\t}\n\t\tconst iti = (inp as any).$$iti;\n\t\tif (!iti) {\n\t\t\treturn null;\n\t\t}\n\t\tif (iti.isValidNumber()) {\n\t\t\tconst n = iti.getNumber(intlTelInputUtils.numberFormat.INTERNATIONAL);\n\t\t\tif (update) {\n\t\t\t\tinp.value = n;\n\t\t\t}\n\n\t\t\tconst t = iti.getNumberType();\n\t\t\tif (t !== intlTelInputUtils.numberType.FIXED_LINE_OR_MOBILE) {\n\t\t\t\tif (\n\t\t\t\t\t(type === 'MOBILE' && t !== intlTelInputUtils.numberType.MOBILE) ||\n\t\t\t\t\t(type === 'FIXED_LINE' && t !== intlTelInputUtils.numberType.FIXED_LINE)\n\t\t\t\t) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\treturn err;\n\t}\n\n\tconstructor(private _el: ElementRef<HTMLInputElement>) {}\n\n\tvalidate(_: AbstractControl): { [key: string]: any } | null {\n\t\treturn PhoneNumberValidator.validateControl(this._el.nativeElement, this.telType, false);\n\t}\n}\n","import {\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHostListener,\n\tInject,\n\tInput,\n\tLOCALE_ID,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOptional,\n\tOutput,\n\tSimpleChanges\n} from '@angular/core';\nimport { UntypedFormControl, FormControlDirective, FormControlName, NgModel } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport intlTelInput from 'intl-tel-input';\nimport { of } from 'rxjs';\nimport { debounceTime, take } from 'rxjs/operators';\n\nimport { getCountryCodeFromLocale } from './phone-number.pipe';\nimport { PhoneNumberValidator, SELECTOR, TEL_TYPE } from './phone-number.validator';\n\n/**\n * @ignore\n */\ndeclare const intlTelInputUtils: any;\n\n/**\n * Add phone number validation support by specifying the `type` attribute as `tel` in an `<input>` element.\n *\n * To use this feature, please install a peer dependency `intl-tel-input` in your project and add the following\n * to your application polyfills:\n *\n * ```javascript\n * import 'intl-tel-input/build/js/utils.js';\n * ```\n *\n * You will also need to add the following statements to one of your global SCSS files:\n *\n * ```scss\n * $flagsImagePath: '~intl-tel-input/build/img/' !default;\n * @import '~intl-tel-input/src/css/intlTelInput';\n * ```\n */\n@Directive({\n\tselector: SELECTOR\n})\nexport class PhoneNumberDirective implements OnInit, OnChanges, OnDestroy {\n\t/**\n\t * @ignore\n\t */\n\tstatic POST_RENDER_INIT_DELAY = 20;\n\n\t/**\n\t * @ignore\n\t */\n\tstatic BYPASS_SHADOW_DETECTION = false;\n\n\t/**\n\t * The type of phone number to validate for\n\t */\n\t@Input()\n\ttelType: TEL_TYPE = 'FIXED_LINE';\n\n\t/**\n\t * Disable country dropdown by setting this property to `false`.\n\t */\n\t@Input()\n\ttelDropdown = true;\n\n\t/**\n\t * This event is triggered when a new country is selected from the dropdown. The event detail is the ISO country code.\n\t */\n\t@Output()\n\ttelCountryChange = new EventEmitter<string>();\n\n\tprivate _control: UntypedFormControl | undefined;\n\tprivate _reactive = false;\n\tprivate _countryChangeListener: () => void = () => null;\n\tprivate _input: HTMLInputElement | undefined;\n\tprivate _iti: any;\n\n\tconstructor(\n\t\tprivate _el: ElementRef<HTMLInputElement>,\n\t\t@Optional() private _ngModel: NgModel,\n\t\t@Optional() private _formControlName: FormControlName,\n\t\t@Optional() private _formControlDirective: FormControlDirective,\n\t\t@Inject(LOCALE_ID) private _locale: string,\n\t\tprivate _zone: NgZone,\n\t\t@Optional() private _matField: MatFormField\n\t) {}\n\n\t/** @internal */\n\t@HostListener('input')\n\tonInput() {\n\t\tconst err = PhoneNumberValidator.validateControl(this._input!, this.telType, true);\n\t\tthis._control!.patchValue(this._input!.value, { emitEvent: false });\n\n\t\tif (this._reactive && err) {\n\t\t\tthis._control!.setErrors({ ...this._control!.errors, ...err });\n\t\t}\n\t}\n\n\tngOnInit() {\n\t\tconst ctrDirective = this._ngModel || this._formControlName || this._formControlDirective;\n\t\tthis._control = ctrDirective.control as UntypedFormControl;\n\t\tthis._reactive = this._ngModel ? false : true;\n\t\tthis._input = this._el.nativeElement;\n\n\t\tthis._countryChangeListener = (() => {\n\t\t\tthis._zone.run(() => {\n\t\t\t\tthis._control!.markAsDirty();\n\t\t\t\tthis._control!.updateValueAndValidity({ emitEvent: true });\n\t\t\t\tthis.telCountryChange.emit(this._iti.getSelectedCountryData().iso2);\n\t\t\t});\n\t\t}).bind(this);\n\n\t\t(PhoneNumberDirective.BYPASS_SHADOW_DETECTION ? of(0 as any) : this._zone.onStable)\n\t\t\t.pipe(debounceTime(10), take(1))\n\t\t\t.subscribe(() => this.initElement());\n\t}\n\n\tngOnDestroy() {\n\t\tthis._input!.removeEventListener('countrychange', this._countryChangeListener);\n\t\tthis._iti?.destroy();\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tconst td = changes.telDropdown;\n\t\tif (td && !td.firstChange) {\n\t\t\tthis.ngOnDestroy();\n\t\t\tthis.ngOnInit();\n\t\t}\n\t\tconst type = changes.telType;\n\t\tif (type && !type.firstChange) {\n\t\t\tthis.onInput();\n\t\t}\n\t}\n\n\tprivate initElement() {\n\t\tconst countryCode = getCountryCodeFromLocale(this._locale).toLowerCase();\n\n\t\tconst root: ShadowRoot | Document = this._input!.getRootNode() as ShadowRoot | Document;\n\t\tif (!root.querySelector('#bui-tel-input-style')) {\n\t\t\tconst styleTag = document.createElement('style');\n\t\t\tstyleTag.id = 'bui-tel-input-style';\n\t\t\tstyleTag.innerText =\n\t\t\t\t'.mat-mdc-form-field .bui-tel-input-placeholder:not(.mdc-floating-label--float-above){margin-left:44px;}' +\n\t\t\t\t'.iti--allow-dropdown{margin-left:-8px}' +\n\t\t\t\t'.bui-tel-input-with-value:disabled{cursor:pointer;}';\n\t\t\t(root instanceof Document ? (root.querySelector('head') as any) : root).appendChild(styleTag);\n\t\t}\n\t\tthis._iti = intlTelInput(this._input!, {\n\t\t\tinitialCountry: countryCode,\n\t\t\tplaceholderNumberType: this.telType,\n\t\t\tpreferredCountries: [countryCode, ...['au', 'ca', 'nz', 'us', 'gb'].filter(c => c !== countryCode)],\n\t\t\tdropdownContainer: root instanceof ShadowRoot ? root.querySelector('overlay-root') || root : (root.body as any),\n\t\t\tautoPlaceholder: 'off',\n\t\t\tallowDropdown: this.telDropdown\n\t\t});\n\n\t\t(this._input as any).$$iti = this._iti;\n\t\tthis._input!.addEventListener('countrychange', this._countryChangeListener);\n\t\tconst frameTime = Date.now();\n\t\tconst postRenderWork = () => {\n\t\t\tif (frameTime + PhoneNumberDirective.POST_RENDER_INIT_DELAY > Date.now()) {\n\t\t\t\twindow.requestAnimationFrame(postRenderWork);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet label: HTMLLabelElement | undefined;\n\t\t\tif (this._matField?.getLabelId() && typeof root.getElementById === 'function') {\n\t\t\t\tlabel = root.getElementById(this._matField.getLabelId()!) as HTMLLabelElement;\n\t\t\t\tlabel?.classList.remove('bui-tel-input-placeholder');\n\t\t\t}\n\t\t\tif (label && this.telDropdown) {\n\t\t\t\tlabel.classList.add('bui-tel-input-placeholder');\n\t\t\t}\n\n\t\t\tif (this._input?.value) {\n\t\t\t\tthis._input.classList.add('bui-tel-input-with-value');\n\t\t\t}\n\t\t};\n\t\twindow.requestAnimationFrame(postRenderWork);\n\n\t\tthis._input!.addEventListener('click', () => {\n\t\t\tif (this._control?.disabled && this._control.value) {\n\t\t\t\twindow.location.href = 'tel://' + this._control.value;\n\t\t\t}\n\t\t});\n\n\t\tthis._control?.registerOnDisabledChange(isDisabled => this._patchValueByState(isDisabled));\n\t\tthis._patchValueByState(this._control!.disabled);\n\t}\n\n\tprivate _patchValueByState(isDisabled: boolean) {\n\t\tsetTimeout(() => {\n\t\t\tif (!isDisabled) {\n\t\t\t\tthis.onInput();\n\t\t\t} else {\n\t\t\t\tconst v = this._iti.getNumber(intlTelInputUtils.numberFormat.NATIONAL);\n\t\t\t\tthis._input!.value = v;\n\t\t\t\tthis._control?.patchValue(this._input?.value, { emitEvent: false });\n\t\t\t}\n\t\t}, 20);\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PhoneNumberDirective } from './phone-number.directive';\nimport { PhoneNumberPipe } from './phone-number.pipe';\nimport { PhoneNumberValidator } from './phone-number.validator';\n\n/**\n * @internal\n */\n@NgModule({\n\tdeclarations: [PhoneNumberPipe, PhoneNumberDirective, PhoneNumberValidator],\n\timports: [CommonModule],\n\texports: [PhoneNumberDirective, PhoneNumberPipe, PhoneNumberValidator]\n})\nexport class PhoneModule {}\n\nexport { PhoneNumberDirective, PhoneNumberPipe, PhoneNumberValidator };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bravura-ui-radio-panel-testing.mjs","sources":["../../../projects/ui/radio-panel/testing/test-api.ts","../../../projects/ui/radio-panel/testing/bravura-ui-radio-panel-testing.ts"],"sourcesContent":["import { ComponentHarnessConstructor, HarnessPredicate } from '@angular/cdk/testing';\nimport {\n\tMatRadioButtonHarness,\n\tRadioButtonHarnessFilters,\n\t_MatRadioGroupHarnessBase\n} from '@angular/material/radio/testing';\n\nexport interface RadioPanelItemHarnessFilters extends RadioButtonHarnessFilters {\n\tvalue?: string | RegExp;\n}\n\nexport class RadioPanelItemHarness extends MatRadioButtonHarness {\n\tstatic hostSelector = 'bui-radio-panel-item';\n\tgetLabelElement = this.locatorFor('label');\n\n\tprotected _textLabel = this.locatorFor('label .bui-label-title');\n\tprotected _clickLabel = this.getLabelElement;\n\n\t/**\n\t * Gets a `HarnessPredicate` that can be used to search for a radio button with specific\n\t * attributes.\n\t * @param options Options for filtering which radio button instances are considered a match.\n\t * @return a `HarnessPredicate` configured with the given options.\n\t */\n\tstatic with<T extends MatRadioButtonHarness>(\n\t\tthis: ComponentHarnessConstructor<T>,\n\t\toptions: RadioPanelItemHarnessFilters = {}\n\t): HarnessPredicate<T> {\n\t\treturn MatRadioButtonHarness.with\n\t\t\t.bind(this)(options)\n\t\t\t.addOption('value', options.value, (harness, value) =>\n\t\t\t\tHarnessPredicate.stringMatches(harness.getValue(), value)\n\t\t\t) as HarnessPredicate<T>;\n\t}\n\n\tasync click() {\n\t\tconst element = await this.getLabelElement();\n\t\telement.click();\n\t}\n\n\tasync getLabelCssValue(prop: string): Promise<string> {\n\t\tconst element = await this.getLabelElement();\n\t\treturn element.getCssValue(prop);\n\t}\n\n\tasync getBorderColor(): Promise<string> {\n\t\tconst label = await this.getLabelElement();\n\t\treturn label.getCssValue('border-color');\n\t}\n}\n\nexport class RadioPanelHarness extends _MatRadioGroupHarnessBase<\n\ttypeof RadioPanelItemHarness,\n\tRadioPanelItemHarness,\n\tRadioButtonHarnessFilters\n> {\n\t/** The selector for the host element of a `MatRadioGroup` instance. */\n\tstatic hostSelector = 'bui-radio-panel';\n\n\tprotected _buttonClass = RadioPanelItemHarness;\n\n\tgetItem = (filters: RadioPanelItemHarnessFilters) => this.locatorFor(RadioPanelItemHarness.with(filters))();\n\n\tasync getFlexDir(): Promise<string> {\n\t\treturn (await this.host()).getCssValue('flex-direction');\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './test-api';\n"],"names":[],"mappings":";;;AAWM,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AAAhE,IAAA,WAAA,GAAA;;AAEC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAEjC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC;KAiC7C;AA/BA;;;;;AAKG;AACH,IAAA,OAAO,IAAI,CAEV,OAAA,GAAwC,EAAE,EAAA;QAE1C,OAAO,qBAAqB,CAAC,IAAI;AAC/B,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;aACnB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,KACjD,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAClC,CAAC;KAC1B;AAED,IAAA,MAAM,KAAK,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,EAAE,CAAC;KAChB;IAED,MAAM,gBAAgB,CAAC,IAAY,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7C,QAAA,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACjC;AAED,IAAA,MAAM,cAAc,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3C,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;KACzC;;AApCM,qBAAY,CAAA,YAAA,GAAG,sBAAsB,CAAC;AAuCxC,MAAO,iBAAkB,SAAQ,yBAItC,CAAA;AAJD,IAAA,WAAA,GAAA;;QAQW,IAAY,CAAA,YAAA,GAAG,qBAAqB,CAAC;AAE/C,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,OAAqC,KAAK,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;KAK5G;AAHA,IAAA,MAAM,UAAU,GAAA;AACf,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;KACzD;;AATD;AACO,iBAAY,CAAA,YAAA,GAAG,iBAAiB;;ACzDxC;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bravura-ui-radio-panel.mjs","sources":["../../../projects/ui/radio-panel/radio-panel-item.component.ts","../../../projects/ui/radio-panel/radio-panel-item.component.html","../../../projects/ui/radio-panel/radio-panel.component.ts","../../../projects/ui/radio-panel/radio-panel.module.ts","../../../projects/ui/radio-panel/bravura-ui-radio-panel.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport {\n\tAttribute,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChild,\n\tElementRef,\n\tHostBinding,\n\tInject,\n\tInput,\n\tOptional,\n\tTemplateRef\n} from '@angular/core';\nimport {\n\tMatRadioButton,\n\tMatRadioDefaultOptions,\n\tMatRadioGroup,\n\tMAT_RADIO_DEFAULT_OPTIONS,\n\tMAT_RADIO_GROUP\n} from '@angular/material/radio';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * Use `bui-radio-panel-item` instead of `mat-radio-button` in a `bui-radio-panel` to display an option.\n */\n@Component({\n\tselector: 'bui-radio-panel-item',\n\ttemplateUrl: './radio-panel-item.component.html',\n\tstyleUrls: ['./radio-panel-item.component.scss'],\n\t// tslint:disable-next-line: no-inputs-metadata-property\n\tinputs: ['disableRipple', 'tabIndex'],\n\texportAs: 'matRadioButton',\n\t// tslint:disable-next-line: no-host-metadata-property\n\thost: {\n\t\tclass: 'bui-radio-panel-item',\n\t\t'[class.bui-radio-checked]': 'checked',\n\t\t'[class.bui-disabled]': 'disabled',\n\t\t'[class._mat-animation-noopable]': '_noopAnimations',\n\t\t'[class.mat-primary]': 'color === \"primary\"',\n\t\t'[class.mat-accent]': 'color === \"accent\"',\n\t\t'[class.mat-warn]': 'color === \"warn\"',\n\t\t// Needs to be removed since it causes some a11y issues (see #21266).\n\t\t'[attr.tabindex]': 'null',\n\t\t'[attr.id]': 'id',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t// Note: under normal conditions focus shouldn't land on this element, however it may be\n\t\t// programmatically set, for example inside of a focus trap, in this case we want to forward\n\t\t// the focus to the native element.\n\t\t'(focus)': '_inputElement.nativeElement.focus()'\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tanimations: [\n\t\ttrigger('slideInOut', [\n\t\t\tstate('void', style({ height: '0px', overflow: 'hidden' })),\n\t\t\ttransition(':enter, :leave', animate('.25s'))\n\t\t])\n\t]\n})\nexport class RadioPanelItemComponent extends MatRadioButton {\n\t/**\n\t * This will be displayed as the panel header\n\t */\n\t@Input()\n\ttitle = '';\n\n\t/** The default position of the 'tick' icon relative to the title. */\n\t@Input() private _tickPosition: 'start' | 'end' | undefined;\n\n\t@Input()\n\tget tickPosition(): 'start' | 'end' {\n\t\treturn this._tickPosition || (this.radioGroup as any)?.tickPosition;\n\t}\n\tset tickPosition(pos: 'start' | 'end') {\n\t\tthis._tickPosition = pos;\n\t}\n\n\t@ContentChild('contentOnSelect')\n\t//@ts-ignore\n\tcontentOnSelect: TemplateRef<any>;\n\n\tconstructor(\n\t\t@Optional() @Inject(MAT_RADIO_GROUP) radioGroup: MatRadioGroup,\n\t\telementRef: ElementRef,\n\t\t_changeDetector: ChangeDetectorRef,\n\t\t_focusMonitor: FocusMonitor,\n\t\t_radioDispatcher: UniqueSelectionDispatcher,\n\t\t@Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string,\n\t\t@Optional()\n\t\t@Inject(MAT_RADIO_DEFAULT_OPTIONS)\n\t\t_providerOverride?: MatRadioDefaultOptions,\n\t\t@Attribute('tabindex') tabIndex?: string\n\t) {\n\t\tsuper(\n\t\t\tradioGroup,\n\t\t\telementRef,\n\t\t\t_changeDetector,\n\t\t\t_focusMonitor,\n\t\t\t_radioDispatcher,\n\t\t\tanimationMode,\n\t\t\t_providerOverride,\n\t\t\ttabIndex\n\t\t);\n\t}\n}\n","<label\n\tmatRipple\n\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t[matRippleDisabled]=\"disabled || checked\"\n\t[attr.for]=\"inputId\"\n\t#label\n\tclass=\"bui-radio-panel-item-label bui-border-{{ checked ? color : 'default' }}\"\n>\n\t<div class=\"bui-radio-panel-item-wrapper\" [class.bui-radio-tick-at-end]=\"tickPosition === 'end'\">\n\t\t<div class=\"bui-label-header\">\n\t\t\t<span class=\"bui-label-title\" [innerHTML]=\"title\"></span>\n\t\t\t<ng-content select=\"[buiRadioItemHeadingEnd]\"></ng-content>\n\t\t\t<span class=\"bui-radio-panel-item-circle\">\n\t\t\t\t<span\n\t\t\t\t\tclass=\"bui-persistent-ripple\"\n\t\t\t\t\tmatRipple\n\t\t\t\t\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t\t\t\t\t[matRippleCentered]=\"true\"\n\t\t\t\t\t[matRippleUnbounded]=\"true\"\n\t\t\t\t\t[matRippleTrigger]=\"label\"\n\t\t\t\t\t[matRippleRadius]=\"20\"\n\t\t\t\t\t*ngIf=\"!disabled\"\n\t\t\t\t></span>\n\t\t\t\t<mat-icon [color]=\"color\" *ngIf=\"checked\">check_circle</mat-icon>\n\t\t\t\t<mat-icon *ngIf=\"!checked\" class=\"bui-radio-panel-item-circle-unchecked\">radio_button_unchecked</mat-icon>\n\t\t\t</span>\n\t\t</div>\n\t\t<!-- The actual 'radio' part of the control. -->\n\t\t<span class=\"radio-container\">\n\t\t\t<input\n\t\t\t\t#input\n\t\t\t\tclass=\"mat-radio-input cdk-visually-hidden\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\t[id]=\"inputId\"\n\t\t\t\t[checked]=\"checked\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[tabIndex]=\"tabIndex\"\n\t\t\t\t[attr.name]=\"name\"\n\t\t\t\t[attr.value]=\"value\"\n\t\t\t\t[required]=\"required\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\"\n\t\t\t\t[attr.aria-describedby]=\"ariaDescribedby\"\n\t\t\t\t(change)=\"_onInputInteraction($event)\"\n\t\t\t\t(click)=\"_onInputClick($event)\"\n\t\t\t/>\n\t\t</span>\n\n\t\t<div class=\"bui-label-content-gap\"></div>\n\t\t<!-- The label content for radio control. -->\n\t\t<div class=\"bui-label-content\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t<div class=\"bui-label-content\" *ngIf=\"contentOnSelect && checked\" @slideInOut>\n\t\t\t<ng-container *ngTemplateOutlet=\"contentOnSelect\"></ng-container>\n\t\t</div>\n\t</div>\n</label>\n","import {\n\tChangeDetectorRef,\n\tComponent,\n\tContentChildren,\n\tforwardRef,\n\tHostBinding,\n\tInput,\n\tOnChanges,\n\tQueryList,\n\tSimpleChanges\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MAT_RADIO_GROUP, MatRadioGroup } from '@angular/material/radio';\nimport { RadioPanelItemComponent } from './radio-panel-item.component';\n/**\n * Radio panel is a [control value accessor](https://angular.io/api/forms/ControlValueAccessor)\n * that extends Angular Material's [radio group component](https://material.angular.io/components/radio/overview).\n * It inherits all the features of `MatRadioGroup`, and arranges the child items in panels,\n * with the `title` attributes rendered as captions. The check box icon and the borders will be displayed\n * in the color selected by the theme attribute `color`.\n *\n */\n@Component({\n\t// tslint:disable-next-line: directive-selector\n\tselector: 'bui-radio-panel',\n\texportAs: 'buiRadioPanel',\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => RadioPanelComponent),\n\t\t\tmulti: true\n\t\t},\n\t\t{ provide: MAT_RADIO_GROUP, useExisting: forwardRef(() => RadioPanelComponent) }\n\t],\n\t// tslint:disable-next-line: no-host-metadata-property\n\thost: {\n\t\trole: 'radiogroup',\n\t\tclass: 'bui-radio-panel bui-host',\n\t\t'[style.--bui-panel-width]': \"panelWidth +'px'\"\n\t},\n\ttemplate: ` <ng-content></ng-content> `,\n\tstyleUrls: ['radio-panel.component.scss']\n})\nexport class RadioPanelComponent extends MatRadioGroup implements OnChanges {\n\t/**\n\t * @ignore\n\t */\n\t@HostBinding('attr.class')\n\tclassAttr: string = '';\n\n\t/**\n\t * The default width of each panel when the `direction` is `row`\n\t */\n\t@Input()\n\tpanelWidth = 300;\n\n\t/** The flow direction of the radio panel items */\n\t@Input()\n\tdirection: 'row' | 'column' = 'row';\n\n\t/** Theme color for all of the radio panels in the group. */\n\t@Input() color: ThemePalette;\n\n\t/** The default position of the 'tick' icon relative to the title. */\n\t@Input() tickPosition: 'start' | 'end' = 'start';\n\n\t/**\n\t * @ignore\n\t */\n\t@ContentChildren(RadioPanelItemComponent, { descendants: true })\n\t_radios!: QueryList<RadioPanelItemComponent>;\n\n\tconstructor(cd: ChangeDetectorRef) {\n\t\tsuper(cd);\n\t}\n\n\t/** @ignore */\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (['color', 'tickPosition'].some(p => changes[p]) && this._radios) {\n\t\t\tthis._radios.forEach(item => item._markForCheck());\n\t\t}\n\n\t\tif (this.direction === 'row') {\n\t\t\tthis.classAttr = 'bui-radio-panel bui-host radio-dir-row';\n\t\t} else {\n\t\t\tthis.classAttr = 'bui-radio-panel bui-host radio-dir-column';\n\t\t}\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { RadioPanelItemComponent } from './radio-panel-item.component';\nimport { RadioPanelComponent } from './radio-panel.component';\n\n/**\n * Import this NgModule for the radio panel component\n */\n@NgModule({\n\tdeclarations: [RadioPanelItemComponent, RadioPanelComponent],\n\timports: [CommonModule, MatRadioModule, MatRippleModule, MatIconModule],\n\texports: [RadioPanelItemComponent, RadioPanelComponent]\n})\nexport class RadioPanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}