@pepperi-addons/ngx-lib 0.2.59 → 0.2.61-beta.3

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 (301) hide show
  1. package/address/address.component.theme.scss +4 -7
  2. package/address/pepperi-addons-ngx-lib-address.metadata.json +1 -1
  3. package/attachment/attachment.component.d.ts +1 -0
  4. package/attachment/attachment.component.theme.scss +3 -2
  5. package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
  6. package/bread-crumbs/bread-crumbs.component.theme.scss +7 -7
  7. package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.metadata.json +1 -1
  8. package/bundles/pepperi-addons-ngx-lib-address.umd.js +1 -1
  9. package/bundles/pepperi-addons-ngx-lib-address.umd.js.map +1 -1
  10. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +7 -2
  11. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
  12. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js +1 -1
  13. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js.map +1 -1
  14. package/bundles/pepperi-addons-ngx-lib-button.umd.js +1 -1
  15. package/bundles/pepperi-addons-ngx-lib-button.umd.js.map +1 -1
  16. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +4 -1
  17. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
  18. package/bundles/pepperi-addons-ngx-lib-color.umd.js +8 -3
  19. package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
  20. package/bundles/pepperi-addons-ngx-lib-date.umd.js +4 -1
  21. package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
  22. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +1 -1
  23. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js.map +1 -1
  24. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +1 -1
  25. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js.map +1 -1
  26. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +1 -1
  27. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js.map +1 -1
  28. package/bundles/pepperi-addons-ngx-lib-form.umd.js +19 -16
  29. package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
  30. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +1 -1
  31. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js.map +1 -1
  32. package/bundles/pepperi-addons-ngx-lib-image.umd.js +7 -2
  33. package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
  34. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +7 -2
  35. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
  36. package/bundles/pepperi-addons-ngx-lib-list.umd.js +1 -1
  37. package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
  38. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +7 -2
  39. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
  40. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +1104 -0
  41. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js.map +1 -0
  42. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +7 -2
  43. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
  44. package/bundles/pepperi-addons-ngx-lib-select.umd.js +7 -2
  45. package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
  46. package/bundles/pepperi-addons-ngx-lib-separator.umd.js +9 -1
  47. package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
  48. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +1 -1
  49. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js.map +1 -1
  50. package/bundles/pepperi-addons-ngx-lib-signature.umd.js +7 -2
  51. package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
  52. package/bundles/pepperi-addons-ngx-lib-slider.umd.js +1 -1
  53. package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
  54. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +306 -39
  55. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
  56. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +7 -2
  57. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
  58. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +5 -3
  59. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
  60. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +1 -1
  61. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js.map +1 -1
  62. package/bundles/pepperi-addons-ngx-lib.umd.js +3 -1
  63. package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
  64. package/button/button.component.theme.scss +0 -2
  65. package/button/pepperi-addons-ngx-lib-button.metadata.json +1 -1
  66. package/checkbox/checkbox.component.theme.scss +0 -2
  67. package/checkbox/pepperi-addons-ngx-lib-checkbox.metadata.json +1 -1
  68. package/color/color-picker.component.theme.scss +123 -128
  69. package/color/color.component.d.ts +1 -0
  70. package/color/color.component.theme.scss +0 -7
  71. package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
  72. package/core/customization/customization.service.d.ts +1 -0
  73. package/date/date.component.theme.scss +163 -169
  74. package/date/pepperi-addons-ngx-lib-date.metadata.json +1 -1
  75. package/dialog/dialog.component.theme.scss +4 -4
  76. package/dialog/pepperi-addons-ngx-lib-dialog.metadata.json +1 -1
  77. package/esm2015/address/address.component.js +2 -2
  78. package/esm2015/attachment/attachment.component.js +8 -3
  79. package/esm2015/bread-crumbs/bread-crumbs.component.js +2 -2
  80. package/esm2015/button/button.component.js +2 -2
  81. package/esm2015/checkbox/checkbox.component.js +5 -2
  82. package/esm2015/color/color-picker.component.js +2 -2
  83. package/esm2015/color/color.component.js +8 -3
  84. package/esm2015/core/customization/customization.service.js +4 -2
  85. package/esm2015/date/date.component.js +5 -2
  86. package/esm2015/dialog/dialog.component.js +2 -2
  87. package/esm2015/field-title/field-title.component.js +2 -2
  88. package/esm2015/files-uploader/files-uploader.component.js +2 -2
  89. package/esm2015/form/indicators.component.js +2 -2
  90. package/esm2015/form/internal-button.component.js +20 -17
  91. package/esm2015/group-buttons/group-buttons.component.js +2 -2
  92. package/esm2015/image/image.component.js +8 -3
  93. package/esm2015/images-filmstrip/images-filmstrip.component.js +8 -3
  94. package/esm2015/list/list-total.component.js +2 -2
  95. package/esm2015/quantity-selector/quantity-selector.component.js +8 -3
  96. package/esm2015/query-builder/common/model/field.js +2 -0
  97. package/esm2015/query-builder/common/model/filter.js +2 -0
  98. package/esm2015/query-builder/common/model/legacy.js +2 -0
  99. package/esm2015/query-builder/common/model/operator-unit.js +42 -0
  100. package/esm2015/query-builder/common/model/operator.js +207 -0
  101. package/esm2015/query-builder/common/model/structure.js +2 -0
  102. package/esm2015/query-builder/common/model/type-map.js +27 -0
  103. package/esm2015/query-builder/common/model/type.js +6 -0
  104. package/esm2015/query-builder/common/services/output-query.service.js +111 -0
  105. package/esm2015/query-builder/common/services/type-convertor.service.js +40 -0
  106. package/esm2015/query-builder/pepperi-addons-ngx-lib-query-builder.js +9 -0
  107. package/esm2015/query-builder/public-api.js +8 -0
  108. package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +116 -0
  109. package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +64 -0
  110. package/esm2015/query-builder/query-builder.component.js +104 -0
  111. package/esm2015/query-builder/query-builder.module.js +35 -0
  112. package/esm2015/query-builder/query-builder.service.js +282 -0
  113. package/esm2015/rich-html-textarea/rich-html-textarea.component.js +8 -3
  114. package/esm2015/select/select.component.js +8 -3
  115. package/esm2015/separator/separator.component.js +10 -2
  116. package/esm2015/side-bar/side-bar.component.js +2 -2
  117. package/esm2015/signature/signature.component.js +8 -3
  118. package/esm2015/slider/slider.component.js +2 -2
  119. package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +23 -3
  120. package/esm2015/smart-filters/common/model/base-filter-component.js +35 -8
  121. package/esm2015/smart-filters/common/model/creator.js +8 -2
  122. package/esm2015/smart-filters/common/model/field.js +12 -1
  123. package/esm2015/smart-filters/common/model/operator.js +8 -8
  124. package/esm2015/smart-filters/common/model/type.js +1 -1
  125. package/esm2015/smart-filters/date-filter/date-filter.component.js +45 -2
  126. package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +53 -14
  127. package/esm2015/smart-filters/number-filter/number-filter.component.js +27 -2
  128. package/esm2015/smart-filters/public-api.js +2 -1
  129. package/esm2015/smart-filters/smart-filters.component.js +2 -2
  130. package/esm2015/smart-filters/smart-filters.module.js +16 -3
  131. package/esm2015/smart-filters/text-filter/text-filter.component.js +79 -0
  132. package/esm2015/textarea/textarea.component.js +8 -3
  133. package/esm2015/textbox/textbox.component.js +6 -4
  134. package/esm2015/top-bar/top-bar.component.js +2 -2
  135. package/fesm2015/pepperi-addons-ngx-lib-address.js +1 -1
  136. package/fesm2015/pepperi-addons-ngx-lib-address.js.map +1 -1
  137. package/fesm2015/pepperi-addons-ngx-lib-attachment.js +7 -2
  138. package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
  139. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js +1 -1
  140. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js.map +1 -1
  141. package/fesm2015/pepperi-addons-ngx-lib-button.js +1 -1
  142. package/fesm2015/pepperi-addons-ngx-lib-button.js.map +1 -1
  143. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +4 -1
  144. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
  145. package/fesm2015/pepperi-addons-ngx-lib-color.js +8 -3
  146. package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
  147. package/fesm2015/pepperi-addons-ngx-lib-date.js +4 -1
  148. package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
  149. package/fesm2015/pepperi-addons-ngx-lib-dialog.js +1 -1
  150. package/fesm2015/pepperi-addons-ngx-lib-dialog.js.map +1 -1
  151. package/fesm2015/pepperi-addons-ngx-lib-field-title.js +1 -1
  152. package/fesm2015/pepperi-addons-ngx-lib-field-title.js.map +1 -1
  153. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +1 -1
  154. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js.map +1 -1
  155. package/fesm2015/pepperi-addons-ngx-lib-form.js +19 -16
  156. package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
  157. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +1 -1
  158. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js.map +1 -1
  159. package/fesm2015/pepperi-addons-ngx-lib-image.js +7 -2
  160. package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
  161. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +7 -2
  162. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
  163. package/fesm2015/pepperi-addons-ngx-lib-list.js +1 -1
  164. package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
  165. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +7 -2
  166. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
  167. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +1014 -0
  168. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js.map +1 -0
  169. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +7 -2
  170. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
  171. package/fesm2015/pepperi-addons-ngx-lib-select.js +7 -2
  172. package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
  173. package/fesm2015/pepperi-addons-ngx-lib-separator.js +9 -1
  174. package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
  175. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +1 -1
  176. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js.map +1 -1
  177. package/fesm2015/pepperi-addons-ngx-lib-signature.js +7 -2
  178. package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
  179. package/fesm2015/pepperi-addons-ngx-lib-slider.js +1 -1
  180. package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
  181. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +293 -36
  182. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
  183. package/fesm2015/pepperi-addons-ngx-lib-textarea.js +7 -2
  184. package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
  185. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +5 -3
  186. package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
  187. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +1 -1
  188. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js.map +1 -1
  189. package/fesm2015/pepperi-addons-ngx-lib.js +3 -1
  190. package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
  191. package/field-title/field-title.component.theme.scss +0 -2
  192. package/field-title/pepperi-addons-ngx-lib-field-title.metadata.json +1 -1
  193. package/files-uploader/files-uploader.component.theme.scss +3 -2
  194. package/files-uploader/pepperi-addons-ngx-lib-files-uploader.metadata.json +1 -1
  195. package/form/indicators.component.theme.scss +5 -5
  196. package/form/internal-button.component.d.ts +0 -1
  197. package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
  198. package/group-buttons/group-buttons.component.theme.scss +11 -11
  199. package/group-buttons/pepperi-addons-ngx-lib-group-buttons.metadata.json +1 -1
  200. package/image/image.component.d.ts +1 -0
  201. package/image/image.component.theme.scss +28 -27
  202. package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
  203. package/images-filmstrip/images-filmstrip.component.d.ts +1 -0
  204. package/images-filmstrip/images-filmstrip.component.theme.scss +27 -26
  205. package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
  206. package/list/list-total.component.theme.scss +6 -6
  207. package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
  208. package/package.json +5 -5
  209. package/page-layout/page-layout.component.theme.scss +6 -6
  210. package/pepperi-addons-ngx-lib.metadata.json +1 -1
  211. package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
  212. package/quantity-selector/quantity-selector.component.d.ts +1 -0
  213. package/quantity-selector/quantity-selector.component.theme.scss +21 -21
  214. package/query-builder/common/model/field.d.ts +8 -0
  215. package/query-builder/common/model/filter.d.ts +6 -0
  216. package/query-builder/common/model/legacy.d.ts +29 -0
  217. package/query-builder/common/model/operator-unit.d.ts +13 -0
  218. package/query-builder/common/model/operator.d.ts +21 -0
  219. package/query-builder/common/model/structure.d.ts +4 -0
  220. package/query-builder/common/model/type-map.d.ts +12 -0
  221. package/query-builder/common/model/type.d.ts +4 -0
  222. package/query-builder/common/services/output-query.service.d.ts +44 -0
  223. package/query-builder/common/services/type-convertor.service.d.ts +10 -0
  224. package/query-builder/package.json +14 -0
  225. package/query-builder/pepperi-addons-ngx-lib-query-builder.d.ts +8 -0
  226. package/query-builder/pepperi-addons-ngx-lib-query-builder.metadata.json +1 -0
  227. package/query-builder/public-api.d.ts +4 -0
  228. package/query-builder/query-builder-item/query-builder-item.component.d.ts +37 -0
  229. package/query-builder/query-builder-section/query-builder-section.component.d.ts +27 -0
  230. package/query-builder/query-builder-section/query-builder-section.component.theme.scss +7 -0
  231. package/query-builder/query-builder.component.d.ts +35 -0
  232. package/query-builder/query-builder.module.d.ts +2 -0
  233. package/query-builder/query-builder.service.d.ts +94 -0
  234. package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
  235. package/rich-html-textarea/rich-html-textarea.component.d.ts +1 -0
  236. package/rich-html-textarea/rich-html-textarea.component.theme.scss +77 -70
  237. package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
  238. package/select/select.component.d.ts +1 -0
  239. package/select/select.component.theme.scss +98 -2
  240. package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
  241. package/separator/separator.component.theme.scss +1 -1
  242. package/side-bar/pepperi-addons-ngx-lib-side-bar.metadata.json +1 -1
  243. package/side-bar/side-bar.component.theme.scss +17 -16
  244. package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
  245. package/signature/signature.component.d.ts +1 -0
  246. package/signature/signature.component.theme.scss +5 -21
  247. package/slider/pepperi-addons-ngx-lib-slider.metadata.json +1 -1
  248. package/slider/slider.component.theme.scss +55 -53
  249. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +6 -1
  250. package/smart-filters/common/model/base-filter-component.d.ts +7 -0
  251. package/smart-filters/common/model/field.d.ts +4 -0
  252. package/smart-filters/common/model/operator.d.ts +1 -0
  253. package/smart-filters/common/model/type.d.ts +2 -2
  254. package/smart-filters/date-filter/date-filter.component.d.ts +8 -1
  255. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +6 -0
  256. package/smart-filters/number-filter/number-filter.component.d.ts +5 -0
  257. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
  258. package/smart-filters/public-api.d.ts +1 -0
  259. package/smart-filters/smart-filters.component.theme.scss +6 -7
  260. package/smart-filters/text-filter/text-filter.component.d.ts +17 -0
  261. package/src/assets/i18n/en.ngx-lib.json +2 -1
  262. package/src/core/style/abstracts/breakpoints.scss +4 -2
  263. package/src/core/style/abstracts/functions.scss +233 -216
  264. package/src/core/style/abstracts/mixins.scss +191 -188
  265. package/src/core/style/base/base.scss +125 -124
  266. package/src/core/style/base/grids.scss +1 -1
  267. package/src/core/style/base/typography.scss +66 -62
  268. package/src/core/style/components/button.scss +57 -60
  269. package/src/core/style/components/checkbox.scss +41 -38
  270. package/src/core/style/components/datetime.scss +182 -22
  271. package/src/core/style/components/file.scss +159 -141
  272. package/src/core/style/components/general.scss +180 -278
  273. package/src/core/style/components/input.scss +21 -24
  274. package/src/core/style/components/quantity-selector.scss +15 -12
  275. package/src/core/style/components/radio-button.scss +22 -38
  276. package/src/core/style/components/select.scss +184 -182
  277. package/src/core/style/components/signature.scss +14 -12
  278. package/src/core/style/components/splitter.scss +58 -55
  279. package/src/core/style/components/textarea.scss +89 -78
  280. package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
  281. package/textarea/textarea.component.d.ts +1 -0
  282. package/textarea/textarea.component.theme.scss +3 -2
  283. package/textbox/pepperi-addons-ngx-lib-textbox.metadata.json +1 -1
  284. package/textbox/textbox.component.theme.scss +1 -1
  285. package/theming.scss +50 -144
  286. package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
  287. package/top-bar/top-bar.component.theme.scss +7 -7
  288. package/form/form.component.theme.scss +0 -2
  289. package/form/internal-button.component.theme.scss +0 -2
  290. package/form/internal-menu.component.theme.scss +0 -3
  291. package/list/list-actions.component.theme.scss +0 -3
  292. package/list/list-carousel.component.theme.scss +0 -9
  293. package/list/list-chooser.component.theme.scss +0 -3
  294. package/list/list-pager.component.theme.scss +0 -3
  295. package/list/list-sorting.component.theme.scss +0 -3
  296. package/list/list-views.component.theme.scss +0 -3
  297. package/list/list.component.theme.scss +0 -5
  298. package/list/list_old.component.theme.scss +0 -5
  299. package/menu/menu.component.theme.scss +0 -2
  300. package/search/search.component.theme.scss +0 -3
  301. package/textbox-icon/textbox-icon.component.theme.scss +0 -3
