@pepperi-addons/ngx-lib 0.3.15-beta.12 → 0.3.15-beta.15

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 (687) hide show
  1. package/address/address.component.d.ts +27 -27
  2. package/address/address.module.d.ts +2 -2
  3. package/address/pepperi-addons-ngx-lib-address.d.ts +4 -4
  4. package/address/public-api.d.ts +2 -2
  5. package/attachment/attachment.component.d.ts +82 -82
  6. package/attachment/attachment.module.d.ts +2 -2
  7. package/attachment/pepperi-addons-ngx-lib-attachment.d.ts +4 -4
  8. package/attachment/public-api.d.ts +2 -2
  9. package/bread-crumbs/bread-crumbs.component.d.ts +23 -23
  10. package/bread-crumbs/bread-crumbs.model.d.ts +11 -11
  11. package/bread-crumbs/bread-crumbs.module.d.ts +5 -5
  12. package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.d.ts +4 -4
  13. package/bread-crumbs/public-api.d.ts +3 -3
  14. package/bundles/pepperi-addons-ngx-lib-address.umd.js +124 -124
  15. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +247 -247
  16. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js +121 -121
  17. package/bundles/pepperi-addons-ngx-lib-button.umd.js +158 -158
  18. package/bundles/pepperi-addons-ngx-lib-carousel.umd.js +788 -788
  19. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +192 -192
  20. package/bundles/pepperi-addons-ngx-lib-color.umd.js +299 -299
  21. package/bundles/pepperi-addons-ngx-lib-date.umd.js +667 -667
  22. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +183 -183
  23. package/bundles/pepperi-addons-ngx-lib-draggable-items.umd.js +151 -151
  24. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +57 -57
  25. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +260 -260
  26. package/bundles/pepperi-addons-ngx-lib-form.umd.js +3249 -3249
  27. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +87 -87
  28. package/bundles/pepperi-addons-ngx-lib-icon.umd.js +681 -681
  29. package/bundles/pepperi-addons-ngx-lib-image.umd.js +322 -322
  30. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +422 -422
  31. package/bundles/pepperi-addons-ngx-lib-link.umd.js +387 -387
  32. package/bundles/pepperi-addons-ngx-lib-list.umd.js +3191 -3191
  33. package/bundles/pepperi-addons-ngx-lib-menu.umd.js +646 -646
  34. package/bundles/pepperi-addons-ngx-lib-page-layout.umd.js +60 -60
  35. package/bundles/pepperi-addons-ngx-lib-profile-data-views-list.umd.js +543 -543
  36. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +923 -923
  37. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +1074 -1074
  38. package/bundles/pepperi-addons-ngx-lib-remote-loader.umd.js +653 -643
  39. package/bundles/pepperi-addons-ngx-lib-remote-loader.umd.js.map +1 -1
  40. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +275 -275
  41. package/bundles/pepperi-addons-ngx-lib-search.umd.js +326 -326
  42. package/bundles/pepperi-addons-ngx-lib-select.umd.js +575 -575
  43. package/bundles/pepperi-addons-ngx-lib-separator.umd.js +79 -79
  44. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +163 -163
  45. package/bundles/pepperi-addons-ngx-lib-signature.umd.js +286 -286
  46. package/bundles/pepperi-addons-ngx-lib-size-detector.umd.js +113 -113
  47. package/bundles/pepperi-addons-ngx-lib-slider.umd.js +124 -124
  48. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1780 -1780
  49. package/bundles/pepperi-addons-ngx-lib-snack-bar.umd.js +148 -148
  50. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +211 -211
  51. package/bundles/pepperi-addons-ngx-lib-textbox-icon.umd.js +80 -80
  52. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +530 -530
  53. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +129 -129
  54. package/bundles/pepperi-addons-ngx-lib.umd.js +4773 -4773
  55. package/button/button.component.d.ts +99 -99
  56. package/button/button.model.d.ts +14 -14
  57. package/button/button.module.d.ts +2 -2
  58. package/button/pepperi-addons-ngx-lib-button.d.ts +4 -4
  59. package/button/public-api.d.ts +3 -3
  60. package/carousel/carousel-item.directive.d.ts +9 -9
  61. package/carousel/carousel.component.d.ts +145 -145
  62. package/carousel/carousel.module.d.ts +2 -2
  63. package/carousel/pepperi-addons-ngx-lib-carousel.d.ts +4 -4
  64. package/carousel/public-api.d.ts +3 -3
  65. package/checkbox/checkbox.component.d.ts +47 -47
  66. package/checkbox/checkbox.module.d.ts +5 -5
  67. package/checkbox/pepperi-addons-ngx-lib-checkbox.d.ts +4 -4
  68. package/checkbox/public-api.d.ts +2 -2
  69. package/color/color-picker.component.d.ts +53 -53
  70. package/color/color.component.d.ts +26 -26
  71. package/color/color.model.d.ts +1 -1
  72. package/color/color.module.d.ts +5 -5
  73. package/color/pepperi-addons-ngx-lib-color.d.ts +5 -5
  74. package/color/public-api.d.ts +3 -3
  75. package/core/clipboard/clipboard.directive.d.ts +2 -2
  76. package/core/clipboard/clipboard.service.d.ts +2 -2
  77. package/core/clipboard/index.d.ts +1 -1
  78. package/core/clipboard/public-api.d.ts +2 -2
  79. package/core/common/directives/auto-width.directive.d.ts +16 -16
  80. package/core/common/directives/button-blur.directive.d.ts +6 -6
  81. package/core/common/directives/button-loader.directive.d.ts +23 -23
  82. package/core/common/directives/data-qa.directive.d.ts +8 -8
  83. package/core/common/directives/index.d.ts +1 -1
  84. package/core/common/directives/menu-blur.directive.d.ts +7 -7
  85. package/core/common/directives/prevent-multi-click.directive.d.ts +4 -4
  86. package/core/common/directives/print.directive.d.ts +72 -72
  87. package/core/common/directives/public-api.d.ts +7 -7
  88. package/core/common/index.d.ts +1 -1
  89. package/core/common/model/index.d.ts +1 -1
  90. package/core/common/model/papi.model.d.ts +2 -2
  91. package/core/common/model/public-api.d.ts +3 -3
  92. package/core/common/model/utilities.model.d.ts +5 -5
  93. package/core/common/model/wapi.model.d.ts +200 -200
  94. package/core/common/pipes/common-pipes.d.ts +36 -36
  95. package/core/common/pipes/index.d.ts +1 -1
  96. package/core/common/pipes/public-api.d.ts +1 -1
  97. package/core/common/public-api.d.ts +4 -4
  98. package/core/common/services/addon.service.d.ts +38 -38
  99. package/core/common/services/color.service.d.ts +48 -48
  100. package/core/common/services/cookie.service.d.ts +50 -50
  101. package/core/common/services/data-convertor.service.d.ts +41 -41
  102. package/core/common/services/file.service.d.ts +24 -24
  103. package/core/common/services/index.d.ts +1 -1
  104. package/core/common/services/jwt-helper.service.d.ts +10 -10
  105. package/core/common/services/public-api.d.ts +11 -11
  106. package/core/common/services/session.service.d.ts +15 -15
  107. package/core/common/services/translate.service.d.ts +9 -9
  108. package/core/common/services/utilities.service.d.ts +17 -17
  109. package/core/common/services/validator.service.d.ts +28 -28
  110. package/core/common/services/window-scrolling.service.d.ts +7 -7
  111. package/core/customization/customization.model.d.ts +264 -264
  112. package/core/customization/customization.service.d.ts +156 -156
  113. package/core/customization/index.d.ts +1 -1
  114. package/core/customization/public-api.d.ts +2 -2
  115. package/core/http/index.d.ts +1 -1
  116. package/core/http/interceptors/error.interceptor.d.ts +5 -5
  117. package/core/http/interceptors/index.d.ts +11 -11
  118. package/core/http/interceptors/loader.interceptor.d.ts +8 -8
  119. package/core/http/interceptors/profiler.interceptor.d.ts +5 -5
  120. package/core/http/public-api.d.ts +2 -2
  121. package/core/http/services/http.service.d.ts +25 -25
  122. package/core/http/services/loader.service.d.ts +10 -10
  123. package/core/index.d.ts +1 -1
  124. package/core/layout/index.d.ts +1 -1
  125. package/core/layout/layout.service.d.ts +33 -33
  126. package/core/layout/public-api.d.ts +2 -2
  127. package/core/layout/rtl.directive.d.ts +16 -16
  128. package/core/portal/attach.directive.d.ts +10 -10
  129. package/core/portal/index.d.ts +1 -1
  130. package/core/portal/portal.service.d.ts +9 -9
  131. package/core/portal/public-api.d.ts +3 -3
  132. package/core/portal/target.directive.d.ts +9 -9
  133. package/core/public-api.d.ts +7 -7
  134. package/core/scroll-to/index.d.ts +1 -1
  135. package/core/scroll-to/public-api.d.ts +1 -1
  136. package/core/scroll-to/scroll-to.service.d.ts +8 -8
  137. package/date/date.component.d.ts +66 -66
  138. package/date/date.model.d.ts +26 -26
  139. package/date/date.module.d.ts +5 -5
  140. package/date/pepperi-addons-ngx-lib-date.d.ts +5 -5
  141. package/date/public-api.d.ts +2 -2
  142. package/dialog/default-dialog.component.d.ts +9 -9
  143. package/dialog/dialog.component.d.ts +10 -10
  144. package/dialog/dialog.model.d.ts +27 -27
  145. package/dialog/dialog.module.d.ts +5 -5
  146. package/dialog/dialog.service.d.ts +24 -24
  147. package/dialog/pepperi-addons-ngx-lib-dialog.d.ts +5 -5
  148. package/dialog/public-api.d.ts +4 -4
  149. package/draggable-items/draggable-item/draggable-item.component.d.ts +8 -8
  150. package/draggable-items/draggable-items.component.d.ts +33 -33
  151. package/draggable-items/draggable-items.model.d.ts +7 -7
  152. package/draggable-items/draggable-items.module.d.ts +5 -5
  153. package/draggable-items/pepperi-addons-ngx-lib-draggable-items.d.ts +4 -4
  154. package/draggable-items/public-api.d.ts +4 -4
  155. package/esm2015/address/address.component.js +96 -96
  156. package/esm2015/address/address.module.js +30 -30
  157. package/esm2015/address/pepperi-addons-ngx-lib-address.js +4 -4
  158. package/esm2015/address/public-api.js +5 -5
  159. package/esm2015/attachment/attachment.component.js +208 -208
  160. package/esm2015/attachment/attachment.module.js +28 -28
  161. package/esm2015/attachment/pepperi-addons-ngx-lib-attachment.js +4 -4
  162. package/esm2015/attachment/public-api.js +5 -5
  163. package/esm2015/bread-crumbs/bread-crumbs.component.js +78 -78
  164. package/esm2015/bread-crumbs/bread-crumbs.model.js +6 -6
  165. package/esm2015/bread-crumbs/bread-crumbs.module.js +34 -34
  166. package/esm2015/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.js +4 -4
  167. package/esm2015/bread-crumbs/public-api.js +6 -6
  168. package/esm2015/button/button.component.js +127 -127
  169. package/esm2015/button/button.model.js +5 -5
  170. package/esm2015/button/button.module.js +26 -26
  171. package/esm2015/button/pepperi-addons-ngx-lib-button.js +4 -4
  172. package/esm2015/button/public-api.js +6 -6
  173. package/esm2015/carousel/carousel-item.directive.js +26 -26
  174. package/esm2015/carousel/carousel.component.js +699 -699
  175. package/esm2015/carousel/carousel.module.js +11 -11
  176. package/esm2015/carousel/pepperi-addons-ngx-lib-carousel.js +4 -4
  177. package/esm2015/carousel/public-api.js +7 -7
  178. package/esm2015/checkbox/checkbox.component.js +151 -151
  179. package/esm2015/checkbox/checkbox.module.js +39 -39
  180. package/esm2015/checkbox/pepperi-addons-ngx-lib-checkbox.js +4 -4
  181. package/esm2015/checkbox/public-api.js +5 -5
  182. package/esm2015/color/color-picker.component.js +197 -197
  183. package/esm2015/color/color.component.js +74 -74
  184. package/esm2015/color/color.model.js +1 -1
  185. package/esm2015/color/color.module.js +57 -57
  186. package/esm2015/color/pepperi-addons-ngx-lib-color.js +5 -5
  187. package/esm2015/color/public-api.js +6 -6
  188. package/esm2015/core/clipboard/clipboard.directive.js +19 -19
  189. package/esm2015/core/clipboard/clipboard.service.js +11 -11
  190. package/esm2015/core/clipboard/index.js +4 -4
  191. package/esm2015/core/clipboard/public-api.js +5 -5
  192. package/esm2015/core/common/directives/auto-width.directive.js +77 -77
  193. package/esm2015/core/common/directives/button-blur.directive.js +22 -22
  194. package/esm2015/core/common/directives/button-loader.directive.js +102 -102
  195. package/esm2015/core/common/directives/data-qa.directive.js +22 -22
  196. package/esm2015/core/common/directives/index.js +4 -4
  197. package/esm2015/core/common/directives/menu-blur.directive.js +28 -28
  198. package/esm2015/core/common/directives/prevent-multi-click.directive.js +21 -21
  199. package/esm2015/core/common/directives/print.directive.js +134 -134
  200. package/esm2015/core/common/directives/public-api.js +11 -11
  201. package/esm2015/core/common/index.js +4 -4
  202. package/esm2015/core/common/model/index.js +4 -4
  203. package/esm2015/core/common/model/papi.model.js +2 -2
  204. package/esm2015/core/common/model/public-api.js +6 -6
  205. package/esm2015/core/common/model/utilities.model.js +56 -56
  206. package/esm2015/core/common/model/wapi.model.js +155 -155
  207. package/esm2015/core/common/pipes/common-pipes.js +141 -141
  208. package/esm2015/core/common/pipes/index.js +4 -4
  209. package/esm2015/core/common/pipes/public-api.js +4 -4
  210. package/esm2015/core/common/public-api.js +7 -7
  211. package/esm2015/core/common/services/addon.service.js +160 -160
  212. package/esm2015/core/common/services/color.service.js +356 -356
  213. package/esm2015/core/common/services/cookie.service.js +147 -147
  214. package/esm2015/core/common/services/data-convertor.service.js +117 -117
  215. package/esm2015/core/common/services/file.service.js +211 -211
  216. package/esm2015/core/common/services/index.js +4 -4
  217. package/esm2015/core/common/services/jwt-helper.service.js +103 -103
  218. package/esm2015/core/common/services/public-api.js +14 -14
  219. package/esm2015/core/common/services/session.service.js +72 -72
  220. package/esm2015/core/common/services/translate.service.js +47 -47
  221. package/esm2015/core/common/services/utilities.service.js +125 -125
  222. package/esm2015/core/common/services/validator.service.js +272 -272
  223. package/esm2015/core/common/services/window-scrolling.service.js +30 -30
  224. package/esm2015/core/customization/customization.model.js +289 -289
  225. package/esm2015/core/customization/customization.service.js +777 -777
  226. package/esm2015/core/customization/index.js +4 -4
  227. package/esm2015/core/customization/public-api.js +5 -5
  228. package/esm2015/core/http/index.js +4 -4
  229. package/esm2015/core/http/interceptors/error.interceptor.js +23 -23
  230. package/esm2015/core/http/interceptors/index.js +23 -23
  231. package/esm2015/core/http/interceptors/loader.interceptor.js +32 -32
  232. package/esm2015/core/http/interceptors/profiler.interceptor.js +28 -28
  233. package/esm2015/core/http/public-api.js +5 -5
  234. package/esm2015/core/http/services/http.service.js +160 -160
  235. package/esm2015/core/http/services/loader.service.js +48 -48
  236. package/esm2015/core/index.js +4 -4
  237. package/esm2015/core/layout/index.js +4 -4
  238. package/esm2015/core/layout/layout.service.js +168 -168
  239. package/esm2015/core/layout/public-api.js +5 -5
  240. package/esm2015/core/layout/rtl.directive.js +46 -46
  241. package/esm2015/core/portal/attach.directive.js +26 -26
  242. package/esm2015/core/portal/index.js +4 -4
  243. package/esm2015/core/portal/portal.service.js +34 -34
  244. package/esm2015/core/portal/public-api.js +6 -6
  245. package/esm2015/core/portal/target.directive.js +23 -23
  246. package/esm2015/core/public-api.js +10 -10
  247. package/esm2015/core/scroll-to/index.js +4 -4
  248. package/esm2015/core/scroll-to/public-api.js +5 -5
  249. package/esm2015/core/scroll-to/scroll-to.service.js +81 -81
  250. package/esm2015/date/date.component.js +251 -251
  251. package/esm2015/date/date.model.js +44 -44
  252. package/esm2015/date/date.module.js +50 -50
  253. package/esm2015/date/pepperi-addons-ngx-lib-date.js +5 -5
  254. package/esm2015/date/public-api.js +5 -5
  255. package/esm2015/dialog/default-dialog.component.js +31 -31
  256. package/esm2015/dialog/dialog.component.js +27 -27
  257. package/esm2015/dialog/dialog.model.js +21 -21
  258. package/esm2015/dialog/dialog.module.js +39 -39
  259. package/esm2015/dialog/dialog.service.js +76 -76
  260. package/esm2015/dialog/pepperi-addons-ngx-lib-dialog.js +5 -5
  261. package/esm2015/dialog/public-api.js +7 -7
  262. package/esm2015/draggable-items/draggable-item/draggable-item.component.js +24 -24
  263. package/esm2015/draggable-items/draggable-items.component.js +91 -91
  264. package/esm2015/draggable-items/draggable-items.model.js +1 -1
  265. package/esm2015/draggable-items/draggable-items.module.js +42 -42
  266. package/esm2015/draggable-items/pepperi-addons-ngx-lib-draggable-items.js +4 -4
  267. package/esm2015/draggable-items/public-api.js +7 -7
  268. package/esm2015/field-title/field-title.component.js +31 -31
  269. package/esm2015/field-title/field-title.module.js +31 -31
  270. package/esm2015/field-title/pepperi-addons-ngx-lib-field-title.js +4 -4
  271. package/esm2015/field-title/public-api.js +5 -5
  272. package/esm2015/files-uploader/files-uploader.component.js +220 -220
  273. package/esm2015/files-uploader/files-uploader.module.js +49 -49
  274. package/esm2015/files-uploader/pepperi-addons-ngx-lib-files-uploader.js +4 -4
  275. package/esm2015/files-uploader/public-api.js +5 -5
  276. package/esm2015/form/field-generator.component.js +121 -121
  277. package/esm2015/form/form.component.js +1196 -1196
  278. package/esm2015/form/form.model.js +1 -1
  279. package/esm2015/form/form.module.js +107 -107
  280. package/esm2015/form/indicators.component.js +20 -20
  281. package/esm2015/form/internal-button.component.js +165 -165
  282. package/esm2015/form/internal-carusel.component.js +115 -115
  283. package/esm2015/form/internal-carusel.service.js +31 -31
  284. package/esm2015/form/internal-list.component.js +494 -494
  285. package/esm2015/form/internal-menu.component.js +54 -54
  286. package/esm2015/form/internal-page.component.js +350 -350
  287. package/esm2015/form/internal-page.service.js +120 -120
  288. package/esm2015/form/pepperi-addons-ngx-lib-form.js +13 -13
  289. package/esm2015/form/public-api.js +6 -6
  290. package/esm2015/group-buttons/group-buttons.component.js +57 -57
  291. package/esm2015/group-buttons/group-buttons.module.js +37 -37
  292. package/esm2015/group-buttons/pepperi-addons-ngx-lib-group-buttons.js +4 -4
  293. package/esm2015/group-buttons/public-api.js +5 -5
  294. package/esm2015/icon/icon-generated-all.model.js +100 -100
  295. package/esm2015/icon/icon-generated.model.js +389 -389
  296. package/esm2015/icon/icon-registry.service.js +22 -22
  297. package/esm2015/icon/icon.component.js +124 -124
  298. package/esm2015/icon/icon.module.js +14 -14
  299. package/esm2015/icon/icon.service.js +31 -31
  300. package/esm2015/icon/pepperi-addons-ngx-lib-icon.js +4 -4
  301. package/esm2015/icon/public-api.js +10 -10
  302. package/esm2015/image/image.component.js +228 -228
  303. package/esm2015/image/image.module.js +48 -48
  304. package/esm2015/image/image.service.js +54 -54
  305. package/esm2015/image/pepperi-addons-ngx-lib-image.js +4 -4
  306. package/esm2015/image/public-api.js +6 -6
  307. package/esm2015/images-filmstrip/images-filmstrip.component.js +372 -372
  308. package/esm2015/images-filmstrip/images-filmstrip.module.js +70 -70
  309. package/esm2015/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.js +4 -4
  310. package/esm2015/images-filmstrip/public-api.js +5 -5
  311. package/esm2015/link/link.component.js +315 -315
  312. package/esm2015/link/link.module.js +50 -50
  313. package/esm2015/link/link.pipes.js +12 -12
  314. package/esm2015/link/pepperi-addons-ngx-lib-link.js +5 -5
  315. package/esm2015/link/public-api.js +5 -5
  316. package/esm2015/list/list-actions.component.js +35 -35
  317. package/esm2015/list/list-carousel.component.js +94 -94
  318. package/esm2015/list/list-chooser.component.js +57 -57
  319. package/esm2015/list/list-pager.component.js +112 -112
  320. package/esm2015/list/list-sorting.component.js +54 -54
  321. package/esm2015/list/list-total.component.js +23 -23
  322. package/esm2015/list/list-views.component.js +71 -71
  323. package/esm2015/list/list.component.js +1127 -1127
  324. package/esm2015/list/list.model.js +3 -3
  325. package/esm2015/list/list.module.js +87 -87
  326. package/esm2015/list/list.pipes.js +39 -39
  327. package/esm2015/list/pepperi-addons-ngx-lib-list.js +6 -6
  328. package/esm2015/list/public-api.js +14 -14
  329. package/esm2015/list/virtual-scroller.js +1018 -1018
  330. package/esm2015/menu/menu-item.component.js +102 -102
  331. package/esm2015/menu/menu.component.js +173 -173
  332. package/esm2015/menu/menu.model.js +18 -18
  333. package/esm2015/menu/menu.module.js +39 -39
  334. package/esm2015/menu/pepperi-addons-ngx-lib-menu.js +5 -5
  335. package/esm2015/menu/public-api.js +6 -6
  336. package/esm2015/ngx-lib.module.js +76 -76
  337. package/esm2015/page-layout/page-layout.component.js +41 -41
  338. package/esm2015/page-layout/page-layout.module.js +20 -20
  339. package/esm2015/page-layout/pepperi-addons-ngx-lib-page-layout.js +4 -4
  340. package/esm2015/page-layout/public-api.js +5 -5
  341. package/esm2015/pepperi-addons-ngx-lib.js +8 -8
  342. package/esm2015/profile-data-views-list/pepperi-addons-ngx-lib-profile-data-views-list.js +4 -4
  343. package/esm2015/profile-data-views-list/profile-data-view/profile-data-view.component.js +38 -38
  344. package/esm2015/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.js +59 -59
  345. package/esm2015/profile-data-views-list/profile-data-views-list.component.js +86 -86
  346. package/esm2015/profile-data-views-list/profile-data-views-list.model.js +1 -1
  347. package/esm2015/profile-data-views-list/profile-data-views-list.module.js +56 -56
  348. package/esm2015/profile-data-views-list/public-api.js +8 -8
  349. package/esm2015/public-api.js +5 -5
  350. package/esm2015/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.js +6 -6
  351. package/esm2015/quantity-selector/public-api.js +5 -5
  352. package/esm2015/quantity-selector/quantity-selector-validation.directive.js +43 -43
  353. package/esm2015/quantity-selector/quantity-selector.component.js +465 -465
  354. package/esm2015/quantity-selector/quantity-selector.module.js +52 -52
  355. package/esm2015/quantity-selector/quantity-selector.pipes.js +18 -18
  356. package/esm2015/query-builder/common/model/field.js +1 -1
  357. package/esm2015/query-builder/common/model/filter.js +1 -1
  358. package/esm2015/query-builder/common/model/legacy.js +1 -1
  359. package/esm2015/query-builder/common/model/operator-unit.js +41 -41
  360. package/esm2015/query-builder/common/model/operator.js +206 -206
  361. package/esm2015/query-builder/common/model/structure.js +1 -1
  362. package/esm2015/query-builder/common/model/type-map.js +26 -26
  363. package/esm2015/query-builder/common/model/type.js +5 -5
  364. package/esm2015/query-builder/common/services/output-query.service.js +110 -110
  365. package/esm2015/query-builder/common/services/query-structure.service.js +198 -198
  366. package/esm2015/query-builder/common/services/type-convertor.service.js +39 -39
  367. package/esm2015/query-builder/pepperi-addons-ngx-lib-query-builder.js +9 -9
  368. package/esm2015/query-builder/public-api.js +8 -8
  369. package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +115 -115
  370. package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +63 -63
  371. package/esm2015/query-builder/query-builder.component.js +103 -103
  372. package/esm2015/query-builder/query-builder.module.js +34 -34
  373. package/esm2015/query-builder/query-builder.service.js +100 -100
  374. package/esm2015/remote-loader/addon-block-loader.component.js +69 -62
  375. package/esm2015/remote-loader/pepperi-addons-ngx-lib-remote-loader.js +4 -4
  376. package/esm2015/remote-loader/public-api.js +8 -8
  377. package/esm2015/remote-loader/remote-loader.component.js +116 -118
  378. package/esm2015/remote-loader/remote-loader.model.js +1 -1
  379. package/esm2015/remote-loader/remote-loader.module.js +35 -35
  380. package/esm2015/remote-loader/remote-loader.service.js +112 -107
  381. package/esm2015/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.js +4 -4
  382. package/esm2015/rich-html-textarea/public-api.js +5 -5
  383. package/esm2015/rich-html-textarea/rich-html-textarea.component.js +219 -219
  384. package/esm2015/rich-html-textarea/rich-html-textarea.module.js +56 -56
  385. package/esm2015/search/pepperi-addons-ngx-lib-search.js +4 -4
  386. package/esm2015/search/public-api.js +6 -6
  387. package/esm2015/search/search.component.js +273 -273
  388. package/esm2015/search/search.model.js +1 -1
  389. package/esm2015/search/search.module.js +44 -44
  390. package/esm2015/select/pepperi-addons-ngx-lib-select.js +4 -4
  391. package/esm2015/select/public-api.js +5 -5
  392. package/esm2015/select/select.component.js +211 -211
  393. package/esm2015/select/select.module.js +42 -42
  394. package/esm2015/separator/pepperi-addons-ngx-lib-separator.js +4 -4
  395. package/esm2015/separator/public-api.js +5 -5
  396. package/esm2015/separator/separator.component.js +62 -62
  397. package/esm2015/separator/separator.module.js +12 -12
  398. package/esm2015/side-bar/pepperi-addons-ngx-lib-side-bar.js +4 -4
  399. package/esm2015/side-bar/public-api.js +6 -6
  400. package/esm2015/side-bar/side-bar.component.js +130 -130
  401. package/esm2015/side-bar/side-bar.model.js +1 -1
  402. package/esm2015/side-bar/side-bar.module.js +33 -33
  403. package/esm2015/signature/pepperi-addons-ngx-lib-signature.js +4 -4
  404. package/esm2015/signature/public-api.js +5 -5
  405. package/esm2015/signature/signature.component.js +233 -233
  406. package/esm2015/signature/signature.module.js +54 -54
  407. package/esm2015/size-detector/pepperi-addons-ngx-lib-size-detector.js +4 -4
  408. package/esm2015/size-detector/public-api.js +5 -5
  409. package/esm2015/size-detector/size-detector.component.js +88 -88
  410. package/esm2015/size-detector/size-detector.module.js +21 -21
  411. package/esm2015/slider/pepperi-addons-ngx-lib-slider.js +4 -4
  412. package/esm2015/slider/public-api.js +5 -5
  413. package/esm2015/slider/slider.component.js +95 -95
  414. package/esm2015/slider/slider.module.js +24 -24
  415. package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +41 -41
  416. package/esm2015/smart-filters/common/filter-actions.component.js +25 -25
  417. package/esm2015/smart-filters/common/model/base-filter-component.js +259 -259
  418. package/esm2015/smart-filters/common/model/creator.js +75 -75
  419. package/esm2015/smart-filters/common/model/field.js +116 -116
  420. package/esm2015/smart-filters/common/model/filter.js +1 -1
  421. package/esm2015/smart-filters/common/model/operator.js +215 -215
  422. package/esm2015/smart-filters/common/model/type.js +1 -1
  423. package/esm2015/smart-filters/date-filter/date-filter.component.js +143 -143
  424. package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +152 -152
  425. package/esm2015/smart-filters/number-filter/number-filter.component.js +102 -102
  426. package/esm2015/smart-filters/pepperi-addons-ngx-lib-smart-filters.js +4 -4
  427. package/esm2015/smart-filters/public-api.js +18 -18
  428. package/esm2015/smart-filters/smart-filters.component.js +129 -129
  429. package/esm2015/smart-filters/smart-filters.module.js +90 -90
  430. package/esm2015/smart-filters/text-filter/text-filter.component.js +78 -78
  431. package/esm2015/snack-bar/default-snack-bar.component.js +27 -27
  432. package/esm2015/snack-bar/pepperi-addons-ngx-lib-snack-bar.js +5 -5
  433. package/esm2015/snack-bar/public-api.js +7 -7
  434. package/esm2015/snack-bar/snack-bar.component.js +25 -25
  435. package/esm2015/snack-bar/snack-bar.model.js +6 -6
  436. package/esm2015/snack-bar/snack-bar.module.js +41 -41
  437. package/esm2015/snack-bar/snack-bar.service.js +62 -62
  438. package/esm2015/textarea/pepperi-addons-ngx-lib-textarea.js +4 -4
  439. package/esm2015/textarea/public-api.js +5 -5
  440. package/esm2015/textarea/textarea.component.js +160 -160
  441. package/esm2015/textarea/textarea.module.js +50 -50
  442. package/esm2015/textbox/pepperi-addons-ngx-lib-textbox.js +5 -5
  443. package/esm2015/textbox/public-api.js +5 -5
  444. package/esm2015/textbox/textbox-validation.directive.js +85 -85
  445. package/esm2015/textbox/textbox.component.js +388 -388
  446. package/esm2015/textbox/textbox.module.js +44 -44
  447. package/esm2015/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.js +4 -4
  448. package/esm2015/textbox-icon/public-api.js +5 -5
  449. package/esm2015/textbox-icon/textbox-icon.component.js +40 -40
  450. package/esm2015/textbox-icon/textbox-icon.module.js +46 -46
  451. package/esm2015/top-bar/pepperi-addons-ngx-lib-top-bar.js +4 -4
  452. package/esm2015/top-bar/public-api.js +6 -6
  453. package/esm2015/top-bar/top-bar.component.js +98 -98
  454. package/esm2015/top-bar/top-bar.model.js +1 -1
  455. package/esm2015/top-bar/top-bar.module.js +40 -40
  456. package/fesm2015/pepperi-addons-ngx-lib-address.js +116 -116
  457. package/fesm2015/pepperi-addons-ngx-lib-attachment.js +227 -227
  458. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js +109 -109
  459. package/fesm2015/pepperi-addons-ngx-lib-button.js +149 -149
  460. package/fesm2015/pepperi-addons-ngx-lib-carousel.js +731 -731
  461. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +178 -178
  462. package/fesm2015/pepperi-addons-ngx-lib-color.js +295 -295
  463. package/fesm2015/pepperi-addons-ngx-lib-date.js +320 -320
  464. package/fesm2015/pepperi-addons-ngx-lib-dialog.js +169 -169
  465. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.js +143 -143
  466. package/fesm2015/pepperi-addons-ngx-lib-field-title.js +55 -55
  467. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +252 -252
  468. package/fesm2015/pepperi-addons-ngx-lib-form.js +2693 -2693
  469. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +84 -84
  470. package/fesm2015/pepperi-addons-ngx-lib-icon.js +662 -662
  471. package/fesm2015/pepperi-addons-ngx-lib-image.js +306 -306
  472. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +409 -409
  473. package/fesm2015/pepperi-addons-ngx-lib-link.js +357 -357
  474. package/fesm2015/pepperi-addons-ngx-lib-list.js +2661 -2661
  475. package/fesm2015/pepperi-addons-ngx-lib-menu.js +314 -314
  476. package/fesm2015/pepperi-addons-ngx-lib-page-layout.js +55 -55
  477. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.js +219 -219
  478. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +554 -554
  479. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +989 -989
  480. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.js +304 -294
  481. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.js.map +1 -1
  482. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +256 -256
  483. package/fesm2015/pepperi-addons-ngx-lib-search.js +301 -301
  484. package/fesm2015/pepperi-addons-ngx-lib-select.js +241 -241
  485. package/fesm2015/pepperi-addons-ngx-lib-separator.js +71 -71
  486. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +154 -154
  487. package/fesm2015/pepperi-addons-ngx-lib-signature.js +270 -270
  488. package/fesm2015/pepperi-addons-ngx-lib-size-detector.js +103 -103
  489. package/fesm2015/pepperi-addons-ngx-lib-slider.js +112 -112
  490. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1351 -1351
  491. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.js +137 -137
  492. package/fesm2015/pepperi-addons-ngx-lib-textarea.js +194 -194
  493. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.js +78 -78
  494. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +498 -498
  495. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +125 -125
  496. package/fesm2015/pepperi-addons-ngx-lib.js +4133 -4133
  497. package/field-title/field-title.component.d.ts +11 -11
  498. package/field-title/field-title.module.d.ts +5 -5
  499. package/field-title/pepperi-addons-ngx-lib-field-title.d.ts +4 -4
  500. package/field-title/public-api.d.ts +2 -2
  501. package/files-uploader/files-uploader.component.d.ts +53 -53
  502. package/files-uploader/files-uploader.module.d.ts +5 -5
  503. package/files-uploader/pepperi-addons-ngx-lib-files-uploader.d.ts +4 -4
  504. package/files-uploader/public-api.d.ts +2 -2
  505. package/form/field-generator.component.d.ts +36 -36
  506. package/form/form.component.d.ts +90 -90
  507. package/form/form.model.d.ts +20 -20
  508. package/form/form.module.d.ts +5 -5
  509. package/form/indicators.component.d.ts +7 -7
  510. package/form/internal-button.component.d.ts +39 -39
  511. package/form/internal-carusel.component.d.ts +38 -38
  512. package/form/internal-carusel.service.d.ts +7 -7
  513. package/form/internal-list.component.d.ts +92 -92
  514. package/form/internal-menu.component.d.ts +16 -16
  515. package/form/internal-page.component.d.ts +72 -72
  516. package/form/internal-page.service.d.ts +19 -19
  517. package/form/pepperi-addons-ngx-lib-form.d.ts +13 -13
  518. package/form/public-api.d.ts +3 -3
  519. package/group-buttons/group-buttons.component.d.ts +20 -20
  520. package/group-buttons/group-buttons.module.d.ts +5 -5
  521. package/group-buttons/pepperi-addons-ngx-lib-group-buttons.d.ts +4 -4
  522. package/group-buttons/public-api.d.ts +2 -2
  523. package/icon/icon-generated-all.model.d.ts +99 -99
  524. package/icon/icon-generated.model.d.ts +394 -394
  525. package/icon/icon-registry.service.d.ts +6 -6
  526. package/icon/icon.component.d.ts +46 -46
  527. package/icon/icon.module.d.ts +2 -2
  528. package/icon/icon.service.d.ts +10 -10
  529. package/icon/pepperi-addons-ngx-lib-icon.d.ts +4 -4
  530. package/icon/public-api.d.ts +6 -6
  531. package/image/image.component.d.ts +63 -63
  532. package/image/image.module.d.ts +5 -5
  533. package/image/image.service.d.ts +11 -11
  534. package/image/pepperi-addons-ngx-lib-image.d.ts +4 -4
  535. package/image/public-api.d.ts +3 -3
  536. package/images-filmstrip/images-filmstrip.component.d.ts +84 -84
  537. package/images-filmstrip/images-filmstrip.module.d.ts +5 -5
  538. package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.d.ts +4 -4
  539. package/images-filmstrip/public-api.d.ts +2 -2
  540. package/link/link.component.d.ts +131 -131
  541. package/link/link.module.d.ts +5 -5
  542. package/link/link.pipes.d.ts +4 -4
  543. package/link/pepperi-addons-ngx-lib-link.d.ts +5 -5
  544. package/link/public-api.d.ts +2 -2
  545. package/list/list-actions.component.d.ts +14 -14
  546. package/list/list-carousel.component.d.ts +36 -36
  547. package/list/list-chooser.component.d.ts +25 -25
  548. package/list/list-pager.component.d.ts +35 -35
  549. package/list/list-sorting.component.d.ts +26 -26
  550. package/list/list-total.component.d.ts +7 -7
  551. package/list/list-views.component.d.ts +31 -31
  552. package/list/list.component.d.ts +161 -161
  553. package/list/list.model.d.ts +31 -31
  554. package/list/list.module.d.ts +5 -5
  555. package/list/list.pipes.d.ts +11 -11
  556. package/list/pepperi-addons-ngx-lib-list.d.ts +6 -6
  557. package/list/public-api.d.ts +10 -10
  558. package/list/virtual-scroller.d.ts +176 -176
  559. package/menu/menu-item.component.d.ts +25 -25
  560. package/menu/menu.component.d.ts +43 -43
  561. package/menu/menu.model.d.ts +25 -25
  562. package/menu/menu.module.d.ts +5 -5
  563. package/menu/pepperi-addons-ngx-lib-menu.d.ts +5 -5
  564. package/menu/public-api.d.ts +3 -3
  565. package/ngx-lib.module.d.ts +2 -2
  566. package/package.json +1 -1
  567. package/page-layout/page-layout.component.d.ts +16 -16
  568. package/page-layout/page-layout.module.d.ts +2 -2
  569. package/page-layout/pepperi-addons-ngx-lib-page-layout.d.ts +4 -4
  570. package/page-layout/public-api.d.ts +2 -2
  571. package/pepperi-addons-ngx-lib.d.ts +8 -8
  572. package/profile-data-views-list/pepperi-addons-ngx-lib-profile-data-views-list.d.ts +4 -4
  573. package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +15 -15
  574. package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +21 -21
  575. package/profile-data-views-list/profile-data-views-list.component.d.ts +32 -32
  576. package/profile-data-views-list/profile-data-views-list.model.d.ts +18 -18
  577. package/profile-data-views-list/profile-data-views-list.module.d.ts +5 -5
  578. package/profile-data-views-list/public-api.d.ts +5 -5
  579. package/public-api.d.ts +2 -2
  580. package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.d.ts +6 -6
  581. package/quantity-selector/public-api.d.ts +2 -2
  582. package/quantity-selector/quantity-selector-validation.directive.d.ts +13 -13
  583. package/quantity-selector/quantity-selector.component.d.ts +98 -98
  584. package/quantity-selector/quantity-selector.module.d.ts +5 -5
  585. package/quantity-selector/quantity-selector.pipes.d.ts +4 -4
  586. package/query-builder/common/model/field.d.ts +8 -8
  587. package/query-builder/common/model/filter.d.ts +6 -6
  588. package/query-builder/common/model/legacy.d.ts +29 -29
  589. package/query-builder/common/model/operator-unit.d.ts +13 -13
  590. package/query-builder/common/model/operator.d.ts +21 -21
  591. package/query-builder/common/model/structure.d.ts +4 -4
  592. package/query-builder/common/model/type-map.d.ts +12 -12
  593. package/query-builder/common/model/type.d.ts +4 -4
  594. package/query-builder/common/services/output-query.service.d.ts +44 -44
  595. package/query-builder/common/services/query-structure.service.d.ts +75 -75
  596. package/query-builder/common/services/type-convertor.service.d.ts +10 -10
  597. package/query-builder/pepperi-addons-ngx-lib-query-builder.d.ts +9 -9
  598. package/query-builder/public-api.d.ts +5 -5
  599. package/query-builder/query-builder-item/query-builder-item.component.d.ts +37 -37
  600. package/query-builder/query-builder-section/query-builder-section.component.d.ts +27 -27
  601. package/query-builder/query-builder.component.d.ts +35 -35
  602. package/query-builder/query-builder.module.d.ts +2 -2
  603. package/query-builder/query-builder.service.d.ts +27 -27
  604. package/remote-loader/addon-block-loader.component.d.ts +25 -24
  605. package/remote-loader/pepperi-addons-ngx-lib-remote-loader.d.ts +4 -4
  606. package/remote-loader/pepperi-addons-ngx-lib-remote-loader.metadata.json +1 -1
  607. package/remote-loader/public-api.d.ts +5 -5
  608. package/remote-loader/remote-loader.component.d.ts +24 -24
  609. package/remote-loader/remote-loader.model.d.ts +34 -34
  610. package/remote-loader/remote-loader.module.d.ts +2 -2
  611. package/remote-loader/remote-loader.service.d.ts +23 -23
  612. package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.d.ts +4 -4
  613. package/rich-html-textarea/public-api.d.ts +2 -2
  614. package/rich-html-textarea/rich-html-textarea.component.d.ts +75 -75
  615. package/rich-html-textarea/rich-html-textarea.module.d.ts +5 -5
  616. package/search/pepperi-addons-ngx-lib-search.d.ts +4 -4
  617. package/search/public-api.d.ts +3 -3
  618. package/search/search.component.d.ts +61 -61
  619. package/search/search.model.d.ts +14 -14
  620. package/search/search.module.d.ts +5 -5
  621. package/select/pepperi-addons-ngx-lib-select.d.ts +4 -4
  622. package/select/public-api.d.ts +2 -2
  623. package/select/select.component.d.ts +50 -50
  624. package/select/select.module.d.ts +5 -5
  625. package/separator/pepperi-addons-ngx-lib-separator.d.ts +4 -4
  626. package/separator/public-api.d.ts +2 -2
  627. package/separator/separator.component.d.ts +19 -19
  628. package/separator/separator.module.d.ts +2 -2
  629. package/side-bar/pepperi-addons-ngx-lib-side-bar.d.ts +4 -4
  630. package/side-bar/public-api.d.ts +3 -3
  631. package/side-bar/side-bar.component.d.ts +38 -38
  632. package/side-bar/side-bar.model.d.ts +4 -4
  633. package/side-bar/side-bar.module.d.ts +5 -5
  634. package/signature/pepperi-addons-ngx-lib-signature.d.ts +4 -4
  635. package/signature/public-api.d.ts +2 -2
  636. package/signature/signature.component.d.ts +65 -65
  637. package/signature/signature.module.d.ts +5 -5
  638. package/size-detector/pepperi-addons-ngx-lib-size-detector.d.ts +4 -4
  639. package/size-detector/public-api.d.ts +2 -2
  640. package/size-detector/size-detector.component.d.ts +26 -26
  641. package/size-detector/size-detector.module.d.ts +2 -2
  642. package/slider/pepperi-addons-ngx-lib-slider.d.ts +4 -4
  643. package/slider/public-api.d.ts +2 -2
  644. package/slider/slider.component.d.ts +36 -36
  645. package/slider/slider.module.d.ts +2 -2
  646. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +12 -12
  647. package/smart-filters/common/filter-actions.component.d.ts +9 -9
  648. package/smart-filters/common/model/base-filter-component.d.ts +67 -67
  649. package/smart-filters/common/model/creator.d.ts +6 -6
  650. package/smart-filters/common/model/field.d.ts +69 -69
  651. package/smart-filters/common/model/filter.d.ts +11 -11
  652. package/smart-filters/common/model/operator.d.ts +38 -38
  653. package/smart-filters/common/model/type.d.ts +4 -4
  654. package/smart-filters/date-filter/date-filter.component.d.ts +41 -41
  655. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +39 -39
  656. package/smart-filters/number-filter/number-filter.component.d.ts +38 -38
  657. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.d.ts +4 -4
  658. package/smart-filters/public-api.d.ts +14 -14
  659. package/smart-filters/smart-filters.component.d.ts +32 -32
  660. package/smart-filters/smart-filters.module.d.ts +5 -5
  661. package/smart-filters/text-filter/text-filter.component.d.ts +17 -17
  662. package/snack-bar/default-snack-bar.component.d.ts +10 -10
  663. package/snack-bar/pepperi-addons-ngx-lib-snack-bar.d.ts +5 -5
  664. package/snack-bar/public-api.d.ts +4 -4
  665. package/snack-bar/snack-bar.component.d.ts +9 -9
  666. package/snack-bar/snack-bar.model.d.ts +8 -8
  667. package/snack-bar/snack-bar.module.d.ts +5 -5
  668. package/snack-bar/snack-bar.service.d.ts +21 -21
  669. package/textarea/pepperi-addons-ngx-lib-textarea.d.ts +4 -4
  670. package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
  671. package/textarea/public-api.d.ts +2 -2
  672. package/textarea/textarea.component.d.ts +51 -51
  673. package/textarea/textarea.module.d.ts +5 -5
  674. package/textbox/pepperi-addons-ngx-lib-textbox.d.ts +5 -5
  675. package/textbox/public-api.d.ts +2 -2
  676. package/textbox/textbox-validation.directive.d.ts +18 -18
  677. package/textbox/textbox.component.d.ts +134 -134
  678. package/textbox/textbox.module.d.ts +5 -5
  679. package/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.d.ts +4 -4
  680. package/textbox-icon/public-api.d.ts +2 -2
  681. package/textbox-icon/textbox-icon.component.d.ts +10 -10
  682. package/textbox-icon/textbox-icon.module.d.ts +5 -5
  683. package/top-bar/pepperi-addons-ngx-lib-top-bar.d.ts +4 -4
  684. package/top-bar/public-api.d.ts +3 -3
  685. package/top-bar/top-bar.component.d.ts +36 -36
  686. package/top-bar/top-bar.model.d.ts +4 -4
  687. package/top-bar/top-bar.module.d.ts +5 -5
