@pepperi-addons/ngx-lib 0.2.60 → 0.2.61-query-builder.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/README.md +39 -39
  2. package/address/address.component.theme.scss +5 -8
  3. package/address/pepperi-addons-ngx-lib-address.metadata.json +1 -1
  4. package/attachment/attachment.component.d.ts +1 -0
  5. package/attachment/attachment.component.theme.scss +1 -3
  6. package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
  7. package/bread-crumbs/bread-crumbs.component.theme.scss +9 -9
  8. package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.metadata.json +1 -1
  9. package/bundles/pepperi-addons-ngx-lib-address.umd.js +2 -2
  10. package/bundles/pepperi-addons-ngx-lib-address.umd.js.map +1 -1
  11. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +7 -2
  12. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
  13. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js +2 -2
  14. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js.map +1 -1
  15. package/bundles/pepperi-addons-ngx-lib-button.umd.js +2 -2
  16. package/bundles/pepperi-addons-ngx-lib-button.umd.js.map +1 -1
  17. package/bundles/pepperi-addons-ngx-lib-carousel.umd.js.map +1 -1
  18. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +5 -2
  19. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
  20. package/bundles/pepperi-addons-ngx-lib-color.umd.js +9 -4
  21. package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
  22. package/bundles/pepperi-addons-ngx-lib-date.umd.js +6 -4
  23. package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
  24. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +3 -3
  25. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js.map +1 -1
  26. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +2 -2
  27. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js.map +1 -1
  28. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +2 -2
  29. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js.map +1 -1
  30. package/bundles/pepperi-addons-ngx-lib-form.umd.js +27 -24
  31. package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
  32. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +2 -2
  33. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js.map +1 -1
  34. package/bundles/pepperi-addons-ngx-lib-icon.umd.js.map +1 -1
  35. package/bundles/pepperi-addons-ngx-lib-image.umd.js +7 -2
  36. package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
  37. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +7 -2
  38. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
  39. package/bundles/pepperi-addons-ngx-lib-list.umd.js +9 -9
  40. package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
  41. package/bundles/pepperi-addons-ngx-lib-menu.umd.js +2 -2
  42. package/bundles/pepperi-addons-ngx-lib-menu.umd.js.map +1 -1
  43. package/bundles/pepperi-addons-ngx-lib-page-layout.umd.js +1 -1
  44. package/bundles/pepperi-addons-ngx-lib-page-layout.umd.js.map +1 -1
  45. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +7 -2
  46. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
  47. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +1101 -0
  48. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js.map +1 -0
  49. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +7 -2
  50. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
  51. package/bundles/pepperi-addons-ngx-lib-search.umd.js +1 -1
  52. package/bundles/pepperi-addons-ngx-lib-search.umd.js.map +1 -1
  53. package/bundles/pepperi-addons-ngx-lib-select.umd.js +7 -2
  54. package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
  55. package/bundles/pepperi-addons-ngx-lib-separator.umd.js +10 -2
  56. package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
  57. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +2 -2
  58. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js.map +1 -1
  59. package/bundles/pepperi-addons-ngx-lib-signature.umd.js +7 -2
  60. package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
  61. package/bundles/pepperi-addons-ngx-lib-size-detector.umd.js +1 -1
  62. package/bundles/pepperi-addons-ngx-lib-size-detector.umd.js.map +1 -1
  63. package/bundles/pepperi-addons-ngx-lib-slider.umd.js +2 -2
  64. package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
  65. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +308 -41
  66. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
  67. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +7 -2
  68. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
  69. package/bundles/pepperi-addons-ngx-lib-textbox-icon.umd.js +1 -1
  70. package/bundles/pepperi-addons-ngx-lib-textbox-icon.umd.js.map +1 -1
  71. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +6 -4
  72. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
  73. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +2 -2
  74. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js.map +1 -1
  75. package/bundles/pepperi-addons-ngx-lib.umd.js +38 -36
  76. package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
  77. package/button/button.component.theme.scss +0 -2
  78. package/button/pepperi-addons-ngx-lib-button.metadata.json +1 -1
  79. package/checkbox/checkbox.component.theme.scss +0 -2
  80. package/checkbox/pepperi-addons-ngx-lib-checkbox.metadata.json +1 -1
  81. package/color/color-picker.component.theme.scss +169 -175
  82. package/color/color.component.d.ts +1 -0
  83. package/color/color.component.theme.scss +0 -7
  84. package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
  85. package/core/common/services/addon.service.d.ts +1 -2
  86. package/core/common/services/file.service.d.ts +4 -4
  87. package/core/customization/customization.service.d.ts +1 -0
  88. package/date/date.component.theme.scss +0 -169
  89. package/date/pepperi-addons-ngx-lib-date.metadata.json +1 -1
  90. package/dialog/dialog.component.theme.scss +5 -5
  91. package/dialog/pepperi-addons-ngx-lib-dialog.metadata.json +1 -1
  92. package/esm2015/address/address.component.js +3 -3
  93. package/esm2015/address/address.module.js +1 -1
  94. package/esm2015/address/public-api.js +1 -1
  95. package/esm2015/attachment/attachment.component.js +8 -3
  96. package/esm2015/attachment/attachment.module.js +1 -1
  97. package/esm2015/attachment/public-api.js +1 -1
  98. package/esm2015/bread-crumbs/bread-crumbs.component.js +3 -3
  99. package/esm2015/bread-crumbs/bread-crumbs.model.js +1 -1
  100. package/esm2015/bread-crumbs/bread-crumbs.module.js +1 -1
  101. package/esm2015/bread-crumbs/public-api.js +1 -1
  102. package/esm2015/button/button.component.js +3 -3
  103. package/esm2015/button/button.model.js +1 -1
  104. package/esm2015/button/button.module.js +1 -1
  105. package/esm2015/button/public-api.js +1 -1
  106. package/esm2015/carousel/carousel-item.directive.js +1 -1
  107. package/esm2015/carousel/carousel.component.js +15 -15
  108. package/esm2015/carousel/carousel.module.js +1 -1
  109. package/esm2015/carousel/public-api.js +1 -1
  110. package/esm2015/checkbox/checkbox.component.js +6 -3
  111. package/esm2015/checkbox/checkbox.module.js +1 -1
  112. package/esm2015/checkbox/public-api.js +1 -1
  113. package/esm2015/color/color-picker.component.js +29 -29
  114. package/esm2015/color/color.component.js +8 -3
  115. package/esm2015/color/color.model.js +1 -1
  116. package/esm2015/color/color.module.js +1 -1
  117. package/esm2015/color/public-api.js +1 -1
  118. package/esm2015/core/clipboard/clipboard.directive.js +1 -1
  119. package/esm2015/core/clipboard/clipboard.service.js +1 -1
  120. package/esm2015/core/clipboard/index.js +1 -1
  121. package/esm2015/core/clipboard/public-api.js +1 -1
  122. package/esm2015/core/common/directives/auto-width.directive.js +1 -1
  123. package/esm2015/core/common/directives/button-blur.directive.js +1 -1
  124. package/esm2015/core/common/directives/button-loader.directive.js +1 -1
  125. package/esm2015/core/common/directives/data-qa.directive.js +1 -1
  126. package/esm2015/core/common/directives/index.js +1 -1
  127. package/esm2015/core/common/directives/menu-blur.directive.js +1 -1
  128. package/esm2015/core/common/directives/prevent-multi-click.directive.js +1 -1
  129. package/esm2015/core/common/directives/public-api.js +1 -1
  130. package/esm2015/core/common/index.js +1 -1
  131. package/esm2015/core/common/model/index.js +1 -1
  132. package/esm2015/core/common/model/papi.model.js +1 -1
  133. package/esm2015/core/common/model/public-api.js +1 -1
  134. package/esm2015/core/common/model/utilities.model.js +1 -1
  135. package/esm2015/core/common/model/wapi.model.js +1 -1
  136. package/esm2015/core/common/pipes/common-pipes.js +1 -1
  137. package/esm2015/core/common/pipes/index.js +1 -1
  138. package/esm2015/core/common/pipes/public-api.js +1 -1
  139. package/esm2015/core/common/public-api.js +1 -1
  140. package/esm2015/core/common/services/addon.service.js +4 -19
  141. package/esm2015/core/common/services/color.service.js +1 -1
  142. package/esm2015/core/common/services/cookie.service.js +1 -1
  143. package/esm2015/core/common/services/data-convertor.service.js +1 -1
  144. package/esm2015/core/common/services/file.service.js +9 -9
  145. package/esm2015/core/common/services/index.js +1 -1
  146. package/esm2015/core/common/services/jwt-helper.service.js +1 -1
  147. package/esm2015/core/common/services/public-api.js +1 -1
  148. package/esm2015/core/common/services/session.service.js +1 -1
  149. package/esm2015/core/common/services/utilities.service.js +25 -4
  150. package/esm2015/core/common/services/validator.service.js +1 -1
  151. package/esm2015/core/common/services/window-scrolling.service.js +5 -5
  152. package/esm2015/core/customization/customization.model.js +1 -1
  153. package/esm2015/core/customization/customization.service.js +4 -2
  154. package/esm2015/core/customization/index.js +1 -1
  155. package/esm2015/core/customization/public-api.js +1 -1
  156. package/esm2015/core/http/index.js +1 -1
  157. package/esm2015/core/http/interceptors/error.interceptor.js +1 -1
  158. package/esm2015/core/http/interceptors/index.js +1 -1
  159. package/esm2015/core/http/interceptors/loader.interceptor.js +1 -1
  160. package/esm2015/core/http/interceptors/profiler.interceptor.js +1 -1
  161. package/esm2015/core/http/public-api.js +1 -1
  162. package/esm2015/core/http/services/http.service.js +1 -1
  163. package/esm2015/core/http/services/loader.service.js +1 -1
  164. package/esm2015/core/index.js +1 -1
  165. package/esm2015/core/layout/index.js +1 -1
  166. package/esm2015/core/layout/layout.service.js +1 -1
  167. package/esm2015/core/layout/public-api.js +1 -1
  168. package/esm2015/core/layout/rtl.directive.js +1 -1
  169. package/esm2015/core/portal/attach.directive.js +1 -1
  170. package/esm2015/core/portal/index.js +1 -1
  171. package/esm2015/core/portal/portal.service.js +1 -1
  172. package/esm2015/core/portal/public-api.js +1 -1
  173. package/esm2015/core/portal/target.directive.js +1 -1
  174. package/esm2015/core/public-api.js +1 -1
  175. package/esm2015/core/scroll-to/index.js +1 -1
  176. package/esm2015/core/scroll-to/public-api.js +1 -1
  177. package/esm2015/core/scroll-to/scroll-to.service.js +1 -1
  178. package/esm2015/date/date.component.js +7 -5
  179. package/esm2015/date/date.module.js +1 -1
  180. package/esm2015/date/public-api.js +1 -1
  181. package/esm2015/dialog/default-dialog.component.js +2 -2
  182. package/esm2015/dialog/dialog.component.js +3 -3
  183. package/esm2015/dialog/dialog.model.js +1 -1
  184. package/esm2015/dialog/dialog.module.js +1 -1
  185. package/esm2015/dialog/dialog.service.js +1 -1
  186. package/esm2015/dialog/public-api.js +1 -1
  187. package/esm2015/field-title/field-title.component.js +3 -3
  188. package/esm2015/field-title/field-title.module.js +1 -1
  189. package/esm2015/field-title/public-api.js +1 -1
  190. package/esm2015/files-uploader/files-uploader.component.js +3 -3
  191. package/esm2015/files-uploader/files-uploader.module.js +1 -1
  192. package/esm2015/files-uploader/public-api.js +1 -1
  193. package/esm2015/form/field-generator.component.js +2 -2
  194. package/esm2015/form/form.component.js +2 -2
  195. package/esm2015/form/form.module.js +1 -1
  196. package/esm2015/form/indicators.component.js +3 -3
  197. package/esm2015/form/internal-button.component.js +21 -18
  198. package/esm2015/form/internal-carusel.component.js +2 -2
  199. package/esm2015/form/internal-carusel.service.js +1 -1
  200. package/esm2015/form/internal-list.component.js +2 -2
  201. package/esm2015/form/internal-menu.component.js +2 -2
  202. package/esm2015/form/internal-page.component.js +2 -2
  203. package/esm2015/form/internal-page.service.js +1 -1
  204. package/esm2015/form/public-api.js +1 -1
  205. package/esm2015/group-buttons/group-buttons.component.js +3 -3
  206. package/esm2015/group-buttons/group-buttons.module.js +1 -1
  207. package/esm2015/group-buttons/public-api.js +1 -1
  208. package/esm2015/icon/icon-generated-all.model.js +1 -1
  209. package/esm2015/icon/icon-generated.model.js +1 -1
  210. package/esm2015/icon/icon-registry.service.js +2 -2
  211. package/esm2015/icon/icon.component.js +1 -1
  212. package/esm2015/icon/icon.module.js +1 -1
  213. package/esm2015/icon/public-api.js +1 -1
  214. package/esm2015/image/image.component.js +8 -3
  215. package/esm2015/image/image.module.js +1 -1
  216. package/esm2015/image/public-api.js +1 -1
  217. package/esm2015/images-filmstrip/images-filmstrip.component.js +8 -3
  218. package/esm2015/images-filmstrip/images-filmstrip.module.js +1 -1
  219. package/esm2015/images-filmstrip/public-api.js +1 -1
  220. package/esm2015/list/list-actions.component.js +2 -2
  221. package/esm2015/list/list-carousel.component.js +2 -2
  222. package/esm2015/list/list-chooser.component.js +2 -2
  223. package/esm2015/list/list-pager.component.js +2 -2
  224. package/esm2015/list/list-sorting.component.js +2 -2
  225. package/esm2015/list/list-total.component.js +3 -3
  226. package/esm2015/list/list-views.component.js +2 -2
  227. package/esm2015/list/list.component.js +2 -2
  228. package/esm2015/list/list.model.js +1 -1
  229. package/esm2015/list/list.module.js +1 -1
  230. package/esm2015/list/public-api.js +1 -1
  231. package/esm2015/menu/menu-item.component.js +2 -2
  232. package/esm2015/menu/menu.component.js +2 -2
  233. package/esm2015/menu/menu.model.js +1 -1
  234. package/esm2015/menu/menu.module.js +1 -1
  235. package/esm2015/menu/public-api.js +1 -1
  236. package/esm2015/ngx-lib.module.js +1 -1
  237. package/esm2015/page-layout/page-layout.component.js +2 -2
  238. package/esm2015/page-layout/page-layout.module.js +1 -1
  239. package/esm2015/page-layout/public-api.js +1 -1
  240. package/esm2015/public-api.js +1 -1
  241. package/esm2015/quantity-selector/public-api.js +1 -1
  242. package/esm2015/quantity-selector/quantity-selector-validation.directive.js +1 -1
  243. package/esm2015/quantity-selector/quantity-selector.component.js +8 -3
  244. package/esm2015/quantity-selector/quantity-selector.module.js +1 -1
  245. package/esm2015/quantity-selector/quantity-selector.pipes.js +1 -1
  246. package/esm2015/query-builder/common/model/filter.js +2 -0
  247. package/esm2015/query-builder/common/model/legacy.js +2 -0
  248. package/esm2015/query-builder/common/model/operator-unit.js +42 -0
  249. package/esm2015/query-builder/common/model/operator.js +207 -0
  250. package/esm2015/query-builder/common/model/structure.js +2 -0
  251. package/esm2015/query-builder/common/model/type-map.js +27 -0
  252. package/esm2015/query-builder/common/model/type.js +6 -0
  253. package/esm2015/query-builder/common/services/output-query.service.js +111 -0
  254. package/esm2015/query-builder/common/services/type-convertor.service.js +40 -0
  255. package/esm2015/query-builder/pepperi-addons-ngx-lib-query-builder.js +9 -0
  256. package/esm2015/query-builder/public-api.js +8 -0
  257. package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +115 -0
  258. package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +64 -0
  259. package/esm2015/query-builder/query-builder.component.js +104 -0
  260. package/esm2015/query-builder/query-builder.module.js +35 -0
  261. package/esm2015/query-builder/query-builder.service.js +280 -0
  262. package/esm2015/rich-html-textarea/public-api.js +1 -1
  263. package/esm2015/rich-html-textarea/rich-html-textarea.component.js +8 -3
  264. package/esm2015/rich-html-textarea/rich-html-textarea.module.js +1 -1
  265. package/esm2015/search/public-api.js +1 -1
  266. package/esm2015/search/search.component.js +2 -2
  267. package/esm2015/search/search.model.js +1 -1
  268. package/esm2015/search/search.module.js +1 -1
  269. package/esm2015/select/public-api.js +1 -1
  270. package/esm2015/select/select.component.js +8 -3
  271. package/esm2015/select/select.module.js +1 -1
  272. package/esm2015/separator/public-api.js +1 -1
  273. package/esm2015/separator/separator.component.js +11 -3
  274. package/esm2015/separator/separator.module.js +1 -1
  275. package/esm2015/side-bar/public-api.js +1 -1
  276. package/esm2015/side-bar/side-bar.component.js +3 -3
  277. package/esm2015/side-bar/side-bar.model.js +1 -1
  278. package/esm2015/side-bar/side-bar.module.js +1 -1
  279. package/esm2015/signature/public-api.js +1 -1
  280. package/esm2015/signature/signature.component.js +8 -3
  281. package/esm2015/signature/signature.module.js +1 -1
  282. package/esm2015/size-detector/public-api.js +1 -1
  283. package/esm2015/size-detector/size-detector.component.js +2 -2
  284. package/esm2015/size-detector/size-detector.module.js +1 -1
  285. package/esm2015/slider/public-api.js +1 -1
  286. package/esm2015/slider/slider.component.js +3 -3
  287. package/esm2015/slider/slider.module.js +1 -1
  288. package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +23 -3
  289. package/esm2015/smart-filters/common/filter-actions.component.js +2 -2
  290. package/esm2015/smart-filters/common/model/base-filter-component.js +35 -8
  291. package/esm2015/smart-filters/common/model/creator.js +8 -2
  292. package/esm2015/smart-filters/common/model/field.js +12 -1
  293. package/esm2015/smart-filters/common/model/filter.js +1 -1
  294. package/esm2015/smart-filters/common/model/operator.js +8 -8
  295. package/esm2015/smart-filters/common/model/type.js +1 -1
  296. package/esm2015/smart-filters/date-filter/date-filter.component.js +45 -2
  297. package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +53 -14
  298. package/esm2015/smart-filters/number-filter/number-filter.component.js +27 -2
  299. package/esm2015/smart-filters/public-api.js +2 -1
  300. package/esm2015/smart-filters/smart-filters.component.js +3 -3
  301. package/esm2015/smart-filters/smart-filters.module.js +16 -3
  302. package/esm2015/smart-filters/text-filter/text-filter.component.js +79 -0
  303. package/esm2015/textarea/public-api.js +1 -1
  304. package/esm2015/textarea/textarea.component.js +8 -3
  305. package/esm2015/textarea/textarea.module.js +1 -1
  306. package/esm2015/textbox/public-api.js +1 -1
  307. package/esm2015/textbox/textbox-validation.directive.js +1 -1
  308. package/esm2015/textbox/textbox.component.js +7 -5
  309. package/esm2015/textbox/textbox.module.js +1 -1
  310. package/esm2015/textbox-icon/public-api.js +1 -1
  311. package/esm2015/textbox-icon/textbox-icon.component.js +2 -2
  312. package/esm2015/textbox-icon/textbox-icon.module.js +1 -1
  313. package/esm2015/top-bar/public-api.js +1 -1
  314. package/esm2015/top-bar/top-bar.component.js +3 -3
  315. package/esm2015/top-bar/top-bar.model.js +1 -1
  316. package/esm2015/top-bar/top-bar.module.js +1 -1
  317. package/fesm2015/pepperi-addons-ngx-lib-address.js +2 -2
  318. package/fesm2015/pepperi-addons-ngx-lib-address.js.map +1 -1
  319. package/fesm2015/pepperi-addons-ngx-lib-attachment.js +7 -2
  320. package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
  321. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js +2 -2
  322. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js.map +1 -1
  323. package/fesm2015/pepperi-addons-ngx-lib-button.js +2 -2
  324. package/fesm2015/pepperi-addons-ngx-lib-button.js.map +1 -1
  325. package/fesm2015/pepperi-addons-ngx-lib-carousel.js +14 -14
  326. package/fesm2015/pepperi-addons-ngx-lib-carousel.js.map +1 -1
  327. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +5 -2
  328. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
  329. package/fesm2015/pepperi-addons-ngx-lib-color.js +35 -30
  330. package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
  331. package/fesm2015/pepperi-addons-ngx-lib-date.js +6 -4
  332. package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
  333. package/fesm2015/pepperi-addons-ngx-lib-dialog.js +3 -3
  334. package/fesm2015/pepperi-addons-ngx-lib-dialog.js.map +1 -1
  335. package/fesm2015/pepperi-addons-ngx-lib-field-title.js +2 -2
  336. package/fesm2015/pepperi-addons-ngx-lib-field-title.js.map +1 -1
  337. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +2 -2
  338. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js.map +1 -1
  339. package/fesm2015/pepperi-addons-ngx-lib-form.js +27 -24
  340. package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
  341. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +2 -2
  342. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js.map +1 -1
  343. package/fesm2015/pepperi-addons-ngx-lib-icon.js +1 -1
  344. package/fesm2015/pepperi-addons-ngx-lib-icon.js.map +1 -1
  345. package/fesm2015/pepperi-addons-ngx-lib-image.js +7 -2
  346. package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
  347. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +7 -2
  348. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
  349. package/fesm2015/pepperi-addons-ngx-lib-list.js +9 -9
  350. package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
  351. package/fesm2015/pepperi-addons-ngx-lib-menu.js +2 -2
  352. package/fesm2015/pepperi-addons-ngx-lib-menu.js.map +1 -1
  353. package/fesm2015/pepperi-addons-ngx-lib-page-layout.js +1 -1
  354. package/fesm2015/pepperi-addons-ngx-lib-page-layout.js.map +1 -1
  355. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +7 -2
  356. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
  357. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +1011 -0
  358. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js.map +1 -0
  359. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +7 -2
  360. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
  361. package/fesm2015/pepperi-addons-ngx-lib-search.js +1 -1
  362. package/fesm2015/pepperi-addons-ngx-lib-search.js.map +1 -1
  363. package/fesm2015/pepperi-addons-ngx-lib-select.js +7 -2
  364. package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
  365. package/fesm2015/pepperi-addons-ngx-lib-separator.js +10 -2
  366. package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
  367. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +2 -2
  368. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js.map +1 -1
  369. package/fesm2015/pepperi-addons-ngx-lib-signature.js +7 -2
  370. package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
  371. package/fesm2015/pepperi-addons-ngx-lib-size-detector.js +1 -1
  372. package/fesm2015/pepperi-addons-ngx-lib-size-detector.js.map +1 -1
  373. package/fesm2015/pepperi-addons-ngx-lib-slider.js +2 -2
  374. package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
  375. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +295 -38
  376. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
  377. package/fesm2015/pepperi-addons-ngx-lib-textarea.js +7 -2
  378. package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
  379. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.js +1 -1
  380. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.js.map +1 -1
  381. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +6 -4
  382. package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
  383. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +2 -2
  384. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js.map +1 -1
  385. package/fesm2015/pepperi-addons-ngx-lib.js +42 -34
  386. package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
  387. package/field-title/field-title.component.theme.scss +0 -2
  388. package/field-title/pepperi-addons-ngx-lib-field-title.metadata.json +1 -1
  389. package/files-uploader/files-uploader.component.theme.scss +0 -2
  390. package/files-uploader/pepperi-addons-ngx-lib-files-uploader.metadata.json +1 -1
  391. package/form/indicators.component.theme.scss +7 -7
  392. package/form/internal-button.component.d.ts +0 -1
  393. package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
  394. package/group-buttons/group-buttons.component.theme.scss +15 -15
  395. package/group-buttons/pepperi-addons-ngx-lib-group-buttons.metadata.json +1 -1
  396. package/image/image.component.d.ts +1 -0
  397. package/image/image.component.theme.scss +33 -35
  398. package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
  399. package/images-filmstrip/images-filmstrip.component.d.ts +1 -0
  400. package/images-filmstrip/images-filmstrip.component.theme.scss +33 -32
  401. package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
  402. package/list/list-total.component.theme.scss +10 -10
  403. package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
  404. package/menu/pepperi-addons-ngx-lib-menu.metadata.json +1 -1
  405. package/package.json +5 -5
  406. package/page-layout/page-layout.component.theme.scss +7 -7
  407. package/page-layout/pepperi-addons-ngx-lib-page-layout.metadata.json +1 -1
  408. package/pepperi-addons-ngx-lib.metadata.json +1 -1
  409. package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
  410. package/quantity-selector/quantity-selector.component.d.ts +1 -0
  411. package/quantity-selector/quantity-selector.component.theme.scss +77 -77
  412. package/query-builder/common/model/filter.d.ts +6 -0
  413. package/query-builder/common/model/legacy.d.ts +26 -0
  414. package/query-builder/common/model/operator-unit.d.ts +13 -0
  415. package/query-builder/common/model/operator.d.ts +21 -0
  416. package/query-builder/common/model/structure.d.ts +4 -0
  417. package/query-builder/common/model/type-map.d.ts +12 -0
  418. package/query-builder/common/model/type.d.ts +4 -0
  419. package/query-builder/common/services/output-query.service.d.ts +44 -0
  420. package/query-builder/common/services/type-convertor.service.d.ts +10 -0
  421. package/query-builder/package.json +14 -0
  422. package/query-builder/pepperi-addons-ngx-lib-query-builder.d.ts +8 -0
  423. package/query-builder/pepperi-addons-ngx-lib-query-builder.metadata.json +1 -0
  424. package/query-builder/public-api.d.ts +4 -0
  425. package/query-builder/query-builder-item/query-builder-item.component.d.ts +37 -0
  426. package/query-builder/query-builder-section/query-builder-section.component.d.ts +27 -0
  427. package/query-builder/query-builder-section/query-builder-section.component.theme.scss +7 -0
  428. package/query-builder/query-builder.component.d.ts +35 -0
  429. package/query-builder/query-builder.module.d.ts +2 -0
  430. package/query-builder/query-builder.service.d.ts +94 -0
  431. package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
  432. package/rich-html-textarea/rich-html-textarea.component.d.ts +1 -0
  433. package/rich-html-textarea/rich-html-textarea.component.theme.scss +241 -237
  434. package/search/pepperi-addons-ngx-lib-search.metadata.json +1 -1
  435. package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
  436. package/select/select.component.d.ts +1 -0
  437. package/select/select.component.theme.scss +0 -2
  438. package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
  439. package/separator/separator.component.theme.scss +2 -2
  440. package/side-bar/pepperi-addons-ngx-lib-side-bar.metadata.json +1 -1
  441. package/side-bar/side-bar.component.theme.scss +26 -25
  442. package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
  443. package/signature/signature.component.d.ts +1 -0
  444. package/signature/signature.component.theme.scss +8 -28
  445. package/size-detector/pepperi-addons-ngx-lib-size-detector.metadata.json +1 -1
  446. package/slider/pepperi-addons-ngx-lib-slider.metadata.json +1 -1
  447. package/slider/slider.component.theme.scss +66 -65
  448. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +6 -1
  449. package/smart-filters/common/model/base-filter-component.d.ts +7 -0
  450. package/smart-filters/common/model/field.d.ts +4 -0
  451. package/smart-filters/common/model/operator.d.ts +1 -0
  452. package/smart-filters/common/model/type.d.ts +2 -2
  453. package/smart-filters/date-filter/date-filter.component.d.ts +8 -1
  454. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +6 -0
  455. package/smart-filters/number-filter/number-filter.component.d.ts +5 -0
  456. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
  457. package/smart-filters/public-api.d.ts +1 -0
  458. package/smart-filters/smart-filters.component.theme.scss +9 -10
  459. package/smart-filters/text-filter/text-filter.component.d.ts +17 -0
  460. package/src/assets/i18n/de.ngx-lib.json +77 -77
  461. package/src/assets/i18n/en.ngx-lib.json +139 -138
  462. package/src/assets/i18n/es.ngx-lib.json +77 -77
  463. package/src/assets/i18n/fr.ngx-lib.json +78 -78
  464. package/src/assets/i18n/he.ngx-lib.json +78 -78
  465. package/src/assets/i18n/hu.ngx-lib.json +78 -78
  466. package/src/assets/i18n/it.ngx-lib.json +78 -78
  467. package/src/assets/i18n/ja.ngx-lib.json +78 -78
  468. package/src/assets/i18n/nl.ngx-lib.json +78 -78
  469. package/src/assets/i18n/pl.ngx-lib.json +78 -78
  470. package/src/assets/i18n/pt.ngx-lib.json +78 -78
  471. package/src/assets/i18n/ru.ngx-lib.json +78 -78
  472. package/src/assets/i18n/zh.ngx-lib.json +76 -76
  473. package/src/assets/images/no-image.svg +41 -41
  474. package/src/core/style/abstracts/breakpoints.scss +37 -35
  475. package/src/core/style/abstracts/functions.scss +439 -422
  476. package/src/core/style/abstracts/mixins.scss +800 -797
  477. package/src/core/style/abstracts/variables.scss +545 -545
  478. package/src/core/style/base/base.scss +874 -873
  479. package/src/core/style/base/grids.scss +4 -4
  480. package/src/core/style/base/helpers.scss +70 -70
  481. package/src/core/style/base/typography.scss +259 -255
  482. package/src/core/style/components/button.scss +346 -349
  483. package/src/core/style/components/checkbox.scss +476 -473
  484. package/src/core/style/components/datetime.scss +182 -22
  485. package/src/core/style/components/file.scss +223 -219
  486. package/src/core/style/components/general.scss +1002 -1086
  487. package/src/core/style/components/input.scss +98 -94
  488. package/src/core/style/components/quantity-selector.scss +17 -14
  489. package/src/core/style/components/radio-button.scss +171 -168
  490. package/src/core/style/components/select.scss +187 -185
  491. package/src/core/style/components/signature.scss +14 -12
  492. package/src/core/style/components/splitter.scss +67 -64
  493. package/src/core/style/components/textarea.scss +198 -195
  494. package/src/core/style/themes/black-theme.scss +7 -7
  495. package/src/core/style/themes/default-theme.scss +144 -144
  496. package/src/core/style/themes/light-theme.scss +7 -7
  497. package/src/core/style/themes/nature-theme.scss +7 -7
  498. package/src/core/style/vendors/normalize.scss +497 -497
  499. package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
  500. package/textarea/textarea.component.d.ts +1 -0
  501. package/textarea/textarea.component.theme.scss +2 -2
  502. package/textbox/pepperi-addons-ngx-lib-textbox.metadata.json +1 -1
  503. package/textbox/textbox.component.theme.scss +3 -3
  504. package/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.metadata.json +1 -1
  505. package/theming.scss +125 -220
  506. package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
  507. package/top-bar/top-bar.component.theme.scss +9 -9
  508. package/form/form.component.theme.scss +0 -2
  509. package/form/internal-button.component.theme.scss +0 -2
  510. package/form/internal-menu.component.theme.scss +0 -3
  511. package/list/list-actions.component.theme.scss +0 -3
  512. package/list/list-carousel.component.theme.scss +0 -9
  513. package/list/list-chooser.component.theme.scss +0 -3
  514. package/list/list-pager.component.theme.scss +0 -3
  515. package/list/list-sorting.component.theme.scss +0 -3
  516. package/list/list-views.component.theme.scss +0 -3
  517. package/list/list.component.theme.scss +0 -5
  518. package/list/list_old.component.theme.scss +0 -5
  519. package/menu/menu.component.theme.scss +0 -2
  520. package/search/search.component.theme.scss +0 -3
  521. package/textbox-icon/textbox-icon.component.theme.scss +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-quantity-selector.js","sources":["../../../projects/ngx-lib/quantity-selector/quantity-selector.component.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector-validation.directive.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector.pipes.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector.module.ts","../../../projects/ngx-lib/quantity-selector/public-api.ts","../../../projects/ngx-lib/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n OnChanges,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Renderer2,\n AfterViewInit,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n trigger,\n state,\n style,\n animate,\n transition,\n} from '@angular/animations';\nimport {\n PepLayoutType,\n PepStyleType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n IPepFieldClickEvent,\n PepQuantitySelectorFieldType,\n PepQuantitySelectorField,\n PepUtilitiesService,\n} from '@pepperi-addons/ngx-lib';\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'pep-quantity-selector',\n templateUrl: './quantity-selector.component.html',\n styleUrls: ['./quantity-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('showHide', [\n state(\n 'show',\n style({\n opacity: 1,\n transform: 'scale(1)',\n })\n ),\n state(\n 'hide',\n style({\n opacity: 0,\n transform: 'scale(0)',\n })\n ),\n transition('show => hide', animate('250ms ease-out')),\n transition('hide => show', animate('250ms ease-in')),\n ]),\n ],\n})\nexport class PepQuantitySelectorComponent\n implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n public static ENTER_CHILDREN = '[EnterChildren]';\n public static ENTER_PACKAGE = '[EnterPackage]';\n public static PLUS = '[+]';\n public static MINUS = '[-]';\n\n @Input() key = '';\n\n private _value = null;\n @Input()\n set value(value: string) {\n if (!value) {\n value = '';\n }\n\n this._value = value;\n\n if (this._calculateFormattedValue) {\n this.setFormattedValue(value);\n }\n }\n get value(): string {\n return this._value;\n }\n\n private _formattedValue = null;\n @Input()\n set formattedValue(value: string) {\n if (!value) {\n value = '';\n }\n\n if (this._calculateFormattedValue) {\n this._calculateFormattedValue = false;\n }\n\n this.setFormattedValue(value);\n }\n get formattedValue(): string {\n return this._formattedValue;\n }\n\n @Input() label = '';\n @Input() type: PepQuantitySelectorFieldType = 'qs';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() readonly = false;\n\n private _textColor = '';\n @Input()\n set textColor(value: string) {\n this._textColor = value;\n this.isCaution = value === '#FF0000';\n }\n get textColor(): string {\n return this._textColor;\n }\n\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n @Input() rowSpan = 1;\n @Input() allowDecimal = false;\n @Input() additionalValue = '';\n\n private _notificationInfo: any;\n @Input()\n set notificationInfo(value: any) {\n this._notificationInfo = value;\n\n const messages = value && value > 0 ? JSON.parse(value).Messages : '';\n if (messages && messages.length > 0) {\n // Replace the msg keys.\n for (const msg of messages) {\n if (msg.Key === 'Inventory_Limit_Msg') {\n msg.Key = 'MESSAGES.ERROR_INVENTORY_LIMIT';\n } else if (msg.Key === 'Case_Quantity_Limit_Msg') {\n msg.Key = 'MESSAGES.ERROR_CASE_QUANTITY_LIMIT';\n } else if (msg.Key === 'Min_Quantity_Limit_Msg') {\n msg.Key = 'MESSAGES.ERROR_MIN_QUANTITY_LIMIT';\n } else if (msg.Key === 'Max_Quantity_Limit_Msg') {\n msg.Key = 'MESSAGES.ERROR_MAX_QUANTITY_LIMIT';\n }\n }\n\n this.messages = messages;\n\n const fieldControl = this.form.controls[this.key];\n fieldControl.setErrors({\n serverError: 'Error',\n });\n\n this.sameElementInTheWantedRow = null;\n setTimeout(() => {\n if (this.QSInput && this.QSInput.nativeElement) {\n this.QSInput.nativeElement.focus();\n }\n }, 150);\n }\n }\n get notificationInfo(): any {\n return this._notificationInfo;\n }\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n controlType = 'qs';\n\n @Input() form: FormGroup = null;\n @Input() showTitle = true;\n @Input() layoutType: PepLayoutType = 'form';\n @Input() isActive = false;\n\n // Get default style from theme.\n @Input()\n styleType: PepStyleType = document.documentElement.style.getPropertyValue(\n PepCustomizationService.STYLE_QS_KEY\n ) as PepStyleType; //'strong';\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n @ViewChild('QSCont') QSCont: ElementRef;\n @ViewChild('QSInput') QSInput: ElementRef;\n\n private _calculateFormattedValue = true;\n get calculateFormattedValue(): boolean {\n return this._calculateFormattedValue;\n }\n\n private readonly _destroyed: Subject<void>;\n private qsWidthSubject: BehaviorSubject<number>;\n lastQsContClientWidth = 0;\n showQsBtn = true;\n\n standAlone = false;\n isInFocus = false;\n isMatrixFocus = false;\n\n isCaution = false;\n messages: Array<any> = null;\n\n sameElementInTheWantedRow = null;\n\n isEmptyKey = false;\n\n constructor(\n private cd: ChangeDetectorRef,\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef,\n private translate: TranslateService,\n private utilitiesService: PepUtilitiesService\n ) {\n this._destroyed = new Subject();\n this.qsWidthSubject = new BehaviorSubject(0);\n }\n\n setForm() {\n const pepField = new PepQuantitySelectorField({\n key: this.key,\n value: this.value,\n mandatory: this.mandatory,\n readonly: this.readonly,\n disabled: this.disabled,\n });\n this.form = this.customizationService.getDefaultFromGroup(pepField);\n }\n\n private setFormattedValue(value: string) {\n if (this._calculateFormattedValue) {\n this._formattedValue = this.utilitiesService.formatNumber(value);\n } else {\n this._formattedValue = value;\n }\n\n this.updateFormFieldValue();\n }\n\n private updateFormFieldValue() {\n this.customizationService.updateFormFieldValue(\n this.form,\n this.key,\n this.formattedValue\n );\n }\n\n get displayValue(): string {\n const res = this.isInFocus\n ? parseFloat(this.value).toString()\n : this.formattedValue;\n return res;\n }\n\n protected getDestroyer() {\n return takeUntil(this._destroyed);\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n if (this.key === '') {\n this.isEmptyKey = true;\n }\n\n this.standAlone = true;\n this.setForm();\n\n this.renderer.addClass(\n this.element.nativeElement,\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n );\n }\n\n this.qsWidthSubject\n .asObservable()\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe((qsWidth: number) => {\n this.setupQsButtons(qsWidth);\n });\n\n this.updateFormFieldValue();\n }\n\n ngAfterViewInit() {\n //\n }\n\n ngAfterViewChecked(): void {\n this.setQsView();\n }\n\n ngOnChanges(changes: any): void {\n // Bug fix for addons when the key is '' in the ngOnInit for some reson\n if (this.isEmptyKey && this.key !== '') {\n this.setForm();\n }\n\n setTimeout(() => {\n this.focusToTheSameElementInTheWantedRow();\n }, 150);\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n get getAdditionalValue(): string {\n return this.additionalValue.length > 0 ? 'show' : 'hide';\n }\n\n getParentByClass(el, parentSelector /* optional */): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n\n let p = el.parentNode;\n\n while (\n p &&\n !p?.classList?.contains(parentSelector) &&\n parentSelector !== document\n ) {\n const o = p;\n p = o?.parentNode || null;\n }\n\n return p?.className.indexOf(parentSelector) > -1 ? p : null;\n }\n\n getSameElementInTheWantedRowByClassName(event: any, isNext = true): any {\n const eventTarget = event.target || event.srcElement;\n let sameElementInTheWantedRowByClassName;\n\n let parentSelector;\n if (this.layoutType === 'table') {\n parentSelector = this.getParentByClass(eventTarget, 'table-row');\n } else if (this.layoutType === 'card') {\n parentSelector = this.getParentByClass(eventTarget, 'card-view');\n if (!parentSelector) {\n parentSelector = this.getParentByClass(\n eventTarget,\n 'line-view'\n );\n }\n }\n\n if (\n parentSelector.nextElementSibling === null &&\n parentSelector.previousElementSibling === null\n ) {\n sameElementInTheWantedRowByClassName = null;\n } else {\n if (isNext) {\n if (parentSelector.nextElementSibling === null) {\n sameElementInTheWantedRowByClassName = parentSelector.parentElement.querySelectorAll(\n '[name=' + this.key + ']'\n )[0];\n } else {\n sameElementInTheWantedRowByClassName = parentSelector.nextElementSibling.querySelectorAll(\n '[name=' + this.key + ']'\n )[0];\n }\n } else {\n if (parentSelector.previousElementSibling === null) {\n const elementsList = parentSelector.parentElement.querySelectorAll(\n '[name=' + this.key + ']'\n );\n sameElementInTheWantedRowByClassName =\n elementsList[elementsList.length - 1];\n } else {\n sameElementInTheWantedRowByClassName = parentSelector.previousElementSibling.querySelectorAll(\n '[name=' + this.key + ']'\n )[0];\n }\n }\n }\n\n return sameElementInTheWantedRowByClassName;\n }\n\n setSameElementInTheWantedRow(event: any, isNext = true): void {\n // Navigate to the QS in the next row.\n if (this.layoutType === 'card' || this.layoutType === 'table') {\n this.sameElementInTheWantedRow = this.getSameElementInTheWantedRowByClassName(\n event,\n isNext\n );\n }\n\n this.QSInput.nativeElement.blur();\n }\n\n focusToTheSameElementInTheWantedRow(): void {\n if (this.sameElementInTheWantedRow) {\n const elem = this.sameElementInTheWantedRow;\n // If this is regular item (qs and not button) .\n if (elem instanceof HTMLInputElement && elem.type === 'text') {\n elem.click();\n elem.select();\n } else {\n const parentElem = elem.parentNode;\n parentElem.click();\n elem.focus();\n }\n this.sameElementInTheWantedRow = null;\n }\n }\n\n cleanError(): void {\n const fieldControl = this.form.controls[this.key];\n\n // Clean the error message\n if (this.messages && this.messages.length > 0) {\n this.messages = this.notificationInfo = null;\n fieldControl.setErrors(null);\n }\n }\n\n onMatrixMouseEnter(event: any): void {\n this.isMatrixFocus = true;\n }\n\n onMatrixMouseleave(event: any): void {\n this.isMatrixFocus = false;\n }\n\n onMatrixClick(event: any): void {\n this.isInFocus = true;\n\n if (this.QSInput && this.QSInput.nativeElement) {\n this.QSInput.nativeElement.focus();\n }\n }\n\n onMatrixBlur(event: any): void {\n if (\n !event.relatedTarget ||\n event.relatedTarget.className.indexOf('qs') < 0\n ) {\n this.isMatrixFocus = false;\n }\n\n this.onBlur(event);\n }\n\n onFocus(event: any): void {\n this.isInFocus = true;\n }\n\n isDifferentValue(value: string): boolean {\n let res = false;\n\n const currentValue = this.utilitiesService.coerceNumberProperty(\n this.value\n );\n const newValue = this.utilitiesService.coerceNumberProperty(value);\n\n res = currentValue !== newValue;\n\n return res;\n }\n\n onBlur(event: any): void {\n this.isInFocus = false;\n this.cleanError();\n const value = event.target ? event.target.value : event;\n\n if (value !== this.value && this.isDifferentValue(value)) {\n this.value = value;\n\n // If the user is setting the formatted value then set the value till the user format it and return it back.\n if (!this._calculateFormattedValue) {\n this._formattedValue = value;\n }\n\n this.valueChange.emit(this.value);\n } else {\n this.focusToTheSameElementInTheWantedRow();\n }\n }\n\n onKeydown(event): any {\n const keyboardEvent = event as KeyboardEvent;\n\n if (keyboardEvent.key === 'Enter') {\n this.setSameElementInTheWantedRow(\n keyboardEvent,\n !keyboardEvent.shiftKey\n );\n return true;\n }\n }\n\n increment(event): void {\n if (this.standAlone) {\n this.value = this.utilitiesService.incrementNumber(this.value);\n }\n\n this.elementClick.emit({\n key: this.key,\n value: PepQuantitySelectorComponent.PLUS,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n event.stopPropagation();\n }\n\n decrement(event): void {\n if (this.standAlone) {\n this.value = this.utilitiesService.decrementNumber(this.value);\n }\n\n this.elementClick.emit({\n key: this.key,\n value: PepQuantitySelectorComponent.MINUS,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n event.stopPropagation();\n }\n\n enterChildren(event): void {\n this.elementClick.emit({\n key: this.key,\n value: PepQuantitySelectorComponent.ENTER_CHILDREN,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n }\n\n enterPackage(event): void {\n this.elementClick.emit({\n key: this.key,\n value: PepQuantitySelectorComponent.ENTER_PACKAGE,\n controlType: this.controlType,\n eventWhich: event.which,\n otherData: this.notificationInfo,\n });\n }\n\n setupQsButtons(qsWidth: number) {\n this.showQsBtn = qsWidth > 120;\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n }\n\n setQsView(): void {\n if (\n this.QSCont &&\n this.QSCont.nativeElement &&\n this.QSCont.nativeElement.clientWidth > 0\n ) {\n setTimeout(() => {\n this.qsWidthSubject.next(this.QSCont.nativeElement.clientWidth);\n }, 0);\n }\n }\n}\n","import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { PepValidatorService } from '@pepperi-addons/ngx-lib';\n\n@Directive({\n selector: '[pepQsValidation]',\n})\nexport class PepQuantitySelectorValidationDirective implements OnInit {\n @Input() allowDecimal: boolean;\n\n previousValue = '';\n\n constructor(\n private hostElement: ElementRef,\n private validatorService: PepValidatorService\n ) {}\n\n ngOnInit() {\n //\n }\n\n @HostListener('change', ['$event'])\n onChange(e) {\n this.validateValue(this.hostElement.nativeElement.value);\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(e: KeyboardEvent) {\n const originalValue: string = e.target['value'];\n\n // save value before keydown event\n this.previousValue = originalValue;\n\n const isNumber = this.validatorService.isNumber(e, this.allowDecimal);\n if (isNumber) return;\n else e.preventDefault();\n }\n\n validateValue(value: string): void {\n const newValue = this.validatorService.validateNumber(\n value,\n this.allowDecimal\n );\n this.hostElement.nativeElement['value'] = newValue ? newValue : 0;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'pepQuantitySelectorNumber' })\nexport class PepQuantitySelectorNumberPipe implements PipeTransform {\n transform(value: string, allowDecimal: boolean): string {\n const tmpValue = parseFloat(value);\n\n if (tmpValue === 0) {\n return '0';\n } else if (allowDecimal) {\n return tmpValue.toString();\n } else {\n return parseInt(value).toString();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconNumberMinus,\n pepIconNumberPlus,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\n\nimport { PepQuantitySelectorComponent } from './quantity-selector.component';\nimport { PepQuantitySelectorValidationDirective } from './quantity-selector-validation.directive';\nimport { PepQuantitySelectorNumberPipe } from './quantity-selector.pipes';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules\n MatCommonModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatBadgeModule,\n MatIconModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepFieldTitleModule,\n ],\n exports: [PepQuantitySelectorComponent],\n declarations: [\n PepQuantitySelectorComponent,\n PepQuantitySelectorNumberPipe,\n PepQuantitySelectorValidationDirective,\n ],\n})\nexport class PepQuantitySelectorModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconNumberMinus,\n pepIconNumberPlus,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/quantity-selector\n */\nexport * from './quantity-selector.module';\nexport * from './quantity-selector.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepQuantitySelectorValidationDirective as ɵb} from './quantity-selector-validation.directive';\nexport {PepQuantitySelectorNumberPipe as ɵa} from './quantity-selector.pipes';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-quantity-selector.js","sources":["../../../projects/ngx-lib/quantity-selector/quantity-selector.component.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector-validation.directive.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector.pipes.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector.module.ts","../../../projects/ngx-lib/quantity-selector/public-api.ts","../../../projects/ngx-lib/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n OnDestroy,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n Renderer2,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n animate,\r\n transition,\r\n} from '@angular/animations';\r\nimport {\r\n PepLayoutType,\r\n PepStyleType,\r\n PepCustomizationService,\r\n PepHorizontalAlignment,\r\n DEFAULT_HORIZONTAL_ALIGNMENT,\r\n IPepFieldClickEvent,\r\n PepQuantitySelectorFieldType,\r\n PepQuantitySelectorField,\r\n PepUtilitiesService,\r\n} from '@pepperi-addons/ngx-lib';\r\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'pep-quantity-selector',\r\n templateUrl: './quantity-selector.component.html',\r\n styleUrls: ['./quantity-selector.component.scss', './quantity-selector.component.theme.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('showHide', [\r\n state(\r\n 'show',\r\n style({\r\n opacity: 1,\r\n transform: 'scale(1)',\r\n })\r\n ),\r\n state(\r\n 'hide',\r\n style({\r\n opacity: 0,\r\n transform: 'scale(0)',\r\n })\r\n ),\r\n transition('show => hide', animate('250ms ease-out')),\r\n transition('hide => show', animate('250ms ease-in')),\r\n ]),\r\n ],\r\n})\r\nexport class PepQuantitySelectorComponent\r\n implements OnChanges, OnInit, AfterViewInit, OnDestroy {\r\n public static ENTER_CHILDREN = '[EnterChildren]';\r\n public static ENTER_PACKAGE = '[EnterPackage]';\r\n public static PLUS = '[+]';\r\n public static MINUS = '[-]';\r\n\r\n @Input() key = '';\r\n\r\n private _value = null;\r\n @Input()\r\n set value(value: string) {\r\n if (!value) {\r\n value = '';\r\n }\r\n\r\n this._value = value;\r\n\r\n if (this._calculateFormattedValue) {\r\n this.setFormattedValue(value);\r\n }\r\n }\r\n get value(): string {\r\n return this._value;\r\n }\r\n\r\n private _formattedValue = null;\r\n @Input()\r\n set formattedValue(value: string) {\r\n if (!value) {\r\n value = '';\r\n }\r\n\r\n if (this._calculateFormattedValue) {\r\n this._calculateFormattedValue = false;\r\n }\r\n\r\n this.setFormattedValue(value);\r\n }\r\n get formattedValue(): string {\r\n return this._formattedValue;\r\n }\r\n\r\n @Input() label = '';\r\n @Input() type: PepQuantitySelectorFieldType = 'qs';\r\n @Input() mandatory = false;\r\n @Input() disabled = false;\r\n @Input() readonly = false;\r\n\r\n private _textColor = '';\r\n @Input()\r\n set textColor(value: string) {\r\n this._textColor = value;\r\n this.isCaution = value === '#FF0000';\r\n }\r\n get textColor(): string {\r\n return this._textColor;\r\n }\r\n\r\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\r\n @Input() rowSpan = 1;\r\n @Input() allowDecimal = false;\r\n @Input() additionalValue = '';\r\n\r\n private _notificationInfo: any;\r\n @Input()\r\n set notificationInfo(value: any) {\r\n this._notificationInfo = value;\r\n\r\n const messages = value && value > 0 ? JSON.parse(value).Messages : '';\r\n if (messages && messages.length > 0) {\r\n // Replace the msg keys.\r\n for (const msg of messages) {\r\n if (msg.Key === 'Inventory_Limit_Msg') {\r\n msg.Key = 'MESSAGES.ERROR_INVENTORY_LIMIT';\r\n } else if (msg.Key === 'Case_Quantity_Limit_Msg') {\r\n msg.Key = 'MESSAGES.ERROR_CASE_QUANTITY_LIMIT';\r\n } else if (msg.Key === 'Min_Quantity_Limit_Msg') {\r\n msg.Key = 'MESSAGES.ERROR_MIN_QUANTITY_LIMIT';\r\n } else if (msg.Key === 'Max_Quantity_Limit_Msg') {\r\n msg.Key = 'MESSAGES.ERROR_MAX_QUANTITY_LIMIT';\r\n }\r\n }\r\n\r\n this.messages = messages;\r\n\r\n const fieldControl = this.form.controls[this.key];\r\n fieldControl.setErrors({\r\n serverError: 'Error',\r\n });\r\n\r\n this.sameElementInTheWantedRow = null;\r\n setTimeout(() => {\r\n if (this.QSInput && this.QSInput.nativeElement) {\r\n this.QSInput.nativeElement.focus();\r\n }\r\n }, 150);\r\n }\r\n }\r\n get notificationInfo(): any {\r\n return this._notificationInfo;\r\n }\r\n\r\n private _visible = true;\r\n @Input()\r\n set visible(visible: boolean) {\r\n this._visible = visible;\r\n if (visible) {\r\n this.renderer.removeClass(\r\n this.element.nativeElement,\r\n 'hidden-element'\r\n );\r\n } else {\r\n this.renderer.addClass(\r\n this.element.nativeElement,\r\n 'hidden-element'\r\n );\r\n }\r\n }\r\n get visible(): boolean {\r\n return this._visible;\r\n }\r\n\r\n controlType = 'qs';\r\n\r\n @Input() form: FormGroup = null;\r\n @Input() showTitle = true;\r\n @Input() renderTitle = true;\r\n @Input() layoutType: PepLayoutType = 'form';\r\n @Input() isActive = false;\r\n\r\n // Get default style from theme.\r\n @Input()\r\n styleType: PepStyleType = document.documentElement.style.getPropertyValue(\r\n PepCustomizationService.STYLE_QS_KEY\r\n ) as PepStyleType; //'strong';\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\r\n\r\n @ViewChild('QSCont') QSCont: ElementRef;\r\n @ViewChild('QSInput') QSInput: ElementRef;\r\n\r\n private _calculateFormattedValue = true;\r\n get calculateFormattedValue(): boolean {\r\n return this._calculateFormattedValue;\r\n }\r\n\r\n private readonly _destroyed: Subject<void>;\r\n private qsWidthSubject: BehaviorSubject<number>;\r\n lastQsContClientWidth = 0;\r\n showQsBtn = true;\r\n\r\n standAlone = false;\r\n isInFocus = false;\r\n isMatrixFocus = false;\r\n\r\n isCaution = false;\r\n messages: Array<any> = null;\r\n\r\n sameElementInTheWantedRow = null;\r\n\r\n isEmptyKey = false;\r\n\r\n constructor(\r\n private cd: ChangeDetectorRef,\r\n private customizationService: PepCustomizationService,\r\n private renderer: Renderer2,\r\n private element: ElementRef,\r\n private translate: TranslateService,\r\n private utilitiesService: PepUtilitiesService\r\n ) {\r\n this._destroyed = new Subject();\r\n this.qsWidthSubject = new BehaviorSubject(0);\r\n }\r\n\r\n setForm() {\r\n const pepField = new PepQuantitySelectorField({\r\n key: this.key,\r\n value: this.value,\r\n mandatory: this.mandatory,\r\n readonly: this.readonly,\r\n disabled: this.disabled,\r\n });\r\n this.form = this.customizationService.getDefaultFromGroup(pepField);\r\n }\r\n\r\n private setFormattedValue(value: string) {\r\n if (this._calculateFormattedValue) {\r\n this._formattedValue = this.utilitiesService.formatNumber(value);\r\n } else {\r\n this._formattedValue = value;\r\n }\r\n\r\n this.updateFormFieldValue();\r\n }\r\n\r\n private updateFormFieldValue() {\r\n this.customizationService.updateFormFieldValue(\r\n this.form,\r\n this.key,\r\n this.formattedValue\r\n );\r\n }\r\n\r\n get displayValue(): string {\r\n const res = this.isInFocus\r\n ? parseFloat(this.value).toString()\r\n : this.formattedValue;\r\n return res;\r\n }\r\n\r\n protected getDestroyer() {\r\n return takeUntil(this._destroyed);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.form === null) {\r\n if (this.key === '') {\r\n this.isEmptyKey = true;\r\n }\r\n\r\n this.standAlone = true;\r\n this.setForm();\r\n\r\n this.renderer.addClass(\r\n this.element.nativeElement,\r\n PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\r\n );\r\n\r\n if (!this.renderTitle) {\r\n this.renderer.addClass(\r\n this.element.nativeElement,\r\n PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME\r\n );\r\n }\r\n }\r\n\r\n this.qsWidthSubject\r\n .asObservable()\r\n .pipe(this.getDestroyer(), distinctUntilChanged())\r\n .subscribe((qsWidth: number) => {\r\n this.setupQsButtons(qsWidth);\r\n });\r\n\r\n this.updateFormFieldValue();\r\n }\r\n\r\n ngAfterViewInit() {\r\n //\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.setQsView();\r\n }\r\n\r\n ngOnChanges(changes: any): void {\r\n // Bug fix for addons when the key is '' in the ngOnInit for some reson\r\n if (this.isEmptyKey && this.key !== '') {\r\n this.setForm();\r\n }\r\n\r\n setTimeout(() => {\r\n this.focusToTheSameElementInTheWantedRow();\r\n }, 150);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n }\r\n\r\n get getAdditionalValue(): string {\r\n return this.additionalValue.length > 0 ? 'show' : 'hide';\r\n }\r\n\r\n getParentByClass(el, parentSelector /* optional */): any {\r\n // If no parentSelector defined will bubble up all the way to *document*\r\n if (parentSelector === undefined) {\r\n parentSelector = document;\r\n }\r\n\r\n let p = el.parentNode;\r\n\r\n while (\r\n p &&\r\n !p?.classList?.contains(parentSelector) &&\r\n parentSelector !== document\r\n ) {\r\n const o = p;\r\n p = o?.parentNode || null;\r\n }\r\n\r\n return p?.className.indexOf(parentSelector) > -1 ? p : null;\r\n }\r\n\r\n getSameElementInTheWantedRowByClassName(event: any, isNext = true): any {\r\n const eventTarget = event.target || event.srcElement;\r\n let sameElementInTheWantedRowByClassName;\r\n\r\n let parentSelector;\r\n if (this.layoutType === 'table') {\r\n parentSelector = this.getParentByClass(eventTarget, 'table-row');\r\n } else if (this.layoutType === 'card') {\r\n parentSelector = this.getParentByClass(eventTarget, 'card-view');\r\n if (!parentSelector) {\r\n parentSelector = this.getParentByClass(\r\n eventTarget,\r\n 'line-view'\r\n );\r\n }\r\n }\r\n\r\n if (\r\n parentSelector.nextElementSibling === null &&\r\n parentSelector.previousElementSibling === null\r\n ) {\r\n sameElementInTheWantedRowByClassName = null;\r\n } else {\r\n if (isNext) {\r\n if (parentSelector.nextElementSibling === null) {\r\n sameElementInTheWantedRowByClassName = parentSelector.parentElement.querySelectorAll(\r\n '[name=' + this.key + ']'\r\n )[0];\r\n } else {\r\n sameElementInTheWantedRowByClassName = parentSelector.nextElementSibling.querySelectorAll(\r\n '[name=' + this.key + ']'\r\n )[0];\r\n }\r\n } else {\r\n if (parentSelector.previousElementSibling === null) {\r\n const elementsList = parentSelector.parentElement.querySelectorAll(\r\n '[name=' + this.key + ']'\r\n );\r\n sameElementInTheWantedRowByClassName =\r\n elementsList[elementsList.length - 1];\r\n } else {\r\n sameElementInTheWantedRowByClassName = parentSelector.previousElementSibling.querySelectorAll(\r\n '[name=' + this.key + ']'\r\n )[0];\r\n }\r\n }\r\n }\r\n\r\n return sameElementInTheWantedRowByClassName;\r\n }\r\n\r\n setSameElementInTheWantedRow(event: any, isNext = true): void {\r\n // Navigate to the QS in the next row.\r\n if (this.layoutType === 'card' || this.layoutType === 'table') {\r\n this.sameElementInTheWantedRow = this.getSameElementInTheWantedRowByClassName(\r\n event,\r\n isNext\r\n );\r\n }\r\n\r\n this.QSInput.nativeElement.blur();\r\n }\r\n\r\n focusToTheSameElementInTheWantedRow(): void {\r\n if (this.sameElementInTheWantedRow) {\r\n const elem = this.sameElementInTheWantedRow;\r\n // If this is regular item (qs and not button) .\r\n if (elem instanceof HTMLInputElement && elem.type === 'text') {\r\n elem.click();\r\n elem.select();\r\n } else {\r\n const parentElem = elem.parentNode;\r\n parentElem.click();\r\n elem.focus();\r\n }\r\n this.sameElementInTheWantedRow = null;\r\n }\r\n }\r\n\r\n cleanError(): void {\r\n const fieldControl = this.form.controls[this.key];\r\n\r\n // Clean the error message\r\n if (this.messages && this.messages.length > 0) {\r\n this.messages = this.notificationInfo = null;\r\n fieldControl.setErrors(null);\r\n }\r\n }\r\n\r\n onMatrixMouseEnter(event: any): void {\r\n this.isMatrixFocus = true;\r\n }\r\n\r\n onMatrixMouseleave(event: any): void {\r\n this.isMatrixFocus = false;\r\n }\r\n\r\n onMatrixClick(event: any): void {\r\n this.isInFocus = true;\r\n\r\n if (this.QSInput && this.QSInput.nativeElement) {\r\n this.QSInput.nativeElement.focus();\r\n }\r\n }\r\n\r\n onMatrixBlur(event: any): void {\r\n if (\r\n !event.relatedTarget ||\r\n event.relatedTarget.className.indexOf('qs') < 0\r\n ) {\r\n this.isMatrixFocus = false;\r\n }\r\n\r\n this.onBlur(event);\r\n }\r\n\r\n onFocus(event: any): void {\r\n this.isInFocus = true;\r\n }\r\n\r\n isDifferentValue(value: string): boolean {\r\n let res = false;\r\n\r\n const currentValue = this.utilitiesService.coerceNumberProperty(\r\n this.value\r\n );\r\n const newValue = this.utilitiesService.coerceNumberProperty(value);\r\n\r\n res = currentValue !== newValue;\r\n\r\n return res;\r\n }\r\n\r\n onBlur(event: any): void {\r\n this.isInFocus = false;\r\n this.cleanError();\r\n const value = event.target ? event.target.value : event;\r\n\r\n if (value !== this.value && this.isDifferentValue(value)) {\r\n this.value = value;\r\n\r\n // If the user is setting the formatted value then set the value till the user format it and return it back.\r\n if (!this._calculateFormattedValue) {\r\n this._formattedValue = value;\r\n }\r\n\r\n this.valueChange.emit(this.value);\r\n } else {\r\n this.focusToTheSameElementInTheWantedRow();\r\n }\r\n }\r\n\r\n onKeydown(event): any {\r\n const keyboardEvent = event as KeyboardEvent;\r\n\r\n if (keyboardEvent.key === 'Enter') {\r\n this.setSameElementInTheWantedRow(\r\n keyboardEvent,\r\n !keyboardEvent.shiftKey\r\n );\r\n return true;\r\n }\r\n }\r\n\r\n increment(event): void {\r\n if (this.standAlone) {\r\n this.value = this.utilitiesService.incrementNumber(this.value);\r\n }\r\n\r\n this.elementClick.emit({\r\n key: this.key,\r\n value: PepQuantitySelectorComponent.PLUS,\r\n controlType: this.controlType,\r\n eventWhich: event.which,\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n decrement(event): void {\r\n if (this.standAlone) {\r\n this.value = this.utilitiesService.decrementNumber(this.value);\r\n }\r\n\r\n this.elementClick.emit({\r\n key: this.key,\r\n value: PepQuantitySelectorComponent.MINUS,\r\n controlType: this.controlType,\r\n eventWhich: event.which,\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n enterChildren(event): void {\r\n this.elementClick.emit({\r\n key: this.key,\r\n value: PepQuantitySelectorComponent.ENTER_CHILDREN,\r\n controlType: this.controlType,\r\n eventWhich: event.which,\r\n });\r\n }\r\n\r\n enterPackage(event): void {\r\n this.elementClick.emit({\r\n key: this.key,\r\n value: PepQuantitySelectorComponent.ENTER_PACKAGE,\r\n controlType: this.controlType,\r\n eventWhich: event.which,\r\n otherData: this.notificationInfo,\r\n });\r\n }\r\n\r\n setupQsButtons(qsWidth: number) {\r\n this.showQsBtn = qsWidth > 120;\r\n\r\n if (!this.cd['destroyed']) {\r\n this.cd.detectChanges();\r\n }\r\n }\r\n\r\n setQsView(): void {\r\n if (\r\n this.QSCont &&\r\n this.QSCont.nativeElement &&\r\n this.QSCont.nativeElement.clientWidth > 0\r\n ) {\r\n setTimeout(() => {\r\n this.qsWidthSubject.next(this.QSCont.nativeElement.clientWidth);\r\n }, 0);\r\n }\r\n }\r\n}\r\n","import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { PepValidatorService } from '@pepperi-addons/ngx-lib';\r\n\r\n@Directive({\r\n selector: '[pepQsValidation]',\r\n})\r\nexport class PepQuantitySelectorValidationDirective implements OnInit {\r\n @Input() allowDecimal: boolean;\r\n\r\n previousValue = '';\r\n\r\n constructor(\r\n private hostElement: ElementRef,\r\n private validatorService: PepValidatorService\r\n ) {}\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n @HostListener('change', ['$event'])\r\n onChange(e) {\r\n this.validateValue(this.hostElement.nativeElement.value);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(e: KeyboardEvent) {\r\n const originalValue: string = e.target['value'];\r\n\r\n // save value before keydown event\r\n this.previousValue = originalValue;\r\n\r\n const isNumber = this.validatorService.isNumber(e, this.allowDecimal);\r\n if (isNumber) return;\r\n else e.preventDefault();\r\n }\r\n\r\n validateValue(value: string): void {\r\n const newValue = this.validatorService.validateNumber(\r\n value,\r\n this.allowDecimal\r\n );\r\n this.hostElement.nativeElement['value'] = newValue ? newValue : 0;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'pepQuantitySelectorNumber' })\r\nexport class PepQuantitySelectorNumberPipe implements PipeTransform {\r\n transform(value: string, allowDecimal: boolean): string {\r\n const tmpValue = parseFloat(value);\r\n\r\n if (tmpValue === 0) {\r\n return '0';\r\n } else if (allowDecimal) {\r\n return tmpValue.toString();\r\n } else {\r\n return parseInt(value).toString();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\r\nimport {\r\n PepIconModule,\r\n PepIconRegistry,\r\n pepIconNumberMinus,\r\n pepIconNumberPlus,\r\n} from '@pepperi-addons/ngx-lib/icon';\r\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\r\n\r\nimport { PepQuantitySelectorComponent } from './quantity-selector.component';\r\nimport { PepQuantitySelectorValidationDirective } from './quantity-selector-validation.directive';\r\nimport { PepQuantitySelectorNumberPipe } from './quantity-selector.pipes';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n // Material modules\r\n MatCommonModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatBadgeModule,\r\n MatIconModule,\r\n // ngx-lib modules\r\n PepNgxLibModule,\r\n PepIconModule,\r\n PepFieldTitleModule,\r\n ],\r\n exports: [PepQuantitySelectorComponent],\r\n declarations: [\r\n PepQuantitySelectorComponent,\r\n PepQuantitySelectorNumberPipe,\r\n PepQuantitySelectorValidationDirective,\r\n ],\r\n})\r\nexport class PepQuantitySelectorModule {\r\n constructor(private pepIconRegistry: PepIconRegistry) {\r\n this.pepIconRegistry.registerIcons([\r\n pepIconNumberMinus,\r\n pepIconNumberPlus,\r\n ]);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-lib/quantity-selector\r\n */\r\nexport * from './quantity-selector.module';\r\nexport * from './quantity-selector.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepQuantitySelectorValidationDirective as ɵb} from './quantity-selector-validation.directive';\nexport {PepQuantitySelectorNumberPipe as ɵa} from './quantity-selector.pipes';"],"names":[],"mappings":"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"}