@@ -17,9 +17,11 @@ import { PepDateModule } from '@pepperi-addons/ngx-lib/date';
17
17
  import { PepSelectModule } from '@pepperi-addons/ngx-lib/select';
18
18
  import { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';
19
19
  import { PepSearchModule } from '@pepperi-addons/ngx-lib/search';
20
+ import { PepButtonModule } from '@pepperi-addons/ngx-lib/button';
20
21
  import { pepIconNumberMinus, pepIconNumberPlus, PepIconModule, PepIconRegistry } from '@pepperi-addons/ngx-lib/icon';
21
- import { Subject } from 'rxjs';
22
+ import { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';
22
23
  import { takeUntil, distinctUntilChanged, startWith, map } from 'rxjs/operators';
24
+ import { Subject } from 'rxjs';
23
25
  import { TranslateService } from '@ngx-translate/core';
24
26
 
25
27
  class PepSmartFiltersComponent {
@@ -134,7 +136,7 @@ PepSmartFiltersComponent.decorators = [
134
136
  selector: 'pep-smart-filters',
135
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>",
136
138
  changeDetection: ChangeDetectionStrategy.OnPush,
137
- 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}"]
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)}"]
138
140
  },] }
139
141
  ];
140
142
  PepSmartFiltersComponent.ctorParameters = () => [
@@ -234,12 +236,12 @@ const NumberRange = {
234
236
  short: 'Range',
235
237
  componentType: ['number'],
236
238
  };
237
- // const Contains: Operator = {
238
- // id: 'contains',
239
- // name: 'Contains',
240
- // short: 'Contains',
241
- // type: ['text'],
242
- // };
239
+ const Contains = {
240
+ id: 'contains',
241
+ name: 'CONTAINS',
242
+ short: 'Contains',
243
+ componentType: ['text'],
244
+ };
243
245
  // const BeginsWith: Operator = {
244
246
  // id: 'beginsWith',
245
247
  // name: 'Begins With',
@@ -344,7 +346,7 @@ const PepSmartFilterOperators = {
344
346
  GreaterThan: GreaterThan,
345
347
  // GreaterThanOrEquals: GreaterThanOrEquals,
346
348
  NumberRange: NumberRange,
347
- // Contains: Contains,
349
+ Contains: Contains,
348
350
  // BeginsWith: BeginsWith,
349
351
  // EndsWith: EndsWith,
350
352
  // After: After,
@@ -401,6 +403,10 @@ class BaseFilterComponent {
401
403
  this.validator = validator;
402
404
  this.renderer = renderer;
403
405
  this._fieldIdWithNoDots = '';
406
+ this.emitOnChange = false;
407
+ this.inline = false;
408
+ this.showActionButtons = true;
409
+ this.renderTitle = true;
404
410
  this.filterClear = new EventEmitter();
405
411
  this.filterChange = new EventEmitter();
406
412
  this.OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';
@@ -422,6 +428,10 @@ class BaseFilterComponent {
422
428
  get filter() {
423
429
  return this._filter;
424
430
  }
431
+ set parentForm(form) {
432
+ this._parentForm = form;
433
+ this.updateParentForm();
434
+ }
425
435
  set operator(operator) {
426
436
  var _a;
427
437
  if ((operator === null || operator === void 0 ? void 0 : operator.id) != ((_a = this._operator) === null || _a === void 0 ? void 0 : _a.id)) {
@@ -442,10 +452,7 @@ class BaseFilterComponent {
442
452
  }
443
453
  set operatorUnit(operatorUnit) {
444
454
  // Validate operator unit
445
- if (operatorUnit === undefined) {
446
- this._operatorUnit = undefined;
447
- }
448
- else {
455
+ if (operatorUnit) {
449
456
  const index = this.operatorUnits.findIndex((ou) => ou.id === operatorUnit.id);
450
457
  if (index >= 0) {
451
458
  this._operatorUnit = this.operatorUnits[index];
@@ -454,6 +461,9 @@ class BaseFilterComponent {
454
461
  this._operatorUnit = this.operatorUnits[0];
455
462
  }
456
463
  }
464
+ else {
465
+ this._operatorUnit = undefined;
466
+ }
457
467
  }
458
468
  get operatorUnit() {
459
469
  return this._operatorUnit;
@@ -482,12 +492,14 @@ class BaseFilterComponent {
482
492
  const formValue = {};
483
493
  formValue[this.firstControlKey] = [];
484
494
  formValue[this.secondControlKey] = [];
485
- // this.form.patchValue(formValue);
495
+ // this.form.patchValue(formValue);
486
496
  this.form = this.builder.group(formValue);
487
497
  // this.form[this.firstControlKey] = [];
488
498
  // this.form[this.secondControlKey] = [];
489
499
  this.setupOperators();
490
- this.createActionsComponent();
500
+ if (this.showActionButtons) {
501
+ this.createActionsComponent();
502
+ }
491
503
  }
492
504
  setupOperators() {
493
505
  var _a, _b;
@@ -531,6 +543,16 @@ class BaseFilterComponent {
531
543
  this.clearFilter(false);
532
544
  }
533
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
+ }
534
556
  getDestroyer() {
535
557
  return takeUntil(this._destroyed);
536
558
  }
@@ -594,7 +616,9 @@ class BaseFilterComponent {
594
616
  ngOnDestroy() {
595
617
  this._destroyed.next();
596
618
  this._destroyed.complete();
597
- this.actionsContainerRef.destroy();
619
+ if (this.showActionButtons) {
620
+ this.actionsContainerRef.destroy();
621
+ }
598
622
  }
599
623
  }
600
624
  BaseFilterComponent.decorators = [
@@ -612,11 +636,101 @@ BaseFilterComponent.ctorParameters = () => [
612
636
  BaseFilterComponent.propDecorators = {
613
637
  field: [{ type: Input }],
614
638
  filter: [{ type: Input }],
639
+ parentForm: [{ type: Input }],
640
+ emitOnChange: [{ type: Input }],
641
+ inline: [{ type: Input }],
642
+ showActionButtons: [{ type: Input }],
643
+ renderTitle: [{ type: Input }],
615
644
  filterClear: [{ type: Output }],
616
645
  filterChange: [{ type: Output }]
617
646
  };
618
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
+ },] }
720
+ ];
721
+
619
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
+ }
620
734
  // Override
621
735
  getDefaultOperator() {
622
736
  return PepSmartFilterOperators.Equals;
@@ -626,14 +740,23 @@ class PepBooleanFilterComponent extends BaseFilterComponent {
626
740
  const filterValue = { first: this.firstControl.value || false };
627
741
  return filterValue;
628
742
  }
743
+ onValueChanged(value) {
744
+ this.firstControl.setValue(value);
745
+ if (this.emitOnChange) {
746
+ this.applyFilter();
747
+ }
748
+ }
629
749
  }
630
750
  PepBooleanFilterComponent.decorators = [
631
751
  { type: Component, args: [{
632
752
  selector: 'pep-boolean-filter',
633
- template: "<div [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>",
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>",
634
754
  styles: [".radio-group{display:flex;flex-direction:column}.radio-group .pep-radio-button.pep-input{height:2.25rem;display:flex}"]
635
755
  },] }
636
- ];
756
+ ];
757
+ PepBooleanFilterComponent.propDecorators = {
758
+ options: [{ type: Input }]
759
+ };
637
760
 
638
761
  class PepDateFilterComponent extends BaseFilterComponent {
639
762
  constructor() {
@@ -642,6 +765,11 @@ class PepDateFilterComponent extends BaseFilterComponent {
642
765
  this.chooseTimeOptions = [];
643
766
  this.chooseTimeUnitOptions = [];
644
767
  }
768
+ ngOnInit() {
769
+ if (this.inline) {
770
+ this.setControlsWidth();
771
+ }
772
+ }
645
773
  // Override
646
774
  getDefaultOperator() {
647
775
  return PepSmartFilterOperators.InTheLast;
@@ -714,20 +842,58 @@ class PepDateFilterComponent extends BaseFilterComponent {
714
842
  super.setFieldsStateAndValidators();
715
843
  }
716
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
+ }
717
863
  onOperatorChanged(value) {
718
864
  const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
719
865
  this.operator = operator;
720
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
+ }
721
876
  }
722
877
  onTimeUnitChanged(value) {
723
878
  const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find((operatorUnit) => operatorUnit.id === value);
724
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
+ }
725
891
  }
726
892
  }
727
893
  PepDateFilterComponent.decorators = [
728
894
  { type: Component, args: [{
729
895
  selector: 'pep-date-filter',
730
- template: "<div [formGroup]=\"form\">\n <ng-container>\n <pep-select [key]=\"'timeOperator'\" [value]=\"operator.id\" [label]=\"'SMART_FILTERS.CHOOSE_TIME' | translate\"\n [emptyOption]=\"false\" [options]=\"chooseTimeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n </ng-container>\n\n <div *ngIf=\"operator === PepSmartFilterOperators.InTheLast ||\n operator === PepSmartFilterOperators.NotInTheLast ||\n operator === PepSmartFilterOperators.DueIn ||\n operator === PepSmartFilterOperators.NotDueIn\" fxLayout=\"row\" fxLayout.xs=\"column\" fxLayoutGap=\"1rem\">\n <!-- Amount -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n [renderError]=\"false\" fxFlex=\"50%\" [type]=\"'int'\" [formattedValue]=\"firstControl.value\"\n [value]=\"firstControl.value\">\n </pep-textbox>\n <!-- Time unit -->\n <pep-select [form]=\"form\" [key]=\"'timeUnit'\" [value]=\"operatorUnit?.id\"\n [label]=\"'SMART_FILTERS.TIME_UNIT' | translate\" fxFlex=\"50%\" [emptyOption]=\"false\"\n [options]=\"chooseTimeUnitOptions\" (valueChange)=\"onTimeUnitChanged($event)\">\n </pep-select>\n </div>\n <div pepRtlDirection *ngIf=\"operator === PepSmartFilterOperators.DateRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n fxLayoutGap=\"1rem\">\n <!-- Start date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.START_DATE' | translate\"\n [renderError]=\"false\" fxFlex=\"50%\" [type]=\"field.type === 'date' ? 'date' : 'datetime'\"\n [value]=\"firstControl.value\" [maxDateValue]=\"secondControl.value\">\n </pep-date>\n <!-- End date -->\n <pep-date [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.END_DATE' | translate\"\n [renderError]=\"false\" fxFlex=\"50%\" [type]=\"field.type === 'date' ? 'date' : 'datetime'\"\n [value]=\"secondControl.value\" [minDateValue]=\"firstControl.value\">\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\" [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"firstControl.value\">\n </pep-date>\n </ng-container>\n</div>",
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>",
731
897
  styles: [""]
732
898
  },] }
733
899
  ];
@@ -742,12 +908,36 @@ class PepMultiSelectFilterComponent extends BaseFilterComponent {
742
908
  super(...arguments);
743
909
  this.options = [];
744
910
  this.searchControl = new FormControl();
911
+ //inline props
912
+ this.selected = '';
913
+ this.inlineOptions = [];
745
914
  this.MAX_OPTIONS_TO_SHOW = 6.35;
746
915
  this.numberOptionsToShowSearch = 10;
747
916
  }
748
917
  ngOnInit() {
749
- var _a;
750
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;
751
941
  if (((_a = this.field.options) === null || _a === void 0 ? void 0 : _a.length) > 0) {
752
942
  this.options = this.field.options.map((opt) => {
753
943
  return { value: opt.value, count: opt.count, selected: false };
@@ -778,10 +968,6 @@ class PepMultiSelectFilterComponent extends BaseFilterComponent {
778
968
  }, 125);
779
969
  });
780
970
  }
781
- ngAfterViewInit() {
782
- // Calc for the first time.
783
- this.calcOptionsHeight(this.options.length);
784
- }
785
971
  initOptionsSelectedValues(selectedValues) {
786
972
  this.options.forEach((opt) => {
787
973
  const isValueSelected = selectedValues && selectedValues.includes(opt.value);
@@ -809,13 +995,20 @@ class PepMultiSelectFilterComponent extends BaseFilterComponent {
809
995
  }
810
996
  // Override
811
997
  getFilterValue() {
812
- const selectedValues = this.options
813
- .filter((opt) => opt.selected)
814
- .map((opt) => opt.value);
815
- const filterValue = {
816
- first: selectedValues,
817
- };
818
- return selectedValues.length > 0 ? filterValue : null;
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
+ }
819
1012
  }
820
1013
  // Override
821
1014
  initFilter() {
@@ -826,11 +1019,23 @@ class PepMultiSelectFilterComponent extends BaseFilterComponent {
826
1019
  option.selected = event.checked;
827
1020
  this.firstControl.setValue(this.options.filter((opt) => opt.selected).map((opt) => opt.value), { emitEvent: false });
828
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
+ }
829
1034
  }
830
1035
  PepMultiSelectFilterComponent.decorators = [
831
1036
  { type: Component, args: [{
832
1037
  selector: 'pep-multi-select-filter',
833
- template: "<div [formGroup]=\"form\">\n <pep-search *ngIf=\"options?.length > numberOptionsToShowSearch\" [searchControl]=\"searchControl\"\n [triggerOn]=\"'keydown'\" [shrinkInSmallScreen]=\"false\"></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>",
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'\" [shrinkInSmallScreen]=\"false\"></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>",
834
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:flex;justify-content:space-between;align-items:center;margin:0 .25rem;margin:0 var(--pep-spacing-xs,.25rem)}"]
835
1040
  },] }
836
1041
  ];
@@ -844,6 +1049,8 @@ class PepNumberFilterComponent extends BaseFilterComponent {
844
1049
  super(...arguments);
845
1050
  this.PepSmartFilterOperators = PepSmartFilterOperators;
846
1051
  this.chooseTypeOptions = [];
1052
+ this.operatorWidth = '38%';
1053
+ this.fieldsWidth = '70%';
847
1054
  }
848
1055
  ngOnInit() {
849
1056
  this.firstControl.valueChanges
@@ -856,6 +1063,7 @@ class PepNumberFilterComponent extends BaseFilterComponent {
856
1063
  .subscribe(() => {
857
1064
  this.setFieldsStateAndValidators();
858
1065
  });
1066
+ this.setControlsWidth();
859
1067
  }
860
1068
  // Override
861
1069
  getDefaultOperator() {
@@ -899,15 +1107,37 @@ class PepNumberFilterComponent extends BaseFilterComponent {
899
1107
  super.setFieldsStateAndValidators();
900
1108
  }
901
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
+ }
902
1120
  onOperatorChanged(value) {
903
1121
  const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
904
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
+ }
905
1135
  }
906
1136
  }
907
1137
  PepNumberFilterComponent.decorators = [
908
1138
  { type: Component, args: [{
909
1139
  selector: 'pep-number-filter',
910
- template: "<div [formGroup]=\"form\">\n <ng-container>\n <pep-select [key]=\"'typeOperator'\" [value]=\"operator.id\" [label]=\"'SMART_FILTERS.TYPE' | translate\"\n [emptyOption]=\"false\" [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n </ng-container>\n <div *ngIf=\"operator !== PepSmartFilterOperators.NumberRange\">\n <!-- Amount -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n [renderError]=\"false\" [type]=\"field.type\" [formattedValue]=\"firstControl.value\"\n [value]=\"firstControl.value\">\n </pep-textbox>\n </div>\n <div *ngIf=\"operator === PepSmartFilterOperators.NumberRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n fxLayoutGap=\"1rem\">\n <!-- Min number -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.MIN' | translate\"\n [renderError]=\"false\" fxFlex=\"50%\" [type]=\"field.type\" [formattedValue]=\"firstControl.value\"\n [value]=\"firstControl.value\" [maxValue]=\"secondControl.value\">\n </pep-textbox>\n <!-- Max number -->\n <pep-textbox [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.MAX' | translate\"\n [renderError]=\"false\" fxFlex=\"50%\" [type]=\"field.type\" [formattedValue]=\"secondControl.value\"\n [value]=\"secondControl.value\" [minValue]=\"firstControl.value\">\n </pep-textbox>\n </div>\n</div>",
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>",
911
1141
  styles: [""]
912
1142
  },] }
913
1143
  ];
@@ -946,16 +1176,26 @@ PepSmartFiltersModule.decorators = [
946
1176
  PepTextboxModule,
947
1177
  PepSearchModule,
948
1178
  PepIconModule,
1179
+ PepButtonModule,
1180
+ PepGroupButtonsModule
1181
+ ],
1182
+ exports: [
1183
+ PepSmartFiltersComponent,
1184
+ PepTextFilterComponent,
1185
+ PepBooleanFilterComponent,
1186
+ PepDateFilterComponent,
1187
+ PepMultiSelectFilterComponent,
1188
+ PepNumberFilterComponent
949
1189
  ],
950
- exports: [PepSmartFiltersComponent],
951
1190
  declarations: [
952
1191
  // BaseFilterComponent,
953
1192
  PepSmartFiltersComponent,
954
1193
  PepFilterActionsComponent,
1194
+ PepTextFilterComponent,
955
1195
  PepBooleanFilterComponent,
956
1196
  PepDateFilterComponent,
957
1197
  PepMultiSelectFilterComponent,
958
- PepNumberFilterComponent,
1198
+ PepNumberFilterComponent
959
1199
  ],
960
1200
  },] }
961
1201
  ];