@@ -24,1383 +24,1383 @@ import { takeUntil, distinctUntilChanged, startWith, map } from 'rxjs/operators'
24
24
  import { Subject } from 'rxjs';
25
25
  import { TranslateService } from '@ngx-translate/core';
26
26
 
27
- class PepSmartFiltersComponent {
28
- constructor(hostElement, layoutService) {
29
- this.hostElement = hostElement;
30
- this.layoutService = layoutService;
31
- this.title = '';
32
- this.filtersDataMap = new Map();
33
- this._filters = [];
34
- this._fields = [];
35
- this._useAsWebComponent = false;
36
- // @Output()
37
- // filtersClear: EventEmitter<void> = new EventEmitter<void>();
38
- this.filtersChange = new EventEmitter();
39
- this.fieldToggleChange = new EventEmitter();
40
- this.expansionPanelHeaderHeight = '*';
41
- }
42
- set filters(value) {
43
- this._filters = value;
44
- this.setupFilters(value);
45
- }
46
- get filters() {
47
- this._filters = [...this.filtersDataMap.keys()]
48
- // .filter((key) => this.filtersDataMap.get(key) !== null)
49
- .map((key) => {
50
- if (key) {
51
- return this.filtersDataMap.get(key);
52
- }
53
- });
54
- return this._filters;
55
- }
56
- set fields(value) {
57
- this._fields = value;
58
- }
59
- get fields() {
60
- return this._fields;
61
- }
62
- set useAsWebComponent(value) {
63
- if (value) {
64
- this.exportFunctionsOnHostElement();
65
- }
66
- }
67
- get useAsWebComponent() {
68
- return this._useAsWebComponent;
69
- }
70
- exportFunctionsOnHostElement() {
71
- // This is for web component usage for use those functions.
72
- this.hostElement.nativeElement.clearFilters = this.clearFilters.bind(this);
73
- this.hostElement.nativeElement.clearFilter = this.clearFilter.bind(this);
74
- this.hostElement.nativeElement.toggleField = this.toggleField.bind(this);
75
- }
76
- setupFilters(value) {
77
- this.filtersDataMap.clear();
78
- if (value) {
79
- value.forEach((filter) => {
80
- // Validate before add the filter into the map.
81
- let currentField = null;
82
- if (this.fields && this.fields.length > 0) {
83
- currentField = this.fields.find((field) => field.id === filter.fieldId);
84
- }
85
- if (currentField) {
86
- // Only if the operator is from the same type
87
- if (filter.operator.componentType.includes(currentField.componentType)) {
88
- let isOperatorUnitValid = true;
89
- if (filter.operatorUnit) {
90
- // Only if the operator unit is not from the same type
91
- if (!filter.operatorUnit.componentType.includes(currentField.componentType)) {
92
- isOperatorUnitValid = false;
93
- }
94
- }
95
- // Add the filter.
96
- if (isOperatorUnitValid) {
97
- this.filtersDataMap.set(filter.fieldId, filter);
98
- }
99
- }
100
- }
101
- });
102
- }
103
- }
104
- raiseFiltersChange() {
105
- this.filtersChange.emit(this.filters);
106
- }
107
- toggleField(index, isOpen) {
108
- this.fields[index].isOpen = isOpen;
109
- this.fieldToggleChange.emit(this.fields[index]);
110
- }
111
- clearFilters() {
112
- this.filtersDataMap.clear();
113
- }
114
- clearFilter(fieldId) {
115
- this.filtersDataMap.delete(fieldId);
116
- }
117
- // Clear all the filters and raise event that filters has change.
118
- onFiltersClear() {
119
- this.clearFilters();
120
- this.raiseFiltersChange();
121
- }
122
- // Clear the filter and raise event that filters has change.
123
- onFilterClear(field) {
124
- this.clearFilter(field.id);
125
- this.raiseFiltersChange();
126
- }
127
- // Set the filter and raise event that filters has change.
128
- onFilterChange(field, filterData) {
129
- this.clearFilter(field.id);
130
- this.filtersDataMap.set(field.id, filterData);
131
- this.raiseFiltersChange();
132
- }
133
- }
134
- PepSmartFiltersComponent.decorators = [
135
- { type: Component, args: [{
136
- selector: 'pep-smart-filters',
137
- template: "<div class=\"smart-filters-container\" dir=\"{{ layoutService.isRtl() ? 'rtl' : 'ltr' }}\">\n <div class=\"title\">\n <span class=\"body-md bold\">{{ title?.length > 0 ? title : (\"SMART_FILTERS.TITLE\" | translate)}}</span>\n <mat-chip *ngIf=\"filtersDataMap.size > 0\" [selectable]=\"false\" [removable]=\"true\" (click)=\"onFiltersClear()\"\n class=\"clear-filter pep-button chip xs weak\">\n <span class=\"body-xs ellipsis \">\n {{ \"ACTIONS.CLEAR\" | translate}}\n </span>\n </mat-chip>\n </div>\n\n <mat-accordion [displayMode]=\"'flat'\" [multi]=\"true\" class=\"pep-accordion2\">\n <mat-expansion-panel *ngFor=\"let field of fields; let i = index\" hideToggle=\"true\" [expanded]=\"field.isOpen\"\n (opened)=\"toggleField(i, true)\" (closed)=\"toggleField(i, false)\">\n <mat-expansion-panel-header [collapsedHeight]=\"expansionPanelHeaderHeight\"\n [expandedHeight]=\"expansionPanelHeaderHeight\">\n <mat-panel-title class=\"pep-spacing-element-negative\">\n <div class=\"smart-filter-title-container\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon [name]=\"field.isOpen ? 'number_minus' : 'number_plus'\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\" [title]=\"field.name\">\n {{ field.name }}\n </span>\n <mat-chip *ngIf=\"filtersDataMap.get(field.id)\" [selectable]=\"false\" [removable]=\"true\"\n (click)=\"onFilterClear(field)\" class=\"clear-filter pep-button chip xs weak\">\n <span *ngIf=\"field.componentType === 'multi-select'\" class=\"body-xs pep-spacing-element\">\n {{ filtersDataMap.get(field.id).value?.first?.length }}\n <!-- {{ field.componentType === 'multi-select' ?\n filtersDataMap.get(field.id).value?.first?.length : 1 }} -->\n </span>\n <mat-icon>\n <pep-icon name=\"system_close\"></pep-icon>\n </mat-icon>\n </mat-chip>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"expansion-content smart-filter-content\">\n <ng-container [ngSwitch]=\"field.componentType\">\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-number-filter>\n </ng-container>\n <!-- <div *ngSwitchDefault>\n </div> -->\n </ng-container>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n</div>",
138
- changeDetection: ChangeDetectionStrategy.OnPush,
139
- styles: [".smart-filters-container .title{height:calc(.5rem + 2.5rem);height:calc(var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));display:flex;flex-flow:wrap;align-items:center;justify-content:space-between}.smart-filters-container .title .clear-filter{display:flex;flex-direction:row;align-items:center;justify-content:center;margin:0 .25rem;margin:0 var(--pep-spacing-xs,.25rem);padding:0 .75rem;padding:0 var(--pep-spacing-md,.75rem)}.smart-filters-container .title .clear-filter:after{background-color:transparent}.smart-filters-container .smart-filter-title-container{display:grid;grid-auto-flow:column;grid-template-columns:auto 1fr auto;width:100%}.smart-filters-container .smart-filter-title-container>*{align-self:center}.smart-filters-container .smart-filter-title-container .clear-filter{display:flex;flex-direction:row;align-items:center;justify-content:center;-webkit-margin-end:.5rem;margin-inline-end:.5rem;-webkit-margin-end:var(--pep-spacing-sm,.5rem);margin-inline-end:var(--pep-spacing-sm,.5rem)}.smart-filters-container .smart-filter-title-container .clear-filter:after{background-color:transparent}.smart-filters-container .smart-filter-title-container .mat-icon pep-icon{height:.75rem;width:.75rem}", ".smart-filters-container .clear-filter.weak{background:rgba(26,26,26,.12);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.12)}.smart-filters-container .clear-filter.weak:hover{background:rgba(26,26,26,.16);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.16)}.smart-filters-container .clear-filter.weak:focus{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative;box-shadow:0 0 0 .25rem rgba(23,102,166,.5);box-shadow:0 0 0 var(--pep-spacing-xs,.25rem) hsla(var(--pep-color-text-link-h,207),var(--pep-color-text-link-s,76%),var(--pep-color-text-link-l,37%),.5)}.smart-filters-container .clear-filter.weak:focus:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}.smart-filters-container .clear-filter.weak:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}.smart-filters-container .clear-filter.weak:active{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative}.smart-filters-container .clear-filter.weak:active:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}.smart-filters-container .clear-filter.weak:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;color:rgba(26,26,26,.35)!important;color:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)!important;background:rgba(26,26,26,.04)!important;background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.04)!important}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled):after{border:unset}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled) .svg-icon{fill:rgba(26,26,26,.35);fill:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:rgba(26,26,26,.35);stroke:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)}"]
140
- },] }
141
- ];
142
- PepSmartFiltersComponent.ctorParameters = () => [
143
- { type: ElementRef },
144
- { type: PepLayoutService }
145
- ];
146
- PepSmartFiltersComponent.propDecorators = {
147
- title: [{ type: Input }],
148
- filters: [{ type: Input }],
149
- fields: [{ type: Input }],
150
- useAsWebComponent: [{ type: Input }],
151
- filtersChange: [{ type: Output }],
152
- fieldToggleChange: [{ type: Output }]
27
+ class PepSmartFiltersComponent {
28
+ constructor(hostElement, layoutService) {
29
+ this.hostElement = hostElement;
30
+ this.layoutService = layoutService;
31
+ this.title = '';
32
+ this.filtersDataMap = new Map();
33
+ this._filters = [];
34
+ this._fields = [];
35
+ this._useAsWebComponent = false;
36
+ // @Output()
37
+ // filtersClear: EventEmitter<void> = new EventEmitter<void>();
38
+ this.filtersChange = new EventEmitter();
39
+ this.fieldToggleChange = new EventEmitter();
40
+ this.expansionPanelHeaderHeight = '*';
41
+ }
42
+ set filters(value) {
43
+ this._filters = value;
44
+ this.setupFilters(value);
45
+ }
46
+ get filters() {
47
+ this._filters = [...this.filtersDataMap.keys()]
48
+ // .filter((key) => this.filtersDataMap.get(key) !== null)
49
+ .map((key) => {
50
+ if (key) {
51
+ return this.filtersDataMap.get(key);
52
+ }
53
+ });
54
+ return this._filters;
55
+ }
56
+ set fields(value) {
57
+ this._fields = value;
58
+ }
59
+ get fields() {
60
+ return this._fields;
61
+ }
62
+ set useAsWebComponent(value) {
63
+ if (value) {
64
+ this.exportFunctionsOnHostElement();
65
+ }
66
+ }
67
+ get useAsWebComponent() {
68
+ return this._useAsWebComponent;
69
+ }
70
+ exportFunctionsOnHostElement() {
71
+ // This is for web component usage for use those functions.
72
+ this.hostElement.nativeElement.clearFilters = this.clearFilters.bind(this);
73
+ this.hostElement.nativeElement.clearFilter = this.clearFilter.bind(this);
74
+ this.hostElement.nativeElement.toggleField = this.toggleField.bind(this);
75
+ }
76
+ setupFilters(value) {
77
+ this.filtersDataMap.clear();
78
+ if (value) {
79
+ value.forEach((filter) => {
80
+ // Validate before add the filter into the map.
81
+ let currentField = null;
82
+ if (this.fields && this.fields.length > 0) {
83
+ currentField = this.fields.find((field) => field.id === filter.fieldId);
84
+ }
85
+ if (currentField) {
86
+ // Only if the operator is from the same type
87
+ if (filter.operator.componentType.includes(currentField.componentType)) {
88
+ let isOperatorUnitValid = true;
89
+ if (filter.operatorUnit) {
90
+ // Only if the operator unit is not from the same type
91
+ if (!filter.operatorUnit.componentType.includes(currentField.componentType)) {
92
+ isOperatorUnitValid = false;
93
+ }
94
+ }
95
+ // Add the filter.
96
+ if (isOperatorUnitValid) {
97
+ this.filtersDataMap.set(filter.fieldId, filter);
98
+ }
99
+ }
100
+ }
101
+ });
102
+ }
103
+ }
104
+ raiseFiltersChange() {
105
+ this.filtersChange.emit(this.filters);
106
+ }
107
+ toggleField(index, isOpen) {
108
+ this.fields[index].isOpen = isOpen;
109
+ this.fieldToggleChange.emit(this.fields[index]);
110
+ }
111
+ clearFilters() {
112
+ this.filtersDataMap.clear();
113
+ }
114
+ clearFilter(fieldId) {
115
+ this.filtersDataMap.delete(fieldId);
116
+ }
117
+ // Clear all the filters and raise event that filters has change.
118
+ onFiltersClear() {
119
+ this.clearFilters();
120
+ this.raiseFiltersChange();
121
+ }
122
+ // Clear the filter and raise event that filters has change.
123
+ onFilterClear(field) {
124
+ this.clearFilter(field.id);
125
+ this.raiseFiltersChange();
126
+ }
127
+ // Set the filter and raise event that filters has change.
128
+ onFilterChange(field, filterData) {
129
+ this.clearFilter(field.id);
130
+ this.filtersDataMap.set(field.id, filterData);
131
+ this.raiseFiltersChange();
132
+ }
133
+ }
134
+ PepSmartFiltersComponent.decorators = [
135
+ { type: Component, args: [{
136
+ selector: 'pep-smart-filters',
137
+ template: "<div class=\"smart-filters-container\" dir=\"{{ layoutService.isRtl() ? 'rtl' : 'ltr' }}\">\n <div class=\"title\">\n <span class=\"body-md bold\">{{ title?.length > 0 ? title : (\"SMART_FILTERS.TITLE\" | translate)}}</span>\n <mat-chip *ngIf=\"filtersDataMap.size > 0\" [selectable]=\"false\" [removable]=\"true\" (click)=\"onFiltersClear()\"\n class=\"clear-filter pep-button chip xs weak\">\n <span class=\"body-xs ellipsis \">\n {{ \"ACTIONS.CLEAR\" | translate}}\n </span>\n </mat-chip>\n </div>\n\n <mat-accordion [displayMode]=\"'flat'\" [multi]=\"true\" class=\"pep-accordion2\">\n <mat-expansion-panel *ngFor=\"let field of fields; let i = index\" hideToggle=\"true\" [expanded]=\"field.isOpen\"\n (opened)=\"toggleField(i, true)\" (closed)=\"toggleField(i, false)\">\n <mat-expansion-panel-header [collapsedHeight]=\"expansionPanelHeaderHeight\"\n [expandedHeight]=\"expansionPanelHeaderHeight\">\n <mat-panel-title class=\"pep-spacing-element-negative\">\n <div class=\"smart-filter-title-container\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon [name]=\"field.isOpen ? 'number_minus' : 'number_plus'\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\" [title]=\"field.name\">\n {{ field.name }}\n </span>\n <mat-chip *ngIf=\"filtersDataMap.get(field.id)\" [selectable]=\"false\" [removable]=\"true\"\n (click)=\"onFilterClear(field)\" class=\"clear-filter pep-button chip xs weak\">\n <span *ngIf=\"field.componentType === 'multi-select'\" class=\"body-xs pep-spacing-element\">\n {{ filtersDataMap.get(field.id).value?.first?.length }}\n <!-- {{ field.componentType === 'multi-select' ?\n filtersDataMap.get(field.id).value?.first?.length : 1 }} -->\n </span>\n <mat-icon>\n <pep-icon name=\"system_close\"></pep-icon>\n </mat-icon>\n </mat-chip>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"expansion-content smart-filter-content\">\n <ng-container [ngSwitch]=\"field.componentType\">\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-number-filter>\n </ng-container>\n <!-- <div *ngSwitchDefault>\n </div> -->\n </ng-container>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n</div>",
138
+ changeDetection: ChangeDetectionStrategy.OnPush,
139
+ styles: [".smart-filters-container .title{height:calc(.5rem + 2.5rem);height:calc(var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));display:flex;flex-flow:wrap;align-items:center;justify-content:space-between}.smart-filters-container .title .clear-filter{display:flex;flex-direction:row;align-items:center;justify-content:center;margin:0 .25rem;margin:0 var(--pep-spacing-xs,.25rem);padding:0 .75rem;padding:0 var(--pep-spacing-md,.75rem)}.smart-filters-container .title .clear-filter:after{background-color:transparent}.smart-filters-container .smart-filter-title-container{display:grid;grid-auto-flow:column;grid-template-columns:auto 1fr auto;width:100%}.smart-filters-container .smart-filter-title-container>*{align-self:center}.smart-filters-container .smart-filter-title-container .clear-filter{display:flex;flex-direction:row;align-items:center;justify-content:center;-webkit-margin-end:.5rem;margin-inline-end:.5rem;-webkit-margin-end:var(--pep-spacing-sm,.5rem);margin-inline-end:var(--pep-spacing-sm,.5rem)}.smart-filters-container .smart-filter-title-container .clear-filter:after{background-color:transparent}.smart-filters-container .smart-filter-title-container .mat-icon pep-icon{height:.75rem;width:.75rem}", ".smart-filters-container .clear-filter.weak{background:rgba(26,26,26,.12);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.12)}.smart-filters-container .clear-filter.weak:hover{background:rgba(26,26,26,.16);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.16)}.smart-filters-container .clear-filter.weak:focus{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative;box-shadow:0 0 0 .25rem rgba(23,102,166,.5);box-shadow:0 0 0 var(--pep-spacing-xs,.25rem) hsla(var(--pep-color-text-link-h,207),var(--pep-color-text-link-s,76%),var(--pep-color-text-link-l,37%),.5)}.smart-filters-container .clear-filter.weak:focus:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}.smart-filters-container .clear-filter.weak:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}.smart-filters-container .clear-filter.weak:active{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative}.smart-filters-container .clear-filter.weak:active:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}.smart-filters-container .clear-filter.weak:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;color:rgba(26,26,26,.35)!important;color:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)!important;background:rgba(26,26,26,.04)!important;background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.04)!important}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled):after{border:unset}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled) .svg-icon{fill:rgba(26,26,26,.35);fill:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:rgba(26,26,26,.35);stroke:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)}"]
140
+ },] }
141
+ ];
142
+ PepSmartFiltersComponent.ctorParameters = () => [
143
+ { type: ElementRef },
144
+ { type: PepLayoutService }
145
+ ];
146
+ PepSmartFiltersComponent.propDecorators = {
147
+ title: [{ type: Input }],
148
+ filters: [{ type: Input }],
149
+ fields: [{ type: Input }],
150
+ useAsWebComponent: [{ type: Input }],
151
+ filtersChange: [{ type: Output }],
152
+ fieldToggleChange: [{ type: Output }]
153
153
  };
154
154
 
155
- class PepFilterActionsComponent {
156
- constructor() {
157
- this.clearClick = new EventEmitter();
158
- this.applyClick = new EventEmitter();
159
- }
160
- clear() {
161
- this.clearClick.emit();
162
- }
163
- apply() {
164
- this.applyClick.emit();
165
- }
166
- }
167
- PepFilterActionsComponent.decorators = [
168
- { type: Component, args: [{
169
- selector: 'pep-filter-actions',
170
- template: "<div [formGroup]=\"form\" class=\"filter-actions pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button sm weak\" (click)=\"clear()\">\n {{ 'ACTIONS.CLEAR' | translate }}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button sm strong\" (click)=\"apply()\" [disabled]=\"form.invalid\">\n {{ 'ACTIONS.APPLY' | translate }}\n </button>\n</div>",
171
- styles: [".filter-actions{margin:1rem 0 calc(1rem / 2);margin:var(--pep-spacing-lg,1rem) 0 calc(var(--pep-spacing-lg, 1rem) / 2);display:flex;justify-content:flex-end}"]
172
- },] }
173
- ];
174
- PepFilterActionsComponent.propDecorators = {
175
- form: [{ type: Input }],
176
- clearClick: [{ type: Output }],
177
- applyClick: [{ type: Output }]
155
+ class PepFilterActionsComponent {
156
+ constructor() {
157
+ this.clearClick = new EventEmitter();
158
+ this.applyClick = new EventEmitter();
159
+ }
160
+ clear() {
161
+ this.clearClick.emit();
162
+ }
163
+ apply() {
164
+ this.applyClick.emit();
165
+ }
166
+ }
167
+ PepFilterActionsComponent.decorators = [
168
+ { type: Component, args: [{
169
+ selector: 'pep-filter-actions',
170
+ template: "<div [formGroup]=\"form\" class=\"filter-actions pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button sm weak\" (click)=\"clear()\">\n {{ 'ACTIONS.CLEAR' | translate }}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button sm strong\" (click)=\"apply()\" [disabled]=\"form.invalid\">\n {{ 'ACTIONS.APPLY' | translate }}\n </button>\n</div>",
171
+ styles: [".filter-actions{margin:1rem 0 calc(1rem / 2);margin:var(--pep-spacing-lg,1rem) 0 calc(var(--pep-spacing-lg, 1rem) / 2);display:flex;justify-content:flex-end}"]
172
+ },] }
173
+ ];
174
+ PepFilterActionsComponent.propDecorators = {
175
+ form: [{ type: Input }],
176
+ clearClick: [{ type: Output }],
177
+ applyClick: [{ type: Output }]
178
178
  };
179
179
 
180
- class IPepSmartFilterOperator {
181
- }
182
- const Equals = {
183
- id: 'eq',
184
- name: 'EQUAL',
185
- short: '=',
186
- componentType: [
187
- 'number',
188
- 'boolean'
189
- // 'multi-select',
190
- // 'date',
191
- // 'text',
192
- // 'auto-complete',
193
- // 'select',
194
- ],
195
- };
196
- const NotEqual = {
197
- id: 'neq',
198
- name: 'NOT_EQUAL',
199
- short: '<>',
200
- componentType: [
201
- 'number',
202
- // 'multi-select',
203
- // 'date',
204
- // 'text',
205
- // 'auto-complete',
206
- // 'select',
207
- ],
208
- };
209
- const LessThan = {
210
- id: 'lt',
211
- name: 'LESS_THEN',
212
- short: '<',
213
- componentType: ['number'],
214
- };
215
- // const LessThanOrEquals: IPepSmartFilterOperator = {
216
- // id: 'ltoe',
217
- // name: 'LESS_THEN_OR_EQUAL',
218
- // short: '<=',
219
- // type: ['number'],
220
- // };
221
- const GreaterThan = {
222
- id: 'gt',
223
- name: 'GREATER_THEN',
224
- short: '>',
225
- componentType: ['number'],
226
- };
227
- // const GreaterThanOrEquals: IPepSmartFilterOperator = {
228
- // id: 'gtoe',
229
- // name: 'GREATER_THEN_OR_EQUAL',
230
- // short: '>=',
231
- // type: ['number'],
232
- // };
233
- const NumberRange = {
234
- id: 'numberRange',
235
- name: 'NUMBER_RANGE',
236
- short: 'Range',
237
- componentType: ['number'],
238
- };
239
- const Contains = {
240
- id: 'contains',
241
- name: 'CONTAINS',
242
- short: 'Contains',
243
- componentType: ['text'],
244
- };
245
- // const BeginsWith: Operator = {
246
- // id: 'beginsWith',
247
- // name: 'Begins With',
248
- // short: 'Begins With',
249
- // type: ['text'],
250
- // };
251
- // const EndsWith: Operator = {
252
- // id: 'endsWith',
253
- // name: 'Ends With',
254
- // short: 'End With',
255
- // type: ['text'],
256
- // };
257
- // const After: Operator = {
258
- // id: 'after',
259
- // name: 'After',
260
- // short: 'After',
261
- // type: ['date'],
262
- // };
263
- // const Before: Operator = {
264
- // id: 'before',
265
- // name: 'Before',
266
- // short: 'Before',
267
- // type: ['date'],
268
- // };
269
- const InTheLast = {
270
- id: 'inTheLast',
271
- name: 'IN_THE_LAST',
272
- short: 'In the last',
273
- componentType: ['date'],
274
- };
275
- const Today = {
276
- id: 'today',
277
- name: 'TODAY',
278
- short: 'Today',
279
- componentType: ['date'],
280
- };
281
- const ThisWeek = {
282
- id: 'thisWeek',
283
- name: 'THIS_WEEK',
284
- short: 'This week',
285
- componentType: ['date'],
286
- };
287
- const ThisMonth = {
288
- id: 'thisMonth',
289
- name: 'THIS_MONTH',
290
- short: 'This month',
291
- componentType: ['date'],
292
- };
293
- const DateRange = {
294
- id: 'dateRange',
295
- name: 'DATE_RANGE',
296
- short: 'Range',
297
- componentType: ['date'],
298
- };
299
- const DueIn = {
300
- id: 'dueIn',
301
- name: 'DUE_IN',
302
- short: 'Due in',
303
- componentType: ['date'],
304
- };
305
- const On = {
306
- id: 'on',
307
- name: 'ON',
308
- short: 'On',
309
- componentType: ['date'],
310
- };
311
- const NotInTheLast = {
312
- id: 'notInTheLast',
313
- name: 'NOT_IN_THE_LAST',
314
- short: 'Not in the last',
315
- componentType: ['date'],
316
- };
317
- const NotDueIn = {
318
- id: 'notDueIn',
319
- name: 'NOT_DUE_IN',
320
- short: 'Not due in',
321
- componentType: ['date'],
322
- };
323
- const IsEmpty = {
324
- id: 'isEmpty',
325
- name: 'IS_EMPTY',
326
- short: 'Is empty',
327
- componentType: ['date'],
328
- };
329
- const IsNotEmpty = {
330
- id: 'isNotEmpty',
331
- name: 'IS_NOT_EMPTY',
332
- short: 'Is not empty',
333
- componentType: ['date'],
334
- };
335
- const In = {
336
- id: 'in',
337
- name: 'IN',
338
- short: 'In',
339
- componentType: ['multi-select'],
340
- };
341
- const PepSmartFilterOperators = {
342
- Equals: Equals,
343
- NotEqual: NotEqual,
344
- LessThan: LessThan,
345
- // LessThanOrEquals: LessThanOrEquals,
346
- GreaterThan: GreaterThan,
347
- // GreaterThanOrEquals: GreaterThanOrEquals,
348
- NumberRange: NumberRange,
349
- Contains: Contains,
350
- // BeginsWith: BeginsWith,
351
- // EndsWith: EndsWith,
352
- // After: After,
353
- // Before: Before,
354
- InTheLast: InTheLast,
355
- Today: Today,
356
- ThisWeek: ThisWeek,
357
- ThisMonth: ThisMonth,
358
- DateRange: DateRange,
359
- DueIn: DueIn,
360
- On: On,
361
- NotInTheLast: NotInTheLast,
362
- NotDueIn: NotDueIn,
363
- IsEmpty: IsEmpty,
364
- IsNotEmpty: IsNotEmpty,
365
- In: In,
366
- };
367
- class IPepSmartFilterOperatorUnit {
368
- }
369
- const Days = {
370
- id: 'days',
371
- name: 'DAYS',
372
- componentType: ['date'],
373
- };
374
- const Weeks = {
375
- id: 'weeks',
376
- name: 'WEEKS',
377
- componentType: ['date'],
378
- };
379
- const Months = {
380
- id: 'months',
381
- name: 'MONTHS',
382
- componentType: ['date'],
383
- };
384
- const Years = {
385
- id: 'years',
386
- name: 'YEARS',
387
- componentType: ['date'],
388
- };
389
- const PepSmartFilterOperatorUnits = {
390
- Days: Days,
391
- Weeks: Weeks,
392
- Months: Months,
393
- Years: Years,
180
+ class IPepSmartFilterOperator {
181
+ }
182
+ const Equals = {
183
+ id: 'eq',
184
+ name: 'EQUAL',
185
+ short: '=',
186
+ componentType: [
187
+ 'number',
188
+ 'boolean'
189
+ // 'multi-select',
190
+ // 'date',
191
+ // 'text',
192
+ // 'auto-complete',
193
+ // 'select',
194
+ ],
195
+ };
196
+ const NotEqual = {
197
+ id: 'neq',
198
+ name: 'NOT_EQUAL',
199
+ short: '<>',
200
+ componentType: [
201
+ 'number',
202
+ // 'multi-select',
203
+ // 'date',
204
+ // 'text',
205
+ // 'auto-complete',
206
+ // 'select',
207
+ ],
208
+ };
209
+ const LessThan = {
210
+ id: 'lt',
211
+ name: 'LESS_THEN',
212
+ short: '<',
213
+ componentType: ['number'],
214
+ };
215
+ // const LessThanOrEquals: IPepSmartFilterOperator = {
216
+ // id: 'ltoe',
217
+ // name: 'LESS_THEN_OR_EQUAL',
218
+ // short: '<=',
219
+ // type: ['number'],
220
+ // };
221
+ const GreaterThan = {
222
+ id: 'gt',
223
+ name: 'GREATER_THEN',
224
+ short: '>',
225
+ componentType: ['number'],
226
+ };
227
+ // const GreaterThanOrEquals: IPepSmartFilterOperator = {
228
+ // id: 'gtoe',
229
+ // name: 'GREATER_THEN_OR_EQUAL',
230
+ // short: '>=',
231
+ // type: ['number'],
232
+ // };
233
+ const NumberRange = {
234
+ id: 'numberRange',
235
+ name: 'NUMBER_RANGE',
236
+ short: 'Range',
237
+ componentType: ['number'],
238
+ };
239
+ const Contains = {
240
+ id: 'contains',
241
+ name: 'CONTAINS',
242
+ short: 'Contains',
243
+ componentType: ['text'],
244
+ };
245
+ // const BeginsWith: Operator = {
246
+ // id: 'beginsWith',
247
+ // name: 'Begins With',
248
+ // short: 'Begins With',
249
+ // type: ['text'],
250
+ // };
251
+ // const EndsWith: Operator = {
252
+ // id: 'endsWith',
253
+ // name: 'Ends With',
254
+ // short: 'End With',
255
+ // type: ['text'],
256
+ // };
257
+ // const After: Operator = {
258
+ // id: 'after',
259
+ // name: 'After',
260
+ // short: 'After',
261
+ // type: ['date'],
262
+ // };
263
+ // const Before: Operator = {
264
+ // id: 'before',
265
+ // name: 'Before',
266
+ // short: 'Before',
267
+ // type: ['date'],
268
+ // };
269
+ const InTheLast = {
270
+ id: 'inTheLast',
271
+ name: 'IN_THE_LAST',
272
+ short: 'In the last',
273
+ componentType: ['date'],
274
+ };
275
+ const Today = {
276
+ id: 'today',
277
+ name: 'TODAY',
278
+ short: 'Today',
279
+ componentType: ['date'],
280
+ };
281
+ const ThisWeek = {
282
+ id: 'thisWeek',
283
+ name: 'THIS_WEEK',
284
+ short: 'This week',
285
+ componentType: ['date'],
286
+ };
287
+ const ThisMonth = {
288
+ id: 'thisMonth',
289
+ name: 'THIS_MONTH',
290
+ short: 'This month',
291
+ componentType: ['date'],
292
+ };
293
+ const DateRange = {
294
+ id: 'dateRange',
295
+ name: 'DATE_RANGE',
296
+ short: 'Range',
297
+ componentType: ['date'],
298
+ };
299
+ const DueIn = {
300
+ id: 'dueIn',
301
+ name: 'DUE_IN',
302
+ short: 'Due in',
303
+ componentType: ['date'],
304
+ };
305
+ const On = {
306
+ id: 'on',
307
+ name: 'ON',
308
+ short: 'On',
309
+ componentType: ['date'],
310
+ };
311
+ const NotInTheLast = {
312
+ id: 'notInTheLast',
313
+ name: 'NOT_IN_THE_LAST',
314
+ short: 'Not in the last',
315
+ componentType: ['date'],
316
+ };
317
+ const NotDueIn = {
318
+ id: 'notDueIn',
319
+ name: 'NOT_DUE_IN',
320
+ short: 'Not due in',
321
+ componentType: ['date'],
322
+ };
323
+ const IsEmpty = {
324
+ id: 'isEmpty',
325
+ name: 'IS_EMPTY',
326
+ short: 'Is empty',
327
+ componentType: ['date'],
328
+ };
329
+ const IsNotEmpty = {
330
+ id: 'isNotEmpty',
331
+ name: 'IS_NOT_EMPTY',
332
+ short: 'Is not empty',
333
+ componentType: ['date'],
334
+ };
335
+ const In = {
336
+ id: 'in',
337
+ name: 'IN',
338
+ short: 'In',
339
+ componentType: ['multi-select'],
340
+ };
341
+ const PepSmartFilterOperators = {
342
+ Equals: Equals,
343
+ NotEqual: NotEqual,
344
+ LessThan: LessThan,
345
+ // LessThanOrEquals: LessThanOrEquals,
346
+ GreaterThan: GreaterThan,
347
+ // GreaterThanOrEquals: GreaterThanOrEquals,
348
+ NumberRange: NumberRange,
349
+ Contains: Contains,
350
+ // BeginsWith: BeginsWith,
351
+ // EndsWith: EndsWith,
352
+ // After: After,
353
+ // Before: Before,
354
+ InTheLast: InTheLast,
355
+ Today: Today,
356
+ ThisWeek: ThisWeek,
357
+ ThisMonth: ThisMonth,
358
+ DateRange: DateRange,
359
+ DueIn: DueIn,
360
+ On: On,
361
+ NotInTheLast: NotInTheLast,
362
+ NotDueIn: NotDueIn,
363
+ IsEmpty: IsEmpty,
364
+ IsNotEmpty: IsNotEmpty,
365
+ In: In,
366
+ };
367
+ class IPepSmartFilterOperatorUnit {
368
+ }
369
+ const Days = {
370
+ id: 'days',
371
+ name: 'DAYS',
372
+ componentType: ['date'],
373
+ };
374
+ const Weeks = {
375
+ id: 'weeks',
376
+ name: 'WEEKS',
377
+ componentType: ['date'],
378
+ };
379
+ const Months = {
380
+ id: 'months',
381
+ name: 'MONTHS',
382
+ componentType: ['date'],
383
+ };
384
+ const Years = {
385
+ id: 'years',
386
+ name: 'YEARS',
387
+ componentType: ['date'],
388
+ };
389
+ const PepSmartFilterOperatorUnits = {
390
+ Days: Days,
391
+ Weeks: Weeks,
392
+ Months: Months,
393
+ Years: Years,
394
394
  };
395
395
 
396
- class BaseFilterComponent {
397
- constructor(viewContainerRef, injector, resolver, builder, translate, validator, renderer) {
398
- this.viewContainerRef = viewContainerRef;
399
- this.injector = injector;
400
- this.resolver = resolver;
401
- this.builder = builder;
402
- this.translate = translate;
403
- this.validator = validator;
404
- this.renderer = renderer;
405
- this._fieldIdWithNoDots = '';
406
- this.emitOnChange = false;
407
- this.inline = false;
408
- this.showActionButtons = true;
409
- this.renderTitle = true;
410
- this.filterClear = new EventEmitter();
411
- this.filterChange = new EventEmitter();
412
- this.OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';
413
- this.OPERATOR_UNITS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATOR_UNITS';
414
- this._destroyed = new Subject();
415
- }
416
- set field(value) {
417
- this._field = value;
418
- this._fieldIdWithNoDots = value ? value.id.replace(/\./g, '_') : '';
419
- this.setupForm();
420
- }
421
- get field() {
422
- return this._field;
423
- }
424
- set filter(value) {
425
- this._filter = value;
426
- this.setupFilter();
427
- }
428
- get filter() {
429
- return this._filter;
430
- }
431
- set parentForm(form) {
432
- this._parentForm = form;
433
- this.updateParentForm();
434
- }
435
- set operator(operator) {
436
- var _a;
437
- if ((operator === null || operator === void 0 ? void 0 : operator.id) != ((_a = this._operator) === null || _a === void 0 ? void 0 : _a.id)) {
438
- // Validate operator
439
- const index = this.operators.findIndex((o) => o.id === operator.id);
440
- if (index >= 0) {
441
- this._operator = this.operators[index];
442
- }
443
- else {
444
- this._operator = this.operators[0];
445
- }
446
- this.form.reset();
447
- this.updateValidity();
448
- }
449
- }
450
- get operator() {
451
- return this._operator;
452
- }
453
- set operatorUnit(operatorUnit) {
454
- // Validate operator unit
455
- if (operatorUnit) {
456
- const index = this.operatorUnits.findIndex((ou) => ou.id === operatorUnit.id);
457
- if (index >= 0) {
458
- this._operatorUnit = this.operatorUnits[index];
459
- }
460
- else {
461
- this._operatorUnit = this.operatorUnits[0];
462
- }
463
- }
464
- else {
465
- this._operatorUnit = undefined;
466
- }
467
- }
468
- get operatorUnit() {
469
- return this._operatorUnit;
470
- }
471
- get firstControlKey() {
472
- return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';
473
- }
474
- get firstControl() {
475
- return this.form.get(this.firstControlKey);
476
- }
477
- get secondControlKey() {
478
- return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';
479
- }
480
- get secondControl() {
481
- return this.form.get(this.secondControlKey);
482
- }
483
- createActionsComponent() {
484
- const factory = this.resolver.resolveComponentFactory(PepFilterActionsComponent);
485
- this.actionsContainerRef = factory.create(this.injector);
486
- this.actionsContainerRef.instance.form = this.form;
487
- this.actionsContainerRef.instance.applyClick.subscribe(() => this.applyFilter());
488
- this.actionsContainerRef.instance.clearClick.subscribe(() => this.clearFilter());
489
- this.viewContainerRef.insert(this.actionsContainerRef.hostView);
490
- }
491
- setupForm() {
492
- const formValue = {};
493
- formValue[this.firstControlKey] = [];
494
- formValue[this.secondControlKey] = [];
495
- // this.form.patchValue(formValue);
496
- this.form = this.builder.group(formValue);
497
- // this.form[this.firstControlKey] = [];
498
- // this.form[this.secondControlKey] = [];
499
- this.setupOperators();
500
- if (this.showActionButtons) {
501
- this.createActionsComponent();
502
- }
503
- }
504
- setupOperators() {
505
- var _a, _b;
506
- // Get the operators by componentType.
507
- this.operators = Object.keys(PepSmartFilterOperators)
508
- .filter((key) => {
509
- return PepSmartFilterOperators[key].componentType.includes(this.field.componentType);
510
- })
511
- .map((key) => PepSmartFilterOperators[key]);
512
- // Filter by from field.operators input if exist.
513
- if (((_a = this.field.operators) === null || _a === void 0 ? void 0 : _a.length) > 0) {
514
- this.operators = this.operators.filter((o1) => this.field.operators.some((o2) => o1.id === o2));
515
- }
516
- // Get the operator units by componentType.
517
- this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)
518
- .filter((key) => {
519
- return PepSmartFilterOperatorUnits[key].componentType.includes(this.field.componentType);
520
- })
521
- .map((key) => PepSmartFilterOperatorUnits[key]);
522
- // Filter by from field.operatorsUnits input if exist.
523
- if (((_b = this.field.operatorUnits) === null || _b === void 0 ? void 0 : _b.length) > 0) {
524
- this.operatorUnits = this.operatorUnits.filter((o1) => this.field.operatorUnits.some((o2) => o1.id === o2));
525
- }
526
- // Load translation before get the options in the children.
527
- this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {
528
- this.loadOperatorsOptions();
529
- });
530
- }
531
- setupFilter() {
532
- if (this.filter) {
533
- this.operator = this.filter.operator;
534
- this.operatorUnit = this.filter.operatorUnit;
535
- const formValue = {};
536
- formValue[this.firstControlKey] = this.filter.value.first;
537
- formValue[this.secondControlKey] = this.filter.value.second;
538
- this.form.patchValue(formValue);
539
- }
540
- else {
541
- this.operator = this.getDefaultOperator();
542
- this.operatorUnit = this.getDefaultOperatorUnit();
543
- this.clearFilter(false);
544
- }
545
- }
546
- updateParentForm() {
547
- this._parentForm.setControl('fieldId', this.builder.control(this.field.id));
548
- this._parentForm.setControl('fieldType', this.builder.control(this.field.type));
549
- this._parentForm.setControl('operator', this.builder.control(this.operator));
550
- this._parentForm.setControl('operatorUnit', this.builder.control(this.operatorUnit));
551
- this._parentForm.setControl('values', this.builder.group({
552
- first: this.firstControl,
553
- second: this.secondControl
554
- }));
555
- }
556
- getDestroyer() {
557
- return takeUntil(this._destroyed);
558
- }
559
- updateValidity() {
560
- this.setFieldsStateAndValidators();
561
- this.firstControl.updateValueAndValidity();
562
- this.secondControl.updateValueAndValidity();
563
- }
564
- // Load the operators options from the translation.
565
- loadOperatorsOptions() {
566
- // Not implemented in the base
567
- }
568
- // Set default validators - some childs override this.
569
- setFieldsStateAndValidators() {
570
- this.firstControl.setValidators(Validators.required);
571
- this.secondControl.setValidators(Validators.required);
572
- this.secondControl.disable();
573
- }
574
- // Return undefined - some childs override this.
575
- getDefaultOperatorUnit() {
576
- return undefined;
577
- }
578
- initFilter() {
579
- // Not implemented in the base
580
- }
581
- clearFilter(emitEvent = true) {
582
- this._filter = null;
583
- this.form.reset();
584
- this.initFilter();
585
- if (emitEvent) {
586
- this.filterClear.emit();
587
- }
588
- }
589
- applyFilter() {
590
- const filterValue = this.getFilterValue();
591
- // If the filter is not null declare it, else - clear it.
592
- if (filterValue) {
593
- const filter = {
594
- fieldId: this.field.id,
595
- operator: this.operator,
596
- operatorUnit: this.operatorUnit,
597
- value: filterValue,
598
- };
599
- this._filter = filter;
600
- this.filterChange.emit(filter);
601
- }
602
- else {
603
- this.clearFilter();
604
- }
605
- }
606
- ngOnInit() {
607
- if (this.form) {
608
- this.updateValidity();
609
- }
610
- }
611
- ngOnChanges() {
612
- // if (this.form) {
613
- // this.updateValidity();
614
- // }
615
- }
616
- ngOnDestroy() {
617
- this._destroyed.next();
618
- this._destroyed.complete();
619
- if (this.showActionButtons) {
620
- this.actionsContainerRef.destroy();
621
- }
622
- }
623
- }
624
- BaseFilterComponent.decorators = [
625
- { type: Directive, args: [{},] }
626
- ];
627
- BaseFilterComponent.ctorParameters = () => [
628
- { type: ViewContainerRef },
629
- { type: Injector },
630
- { type: ComponentFactoryResolver },
631
- { type: FormBuilder },
632
- { type: TranslateService },
633
- { type: PepValidatorService },
634
- { type: Renderer2 }
635
- ];
636
- BaseFilterComponent.propDecorators = {
637
- field: [{ type: Input }],
638
- filter: [{ type: Input }],
639
- parentForm: [{ type: Input }],
640
- emitOnChange: [{ type: Input }],
641
- inline: [{ type: Input }],
642
- showActionButtons: [{ type: Input }],
643
- renderTitle: [{ type: Input }],
644
- filterClear: [{ type: Output }],
645
- filterChange: [{ type: Output }]
396
+ class BaseFilterComponent {
397
+ constructor(viewContainerRef, injector, resolver, builder, translate, validator, renderer) {
398
+ this.viewContainerRef = viewContainerRef;
399
+ this.injector = injector;
400
+ this.resolver = resolver;
401
+ this.builder = builder;
402
+ this.translate = translate;
403
+ this.validator = validator;
404
+ this.renderer = renderer;
405
+ this._fieldIdWithNoDots = '';
406
+ this.emitOnChange = false;
407
+ this.inline = false;
408
+ this.showActionButtons = true;
409
+ this.renderTitle = true;
410
+ this.filterClear = new EventEmitter();
411
+ this.filterChange = new EventEmitter();
412
+ this.OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';
413
+ this.OPERATOR_UNITS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATOR_UNITS';
414
+ this._destroyed = new Subject();
415
+ }
416
+ set field(value) {
417
+ this._field = value;
418
+ this._fieldIdWithNoDots = value ? value.id.replace(/\./g, '_') : '';
419
+ this.setupForm();
420
+ }
421
+ get field() {
422
+ return this._field;
423
+ }
424
+ set filter(value) {
425
+ this._filter = value;
426
+ this.setupFilter();
427
+ }
428
+ get filter() {
429
+ return this._filter;
430
+ }
431
+ set parentForm(form) {
432
+ this._parentForm = form;
433
+ this.updateParentForm();
434
+ }
435
+ set operator(operator) {
436
+ var _a;
437
+ if ((operator === null || operator === void 0 ? void 0 : operator.id) != ((_a = this._operator) === null || _a === void 0 ? void 0 : _a.id)) {
438
+ // Validate operator
439
+ const index = this.operators.findIndex((o) => o.id === operator.id);
440
+ if (index >= 0) {
441
+ this._operator = this.operators[index];
442
+ }
443
+ else {
444
+ this._operator = this.operators[0];
445
+ }
446
+ this.form.reset();
447
+ this.updateValidity();
448
+ }
449
+ }
450
+ get operator() {
451
+ return this._operator;
452
+ }
453
+ set operatorUnit(operatorUnit) {
454
+ // Validate operator unit
455
+ if (operatorUnit) {
456
+ const index = this.operatorUnits.findIndex((ou) => ou.id === operatorUnit.id);
457
+ if (index >= 0) {
458
+ this._operatorUnit = this.operatorUnits[index];
459
+ }
460
+ else {
461
+ this._operatorUnit = this.operatorUnits[0];
462
+ }
463
+ }
464
+ else {
465
+ this._operatorUnit = undefined;
466
+ }
467
+ }
468
+ get operatorUnit() {
469
+ return this._operatorUnit;
470
+ }
471
+ get firstControlKey() {
472
+ return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';
473
+ }
474
+ get firstControl() {
475
+ return this.form.get(this.firstControlKey);
476
+ }
477
+ get secondControlKey() {
478
+ return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';
479
+ }
480
+ get secondControl() {
481
+ return this.form.get(this.secondControlKey);
482
+ }
483
+ createActionsComponent() {
484
+ const factory = this.resolver.resolveComponentFactory(PepFilterActionsComponent);
485
+ this.actionsContainerRef = factory.create(this.injector);
486
+ this.actionsContainerRef.instance.form = this.form;
487
+ this.actionsContainerRef.instance.applyClick.subscribe(() => this.applyFilter());
488
+ this.actionsContainerRef.instance.clearClick.subscribe(() => this.clearFilter());
489
+ this.viewContainerRef.insert(this.actionsContainerRef.hostView);
490
+ }
491
+ setupForm() {
492
+ const formValue = {};
493
+ formValue[this.firstControlKey] = [];
494
+ formValue[this.secondControlKey] = [];
495
+ // this.form.patchValue(formValue);
496
+ this.form = this.builder.group(formValue);
497
+ // this.form[this.firstControlKey] = [];
498
+ // this.form[this.secondControlKey] = [];
499
+ this.setupOperators();
500
+ if (this.showActionButtons) {
501
+ this.createActionsComponent();
502
+ }
503
+ }
504
+ setupOperators() {
505
+ var _a, _b;
506
+ // Get the operators by componentType.
507
+ this.operators = Object.keys(PepSmartFilterOperators)
508
+ .filter((key) => {
509
+ return PepSmartFilterOperators[key].componentType.includes(this.field.componentType);
510
+ })
511
+ .map((key) => PepSmartFilterOperators[key]);
512
+ // Filter by from field.operators input if exist.
513
+ if (((_a = this.field.operators) === null || _a === void 0 ? void 0 : _a.length) > 0) {
514
+ this.operators = this.operators.filter((o1) => this.field.operators.some((o2) => o1.id === o2));
515
+ }
516
+ // Get the operator units by componentType.
517
+ this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)
518
+ .filter((key) => {
519
+ return PepSmartFilterOperatorUnits[key].componentType.includes(this.field.componentType);
520
+ })
521
+ .map((key) => PepSmartFilterOperatorUnits[key]);
522
+ // Filter by from field.operatorsUnits input if exist.
523
+ if (((_b = this.field.operatorUnits) === null || _b === void 0 ? void 0 : _b.length) > 0) {
524
+ this.operatorUnits = this.operatorUnits.filter((o1) => this.field.operatorUnits.some((o2) => o1.id === o2));
525
+ }
526
+ // Load translation before get the options in the children.
527
+ this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {
528
+ this.loadOperatorsOptions();
529
+ });
530
+ }
531
+ setupFilter() {
532
+ if (this.filter) {
533
+ this.operator = this.filter.operator;
534
+ this.operatorUnit = this.filter.operatorUnit;
535
+ const formValue = {};
536
+ formValue[this.firstControlKey] = this.filter.value.first;
537
+ formValue[this.secondControlKey] = this.filter.value.second;
538
+ this.form.patchValue(formValue);
539
+ }
540
+ else {
541
+ this.operator = this.getDefaultOperator();
542
+ this.operatorUnit = this.getDefaultOperatorUnit();
543
+ this.clearFilter(false);
544
+ }
545
+ }
546
+ updateParentForm() {
547
+ this._parentForm.setControl('fieldId', this.builder.control(this.field.id));
548
+ this._parentForm.setControl('fieldType', this.builder.control(this.field.type));
549
+ this._parentForm.setControl('operator', this.builder.control(this.operator));
550
+ this._parentForm.setControl('operatorUnit', this.builder.control(this.operatorUnit));
551
+ this._parentForm.setControl('values', this.builder.group({
552
+ first: this.firstControl,
553
+ second: this.secondControl
554
+ }));
555
+ }
556
+ getDestroyer() {
557
+ return takeUntil(this._destroyed);
558
+ }
559
+ updateValidity() {
560
+ this.setFieldsStateAndValidators();
561
+ this.firstControl.updateValueAndValidity();
562
+ this.secondControl.updateValueAndValidity();
563
+ }
564
+ // Load the operators options from the translation.
565
+ loadOperatorsOptions() {
566
+ // Not implemented in the base
567
+ }
568
+ // Set default validators - some childs override this.
569
+ setFieldsStateAndValidators() {
570
+ this.firstControl.setValidators(Validators.required);
571
+ this.secondControl.setValidators(Validators.required);
572
+ this.secondControl.disable();
573
+ }
574
+ // Return undefined - some childs override this.
575
+ getDefaultOperatorUnit() {
576
+ return undefined;
577
+ }
578
+ initFilter() {
579
+ // Not implemented in the base
580
+ }
581
+ clearFilter(emitEvent = true) {
582
+ this._filter = null;
583
+ this.form.reset();
584
+ this.initFilter();
585
+ if (emitEvent) {
586
+ this.filterClear.emit();
587
+ }
588
+ }
589
+ applyFilter() {
590
+ const filterValue = this.getFilterValue();
591
+ // If the filter is not null declare it, else - clear it.
592
+ if (filterValue) {
593
+ const filter = {
594
+ fieldId: this.field.id,
595
+ operator: this.operator,
596
+ operatorUnit: this.operatorUnit,
597
+ value: filterValue,
598
+ };
599
+ this._filter = filter;
600
+ this.filterChange.emit(filter);
601
+ }
602
+ else {
603
+ this.clearFilter();
604
+ }
605
+ }
606
+ ngOnInit() {
607
+ if (this.form) {
608
+ this.updateValidity();
609
+ }
610
+ }
611
+ ngOnChanges() {
612
+ // if (this.form) {
613
+ // this.updateValidity();
614
+ // }
615
+ }
616
+ ngOnDestroy() {
617
+ this._destroyed.next();
618
+ this._destroyed.complete();
619
+ if (this.showActionButtons) {
620
+ this.actionsContainerRef.destroy();
621
+ }
622
+ }
623
+ }
624
+ BaseFilterComponent.decorators = [
625
+ { type: Directive, args: [{},] }
626
+ ];
627
+ BaseFilterComponent.ctorParameters = () => [
628
+ { type: ViewContainerRef },
629
+ { type: Injector },
630
+ { type: ComponentFactoryResolver },
631
+ { type: FormBuilder },
632
+ { type: TranslateService },
633
+ { type: PepValidatorService },
634
+ { type: Renderer2 }
635
+ ];
636
+ BaseFilterComponent.propDecorators = {
637
+ field: [{ type: Input }],
638
+ filter: [{ type: Input }],
639
+ parentForm: [{ type: Input }],
640
+ emitOnChange: [{ type: Input }],
641
+ inline: [{ type: Input }],
642
+ showActionButtons: [{ type: Input }],
643
+ renderTitle: [{ type: Input }],
644
+ filterClear: [{ type: Output }],
645
+ filterChange: [{ type: Output }]
646
646
  };
