@pepperi-addons/ngx-lib 0.4.2-storybook.1 → 0.5.0-ng15.1

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 (520) hide show
  1. package/address/address.component.d.ts +1 -1
  2. package/attachment/attachment.component.d.ts +2 -1
  3. package/bread-crumbs/bread-crumbs.component.d.ts +1 -1
  4. package/bread-crumbs/bread-crumbs.model.d.ts +1 -1
  5. package/button/button.component.d.ts +1 -1
  6. package/carousel/carousel-item.directive.d.ts +1 -1
  7. package/carousel/carousel.component.d.ts +1 -1
  8. package/checkbox/checkbox.component.d.ts +2 -1
  9. package/chips/chips.component.d.ts +4 -5
  10. package/chips/chips.component.theme.scss +15 -5
  11. package/chips/chips.model.d.ts +2 -2
  12. package/chips/chips.service.d.ts +0 -3
  13. package/color/color-picker.component.d.ts +1 -1
  14. package/color/color-picker.component.theme.scss +2 -1
  15. package/color/color.component.d.ts +1 -1
  16. package/color/color.model.d.ts +1 -1
  17. package/core/clipboard/clipboard.directive.d.ts +1 -1
  18. package/core/common/directives/auto-width.directive.d.ts +1 -1
  19. package/core/common/directives/base-destroyer.directive.d.ts +10 -0
  20. package/core/common/directives/button-blur.directive.d.ts +1 -1
  21. package/core/common/directives/button-loader.directive.d.ts +1 -1
  22. package/core/common/directives/data-qa.directive.d.ts +1 -1
  23. package/core/common/directives/div-loader.directive.d.ts +1 -1
  24. package/core/common/directives/menu-blur.directive.d.ts +1 -1
  25. package/core/common/directives/prevent-multi-click.directive.d.ts +1 -1
  26. package/core/common/directives/print.directive.d.ts +1 -1
  27. package/core/common/directives/public-api.d.ts +1 -0
  28. package/core/common/pipes/common-pipes.d.ts +5 -2
  29. package/core/common/services/addon.service.d.ts +6 -4
  30. package/core/common/services/file.service.d.ts +1 -1
  31. package/core/common/services/utilities.service.d.ts +4 -4
  32. package/core/customization/customization.model.d.ts +15 -12
  33. package/core/customization/customization.service.d.ts +4 -0
  34. package/core/layout/layout.service.d.ts +1 -1
  35. package/core/layout/rtl.directive.d.ts +2 -2
  36. package/core/portal/attach.directive.d.ts +1 -1
  37. package/core/portal/target.directive.d.ts +1 -1
  38. package/date/date.component.d.ts +4 -2
  39. package/dialog/default-dialog.component.d.ts +1 -1
  40. package/dialog/dialog.component.d.ts +1 -1
  41. package/dialog/dialog.model.d.ts +2 -2
  42. package/draggable-items/draggable-item/draggable-item.component.d.ts +16 -2
  43. package/draggable-items/draggable-items.component.d.ts +4 -7
  44. package/draggable-items/draggable-items.model.d.ts +2 -2
  45. package/draggable-items/draggable-items.module.d.ts +4 -3
  46. package/esm2020/address/address.component.mjs +16 -16
  47. package/esm2020/address/address.module.mjs +5 -5
  48. package/esm2020/attachment/attachment.component.mjs +58 -49
  49. package/esm2020/attachment/attachment.module.mjs +5 -5
  50. package/esm2020/bread-crumbs/bread-crumbs.component.mjs +15 -15
  51. package/esm2020/bread-crumbs/bread-crumbs.module.mjs +5 -5
  52. package/esm2020/button/button.component.mjs +23 -23
  53. package/esm2020/button/button.module.mjs +5 -5
  54. package/esm2020/carousel/carousel-item.directive.mjs +9 -9
  55. package/esm2020/carousel/carousel.component.mjs +52 -52
  56. package/esm2020/carousel/carousel.module.mjs +5 -5
  57. package/esm2020/checkbox/checkbox.component.mjs +40 -31
  58. package/esm2020/checkbox/checkbox.module.mjs +5 -5
  59. package/esm2020/chips/chips.component.mjs +26 -28
  60. package/esm2020/chips/chips.module.mjs +5 -5
  61. package/esm2020/chips/chips.service.mjs +5 -14
  62. package/esm2020/color/color-picker.component.mjs +5 -5
  63. package/esm2020/color/color.component.mjs +5 -5
  64. package/esm2020/color/color.module.mjs +5 -5
  65. package/esm2020/core/clipboard/clipboard.directive.mjs +4 -4
  66. package/esm2020/core/clipboard/clipboard.service.mjs +4 -4
  67. package/esm2020/core/common/directives/auto-width.directive.mjs +4 -4
  68. package/esm2020/core/common/directives/base-destroyer.directive.mjs +22 -0
  69. package/esm2020/core/common/directives/button-blur.directive.mjs +4 -4
  70. package/esm2020/core/common/directives/button-loader.directive.mjs +10 -10
  71. package/esm2020/core/common/directives/data-qa.directive.mjs +4 -4
  72. package/esm2020/core/common/directives/div-loader.directive.mjs +4 -4
  73. package/esm2020/core/common/directives/menu-blur.directive.mjs +4 -4
  74. package/esm2020/core/common/directives/prevent-multi-click.directive.mjs +4 -4
  75. package/esm2020/core/common/directives/print.directive.mjs +4 -4
  76. package/esm2020/core/common/directives/public-api.mjs +2 -1
  77. package/esm2020/core/common/pipes/common-pipes.mjs +47 -37
  78. package/esm2020/core/common/pipes/date-ago.pipe.mjs +4 -4
  79. package/esm2020/core/common/services/addon.service.mjs +36 -12
  80. package/esm2020/core/common/services/color.service.mjs +4 -4
  81. package/esm2020/core/common/services/cookie.service.mjs +4 -4
  82. package/esm2020/core/common/services/data-convertor.service.mjs +6 -6
  83. package/esm2020/core/common/services/file.service.mjs +4 -4
  84. package/esm2020/core/common/services/jwt-helper.service.mjs +4 -4
  85. package/esm2020/core/common/services/session.service.mjs +4 -4
  86. package/esm2020/core/common/services/translate.service.mjs +4 -4
  87. package/esm2020/core/common/services/utilities.service.mjs +10 -10
  88. package/esm2020/core/common/services/validator.service.mjs +4 -4
  89. package/esm2020/core/common/services/window-scrolling.service.mjs +4 -4
  90. package/esm2020/core/customization/customization.model.mjs +40 -5
  91. package/esm2020/core/customization/customization.service.mjs +23 -4
  92. package/esm2020/core/http/interceptors/error.interceptor.mjs +4 -4
  93. package/esm2020/core/http/interceptors/loader.interceptor.mjs +4 -4
  94. package/esm2020/core/http/interceptors/profiler.interceptor.mjs +4 -4
  95. package/esm2020/core/http/services/http.service.mjs +4 -4
  96. package/esm2020/core/http/services/loader.service.mjs +10 -10
  97. package/esm2020/core/layout/layout.service.mjs +12 -12
  98. package/esm2020/core/layout/rtl.directive.mjs +7 -7
  99. package/esm2020/core/portal/attach.directive.mjs +4 -4
  100. package/esm2020/core/portal/portal.service.mjs +4 -4
  101. package/esm2020/core/portal/target.directive.mjs +4 -4
  102. package/esm2020/core/scroll-to/scroll-to.service.mjs +4 -4
  103. package/esm2020/date/date.component.mjs +81 -59
  104. package/esm2020/date/date.model.mjs +7 -7
  105. package/esm2020/date/date.module.mjs +5 -5
  106. package/esm2020/dialog/default-dialog.component.mjs +4 -4
  107. package/esm2020/dialog/dialog.component.mjs +4 -4
  108. package/esm2020/dialog/dialog.module.mjs +5 -5
  109. package/esm2020/dialog/dialog.service.mjs +4 -4
  110. package/esm2020/draggable-items/draggable-item/draggable-item.component.mjs +46 -6
  111. package/esm2020/draggable-items/draggable-items.component.mjs +21 -29
  112. package/esm2020/draggable-items/draggable-items.module.mjs +9 -5
  113. package/esm2020/field-title/field-title.component.mjs +8 -5
  114. package/esm2020/field-title/field-title.module.mjs +5 -5
  115. package/esm2020/files-uploader/files-uploader.component.mjs +12 -12
  116. package/esm2020/files-uploader/files-uploader.module.mjs +5 -5
  117. package/esm2020/form/field-generator.component.mjs +5 -5
  118. package/esm2020/form/form.component.mjs +30 -28
  119. package/esm2020/form/form.module.mjs +5 -5
  120. package/esm2020/form/indicators.component.mjs +4 -4
  121. package/esm2020/form/internal-button.component.mjs +17 -17
  122. package/esm2020/form/internal-carusel.component.mjs +24 -20
  123. package/esm2020/form/internal-carusel.service.mjs +4 -4
  124. package/esm2020/form/internal-field-generator.component.mjs +5 -5
  125. package/esm2020/form/internal-form.component.mjs +30 -28
  126. package/esm2020/form/internal-list.component.mjs +7 -7
  127. package/esm2020/form/internal-menu.component.mjs +6 -8
  128. package/esm2020/form/internal-page.component.mjs +4 -4
  129. package/esm2020/form/internal-page.service.mjs +4 -4
  130. package/esm2020/group-buttons/group-buttons.component.mjs +5 -5
  131. package/esm2020/group-buttons/group-buttons.module.mjs +5 -5
  132. package/esm2020/icon/icon-registry.service.mjs +4 -4
  133. package/esm2020/icon/icon.component.mjs +11 -11
  134. package/esm2020/icon/icon.module.mjs +5 -5
  135. package/esm2020/icon/icon.service.mjs +4 -4
  136. package/esm2020/image/image.component.mjs +52 -43
  137. package/esm2020/image/image.module.mjs +5 -5
  138. package/esm2020/image/image.service.mjs +4 -4
  139. package/esm2020/images-filmstrip/images-filmstrip.component.mjs +26 -25
  140. package/esm2020/images-filmstrip/images-filmstrip.module.mjs +5 -5
  141. package/esm2020/link/link.component.mjs +65 -50
  142. package/esm2020/link/link.module.mjs +5 -5
  143. package/esm2020/link/link.pipes.mjs +4 -4
  144. package/esm2020/list/list-actions.component.mjs +6 -6
  145. package/esm2020/list/list-carousel.component.mjs +20 -20
  146. package/esm2020/list/list-chooser.component.mjs +6 -6
  147. package/esm2020/list/list-pager.component.mjs +12 -12
  148. package/esm2020/list/list-sorting.component.mjs +6 -6
  149. package/esm2020/list/list-total.component.mjs +9 -6
  150. package/esm2020/list/list-views.component.mjs +6 -6
  151. package/esm2020/list/list.component.mjs +151 -72
  152. package/esm2020/list/list.module.mjs +5 -5
  153. package/esm2020/list/list.pipes.mjs +7 -7
  154. package/esm2020/list/virtual-scroller.mjs +58 -58
  155. package/esm2020/menu/menu-item.component.mjs +5 -5
  156. package/esm2020/menu/menu.component.mjs +15 -12
  157. package/esm2020/menu/menu.model.mjs +2 -1
  158. package/esm2020/menu/menu.module.mjs +5 -5
  159. package/esm2020/ngx-lib.module.mjs +5 -5
  160. package/esm2020/page-layout/page-layout.component.mjs +4 -4
  161. package/esm2020/page-layout/page-layout.module.mjs +5 -5
  162. package/esm2020/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +4 -4
  163. package/esm2020/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +27 -11
  164. package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +70 -38
  165. package/esm2020/profile-data-views-list/profile-data-views-list.model.mjs +1 -1
  166. package/esm2020/profile-data-views-list/profile-data-views-list.module.mjs +5 -5
  167. package/esm2020/quantity-selector/quantity-selector-validation.directive.mjs +4 -4
  168. package/esm2020/quantity-selector/quantity-selector.component.mjs +102 -89
  169. package/esm2020/quantity-selector/quantity-selector.module.mjs +5 -5
  170. package/esm2020/quantity-selector/quantity-selector.pipes.mjs +4 -4
  171. package/esm2020/query-builder/common/model/legacy.mjs +1 -1
  172. package/esm2020/query-builder/common/model/operator.mjs +72 -62
  173. package/esm2020/query-builder/common/services/output-query.service.mjs +8 -6
  174. package/esm2020/query-builder/common/services/query-structure.service.mjs +37 -5
  175. package/esm2020/query-builder/common/services/type-convertor.service.mjs +10 -10
  176. package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +25 -23
  177. package/esm2020/query-builder/query-builder-section/query-builder-section.component.mjs +5 -5
  178. package/esm2020/query-builder/query-builder.component.mjs +19 -19
  179. package/esm2020/query-builder/query-builder.module.mjs +17 -6
  180. package/esm2020/query-builder/query-builder.service.mjs +5 -5
  181. package/esm2020/remote-loader/addon-block-loader.component.mjs +45 -35
  182. package/esm2020/remote-loader/addon-block-loader.service.mjs +8 -5
  183. package/esm2020/remote-loader/remote-loader-element.component.mjs +81 -26
  184. package/esm2020/remote-loader/remote-loader.component.mjs +13 -13
  185. package/esm2020/remote-loader/remote-loader.model.mjs +1 -1
  186. package/esm2020/remote-loader/remote-loader.module.mjs +5 -5
  187. package/esm2020/remote-loader/remote-loader.service.mjs +38 -15
  188. package/esm2020/rich-html-textarea/rich-html-textarea.component.mjs +52 -36
  189. package/esm2020/rich-html-textarea/rich-html-textarea.module.mjs +5 -5
  190. package/esm2020/search/search.component.mjs +35 -35
  191. package/esm2020/search/search.module.mjs +5 -5
  192. package/esm2020/select/select.component.mjs +89 -45
  193. package/esm2020/select/select.module.mjs +5 -5
  194. package/esm2020/select-panel/select-panel.component.mjs +26 -28
  195. package/esm2020/select-panel/select-panel.module.mjs +5 -5
  196. package/esm2020/separator/separator.component.mjs +16 -16
  197. package/esm2020/separator/separator.module.mjs +5 -5
  198. package/esm2020/side-bar/side-bar.component.mjs +29 -15
  199. package/esm2020/side-bar/side-bar.module.mjs +5 -5
  200. package/esm2020/signature/signature-dialog.component.mjs +4 -4
  201. package/esm2020/signature/signature.component.mjs +41 -32
  202. package/esm2020/signature/signature.module.mjs +5 -5
  203. package/esm2020/size-detector/size-detector.component.mjs +15 -13
  204. package/esm2020/size-detector/size-detector.module.mjs +5 -5
  205. package/esm2020/skeleton-loader/public-api.mjs +2 -2
  206. package/esm2020/skeleton-loader/skeleton-loader.component.mjs +5 -5
  207. package/esm2020/skeleton-loader/skeleton-loader.module.mjs +5 -5
  208. package/esm2020/slider/slider.component.mjs +21 -21
  209. package/esm2020/slider/slider.module.mjs +5 -5
  210. package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +4 -4
  211. package/esm2020/smart-filters/common/filter-actions.component.mjs +4 -4
  212. package/esm2020/smart-filters/common/model/base-filter-component.mjs +28 -34
  213. package/esm2020/smart-filters/common/model/field.mjs +7 -7
  214. package/esm2020/smart-filters/common/model/operator.mjs +15 -6
  215. package/esm2020/smart-filters/common/model/type.mjs +1 -1
  216. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +4 -4
  217. package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +5 -5
  218. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +4 -4
  219. package/esm2020/smart-filters/smart-filters.component.mjs +19 -19
  220. package/esm2020/smart-filters/smart-filters.module.mjs +5 -5
  221. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +29 -9
  222. package/esm2020/snack-bar/default-snack-bar.component.mjs +4 -4
  223. package/esm2020/snack-bar/snack-bar.component.mjs +4 -4
  224. package/esm2020/snack-bar/snack-bar.module.mjs +5 -5
  225. package/esm2020/snack-bar/snack-bar.service.mjs +4 -4
  226. package/esm2020/textarea/textarea.component.mjs +40 -31
  227. package/esm2020/textarea/textarea.module.mjs +5 -5
  228. package/esm2020/textbox/textbox-validation.directive.mjs +5 -5
  229. package/esm2020/textbox/textbox.component.mjs +171 -115
  230. package/esm2020/textbox/textbox.module.mjs +5 -5
  231. package/esm2020/textbox-icon/textbox-icon.component.mjs +4 -4
  232. package/esm2020/textbox-icon/textbox-icon.module.mjs +5 -5
  233. package/esm2020/top-bar/top-bar.component.mjs +5 -5
  234. package/esm2020/top-bar/top-bar.module.mjs +5 -5
  235. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +19 -19
  236. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  237. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +61 -52
  238. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  239. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
  240. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
  241. package/fesm2015/pepperi-addons-ngx-lib-button.mjs +26 -26
  242. package/fesm2015/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  243. package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs +63 -63
  244. package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
  245. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
  246. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  247. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +33 -44
  248. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  249. package/fesm2015/pepperi-addons-ngx-lib-color.mjs +12 -12
  250. package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  251. package/fesm2015/pepperi-addons-ngx-lib-date.mjs +91 -68
  252. package/fesm2015/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  253. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs +13 -13
  254. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  255. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +75 -40
  256. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  257. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs +11 -8
  258. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  259. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
  260. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  261. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +132 -126
  262. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  263. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
  264. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  265. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs +20 -20
  266. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  267. package/fesm2015/pepperi-addons-ngx-lib-image.mjs +58 -49
  268. package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  269. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
  270. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  271. package/fesm2015/pepperi-addons-ngx-lib-link.mjs +71 -56
  272. package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  273. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +276 -192
  274. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  275. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +23 -19
  276. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  277. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
  278. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  279. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +102 -54
  280. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  281. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
  282. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  283. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +191 -132
  284. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  285. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +197 -108
  286. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  287. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs +55 -39
  288. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  289. package/fesm2015/pepperi-addons-ngx-lib-search.mjs +38 -38
  290. package/fesm2015/pepperi-addons-ngx-lib-search.mjs.map +1 -1
  291. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +29 -31
  292. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  293. package/fesm2015/pepperi-addons-ngx-lib-select.mjs +92 -48
  294. package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  295. package/fesm2015/pepperi-addons-ngx-lib-separator.mjs +19 -19
  296. package/fesm2015/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
  297. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
  298. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  299. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +48 -38
  300. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  301. package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
  302. package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
  303. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +9 -9
  304. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
  305. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs +24 -24
  306. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  307. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +114 -91
  308. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  309. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
  310. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
  311. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs +43 -34
  312. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  313. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
  314. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  315. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +181 -123
  316. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  317. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
  318. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  319. package/fesm2015/pepperi-addons-ngx-lib.mjs +760 -653
  320. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  321. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +19 -19
  322. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  323. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs +61 -52
  324. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  325. package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
  326. package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
  327. package/fesm2020/pepperi-addons-ngx-lib-button.mjs +26 -26
  328. package/fesm2020/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  329. package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs +63 -63
  330. package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
  331. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
  332. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  333. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +33 -44
  334. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  335. package/fesm2020/pepperi-addons-ngx-lib-color.mjs +12 -12
  336. package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  337. package/fesm2020/pepperi-addons-ngx-lib-date.mjs +90 -68
  338. package/fesm2020/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  339. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs +13 -13
  340. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  341. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +74 -39
  342. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  343. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs +11 -8
  344. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  345. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
  346. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  347. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +132 -126
  348. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  349. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
  350. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  351. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs +20 -20
  352. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  353. package/fesm2020/pepperi-addons-ngx-lib-image.mjs +58 -49
  354. package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  355. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
  356. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  357. package/fesm2020/pepperi-addons-ngx-lib-link.mjs +71 -56
  358. package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  359. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +274 -192
  360. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  361. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +23 -19
  362. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  363. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
  364. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  365. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +102 -54
  366. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  367. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
  368. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  369. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +187 -131
  370. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  371. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +184 -93
  372. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  373. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs +55 -39
  374. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  375. package/fesm2020/pepperi-addons-ngx-lib-search.mjs +38 -38
  376. package/fesm2020/pepperi-addons-ngx-lib-search.mjs.map +1 -1
  377. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs +29 -31
  378. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  379. package/fesm2020/pepperi-addons-ngx-lib-select.mjs +92 -48
  380. package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  381. package/fesm2020/pepperi-addons-ngx-lib-separator.mjs +19 -19
  382. package/fesm2020/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
  383. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
  384. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  385. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +47 -38
  386. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  387. package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
  388. package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
  389. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +9 -9
  390. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
  391. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs +24 -24
  392. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  393. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +114 -91
  394. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  395. package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
  396. package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
  397. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs +43 -34
  398. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  399. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
  400. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  401. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +179 -123
  402. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  403. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
  404. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  405. package/fesm2020/pepperi-addons-ngx-lib.mjs +780 -674
  406. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  407. package/field-title/field-title.component.d.ts +2 -1
  408. package/files-uploader/files-uploader.component.d.ts +1 -1
  409. package/form/field-generator.component.d.ts +1 -1
  410. package/form/form.component.d.ts +1 -1
  411. package/form/indicators.component.d.ts +1 -1
  412. package/form/internal-button.component.d.ts +1 -1
  413. package/form/internal-carusel.component.d.ts +2 -1
  414. package/form/internal-field-generator.component.d.ts +1 -1
  415. package/form/internal-form.component.d.ts +1 -1
  416. package/form/internal-list.component.d.ts +2 -2
  417. package/form/internal-menu.component.d.ts +1 -2
  418. package/form/internal-page.component.d.ts +1 -1
  419. package/group-buttons/group-buttons.component.d.ts +2 -2
  420. package/icon/icon-generated.model.d.ts +2 -2
  421. package/icon/icon.component.d.ts +1 -1
  422. package/image/image.component.d.ts +2 -1
  423. package/image/image.component.theme.scss +4 -2
  424. package/images-filmstrip/images-filmstrip.component.d.ts +1 -1
  425. package/link/link.component.d.ts +4 -1
  426. package/list/list-actions.component.d.ts +1 -1
  427. package/list/list-carousel.component.d.ts +2 -2
  428. package/list/list-chooser.component.d.ts +1 -1
  429. package/list/list-pager.component.d.ts +1 -1
  430. package/list/list-sorting.component.d.ts +1 -1
  431. package/list/list-total.component.d.ts +2 -1
  432. package/list/list-views.component.d.ts +2 -2
  433. package/list/list.component.d.ts +9 -3
  434. package/list/list.model.d.ts +6 -6
  435. package/list/virtual-scroller.d.ts +2 -2
  436. package/menu/menu-item.component.d.ts +1 -1
  437. package/menu/menu.component.d.ts +2 -1
  438. package/menu/menu.model.d.ts +4 -3
  439. package/package.json +1 -1
  440. package/page-layout/page-layout.component.d.ts +1 -1
  441. package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +4 -4
  442. package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +5 -4
  443. package/profile-data-views-list/profile-data-views-list.component.d.ts +13 -10
  444. package/profile-data-views-list/profile-data-views-list.model.d.ts +8 -0
  445. package/quantity-selector/quantity-selector-validation.directive.d.ts +1 -1
  446. package/quantity-selector/quantity-selector.component.d.ts +8 -9
  447. package/quantity-selector/quantity-selector.component.theme.scss +12 -6
  448. package/query-builder/common/model/legacy.d.ts +2 -0
  449. package/query-builder/common/model/operator.d.ts +11 -1
  450. package/query-builder/common/services/query-structure.service.d.ts +1 -0
  451. package/query-builder/query-builder-item/query-builder-item.component.d.ts +4 -2
  452. package/query-builder/query-builder-section/query-builder-section.component.d.ts +1 -1
  453. package/query-builder/query-builder.component.d.ts +1 -1
  454. package/query-builder/query-builder.module.d.ts +7 -3
  455. package/remote-loader/addon-block-loader.component.d.ts +4 -2
  456. package/remote-loader/remote-loader-element.component.d.ts +9 -2
  457. package/remote-loader/remote-loader.component.d.ts +1 -1
  458. package/remote-loader/remote-loader.model.d.ts +3 -2
  459. package/remote-loader/remote-loader.service.d.ts +2 -0
  460. package/rich-html-textarea/rich-html-textarea.component.d.ts +4 -1
  461. package/rich-html-textarea/rich-html-textarea.component.theme.scss +8 -5
  462. package/search/search.component.d.ts +1 -1
  463. package/search/search.model.d.ts +4 -4
  464. package/select/select.component.d.ts +9 -1
  465. package/select/select.component.theme.scss +22 -11
  466. package/select-panel/select-panel.component.d.ts +1 -2
  467. package/select-panel/select-panel.component.theme.scss +0 -2
  468. package/separator/separator.component.d.ts +1 -1
  469. package/side-bar/side-bar.component.d.ts +4 -1
  470. package/side-bar/side-bar.model.d.ts +1 -1
  471. package/signature/signature-dialog.component.d.ts +2 -2
  472. package/signature/signature.component.d.ts +2 -1
  473. package/size-detector/size-detector.component.d.ts +1 -1
  474. package/skeleton-loader/skeleton-loader.component.d.ts +4 -4
  475. package/slider/slider.component.d.ts +1 -1
  476. package/slider/slider.component.theme.scss +15 -5
  477. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +4 -1
  478. package/smart-filters/common/filter-actions.component.d.ts +1 -1
  479. package/smart-filters/common/model/base-filter-component.d.ts +3 -5
  480. package/smart-filters/common/model/operator.d.ts +3 -0
  481. package/smart-filters/common/model/type.d.ts +4 -4
  482. package/smart-filters/date-filter/date-filter.component.d.ts +4 -1
  483. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +4 -1
  484. package/smart-filters/number-filter/number-filter.component.d.ts +4 -1
  485. package/smart-filters/smart-filters.component.d.ts +1 -1
  486. package/smart-filters/text-filter/text-filter.component.d.ts +5 -1
  487. package/snack-bar/default-snack-bar.component.d.ts +1 -1
  488. package/snack-bar/snack-bar.component.d.ts +1 -1
  489. package/src/assets/i18n/ar.ngx-lib.json +180 -0
  490. package/src/assets/i18n/de.ngx-lib.json +106 -4
  491. package/src/assets/i18n/en.ngx-lib.json +10 -3
  492. package/src/assets/i18n/es.ngx-lib.json +113 -11
  493. package/src/assets/i18n/fr.ngx-lib.json +105 -4
  494. package/src/assets/i18n/he.ngx-lib.json +105 -4
  495. package/src/assets/i18n/it.ngx-lib.json +114 -13
  496. package/src/assets/i18n/ja.ngx-lib.json +105 -4
  497. package/src/assets/i18n/pl.ngx-lib.json +105 -4
  498. package/src/assets/i18n/pt.ngx-lib.json +105 -4
  499. package/src/assets/i18n/sr.ngx-lib.json +180 -0
  500. package/src/assets/i18n/zh.ngx-lib.json +105 -2
  501. package/src/core/style/abstracts/mixins.scss +157 -37
  502. package/src/core/style/abstracts/variables.scss +10 -1
  503. package/src/core/style/base/Spacing.stories.mdx +22 -22
  504. package/src/core/style/base/base.scss +219 -117
  505. package/src/core/style/base/typography.scss +2 -1
  506. package/src/core/style/components/button.scss +52 -19
  507. package/src/core/style/components/checkbox.scss +132 -128
  508. package/src/core/style/components/file.scss +13 -9
  509. package/src/core/style/components/general.scss +149 -65
  510. package/src/core/style/components/radio-button.scss +50 -23
  511. package/src/core/style/components/textarea.scss +69 -30
  512. package/textarea/textarea.component.d.ts +2 -1
  513. package/textbox/textbox-validation.directive.d.ts +1 -1
  514. package/textbox/textbox.component.d.ts +4 -1
  515. package/textbox-icon/textbox-icon.component.d.ts +1 -1
  516. package/theming-offline.scss +2 -1
  517. package/theming.scss +7 -2
  518. package/top-bar/top-bar.component.d.ts +1 -1
  519. package/top-bar/top-bar.model.d.ts +1 -1
  520. package/src/assets/images/sail-away.jpg +0 -0