@@ -982,6 +1222,17 @@ class PepSmartFilterBaseField {
982
1222
  return this._type;
983
1223
  }
984
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
+ }
985
1236
  // Boolean field
986
1237
  // ------------------------------
987
1238
  class PepSmartFilterBooleanField extends PepSmartFilterBaseField {
@@ -1069,6 +1320,9 @@ class PepSmartFilterPercentageField extends PepSmartFilterNumberBaseField {
1069
1320
  }
1070
1321
  }
1071
1322
 
1323
+ function createTextSmartFilterField(data) {
1324
+ return new PepSmartFilterTextField(data);
1325
+ }
1072
1326
  function createBooleanSmartFilterField(data) {
1073
1327
  return new PepSmartFilterBooleanField(data);
1074
1328
  }
@@ -1096,6 +1350,9 @@ function createPercentageSmartFilterField(data) {
1096
1350
  function createSmartFilterField(data, type) {
1097
1351
  let field;
1098
1352
  switch (type) {
1353
+ case 'text':
1354
+ field = createTextSmartFilterField(data);
1355
+ break;
1099
1356
  case 'boolean':
1100
1357
  field = createBooleanSmartFilterField(data);
1101
1358
  break;
@@ -1146,5 +1403,5 @@ function createSmartFilter(fieldId, operator, first, second, operatorUnit) {
1146
1403
  * Generated bundle index. Do not edit.
1147
1404
  */
1148
1405
 
1149
- export { BaseFilterComponent, IPepSmartFilterOperator, IPepSmartFilterOperatorUnit, PepBooleanFilterComponent, PepDateFilterComponent, PepFilterActionsComponent, PepMultiSelectFilterComponent, PepNumberFilterComponent, PepSmartFilterBaseField, PepSmartFilterBooleanField, PepSmartFilterCurrencyField, PepSmartFilterDateBaseField, PepSmartFilterDateField, PepSmartFilterDateTimeField, PepSmartFilterIntField, PepSmartFilterMultiSelectField, PepSmartFilterNumberBaseField, PepSmartFilterOperatorUnits, PepSmartFilterOperators, PepSmartFilterPercentageField, PepSmartFilterRealField, PepSmartFiltersComponent, PepSmartFiltersModule, createSmartFilter, createSmartFilterField };
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 };
1150
1407
  //# sourceMappingURL=pepperi-addons-ngx-lib-smart-filters.js.map