647
647
 
648
- class PepTextFilterComponent extends BaseFilterComponent {
649
- constructor() {
650
- super(...arguments);
651
- this.chooseTypeOptions = [];
652
- this.operatorWidth = '38%';
653
- this.firstControlWidth = '62%';
654
- }
655
- ngOnInit() {
656
- this.firstControl.valueChanges
657
- .pipe(this.getDestroyer(), distinctUntilChanged())
658
- .subscribe(() => {
659
- this.setFieldsStateAndValidators();
660
- });
661
- }
662
- // Override
663
- getDefaultOperator() {
664
- return PepSmartFilterOperators.Equals;
665
- }
666
- // Override
667
- getFilterValue() {
668
- const filterValue = {
669
- first: this.firstControl.value,
670
- };
671
- if (this.operator === PepSmartFilterOperators.NumberRange) {
672
- filterValue['second'] = this.secondControl.value;
673
- }
674
- return filterValue;
675
- }
676
- // Override
677
- loadOperatorsOptions() {
678
- this.chooseTypeOptions = this.operators.map((operator) => {
679
- return {
680
- key: operator.id,
681
- value: this.translate.instant(`${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`),
682
- };
683
- });
684
- }
685
- // Override
686
- setFieldsStateAndValidators() {
687
- if (this.operator === PepSmartFilterOperators.NumberRange) {
688
- const firstValidators = [Validators.required];
689
- if (this.secondControl.value) {
690
- firstValidators.push(this.validator.isLessThan(this.secondControl));
691
- }
692
- this.firstControl.setValidators(firstValidators);
693
- }
694
- else {
695
- super.setFieldsStateAndValidators();
696
- }
697
- }
698
- onOperatorChanged(value) {
699
- const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
700
- this.operator = operator;
701
- if (this._parentForm) {
702
- this.updateParentForm();
703
- }
704
- if (this.emitOnChange) {
705
- this.applyFilter();
706
- }
707
- }
708
- onValueChanged() {
709
- if (this.emitOnChange) {
710
- this.applyFilter();
711
- }
712
- }
713
- }
714
- PepTextFilterComponent.decorators = [
715
- { type: Component, args: [{
716
- selector: 'pep-text-filter',
717
- template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n <pep-textbox [fxFlex]=\"inline ? firstControlWidth : null\" [form]=\"form\" [key]=\"firstControlKey\"\n [label]=\"'SMART_FILTERS.AMOUNT' | translate\" [renderError]=\"false\" [renderTitle]=\"renderTitle\"\n [type]=\"field.type\" [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n</div>",
718
- styles: [""]
719
- },] }
648
+ class PepTextFilterComponent extends BaseFilterComponent {
649
+ constructor() {
650
+ super(...arguments);
651
+ this.chooseTypeOptions = [];
652
+ this.operatorWidth = '38%';
653
+ this.firstControlWidth = '62%';
654
+ }
655
+ ngOnInit() {
656
+ this.firstControl.valueChanges
657
+ .pipe(this.getDestroyer(), distinctUntilChanged())
658
+ .subscribe(() => {
659
+ this.setFieldsStateAndValidators();
660
+ });
661
+ }
662
+ // Override
663
+ getDefaultOperator() {
664
+ return PepSmartFilterOperators.Equals;
665
+ }
666
+ // Override
667
+ getFilterValue() {
668
+ const filterValue = {
669
+ first: this.firstControl.value,
670
+ };
671
+ if (this.operator === PepSmartFilterOperators.NumberRange) {
672
+ filterValue['second'] = this.secondControl.value;
673
+ }
674
+ return filterValue;
675
+ }
676
+ // Override
677
+ loadOperatorsOptions() {
678
+ this.chooseTypeOptions = this.operators.map((operator) => {
679
+ return {
680
+ key: operator.id,
681
+ value: this.translate.instant(`${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`),
682
+ };
683
+ });
684
+ }
685
+ // Override
686
+ setFieldsStateAndValidators() {
687
+ if (this.operator === PepSmartFilterOperators.NumberRange) {
688
+ const firstValidators = [Validators.required];
689
+ if (this.secondControl.value) {
690
+ firstValidators.push(this.validator.isLessThan(this.secondControl));
691
+ }
692
+ this.firstControl.setValidators(firstValidators);
693
+ }
694
+ else {
695
+ super.setFieldsStateAndValidators();
696
+ }
697
+ }
698
+ onOperatorChanged(value) {
699
+ const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
700
+ this.operator = operator;
701
+ if (this._parentForm) {
702
+ this.updateParentForm();
703
+ }
704
+ if (this.emitOnChange) {
705
+ this.applyFilter();
706
+ }
707
+ }
708
+ onValueChanged() {
709
+ if (this.emitOnChange) {
710
+ this.applyFilter();
711
+ }
712
+ }
713
+ }
714
+ PepTextFilterComponent.decorators = [
715
+ { type: Component, args: [{
716
+ selector: 'pep-text-filter',
717
+ template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n <pep-textbox [fxFlex]=\"inline ? firstControlWidth : null\" [form]=\"form\" [key]=\"firstControlKey\"\n [label]=\"'SMART_FILTERS.AMOUNT' | translate\" [renderError]=\"false\" [renderTitle]=\"renderTitle\"\n [type]=\"field.type\" [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n</div>",
718
+ styles: [""]
719
+ },] }
720
720
  ];
721
721
 
722
- class PepBooleanFilterComponent extends BaseFilterComponent {
723
- constructor() {
724
- super(...arguments);
725
- this.options = [];
726
- // // Override
727
- // setFieldsStateAndValidators(): void {
728
- // this.secondControl.disable();
729
- // }
730
- }
731
- ngOnInit() {
732
- //
733
- }
734
- // Override
735
- getDefaultOperator() {
736
- return PepSmartFilterOperators.Equals;
737
- }
738
- // Override
739
- getFilterValue() {
740
- const filterValue = { first: this.firstControl.value || false };
741
- return filterValue;
742
- }
743
- onValueChanged(value) {
744
- this.firstControl.setValue(value);
745
- if (this.emitOnChange) {
746
- this.applyFilter();
747
- }
748
- }
749
- }
750
- PepBooleanFilterComponent.decorators = [
751
- { type: Component, args: [{
752
- selector: 'pep-boolean-filter',
753
- template: "<ng-container *ngIf=\"inline\">\n <pep-select [value]=\"firstControl?.value || ''\" xAlignment=\"left\" [options]=\"options\" [renderTitle]=\"renderTitle\"\n [emptyOption]=\"true\" (valueChange)=\"onValueChanged($event)\">\n </pep-select>\n\n</ng-container>\n\n<div *ngIf=\"!inline\" [formGroup]=\"form\">\n <mat-radio-group class=\"radio-group\" [formControlName]=\"firstControlKey\">\n <mat-radio-button class=\"pep-radio-button md pep-input no-default-background\" value=\"true\">\n {{ 'CHECKBOX.TRUE' | translate }}\n </mat-radio-button>\n <mat-radio-button class=\"pep-radio-button md pep-input no-default-background\" value=\"false\">\n {{ 'CHECKBOX.FALSE' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>",
754
- styles: [".radio-group{display:flex;flex-direction:column}.radio-group .pep-radio-button.pep-input{height:2.25rem;display:flex}"]
755
- },] }
756
- ];
757
- PepBooleanFilterComponent.propDecorators = {
758
- options: [{ type: Input }]
722
+ class PepBooleanFilterComponent extends BaseFilterComponent {
723
+ constructor() {
724
+ super(...arguments);
725
+ this.options = [];
726
+ // // Override
727
+ // setFieldsStateAndValidators(): void {
728
+ // this.secondControl.disable();
729
+ // }
730
+ }
731
+ ngOnInit() {
732
+ //
733
+ }
734
+ // Override
735
+ getDefaultOperator() {
736
+ return PepSmartFilterOperators.Equals;
737
+ }
738
+ // Override
739
+ getFilterValue() {
740
+ const filterValue = { first: this.firstControl.value || false };
741
+ return filterValue;
742
+ }
743
+ onValueChanged(value) {
744
+ this.firstControl.setValue(value);
745
+ if (this.emitOnChange) {
746
+ this.applyFilter();
747
+ }
748
+ }
749
+ }
750
+ PepBooleanFilterComponent.decorators = [
751
+ { type: Component, args: [{
752
+ selector: 'pep-boolean-filter',
753
+ template: "<ng-container *ngIf=\"inline\">\n <pep-select [value]=\"firstControl?.value || ''\" xAlignment=\"left\" [options]=\"options\" [renderTitle]=\"renderTitle\"\n [emptyOption]=\"true\" (valueChange)=\"onValueChanged($event)\">\n </pep-select>\n\n</ng-container>\n\n<div *ngIf=\"!inline\" [formGroup]=\"form\">\n <mat-radio-group class=\"radio-group\" [formControlName]=\"firstControlKey\">\n <mat-radio-button class=\"pep-radio-button md pep-input no-default-background\" value=\"true\">\n {{ 'CHECKBOX.TRUE' | translate }}\n </mat-radio-button>\n <mat-radio-button class=\"pep-radio-button md pep-input no-default-background\" value=\"false\">\n {{ 'CHECKBOX.FALSE' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>",
754
+ styles: [".radio-group{display:flex;flex-direction:column}.radio-group .pep-radio-button.pep-input{height:2.25rem;display:flex}"]
755
+ },] }
756
+ ];
757
+ PepBooleanFilterComponent.propDecorators = {
758
+ options: [{ type: Input }]
759
759
  };
760
760
 
761
- class PepDateFilterComponent extends BaseFilterComponent {
762
- constructor() {
763
- super(...arguments);
764
- this.PepSmartFilterOperators = PepSmartFilterOperators;
765
- this.chooseTimeOptions = [];
766
- this.chooseTimeUnitOptions = [];
767
- }
768
- ngOnInit() {
769
- if (this.inline) {
770
- this.setControlsWidth();
771
- }
772
- }
773
- // Override
774
- getDefaultOperator() {
775
- return PepSmartFilterOperators.InTheLast;
776
- }
777
- // Override
778
- getDefaultOperatorUnit() {
779
- if (this.operator === PepSmartFilterOperators.InTheLast ||
780
- this.operator === PepSmartFilterOperators.NotInTheLast ||
781
- this.operator === PepSmartFilterOperators.DueIn ||
782
- this.operator === PepSmartFilterOperators.NotDueIn) {
783
- return PepSmartFilterOperatorUnits.Months;
784
- }
785
- else {
786
- return undefined;
787
- }
788
- }
789
- // Override
790
- getFilterValue() {
791
- const filterValue = {
792
- first: this.firstControl.value,
793
- };
794
- if (this.operator === PepSmartFilterOperators.DateRange) {
795
- filterValue['second'] = this.secondControl.value;
796
- }
797
- return filterValue;
798
- }
799
- // Override
800
- loadOperatorsOptions() {
801
- this.chooseTimeOptions = this.operators.map((operator) => {
802
- return {
803
- key: operator.id,
804
- value: this.translate.instant(`${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`),
805
- };
806
- });
807
- this.chooseTimeUnitOptions = this.operatorUnits.map((operatorUnit) => {
808
- return {
809
- key: operatorUnit.id,
810
- value: this.translate.instant(`${this.OPERATOR_UNITS_TRANSLATION_PREFIX}.${operatorUnit.name}`),
811
- };
812
- });
813
- }
814
- // Override
815
- setFieldsStateAndValidators() {
816
- this.firstControl.enable();
817
- if (this.operator === PepSmartFilterOperators.DateRange) {
818
- this.firstControl.setValidators(Validators.required);
819
- this.secondControl.enable();
820
- this.secondControl.setValidators(Validators.required);
821
- }
822
- else if (this.operator === PepSmartFilterOperators.InTheLast ||
823
- this.operator === PepSmartFilterOperators.NotInTheLast ||
824
- this.operator === PepSmartFilterOperators.DueIn ||
825
- this.operator === PepSmartFilterOperators.NotDueIn) {
826
- this.firstControl.setValidators([
827
- Validators.required,
828
- this.validator.numberValidator(),
829
- ]);
830
- this.secondControl.disable();
831
- }
832
- else {
833
- // Disable 'first' field.
834
- if (this.operator === PepSmartFilterOperators.Today ||
835
- this.operator === PepSmartFilterOperators.ThisWeek ||
836
- this.operator === PepSmartFilterOperators.ThisMonth ||
837
- this.operator === PepSmartFilterOperators.IsEmpty ||
838
- this.operator === PepSmartFilterOperators.IsNotEmpty) {
839
- this.firstControl.disable();
840
- }
841
- // Default disable 'second' field.
842
- super.setFieldsStateAndValidators();
843
- }
844
- }
845
- setControlsWidth() {
846
- if (this.operator === PepSmartFilterOperators.Today ||
847
- this.operator === PepSmartFilterOperators.ThisWeek ||
848
- this.operator === PepSmartFilterOperators.ThisMonth ||
849
- this.operator === PepSmartFilterOperators.IsEmpty ||
850
- this.operator === PepSmartFilterOperators.IsNotEmpty) {
851
- this.operatorWidth = 'auto';
852
- this.fieldsWidth = '0%';
853
- }
854
- else if (this.operator === PepSmartFilterOperators.On) {
855
- this.operatorWidth = '38%';
856
- this.fieldsWidth = '62%';
857
- }
858
- else {
859
- this.operatorWidth = '30%';
860
- this.fieldsWidth = '70%';
861
- }
862
- }
863
- onOperatorChanged(value) {
864
- const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
865
- this.operator = operator;
866
- this.operatorUnit = this.getDefaultOperatorUnit();
867
- if (this.inline) {
868
- this.setControlsWidth();
869
- }
870
- if (this._parentForm) {
871
- this.updateParentForm();
872
- }
873
- if (this.emitOnChange) {
874
- this.applyFilter();
875
- }
876
- }
877
- onTimeUnitChanged(value) {
878
- const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find((operatorUnit) => operatorUnit.id === value);
879
- this.operatorUnit = operatorUnit;
880
- if (this._parentForm) {
881
- this.updateParentForm();
882
- }
883
- if (this.emitOnChange) {
884
- this.applyFilter();
885
- }
886
- }
887
- onDateValueChanged() {
888
- if (this.emitOnChange) {
889
- this.applyFilter();
890
- }
891
- }
892
- }
893
- PepDateFilterComponent.decorators = [
894
- { type: Component, args: [{
895
- selector: 'pep-date-filter',
896
- template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <ng-container>\n <pep-select [key]=\"'timeOperator'\" [value]=\"operator.id\" [label]=\"'SMART_FILTERS.CHOOSE_TIME' | translate\"\n [renderTitle]=\"renderTitle\" [emptyOption]=\"false\" [options]=\"chooseTimeOptions\"\n [fxFlex]=\"inline ? operatorWidth : null\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n </ng-container>\n <div *ngIf=\"operator === PepSmartFilterOperators.InTheLast ||\n operator === PepSmartFilterOperators.NotInTheLast ||\n operator === PepSmartFilterOperators.DueIn ||\n operator === PepSmartFilterOperators.NotDueIn\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Amount -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\" [type]=\"'int'\"\n [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onDateValueChanged()\">\n </pep-textbox>\n <!-- Time unit -->\n <pep-select [form]=\"form\" [key]=\"'timeUnit'\" [value]=\"operatorUnit?.id\"\n [label]=\"'SMART_FILTERS.TIME_UNIT' | translate\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [emptyOption]=\"false\" [options]=\"chooseTimeUnitOptions\" (valueChange)=\"onTimeUnitChanged($event)\">\n </pep-select>\n </div>\n <div pepRtlDirection *ngIf=\"operator === PepSmartFilterOperators.DateRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Start date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.START_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"firstControl?.value || ''\"\n [maxDateValue]=\"secondControl?.value\" (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n <!-- End date -->\n <pep-date [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.END_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"secondControl?.value || ''\"\n [minDateValue]=\"firstControl?.value\" (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n </div>\n <ng-container *ngIf=\"operator === PepSmartFilterOperators.On\">\n <!-- Choose a date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.CHOOSE_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type === 'date' ? 'date' : 'datetime'\"\n [fxFlex]=\"inline ? fieldsWidth : null\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n </ng-container>\n</div>",
897
- styles: [""]
898
- },] }
761
+ class PepDateFilterComponent extends BaseFilterComponent {
762
+ constructor() {
763
+ super(...arguments);
764
+ this.PepSmartFilterOperators = PepSmartFilterOperators;
765
+ this.chooseTimeOptions = [];
766
+ this.chooseTimeUnitOptions = [];
767
+ }
768
+ ngOnInit() {
769
+ if (this.inline) {
770
+ this.setControlsWidth();
771
+ }
772
+ }
773
+ // Override
774
+ getDefaultOperator() {
775
+ return PepSmartFilterOperators.InTheLast;
776
+ }
777
+ // Override
778
+ getDefaultOperatorUnit() {
779
+ if (this.operator === PepSmartFilterOperators.InTheLast ||
780
+ this.operator === PepSmartFilterOperators.NotInTheLast ||
781
+ this.operator === PepSmartFilterOperators.DueIn ||
782
+ this.operator === PepSmartFilterOperators.NotDueIn) {
783
+ return PepSmartFilterOperatorUnits.Months;
784
+ }
785
+ else {
786
+ return undefined;
787
+ }
788
+ }
789
+ // Override
790
+ getFilterValue() {
791
+ const filterValue = {
792
+ first: this.firstControl.value,
793
+ };
794
+ if (this.operator === PepSmartFilterOperators.DateRange) {
795
+ filterValue['second'] = this.secondControl.value;
796
+ }
797
+ return filterValue;
798
+ }
799
+ // Override
800
+ loadOperatorsOptions() {
801
+ this.chooseTimeOptions = this.operators.map((operator) => {
802
+ return {
803
+ key: operator.id,
804
+ value: this.translate.instant(`${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`),
805
+ };
806
+ });
807
+ this.chooseTimeUnitOptions = this.operatorUnits.map((operatorUnit) => {
808
+ return {
809
+ key: operatorUnit.id,
810
+ value: this.translate.instant(`${this.OPERATOR_UNITS_TRANSLATION_PREFIX}.${operatorUnit.name}`),
811
+ };
812
+ });
813
+ }
814
+ // Override
815
+ setFieldsStateAndValidators() {
816
+ this.firstControl.enable();
817
+ if (this.operator === PepSmartFilterOperators.DateRange) {
818
+ this.firstControl.setValidators(Validators.required);
819
+ this.secondControl.enable();
820
+ this.secondControl.setValidators(Validators.required);
821
+ }
822
+ else if (this.operator === PepSmartFilterOperators.InTheLast ||
823
+ this.operator === PepSmartFilterOperators.NotInTheLast ||
824
+ this.operator === PepSmartFilterOperators.DueIn ||
825
+ this.operator === PepSmartFilterOperators.NotDueIn) {
826
+ this.firstControl.setValidators([
827
+ Validators.required,
828
+ this.validator.numberValidator(),
829
+ ]);
830
+ this.secondControl.disable();
831
+ }
832
+ else {
833
+ // Disable 'first' field.
834
+ if (this.operator === PepSmartFilterOperators.Today ||
835
+ this.operator === PepSmartFilterOperators.ThisWeek ||
836
+ this.operator === PepSmartFilterOperators.ThisMonth ||
837
+ this.operator === PepSmartFilterOperators.IsEmpty ||
838
+ this.operator === PepSmartFilterOperators.IsNotEmpty) {
839
+ this.firstControl.disable();
840
+ }
841
+ // Default disable 'second' field.
842
+ super.setFieldsStateAndValidators();
843
+ }
844
+ }
845
+ setControlsWidth() {
846
+ if (this.operator === PepSmartFilterOperators.Today ||
847
+ this.operator === PepSmartFilterOperators.ThisWeek ||
848
+ this.operator === PepSmartFilterOperators.ThisMonth ||
849
+ this.operator === PepSmartFilterOperators.IsEmpty ||
850
+ this.operator === PepSmartFilterOperators.IsNotEmpty) {
851
+ this.operatorWidth = 'auto';
852
+ this.fieldsWidth = '0%';
853
+ }
854
+ else if (this.operator === PepSmartFilterOperators.On) {
855
+ this.operatorWidth = '38%';
856
+ this.fieldsWidth = '62%';
857
+ }
858
+ else {
859
+ this.operatorWidth = '30%';
860
+ this.fieldsWidth = '70%';
861
+ }
862
+ }
863
+ onOperatorChanged(value) {
864
+ const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
865
+ this.operator = operator;
866
+ this.operatorUnit = this.getDefaultOperatorUnit();
867
+ if (this.inline) {
868
+ this.setControlsWidth();
869
+ }
870
+ if (this._parentForm) {
871
+ this.updateParentForm();
872
+ }
873
+ if (this.emitOnChange) {
874
+ this.applyFilter();
875
+ }
876
+ }
877
+ onTimeUnitChanged(value) {
878
+ const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find((operatorUnit) => operatorUnit.id === value);
879
+ this.operatorUnit = operatorUnit;
880
+ if (this._parentForm) {
881
+ this.updateParentForm();
882
+ }
883
+ if (this.emitOnChange) {
884
+ this.applyFilter();
885
+ }
886
+ }
887
+ onDateValueChanged() {
888
+ if (this.emitOnChange) {
889
+ this.applyFilter();
890
+ }
891
+ }
892
+ }
893
+ PepDateFilterComponent.decorators = [
894
+ { type: Component, args: [{
895
+ selector: 'pep-date-filter',
896
+ template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <ng-container>\n <pep-select [key]=\"'timeOperator'\" [value]=\"operator.id\" [label]=\"'SMART_FILTERS.CHOOSE_TIME' | translate\"\n [renderTitle]=\"renderTitle\" [emptyOption]=\"false\" [options]=\"chooseTimeOptions\"\n [fxFlex]=\"inline ? operatorWidth : null\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n </ng-container>\n <div *ngIf=\"operator === PepSmartFilterOperators.InTheLast ||\n operator === PepSmartFilterOperators.NotInTheLast ||\n operator === PepSmartFilterOperators.DueIn ||\n operator === PepSmartFilterOperators.NotDueIn\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Amount -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\" [type]=\"'int'\"\n [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onDateValueChanged()\">\n </pep-textbox>\n <!-- Time unit -->\n <pep-select [form]=\"form\" [key]=\"'timeUnit'\" [value]=\"operatorUnit?.id\"\n [label]=\"'SMART_FILTERS.TIME_UNIT' | translate\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [emptyOption]=\"false\" [options]=\"chooseTimeUnitOptions\" (valueChange)=\"onTimeUnitChanged($event)\">\n </pep-select>\n </div>\n <div pepRtlDirection *ngIf=\"operator === PepSmartFilterOperators.DateRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Start date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.START_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"firstControl?.value || ''\"\n [maxDateValue]=\"secondControl?.value\" (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n <!-- End date -->\n <pep-date [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.END_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"secondControl?.value || ''\"\n [minDateValue]=\"firstControl?.value\" (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n </div>\n <ng-container *ngIf=\"operator === PepSmartFilterOperators.On\">\n <!-- Choose a date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.CHOOSE_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type === 'date' ? 'date' : 'datetime'\"\n [fxFlex]=\"inline ? fieldsWidth : null\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n </ng-container>\n</div>",
897
+ styles: [""]
898
+ },] }
899
899
  ];
900
900
 
901
- class PepMultiSelectFilterOption {
902
- constructor() {
903
- this.selected = false;
904
- }
905
- }
906
- class PepMultiSelectFilterComponent extends BaseFilterComponent {
907
- constructor() {
908
- super(...arguments);
909
- this.options = [];
910
- this.searchControl = new FormControl();
911
- //inline props
912
- this.selected = '';
913
- this.inlineOptions = [];
914
- this.MAX_OPTIONS_TO_SHOW = 6.35;
915
- this.numberOptionsToShowSearch = 10;
916
- }
917
- ngOnInit() {
918
- super.ngOnInit;
919
- if (this.inline) {
920
- this.inlineControlInit();
921
- }
922
- else {
923
- this.noneInlineControlInit();
924
- }
925
- }
926
- ngAfterViewInit() {
927
- // Calc for the first time.
928
- this.calcOptionsHeight(this.options.length);
929
- }
930
- inlineControlInit() {
931
- var _a, _b, _c, _d;
932
- //load options from field
933
- this.inlineOptions = ((_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.length) > 0 ? this.field.options : [];
934
- // Init the selected values from first value.
935
- if (((_d = (_c = this.firstControl) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.length) > 0) {
936
- this.selected = this.firstControl.value.join(';');
937
- }
938
- }
939
- noneInlineControlInit() {
940
- var _a;
941
- if (((_a = this.field.options) === null || _a === void 0 ? void 0 : _a.length) > 0) {
942
- this.options = this.field.options.map((opt) => {
943
- return { value: opt.value, count: opt.count, selected: false };
944
- });
945
- }
946
- else {
947
- this.searchControl.disable();
948
- }
949
- // Init the selected values from first value.
950
- const firstControl = this.firstControl;
951
- if (firstControl.value) {
952
- this.initOptionsSelectedValues(firstControl.value);
953
- }
954
- // Add subscription for the first value change to set the selected options.
955
- firstControl.valueChanges
956
- .pipe(this.getDestroyer(), distinctUntilChanged())
957
- .subscribe((selectedValues) => {
958
- this.initOptionsSelectedValues(selectedValues);
959
- });
960
- // Filter the options by the search control.
961
- this.filteredOptions$ = this.searchControl.valueChanges.pipe(this.getDestroyer(), startWith(''), map((option) => typeof option === 'string' ? option : option && option.value), map((value) => (value ? this.filterOptions(value) : this.options)));
962
- // Each time the filter change.
963
- this.filteredOptions$.subscribe((filterdOptions) => {
964
- this.calcOptionsHeight(filterdOptions.length);
965
- setTimeout(() => {
966
- // 8 is the padding top of the multi-select-options
967
- this.virtualScroller.scrollToPosition(-8);
968
- }, 125);
969
- });
970
- }
971
- initOptionsSelectedValues(selectedValues) {
972
- this.options.forEach((opt) => {
973
- const isValueSelected = selectedValues && selectedValues.includes(opt.value);
974
- opt.selected = isValueSelected;
975
- });
976
- }
977
- calcOptionsHeight(optionsCount) {
978
- if (this.optionsContainer) {
979
- const optionsToShow = optionsCount > this.MAX_OPTIONS_TO_SHOW
980
- ? this.MAX_OPTIONS_TO_SHOW
981
- : optionsCount;
982
- // optionsToShow * 2.25 is 1 option height + 1 is the padding top & bottom of the container.
983
- const optionsHeight = optionsToShow * 2.25 + 1 + 'rem';
984
- this.renderer.setStyle(this.optionsContainer.nativeElement, 'height', optionsHeight);
985
- }
986
- }
987
- filterOptions(value) {
988
- const filterValue = value.toLowerCase();
989
- return this.options.filter((opt) => opt.value &&
990
- opt.value.toLowerCase().includes(filterValue.toLowerCase()));
991
- }
992
- // Override
993
- getDefaultOperator() {
994
- return PepSmartFilterOperators.In;
995
- }
996
- // Override
997
- getFilterValue() {
998
- if (this.inline) {
999
- return {
1000
- first: this.firstControl.value
1001
- };
1002
- }
1003
- else {
1004
- const selectedValues = this.options
1005
- .filter((opt) => opt.selected)
1006
- .map((opt) => opt.value);
1007
- const filterValue = {
1008
- first: selectedValues,
1009
- };
1010
- return selectedValues.length > 0 ? filterValue : null;
1011
- }
1012
- }
1013
- // Override
1014
- initFilter() {
1015
- this.options.forEach((opt) => (opt.selected = false));
1016
- this.searchControl.setValue('');
1017
- }
1018
- onOptionChange(option, event) {
1019
- option.selected = event.checked;
1020
- this.firstControl.setValue(this.options.filter((opt) => opt.selected).map((opt) => opt.value), { emitEvent: false });
1021
- }
1022
- onMultiSelectChanged(value) {
1023
- if (value) {
1024
- const selected = value.split(';');
1025
- this.firstControl.setValue(selected);
1026
- }
1027
- else {
1028
- this.firstControl.setValue(null);
1029
- }
1030
- if (this.emitOnChange) {
1031
- this.applyFilter();
1032
- }
1033
- }
1034
- }
1035
- PepMultiSelectFilterComponent.decorators = [
1036
- { type: Component, args: [{
1037
- selector: 'pep-multi-select-filter',
1038
- template: "<ng-container *ngIf=\"inline\">\n <pep-select [key]=\"'multi1'\" [label]=\"'Pepperi Multi Select'\" [type]=\"'multi'\" [value]=\"selected\"\n [xAlignment]=\"'left'\" [renderTitle]=\"renderTitle\" [options]='inlineOptions'\n (valueChange)=\"onMultiSelectChanged($event)\">\n </pep-select>\n</ng-container>\n<div *ngIf=\"!inline\" [formGroup]=\"form\">\n <pep-search *ngIf=\"options?.length > numberOptionsToShowSearch\" [searchControl]=\"searchControl\"\n [triggerOn]=\"'keydown'\" shrink=\"never\"></pep-search>\n <div pepRtlClass class=\"multi-select-options pep-border-top pep-border-bottom\"\n [ngClass]=\"{'with-no-search': options?.length <= numberOptionsToShowSearch}\">\n <div #optionsContainer class=\"flip-scroll\" pepRtlClass>\n <virtual-scroller #scroll [items]=\"filteredOptions$ | async\" [parentScroll]=\"optionsContainer\">\n <mat-checkbox *ngFor=\"let opt of scroll.viewPortItems\"\n class=\"pep-checkbox-container pep-input no-default-background md\" [title]=\"opt.value\"\n [checked]=\"opt.selected\" (change)=\"onOptionChange(opt, $event)\">\n <div class=\"title\">\n <span class=\"body-sm ellipsis\">{{ opt.value }}</span>\n <span *ngIf=\"opt.count\" class=\"color-dimmed body-xs ellipsis\">({{opt.count}})</span>\n </div>\n </mat-checkbox>\n <ng-container *ngIf=\"scroll.viewPortItems?.length === 0\">\n <span class=\"no-options body-sm ellipsis\" [title]=\"field.name\">\n {{ ( options.length > 0 ? \"SMART_FILTERS.NO_SEARCH_RESULTS\" : \"SMART_FILTERS.NO_OPTIONS\") |\n translate }}\n </span>\n </ng-container>\n </virtual-scroller>\n </div>\n </div>\n</div>",
1039
- styles: [".multi-select-options{margin:.5rem calc(.25rem * -1) 0;margin:var(--pep-spacing-sm,.5rem) calc(var(--pep-spacing-xs, .25rem) * -1) 0}.multi-select-options.with-no-search{margin:calc(.5rem * -1) calc(.25rem * -1) 0;margin:calc(var(--pep-spacing-sm, .5rem) * -1) calc(var(--pep-spacing-xs, .25rem) * -1) 0}.multi-select-options .no-options{display:flex;padding:.5rem .75rem;padding:var(--pep-spacing-sm,.5rem) var(--pep-spacing-md,.75rem)}.multi-select-options .flip-scroll{padding:.5rem .25rem;padding:var(--pep-spacing-sm,.5rem) var(--pep-spacing-xs,.25rem);min-height:3.25rem;max-height:34.75rem;direction:rtl}.multi-select-options .flip-scroll.rtl,.multi-select-options .flip-scroll virtual-scroller{direction:ltr}.multi-select-options .flip-scroll.rtl virtual-scroller{direction:rtl}.multi-select-options .pep-checkbox-container{height:2.25rem;-webkit-padding-end:0;padding-inline-end:0}.multi-select-options .pep-checkbox-container ::ng-deep.mat-checkbox-layout{width:100%;height:100%;grid-template-columns:auto 1fr}.multi-select-options .pep-checkbox-container ::ng-deep.mat-checkbox-layout .mat-checkbox-label{align-self:center}.multi-select-options .pep-checkbox-container .title{display:grid;grid-auto-flow:column;justify-content:space-between;align-items:center;margin:0 .25rem;margin:0 var(--pep-spacing-xs,.25rem)}"]
1040
- },] }
1041
- ];
1042
- PepMultiSelectFilterComponent.propDecorators = {
1043
- optionsContainer: [{ type: ViewChild, args: ['optionsContainer',] }],
1044
- virtualScroller: [{ type: ViewChild, args: [VirtualScrollerComponent,] }]
901
+ class PepMultiSelectFilterOption {
902
+ constructor() {
903
+ this.selected = false;
904
+ }
905
+ }
906
+ class PepMultiSelectFilterComponent extends BaseFilterComponent {
907
+ constructor() {
908
+ super(...arguments);
909
+ this.options = [];
910
+ this.searchControl = new FormControl();
911
+ //inline props
912
+ this.selected = '';
913
+ this.inlineOptions = [];
914
+ this.MAX_OPTIONS_TO_SHOW = 6.35;
915
+ this.numberOptionsToShowSearch = 10;
916
+ }
917
+ ngOnInit() {
918
+ super.ngOnInit;
919
+ if (this.inline) {
920
+ this.inlineControlInit();
921
+ }
922
+ else {
923
+ this.noneInlineControlInit();
924
+ }
925
+ }
926
+ ngAfterViewInit() {
927
+ // Calc for the first time.
928
+ this.calcOptionsHeight(this.options.length);
929
+ }
930
+ inlineControlInit() {
931
+ var _a, _b, _c, _d;
932
+ //load options from field
933
+ this.inlineOptions = ((_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.length) > 0 ? this.field.options : [];
934
+ // Init the selected values from first value.
935
+ if (((_d = (_c = this.firstControl) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.length) > 0) {
936
+ this.selected = this.firstControl.value.join(';');
937
+ }
938
+ }
939
+ noneInlineControlInit() {
940
+ var _a;
941
+ if (((_a = this.field.options) === null || _a === void 0 ? void 0 : _a.length) > 0) {
942
+ this.options = this.field.options.map((opt) => {
943
+ return { value: opt.value, count: opt.count, selected: false };
944
+ });
945
+ }
946
+ else {
947
+ this.searchControl.disable();
948
+ }
949
+ // Init the selected values from first value.
950
+ const firstControl = this.firstControl;
951
+ if (firstControl.value) {
952
+ this.initOptionsSelectedValues(firstControl.value);
953
+ }
954
+ // Add subscription for the first value change to set the selected options.
955
+ firstControl.valueChanges
956
+ .pipe(this.getDestroyer(), distinctUntilChanged())
957
+ .subscribe((selectedValues) => {
958
+ this.initOptionsSelectedValues(selectedValues);
959
+ });
960
+ // Filter the options by the search control.
961
+ this.filteredOptions$ = this.searchControl.valueChanges.pipe(this.getDestroyer(), startWith(''), map((option) => typeof option === 'string' ? option : option && option.value), map((value) => (value ? this.filterOptions(value) : this.options)));
962
+ // Each time the filter change.
963
+ this.filteredOptions$.subscribe((filterdOptions) => {
964
+ this.calcOptionsHeight(filterdOptions.length);
965
+ setTimeout(() => {
966
+ // 8 is the padding top of the multi-select-options
967
+ this.virtualScroller.scrollToPosition(-8);
968
+ }, 125);
969
+ });
970
+ }
971
+ initOptionsSelectedValues(selectedValues) {
972
+ this.options.forEach((opt) => {
973
+ const isValueSelected = selectedValues && selectedValues.includes(opt.value);
974
+ opt.selected = isValueSelected;
975
+ });
976
+ }
977
+ calcOptionsHeight(optionsCount) {
978
+ if (this.optionsContainer) {
979
+ const optionsToShow = optionsCount > this.MAX_OPTIONS_TO_SHOW
980
+ ? this.MAX_OPTIONS_TO_SHOW
981
+ : optionsCount;
982
+ // optionsToShow * 2.25 is 1 option height + 1 is the padding top & bottom of the container.
983
+ const optionsHeight = optionsToShow * 2.25 + 1 + 'rem';
984
+ this.renderer.setStyle(this.optionsContainer.nativeElement, 'height', optionsHeight);
985
+ }
986
+ }
987
+ filterOptions(value) {
988
+ const filterValue = value.toLowerCase();
989
+ return this.options.filter((opt) => opt.value &&
990
+ opt.value.toLowerCase().includes(filterValue.toLowerCase()));
991
+ }
992
+ // Override
993
+ getDefaultOperator() {
994
+ return PepSmartFilterOperators.In;
995
+ }
996
+ // Override
997
+ getFilterValue() {
998
+ if (this.inline) {
999
+ return {
1000
+ first: this.firstControl.value
1001
+ };
1002
+ }
1003
+ else {
1004
+ const selectedValues = this.options
1005
+ .filter((opt) => opt.selected)
1006
+ .map((opt) => opt.value);
1007
+ const filterValue = {
1008
+ first: selectedValues,
1009
+ };
1010
+ return selectedValues.length > 0 ? filterValue : null;
1011
+ }
1012
+ }
1013
+ // Override
1014
+ initFilter() {
1015
+ this.options.forEach((opt) => (opt.selected = false));
1016
+ this.searchControl.setValue('');
1017
+ }
1018
+ onOptionChange(option, event) {
1019
+ option.selected = event.checked;
1020
+ this.firstControl.setValue(this.options.filter((opt) => opt.selected).map((opt) => opt.value), { emitEvent: false });
1021
+ }
1022
+ onMultiSelectChanged(value) {
1023
+ if (value) {
1024
+ const selected = value.split(';');
1025
+ this.firstControl.setValue(selected);
1026
+ }
1027
+ else {
1028
+ this.firstControl.setValue(null);
1029
+ }
1030
+ if (this.emitOnChange) {
1031
+ this.applyFilter();
1032
+ }
1033
+ }
1034
+ }
1035
+ PepMultiSelectFilterComponent.decorators = [
1036
+ { type: Component, args: [{
1037
+ selector: 'pep-multi-select-filter',
1038
+ template: "<ng-container *ngIf=\"inline\">\n <pep-select [key]=\"'multi1'\" [label]=\"'Pepperi Multi Select'\" [type]=\"'multi'\" [value]=\"selected\"\n [xAlignment]=\"'left'\" [renderTitle]=\"renderTitle\" [options]='inlineOptions'\n (valueChange)=\"onMultiSelectChanged($event)\">\n </pep-select>\n</ng-container>\n<div *ngIf=\"!inline\" [formGroup]=\"form\">\n <pep-search *ngIf=\"options?.length > numberOptionsToShowSearch\" [searchControl]=\"searchControl\"\n [triggerOn]=\"'keydown'\" shrink=\"never\"></pep-search>\n <div pepRtlClass class=\"multi-select-options pep-border-top pep-border-bottom\"\n [ngClass]=\"{'with-no-search': options?.length <= numberOptionsToShowSearch}\">\n <div #optionsContainer class=\"flip-scroll\" pepRtlClass>\n <virtual-scroller #scroll [items]=\"filteredOptions$ | async\" [parentScroll]=\"optionsContainer\">\n <mat-checkbox *ngFor=\"let opt of scroll.viewPortItems\"\n class=\"pep-checkbox-container pep-input no-default-background md\" [title]=\"opt.value\"\n [checked]=\"opt.selected\" (change)=\"onOptionChange(opt, $event)\">\n <div class=\"title\">\n <span class=\"body-sm ellipsis\">{{ opt.value }}</span>\n <span *ngIf=\"opt.count\" class=\"color-dimmed body-xs ellipsis\">({{opt.count}})</span>\n </div>\n </mat-checkbox>\n <ng-container *ngIf=\"scroll.viewPortItems?.length === 0\">\n <span class=\"no-options body-sm ellipsis\" [title]=\"field.name\">\n {{ ( options.length > 0 ? \"SMART_FILTERS.NO_SEARCH_RESULTS\" : \"SMART_FILTERS.NO_OPTIONS\") |\n translate }}\n </span>\n </ng-container>\n </virtual-scroller>\n </div>\n </div>\n</div>",
1039
+ styles: [".multi-select-options{margin:.5rem calc(.25rem * -1) 0;margin:var(--pep-spacing-sm,.5rem) calc(var(--pep-spacing-xs, .25rem) * -1) 0}.multi-select-options.with-no-search{margin:calc(.5rem * -1) calc(.25rem * -1) 0;margin:calc(var(--pep-spacing-sm, .5rem) * -1) calc(var(--pep-spacing-xs, .25rem) * -1) 0}.multi-select-options .no-options{display:flex;padding:.5rem .75rem;padding:var(--pep-spacing-sm,.5rem) var(--pep-spacing-md,.75rem)}.multi-select-options .flip-scroll{padding:.5rem .25rem;padding:var(--pep-spacing-sm,.5rem) var(--pep-spacing-xs,.25rem);min-height:3.25rem;max-height:34.75rem;direction:rtl}.multi-select-options .flip-scroll.rtl,.multi-select-options .flip-scroll virtual-scroller{direction:ltr}.multi-select-options .flip-scroll.rtl virtual-scroller{direction:rtl}.multi-select-options .pep-checkbox-container{height:2.25rem;-webkit-padding-end:0;padding-inline-end:0}.multi-select-options .pep-checkbox-container ::ng-deep.mat-checkbox-layout{width:100%;height:100%;grid-template-columns:auto 1fr}.multi-select-options .pep-checkbox-container ::ng-deep.mat-checkbox-layout .mat-checkbox-label{align-self:center}.multi-select-options .pep-checkbox-container .title{display:grid;grid-auto-flow:column;justify-content:space-between;align-items:center;margin:0 .25rem;margin:0 var(--pep-spacing-xs,.25rem)}"]
1040
+ },] }
1041
+ ];
1042
+ PepMultiSelectFilterComponent.propDecorators = {
1043
+ optionsContainer: [{ type: ViewChild, args: ['optionsContainer',] }],
1044
+ virtualScroller: [{ type: ViewChild, args: [VirtualScrollerComponent,] }]
1045
1045
  };
1046
1046
 
1047
- class PepNumberFilterComponent extends BaseFilterComponent {
1048
- constructor() {
1049
- super(...arguments);
1050
- this.PepSmartFilterOperators = PepSmartFilterOperators;
1051
- this.chooseTypeOptions = [];
1052
- this.operatorWidth = '38%';
1053
- this.fieldsWidth = '70%';
1054
- }
1055
- ngOnInit() {
1056
- this.firstControl.valueChanges
1057
- .pipe(this.getDestroyer(), distinctUntilChanged())
1058
- .subscribe(() => {
1059
- this.setFieldsStateAndValidators();
1060
- });
1061
- this.secondControl.valueChanges
1062
- .pipe(this.getDestroyer(), distinctUntilChanged())
1063
- .subscribe(() => {
1064
- this.setFieldsStateAndValidators();
1065
- });
1066
- this.setControlsWidth();
1067
- }
1068
- // Override
1069
- getDefaultOperator() {
1070
- return PepSmartFilterOperators.Equals;
1071
- }
1072
- // Override
1073
- getFilterValue() {
1074
- const filterValue = {
1075
- first: this.firstControl.value,
1076
- };
1077
- if (this.operator === PepSmartFilterOperators.NumberRange) {
1078
- filterValue['second'] = this.secondControl.value;
1079
- }
1080
- return filterValue;
1081
- }
1082
- // Override
1083
- loadOperatorsOptions() {
1084
- this.chooseTypeOptions = this.operators.map((operator) => {
1085
- return {
1086
- key: operator.id,
1087
- value: this.translate.instant(`${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`),
1088
- };
1089
- });
1090
- }
1091
- // Override
1092
- setFieldsStateAndValidators() {
1093
- if (this.operator === PepSmartFilterOperators.NumberRange) {
1094
- const firstValidators = [Validators.required];
1095
- if (this.secondControl.value) {
1096
- firstValidators.push(this.validator.isLessThan(this.secondControl));
1097
- }
1098
- this.firstControl.setValidators(firstValidators);
1099
- this.secondControl.enable();
1100
- const secondValidators = [Validators.required];
1101
- if (this.firstControl.value) {
1102
- secondValidators.push(this.validator.isGreaterThan(this.firstControl));
1103
- }
1104
- this.secondControl.setValidators(secondValidators);
1105
- }
1106
- else {
1107
- super.setFieldsStateAndValidators();
1108
- }
1109
- }
1110
- setControlsWidth() {
1111
- if (this.operator === PepSmartFilterOperators.NumberRange) {
1112
- this.operatorWidth = '30%';
1113
- this.fieldsWidth = '70%';
1114
- }
1115
- else {
1116
- this.operatorWidth = '38%';
1117
- this.fieldsWidth = '62%';
1118
- }
1119
- }
1120
- onOperatorChanged(value) {
1121
- const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
1122
- this.operator = operator;
1123
- if (this._parentForm) {
1124
- this.updateParentForm();
1125
- }
1126
- if (this.emitOnChange) {
1127
- this.applyFilter();
1128
- }
1129
- this.setControlsWidth();
1130
- }
1131
- onValueChanged() {
1132
- if (this.emitOnChange) {
1133
- this.applyFilter();
1134
- }
1135
- }
1136
- }
1137
- PepNumberFilterComponent.decorators = [
1138
- { type: Component, args: [{
1139
- selector: 'pep-number-filter',
1140
- template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <ng-container>\n <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n </ng-container>\n <div *ngIf=\"operator !== PepSmartFilterOperators.NumberRange\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Amount -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\"\n [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n </div>\n <div *ngIf=\"operator === PepSmartFilterOperators.NumberRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Min number -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.MIN' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\" fxFlex=\"50%\"\n [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n [maxValue]=\"secondControl?.value || ''\" (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n <!-- Max number -->\n <pep-textbox [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.MAX' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\" fxFlex=\"50%\"\n [formattedValue]=\"secondControl?.value || ''\" [value]=\"secondControl?.value || ''\"\n [minValue]=\"firstControl?.value || ''\" (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n </div>\n</div>",
1141
- styles: [""]
1142
- },] }
1047
+ class PepNumberFilterComponent extends BaseFilterComponent {
1048
+ constructor() {
1049
+ super(...arguments);
1050
+ this.PepSmartFilterOperators = PepSmartFilterOperators;
1051
+ this.chooseTypeOptions = [];
1052
+ this.operatorWidth = '38%';
1053
+ this.fieldsWidth = '70%';
1054
+ }
1055
+ ngOnInit() {
1056
+ this.firstControl.valueChanges
1057
+ .pipe(this.getDestroyer(), distinctUntilChanged())
1058
+ .subscribe(() => {
1059
+ this.setFieldsStateAndValidators();
1060
+ });
1061
+ this.secondControl.valueChanges
1062
+ .pipe(this.getDestroyer(), distinctUntilChanged())
1063
+ .subscribe(() => {
1064
+ this.setFieldsStateAndValidators();
1065
+ });
1066
+ this.setControlsWidth();
1067
+ }
1068
+ // Override
1069
+ getDefaultOperator() {
1070
+ return PepSmartFilterOperators.Equals;
1071
+ }
1072
+ // Override
1073
+ getFilterValue() {
1074
+ const filterValue = {
1075
+ first: this.firstControl.value,
1076
+ };
1077
+ if (this.operator === PepSmartFilterOperators.NumberRange) {
1078
+ filterValue['second'] = this.secondControl.value;
1079
+ }
1080
+ return filterValue;
1081
+ }
1082
+ // Override
1083
+ loadOperatorsOptions() {
1084
+ this.chooseTypeOptions = this.operators.map((operator) => {
1085
+ return {
1086
+ key: operator.id,
1087
+ value: this.translate.instant(`${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`),
1088
+ };
1089
+ });
1090
+ }
1091
+ // Override
1092
+ setFieldsStateAndValidators() {
1093
+ if (this.operator === PepSmartFilterOperators.NumberRange) {
1094
+ const firstValidators = [Validators.required];
1095
+ if (this.secondControl.value) {
1096
+ firstValidators.push(this.validator.isLessThan(this.secondControl));
1097
+ }
1098
+ this.firstControl.setValidators(firstValidators);
1099
+ this.secondControl.enable();
1100
+ const secondValidators = [Validators.required];
1101
+ if (this.firstControl.value) {
1102
+ secondValidators.push(this.validator.isGreaterThan(this.firstControl));
1103
+ }
1104
+ this.secondControl.setValidators(secondValidators);
1105
+ }
1106
+ else {
1107
+ super.setFieldsStateAndValidators();
1108
+ }
1109
+ }
1110
+ setControlsWidth() {
1111
+ if (this.operator === PepSmartFilterOperators.NumberRange) {
1112
+ this.operatorWidth = '30%';
1113
+ this.fieldsWidth = '70%';
1114
+ }
1115
+ else {
1116
+ this.operatorWidth = '38%';
1117
+ this.fieldsWidth = '62%';
1118
+ }
1119
+ }
1120
+ onOperatorChanged(value) {
1121
+ const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
1122
+ this.operator = operator;
1123
+ if (this._parentForm) {
1124
+ this.updateParentForm();
1125
+ }
1126
+ if (this.emitOnChange) {
1127
+ this.applyFilter();
1128
+ }
1129
+ this.setControlsWidth();
1130
+ }
1131
+ onValueChanged() {
1132
+ if (this.emitOnChange) {
1133
+ this.applyFilter();
1134
+ }
1135
+ }
1136
+ }
1137
+ PepNumberFilterComponent.decorators = [
1138
+ { type: Component, args: [{
1139
+ selector: 'pep-number-filter',
1140
+ template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <ng-container>\n <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n </ng-container>\n <div *ngIf=\"operator !== PepSmartFilterOperators.NumberRange\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Amount -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\"\n [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n </div>\n <div *ngIf=\"operator === PepSmartFilterOperators.NumberRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Min number -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.MIN' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\" fxFlex=\"50%\"\n [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n [maxValue]=\"secondControl?.value || ''\" (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n <!-- Max number -->\n <pep-textbox [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.MAX' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\" fxFlex=\"50%\"\n [formattedValue]=\"secondControl?.value || ''\" [value]=\"secondControl?.value || ''\"\n [minValue]=\"firstControl?.value || ''\" (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n </div>\n</div>",
1141
+ styles: [""]
1142
+ },] }
1143
1143
  ];
1144
1144
 
1145
- class PepSmartFiltersModule {
1146
- constructor(pepIconRegistry) {
1147
- this.pepIconRegistry = pepIconRegistry;
1148
- this.pepIconRegistry.registerIcons([
1149
- pepIconNumberMinus,
1150
- pepIconNumberPlus,
1151
- ]);
1152
- }
1153
- }
1154
- PepSmartFiltersModule.decorators = [
1155
- { type: NgModule, args: [{
1156
- imports: [
1157
- CommonModule,
1158
- ReactiveFormsModule,
1159
- FlexLayoutModule,
1160
- // Material modules
1161
- MatCommonModule,
1162
- MatCheckboxModule,
1163
- MatChipsModule,
1164
- MatExpansionModule,
1165
- MatIconModule,
1166
- MatFormFieldModule,
1167
- MatInputModule,
1168
- MatRadioModule,
1169
- // External modules
1170
- VirtualScrollerModule,
1171
- // ngx-lib modules
1172
- PepNgxLibModule,
1173
- PepCheckboxModule,
1174
- PepDateModule,
1175
- PepSelectModule,
1176
- PepTextboxModule,
1177
- PepSearchModule,
1178
- PepIconModule,
1179
- PepButtonModule,
1180
- PepGroupButtonsModule
1181
- ],
1182
- exports: [
1183
- PepSmartFiltersComponent,
1184
- PepTextFilterComponent,
1185
- PepBooleanFilterComponent,
1186
- PepDateFilterComponent,
1187
- PepMultiSelectFilterComponent,
1188
- PepNumberFilterComponent
1189
- ],
1190
- declarations: [
1191
- // BaseFilterComponent,
1192
- PepSmartFiltersComponent,
1193
- PepFilterActionsComponent,
1194
- PepTextFilterComponent,
1195
- PepBooleanFilterComponent,
1196
- PepDateFilterComponent,
1197
- PepMultiSelectFilterComponent,
1198
- PepNumberFilterComponent
1199
- ],
1200
- },] }
1201
- ];
1202
- PepSmartFiltersModule.ctorParameters = () => [
1203
- { type: PepIconRegistry }
1145
+ class PepSmartFiltersModule {
1146
+ constructor(pepIconRegistry) {
1147
+ this.pepIconRegistry = pepIconRegistry;
1148
+ this.pepIconRegistry.registerIcons([
1149
+ pepIconNumberMinus,
1150
+ pepIconNumberPlus,
1151
+ ]);
1152
+ }
1153
+ }
1154
+ PepSmartFiltersModule.decorators = [
1155
+ { type: NgModule, args: [{
1156
+ imports: [
1157
+ CommonModule,
1158
+ ReactiveFormsModule,
1159
+ FlexLayoutModule,
1160
+ // Material modules
1161
+ MatCommonModule,
1162
+ MatCheckboxModule,
1163
+ MatChipsModule,
1164
+ MatExpansionModule,
1165
+ MatIconModule,
1166
+ MatFormFieldModule,
1167
+ MatInputModule,
1168
+ MatRadioModule,
1169
+ // External modules
1170
+ VirtualScrollerModule,
1171
+ // ngx-lib modules
1172
+ PepNgxLibModule,
1173
+ PepCheckboxModule,
1174
+ PepDateModule,
1175
+ PepSelectModule,
1176
+ PepTextboxModule,
1177
+ PepSearchModule,
1178
+ PepIconModule,
1179
+ PepButtonModule,
1180
+ PepGroupButtonsModule
1181
+ ],
1182
+ exports: [
1183
+ PepSmartFiltersComponent,
1184
+ PepTextFilterComponent,
1185
+ PepBooleanFilterComponent,
1186
+ PepDateFilterComponent,
1187
+ PepMultiSelectFilterComponent,
1188
+ PepNumberFilterComponent
1189
+ ],
1190
+ declarations: [
1191
+ // BaseFilterComponent,
1192
+ PepSmartFiltersComponent,
1193
+ PepFilterActionsComponent,
1194
+ PepTextFilterComponent,
1195
+ PepBooleanFilterComponent,
1196
+ PepDateFilterComponent,
1197
+ PepMultiSelectFilterComponent,
1198
+ PepNumberFilterComponent
1199
+ ],
1200
+ },] }
1201
+ ];
1202
+ PepSmartFiltersModule.ctorParameters = () => [
1203
+ { type: PepIconRegistry }
1204
1204
  ];
1205
1205
 
1206
- // Base field
1207
- // ------------------------------
1208
- class PepSmartFilterBaseField {
1209
- constructor(field) {
1210
- this.id = field.id;
1211
- this.name = field.name;
1212
- this.isOpen = field.isOpen;
1213
- this.options = field.options;
1214
- this.operators = field.operators;
1215
- this.operatorUnits = field.operatorUnits;
1216
- this._type = this.getType();
1217
- }
1218
- get componentType() {
1219
- return this._componentType;
1220
- }
1221
- get type() {
1222
- return this._type;
1223
- }
1224
- }
1225
- // Text field
1226
- // ------------------------------
1227
- class PepSmartFilterTextField extends PepSmartFilterBaseField {
1228
- constructor(field) {
1229
- super(field);
1230
- this._componentType = 'text';
1231
- }
1232
- getType() {
1233
- return 'text';
1234
- }
1235
- }
1236
- // Boolean field
1237
- // ------------------------------
1238
- class PepSmartFilterBooleanField extends PepSmartFilterBaseField {
1239
- constructor(field) {
1240
- super(field);
1241
- this._componentType = 'boolean';
1242
- }
1243
- getType() {
1244
- return 'boolean';
1245
- }
1246
- }
1247
- // Date fields
1248
- // ------------------------------
1249
- class PepSmartFilterDateBaseField extends PepSmartFilterBaseField {
1250
- constructor(field) {
1251
- super(field);
1252
- this._componentType = 'date';
1253
- }
1254
- }
1255
- class PepSmartFilterDateField extends PepSmartFilterDateBaseField {
1256
- constructor(field) {
1257
- super(field);
1258
- }
1259
- getType() {
1260
- return 'date';
1261
- }
1262
- }
1263
- class PepSmartFilterDateTimeField extends PepSmartFilterDateBaseField {
1264
- constructor(field) {
1265
- super(field);
1266
- }
1267
- getType() {
1268
- return 'date-time';
1269
- }
1270
- }
1271
- // Multi select field
1272
- // ------------------------------
1273
- class PepSmartFilterMultiSelectField extends PepSmartFilterBaseField {
1274
- constructor(field) {
1275
- super(field);
1276
- this._componentType = 'multi-select';
1277
- }
1278
- getType() {
1279
- return 'multi-select';
1280
- }
1281
- }
1282
- // Number fields
1283
- // ------------------------------
1284
- class PepSmartFilterNumberBaseField extends PepSmartFilterBaseField {
1285
- constructor(field) {
1286
- super(field);
1287
- this._componentType = 'number';
1288
- }
1289
- }
1290
- class PepSmartFilterIntField extends PepSmartFilterNumberBaseField {
1291
- constructor(field) {
1292
- super(field);
1293
- }
1294
- getType() {
1295
- return 'int';
1296
- }
1297
- }
1298
- class PepSmartFilterRealField extends PepSmartFilterNumberBaseField {
1299
- constructor(field) {
1300
- super(field);
1301
- }
1302
- getType() {
1303
- return 'real';
1304
- }
1305
- }
1306
- class PepSmartFilterCurrencyField extends PepSmartFilterNumberBaseField {
1307
- constructor(field) {
1308
- super(field);
1309
- }
1310
- getType() {
1311
- return 'currency';
1312
- }
1313
- }
1314
- class PepSmartFilterPercentageField extends PepSmartFilterNumberBaseField {
1315
- constructor(field) {
1316
- super(field);
1317
- }
1318
- getType() {
1319
- return 'percentage';
1320
- }
1206
+ // Base field
1207
+ // ------------------------------
1208
+ class PepSmartFilterBaseField {
1209
+ constructor(field) {
1210
+ this.id = field.id;
1211
+ this.name = field.name;
1212
+ this.isOpen = field.isOpen;
1213
+ this.options = field.options;
1214
+ this.operators = field.operators;
1215
+ this.operatorUnits = field.operatorUnits;
1216
+ this._type = this.getType();
1217
+ }
1218
+ get componentType() {
1219
+ return this._componentType;
1220
+ }
1221
+ get type() {
1222
+ return this._type;
1223
+ }
1224
+ }
1225
+ // Text field
1226
+ // ------------------------------
1227
+ class PepSmartFilterTextField extends PepSmartFilterBaseField {
1228
+ constructor(field) {
1229
+ super(field);
1230
+ this._componentType = 'text';
1231
+ }
1232
+ getType() {
1233
+ return 'text';
1234
+ }
1235
+ }
1236
+ // Boolean field
1237
+ // ------------------------------
1238
+ class PepSmartFilterBooleanField extends PepSmartFilterBaseField {
1239
+ constructor(field) {
1240
+ super(field);
1241
+ this._componentType = 'boolean';
1242
+ }
1243
+ getType() {
1244
+ return 'boolean';
1245
+ }
1246
+ }
1247
+ // Date fields
1248
+ // ------------------------------
1249
+ class PepSmartFilterDateBaseField extends PepSmartFilterBaseField {
1250
+ constructor(field) {
1251
+ super(field);
1252
+ this._componentType = 'date';
1253
+ }
1254
+ }
1255
+ class PepSmartFilterDateField extends PepSmartFilterDateBaseField {
1256
+ constructor(field) {
1257
+ super(field);
1258
+ }
1259
+ getType() {
1260
+ return 'date';
1261
+ }
1262
+ }
1263
+ class PepSmartFilterDateTimeField extends PepSmartFilterDateBaseField {
1264
+ constructor(field) {
1265
+ super(field);
1266
+ }
1267
+ getType() {
1268
+ return 'date-time';
1269
+ }
1270
+ }
1271
+ // Multi select field
1272
+ // ------------------------------
1273
+ class PepSmartFilterMultiSelectField extends PepSmartFilterBaseField {
1274
+ constructor(field) {
1275
+ super(field);
1276
+ this._componentType = 'multi-select';
1277
+ }
1278
+ getType() {
1279
+ return 'multi-select';
1280
+ }
1281
+ }
1282
+ // Number fields
1283
+ // ------------------------------
1284
+ class PepSmartFilterNumberBaseField extends PepSmartFilterBaseField {
1285
+ constructor(field) {
1286
+ super(field);
1287
+ this._componentType = 'number';
1288
+ }
1289
+ }
1290
+ class PepSmartFilterIntField extends PepSmartFilterNumberBaseField {
1291
+ constructor(field) {
1292
+ super(field);
1293
+ }
1294
+ getType() {
1295
+ return 'int';
1296
+ }
1297
+ }
1298
+ class PepSmartFilterRealField extends PepSmartFilterNumberBaseField {
1299
+ constructor(field) {
1300
+ super(field);
1301
+ }
1302
+ getType() {
1303
+ return 'real';
1304
+ }
1305
+ }
1306
+ class PepSmartFilterCurrencyField extends PepSmartFilterNumberBaseField {
1307
+ constructor(field) {
1308
+ super(field);
1309
+ }
1310
+ getType() {
1311
+ return 'currency';
1312
+ }
1313
+ }
1314
+ class PepSmartFilterPercentageField extends PepSmartFilterNumberBaseField {
1315
+ constructor(field) {
1316
+ super(field);
1317
+ }
1318
+ getType() {
1319
+ return 'percentage';
1320
+ }
1321
1321
  }
1322
1322
 
1323
- function createTextSmartFilterField(data) {
1324
- return new PepSmartFilterTextField(data);
1325
- }
1326
- function createBooleanSmartFilterField(data) {
1327
- return new PepSmartFilterBooleanField(data);
1328
- }
1329
- function createDateSmartFilterField(data) {
1330
- return new PepSmartFilterDateField(data);
1331
- }
1332
- function createDateTimeSmartFilterField(data) {
1333
- return new PepSmartFilterDateTimeField(data);
1334
- }
1335
- function createMultiSelectSmartFilterField(data) {
1336
- return new PepSmartFilterMultiSelectField(data);
1337
- }
1338
- function createIntSmartFilterField(data) {
1339
- return new PepSmartFilterIntField(data);
1340
- }
1341
- function createRealSmartFilterField(data) {
1342
- return new PepSmartFilterRealField(data);
1343
- }
1344
- function createCurrencySmartFilterField(data) {
1345
- return new PepSmartFilterCurrencyField(data);
1346
- }
1347
- function createPercentageSmartFilterField(data) {
1348
- return new PepSmartFilterPercentageField(data);
1349
- }
1350
- function createSmartFilterField(data, type) {
1351
- let field;
1352
- switch (type) {
1353
- case 'text':
1354
- field = createTextSmartFilterField(data);
1355
- break;
1356
- case 'boolean':
1357
- field = createBooleanSmartFilterField(data);
1358
- break;
1359
- case 'date':
1360
- field = createDateSmartFilterField(data);
1361
- break;
1362
- case 'date-time':
1363
- field = createDateTimeSmartFilterField(data);
1364
- break;
1365
- case 'multi-select':
1366
- field = createMultiSelectSmartFilterField(data);
1367
- break;
1368
- case 'int':
1369
- field = createIntSmartFilterField(data);
1370
- break;
1371
- case 'real':
1372
- field = createRealSmartFilterField(data);
1373
- break;
1374
- case 'currency':
1375
- field = createCurrencySmartFilterField(data);
1376
- break;
1377
- case 'percentage':
1378
- field = createPercentageSmartFilterField(data);
1379
- break;
1380
- default:
1381
- field = createMultiSelectSmartFilterField(data);
1382
- break;
1383
- }
1384
- return field;
1385
- }
1386
- function createSmartFilter(fieldId, operator, first, second, operatorUnit) {
1387
- return {
1388
- fieldId: fieldId,
1389
- operator: operator,
1390
- operatorUnit: operatorUnit,
1391
- value: {
1392
- first: first,
1393
- second: second,
1394
- },
1395
- };
1323
+ function createTextSmartFilterField(data) {
1324
+ return new PepSmartFilterTextField(data);
1325
+ }
1326
+ function createBooleanSmartFilterField(data) {
1327
+ return new PepSmartFilterBooleanField(data);
1328
+ }
1329
+ function createDateSmartFilterField(data) {
1330
+ return new PepSmartFilterDateField(data);
1331
+ }
1332
+ function createDateTimeSmartFilterField(data) {
1333
+ return new PepSmartFilterDateTimeField(data);
1334
+ }
1335
+ function createMultiSelectSmartFilterField(data) {
1336
+ return new PepSmartFilterMultiSelectField(data);
1337
+ }
1338
+ function createIntSmartFilterField(data) {
1339
+ return new PepSmartFilterIntField(data);
1340
+ }
1341
+ function createRealSmartFilterField(data) {
1342
+ return new PepSmartFilterRealField(data);
1343
+ }
1344
+ function createCurrencySmartFilterField(data) {
1345
+ return new PepSmartFilterCurrencyField(data);
1346
+ }
1347
+ function createPercentageSmartFilterField(data) {
1348
+ return new PepSmartFilterPercentageField(data);
1349
+ }
1350
+ function createSmartFilterField(data, type) {
1351
+ let field;
1352
+ switch (type) {
1353
+ case 'text':
1354
+ field = createTextSmartFilterField(data);
1355
+ break;
1356
+ case 'boolean':
1357
+ field = createBooleanSmartFilterField(data);
1358
+ break;
1359
+ case 'date':
1360
+ field = createDateSmartFilterField(data);
1361
+ break;
1362
+ case 'date-time':
1363
+ field = createDateTimeSmartFilterField(data);
1364
+ break;
1365
+ case 'multi-select':
1366
+ field = createMultiSelectSmartFilterField(data);
1367
+ break;
1368
+ case 'int':
1369
+ field = createIntSmartFilterField(data);
1370
+ break;
1371
+ case 'real':
1372
+ field = createRealSmartFilterField(data);
1373
+ break;
1374
+ case 'currency':
1375
+ field = createCurrencySmartFilterField(data);
1376
+ break;
1377
+ case 'percentage':
1378
+ field = createPercentageSmartFilterField(data);
1379
+ break;
1380
+ default:
1381
+ field = createMultiSelectSmartFilterField(data);
1382
+ break;
1383
+ }
1384
+ return field;
1385
+ }
1386
+ function createSmartFilter(fieldId, operator, first, second, operatorUnit) {
1387
+ return {
1388
+ fieldId: fieldId,
1389
+ operator: operator,
1390
+ operatorUnit: operatorUnit,
1391
+ value: {
1392
+ first: first,
1393
+ second: second,
1394
+ },
1395
+ };
1396
1396
  }
1397
1397
 
1398
- /*
1399
- * Public API Surface of ngx-lib/smart-filters
1398
+ /*
1399
+ * Public API Surface of ngx-lib/smart-filters
1400
1400
  */
1401
1401
 
1402
- /**
1403
- * Generated bundle index. Do not edit.
1402
+ /**
1403
+ * Generated bundle index. Do not edit.
1404
1404
  */
1405
1405
 
1406
1406
  export { BaseFilterComponent, IPepSmartFilterOperator, IPepSmartFilterOperatorUnit, PepBooleanFilterComponent, PepDateFilterComponent, PepFilterActionsComponent, PepMultiSelectFilterComponent, PepNumberFilterComponent, PepSmartFilterBaseField, PepSmartFilterBooleanField, PepSmartFilterCurrencyField, PepSmartFilterDateBaseField, PepSmartFilterDateField, PepSmartFilterDateTimeField, PepSmartFilterIntField, PepSmartFilterMultiSelectField, PepSmartFilterNumberBaseField, PepSmartFilterOperatorUnits, PepSmartFilterOperators, PepSmartFilterPercentageField, PepSmartFilterRealField, PepSmartFilterTextField, PepSmartFiltersComponent, PepSmartFiltersModule, PepTextFilterComponent, createSmartFilter, createSmartFilterField };