@@ -14,14 +14,14 @@ import { MatInputModule } from '@angular/material/input';
14
14
  import * as i8 from '@angular/material/icon';
15
15
  import { MatIconModule } from '@angular/material/icon';
16
16
  import * as i1 from '@pepperi-addons/ngx-lib';
17
- import { DEFAULT_HORIZONTAL_ALIGNMENT, PepTextboxField, PepCustomizationService, PepNgxLibModule } from '@pepperi-addons/ngx-lib';
17
+ import { DEFAULT_HORIZONTAL_ALIGNMENT, PepTextboxField, PepCustomizationService, PepToNumberPipe, PepNgxLibModule } from '@pepperi-addons/ngx-lib';
18
18
  import * as i1$1 from '@pepperi-addons/ngx-lib/icon';
19
19
  import { pepIconSystemEdit, PepIconModule } from '@pepperi-addons/ngx-lib/icon';
20
20
  import * as i11 from '@pepperi-addons/ngx-lib/textbox-icon';
21
21
  import { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';
22
22
  import * as i10 from '@pepperi-addons/ngx-lib/field-title';
23
23
  import { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';
24
- import { BehaviorSubject, distinctUntilChanged } from 'rxjs';
24
+ import { distinctUntilChanged, BehaviorSubject } from 'rxjs';
25
25
  import { coerceNumberProperty } from '@angular/cdk/coercion';
26
26
  import * as i2 from '@ngx-translate/core';
27
27
 
@@ -83,7 +83,7 @@ class PepTextboxValidationDirective {
83
83
  const newValue = this.validatorService.validateNumber(value, this.isDecimal());
84
84
  console.log(`after validateNumber newValue is - ${newValue}`);
85
85
  // Always set to the value input number with '.' decomal separator.
86
- this.hostElement.nativeElement['value'] = newValue ? this.utilitiesService.changeDecimalSeparatorWhenItsComma(newValue) : 0;
86
+ this.hostElement.nativeElement['value'] = newValue ? this.utilitiesService.changeDecimalSeparatorWhenItsComma(newValue) : '';
87
87
  }
88
88
  else if (this.isPhone()) {
89
89
  // test phone with regular expression, when
@@ -98,9 +98,9 @@ class PepTextboxValidationDirective {
98
98
  }
99
99
  }
100
100
  }
101
- PepTextboxValidationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTextboxValidationDirective, deps: [{ token: i0.ElementRef }, { token: i1.PepUtilitiesService }, { token: i1.PepValidatorService }], target: i0.ɵɵFactoryTarget.Directive });
102
- PepTextboxValidationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: PepTextboxValidationDirective, selector: "[pepTextboxValidation]", inputs: { type: "type" }, host: { listeners: { "change": "onChange($event)", "keydown": "onKeyDown($event)" } }, ngImport: i0 });
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTextboxValidationDirective, decorators: [{
101
+ PepTextboxValidationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTextboxValidationDirective, deps: [{ token: i0.ElementRef }, { token: i1.PepUtilitiesService }, { token: i1.PepValidatorService }], target: i0.ɵɵFactoryTarget.Directive });
102
+ PepTextboxValidationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: PepTextboxValidationDirective, selector: "[pepTextboxValidation]", inputs: { type: "type" }, host: { listeners: { "change": "onChange($event)", "keydown": "onKeyDown($event)" } }, ngImport: i0 });
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTextboxValidationDirective, decorators: [{
104
104
  type: Directive,
105
105
  args: [{
106
106
  selector: '[pepTextboxValidation]',
@@ -133,6 +133,110 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
133
133
  * @implements {OnDestroy}
134
134
  */
135
135
  class PepTextboxComponent {
136
+ /**
137
+ * The text box key
138
+ *
139
+ * @memberof PepTextboxComponent
140
+ */
141
+ set key(value) {
142
+ this._key = value;
143
+ this.dataQa = value;
144
+ }
145
+ get key() {
146
+ return this._key;
147
+ }
148
+ /**
149
+ * The value of the text box.
150
+ *
151
+ * @memberof PepTextboxComponent
152
+ */
153
+ set value(value) {
154
+ if (!value) {
155
+ value = '';
156
+ }
157
+ // else {
158
+ // // If this is a number validate it.
159
+ // if (this.isNumberType()) {
160
+ // value = coerceNumberProperty(value, 0).toString();
161
+ // }
162
+ // }
163
+ if (this.isDifferentValue(value)) {
164
+ // console.log(`set value, value is - ${value}`)
165
+ this._value = value;
166
+ }
167
+ this.setFormattedValue(this.value);
168
+ this.changeDisplayValue();
169
+ }
170
+ get value() {
171
+ return this._value;
172
+ }
173
+ get valueAsCurrentCulture() {
174
+ return this.utilitiesService.changeDecimalSeparatorWhenItsComma(this.value, true);
175
+ // let res = this.value;
176
+ // if (this.isDecimal()) {
177
+ // res = this.utilitiesService.formatDecimal(this.value, this.minFractionDigits, this.maxFractionDigits, false);
178
+ // }
179
+ // return res;
180
+ }
181
+ set minFractionDigits(value) {
182
+ this._minFractionDigits = value;
183
+ this.setFormattedValue(this.value);
184
+ this.changeDisplayValue();
185
+ }
186
+ get minFractionDigits() {
187
+ return this._minFractionDigits;
188
+ }
189
+ set maxFractionDigits(value) {
190
+ this._maxFractionDigits = value;
191
+ this.setFormattedValue(this.value);
192
+ this.changeDisplayValue();
193
+ }
194
+ get maxFractionDigits() {
195
+ return this._maxFractionDigits;
196
+ }
197
+ set type(value) {
198
+ this._type = value;
199
+ if (this.value) {
200
+ this.setFormattedValue(this.value);
201
+ this.changeDisplayValue();
202
+ this.setInputModeAttribute();
203
+ }
204
+ }
205
+ get type() {
206
+ return this._type;
207
+ }
208
+ set mandatory(value) {
209
+ this._mandatory = value;
210
+ }
211
+ get mandatory() {
212
+ return this._mandatory;
213
+ }
214
+ set visible(visible) {
215
+ this._visible = visible;
216
+ if (visible) {
217
+ this.renderer.removeClass(this.element.nativeElement, 'hidden-element');
218
+ }
219
+ else {
220
+ this.renderer.addClass(this.element.nativeElement, 'hidden-element');
221
+ }
222
+ }
223
+ get visible() {
224
+ return this._visible;
225
+ }
226
+ get calculateFormattedValue() {
227
+ return this._calculateFormattedValue;
228
+ }
229
+ set isInFocus(isInFocus) {
230
+ this._isInFocus = isInFocus;
231
+ this.setFormattedValue(this.value);
232
+ this.changeDisplayValue();
233
+ }
234
+ get isInFocus() {
235
+ return this._isInFocus;
236
+ }
237
+ get displayValue$() {
238
+ return this._displayValueSubject.asObservable().pipe(distinctUntilChanged());
239
+ }
136
240
  constructor(customizationService, renderer, element, translate, utilitiesService) {
137
241
  this.customizationService = customizationService;
138
242
  this.renderer = renderer;
@@ -234,9 +338,10 @@ class PepTextboxComponent {
234
338
  * @memberof PepTextboxComponent
235
339
  */
236
340
  this.valueChange = new EventEmitter();
341
+ this.keyup = new EventEmitter();
237
342
  // @Output()
238
343
  // formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();
239
- this.keyup = new EventEmitter();
344
+ this.validationChange = new EventEmitter();
240
345
  this._calculateFormattedValue = true;
241
346
  this.controlType = 'textbox';
242
347
  this.standAlone = false;
@@ -247,110 +352,6 @@ class PepTextboxComponent {
247
352
  this._displayValueSubject = new BehaviorSubject('');
248
353
  this.isInFocus = false;
249
354
  }
250
- /**
251
- * The text box key
252
- *
253
- * @memberof PepTextboxComponent
254
- */
255
- set key(value) {
256
- this._key = value;
257
- this.dataQa = value;
258
- }
259
- get key() {
260
- return this._key;
261
- }
262
- /**
263
- * The value of the text box.
264
- *
265
- * @memberof PepTextboxComponent
266
- */
267
- set value(value) {
268
- if (!value) {
269
- value = '';
270
- }
271
- // else {
272
- // // If this is a number validate it.
273
- // if (this.isNumberType()) {
274
- // value = coerceNumberProperty(value, 0).toString();
275
- // }
276
- // }
277
- if (this.isDifferentValue(value)) {
278
- // console.log(`set value, value is - ${value}`)
279
- this._value = value;
280
- }
281
- this.setFormattedValue(this.value);
282
- this.changeDisplayValue();
283
- }
284
- get value() {
285
- return this._value;
286
- }
287
- get valueAsCurrentCulture() {
288
- return this.utilitiesService.changeDecimalSeparatorWhenItsComma(this.value, true);
289
- // let res = this.value;
290
- // if (this.isDecimal()) {
291
- // res = this.utilitiesService.formatDecimal(this.value, this.minFractionDigits, this.maxFractionDigits, false);
292
- // }
293
- // return res;
294
- }
295
- set minFractionDigits(value) {
296
- this._minFractionDigits = value;
297
- this.setFormattedValue(this.value);
298
- this.changeDisplayValue();
299
- }
300
- get minFractionDigits() {
301
- return this._minFractionDigits;
302
- }
303
- set maxFractionDigits(value) {
304
- this._maxFractionDigits = value;
305
- this.setFormattedValue(this.value);
306
- this.changeDisplayValue();
307
- }
308
- get maxFractionDigits() {
309
- return this._maxFractionDigits;
310
- }
311
- set type(value) {
312
- this._type = value;
313
- if (this.value) {
314
- this.setFormattedValue(this.value);
315
- this.changeDisplayValue();
316
- this.setInputModeAttribute();
317
- }
318
- }
319
- get type() {
320
- return this._type;
321
- }
322
- set mandatory(value) {
323
- this._mandatory = value;
324
- }
325
- get mandatory() {
326
- return this._mandatory;
327
- }
328
- set visible(visible) {
329
- this._visible = visible;
330
- if (visible) {
331
- this.renderer.removeClass(this.element.nativeElement, 'hidden-element');
332
- }
333
- else {
334
- this.renderer.addClass(this.element.nativeElement, 'hidden-element');
335
- }
336
- }
337
- get visible() {
338
- return this._visible;
339
- }
340
- get calculateFormattedValue() {
341
- return this._calculateFormattedValue;
342
- }
343
- set isInFocus(isInFocus) {
344
- this._isInFocus = isInFocus;
345
- this.setFormattedValue(this.value);
346
- this.changeDisplayValue();
347
- }
348
- get isInFocus() {
349
- return this._isInFocus;
350
- }
351
- get displayValue$() {
352
- return this._displayValueSubject.asObservable().pipe(distinctUntilChanged());
353
- }
354
355
  setInputModeAttribute() {
355
356
  if (this.type === 'currency' || this.type === 'percentage' || this.type === 'real') {
356
357
  this.inputMode = 'decimal';
@@ -378,7 +379,7 @@ class PepTextboxComponent {
378
379
  if (this.isInFocus) {
379
380
  return;
380
381
  }
381
- if (this._calculateFormattedValue) {
382
+ if (this._calculateFormattedValue && this.value?.length > 0) {
382
383
  // console.log(`setFormattedValue before - value is ${value}`);
383
384
  if (this.type === 'currency') {
384
385
  this.formattedValue = this.utilitiesService.formatCurrency(value, this.accessory, this.minFractionDigits, this.maxFractionDigits);
@@ -409,6 +410,12 @@ class PepTextboxComponent {
409
410
  // Set the formatted value only for the first load cause it's not formatted if we set the value (I don't know why)
410
411
  // Else we set the value - this is important to set the value only cause setting the formatted value will cause bug when the number is with thousand separator
411
412
  this.customizationService.updateFormFieldValue(this.form, this.key, this.value || this.formattedValue, this.parentFieldKey);
413
+ // Raise this only for stand alone fields, If false then the usage for this field is inside a form.
414
+ // Then the form will take care of raising the (onFormValidationChanged) event
415
+ if (this.standAlone) {
416
+ const isValid = (this.disabled || this.readonly) ? true : this.form.valid;
417
+ this.validationChange.emit(isValid);
418
+ }
412
419
  }
413
420
  changeDisplayValue() {
414
421
  let res = '';
@@ -440,7 +447,7 @@ class PepTextboxComponent {
440
447
  maxValue: this.maxValue,
441
448
  regex: this.regex
442
449
  });
443
- this.form = this.customizationService.getDefaultFromGroup(pepField, this.renderError);
450
+ this.form = this.customizationService.getDefaultFromGroup(pepField, false);
444
451
  }
445
452
  ngOnInit() {
446
453
  if (this.form === null) {
@@ -466,7 +473,7 @@ class PepTextboxComponent {
466
473
  if (this.type === 'text' && this.regex && (!this.regexError || this.regexError.length === 0)) {
467
474
  this.translate.get('MESSAGES.ERROR_INVALID_PATTERN').subscribe(text => this.regexError = text);
468
475
  }
469
- this.updateFormFieldValue();
476
+ this.updateFormFieldValue(true);
470
477
  }
471
478
  ngAfterViewInit() {
472
479
  this.setInputModeAttribute();
@@ -492,6 +499,53 @@ class PepTextboxComponent {
492
499
  }
493
500
  }, 0);
494
501
  }
502
+ getGeneralError() {
503
+ return this.translate.instant('MESSAGES.ERROR_IS_NOT_VALID', { field: this.label });
504
+ }
505
+ // getOtherErrorMessage(inputValue: string) {
506
+ // if (this.isNumberType()) {
507
+ // if (this.type === 'percentage') {
508
+ // inputValue = inputValue.replace('%', '');
509
+ // } else if (this.accessory?.length > 0) {
510
+ // inputValue = inputValue.replace(this.accessory, '');
511
+ // }
512
+ // const numberValue = new PepToNumberPipe(this.utilitiesService).transform(inputValue);
513
+ // return (this.maxValue && numberValue > this.maxValue) || (this.minValue && numberValue < this.minValue) ?
514
+ // this.translate.instant('MESSAGES.ERROR_RANGE_IS_NOT_VALID', { min: this.minValue, max: this.maxValue }) :
515
+ // this.getGeneralError();
516
+ // } else {
517
+ // this.getGeneralError();
518
+ // }
519
+ // }
520
+ getOtherErrorMessage(inputValue) {
521
+ if (this.isNumberType()) {
522
+ if (this.type === 'percentage') {
523
+ inputValue = inputValue.replace('%', '');
524
+ }
525
+ else if (this.accessory?.length > 0) {
526
+ inputValue = inputValue.replace(this.accessory, '');
527
+ }
528
+ const numberValue = new PepToNumberPipe(this.utilitiesService).transform(inputValue);
529
+ const minSet = this.minValue !== null && this.minValue !== undefined && !isNaN(this.minValue);
530
+ const maxSet = this.maxValue !== null && this.maxValue !== undefined && !isNaN(this.maxValue);
531
+ if (minSet && !maxSet && numberValue < this.minValue) {
532
+ return this.translate.instant('MESSAGES.ERROR_GREATER_THAN_MIN', { min: this.minValue });
533
+ }
534
+ if (!minSet && maxSet && numberValue > this.maxValue) {
535
+ return this.translate.instant('MESSAGES.ERROR_LESS_THAN_MAX', { max: this.maxValue });
536
+ }
537
+ if (minSet && maxSet && (numberValue < this.minValue || numberValue > this.maxValue)) {
538
+ return this.translate.instant('MESSAGES.ERROR_BETWEEN_MIN_MAX', { min: this.minValue, max: this.maxValue });
539
+ }
540
+ if (isNaN(numberValue)) {
541
+ return this.getGeneralError();
542
+ }
543
+ return '';
544
+ }
545
+ else {
546
+ return this.getGeneralError();
547
+ }
548
+ }
495
549
  isDecimal() {
496
550
  let res = false;
497
551
  if (this.isNumberType()) {
@@ -561,7 +615,7 @@ class PepTextboxComponent {
561
615
  }
562
616
  onBlur(e) {
563
617
  const value = e.target ? e.target.value : e;
564
- // If renderError is false and the new value is not valid.
618
+ // If renderError is false and the new value is not valid return value back.
565
619
  if (!this.renderError && !this.isValueValid(value)) {
566
620
  this.renderer.setProperty(this.input.nativeElement, 'value', this.valueAsCurrentCulture);
567
621
  }
@@ -603,11 +657,11 @@ class PepTextboxComponent {
603
657
  }, 0);
604
658
  }
605
659
  }
606
- PepTextboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTextboxComponent, deps: [{ token: i1.PepCustomizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.TranslateService }, { token: i1.PepUtilitiesService }], target: i0.ɵɵFactoryTarget.Component });
607
- PepTextboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepTextboxComponent, selector: "pep-textbox", inputs: { key: "key", value: "value", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", accessory: "accessory", label: "label", placeholder: "placeholder", type: "type", mandatory: "mandatory", disabled: "disabled", readonly: "readonly", maxFieldCharacters: "maxFieldCharacters", hint: "hint", textColor: "textColor", xAlignment: "xAlignment", rowSpan: "rowSpan", minValue: "minValue", maxValue: "maxValue", visible: "visible", form: "form", isActive: "isActive", showTitle: "showTitle", renderTitle: "renderTitle", renderError: "renderError", renderSymbol: "renderSymbol", layoutType: "layoutType", parentFieldKey: "parentFieldKey", regex: "regex", regexError: "regexError", isInFocus: "isInFocus" }, outputs: { valueChange: "valueChange", keyup: "keyup" }, host: { properties: { "attr.data-qa": "this.dataQa" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\" let-hasParent=\"hasParent\">\n <pep-field-title *ngIf=\"renderTitle && isFormView && !hasParent\" [label]=\"label\" [mandatory]=\"mandatory\"\n [disabled]=\"disabled\" [maxFieldCharacters]=\"maxFieldCharacters\" [hint]=\"hint\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\" [inputLength]=\"input.value?.length\">\n </pep-field-title>\n <mat-form-field appearance=\"outline\">\n <!-- (click)=\"$event.target.select()\" -->\n <input #input matInput pepTextboxValidation [formControlName]=\"key\" [id]=\"key\"\n [name]=\"key\" class=\" body-sm \" autocomplete=\"off\"\n maxlength=\"{{ maxFieldCharacters > 0 ? maxFieldCharacters : 99999 }}\"\n [placeholder]=\"hasParent && !disabled ? placeholder : ''\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'center' ? 'center' : xAlignment == 'right' ? 'right' : 'left' }\"\n title=\"{{ formattedValue }}\" [type]=\"type\" [value]=\"displayValue$ | async\"\n (keyup.enter)=\"$event?.currentTarget?.blur()\" (focus)=\"onFocus($event);\" (blur)=\"onBlur($event)\"\n (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n [ngClass]=\"{'disable-hidden': disabled && formattedValue?.length > 0 && (type === 'phone' || type === 'email' || type === 'link')}\" />\n<!-- [attr.inputmode]=\"inputMode\" -->\n <span\n *ngIf=\"disabled && formattedValue?.length > 0 && (type === 'phone' || type === 'email' || type === 'link')\"\n class=\"dis-grid\">\n <a href=\"javascript:void(0)\" (click)=\"anchorClicked()\" [id]=\"key\" [name]=\"key\"\n class=\"color-link body-sm \"> {{formattedValue}}</a>\n </span>\n <mat-error *ngIf=\"renderError\"> \n <ng-container *ngIf=\"mandatory && input.value.length == 0 then requiredError else otherErrorContainer\">\n </ng-container>\n <ng-template #requiredError>\n <span class=\"body-xs\" [title]=\"('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label })\"\n [innerText]=\"('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label })\">\n </span>\n </ng-template>\n <ng-template #otherErrorContainer>\n <ng-template *ngIf=\"regex && form?.get(key)?.errors?.pattern then patternError else otherError\"></ng-template>\n <ng-template #patternError>\n <span class=\"body-xs\">\n {{ regexError }}\n </span>\n </ng-template>\n <ng-template #otherError>\n <span class=\"body-xs\" [title]=\"(input.value | pepToNumber) > this.maxValue || (input.value | pepToNumber) < this.minValue ?\n ('MESSAGES.ERROR_RANGE_IS_NOT_VALID' | translate: { min: minValue, max: maxValue }) :\n ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\" [innerText]=\"(input.value | pepToNumber) > this.maxValue || (input.value | pepToNumber) < this.minValue ?\n ('MESSAGES.ERROR_RANGE_IS_NOT_VALID' | translate: { min: minValue, max: maxValue }) :\n ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\">\n </span>\n </ng-template>\n </ng-template>\n </mat-error> \n <pep-textbox-icon *ngIf=\"renderSymbol && isFormView && xAlignment == 'right'\" matPrefix [value]=\"value\"\n [label]=\"label\" [type]=\"type\" [disabled]=\"disabled\">\n </pep-textbox-icon>\n <pep-textbox-icon *ngIf=\"renderSymbol && isFormView && (xAlignment == 'left')\" matSuffix [value]=\"value\"\n [label]=\"label\" [type]=\"type\" [disabled]=\"disabled\">\n </pep-textbox-icon>\n </mat-form-field>\n </ng-template> \n <ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngIf=\"parentFieldKey; then groupedBlock; else regularBlock\"></ng-container>\n <ng-template #regularBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true, hasParent: false }\">\n </ng-container>\n </ng-template>\n <ng-template #groupedBlock>\n <ng-container [formGroupName]=\"parentFieldKey\">\n <mat-form-field appearance=\"outline\">\n <!-- (click)=\"$event.target.select()\" -->\n <input pepTextboxValidation [id]=\"key\" [name]=\"key\" class=\" body-sm \" matInput autocomplete=\"off\" \n [placeholder]=\"!disabled ? placeholder : ''\" title=\"{{ formattedValue }}\"\n [formControlName]=\"key\" [value]=\"value\" \n (blur)=\"onBlur($event)\" (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n (keyup.enter)=\"$event?.currentTarget?.blur()\" (focus)=\"onFocus($event)\" />\n </mat-form-field>\n <!-- <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true, hasParent: true }\"></ng-container> -->\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\n <ng-template #editBlock>\n <div [ngClass]=\"{'one-row': rowSpan === 1}\">\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n </ng-container>\n </div>\n </ng-template>\n <ng-template #readOnlyBlock>\n <div class=\"pep-card-input card-flex-container\" [ngStyle]=\"{ color: textColor }\"\n [class]=\"'text-align-' + xAlignment\" [ngClass]=\"{'one-row': rowSpan === 1,\n 'multi-rows': rowSpan > 1,\n 'pep-button weak': isActive && !disabled}\"\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\">\n <span *ngIf=\"showTitle && label != ''\" class=\"body-xs title\" title=\"{{ label }}\">{{ label\n }}&nbsp;</span>\n <span [id]=\"key\" title=\"{{ formattedValue }}\" class=\"body-sm value\"\n [ngClass]=\"{'multi-rows-text': rowSpan > 1}\" [ngStyle]=\"{ '-webkit-line-clamp': rowSpan }\">{{\n formattedValue }}</span>\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button\" mat-button>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </button>\n </div>\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\n <ng-template #selectedBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n </ng-container>\n </ng-template>\n <ng-template #notSelectedBlock>\n <ng-container *ngIf=\"formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'link'\">\n <a [id]=\"key\" class=\"color-link body-sm pep-report-input\"\n [ngClass]=\"{'disable': (disabled && value === '')}\" *ngIf=\"formattedValue != null\"\n title=\"{{ formattedValue }}\" target=\"_blank\" href=\"{{ value ? value : formattedValue }}\">{{\n formattedValue }}</a>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{'readonly': disabled}\"\n title=\"{{ formattedValue }}\" [ngStyle]=\"{ color: textColor }\">{{ formattedValue }}</span>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template #emptyBlock>\n <span [id]=\"key\">&nbsp;</span>\n </ng-template>\n </ng-template>\n </ng-container>\n\n</ng-container>", styles: [":host{height:inherit;display:grid}:host>*{align-self:center;align-items:baseline}.disable-hidden{display:none}.dis-grid{display:grid}.multi-rows-text{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal!important}\n", ""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i1$1.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i10.PepFieldTitleComponent, selector: "pep-field-title", inputs: ["label", "mandatory", "disabled", "maxFieldCharacters", "hint", "xAlignment", "showTitle", "inputLength", "fontBodyType"] }, { kind: "component", type: i11.PepTextboxIconComponent, selector: "pep-textbox-icon", inputs: ["value", "label", "type", "disabled"], outputs: ["iconClick"] }, { kind: "directive", type: PepTextboxValidationDirective, selector: "[pepTextboxValidation]", inputs: ["type"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.PepToNumberPipe, name: "pepToNumber" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
608
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTextboxComponent, decorators: [{
660
+ PepTextboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTextboxComponent, deps: [{ token: i1.PepCustomizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.TranslateService }, { token: i1.PepUtilitiesService }], target: i0.ɵɵFactoryTarget.Component });
661
+ PepTextboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PepTextboxComponent, selector: "pep-textbox", inputs: { key: "key", value: "value", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", accessory: "accessory", label: "label", placeholder: "placeholder", type: "type", mandatory: "mandatory", disabled: "disabled", readonly: "readonly", maxFieldCharacters: "maxFieldCharacters", hint: "hint", textColor: "textColor", xAlignment: "xAlignment", rowSpan: "rowSpan", minValue: "minValue", maxValue: "maxValue", visible: "visible", form: "form", isActive: "isActive", showTitle: "showTitle", renderTitle: "renderTitle", renderError: "renderError", renderSymbol: "renderSymbol", layoutType: "layoutType", parentFieldKey: "parentFieldKey", regex: "regex", regexError: "regexError", isInFocus: "isInFocus" }, outputs: { valueChange: "valueChange", keyup: "keyup", validationChange: "validationChange" }, host: { properties: { "attr.data-qa": "this.dataQa" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\" let-hasParent=\"hasParent\">\n <pep-field-title *ngIf=\"renderTitle && isFormView && !hasParent\" [label]=\"label\" [mandatory]=\"mandatory\"\n [disabled]=\"disabled\" [maxFieldCharacters]=\"maxFieldCharacters\" [hint]=\"hint\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\" [inputLength]=\"input.value?.length\">\n </pep-field-title>\n <mat-form-field appearance=\"outline\">\n <!-- (click)=\"$event.target.select()\" -->\n <input #input matInput pepTextboxValidation [formControlName]=\"key\" [id]=\"key\"\n [name]=\"key\" class=\" body-sm \" autocomplete=\"off\"\n maxlength=\"{{ maxFieldCharacters > 0 ? maxFieldCharacters : 99999 }}\"\n [placeholder]=\"hasParent && !disabled ? placeholder : ''\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'center' ? 'center' : xAlignment == 'right' ? 'right' : 'left' }\"\n title=\"{{ formattedValue }}\" [type]=\"type\" [value]=\"displayValue$ | async\"\n (keyup.enter)=\"$event?.currentTarget?.blur()\" (focus)=\"onFocus($event);\" (blur)=\"onBlur($event)\"\n (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n [ngClass]=\"{'disable-hidden': disabled && formattedValue?.length > 0 && (type === 'phone' || type === 'email' || type === 'link')}\" />\n<!-- [attr.inputmode]=\"inputMode\" --> \n <span *ngIf=\"disabled && formattedValue?.length > 0 && (type === 'phone' || type === 'email' || type === 'link')\"\n class=\"dis-grid\">\n <a href=\"javascript:void(0)\" (click)=\"anchorClicked()\" [id]=\"key\" [name]=\"key\"\n class=\"color-link body-sm\"> {{formattedValue}}</a>\n </span>\n <mat-error *ngIf=\"renderError\"> \n <ng-container *ngIf=\"mandatory && input.value.length == 0 then requiredError else otherErrorContainer\">\n </ng-container>\n <ng-template #requiredError>\n <span class=\"body-xs\" [title]=\"('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label })\"\n [innerText]=\"('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label })\">\n </span>\n </ng-template>\n <ng-template #otherErrorContainer>\n <ng-template *ngIf=\"regex && form?.get(key)?.errors?.pattern then patternError else otherError\"></ng-template>\n <ng-template #patternError>\n <span class=\"body-xs\">\n {{ regexError }}\n </span>\n </ng-template>\n <ng-template #otherError>\n <span class=\"body-xs\" #errSpan [innerText]=\"getOtherErrorMessage(input.value)\" [title]=\"errSpan.innerText\" ></span>\n </ng-template>\n </ng-template>\n </mat-error> \n <pep-textbox-icon *ngIf=\"renderSymbol && isFormView && xAlignment == 'right'\" matPrefix [value]=\"value\"\n [label]=\"label\" [type]=\"type\" [disabled]=\"disabled\">\n </pep-textbox-icon>\n <pep-textbox-icon *ngIf=\"renderSymbol && isFormView && (xAlignment == 'left')\" matSuffix [value]=\"value\"\n [label]=\"label\" [type]=\"type\" [disabled]=\"disabled\">\n </pep-textbox-icon>\n </mat-form-field>\n </ng-template> \n <ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngIf=\"parentFieldKey; then groupedBlock; else regularBlock\"></ng-container>\n <ng-template #regularBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true, hasParent: false }\">\n </ng-container>\n </ng-template>\n <ng-template #groupedBlock>\n <ng-container [formGroupName]=\"parentFieldKey\">\n <mat-form-field appearance=\"outline\">\n <!-- (click)=\"$event.target.select()\" -->\n <input pepTextboxValidation [id]=\"key\" [name]=\"key\" class=\" body-sm \" matInput autocomplete=\"off\" \n [placeholder]=\"!disabled ? placeholder : ''\" title=\"{{ formattedValue }}\"\n [formControlName]=\"key\" [value]=\"value\" \n (blur)=\"onBlur($event)\" (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n (keyup.enter)=\"$event?.currentTarget?.blur()\" (focus)=\"onFocus($event)\" />\n </mat-form-field>\n <!-- <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true, hasParent: true }\"></ng-container> -->\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\n <ng-template #editBlock>\n <div [ngClass]=\"{'one-row': rowSpan === 1}\">\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n </ng-container>\n </div>\n </ng-template>\n <ng-template #readOnlyBlock>\n <div class=\"pep-card-input card-flex-container\" [ngStyle]=\"{ color: textColor }\"\n [class]=\"'text-align-' + xAlignment\" [ngClass]=\"{'one-row': rowSpan === 1,\n 'multi-rows': rowSpan > 1,\n 'pep-button weak': isActive && !disabled}\"\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\">\n <span *ngIf=\"showTitle && label != ''\" class=\"body-xs title\" title=\"{{ label }}\">{{ label\n }}&nbsp;</span>\n <span [id]=\"key\" title=\"{{ formattedValue }}\" class=\"body-sm value\"\n [ngClass]=\"{'multi-rows-text': rowSpan > 1}\" [ngStyle]=\"{ '-webkit-line-clamp': rowSpan }\">{{\n formattedValue }}</span>\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button\" mat-button>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </button>\n </div>\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\n <ng-template #selectedBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n </ng-container>\n </ng-template>\n <ng-template #notSelectedBlock>\n <ng-container *ngIf=\"formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'link'\">\n <a [id]=\"key\" class=\"color-link body-sm pep-report-input\"\n [ngClass]=\"{'disable': (disabled && value === '')}\" *ngIf=\"formattedValue != null\"\n title=\"{{ formattedValue }}\" target=\"_blank\" href=\"{{ value ? value : formattedValue }}\">{{\n formattedValue }}</a>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{'readonly': disabled}\"\n title=\"{{ formattedValue }}\" [ngStyle]=\"{ color: textColor }\">{{ formattedValue }}</span>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template #emptyBlock>\n <span [id]=\"key\">&nbsp;</span>\n </ng-template>\n </ng-template>\n </ng-container>\n\n</ng-container>", styles: [":host{height:inherit;display:grid}:host>*{align-self:center;align-items:baseline}.disable-hidden{display:none}.dis-grid{display:grid}.multi-rows-text{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal!important}mat-form-field .mdc-text-field .mat-mdc-form-field-flex{padding:0 .75rem;height:var(--pep-form-field-height, 2.5rem)}\n", ""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i1$1.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i10.PepFieldTitleComponent, selector: "pep-field-title", inputs: ["label", "mandatory", "disabled", "maxFieldCharacters", "hint", "xAlignment", "showTitle", "inputLength", "fontBodyType", "multiLine"] }, { kind: "component", type: i11.PepTextboxIconComponent, selector: "pep-textbox-icon", inputs: ["value", "label", "type", "disabled"], outputs: ["iconClick"] }, { kind: "directive", type: PepTextboxValidationDirective, selector: "[pepTextboxValidation]", inputs: ["type"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
662
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTextboxComponent, decorators: [{
609
663
  type: Component,
610
- args: [{ selector: 'pep-textbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\" let-hasParent=\"hasParent\">\n <pep-field-title *ngIf=\"renderTitle && isFormView && !hasParent\" [label]=\"label\" [mandatory]=\"mandatory\"\n [disabled]=\"disabled\" [maxFieldCharacters]=\"maxFieldCharacters\" [hint]=\"hint\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\" [inputLength]=\"input.value?.length\">\n </pep-field-title>\n <mat-form-field appearance=\"outline\">\n <!-- (click)=\"$event.target.select()\" -->\n <input #input matInput pepTextboxValidation [formControlName]=\"key\" [id]=\"key\"\n [name]=\"key\" class=\" body-sm \" autocomplete=\"off\"\n maxlength=\"{{ maxFieldCharacters > 0 ? maxFieldCharacters : 99999 }}\"\n [placeholder]=\"hasParent && !disabled ? placeholder : ''\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'center' ? 'center' : xAlignment == 'right' ? 'right' : 'left' }\"\n title=\"{{ formattedValue }}\" [type]=\"type\" [value]=\"displayValue$ | async\"\n (keyup.enter)=\"$event?.currentTarget?.blur()\" (focus)=\"onFocus($event);\" (blur)=\"onBlur($event)\"\n (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n [ngClass]=\"{'disable-hidden': disabled && formattedValue?.length > 0 && (type === 'phone' || type === 'email' || type === 'link')}\" />\n<!-- [attr.inputmode]=\"inputMode\" -->\n <span\n *ngIf=\"disabled && formattedValue?.length > 0 && (type === 'phone' || type === 'email' || type === 'link')\"\n class=\"dis-grid\">\n <a href=\"javascript:void(0)\" (click)=\"anchorClicked()\" [id]=\"key\" [name]=\"key\"\n class=\"color-link body-sm \"> {{formattedValue}}</a>\n </span>\n <mat-error *ngIf=\"renderError\"> \n <ng-container *ngIf=\"mandatory && input.value.length == 0 then requiredError else otherErrorContainer\">\n </ng-container>\n <ng-template #requiredError>\n <span class=\"body-xs\" [title]=\"('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label })\"\n [innerText]=\"('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label })\">\n </span>\n </ng-template>\n <ng-template #otherErrorContainer>\n <ng-template *ngIf=\"regex && form?.get(key)?.errors?.pattern then patternError else otherError\"></ng-template>\n <ng-template #patternError>\n <span class=\"body-xs\">\n {{ regexError }}\n </span>\n </ng-template>\n <ng-template #otherError>\n <span class=\"body-xs\" [title]=\"(input.value | pepToNumber) > this.maxValue || (input.value | pepToNumber) < this.minValue ?\n ('MESSAGES.ERROR_RANGE_IS_NOT_VALID' | translate: { min: minValue, max: maxValue }) :\n ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\" [innerText]=\"(input.value | pepToNumber) > this.maxValue || (input.value | pepToNumber) < this.minValue ?\n ('MESSAGES.ERROR_RANGE_IS_NOT_VALID' | translate: { min: minValue, max: maxValue }) :\n ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\">\n </span>\n </ng-template>\n </ng-template>\n </mat-error> \n <pep-textbox-icon *ngIf=\"renderSymbol && isFormView && xAlignment == 'right'\" matPrefix [value]=\"value\"\n [label]=\"label\" [type]=\"type\" [disabled]=\"disabled\">\n </pep-textbox-icon>\n <pep-textbox-icon *ngIf=\"renderSymbol && isFormView && (xAlignment == 'left')\" matSuffix [value]=\"value\"\n [label]=\"label\" [type]=\"type\" [disabled]=\"disabled\">\n </pep-textbox-icon>\n </mat-form-field>\n </ng-template> \n <ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngIf=\"parentFieldKey; then groupedBlock; else regularBlock\"></ng-container>\n <ng-template #regularBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true, hasParent: false }\">\n </ng-container>\n </ng-template>\n <ng-template #groupedBlock>\n <ng-container [formGroupName]=\"parentFieldKey\">\n <mat-form-field appearance=\"outline\">\n <!-- (click)=\"$event.target.select()\" -->\n <input pepTextboxValidation [id]=\"key\" [name]=\"key\" class=\" body-sm \" matInput autocomplete=\"off\" \n [placeholder]=\"!disabled ? placeholder : ''\" title=\"{{ formattedValue }}\"\n [formControlName]=\"key\" [value]=\"value\" \n (blur)=\"onBlur($event)\" (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n (keyup.enter)=\"$event?.currentTarget?.blur()\" (focus)=\"onFocus($event)\" />\n </mat-form-field>\n <!-- <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true, hasParent: true }\"></ng-container> -->\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\n <ng-template #editBlock>\n <div [ngClass]=\"{'one-row': rowSpan === 1}\">\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n </ng-container>\n </div>\n </ng-template>\n <ng-template #readOnlyBlock>\n <div class=\"pep-card-input card-flex-container\" [ngStyle]=\"{ color: textColor }\"\n [class]=\"'text-align-' + xAlignment\" [ngClass]=\"{'one-row': rowSpan === 1,\n 'multi-rows': rowSpan > 1,\n 'pep-button weak': isActive && !disabled}\"\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\">\n <span *ngIf=\"showTitle && label != ''\" class=\"body-xs title\" title=\"{{ label }}\">{{ label\n }}&nbsp;</span>\n <span [id]=\"key\" title=\"{{ formattedValue }}\" class=\"body-sm value\"\n [ngClass]=\"{'multi-rows-text': rowSpan > 1}\" [ngStyle]=\"{ '-webkit-line-clamp': rowSpan }\">{{\n formattedValue }}</span>\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button\" mat-button>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </button>\n </div>\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\n <ng-template #selectedBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n </ng-container>\n </ng-template>\n <ng-template #notSelectedBlock>\n <ng-container *ngIf=\"formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'link'\">\n <a [id]=\"key\" class=\"color-link body-sm pep-report-input\"\n [ngClass]=\"{'disable': (disabled && value === '')}\" *ngIf=\"formattedValue != null\"\n title=\"{{ formattedValue }}\" target=\"_blank\" href=\"{{ value ? value : formattedValue }}\">{{\n formattedValue }}</a>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{'readonly': disabled}\"\n title=\"{{ formattedValue }}\" [ngStyle]=\"{ color: textColor }\">{{ formattedValue }}</span>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template #emptyBlock>\n <span [id]=\"key\">&nbsp;</span>\n </ng-template>\n </ng-template>\n </ng-container>\n\n</ng-container>", styles: [":host{height:inherit;display:grid}:host>*{align-self:center;align-items:baseline}.disable-hidden{display:none}.dis-grid{display:grid}.multi-rows-text{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal!important}\n"] }]
664
+ args: [{ selector: 'pep-textbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [formGroup]=\"form\">\n <ng-template #pepTemplate let-isFormView=\"isFormView\" let-hasParent=\"hasParent\">\n <pep-field-title *ngIf=\"renderTitle && isFormView && !hasParent\" [label]=\"label\" [mandatory]=\"mandatory\"\n [disabled]=\"disabled\" [maxFieldCharacters]=\"maxFieldCharacters\" [hint]=\"hint\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\" [inputLength]=\"input.value?.length\">\n </pep-field-title>\n <mat-form-field appearance=\"outline\">\n <!-- (click)=\"$event.target.select()\" -->\n <input #input matInput pepTextboxValidation [formControlName]=\"key\" [id]=\"key\"\n [name]=\"key\" class=\" body-sm \" autocomplete=\"off\"\n maxlength=\"{{ maxFieldCharacters > 0 ? maxFieldCharacters : 99999 }}\"\n [placeholder]=\"hasParent && !disabled ? placeholder : ''\"\n [ngStyle]=\"{ color: textColor, 'text-align': xAlignment == 'center' ? 'center' : xAlignment == 'right' ? 'right' : 'left' }\"\n title=\"{{ formattedValue }}\" [type]=\"type\" [value]=\"displayValue$ | async\"\n (keyup.enter)=\"$event?.currentTarget?.blur()\" (focus)=\"onFocus($event);\" (blur)=\"onBlur($event)\"\n (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n [ngClass]=\"{'disable-hidden': disabled && formattedValue?.length > 0 && (type === 'phone' || type === 'email' || type === 'link')}\" />\n<!-- [attr.inputmode]=\"inputMode\" --> \n <span *ngIf=\"disabled && formattedValue?.length > 0 && (type === 'phone' || type === 'email' || type === 'link')\"\n class=\"dis-grid\">\n <a href=\"javascript:void(0)\" (click)=\"anchorClicked()\" [id]=\"key\" [name]=\"key\"\n class=\"color-link body-sm\"> {{formattedValue}}</a>\n </span>\n <mat-error *ngIf=\"renderError\"> \n <ng-container *ngIf=\"mandatory && input.value.length == 0 then requiredError else otherErrorContainer\">\n </ng-container>\n <ng-template #requiredError>\n <span class=\"body-xs\" [title]=\"('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label })\"\n [innerText]=\"('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label })\">\n </span>\n </ng-template>\n <ng-template #otherErrorContainer>\n <ng-template *ngIf=\"regex && form?.get(key)?.errors?.pattern then patternError else otherError\"></ng-template>\n <ng-template #patternError>\n <span class=\"body-xs\">\n {{ regexError }}\n </span>\n </ng-template>\n <ng-template #otherError>\n <span class=\"body-xs\" #errSpan [innerText]=\"getOtherErrorMessage(input.value)\" [title]=\"errSpan.innerText\" ></span>\n </ng-template>\n </ng-template>\n </mat-error> \n <pep-textbox-icon *ngIf=\"renderSymbol && isFormView && xAlignment == 'right'\" matPrefix [value]=\"value\"\n [label]=\"label\" [type]=\"type\" [disabled]=\"disabled\">\n </pep-textbox-icon>\n <pep-textbox-icon *ngIf=\"renderSymbol && isFormView && (xAlignment == 'left')\" matSuffix [value]=\"value\"\n [label]=\"label\" [type]=\"type\" [disabled]=\"disabled\">\n </pep-textbox-icon>\n </mat-form-field>\n </ng-template> \n <ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngIf=\"parentFieldKey; then groupedBlock; else regularBlock\"></ng-container>\n <ng-template #regularBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true, hasParent: false }\">\n </ng-container>\n </ng-template>\n <ng-template #groupedBlock>\n <ng-container [formGroupName]=\"parentFieldKey\">\n <mat-form-field appearance=\"outline\">\n <!-- (click)=\"$event.target.select()\" -->\n <input pepTextboxValidation [id]=\"key\" [name]=\"key\" class=\" body-sm \" matInput autocomplete=\"off\" \n [placeholder]=\"!disabled ? placeholder : ''\" title=\"{{ formattedValue }}\"\n [formControlName]=\"key\" [value]=\"value\" \n (blur)=\"onBlur($event)\" (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n (keyup.enter)=\"$event?.currentTarget?.blur()\" (focus)=\"onFocus($event)\" />\n </mat-form-field>\n <!-- <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true, hasParent: true }\"></ng-container> -->\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\n <ng-template #editBlock>\n <div [ngClass]=\"{'one-row': rowSpan === 1}\">\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n </ng-container>\n </div>\n </ng-template>\n <ng-template #readOnlyBlock>\n <div class=\"pep-card-input card-flex-container\" [ngStyle]=\"{ color: textColor }\"\n [class]=\"'text-align-' + xAlignment\" [ngClass]=\"{'one-row': rowSpan === 1,\n 'multi-rows': rowSpan > 1,\n 'pep-button weak': isActive && !disabled}\"\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\">\n <span *ngIf=\"showTitle && label != ''\" class=\"body-xs title\" title=\"{{ label }}\">{{ label\n }}&nbsp;</span>\n <span [id]=\"key\" title=\"{{ formattedValue }}\" class=\"body-sm value\"\n [ngClass]=\"{'multi-rows-text': rowSpan > 1}\" [ngStyle]=\"{ '-webkit-line-clamp': rowSpan }\">{{\n formattedValue }}</span>\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button\" mat-button>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </button>\n </div>\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\n <ng-template #selectedBlock>\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false, hasParent: false }\">\n </ng-container>\n </ng-template>\n <ng-template #notSelectedBlock>\n <ng-container *ngIf=\"formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'link'\">\n <a [id]=\"key\" class=\"color-link body-sm pep-report-input\"\n [ngClass]=\"{'disable': (disabled && value === '')}\" *ngIf=\"formattedValue != null\"\n title=\"{{ formattedValue }}\" target=\"_blank\" href=\"{{ value ? value : formattedValue }}\">{{\n formattedValue }}</a>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{'readonly': disabled}\"\n title=\"{{ formattedValue }}\" [ngStyle]=\"{ color: textColor }\">{{ formattedValue }}</span>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template #emptyBlock>\n <span [id]=\"key\">&nbsp;</span>\n </ng-template>\n </ng-template>\n </ng-container>\n\n</ng-container>", styles: [":host{height:inherit;display:grid}:host>*{align-self:center;align-items:baseline}.disable-hidden{display:none}.dis-grid{display:grid}.multi-rows-text{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal!important}mat-form-field .mdc-text-field .mat-mdc-form-field-flex{padding:0 .75rem;height:var(--pep-form-field-height, 2.5rem)}\n"] }]
611
665
  }], ctorParameters: function () { return [{ type: i1.PepCustomizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.TranslateService }, { type: i1.PepUtilitiesService }]; }, propDecorators: { dataQa: [{
612
666
  type: HostBinding,
613
667
  args: ['attr.data-qa']
@@ -673,6 +727,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
673
727
  type: Output
674
728
  }], keyup: [{
675
729
  type: Output
730
+ }], validationChange: [{
731
+ type: Output
676
732
  }], input: [{
677
733
  type: ViewChild,
678
734
  args: ['input']
@@ -686,8 +742,8 @@ class PepTextboxModule {
686
742
  this.pepIconRegistry.registerIcons([pepIconSystemEdit]);
687
743
  }
688
744
  }
689
- PepTextboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTextboxModule, deps: [{ token: i1$1.PepIconRegistry }], target: i0.ɵɵFactoryTarget.NgModule });
690
- PepTextboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: PepTextboxModule, declarations: [PepTextboxComponent, PepTextboxValidationDirective], imports: [CommonModule,
745
+ PepTextboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTextboxModule, deps: [{ token: i1$1.PepIconRegistry }], target: i0.ɵɵFactoryTarget.NgModule });
746
+ PepTextboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: PepTextboxModule, declarations: [PepTextboxComponent, PepTextboxValidationDirective], imports: [CommonModule,
691
747
  ReactiveFormsModule,
692
748
  // Material modules,
693
749
  MatCommonModule,
@@ -700,7 +756,7 @@ PepTextboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
700
756
  PepIconModule,
701
757
  PepFieldTitleModule,
702
758
  PepTextboxIconModule], exports: [PepTextboxComponent] });
703
- PepTextboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTextboxModule, imports: [CommonModule,
759
+ PepTextboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTextboxModule, imports: [CommonModule,
704
760
  ReactiveFormsModule,
705
761
  // Material modules,
706
762
  MatCommonModule,
@@ -713,7 +769,7 @@ PepTextboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
713
769
  PepIconModule,
714
770
  PepFieldTitleModule,
715
771
  PepTextboxIconModule] });
716
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTextboxModule, decorators: [{
772
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTextboxModule, decorators: [{
717
773
  type: NgModule,
718
774
  args: [{
719
775
  imports: [