@pepperi-addons/ngx-lib 0.2.59-query-builder.13 → 0.2.61-query-builder.2

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 (232) 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.theme.scss +0 -2
  4. package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
  5. package/bread-crumbs/bread-crumbs.component.theme.scss +7 -7
  6. package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.metadata.json +1 -1
  7. package/bundles/pepperi-addons-ngx-lib-address.umd.js +1 -1
  8. package/bundles/pepperi-addons-ngx-lib-address.umd.js.map +1 -1
  9. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +1 -1
  10. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
  11. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js +1 -1
  12. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js.map +1 -1
  13. package/bundles/pepperi-addons-ngx-lib-button.umd.js +1 -1
  14. package/bundles/pepperi-addons-ngx-lib-button.umd.js.map +1 -1
  15. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +1 -1
  16. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
  17. package/bundles/pepperi-addons-ngx-lib-color.umd.js +2 -2
  18. package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
  19. package/bundles/pepperi-addons-ngx-lib-date.umd.js +1 -1
  20. package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
  21. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +1 -1
  22. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js.map +1 -1
  23. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +1 -1
  24. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js.map +1 -1
  25. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +1 -1
  26. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js.map +1 -1
  27. package/bundles/pepperi-addons-ngx-lib-form.umd.js +1 -1
  28. package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
  29. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +1 -1
  30. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js.map +1 -1
  31. package/bundles/pepperi-addons-ngx-lib-image.umd.js +1 -1
  32. package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
  33. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +1 -1
  34. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
  35. package/bundles/pepperi-addons-ngx-lib-list.umd.js +1 -1
  36. package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
  37. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +1 -1
  38. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
  39. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +30 -33
  40. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js.map +1 -1
  41. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +1 -1
  42. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
  43. package/bundles/pepperi-addons-ngx-lib-select.umd.js +1 -1
  44. package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
  45. package/bundles/pepperi-addons-ngx-lib-separator.umd.js +1 -1
  46. package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
  47. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +1 -1
  48. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js.map +1 -1
  49. package/bundles/pepperi-addons-ngx-lib-signature.umd.js +1 -1
  50. package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
  51. package/bundles/pepperi-addons-ngx-lib-slider.umd.js +1 -1
  52. package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
  53. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1 -1
  54. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
  55. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +1 -1
  56. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
  57. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +1 -1
  58. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
  59. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +1 -1
  60. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js.map +1 -1
  61. package/button/button.component.theme.scss +0 -2
  62. package/button/pepperi-addons-ngx-lib-button.metadata.json +1 -1
  63. package/checkbox/checkbox.component.theme.scss +0 -2
  64. package/checkbox/pepperi-addons-ngx-lib-checkbox.metadata.json +1 -1
  65. package/color/color-picker.component.theme.scss +122 -128
  66. package/color/color.component.theme.scss +0 -7
  67. package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
  68. package/date/date.component.theme.scss +0 -169
  69. package/date/pepperi-addons-ngx-lib-date.metadata.json +1 -1
  70. package/dialog/dialog.component.theme.scss +4 -4
  71. package/dialog/pepperi-addons-ngx-lib-dialog.metadata.json +1 -1
  72. package/esm2015/address/address.component.js +2 -2
  73. package/esm2015/attachment/attachment.component.js +2 -2
  74. package/esm2015/bread-crumbs/bread-crumbs.component.js +2 -2
  75. package/esm2015/button/button.component.js +2 -2
  76. package/esm2015/checkbox/checkbox.component.js +2 -2
  77. package/esm2015/color/color-picker.component.js +2 -2
  78. package/esm2015/color/color.component.js +2 -2
  79. package/esm2015/date/date.component.js +2 -2
  80. package/esm2015/dialog/dialog.component.js +2 -2
  81. package/esm2015/field-title/field-title.component.js +2 -2
  82. package/esm2015/files-uploader/files-uploader.component.js +2 -2
  83. package/esm2015/form/indicators.component.js +2 -2
  84. package/esm2015/group-buttons/group-buttons.component.js +2 -2
  85. package/esm2015/image/image.component.js +2 -2
  86. package/esm2015/images-filmstrip/images-filmstrip.component.js +2 -2
  87. package/esm2015/list/list-total.component.js +2 -2
  88. package/esm2015/quantity-selector/quantity-selector.component.js +2 -2
  89. package/esm2015/query-builder/common/model/legacy.js +1 -1
  90. package/esm2015/query-builder/common/services/output-query.service.js +5 -5
  91. package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +21 -14
  92. package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +2 -2
  93. package/esm2015/query-builder/query-builder.service.js +2 -16
  94. package/esm2015/rich-html-textarea/rich-html-textarea.component.js +2 -2
  95. package/esm2015/select/select.component.js +2 -2
  96. package/esm2015/separator/separator.component.js +2 -2
  97. package/esm2015/side-bar/side-bar.component.js +2 -2
  98. package/esm2015/signature/signature.component.js +2 -2
  99. package/esm2015/slider/slider.component.js +2 -2
  100. package/esm2015/smart-filters/smart-filters.component.js +2 -2
  101. package/esm2015/textarea/textarea.component.js +2 -2
  102. package/esm2015/textbox/textbox.component.js +2 -2
  103. package/esm2015/top-bar/top-bar.component.js +2 -2
  104. package/fesm2015/pepperi-addons-ngx-lib-address.js +1 -1
  105. package/fesm2015/pepperi-addons-ngx-lib-address.js.map +1 -1
  106. package/fesm2015/pepperi-addons-ngx-lib-attachment.js +1 -1
  107. package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
  108. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js +1 -1
  109. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js.map +1 -1
  110. package/fesm2015/pepperi-addons-ngx-lib-button.js +1 -1
  111. package/fesm2015/pepperi-addons-ngx-lib-button.js.map +1 -1
  112. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +1 -1
  113. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
  114. package/fesm2015/pepperi-addons-ngx-lib-color.js +2 -2
  115. package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
  116. package/fesm2015/pepperi-addons-ngx-lib-date.js +1 -1
  117. package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
  118. package/fesm2015/pepperi-addons-ngx-lib-dialog.js +1 -1
  119. package/fesm2015/pepperi-addons-ngx-lib-dialog.js.map +1 -1
  120. package/fesm2015/pepperi-addons-ngx-lib-field-title.js +1 -1
  121. package/fesm2015/pepperi-addons-ngx-lib-field-title.js.map +1 -1
  122. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +1 -1
  123. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js.map +1 -1
  124. package/fesm2015/pepperi-addons-ngx-lib-form.js +1 -1
  125. package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
  126. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +1 -1
  127. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js.map +1 -1
  128. package/fesm2015/pepperi-addons-ngx-lib-image.js +1 -1
  129. package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
  130. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +1 -1
  131. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
  132. package/fesm2015/pepperi-addons-ngx-lib-list.js +1 -1
  133. package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
  134. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +1 -1
  135. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
  136. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +26 -33
  137. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js.map +1 -1
  138. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +1 -1
  139. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
  140. package/fesm2015/pepperi-addons-ngx-lib-select.js +1 -1
  141. package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
  142. package/fesm2015/pepperi-addons-ngx-lib-separator.js +1 -1
  143. package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
  144. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +1 -1
  145. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js.map +1 -1
  146. package/fesm2015/pepperi-addons-ngx-lib-signature.js +1 -1
  147. package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
  148. package/fesm2015/pepperi-addons-ngx-lib-slider.js +1 -1
  149. package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
  150. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1 -1
  151. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
  152. package/fesm2015/pepperi-addons-ngx-lib-textarea.js +1 -1
  153. package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
  154. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +1 -1
  155. package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
  156. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +1 -1
  157. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js.map +1 -1
  158. package/field-title/field-title.component.theme.scss +0 -2
  159. package/field-title/pepperi-addons-ngx-lib-field-title.metadata.json +1 -1
  160. package/files-uploader/files-uploader.component.theme.scss +0 -2
  161. package/files-uploader/pepperi-addons-ngx-lib-files-uploader.metadata.json +1 -1
  162. package/form/indicators.component.theme.scss +5 -5
  163. package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
  164. package/group-buttons/group-buttons.component.theme.scss +11 -11
  165. package/group-buttons/pepperi-addons-ngx-lib-group-buttons.metadata.json +1 -1
  166. package/image/image.component.theme.scss +25 -27
  167. package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
  168. package/images-filmstrip/images-filmstrip.component.theme.scss +27 -26
  169. package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
  170. package/list/list-total.component.theme.scss +6 -6
  171. package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
  172. package/package.json +5 -5
  173. package/page-layout/page-layout.component.theme.scss +6 -6
  174. package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
  175. package/quantity-selector/quantity-selector.component.theme.scss +40 -40
  176. package/query-builder/common/model/legacy.d.ts +1 -1
  177. package/query-builder/pepperi-addons-ngx-lib-query-builder.metadata.json +1 -1
  178. package/query-builder/query-builder-item/query-builder-item.component.d.ts +5 -2
  179. package/query-builder/query-builder-section/query-builder-section.component.theme.scss +6 -5
  180. package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
  181. package/rich-html-textarea/rich-html-textarea.component.theme.scss +182 -178
  182. package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
  183. package/select/select.component.theme.scss +0 -2
  184. package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
  185. package/separator/separator.component.theme.scss +1 -1
  186. package/side-bar/pepperi-addons-ngx-lib-side-bar.metadata.json +1 -1
  187. package/side-bar/side-bar.component.theme.scss +17 -16
  188. package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
  189. package/signature/signature.component.theme.scss +1 -21
  190. package/slider/pepperi-addons-ngx-lib-slider.metadata.json +1 -1
  191. package/slider/slider.component.theme.scss +54 -53
  192. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
  193. package/smart-filters/smart-filters.component.theme.scss +6 -7
  194. package/src/core/style/abstracts/breakpoints.scss +4 -2
  195. package/src/core/style/abstracts/functions.scss +233 -216
  196. package/src/core/style/abstracts/mixins.scss +191 -188
  197. package/src/core/style/base/base.scss +125 -124
  198. package/src/core/style/base/grids.scss +1 -1
  199. package/src/core/style/base/typography.scss +66 -62
  200. package/src/core/style/components/button.scss +57 -60
  201. package/src/core/style/components/checkbox.scss +41 -38
  202. package/src/core/style/components/datetime.scss +161 -1
  203. package/src/core/style/components/file.scss +22 -18
  204. package/src/core/style/components/general.scss +185 -271
  205. package/src/core/style/components/input.scss +21 -17
  206. package/src/core/style/components/quantity-selector.scss +3 -0
  207. package/src/core/style/components/radio-button.scss +27 -24
  208. package/src/core/style/components/select.scss +29 -27
  209. package/src/core/style/components/signature.scss +4 -2
  210. package/src/core/style/components/splitter.scss +10 -7
  211. package/src/core/style/components/textarea.scss +8 -5
  212. package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
  213. package/textarea/textarea.component.theme.scss +1 -1
  214. package/textbox/pepperi-addons-ngx-lib-textbox.metadata.json +1 -1
  215. package/textbox/textbox.component.theme.scss +1 -1
  216. package/theming.scss +50 -149
  217. package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
  218. package/top-bar/top-bar.component.theme.scss +7 -7
  219. package/form/form.component.theme.scss +0 -2
  220. package/form/internal-button.component.theme.scss +0 -2
  221. package/form/internal-menu.component.theme.scss +0 -3
  222. package/list/list-actions.component.theme.scss +0 -3
  223. package/list/list-carousel.component.theme.scss +0 -9
  224. package/list/list-chooser.component.theme.scss +0 -3
  225. package/list/list-pager.component.theme.scss +0 -3
  226. package/list/list-sorting.component.theme.scss +0 -3
  227. package/list/list-views.component.theme.scss +0 -3
  228. package/list/list.component.theme.scss +0 -5
  229. package/list/list_old.component.theme.scss +0 -5
  230. package/menu/menu.component.theme.scss +0 -2
  231. package/search/search.component.theme.scss +0 -3
  232. package/textbox-icon/textbox-icon.component.theme.scss +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-query-builder.js","sources":["../../../projects/ngx-lib/query-builder/common/model/operator.ts","../../../projects/ngx-lib/query-builder/common/services/type-convertor.service.ts","../../../projects/ngx-lib/query-builder/query-builder-section/query-builder-section.component.ts","../../../projects/ngx-lib/query-builder/query-builder-item/query-builder-item.component.ts","../../../projects/ngx-lib/query-builder/common/model/type-map.ts","../../../projects/ngx-lib/query-builder/common/model/operator-unit.ts","../../../projects/ngx-lib/query-builder/common/services/output-query.service.ts","../../../projects/ngx-lib/query-builder/common/model/type.ts","../../../projects/ngx-lib/query-builder/query-builder.service.ts","../../../projects/ngx-lib/query-builder/query-builder.component.ts","../../../projects/ngx-lib/query-builder/query-builder.module.ts","../../../projects/ngx-lib/query-builder/public-api.ts","../../../projects/ngx-lib/query-builder/pepperi-addons-ngx-lib-query-builder.ts"],"sourcesContent":["import { PepSmartFilterOperators, IPepSmartFilterOperator } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\nexport interface IPepQueryBuilderOperator {\r\n legacy: string, //legacy Operator \r\n smartFilter: IPepSmartFilterOperator, //smart filter operator \r\n type: PepSmartFilterType[] | null //smart filter type\r\n}\r\n\r\nconst Equals: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.Equals,\r\n type: ['boolean', 'int', 'text']\r\n};\r\n\r\nconst NotEqual: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEqual',\r\n smartFilter: PepSmartFilterOperators.NotEqual,\r\n type: null\r\n};\r\n\r\nconst LessThan: IPepQueryBuilderOperator = {\r\n legacy: '<',\r\n smartFilter: PepSmartFilterOperators.LessThan,\r\n type: null\r\n};\r\n\r\nconst GreaterThan: IPepQueryBuilderOperator = {\r\n legacy: '>',\r\n smartFilter: PepSmartFilterOperators.GreaterThan,\r\n type: null\r\n};\r\n\r\n/*\r\nconst GreaterThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '>=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.GreaterThanOrEquals,\r\n type: 'int'\r\n }\r\n};\r\n\r\nconst LessThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '<=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.LessThanOrEquals,\r\n type: 'int',\r\n type: 'Integer'\r\n }\r\n}; */\r\n\r\nconst NumberRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.NumberRange,\r\n type: ['int']\r\n};\r\n\r\nconst Contains: IPepQueryBuilderOperator = {\r\n legacy: 'Contains',\r\n smartFilter: PepSmartFilterOperators.Contains,\r\n type: null\r\n};\r\n\r\n/*\r\nconst BeginsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'BeginsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.BeginsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst EndsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'EndsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.EndsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst Before: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'Before',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.Before,\r\n type: 'date'\r\n }\r\n};\r\n\r\nconst After: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'After',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.After,\r\n type: 'date'\r\n }\r\n}; */\r\n\r\nconst InTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'InTheLast',\r\n smartFilter: PepSmartFilterOperators.InTheLast,\r\n type: null\r\n};\r\n\r\nconst NotInTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'NotInTheLast',\r\n smartFilter: PepSmartFilterOperators.NotInTheLast,\r\n type: null\r\n};\r\n\r\nconst Today: IPepQueryBuilderOperator = {\r\n legacy: 'Today',\r\n smartFilter: PepSmartFilterOperators.Today,\r\n type: null\r\n};\r\n\r\nconst ThisWeek: IPepQueryBuilderOperator = {\r\n legacy: 'ThisWeek',\r\n smartFilter: PepSmartFilterOperators.ThisWeek,\r\n type: null\r\n};\r\n\r\nconst ThisMonth: IPepQueryBuilderOperator = {\r\n legacy: 'ThisMonth',\r\n smartFilter: PepSmartFilterOperators.ThisMonth,\r\n type: null\r\n};\r\n\r\nconst DateRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.DateRange,\r\n type: ['date-time']\r\n};\r\n\r\nconst DueIn: IPepQueryBuilderOperator = {\r\n legacy: 'DueIn',\r\n smartFilter: PepSmartFilterOperators.DueIn,\r\n type: null\r\n};\r\n\r\nconst NotDueIn: IPepQueryBuilderOperator = {\r\n legacy: 'NotDueIn',\r\n smartFilter: PepSmartFilterOperators.NotDueIn,\r\n type: null\r\n};\r\n\r\nconst On: IPepQueryBuilderOperator = {\r\n legacy: 'On',\r\n smartFilter: PepSmartFilterOperators.On,\r\n type: null\r\n};\r\n\r\nconst IsEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsEmpty',\r\n smartFilter: PepSmartFilterOperators.IsEmpty,\r\n type: null\r\n};\r\n\r\nconst IsNotEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEmpty',\r\n smartFilter: PepSmartFilterOperators.IsNotEmpty,\r\n type: null\r\n};\r\n\r\nconst In: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.In,\r\n type: ['multi-select']\r\n};\r\n\r\n\r\nconst PepQueryBuilderOperators = [\r\n Equals,\r\n NotEqual,\r\n LessThan,\r\n // LessThanOrEquals,\r\n GreaterThan,\r\n // GreaterThanOrEquals,\r\n NumberRange,\r\n Contains,\r\n // BeginsWith,\r\n // EndsWith,\r\n // After,\r\n // Before,\r\n InTheLast,\r\n NotInTheLast,\r\n Today,\r\n ThisWeek,\r\n ThisMonth,\r\n DateRange,\r\n DueIn,\r\n NotDueIn,\r\n On,\r\n IsEmpty,\r\n IsNotEmpty,\r\n In\r\n]\r\n\r\n/**\r\n * gets a smart filter operator item\r\n * @param operator legacy operator\r\n * @param type smart filter's type\r\n * @returns smart filter operator item\r\n */\r\nexport function getSmartBuilderOperator(operator: string, type: PepSmartFilterType): IPepSmartFilterOperator | null {\r\n const smartFilterOperator = PepQueryBuilderOperators.find(item =>\r\n item.legacy === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return smartFilterOperator ? smartFilterOperator.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operator value\r\n * @param operator smart filter operator item\r\n * @param type smart filter's type\r\n * @returns legacy operator value\r\n */\r\nexport function getLegacyOperator(operator: IPepSmartFilterOperator, type: PepSmartFilterType): string | null {\r\n const legacyOperator = PepQueryBuilderOperators.find(item =>\r\n item.smartFilter === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return legacyOperator ? legacyOperator.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\n\r\n@Injectable(/*{\r\n providedIn: 'root'\r\n}*/)\r\nexport class PepTypeConvertorService {\r\n private readonly _operators: IPepOption[] = [];\r\n private readonly _booleans: IPepOption[] = [];\r\n\r\n public get operators(): IPepOption[] {\r\n return this._operators;\r\n }\r\n\r\n public get booleans(): IPepOption[] {\r\n return this._booleans;\r\n }\r\n\r\n constructor() {\r\n this.initOperators();\r\n this.initBooleans();\r\n }\r\n\r\n private initOperators() {\r\n this._operators.push({\r\n key: 'AND',\r\n value: 'And'\r\n });\r\n this._operators.push({\r\n key: 'OR',\r\n value: 'Or'\r\n });\r\n }\r\n\r\n private initBooleans() {\r\n this._booleans.push({\r\n key: 'True',\r\n value: 'True'\r\n });\r\n this._booleans.push({\r\n key: 'False',\r\n value: 'False'\r\n });\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n IPepButtonClickEvent,\r\n PepButton,\r\n} from '@pepperi-addons/ngx-lib/button';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\nimport { IPepQueryDepth } from '../common/model/structure';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-section',\r\n templateUrl: './query-builder-section.component.html',\r\n styleUrls: ['./query-builder-section.component.scss'],\r\n})\r\nexport class PepQueryBuilderSectionComponent {\r\n @Input() form: FormGroup;\r\n @Input() depth: IPepQueryDepth;\r\n @Input() hasFields = true;\r\n\r\n @Output()\r\n createSection = new EventEmitter();\r\n @Output()\r\n createItem = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n @Output()\r\n operatorChange = new EventEmitter();\r\n\r\n @ViewChild('sectionContainer', { read: ViewContainerRef, static: true }) sectionContainer: ViewContainerRef;\r\n\r\n toggleButtons: Array<PepButton>;\r\n\r\n constructor(private _typeConvertorService: PepTypeConvertorService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.initOperators();\r\n }\r\n\r\n get f() {\r\n return this.form.controls;\r\n }\r\n\r\n initOperators() {\r\n this.toggleButtons = this._typeConvertorService.operators.map((operator: IPepOption) => {\r\n return {\r\n key: operator.key,\r\n value: operator.value,\r\n callback: (event: IPepButtonClickEvent) =>\r\n this.onOperatorChanged(event)\r\n } as PepButton\r\n });\r\n }\r\n\r\n onOperatorChanged(event) {\r\n if (event?.source?.key) {\r\n this.f.operator.setValue(event.source.key);\r\n this.operatorChange.emit();\r\n }\r\n }\r\n\r\n onAddRuleClicked() {\r\n this.createItem.emit();\r\n }\r\n\r\n onAddRuleSetClicked() {\r\n this.createSection.emit();\r\n }\r\n\r\n onDeleteSectionClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { PepSmartFilterBaseField, IPepSmartFilterField } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepSmartFilterData } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\nimport { IPepQueryBuilderFieldContainer } from '../common/model/legacy';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-item',\r\n templateUrl: './query-builder-item.component.html',\r\n styleUrls: ['./query-builder-item.component.scss'],\r\n})\r\nexport class PepQueryBuilderItemComponent {\r\n @Input() formKey: string;\r\n _fields: Array<IPepQueryBuilderFieldContainer> = [];\r\n _options: IPepOption[] = [];\r\n @Input()\r\n set fields(list: Array<IPepQueryBuilderFieldContainer>) {\r\n if (list?.length > 0) {\r\n this._fields = list;\r\n this._options = list.map(field => {\r\n return {\r\n key: field.field.id,\r\n value: field.field.name\r\n }\r\n })\r\n }\r\n }\r\n _selectedField: PepSmartFilterBaseField = null;\r\n @Input()\r\n set selected(value: IPepQueryBuilderFieldContainer) {\r\n if (value) {\r\n this._selectedField = value.field;\r\n this._f.legacyType.setValue(value.legacyType);\r\n }\r\n }\r\n _filter: IPepSmartFilterData;\r\n @Input()\r\n set filter(value: IPepSmartFilterData) {\r\n if (value) {\r\n this._filter = value;\r\n }\r\n }\r\n _parentForm: FormGroup;\r\n @Input()\r\n set parentForm(value: FormGroup) {\r\n if (value) {\r\n this._parentForm = value;\r\n this.addToParentForm();\r\n }\r\n }\r\n\r\n @Output()\r\n filterChange = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n\r\n form: FormGroup;\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public typeConvertorService: PepTypeConvertorService\r\n ) {\r\n this.setupForm(null);\r\n }\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n get _f() {\r\n return this.form.controls;\r\n }\r\n\r\n setupForm(legacyType) {\r\n this.form = this._fb.group({\r\n fieldId: this._fb.control(null),\r\n fieldType: this._fb.control(null),\r\n operator: this._fb.control(null),\r\n operatorUnit: this._fb.control(null),\r\n legacyType: this._fb.control(legacyType),\r\n values: this._fb.group({\r\n first: this._fb.control(null),\r\n second: this._fb.control(null)\r\n }),\r\n });\r\n }\r\n\r\n addToParentForm() {\r\n this._parentForm.setControl(this.formKey, this.form);\r\n }\r\n\r\n onFieldChanged(key) {\r\n const item = this._fields.find(field => field.field.id === key);\r\n\r\n this.setupForm(item.legacyType);\r\n this.addToParentForm();\r\n\r\n /**\r\n * hack due to angular's change detection bug -\r\n * ERROR Error: There is no FormControl instance attached to form control element with name: [formControlName]\r\n */\r\n this._selectedField = null;\r\n setTimeout(() => {\r\n this._selectedField = item ? item.field : null;\r\n }, 0);\r\n\r\n this._filter = null;\r\n }\r\n\r\n onFilterChanged() {\r\n if (this.form.valid) {\r\n this.filterChange.emit();\r\n }\r\n }\r\n\r\n onDeleteItemClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n\r\n}\r\n","import { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\nexport class PepQueryBuilderTypeMap {\r\n private map: Map<string, PepSmartFilterType>;\r\n\r\n constructor() {\r\n this.loadTypes();\r\n }\r\n\r\n private loadTypes() {\r\n this.map = new Map<string, PepSmartFilterType>();\r\n this.map.set('Bool', 'boolean');\r\n this.map.set('JsonBool', 'boolean');\r\n this.map.set('Integer', 'int');\r\n this.map.set('Double', 'int');\r\n this.map.set('String', 'text');\r\n this.map.set('Guid', 'text');\r\n this.map.set('Date', 'date');\r\n this.map.set('DateTime', 'date-time');\r\n this.map.set('MultipleStringValues', 'multi-select');\r\n }\r\n\r\n /**\r\n * Converts legacy field type to smart builder type\r\n * @param type legacy type\r\n * @returns smart builder field type\r\n */\r\n getSmartBuilderType(key: string): PepSmartFilterType | null {\r\n const item = this.map.get(key);\r\n return item ? item : null;\r\n }\r\n\r\n}\r\n\r\n","\r\nimport { IPepSmartFilterOperatorUnit, PepSmartFilterOperatorUnits } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\ninterface IPepQueryBuilderOperationUnit {\r\n legacy: string,\r\n smartFilter: IPepSmartFilterOperatorUnit,\r\n}\r\n\r\nconst Days: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Days',\r\n smartFilter: PepSmartFilterOperatorUnits.Days\r\n};\r\n\r\nconst Weeks: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Weeks',\r\n smartFilter: PepSmartFilterOperatorUnits.Weeks\r\n};\r\n\r\nconst Months: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Months',\r\n smartFilter: PepSmartFilterOperatorUnits.Months\r\n};\r\n\r\nconst Years: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Years',\r\n smartFilter: PepSmartFilterOperatorUnits.Years\r\n};\r\n\r\nconst PepQueryBuilderOperationUnit = [\r\n Days,\r\n Weeks,\r\n Months,\r\n Years,\r\n];\r\n\r\n/**\r\n * gets a smart filter operation unit item\r\n * @param operationUnit legacy operation unit\r\n * @returns smart filter operation unit item\r\n */\r\nexport function getSmartBuilderOperationUnit(operationUnit: string): IPepSmartFilterOperatorUnit | null {\r\n const smartFilterOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.legacy === operationUnit);\r\n return smartFilterOperationUnit ? smartFilterOperationUnit.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operation unit value\r\n * @param operationUnit smart filter operation unit item\r\n * @returns legacy operation unit value\r\n */\r\nexport function getLegacyOperationUnit(operationUnit: IPepSmartFilterOperatorUnit): string | null {\r\n const legacyOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.smartFilter === operationUnit);\r\n return legacyOperationUnit ? legacyOperationUnit.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepQuerySection, IPepQueryItem } from '../model/legacy';\r\nimport { getLegacyOperator } from '../model/operator';\r\nimport { PepOperatorTypes } from '../model/type';\r\nimport { getLegacyOperationUnit } from '../model/operator-unit';\r\nimport { PepSmartFilterOperators } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\n@Injectable(/*{\r\n providedIn: 'root'\r\n}*/)\r\nexport class PepOutputQueryService {\r\n private _complexIdCounter: number;\r\n private _expressionIdCounter: number;\r\n\r\n constructor() {\r\n //\r\n }\r\n\r\n /**\r\n * generates a legacy query structure \r\n * @param filters UI smart filters structure \r\n * @returns legacy query\r\n */\r\n generateQuery(filters: any) {\r\n this.initParams();\r\n\r\n return this.sectionWalk(filters);\r\n }\r\n\r\n /**\r\n * init params\r\n */\r\n private initParams() {\r\n this._complexIdCounter = 1;\r\n this._expressionIdCounter = 1;\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds legacy query structure\r\n * @param current UI object represents either a section or filter component\r\n * @returns section query data\r\n */\r\n private sectionWalk(current: any) {\r\n let section: IPepQuerySection | IPepQueryItem = null;\r\n\r\n Object.keys(current).forEach(key => {\r\n if (key.includes('item')) {\r\n section = this.addToSection(section, {\r\n ExpressionId: (this._expressionIdCounter++).toString(),\r\n ApiName: current[key].fieldId,\r\n FieldType: current[key].legacyType,\r\n Operation: getLegacyOperator(current[key].operator, current[key].fieldType),\r\n Values: this.getItemValues(current[key])\r\n } as IPepQueryItem, current.operator);\r\n } else if (key.includes('section')) {\r\n const childSection = this.sectionWalk(current[key]);\r\n if (childSection) {\r\n section = this.addToSection(section, childSection, current.operator);\r\n }\r\n }\r\n });\r\n\r\n return section;\r\n }\r\n\r\n /**\r\n * adds a legacy filter object to the current query structure\r\n * @param section section query data\r\n * @param item filter item\r\n * @param operator query operator\r\n * @returns \r\n */\r\n private addToSection(section: any, item: any, operator: string): any {\r\n return section ? this.createSection(section, item, operator) : item;\r\n }\r\n\r\n /**\r\n * creates a legacy complex object\r\n * @param left LeftNode object\r\n * @param right RightNode object\r\n * @param operator query operator\r\n * @returns legacy complex object\r\n */\r\n private createSection(left: any, right: any, operator: string): IPepQuerySection {\r\n return {\r\n ComplexId: (this._complexIdCounter++).toString(),\r\n LeftNode: left,\r\n RightNode: right,\r\n Operation: <PepOperatorTypes>operator\r\n }\r\n }\r\n\r\n /**\r\n * gets legacy filter values object\r\n * @param current UI filter object's values\r\n * @returns an array represents legacy values\r\n */\r\n private getItemValues(current: any) {\r\n let values: any[] = [];\r\n\r\n if (current?.values?.first) {\r\n if (current.operator === PepSmartFilterOperators.In) { //multi select \r\n values = current.values.first;\r\n } else if (\r\n current.operator === PepSmartFilterOperators.InTheLast ||\r\n current.operator === PepSmartFilterOperators.NotInTheLast ||\r\n current.operator === PepSmartFilterOperators.DueIn ||\r\n current.operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit \r\n values.push(current.values.first);\r\n if (current.operatorUnit) {\r\n values.push(getLegacyOperationUnit(current.operatorUnit));\r\n }\r\n } else {\r\n values.push(current.values.first);\r\n if (current.values.second) {\r\n values.push(current.values.second);\r\n }\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n\r\n}","export enum PepOperatorTypes {\r\n And = 'AND',\r\n Or = 'OR'\r\n}\r\n\r\n","import { Injectable, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { } from 'lodash';\r\nimport { IPepQueryBuilderField, IPepQuerySection, IPepQueryItem } from './common/model/legacy';\r\nimport {\r\n IPepSmartFilterField,\r\n IPepSmartFilterData,\r\n PepSmartFilterOperators,\r\n IPepSmartFilterOperator,\r\n PepSmartFilterType,\r\n createSmartFilter,\r\n createSmartFilterField,\r\n PepSmartFilterBaseField\r\n} from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { getSmartBuilderOperator } from './common/model/operator';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\nimport { IPepQueryBuilderFieldContainer } from './common/model/legacy';\r\nimport { PepQueryBuilderTypeMap } from './common/model/type-map';\r\nimport { getSmartBuilderOperationUnit } from './common/model/operator-unit';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { IPepQueryBuilderValues } from './common/model/filter';\r\nimport { PepOperatorTypes } from './common/model/type';\r\n\r\nconst MAX_STRUCTURE_DEPTH = 3;\r\n\r\n@Injectable()\r\nexport class PepQueryBuilderService {\r\n private _outputQuery$ = new BehaviorSubject<IPepQuerySection | IPepQueryItem>(null);\r\n\r\n private _smartFilterFields: Array<IPepQueryBuilderFieldContainer>;\r\n private _form: FormGroup;\r\n private _maxStructureDepth = MAX_STRUCTURE_DEPTH;\r\n\r\n public outputQuery$ = this._outputQuery$.asObservable();\r\n\r\n constructor(private _fb: FormBuilder, private _resolver: ComponentFactoryResolver, private _outputQueryService: PepOutputQueryService) {\r\n\r\n }\r\n\r\n set maxDepth(value) {\r\n this._maxStructureDepth = value;\r\n }\r\n\r\n get maxDepth() {\r\n return this._maxStructureDepth;\r\n }\r\n\r\n set fields(list: Array<IPepQueryBuilderField>) {\r\n this._smartFilterFields = this.convertToSmartFilterFields(list);\r\n }\r\n\r\n get hasFields(): boolean {\r\n return this._smartFilterFields?.length > 0;\r\n }\r\n\r\n set form(value: FormGroup) {\r\n this._form = value;\r\n }\r\n\r\n get form() {\r\n return this._form;\r\n }\r\n\r\n /**\r\n * builds a dynamic UI query structure\r\n * might has a different structure than the query's due to parent-child elements merge\r\n * @param query legacy query \r\n * @param containerRef reference to root element\r\n */\r\n buildQueryStructure(\r\n query: IPepQuerySection | IPepQueryItem,\r\n containerRef: ViewContainerRef\r\n ) {\r\n //update root operator \r\n if (this.hasProperty(query, 'ComplexId') &&\r\n query?.Operation &&\r\n query.Operation !== this._form.get('operator').value) {\r\n this._form.get('operator').setValue(query.Operation);\r\n }\r\n this.flatten(this._form.get('operator').value, query, containerRef, this._form, 0);\r\n }\r\n\r\n /**\r\n * checks if the object contains property\r\n * @param obj object\r\n * @param prop property name\r\n * @returns true if contains, false otherwise\r\n */\r\n private hasProperty(obj, prop) {\r\n return Object.prototype.hasOwnProperty.call(obj, prop);\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds UI filters structure\r\n * @param parentOperator legacy complex operator\r\n * @param current child legacy object (either another complex or expression type)\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n private flatten(parentOperator: string, current: IPepQuerySection | IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n if (this.hasProperty(current, 'ComplexId')) {\r\n const section = current as IPepQuerySection;\r\n if (parentOperator === current.Operation) {\r\n this.flatten(current.Operation, section.LeftNode, containerRef, parentForm, depth);\r\n this.flatten(current.Operation, section.RightNode, containerRef, parentForm, depth);\r\n } else {\r\n const result = this.createSection(section.Operation, containerRef, parentForm, depth);\r\n this.flatten(section.Operation, section.LeftNode, result.containerRef, result.parentForm, depth + 1);\r\n this.flatten(section.Operation, section.RightNode, result.containerRef, result.parentForm, depth + 1);\r\n }\r\n } else if (this.hasProperty(current, 'ExpressionId')) {\r\n this.createItem(current as IPepQueryItem, containerRef, parentForm);\r\n }\r\n }\r\n\r\n /**\r\n * creates a container object of two or more child filter items\r\n * @param operator AND/OR operator\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n * @param depth\r\n * @returns an object containing the current element and current form\r\n */\r\n createSection(operator: PepOperatorTypes, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderSectionComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n const sectionGroup = this._fb.group({\r\n operator: this._fb.control(operator)\r\n });\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('section')) { counter++; } });\r\n const formKey = `section${counter}`;\r\n parentForm.addControl(formKey, sectionGroup);\r\n\r\n componentRef.instance.form = sectionGroup;\r\n componentRef.instance.depth = {\r\n current: depth,\r\n max: this._maxStructureDepth\r\n };\r\n componentRef.instance.createSection.subscribe(() => {\r\n const section = this.createSection(PepOperatorTypes.And, componentRef.instance.sectionContainer, sectionGroup, depth + 1);\r\n this.createItem(null, section.containerRef, section.parentForm);\r\n });\r\n componentRef.instance.createItem.subscribe(() => {\r\n this.createItem(null, componentRef.instance.sectionContainer, sectionGroup);\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.operatorChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n\r\n return {\r\n containerRef: componentRef.instance.sectionContainer,\r\n parentForm: sectionGroup\r\n };\r\n }\r\n\r\n /**\r\n * creates a component represents filter item (leaf element - has no childs)\r\n * @param current filter legacy element\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n createItem(current: IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderItemComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('item')) { counter++; } });\r\n const formKey = `item${counter}`;\r\n\r\n componentRef.instance.formKey = formKey;\r\n componentRef.instance.fields = this._smartFilterFields;\r\n const selectedField = this.getSelectedField(current);\r\n if (selectedField) {\r\n componentRef.instance.selected = selectedField;\r\n if (current) {\r\n componentRef.instance.filter = this.getFilter(current, selectedField.field);\r\n }\r\n }\r\n componentRef.instance.parentForm = parentForm;\r\n componentRef.instance.filterChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n }\r\n\r\n /**\r\n * creates a smart filter object\r\n * @param current filter legacy element\r\n * @param field filter's selected field\r\n * @returns smart filter object\r\n */\r\n private getFilter(current: IPepQueryItem, field: PepSmartFilterBaseField): IPepSmartFilterData | null {\r\n const operator: IPepSmartFilterOperator = getSmartBuilderOperator(current.Operation, field.type);\r\n if (operator) {\r\n const filterValues: IPepQueryBuilderValues = this.getFilterValues(current, operator, field);\r\n return createSmartFilter(\r\n current.ApiName,\r\n operator,\r\n filterValues.first,\r\n filterValues.second,\r\n filterValues.operationUnit\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * get smart filter field\r\n * @param current filter legacy element\r\n * @returns smart filter field, if not found returns the first field\r\n */\r\n private getSelectedField(current: IPepQueryItem): IPepQueryBuilderFieldContainer | null {\r\n if (current) {\r\n const item = this._smartFilterFields.find(field => field.field.id === current.ApiName);\r\n return item ? item : this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n } else {\r\n return this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n }\r\n }\r\n\r\n /**\r\n * gets smart filter's values data\r\n * @param current filter legacy element\r\n * @param operator smart filter operator\r\n * @param field filter's selected field\r\n * @returns object contains the filter values data\r\n */\r\n private getFilterValues(current: IPepQueryItem, operator: IPepSmartFilterOperator, field: any) {\r\n const data: IPepQueryBuilderValues = {\r\n first: null,\r\n second: null,\r\n operationUnit: null\r\n };\r\n\r\n if (operator === PepSmartFilterOperators.In) { //multi select \r\n //filter keys don't exist on field options\r\n data.first = current?.Values?.length > 0 ? current.Values.filter(item => {\r\n return field.options.find(option => option.key === item);\r\n }) : null;\r\n } else if (\r\n operator === PepSmartFilterOperators.InTheLast ||\r\n operator === PepSmartFilterOperators.NotInTheLast ||\r\n operator === PepSmartFilterOperators.DueIn ||\r\n operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n if (current?.Values?.length === 2) {\r\n data.operationUnit = getSmartBuilderOperationUnit(current.Values[1]);\r\n }\r\n } else {\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n data.second = current?.Values?.length === 2 ? current.Values[1] : null;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * converts legacy fields to smart filter fields\r\n * @param fields legacy fields array\r\n * @returns smart filter fields array\r\n */\r\n private convertToSmartFilterFields(fields: Array<IPepQueryBuilderField>): Array<IPepQueryBuilderFieldContainer> {\r\n if (fields?.length > 0) {\r\n const typeMapper = new PepQueryBuilderTypeMap();\r\n\r\n return fields.map((field) => {\r\n return {\r\n field: createSmartFilterField(\r\n {\r\n id: field.FieldID,\r\n name: field.Title,\r\n options: field.OptionalValues?.map(option => {\r\n return {\r\n key: option.Key,\r\n value: option.Value\r\n }\r\n })\r\n }, typeMapper.getSmartBuilderType(field.FieldType) as PepSmartFilterType),\r\n legacyType: field.FieldType\r\n }\r\n })\r\n /*return fields.map((field) => { \r\n return createSmartFilterField(\r\n {\r\n id: field.FieldID,\r\n name: field.Title,\r\n options: field.OptionalValues?.map(option => {\r\n return {\r\n key: option.Key,\r\n value: option.Value\r\n }\r\n })\r\n }\r\n , typeMapper.getSmartBuilderType(field.FieldType) as PepSmartFilterType) \r\n }) */\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * creates a legacy output query \r\n */\r\n createOutputQuery() {\r\n if (this._form.valid) {\r\n const query = this._outputQueryService.generateQuery(this._form.value);\r\n this._outputQuery$.next(query);\r\n }\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { IPepQueryBuilderField, IPepQuerySection, IPepQueryItem } from './common/model/legacy';\r\nimport { PepQueryBuilderService } from './query-builder.service';\r\nimport { PepTypeConvertorService } from './common/services/type-convertor.service';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { IPepQueryDepth } from './common/model/structure';\r\nimport { PepOperatorTypes } from './common/model/type';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'pep-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n providers: [PepQueryBuilderService, PepTypeConvertorService, PepOutputQueryService]\r\n})\r\nexport class PepQueryBuilderComponent implements OnInit, OnDestroy {\r\n _query: IPepQuerySection | IPepQueryItem = null;\r\n @Input()\r\n set query(object: IPepQuerySection | IPepQueryItem) {\r\n this._query = object;\r\n this.loadQuery()\r\n }\r\n @Input()\r\n set fields(list: Array<IPepQueryBuilderField>) {\r\n this.queryBuilderService.fields = list;\r\n this.hasFields = this.queryBuilderService.hasFields;\r\n this.loadQuery();\r\n }\r\n @Input()\r\n set maxDepth(value: number) {\r\n this.queryBuilderService.maxDepth = value;\r\n }\r\n\r\n @Output()\r\n queryChange: EventEmitter<IPepQuerySection | IPepQueryItem> = new EventEmitter<IPepQuerySection | IPepQueryItem>();\r\n @Output()\r\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild('rootContainer', { static: true }) root: PepQueryBuilderSectionComponent;\r\n\r\n _formSubscription$: Subscription;\r\n _outputQuerySubscription$: Subscription;\r\n _lastFormValidStatus = true;\r\n depth: IPepQueryDepth;\r\n hasFields = false;\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public queryBuilderService: PepQueryBuilderService\r\n ) {\r\n this.setupForm();\r\n this.initDepth();\r\n this._formSubscription$ = this.queryBuilderService.form.valueChanges.subscribe((val) => {\r\n if (this.queryBuilderService.form.valid !== this._lastFormValidStatus) {\r\n this._lastFormValidStatus = this.queryBuilderService.form.valid;\r\n this.formValidationChange.emit(this._lastFormValidStatus);\r\n }\r\n });\r\n this._outputQuerySubscription$ = this.queryBuilderService.outputQuery$.subscribe((outputQuery) => {\r\n this.queryChange.emit(outputQuery);\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n setupForm() {\r\n this.queryBuilderService.form = this._fb.group({\r\n operator: this._fb.control(PepOperatorTypes.And)\r\n });\r\n }\r\n\r\n initDepth() {\r\n this.depth = {\r\n current: 0,\r\n max: this.queryBuilderService.maxDepth\r\n }\r\n }\r\n\r\n /**\r\n * builds UI query structure as soon as both the fields and query loads\r\n */\r\n loadQuery() {\r\n if (\r\n this._query &&\r\n this.queryBuilderService.hasFields &&\r\n this.root?.sectionContainer\r\n ) {\r\n this.queryBuilderService.buildQueryStructure(this._query, this.root.sectionContainer);\r\n }\r\n }\r\n\r\n onCreateSection() {\r\n const section = this.queryBuilderService.createSection(PepOperatorTypes.And, this.root.sectionContainer, this.queryBuilderService.form, 1);\r\n this.queryBuilderService.createItem(null, section.containerRef, section.parentForm);\r\n }\r\n\r\n onCreateItem() {\r\n this.queryBuilderService.createItem(null, this.root.sectionContainer, this.queryBuilderService.form);\r\n }\r\n\r\n onOperatorChange() {\r\n this.queryBuilderService.createOutputQuery();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this._formSubscription$) {\r\n this._formSubscription$.unsubscribe();\r\n }\r\n if (this._outputQuerySubscription$) {\r\n this._outputQuerySubscription$.unsubscribe();\r\n }\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\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\r\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\r\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\r\n\r\nimport { PepQueryBuilderComponent } from './query-builder.component';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n PepSelectModule,\r\n PepButtonModule,\r\n PepGroupButtonsModule,\r\n PepSmartFiltersModule\r\n ],\r\n exports: [\r\n PepQueryBuilderComponent\r\n ],\r\n declarations: [\r\n PepQueryBuilderComponent,\r\n PepQueryBuilderSectionComponent,\r\n PepQueryBuilderItemComponent\r\n ]\r\n})\r\nexport class PepQueryBuilderModule { }\r\n","/*\r\n * Public API Surface of ngx-lib/query-builder\r\n */\r\nexport * from './query-builder.module';\r\nexport * from './query-builder.component';\r\nexport * from './query-builder.service';\r\nexport * from './common/model/legacy';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepOutputQueryService as ɵa} from './common/services/output-query.service';\nexport {PepTypeConvertorService as ɵb} from './common/services/type-convertor.service';\nexport {PepQueryBuilderItemComponent as ɵd} from './query-builder-item/query-builder-item.component';\nexport {PepQueryBuilderSectionComponent as ɵc} from './query-builder-section/query-builder-section.component';"],"names":[],"mappings":";;;;;;;;;;AASA,MAAM,MAAM,GAA6B;IACrC,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,uBAAuB,CAAC,MAAM;IAC3C,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,MAAM,QAAQ,GAA6B;IACvC,MAAM,EAAE,YAAY;IACpB,WAAW,EAAE,uBAAuB,CAAC,QAAQ;IAC7C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,QAAQ,GAA6B;IACvC,MAAM,EAAE,GAAG;IACX,WAAW,EAAE,uBAAuB,CAAC,QAAQ;IAC7C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,WAAW,GAA6B;IAC1C,MAAM,EAAE,GAAG;IACX,WAAW,EAAE,uBAAuB,CAAC,WAAW;IAChD,IAAI,EAAE,IAAI;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAM,WAAW,GAA6B;IAC1C,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,uBAAuB,CAAC,WAAW;IAChD,IAAI,EAAE,CAAC,KAAK,CAAC;CAChB,CAAC;AAEF,MAAM,QAAQ,GAA6B;IACvC,MAAM,EAAE,UAAU;IAClB,WAAW,EAAE,uBAAuB,CAAC,QAAQ;IAC7C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,SAAS,GAA6B;IACxC,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,uBAAuB,CAAC,SAAS;IAC9C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,YAAY,GAA6B;IAC3C,MAAM,EAAE,cAAc;IACtB,WAAW,EAAE,uBAAuB,CAAC,YAAY;IACjD,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,KAAK,GAA6B;IACpC,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,uBAAuB,CAAC,KAAK;IAC1C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,QAAQ,GAA6B;IACvC,MAAM,EAAE,UAAU;IAClB,WAAW,EAAE,uBAAuB,CAAC,QAAQ;IAC7C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,SAAS,GAA6B;IACxC,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,uBAAuB,CAAC,SAAS;IAC9C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,SAAS,GAA6B;IACxC,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,uBAAuB,CAAC,SAAS;IAC9C,IAAI,EAAE,CAAC,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,KAAK,GAA6B;IACpC,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,uBAAuB,CAAC,KAAK;IAC1C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,QAAQ,GAA6B;IACvC,MAAM,EAAE,UAAU;IAClB,WAAW,EAAE,uBAAuB,CAAC,QAAQ;IAC7C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,EAAE,GAA6B;IACjC,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,uBAAuB,CAAC,EAAE;IACvC,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,OAAO,GAA6B;IACtC,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,uBAAuB,CAAC,OAAO;IAC5C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,UAAU,GAA6B;IACzC,MAAM,EAAE,YAAY;IACpB,WAAW,EAAE,uBAAuB,CAAC,UAAU;IAC/C,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,EAAE,GAA6B;IACjC,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,uBAAuB,CAAC,EAAE;IACvC,IAAI,EAAE,CAAC,cAAc,CAAC;CACzB,CAAC;AAGF,MAAM,wBAAwB,GAAG;IAC7B,MAAM;IACN,QAAQ;IACR,QAAQ;;IAER,WAAW;;IAEX,WAAW;IACX,QAAQ;;;;;IAKR,SAAS;IACT,YAAY;IACZ,KAAK;IACL,QAAQ;IACR,SAAS;IACT,SAAS;IACT,KAAK;IACL,QAAQ;IACR,EAAE;IACF,OAAO;IACP,UAAU;IACV,EAAE;CACL,CAAA;AAED;;;;;;SAMgB,uBAAuB,CAAC,QAAgB,EAAE,IAAwB;IAC9E,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,IAC1D,IAAI,CAAC,MAAM,KAAK,QAAQ;SACvB,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACnD,CAAC;IACF,OAAO,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC;AACxE,CAAC;AAED;;;;;;SAMgB,iBAAiB,CAAC,QAAiC,EAAE,IAAwB;IACzF,MAAM,cAAc,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,IACrD,IAAI,CAAC,WAAW,KAAK,QAAQ;SAC5B,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACnD,CAAC;IACF,OAAO,cAAc,GAAG,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;AACzD;;MC1Oa,uBAAuB;IAYhC;QAXiB,eAAU,GAAiB,EAAE,CAAC;QAC9B,cAAS,GAAiB,EAAE,CAAC;QAW1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;IAXD,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAOO,aAAa;QACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjB,GAAG,EAAE,KAAK;YACV,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjB,GAAG,EAAE,IAAI;YACT,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;KACN;IAEO,YAAY;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAChB,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAChB,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,OAAO;SACjB,CAAC,CAAC;KACN;;;YAxCJ,UAAU;;;;MCmBE,+BAA+B;IAkBxC,YAAoB,qBAA8C;QAA9C,0BAAqB,GAArB,qBAAqB,CAAyB;QAfzD,cAAS,GAAG,IAAI,CAAC;QAG1B,kBAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QAEnC,eAAU,GAAG,IAAI,YAAY,EAAE,CAAC;QAEhC,WAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAE5B,mBAAc,GAAG,IAAI,YAAY,EAAE,CAAC;KAOnC;IAED,QAAQ;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAED,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC7B;IAED,aAAa;QACT,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAoB;YAC/E,OAAO;gBACH,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,QAAQ,EAAE,CAAC,KAA2B,KAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;aACvB,CAAA;SACjB,CAAC,CAAC;KACN;IAED,iBAAiB,CAAC,KAAK;;QACnB,IAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,0CAAE,GAAG,EAAE;YACpB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SAC9B;KACJ;IAED,gBAAgB;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC1B;IAED,mBAAmB;QACf,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;IAED,sBAAsB;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;;;YA9DJ,SAAS,SAAC;gBACP,QAAQ,EAAE,2BAA2B;gBACrC,krDAAqD;;aAExD;;;YAPQ,uBAAuB;;;mBAS3B,KAAK;oBACL,KAAK;wBACL,KAAK;4BAEL,MAAM;yBAEN,MAAM;qBAEN,MAAM;6BAEN,MAAM;+BAGN,SAAS,SAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCvB9D,4BAA4B;IA+CrC,YACY,GAAgB,EACjB,oBAA6C;QAD5C,QAAG,GAAH,GAAG,CAAa;QACjB,yBAAoB,GAApB,oBAAoB,CAAyB;QA/CxD,YAAO,GAA0C,EAAE,CAAC;QACpD,aAAQ,GAAiB,EAAE,CAAC;QAa5B,mBAAc,GAA4B,IAAI,CAAC;QAyB/C,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAElC,WAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAQxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACxB;IAhDD,IACI,MAAM,CAAC,IAA2C;QAClD,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,IAAG,CAAC,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK;gBAC1B,OAAO;oBACH,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;oBACnB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;iBAC1B,CAAA;aACJ,CAAC,CAAA;SACL;KACJ;IAED,IACI,QAAQ,CAAC,KAAqC;QAC9C,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SACjD;KACJ;IAED,IACI,MAAM,CAAC,KAA0B;QACjC,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACxB;KACJ;IAED,IACI,UAAU,CAAC,KAAgB;QAC3B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;KACJ;IAgBD,QAAQ;;KAEP;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC7B;IAED,SAAS,CAAC,UAAU;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACvB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAChC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YACpC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC7B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;aACjC,CAAC;SACL,CAAC,CAAC;KACN;IAED,eAAe;QACX,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACxD;IAED,cAAc,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;QAEhE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;;;;;QAMvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC;YACP,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SAClD,EAAE,CAAC,CAAC,CAAC;QAEN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;IAED,eAAe;QACX,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC5B;KACJ;IAED,mBAAmB;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;;;YA/GJ,SAAS,SAAC;gBACP,QAAQ,EAAE,wBAAwB;gBAClC,imGAAkD;;aAErD;;;YAXQ,WAAW;YAIX,uBAAuB;;;sBAS3B,KAAK;qBAGL,KAAK;uBAaL,KAAK;qBAQL,KAAK;yBAOL,KAAK;2BAQL,MAAM;qBAEN,MAAM;;;MCpDE,sBAAsB;IAG/B;QACI,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAEO,SAAS;QACb,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;KACxD;;;;;;IAOD,mBAAmB,CAAC,GAAW;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KAC7B;;;ACvBL,MAAM,IAAI,GAAkC;IACxC,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,2BAA2B,CAAC,IAAI;CAChD,CAAC;AAEF,MAAM,KAAK,GAAkC;IACzC,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,2BAA2B,CAAC,KAAK;CACjD,CAAC;AAEF,MAAM,MAAM,GAAkC;IAC1C,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,2BAA2B,CAAC,MAAM;CAClD,CAAC;AAEF,MAAM,KAAK,GAAkC;IACzC,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,2BAA2B,CAAC,KAAK;CACjD,CAAC;AAEF,MAAM,4BAA4B,GAAG;IACjC,IAAI;IACJ,KAAK;IACL,MAAM;IACN,KAAK;CACR,CAAC;AAEF;;;;;SAKgB,4BAA4B,CAAC,aAAqB;IAC9D,MAAM,wBAAwB,GAAkC,4BAA4B,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IACzI,OAAO,wBAAwB,GAAG,wBAAwB,CAAC,WAAW,GAAG,IAAI,CAAC;AAClF,CAAC;AAED;;;;;SAKgB,sBAAsB,CAAC,aAA0C;IAC7E,MAAM,mBAAmB,GAAkC,4BAA4B,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,CAAC,CAAC;IACzI,OAAO,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC;AACnE;;MC1Ca,qBAAqB;IAI9B;;KAEC;;;;;;IAOD,aAAa,CAAC,OAAY;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KACpC;;;;IAKO,UAAU;QACd,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;KACjC;;;;;;IAOO,WAAW,CAAC,OAAY;QAC5B,IAAI,OAAO,GAAqC,IAAI,CAAC;QAErD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG;YAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACtB,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;oBACjC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE;oBACtD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO;oBAC7B,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU;oBAClC,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;oBAC3E,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBAC1B,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;aACzC;iBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAChC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpD,IAAI,YAAY,EAAE;oBACd,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;iBACxE;aACJ;SACJ,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;KAClB;;;;;;;;IASO,YAAY,CAAC,OAAY,EAAE,IAAS,EAAE,QAAgB;QAC1D,OAAO,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;KACvE;;;;;;;;IASO,aAAa,CAAC,IAAS,EAAE,KAAU,EAAE,QAAgB;QACzD,OAAO;YACH,SAAS,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE;YAChD,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,KAAK;YAChB,SAAS,EAAoB,QAAQ;SACxC,CAAA;KACJ;;;;;;IAOO,aAAa,CAAC,OAAY;;QAC9B,IAAI,MAAM,GAAU,EAAE,CAAC;QAEvB,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,KAAK,EAAE;YACxB,IAAI,OAAO,CAAC,QAAQ,KAAK,uBAAuB,CAAC,EAAE,EAAE;gBACjD,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;aACjC;iBAAM,IACH,OAAO,CAAC,QAAQ,KAAK,uBAAuB,CAAC,SAAS;gBACtD,OAAO,CAAC,QAAQ,KAAK,uBAAuB,CAAC,YAAY;gBACzD,OAAO,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK;gBAClD,OAAO,CAAC,QAAQ,KAAK,uBAAuB,CAAC,QAAQ,EACvD;gBACE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,OAAO,CAAC,YAAY,EAAE;oBACtB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;iBAC7D;aACJ;iBAAM;gBACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;oBACvB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACtC;aACJ;SACJ;QAED,OAAO,MAAM,CAAC;KACjB;;;YAnHJ,UAAU;;;;ACRX,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,6BAAS,CAAA;AACb,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB;;ACyB5B,MAAM,mBAAmB,GAAG,CAAC,CAAC;MAGjB,sBAAsB;IAS/B,YAAoB,GAAgB,EAAU,SAAmC,EAAU,mBAA0C;QAAjH,QAAG,GAAH,GAAG,CAAa;QAAU,cAAS,GAAT,SAAS,CAA0B;QAAU,wBAAmB,GAAnB,mBAAmB,CAAuB;QAR7H,kBAAa,GAAG,IAAI,eAAe,CAAmC,IAAI,CAAC,CAAC;QAI5E,uBAAkB,GAAG,mBAAmB,CAAC;QAE1C,iBAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAIvD;IAED,IAAI,QAAQ,CAAC,KAAK;QACd,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACnC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IAED,IAAI,MAAM,CAAC,IAAkC;QACzC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;KACnE;IAED,IAAI,SAAS;;QACT,OAAO,CAAA,MAAA,IAAI,CAAC,kBAAkB,0CAAE,MAAM,IAAG,CAAC,CAAC;KAC9C;IAED,IAAI,IAAI,CAAC,KAAgB;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;;;;;;;IAQD,mBAAmB,CACf,KAAuC,EACvC,YAA8B;;QAG9B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC;aACpC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAA;YAChB,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE;YACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACtF;;;;;;;IAQO,WAAW,CAAC,GAAG,EAAE,IAAI;QACzB,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC1D;;;;;;;;IASO,OAAO,CAAC,cAAsB,EAAE,OAAyC,EAAE,YAA8B,EAAE,UAAqB,EAAE,KAAa;QACnJ,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;YACxC,MAAM,OAAO,GAAG,OAA2B,CAAC;YAC5C,IAAI,cAAc,KAAK,OAAO,CAAC,SAAS,EAAE;gBACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACnF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;aACvF;iBAAM;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;aACzG;SACJ;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE;YAClD,IAAI,CAAC,UAAU,CAAC,OAAwB,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;SACvE;KACJ;;;;;;;;;IAUD,aAAa,CAAC,QAA0B,EAAE,YAA8B,EAAE,UAAqB,EAAE,KAAa;QAC1G,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,+BAA+B,CAAC,CAAC;QACxF,MAAM,YAAY,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAChC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;SACvC,CAAC,CAAC;QACH,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;SAAE,EAAE,CAAC,CAAC;QACnG,MAAM,OAAO,GAAG,UAAU,OAAO,EAAE,CAAC;QACpC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAE7C,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC;QAC1C,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG;YAC1B,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,IAAI,CAAC,kBAAkB;SAC/B,CAAC;QACF,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1H,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;SACnE,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;SAC/E,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;YACnC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAClC,YAAY,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;YAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B,CAAC,CAAC;QAEH,OAAO;YACH,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,gBAAgB;YACpD,UAAU,EAAE,YAAY;SAC3B,CAAC;KACL;;;;;;;IAQD,UAAU,CAAC,OAAsB,EAAE,YAA8B,EAAE,UAAqB;QACpF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,4BAA4B,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;SAAE,EAAE,CAAC,CAAC;QAChG,MAAM,OAAO,GAAG,OAAO,OAAO,EAAE,CAAC;QAEjC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QACxC,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,aAAa,EAAE;YACf,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,aAAa,CAAC;YAC/C,IAAI,OAAO,EAAE;gBACT,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;aAC/E;SACJ;QACD,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9C,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC;YACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;YACnC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAClC,YAAY,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;;;;;;;IAQO,SAAS,CAAC,OAAsB,EAAE,KAA8B;QACpE,MAAM,QAAQ,GAA4B,uBAAuB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjG,IAAI,QAAQ,EAAE;YACV,MAAM,YAAY,GAA2B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5F,OAAO,iBAAiB,CACpB,OAAO,CAAC,OAAO,EACf,QAAQ,EACR,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,aAAa,CAC7B,CAAC;SACL;aAAM;YACH,OAAO,IAAI,CAAC;SACf;KACJ;;;;;;IAOO,gBAAgB,CAAC,OAAsB;;QAC3C,IAAI,OAAO,EAAE;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;YACvF,OAAO,IAAI,GAAG,IAAI,GAAG,CAAA,MAAA,IAAI,CAAC,kBAAkB,0CAAE,MAAM,IAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAChG;aAAM;YACH,OAAO,CAAA,MAAA,IAAI,CAAC,kBAAkB,0CAAE,MAAM,IAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAClF;KACJ;;;;;;;;IASO,eAAe,CAAC,OAAsB,EAAE,QAAiC,EAAE,KAAU;;QACzF,MAAM,IAAI,GAA2B;YACjC,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,IAAI;SACtB,CAAC;QAEF,IAAI,QAAQ,KAAK,uBAAuB,CAAC,EAAE,EAAE;;YAEzC,IAAI,CAAC,KAAK,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,IAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;gBACjE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;aAC5D,CAAC,GAAG,IAAI,CAAC;SACb;aAAM,IACH,QAAQ,KAAK,uBAAuB,CAAC,SAAS;YAC9C,QAAQ,KAAK,uBAAuB,CAAC,YAAY;YACjD,QAAQ,KAAK,uBAAuB,CAAC,KAAK;YAC1C,QAAQ,KAAK,uBAAuB,CAAC,QAAQ,EAC/C;YACE,IAAI,CAAC,KAAK,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,IAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACpE,IAAI,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,MAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,aAAa,GAAG,4BAA4B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACxE;SACJ;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,IAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACpE,IAAI,CAAC,MAAM,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,MAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC1E;QAED,OAAO,IAAI,CAAC;KACf;;;;;;IAOO,0BAA0B,CAAC,MAAoC;QACnE,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,IAAG,CAAC,EAAE;YACpB,MAAM,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;YAEhD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK;;gBACpB,OAAO;oBACH,KAAK,EAAE,sBAAsB,CACzB;wBACI,EAAE,EAAE,KAAK,CAAC,OAAO;wBACjB,IAAI,EAAE,KAAK,CAAC,KAAK;wBACjB,OAAO,EAAE,MAAA,KAAK,CAAC,cAAc,0CAAE,GAAG,CAAC,MAAM;4BACrC,OAAO;gCACH,GAAG,EAAE,MAAM,CAAC,GAAG;gCACf,KAAK,EAAE,MAAM,CAAC,KAAK;6BACtB,CAAA;yBACJ,CAAC;qBACL,EAAE,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAuB,CAAC;oBAC7E,UAAU,EAAE,KAAK,CAAC,SAAS;iBAC9B,CAAA;aACJ,CAAC,CAAA;;;;;;;;;;;;;;;SAeL;aAAM;YACH,OAAO,EAAE,CAAC;SACb;KACJ;;;;IAKD,iBAAiB;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClC;KACJ;;;YAxSJ,UAAU;;;YA1BF,WAAW;YADmB,wBAAwB;YAqBtD,qBAAqB;;;MCIjB,wBAAwB;IA+BjC,YACY,GAAgB,EACjB,mBAA2C;QAD1C,QAAG,GAAH,GAAG,CAAa;QACjB,wBAAmB,GAAnB,mBAAmB,CAAwB;QAhCtD,WAAM,GAAqC,IAAI,CAAC;QAkBhD,gBAAW,GAAmD,IAAI,YAAY,EAAoC,CAAC;QAEnH,yBAAoB,GAA0B,IAAI,YAAY,EAAW,CAAC;QAM1E,yBAAoB,GAAG,IAAI,CAAC;QAE5B,cAAS,GAAG,KAAK,CAAC;QAMd,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG;YAC/E,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,EAAE;gBACnE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aAC7D;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW;YACzF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACtC,CAAC,CAAC;KACN;IA5CD,IACI,KAAK,CAAC,MAAwC;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAA;KACnB;IACD,IACI,MAAM,CAAC,IAAkC;QACzC,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IACD,IACI,QAAQ,CAAC,KAAa;QACtB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,GAAG,KAAK,CAAC;KAC7C;IAgCD,QAAQ;;KAEP;IAED,SAAS;QACL,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3C,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC;SACnD,CAAC,CAAC;KACN;IAED,SAAS;QACL,IAAI,CAAC,KAAK,GAAG;YACT,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ;SACzC,CAAA;KACJ;;;;IAKD,SAAS;;QACL,IACI,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,mBAAmB,CAAC,SAAS;aAClC,MAAA,IAAI,CAAC,IAAI,0CAAE,gBAAgB,CAAA,EAC7B;YACE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACzF;KACJ;IAED,eAAe;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3I,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;KACvF;IAED,YAAY;QACR,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;KACxG;IAED,gBAAgB;QACZ,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC;KAChD;IAED,WAAW;QACP,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;SACzC;QACD,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAChC,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;SAChD;KACJ;;;YAxGJ,SAAS,SAAC;gBACP,QAAQ,EAAE,mBAAmB;gBAC7B,2RAA6C;gBAE7C,SAAS,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,qBAAqB,CAAC;;aACtF;;;YAfQ,WAAW;YAGX,sBAAsB;;;oBAe1B,KAAK;qBAKL,KAAK;uBAML,KAAK;0BAKL,MAAM;mCAEN,MAAM;mBAGN,SAAS,SAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCfnC,qBAAqB;;;YAnBjC,QAAQ,SAAC;gBACN,OAAO,EAAE;oBACL,YAAY;oBACZ,mBAAmB;oBACnB,gBAAgB;oBAChB,eAAe;oBACf,eAAe;oBACf,qBAAqB;oBACrB,qBAAqB;iBACxB;gBACD,OAAO,EAAE;oBACL,wBAAwB;iBAC3B;gBACD,YAAY,EAAE;oBACV,wBAAwB;oBACxB,+BAA+B;oBAC/B,4BAA4B;iBAC/B;aACJ;;;AChCD;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-query-builder.js","sources":["../../../projects/ngx-lib/query-builder/common/model/operator.ts","../../../projects/ngx-lib/query-builder/common/services/type-convertor.service.ts","../../../projects/ngx-lib/query-builder/query-builder-section/query-builder-section.component.ts","../../../projects/ngx-lib/query-builder/query-builder-item/query-builder-item.component.ts","../../../projects/ngx-lib/query-builder/common/model/type-map.ts","../../../projects/ngx-lib/query-builder/common/model/operator-unit.ts","../../../projects/ngx-lib/query-builder/common/services/output-query.service.ts","../../../projects/ngx-lib/query-builder/common/model/type.ts","../../../projects/ngx-lib/query-builder/query-builder.service.ts","../../../projects/ngx-lib/query-builder/query-builder.component.ts","../../../projects/ngx-lib/query-builder/query-builder.module.ts","../../../projects/ngx-lib/query-builder/public-api.ts","../../../projects/ngx-lib/query-builder/pepperi-addons-ngx-lib-query-builder.ts"],"sourcesContent":["import { PepSmartFilterOperators, IPepSmartFilterOperator } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\nexport interface IPepQueryBuilderOperator {\r\n legacy: string, //legacy Operator \r\n smartFilter: IPepSmartFilterOperator, //smart filter operator \r\n type: PepSmartFilterType[] | null //smart filter type\r\n}\r\n\r\nconst Equals: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.Equals,\r\n type: ['boolean', 'int', 'text']\r\n};\r\n\r\nconst NotEqual: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEqual',\r\n smartFilter: PepSmartFilterOperators.NotEqual,\r\n type: null\r\n};\r\n\r\nconst LessThan: IPepQueryBuilderOperator = {\r\n legacy: '<',\r\n smartFilter: PepSmartFilterOperators.LessThan,\r\n type: null\r\n};\r\n\r\nconst GreaterThan: IPepQueryBuilderOperator = {\r\n legacy: '>',\r\n smartFilter: PepSmartFilterOperators.GreaterThan,\r\n type: null\r\n};\r\n\r\n/*\r\nconst GreaterThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '>=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.GreaterThanOrEquals,\r\n type: 'int'\r\n }\r\n};\r\n\r\nconst LessThanOrEquals: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: '<=',\r\n type: 'Integer'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.LessThanOrEquals,\r\n type: 'int',\r\n type: 'Integer'\r\n }\r\n}; */\r\n\r\nconst NumberRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.NumberRange,\r\n type: ['int']\r\n};\r\n\r\nconst Contains: IPepQueryBuilderOperator = {\r\n legacy: 'Contains',\r\n smartFilter: PepSmartFilterOperators.Contains,\r\n type: null\r\n};\r\n\r\n/*\r\nconst BeginsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'BeginsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.BeginsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst EndsWith: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'EndsWith',\r\n type: 'String'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.EndsWith,\r\n type: 'text'\r\n }\r\n};\r\n\r\nconst Before: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'Before',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.Before,\r\n type: 'date'\r\n }\r\n};\r\n\r\nconst After: IPepQueryBuilderOperator = {\r\n legacy: {\r\n operator: 'After',\r\n type: 'Date'\r\n },\r\n smartFilter: {\r\n item: PepSmartFilterOperators.After,\r\n type: 'date'\r\n }\r\n}; */\r\n\r\nconst InTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'InTheLast',\r\n smartFilter: PepSmartFilterOperators.InTheLast,\r\n type: null\r\n};\r\n\r\nconst NotInTheLast: IPepQueryBuilderOperator = {\r\n legacy: 'NotInTheLast',\r\n smartFilter: PepSmartFilterOperators.NotInTheLast,\r\n type: null\r\n};\r\n\r\nconst Today: IPepQueryBuilderOperator = {\r\n legacy: 'Today',\r\n smartFilter: PepSmartFilterOperators.Today,\r\n type: null\r\n};\r\n\r\nconst ThisWeek: IPepQueryBuilderOperator = {\r\n legacy: 'ThisWeek',\r\n smartFilter: PepSmartFilterOperators.ThisWeek,\r\n type: null\r\n};\r\n\r\nconst ThisMonth: IPepQueryBuilderOperator = {\r\n legacy: 'ThisMonth',\r\n smartFilter: PepSmartFilterOperators.ThisMonth,\r\n type: null\r\n};\r\n\r\nconst DateRange: IPepQueryBuilderOperator = {\r\n legacy: 'Between',\r\n smartFilter: PepSmartFilterOperators.DateRange,\r\n type: ['date-time']\r\n};\r\n\r\nconst DueIn: IPepQueryBuilderOperator = {\r\n legacy: 'DueIn',\r\n smartFilter: PepSmartFilterOperators.DueIn,\r\n type: null\r\n};\r\n\r\nconst NotDueIn: IPepQueryBuilderOperator = {\r\n legacy: 'NotDueIn',\r\n smartFilter: PepSmartFilterOperators.NotDueIn,\r\n type: null\r\n};\r\n\r\nconst On: IPepQueryBuilderOperator = {\r\n legacy: 'On',\r\n smartFilter: PepSmartFilterOperators.On,\r\n type: null\r\n};\r\n\r\nconst IsEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsEmpty',\r\n smartFilter: PepSmartFilterOperators.IsEmpty,\r\n type: null\r\n};\r\n\r\nconst IsNotEmpty: IPepQueryBuilderOperator = {\r\n legacy: 'IsNotEmpty',\r\n smartFilter: PepSmartFilterOperators.IsNotEmpty,\r\n type: null\r\n};\r\n\r\nconst In: IPepQueryBuilderOperator = {\r\n legacy: 'IsEqual',\r\n smartFilter: PepSmartFilterOperators.In,\r\n type: ['multi-select']\r\n};\r\n\r\n\r\nconst PepQueryBuilderOperators = [\r\n Equals,\r\n NotEqual,\r\n LessThan,\r\n // LessThanOrEquals,\r\n GreaterThan,\r\n // GreaterThanOrEquals,\r\n NumberRange,\r\n Contains,\r\n // BeginsWith,\r\n // EndsWith,\r\n // After,\r\n // Before,\r\n InTheLast,\r\n NotInTheLast,\r\n Today,\r\n ThisWeek,\r\n ThisMonth,\r\n DateRange,\r\n DueIn,\r\n NotDueIn,\r\n On,\r\n IsEmpty,\r\n IsNotEmpty,\r\n In\r\n]\r\n\r\n/**\r\n * gets a smart filter operator item\r\n * @param operator legacy operator\r\n * @param type smart filter's type\r\n * @returns smart filter operator item\r\n */\r\nexport function getSmartBuilderOperator(operator: string, type: PepSmartFilterType): IPepSmartFilterOperator | null {\r\n const smartFilterOperator = PepQueryBuilderOperators.find(item =>\r\n item.legacy === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return smartFilterOperator ? smartFilterOperator.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operator value\r\n * @param operator smart filter operator item\r\n * @param type smart filter's type\r\n * @returns legacy operator value\r\n */\r\nexport function getLegacyOperator(operator: IPepSmartFilterOperator, type: PepSmartFilterType): string | null {\r\n const legacyOperator = PepQueryBuilderOperators.find(item =>\r\n item.smartFilter === operator &&\r\n (item.type === null || item.type.includes(type))\r\n );\r\n return legacyOperator ? legacyOperator.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\n\r\n@Injectable(/*{\r\n providedIn: 'root'\r\n}*/)\r\nexport class PepTypeConvertorService {\r\n private readonly _operators: IPepOption[] = [];\r\n private readonly _booleans: IPepOption[] = [];\r\n\r\n public get operators(): IPepOption[] {\r\n return this._operators;\r\n }\r\n\r\n public get booleans(): IPepOption[] {\r\n return this._booleans;\r\n }\r\n\r\n constructor() {\r\n this.initOperators();\r\n this.initBooleans();\r\n }\r\n\r\n private initOperators() {\r\n this._operators.push({\r\n key: 'AND',\r\n value: 'And'\r\n });\r\n this._operators.push({\r\n key: 'OR',\r\n value: 'Or'\r\n });\r\n }\r\n\r\n private initBooleans() {\r\n this._booleans.push({\r\n key: 'True',\r\n value: 'True'\r\n });\r\n this._booleans.push({\r\n key: 'False',\r\n value: 'False'\r\n });\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n IPepButtonClickEvent,\r\n PepButton,\r\n} from '@pepperi-addons/ngx-lib/button';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\nimport { IPepQueryDepth } from '../common/model/structure';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-section',\r\n templateUrl: './query-builder-section.component.html',\r\n styleUrls: ['./query-builder-section.component.scss', './query-builder-section.component.theme.scss'],\r\n})\r\nexport class PepQueryBuilderSectionComponent {\r\n @Input() form: FormGroup;\r\n @Input() depth: IPepQueryDepth;\r\n @Input() hasFields = true;\r\n\r\n @Output()\r\n createSection = new EventEmitter();\r\n @Output()\r\n createItem = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n @Output()\r\n operatorChange = new EventEmitter();\r\n\r\n @ViewChild('sectionContainer', { read: ViewContainerRef, static: true }) sectionContainer: ViewContainerRef;\r\n\r\n toggleButtons: Array<PepButton>;\r\n\r\n constructor(private _typeConvertorService: PepTypeConvertorService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.initOperators();\r\n }\r\n\r\n get f() {\r\n return this.form.controls;\r\n }\r\n\r\n initOperators() {\r\n this.toggleButtons = this._typeConvertorService.operators.map((operator: IPepOption) => {\r\n return {\r\n key: operator.key,\r\n value: operator.value,\r\n callback: (event: IPepButtonClickEvent) =>\r\n this.onOperatorChanged(event)\r\n } as PepButton\r\n });\r\n }\r\n\r\n onOperatorChanged(event) {\r\n if (event?.source?.key) {\r\n this.f.operator.setValue(event.source.key);\r\n this.operatorChange.emit();\r\n }\r\n }\r\n\r\n onAddRuleClicked() {\r\n this.createItem.emit();\r\n }\r\n\r\n onAddRuleSetClicked() {\r\n this.createSection.emit();\r\n }\r\n\r\n onDeleteSectionClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { PepSmartFilterBaseField, IPepSmartFilterField } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepSmartFilterData } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\r\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\r\nimport { IPepQueryBuilderFieldContainer } from '../common/model/legacy';\r\n\r\n@Component({\r\n selector: 'pep-query-builder-item',\r\n templateUrl: './query-builder-item.component.html',\r\n styleUrls: ['./query-builder-item.component.scss'],\r\n})\r\nexport class PepQueryBuilderItemComponent {\r\n @Input() formKey: string;\r\n _fields: Array<IPepQueryBuilderFieldContainer> = [];\r\n _options: IPepOption[] = [];\r\n @Input()\r\n set fields(list: Array<IPepQueryBuilderFieldContainer>) {\r\n if (list?.length > 0) {\r\n this._fields = list;\r\n this._options = list.map(field => {\r\n return {\r\n key: field.field.id,\r\n value: field.field.name\r\n }\r\n })\r\n }\r\n }\r\n _selectedField: PepSmartFilterBaseField = null;\r\n @Input()\r\n set selected(value: IPepQueryBuilderFieldContainer) {\r\n if (value) {\r\n this._selectedField = value.field;\r\n this.queryForm.fieldType.setValue(value.fieldType);\r\n }\r\n }\r\n _filter: IPepSmartFilterData;\r\n @Input()\r\n set filter(value: IPepSmartFilterData) {\r\n if (value) {\r\n this._filter = value;\r\n }\r\n }\r\n _parentForm: FormGroup;\r\n @Input()\r\n set parentForm(value: FormGroup) {\r\n if (value) {\r\n this._parentForm = value;\r\n this.addToParentForm();\r\n }\r\n }\r\n\r\n @Output()\r\n filterChange = new EventEmitter();\r\n @Output()\r\n remove = new EventEmitter();\r\n\r\n form: FormGroup;\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public typeConvertorService: PepTypeConvertorService\r\n ) {\r\n this.setupForm(null);\r\n }\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n get f() {\r\n return this.form.controls;\r\n }\r\n\r\n get queryForm() {\r\n return (this.f.query as FormGroup).controls;\r\n }\r\n\r\n setupForm(fieldType) {\r\n this.form = this._fb.group({\r\n smart: this._fb.group({\r\n fieldId: this._fb.control(null),\r\n fieldType: this._fb.control(null),\r\n operator: this._fb.control(null),\r\n operatorUnit: this._fb.control(null),\r\n values: this._fb.group({\r\n first: this._fb.control(null),\r\n second: this._fb.control(null)\r\n })\r\n }),\r\n query: this._fb.group({\r\n fieldType: this._fb.control(fieldType)\r\n })\r\n });\r\n }\r\n\r\n addToParentForm() {\r\n this._parentForm.setControl(this.formKey, this.form);\r\n }\r\n\r\n onFieldChanged(key) {\r\n const item = this._fields.find(field => field.field.id === key);\r\n\r\n this.setupForm(item.fieldType);\r\n this.addToParentForm();\r\n\r\n /**\r\n * hack due to angular's change detection bug -\r\n * ERROR Error: There is no FormControl instance attached to form control element with name: [formControlName]\r\n */\r\n this._selectedField = null;\r\n setTimeout(() => {\r\n this._selectedField = item ? item.field : null;\r\n }, 0);\r\n\r\n this._filter = null;\r\n }\r\n\r\n onFilterChanged() {\r\n if (this.form.valid) {\r\n this.filterChange.emit();\r\n }\r\n }\r\n\r\n onDeleteItemClicked() {\r\n this.remove.emit();\r\n }\r\n\r\n\r\n\r\n}\r\n","import { PepSmartFilterType } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\nexport class PepQueryBuilderTypeMap {\r\n private map: Map<string, PepSmartFilterType>;\r\n\r\n constructor() {\r\n this.loadTypes();\r\n }\r\n\r\n private loadTypes() {\r\n this.map = new Map<string, PepSmartFilterType>();\r\n this.map.set('Bool', 'boolean');\r\n this.map.set('JsonBool', 'boolean');\r\n this.map.set('Integer', 'int');\r\n this.map.set('Double', 'int');\r\n this.map.set('String', 'text');\r\n this.map.set('Guid', 'text');\r\n this.map.set('Date', 'date');\r\n this.map.set('DateTime', 'date-time');\r\n this.map.set('MultipleStringValues', 'multi-select');\r\n }\r\n\r\n /**\r\n * Converts legacy field type to smart builder type\r\n * @param type legacy type\r\n * @returns smart builder field type\r\n */\r\n getSmartBuilderType(key: string): PepSmartFilterType | null {\r\n const item = this.map.get(key);\r\n return item ? item : null;\r\n }\r\n\r\n}\r\n\r\n","\r\nimport { IPepSmartFilterOperatorUnit, PepSmartFilterOperatorUnits } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\ninterface IPepQueryBuilderOperationUnit {\r\n legacy: string,\r\n smartFilter: IPepSmartFilterOperatorUnit,\r\n}\r\n\r\nconst Days: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Days',\r\n smartFilter: PepSmartFilterOperatorUnits.Days\r\n};\r\n\r\nconst Weeks: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Weeks',\r\n smartFilter: PepSmartFilterOperatorUnits.Weeks\r\n};\r\n\r\nconst Months: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Months',\r\n smartFilter: PepSmartFilterOperatorUnits.Months\r\n};\r\n\r\nconst Years: IPepQueryBuilderOperationUnit = {\r\n legacy: 'Years',\r\n smartFilter: PepSmartFilterOperatorUnits.Years\r\n};\r\n\r\nconst PepQueryBuilderOperationUnit = [\r\n Days,\r\n Weeks,\r\n Months,\r\n Years,\r\n];\r\n\r\n/**\r\n * gets a smart filter operation unit item\r\n * @param operationUnit legacy operation unit\r\n * @returns smart filter operation unit item\r\n */\r\nexport function getSmartBuilderOperationUnit(operationUnit: string): IPepSmartFilterOperatorUnit | null {\r\n const smartFilterOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.legacy === operationUnit);\r\n return smartFilterOperationUnit ? smartFilterOperationUnit.smartFilter : null;\r\n}\r\n\r\n/**\r\n * gets a legacy operation unit value\r\n * @param operationUnit smart filter operation unit item\r\n * @returns legacy operation unit value\r\n */\r\nexport function getLegacyOperationUnit(operationUnit: IPepSmartFilterOperatorUnit): string | null {\r\n const legacyOperationUnit: IPepQueryBuilderOperationUnit = PepQueryBuilderOperationUnit.find(unit => unit.smartFilter === operationUnit);\r\n return legacyOperationUnit ? legacyOperationUnit.legacy : null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPepQuerySection, IPepQueryItem } from '../model/legacy';\r\nimport { getLegacyOperator } from '../model/operator';\r\nimport { PepOperatorTypes } from '../model/type';\r\nimport { getLegacyOperationUnit } from '../model/operator-unit';\r\nimport { PepSmartFilterOperators } from '@pepperi-addons/ngx-lib/smart-filters';\r\n\r\n\r\n@Injectable(/*{\r\n providedIn: 'root'\r\n}*/)\r\nexport class PepOutputQueryService {\r\n private _complexIdCounter: number;\r\n private _expressionIdCounter: number;\r\n\r\n constructor() {\r\n //\r\n }\r\n\r\n /**\r\n * generates a legacy query structure \r\n * @param filters UI smart filters structure \r\n * @returns legacy query\r\n */\r\n generateQuery(filters: any) {\r\n this.initParams();\r\n\r\n return this.sectionWalk(filters);\r\n }\r\n\r\n /**\r\n * init params\r\n */\r\n private initParams() {\r\n this._complexIdCounter = 1;\r\n this._expressionIdCounter = 1;\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds legacy query structure\r\n * @param current UI object represents either a section or filter component\r\n * @returns section query data\r\n */\r\n private sectionWalk(current: any) {\r\n let section: IPepQuerySection | IPepQueryItem = null;\r\n\r\n Object.keys(current).forEach(key => {\r\n if (key.includes('item')) {\r\n section = this.addToSection(section, {\r\n ExpressionId: (this._expressionIdCounter++).toString(),\r\n ApiName: current[key].smart.fieldId,\r\n FieldType: current[key].query.fieldType,\r\n Operation: getLegacyOperator(current[key].smart.operator, current[key].smart.fieldType),\r\n Values: this.getItemValues(current[key].smart)\r\n } as IPepQueryItem, current.operator);\r\n } else if (key.includes('section')) {\r\n const childSection = this.sectionWalk(current[key]);\r\n if (childSection) {\r\n section = this.addToSection(section, childSection, current.operator);\r\n }\r\n }\r\n });\r\n\r\n return section;\r\n }\r\n\r\n /**\r\n * adds a legacy filter object to the current query structure\r\n * @param section section query data\r\n * @param item filter item\r\n * @param operator query operator\r\n * @returns \r\n */\r\n private addToSection(section: any, item: any, operator: string): any {\r\n return section ? this.createSection(section, item, operator) : item;\r\n }\r\n\r\n /**\r\n * creates a legacy complex object\r\n * @param left LeftNode object\r\n * @param right RightNode object\r\n * @param operator query operator\r\n * @returns legacy complex object\r\n */\r\n private createSection(left: any, right: any, operator: string): IPepQuerySection {\r\n return {\r\n ComplexId: (this._complexIdCounter++).toString(),\r\n LeftNode: left,\r\n RightNode: right,\r\n Operation: <PepOperatorTypes>operator\r\n }\r\n }\r\n\r\n /**\r\n * gets legacy filter values object\r\n * @param current UI filter object's values\r\n * @returns an array represents legacy values\r\n */\r\n private getItemValues(current: any) {\r\n let values: any[] = [];\r\n\r\n if (current?.values?.first) {\r\n if (current.operator === PepSmartFilterOperators.In) { //multi select \r\n values = current.values.first;\r\n } else if (\r\n current.operator === PepSmartFilterOperators.InTheLast ||\r\n current.operator === PepSmartFilterOperators.NotInTheLast ||\r\n current.operator === PepSmartFilterOperators.DueIn ||\r\n current.operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit \r\n values.push(current.values.first);\r\n if (current.operatorUnit) {\r\n values.push(getLegacyOperationUnit(current.operatorUnit));\r\n }\r\n } else {\r\n values.push(current.values.first);\r\n if (current.values.second) {\r\n values.push(current.values.second);\r\n }\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n\r\n}","export enum PepOperatorTypes {\r\n And = 'AND',\r\n Or = 'OR'\r\n}\r\n\r\n","import { Injectable, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { } from 'lodash';\r\nimport { IPepQueryBuilderField, IPepQuerySection, IPepQueryItem } from './common/model/legacy';\r\nimport {\r\n IPepSmartFilterField,\r\n IPepSmartFilterData,\r\n PepSmartFilterOperators,\r\n IPepSmartFilterOperator,\r\n PepSmartFilterType,\r\n createSmartFilter,\r\n createSmartFilterField,\r\n PepSmartFilterBaseField\r\n} from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { getSmartBuilderOperator } from './common/model/operator';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\nimport { IPepQueryBuilderFieldContainer } from './common/model/legacy';\r\nimport { PepQueryBuilderTypeMap } from './common/model/type-map';\r\nimport { getSmartBuilderOperationUnit } from './common/model/operator-unit';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { IPepQueryBuilderValues } from './common/model/filter';\r\nimport { PepOperatorTypes } from './common/model/type';\r\n\r\nconst MAX_STRUCTURE_DEPTH = 3;\r\n\r\n@Injectable()\r\nexport class PepQueryBuilderService {\r\n private _outputQuery$ = new BehaviorSubject<IPepQuerySection | IPepQueryItem>(null);\r\n\r\n private _smartFilterFields: Array<IPepQueryBuilderFieldContainer>;\r\n private _form: FormGroup;\r\n private _maxStructureDepth = MAX_STRUCTURE_DEPTH;\r\n\r\n public outputQuery$ = this._outputQuery$.asObservable();\r\n\r\n constructor(private _fb: FormBuilder, private _resolver: ComponentFactoryResolver, private _outputQueryService: PepOutputQueryService) {\r\n\r\n }\r\n\r\n set maxDepth(value) {\r\n this._maxStructureDepth = value;\r\n }\r\n\r\n get maxDepth() {\r\n return this._maxStructureDepth;\r\n }\r\n\r\n set fields(list: Array<IPepQueryBuilderField>) {\r\n this._smartFilterFields = this.convertToSmartFilterFields(list);\r\n }\r\n\r\n get hasFields(): boolean {\r\n return this._smartFilterFields?.length > 0;\r\n }\r\n\r\n set form(value: FormGroup) {\r\n this._form = value;\r\n }\r\n\r\n get form() {\r\n return this._form;\r\n }\r\n\r\n /**\r\n * builds a dynamic UI query structure\r\n * might has a different structure than the query's due to parent-child elements merge\r\n * @param query legacy query \r\n * @param containerRef reference to root element\r\n */\r\n buildQueryStructure(\r\n query: IPepQuerySection | IPepQueryItem,\r\n containerRef: ViewContainerRef\r\n ) {\r\n //update root operator \r\n if (this.hasProperty(query, 'ComplexId') &&\r\n query?.Operation &&\r\n query.Operation !== this._form.get('operator').value) {\r\n this._form.get('operator').setValue(query.Operation);\r\n }\r\n this.flatten(this._form.get('operator').value, query, containerRef, this._form, 0);\r\n }\r\n\r\n /**\r\n * checks if the object contains property\r\n * @param obj object\r\n * @param prop property name\r\n * @returns true if contains, false otherwise\r\n */\r\n private hasProperty(obj, prop) {\r\n return Object.prototype.hasOwnProperty.call(obj, prop);\r\n }\r\n\r\n /**\r\n * a recursive function dynamically builds UI filters structure\r\n * @param parentOperator legacy complex operator\r\n * @param current child legacy object (either another complex or expression type)\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n private flatten(parentOperator: string, current: IPepQuerySection | IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n if (this.hasProperty(current, 'ComplexId')) {\r\n const section = current as IPepQuerySection;\r\n if (parentOperator === current.Operation) {\r\n this.flatten(current.Operation, section.LeftNode, containerRef, parentForm, depth);\r\n this.flatten(current.Operation, section.RightNode, containerRef, parentForm, depth);\r\n } else {\r\n const result = this.createSection(section.Operation, containerRef, parentForm, depth);\r\n this.flatten(section.Operation, section.LeftNode, result.containerRef, result.parentForm, depth + 1);\r\n this.flatten(section.Operation, section.RightNode, result.containerRef, result.parentForm, depth + 1);\r\n }\r\n } else if (this.hasProperty(current, 'ExpressionId')) {\r\n this.createItem(current as IPepQueryItem, containerRef, parentForm);\r\n }\r\n }\r\n\r\n /**\r\n * creates a container object of two or more child filter items\r\n * @param operator AND/OR operator\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n * @param depth\r\n * @returns an object containing the current element and current form\r\n */\r\n createSection(operator: PepOperatorTypes, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderSectionComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n const sectionGroup = this._fb.group({\r\n operator: this._fb.control(operator)\r\n });\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('section')) { counter++; } });\r\n const formKey = `section${counter}`;\r\n parentForm.addControl(formKey, sectionGroup);\r\n\r\n componentRef.instance.form = sectionGroup;\r\n componentRef.instance.depth = {\r\n current: depth,\r\n max: this._maxStructureDepth\r\n };\r\n componentRef.instance.createSection.subscribe(() => {\r\n const section = this.createSection(PepOperatorTypes.And, componentRef.instance.sectionContainer, sectionGroup, depth + 1);\r\n this.createItem(null, section.containerRef, section.parentForm);\r\n });\r\n componentRef.instance.createItem.subscribe(() => {\r\n this.createItem(null, componentRef.instance.sectionContainer, sectionGroup);\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.operatorChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n\r\n return {\r\n containerRef: componentRef.instance.sectionContainer,\r\n parentForm: sectionGroup\r\n };\r\n }\r\n\r\n /**\r\n * creates a component represents filter item (leaf element - has no childs)\r\n * @param current filter legacy element\r\n * @param containerRef parent element\r\n * @param parentForm parent form\r\n */\r\n createItem(current: IPepQueryItem, containerRef: ViewContainerRef, parentForm: FormGroup) {\r\n const factory = this._resolver.resolveComponentFactory(PepQueryBuilderItemComponent);\r\n const componentRef = containerRef.createComponent(factory);\r\n\r\n let counter = 1;\r\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('item')) { counter++; } });\r\n const formKey = `item${counter}`;\r\n\r\n componentRef.instance.formKey = formKey;\r\n componentRef.instance.fields = this._smartFilterFields;\r\n const selectedField = this.getSelectedField(current);\r\n if (selectedField) {\r\n componentRef.instance.selected = selectedField;\r\n if (current) {\r\n componentRef.instance.filter = this.getFilter(current, selectedField.field);\r\n }\r\n }\r\n componentRef.instance.parentForm = parentForm;\r\n componentRef.instance.filterChange.subscribe(() => {\r\n this.createOutputQuery();\r\n });\r\n componentRef.instance.remove.subscribe(() => {\r\n parentForm.removeControl(formKey);\r\n componentRef.destroy();\r\n this.createOutputQuery();\r\n });\r\n }\r\n\r\n /**\r\n * creates a smart filter object\r\n * @param current filter legacy element\r\n * @param field filter's selected field\r\n * @returns smart filter object\r\n */\r\n private getFilter(current: IPepQueryItem, field: PepSmartFilterBaseField): IPepSmartFilterData | null {\r\n const operator: IPepSmartFilterOperator = getSmartBuilderOperator(current.Operation, field.type);\r\n if (operator) {\r\n const filterValues: IPepQueryBuilderValues = this.getFilterValues(current, operator, field);\r\n return createSmartFilter(\r\n current.ApiName,\r\n operator,\r\n filterValues.first,\r\n filterValues.second,\r\n filterValues.operationUnit\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * get smart filter field\r\n * @param current filter legacy element\r\n * @returns smart filter field, if not found returns the first field\r\n */\r\n private getSelectedField(current: IPepQueryItem): IPepQueryBuilderFieldContainer | null {\r\n if (current) {\r\n const item = this._smartFilterFields.find(field => field.field.id === current.ApiName);\r\n return item ? item : this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n } else {\r\n return this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\r\n }\r\n }\r\n\r\n /**\r\n * gets smart filter's values data\r\n * @param current filter legacy element\r\n * @param operator smart filter operator\r\n * @param field filter's selected field\r\n * @returns object contains the filter values data\r\n */\r\n private getFilterValues(current: IPepQueryItem, operator: IPepSmartFilterOperator, field: any) {\r\n const data: IPepQueryBuilderValues = {\r\n first: null,\r\n second: null,\r\n operationUnit: null\r\n };\r\n\r\n if (operator === PepSmartFilterOperators.In) { //multi select \r\n //filter keys don't exist on field options\r\n data.first = current?.Values?.length > 0 ? current.Values.filter(item => {\r\n return field.options.find(option => option.key === item);\r\n }) : null;\r\n } else if (\r\n operator === PepSmartFilterOperators.InTheLast ||\r\n operator === PepSmartFilterOperators.NotInTheLast ||\r\n operator === PepSmartFilterOperators.DueIn ||\r\n operator === PepSmartFilterOperators.NotDueIn\r\n ) { //operation unit\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n if (current?.Values?.length === 2) {\r\n data.operationUnit = getSmartBuilderOperationUnit(current.Values[1]);\r\n }\r\n } else {\r\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\r\n data.second = current?.Values?.length === 2 ? current.Values[1] : null;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * converts legacy fields to smart filter fields\r\n * @param fields legacy fields array\r\n * @returns smart filter fields array\r\n */\r\n private convertToSmartFilterFields(fields: Array<IPepQueryBuilderField>): Array<IPepQueryBuilderFieldContainer> {\r\n if (fields?.length > 0) {\r\n const typeMapper = new PepQueryBuilderTypeMap();\r\n\r\n return fields.map((field) => {\r\n return {\r\n field: createSmartFilterField(\r\n {\r\n id: field.FieldID,\r\n name: field.Title,\r\n options: field.OptionalValues?.map(option => {\r\n return {\r\n key: option.Key,\r\n value: option.Value\r\n }\r\n })\r\n }, typeMapper.getSmartBuilderType(field.FieldType) as PepSmartFilterType),\r\n fieldType: field.FieldType\r\n }\r\n })\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * creates a legacy output query \r\n */\r\n createOutputQuery() {\r\n if (this._form.valid) {\r\n const query = this._outputQueryService.generateQuery(this._form.value);\r\n this._outputQuery$.next(query);\r\n }\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { IPepQueryBuilderField, IPepQuerySection, IPepQueryItem } from './common/model/legacy';\r\nimport { PepQueryBuilderService } from './query-builder.service';\r\nimport { PepTypeConvertorService } from './common/services/type-convertor.service';\r\nimport { PepOutputQueryService } from './common/services/output-query.service';\r\nimport { IPepQueryDepth } from './common/model/structure';\r\nimport { PepOperatorTypes } from './common/model/type';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'pep-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n providers: [PepQueryBuilderService, PepTypeConvertorService, PepOutputQueryService]\r\n})\r\nexport class PepQueryBuilderComponent implements OnInit, OnDestroy {\r\n _query: IPepQuerySection | IPepQueryItem = null;\r\n @Input()\r\n set query(object: IPepQuerySection | IPepQueryItem) {\r\n this._query = object;\r\n this.loadQuery()\r\n }\r\n @Input()\r\n set fields(list: Array<IPepQueryBuilderField>) {\r\n this.queryBuilderService.fields = list;\r\n this.hasFields = this.queryBuilderService.hasFields;\r\n this.loadQuery();\r\n }\r\n @Input()\r\n set maxDepth(value: number) {\r\n this.queryBuilderService.maxDepth = value;\r\n }\r\n\r\n @Output()\r\n queryChange: EventEmitter<IPepQuerySection | IPepQueryItem> = new EventEmitter<IPepQuerySection | IPepQueryItem>();\r\n @Output()\r\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild('rootContainer', { static: true }) root: PepQueryBuilderSectionComponent;\r\n\r\n _formSubscription$: Subscription;\r\n _outputQuerySubscription$: Subscription;\r\n _lastFormValidStatus = true;\r\n depth: IPepQueryDepth;\r\n hasFields = false;\r\n\r\n constructor(\r\n private _fb: FormBuilder,\r\n public queryBuilderService: PepQueryBuilderService\r\n ) {\r\n this.setupForm();\r\n this.initDepth();\r\n this._formSubscription$ = this.queryBuilderService.form.valueChanges.subscribe((val) => {\r\n if (this.queryBuilderService.form.valid !== this._lastFormValidStatus) {\r\n this._lastFormValidStatus = this.queryBuilderService.form.valid;\r\n this.formValidationChange.emit(this._lastFormValidStatus);\r\n }\r\n });\r\n this._outputQuerySubscription$ = this.queryBuilderService.outputQuery$.subscribe((outputQuery) => {\r\n this.queryChange.emit(outputQuery);\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n //\r\n }\r\n\r\n setupForm() {\r\n this.queryBuilderService.form = this._fb.group({\r\n operator: this._fb.control(PepOperatorTypes.And)\r\n });\r\n }\r\n\r\n initDepth() {\r\n this.depth = {\r\n current: 0,\r\n max: this.queryBuilderService.maxDepth\r\n }\r\n }\r\n\r\n /**\r\n * builds UI query structure as soon as both the fields and query loads\r\n */\r\n loadQuery() {\r\n if (\r\n this._query &&\r\n this.queryBuilderService.hasFields &&\r\n this.root?.sectionContainer\r\n ) {\r\n this.queryBuilderService.buildQueryStructure(this._query, this.root.sectionContainer);\r\n }\r\n }\r\n\r\n onCreateSection() {\r\n const section = this.queryBuilderService.createSection(PepOperatorTypes.And, this.root.sectionContainer, this.queryBuilderService.form, 1);\r\n this.queryBuilderService.createItem(null, section.containerRef, section.parentForm);\r\n }\r\n\r\n onCreateItem() {\r\n this.queryBuilderService.createItem(null, this.root.sectionContainer, this.queryBuilderService.form);\r\n }\r\n\r\n onOperatorChange() {\r\n this.queryBuilderService.createOutputQuery();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this._formSubscription$) {\r\n this._formSubscription$.unsubscribe();\r\n }\r\n if (this._outputQuerySubscription$) {\r\n this._outputQuerySubscription$.unsubscribe();\r\n }\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\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';\r\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\r\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\r\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\r\n\r\nimport { PepQueryBuilderComponent } from './query-builder.component';\r\nimport { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';\r\nimport { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n PepSelectModule,\r\n PepButtonModule,\r\n PepGroupButtonsModule,\r\n PepSmartFiltersModule\r\n ],\r\n exports: [\r\n PepQueryBuilderComponent\r\n ],\r\n declarations: [\r\n PepQueryBuilderComponent,\r\n PepQueryBuilderSectionComponent,\r\n PepQueryBuilderItemComponent\r\n ]\r\n})\r\nexport class PepQueryBuilderModule { }\r\n","/*\r\n * Public API Surface of ngx-lib/query-builder\r\n */\r\nexport * from './query-builder.module';\r\nexport * from './query-builder.component';\r\nexport * from './query-builder.service';\r\nexport * from './common/model/legacy';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepOutputQueryService as ɵa} from './common/services/output-query.service';\nexport {PepTypeConvertorService as ɵb} from './common/services/type-convertor.service';\nexport {PepQueryBuilderItemComponent as ɵd} from './query-builder-item/query-builder-item.component';\nexport {PepQueryBuilderSectionComponent as ɵc} from './query-builder-section/query-builder-section.component';"],"names":[],"mappings":"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"}
@@ -200,7 +200,7 @@ PepRichHtmlTextareaComponent.decorators = [
200
200
  selector: 'pep-rich-html-textarea',
201
201
  template: "<ng-container [formGroup]=\"form\">\r\n <ng-template #pepTemplate let-isFormView=\"isFormView\">\r\n <div class=\"pep-textarea-container pep-report-textarea\" [ngClass]=\"{ 'stand-alone': standAlone,\r\n 'right-alignment': xAlignment == 'right', 'one-row': !isFormView && rowSpan === 1,\r\n 'pep-textarea-card-container': layoutType === 'card'}\">\r\n <pep-field-title *ngIf=\"renderTitle && isFormView\" [label]=\"label\" [mandatory]=\"mandatory\"\r\n [disabled]=\"disabled\"\r\n [maxFieldCharacters]=\"inlineMode && !disabled && !readonly ? maxFieldCharacters : 0\"\r\n [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\" [inputLength]=\"quillContent?.length\">\r\n </pep-field-title>\r\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\"\r\n [ngClass]=\"{ 'pep-table-textarea': layoutType === 'table', 'active': active, 'ignore-disabled': disabled }\">\r\n <textarea [hidden]=\"true\" matInput [formControlName]=\"key\"></textarea>\r\n\r\n <ng-container *ngIf=\"inlineMode; then inlineBlock; else notInlineBlock\"></ng-container>\r\n\r\n <ng-template #inlineBlock>\r\n <ng-container *ngTemplateOutlet=\"quilTemplate; context: {inDialog: false}\"></ng-container>\r\n </ng-template>\r\n <ng-template #notInlineBlock>\r\n\r\n <!-- We can use the quill-view-html\r\n <quill-view-html class=\"body-sm rich-text-cont \"\r\n [ngStyle]=\"{ 'text-align': xAlignment == 'right' ? 'right' : 'left' }\" [content]=\"value | pepSafeHtml\"\r\n theme=\"snow\" [style.height]=\"fieldHeight\"></quill-view-html> \r\n -->\r\n\r\n <div class=\"body-sm rich-text-cont \"\r\n [ngStyle]=\"{ 'text-align': xAlignment == 'right' ? 'right' : 'left' }\"\r\n [innerHtml]=\"value | pepSafeHtml\" [style.height]=\"fieldHeight\">\r\n </div>\r\n </ng-template>\r\n <pep-textbox-icon matSuffix [value]=\"value\" [label]=\"label\" [type]=\"controlType\"\r\n [disabled]=\"disabled || readonly\"\r\n [ngClass]=\"{ 'card-one-row-icon': layoutType === 'card' && rowSpan === 1 }\"\r\n (iconClick)=\"openDialog()\">\r\n </pep-textbox-icon>\r\n <mat-error>\r\n <span class=\"body-xs\"\r\n [title]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"\r\n [innerText]=\"mandatory && value.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"></span>\r\n </mat-error>\r\n\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"layoutType === 'form'\">\r\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: true }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"layoutType === 'card'\">\r\n <div class=\"pep-textarea-card-container card-flex-container\"\r\n [ngClass]=\"{'one-row': rowSpan === 1, 'pep-button weak': isActive && !disabled}\"\r\n [ngStyle]=\"{ '-webkit-line-clamp': rowSpan }\" [class]=\"'text-align-' + xAlignment\"\r\n (click)=\"!disabled ? cardTemplateClicked($event) : ''\" [style.height]=\"fieldHeight\">\r\n <span *ngIf=\"showTitle && label != ''\" class=\"body-xs title no-shrink\" title=\"{{ label }}\">{{ label\r\n }}:&nbsp;</span>\r\n <span [id]=\"key\" class=\"body-sm value wrap\" [innerHtml]=\"value | pepSafeHtml\"></span>\r\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button self-start\"\r\n [ngClass]=\"{'self-end' : value && value !== ''}\" mat-button>\r\n <mat-icon>\r\n <pep-icon name=\"system_edit\">\r\n </pep-icon>\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"layoutType === 'table'\">\r\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\r\n <ng-template #selectedBlock>\r\n <ng-container *ngTemplateOutlet=\"pepTemplate; context: { isFormView: false }\"></ng-container>\r\n </ng-template>\r\n <ng-template #notSelectedBlock>\r\n <ng-container *ngIf=\"value?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\r\n <ng-template #notEmptyBlock>\r\n <div class=\"pep-textarea-card-container card-flex-container one-row\">\r\n <span [id]=\"key\" class=\"wrap\" [innerHtml]=\"value | pepSafeHtml\"></span>\r\n </div>\r\n </ng-template>\r\n <ng-template #emptyBlock>\r\n <span>&nbsp;</span>\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #richTextEditorDialogTemplate>\r\n <div class=\"rich-text-editor-container\">\r\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-button icon-button md weak pull-right flip\">\r\n <mat-icon>\r\n <pep-icon name=\"system_close\">\r\n </pep-icon>\r\n </mat-icon>\r\n </button>\r\n <ng-container *ngTemplateOutlet=\"quilTemplate; context: {inDialog: true}\"></ng-container>\r\n <div mat-dialog-actions class=\" pep-border-top\">\r\n <div class=\"pep-spacing-element-negative\">\r\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-spacing-element pep-button md weak\">\r\n {{'ACTIONS.CANCEL' | translate}}\r\n </button>\r\n <button mat-button [mat-dialog-close]=\"quillContentDialog || ''\" [disabled]=\"disabled\"\r\n class=\"pep-spacing-element pep-button md strong \">\r\n {{'ACTIONS.SAVE' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #quilTemplate let-inDialog=\"inDialog\">\r\n <quill-editor id=\"{{inDialog ? 'quill-editor-dialog' : 'quill-editor-inline'}}\"\r\n [class]=\"inDialog ? 'dialog-quill' : 'inline-quill'\" [ngClass]=\"{ 'rich-text-cont': !inDialog }\"\r\n placeholder=\"{{'RICH_TEXTAREA.HINT' | translate}}\" [ngModel]=\"inDialog ? quillContentDialog : quillContent\"\r\n [sanitize]=\"true\" [readOnly]=\"disabled\" [maxLength]=\"maxFieldCharacters\" [required]=\"mandatory\"\r\n (onEditorCreated)=\"onEditorCreated($event, inDialog)\" (onContentChanged)=\"onContentChanged($event, inDialog)\"\r\n (onBlur)=\"onBlur($event, inDialog)\" (onFocus)=\"onFocus($event, inDialog)\" theme=\"\">\r\n <div *ngIf=\"!disabled\" quill-editor-toolbar>\r\n <div class=\"pep-spacing-element-negative\">\r\n <span class=\"ql-formats\">\r\n <select *ngIf=\"toolbarOptions?.font\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-font select-arrow\">\r\n <option selected></option>\r\n <option value=\"serif\"></option>\r\n <option value=\"monospace\"></option>\r\n </select>\r\n <select *ngIf=\"toolbarOptions?.size\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-size select-arrow\">\r\n <option value=\"small\"></option>\r\n <option selected></option>\r\n <option value=\"large\"></option>\r\n <option value=\"huge\"></option>\r\n </select>\r\n </span>\r\n <span class=\"ql-formats\">\r\n <select *ngIf=\"toolbarOptions?.header\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-header select-arrow\">\r\n <option value=\"1\"></option>\r\n <option value=\"2\"></option>\r\n <option value=\"3\"></option>\r\n <!-- \r\n <option value=\"4\"></option>\r\n <option value=\"5\"></option>\r\n <option value=\"6\"></option> \r\n -->\r\n <option value=\"false\" selected></option>\r\n </select>\r\n </span>\r\n <!-- <hr class=\"vertical-separator\" /> -->\r\n <span class=\"ql-formats\">\r\n <button mat-button *ngIf=\"toolbarOptions?.bold\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-bold\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.italic\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-italic\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.underline\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-underline\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.strike\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-strike\"></button>\r\n </span>\r\n <span class=\"ql-formats\">\r\n <button mat-button *ngIf=\"toolbarOptions?.link\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-link\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.image\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-image\"></button>\r\n </span>\r\n <!-- <hr class=\"vertical-separator\" /> -->\r\n <span class=\"ql-formats\">\r\n <button mat-button *ngIf=\"toolbarOptions?.ordered\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-list\" value=\"ordered\"></button>\r\n <button mat-button *ngIf=\"toolbarOptions?.bullet\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-list\" value=\"bullet\"></button>\r\n </span>\r\n <!-- <hr class=\"vertical-separator\" /> -->\r\n <span class=\"ql-formats\">\r\n <select *ngIf=\"toolbarOptions?.color\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-color\"></select>\r\n <select *ngIf=\"toolbarOptions?.background\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-background\"></select>\r\n </span>\r\n <span class=\"ql-formats\">\r\n <select *ngIf=\"toolbarOptions?.align\"\r\n class=\"pep-spacing-element pep-button icon-button md weak ql-align\">\r\n <option selected></option>\r\n <option value=\"center\"></option>\r\n <option value=\"right\"></option>\r\n <option value=\"justify\"></option>\r\n </select>\r\n </span>\r\n </div>\r\n </div>\r\n </quill-editor>\r\n</ng-template>",
202
202
  changeDetection: ChangeDetectionStrategy.OnPush,
203
- styles: [":host{height:inherit;display:block}.pep-textarea-container ::ng-deep.mat-form-field-infix,.pepperi-textarea-container ::ng-deep.mat-form-field-infix{margin-left:calc(.75rem * -1);margin-left:calc(var(--pep-spacing-md, .75rem) * -1)}.pep-textarea-container.right-alignment ::ng-deep.mat-form-field-infix,.pepperi-textarea-container.right-alignment ::ng-deep.mat-form-field-infix{margin-left:unset;margin-right:calc(.75rem * -1);margin-right:calc(var(--pep-spacing-md, .75rem) * -1)}.vertical-separator{display:none}"]
203
+ styles: [":host{height:inherit;display:block}.pep-textarea-container ::ng-deep.mat-form-field-infix,.pepperi-textarea-container ::ng-deep.mat-form-field-infix{margin-left:calc(.75rem * -1);margin-left:calc(var(--pep-spacing-md, .75rem) * -1)}.pep-textarea-container.right-alignment ::ng-deep.mat-form-field-infix,.pepperi-textarea-container.right-alignment ::ng-deep.mat-form-field-infix{margin-left:unset;margin-right:calc(.75rem * -1);margin-right:calc(var(--pep-spacing-md, .75rem) * -1)}.vertical-separator{display:none}", ".mat-form-field.mat-form-field-disabled .mat-form-field-flex{color:#1a1a1a;color:hsl(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%))}.right-alignment quill-editor.inline-quill .ql-container .ql-editor{padding-right:unset;padding-left:calc(.5rem + 1rem);padding-left:calc(var(--pep-spacing-sm, .5rem) + 1rem)}quill-editor.inline-quill .ql-container .ql-editor{width:calc(100% + 1rem);padding-right:calc(.5rem + 1rem);padding-right:calc(var(--pep-spacing-sm, .5rem) + 1rem)}quill-editor .ql-toolbar{display:flex;padding:0!important;border:unset}quill-editor .ql-toolbar .ql-transparent{opacity:.9}quill-editor .ql-toolbar .ql-formats{margin-right:0!important;margin-bottom:.5rem}quill-editor .ql-toolbar .ql-formats button{height:2.5rem}quill-editor .ql-toolbar .ql-formats button svg{width:1.25rem!important;float:unset!important}quill-editor .ql-toolbar .ql-formats button.ql-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}quill-editor .ql-toolbar .ql-formats button.ql-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%))}quill-editor .ql-toolbar .ql-formats button.ql-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%))}quill-editor .ql-toolbar .ql-formats button: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}quill-editor .ql-toolbar .ql-formats button: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%))}quill-editor .ql-toolbar .ql-formats button: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%))}quill-editor .ql-toolbar .ql-formats button: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}quill-editor .ql-toolbar .ql-formats button: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%))}quill-editor .ql-toolbar .ql-formats button: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%))}quill-editor .ql-toolbar .ql-formats .ql-stroke{stroke:rgba(26,26,26,.8);stroke:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.8)}quill-editor .ql-toolbar .ql-formats .ql-fill{fill:rgba(26,26,26,.8);fill:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.8)}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item{outline:unset!important;width:100%;height:auto;padding:.25rem .5rem;padding:var(--pep-spacing-xs,.25rem) var(--pep-spacing-sm,.5rem);display:grid}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item: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)}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item: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);background:rgba(26,26,26,.24)!important;background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.24)!important}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item: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%))}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item: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}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item:disabled:after{border:unset}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item: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)}quill-editor .ql-toolbar .ql-formats .ql-picker:not(.ql-color-picker) .ql-picker-options .ql-picker-item: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)}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-color-picker,quill-editor .ql-toolbar .ql-formats .ql-picker.ql-icon-picker{width:unset}quill-editor .ql-toolbar .ql-formats .ql-picker .ql-picker-label{outline:none;display:grid;grid-auto-flow:column;align-items:center;line-height:1rem;border:unset}quill-editor .ql-toolbar .ql-formats .ql-picker .ql-picker-label svg{width:1.5rem}quill-editor .ql-toolbar .ql-formats .ql-picker .ql-picker-label:after{content:url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgaWQ9InN2ZzQiCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDI0IDI0IgogICBoZWlnaHQ9IjE2IgogICB3aWR0aD0iMTYiPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzOCIgLz4KICA8cGF0aAogICAgIGlkPSJwYXRoMiIKICAgICBkPSJNNS44MDAzMjE0OCw5LjI4Njc0MzU0IEwxMS4yNTQyODI0LDEzLjIwMjc1ODMgQzExLjY2NjEzMDksMTMuNTg1MDgzIDEyLjMzMzg2OTEsMTMuNTg1MDgzIDEyLjc0NTcxNzYsMTMuMjAyNzU4MyBMMTguMTk5Njc4NSw5LjI4Njc0MzU0IEMxOC42MTE1MjcsOC45MDQ0MTg4MiAxOS4yNzkyNjUyLDguOTA0NDE4ODIgMTkuNjkxMTEzNyw5LjI4Njc0MzU0IEMyMC4xMDI5NjIxLDkuNjY5MDY4MjYgMjAuMTAyOTYyMSwxMC4yODg5MzkxIDE5LjY5MTExMzcsMTAuNjcxMjYzOCBMMTMuNDkxNDM1MSwxNi40MjY1MTI5IEMxMi42Njc3MzgzLDE3LjE5MTE2MjQgMTEuMzMyMjYxNywxNy4xOTExNjI0IDEwLjUwODU2NDksMTYuNDI2NTEyOSBMNC4zMDg4ODYzMywxMC42NzEyNjM4IEMzLjg5NzAzNzg5LDEwLjI4ODkzOTEgMy44OTcwMzc4OSw5LjY2OTA2ODI2IDQuMzA4ODg2MzMsOS4yODY3NDM1NCBDNC43MjA3MzQ3OCw4LjkwNDQxODgyIDUuMzg4NDczMDMsOC45MDQ0MTg4MiA1LjgwMDMyMTQ4LDkuMjg2NzQzNTQgWiIKICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgICAgZmlsbC1vcGFjaXR5PSIuNSIgLz4KPC9zdmc+Cg==\");cursor:pointer;display:grid;height:inherit;justify-content:center;align-content:center}quill-editor .ql-toolbar .ql-formats .ql-picker.select-arrow .ql-picker-label:before{line-height:unset}quill-editor .ql-toolbar .ql-formats .ql-picker.select-arrow .ql-picker-label svg{display:none}quill-editor .ql-toolbar .ql-formats .ql-picker .ql-picker-options{border-radius:.25rem;border-radius:var(--pep-border-radius-md,.25rem);box-sizing:content-box;padding:unset;box-shadow:0 .25rem .5rem 0 rgba(26,26,26,.32);box-shadow:var(--pep-shadow-sm-offset,0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.32);border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-color-picker .ql-picker-options{padding:.25rem .5rem;padding:var(--pep-spacing-xs,.25rem) var(--pep-spacing-sm,.5rem);width:140px}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-color-picker .ql-picker-options .ql-picker-item:focus,quill-editor .ql-toolbar .ql-formats .ql-picker.ql-color-picker .ql-picker-options:focus{outline:unset!important}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded{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}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded: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%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded: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%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#1766a6;stroke:hsl(var(--pep-color-text-link-h,207),var(--pep-color-text-link-s,76%),var(--pep-color-text-link-l,37%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#1766a6;fill:hsl(var(--pep-color-text-link-h,207),var(--pep-color-text-link-s,76%),var(--pep-color-text-link-l,37%))}quill-editor .ql-toolbar .ql-formats .ql-picker.ql-expanded .ql-picker-label{border:unset}quill-editor .ql-toolbar .vertical-separator{border-color:rgba(26,26,26,.24);border-color:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.24)}@media (max-width:568px){quill-editor .ql-toolbar .ql-list{display:none}}@media (max-width:599px){quill-editor .ql-toolbar .ql-italic,quill-editor .ql-toolbar .ql-underline{display:none}}@media (max-width:460px){quill-editor .ql-toolbar .ql-header,quill-editor .ql-toolbar .ql-image,quill-editor .ql-toolbar .ql-italic,quill-editor .ql-toolbar .ql-list,quill-editor .ql-toolbar .ql-underline{display:none}}quill-editor .ql-container{height:16rem;border:unset;border-top:1px solid rgba(26,26,26,.24)!important;border-top:1px solid hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.24)!important}quill-editor .ql-container .ql-editor{padding:.5rem 0;padding:var(--pep-spacing-sm,.5rem) 0}quill-editor .ql-container .ql-editor.ql-blank:before{right:0;left:0}quill-editor .ql-container .ql-tooltip.ql-flip{left:0!important}"]
204
204
  },] }
205
205
  ];
206
206
  PepRichHtmlTextareaComponent.ctorParameters = () => [
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-rich-html-textarea.js","sources":["../../../projects/ngx-lib/rich-html-textarea/rich-html-textarea.component.ts","../../../projects/ngx-lib/rich-html-textarea/rich-html-textarea.module.ts","../../../projects/ngx-lib/rich-html-textarea/public-api.ts","../../../projects/ngx-lib/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n ElementRef,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n PepLayoutType,\r\n PepCustomizationService,\r\n PepHorizontalAlignment,\r\n DEFAULT_HORIZONTAL_ALIGNMENT,\r\n PepRichHtmlTextareaField,\r\n} from '@pepperi-addons/ngx-lib';\r\nimport {\r\n PepDialogService,\r\n PepDialogData,\r\n} from '@pepperi-addons/ngx-lib/dialog';\r\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\r\n\r\nexport interface IPepRichHtmlTextareaToolbarOptions {\r\n font?: any;\r\n size?: any;\r\n header?: any;\r\n bold?: any;\r\n italic?: any;\r\n underline?: any;\r\n strike?: any;\r\n link?: any;\r\n image?: any;\r\n ordered?: any;\r\n bullet?: any;\r\n color?: any;\r\n background?: any;\r\n align?: any;\r\n}\r\n\r\n@Component({\r\n selector: 'pep-rich-html-textarea',\r\n templateUrl: './rich-html-textarea.component.html',\r\n styleUrls: ['./rich-html-textarea.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PepRichHtmlTextareaComponent\r\n implements OnInit, OnChanges, OnDestroy {\r\n @Input() key = '';\r\n @Input() value = '';\r\n @Input() label = '';\r\n @Input() mandatory = false;\r\n @Input() disabled = false;\r\n @Input() readonly = false;\r\n @Input() maxFieldCharacters: number;\r\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\r\n\r\n private _rowSpan = 1;\r\n @Input()\r\n set rowSpan(value) {\r\n this._rowSpan = value;\r\n this.setFieldHeight();\r\n }\r\n get rowSpan(): number {\r\n return this._rowSpan;\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 = 'richhtmltextarea';\r\n\r\n @Input() form: FormGroup = null;\r\n @Input() isActive = false;\r\n @Input() showTitle = true;\r\n @Input() renderTitle = true;\r\n\r\n private _layoutType: PepLayoutType = 'form';\r\n @Input()\r\n set layoutType(value: PepLayoutType) {\r\n this._layoutType = value;\r\n this.setFieldHeight();\r\n }\r\n get layoutType(): PepLayoutType {\r\n return this._layoutType;\r\n }\r\n\r\n @Input() inlineMode = false;\r\n\r\n protected _toolbarOptions: IPepRichHtmlTextareaToolbarOptions;\r\n @Input()\r\n get toolbarOptions(): IPepRichHtmlTextareaToolbarOptions {\r\n return this._toolbarOptions;\r\n }\r\n set toolbarOptions(options: IPepRichHtmlTextareaToolbarOptions) {\r\n if (options) {\r\n this._toolbarOptions = options;\r\n }\r\n }\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @ViewChild('richTextEditorDialogTemplate', { read: TemplateRef })\r\n richTextEditorDialogTemplate: TemplateRef<any>;\r\n quillContent = '';\r\n quillContentDialog = '';\r\n\r\n fieldHeight = '';\r\n standAlone = false;\r\n active = false;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private dialogService: PepDialogService,\r\n private customizationService: PepCustomizationService,\r\n private renderer: Renderer2,\r\n private element: ElementRef\r\n ) {\r\n this.toolbarOptions = this.getDefaultToolbarOptions();\r\n }\r\n\r\n private setFieldHeight(): void {\r\n this.fieldHeight = this.customizationService.calculateFieldHeight(\r\n this.layoutType,\r\n this.rowSpan,\r\n this.standAlone\r\n );\r\n }\r\n\r\n private setDefaultForm(): void {\r\n const pepField = new PepRichHtmlTextareaField({\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 maxFieldCharacters: this.maxFieldCharacters,\r\n });\r\n this.form = this.customizationService.getDefaultFromGroup(pepField);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.form === null) {\r\n this.standAlone = true;\r\n this.setFieldHeight();\r\n this.setDefaultForm();\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.quillContent = this.value;\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.standAlone) {\r\n this.setDefaultForm();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //\r\n }\r\n\r\n getDefaultToolbarOptions(): IPepRichHtmlTextareaToolbarOptions {\r\n return {\r\n font: false,\r\n size: false,\r\n header: true,\r\n bold: true,\r\n italic: true,\r\n underline: true,\r\n strike: false,\r\n link: true,\r\n image: true,\r\n ordered: true,\r\n bullet: true,\r\n color: true,\r\n background: false,\r\n align: true,\r\n };\r\n }\r\n\r\n changeValue(value: any): void {\r\n if (value !== this.value) {\r\n this.value = value;\r\n this.quillContent = value;\r\n this.customizationService.updateFormFieldValue(\r\n this.form,\r\n this.key,\r\n value\r\n );\r\n this.valueChange.emit(value);\r\n }\r\n }\r\n\r\n cardTemplateClicked(event: any): void {\r\n this.openDialog();\r\n }\r\n\r\n openDialog(): void {\r\n const config = this.dialogService.getDialogConfig(\r\n {\r\n // minWidth: '50vw',\r\n // maxWidth: '90vw',\r\n // maxHeight: '90vh',\r\n },\r\n 'large'\r\n );\r\n\r\n // If disabled open regular modal as html mode.\r\n if (this.disabled || this.readonly) {\r\n const data = new PepDialogData({\r\n title: this.label,\r\n content: this.quillContent,\r\n showFooter: false,\r\n });\r\n this.dialogService.openDefaultDialog(data, config);\r\n } else {\r\n this.quillContentDialog = this.quillContent;\r\n const dialogRef = this.dialogService.openDialog(\r\n this.richTextEditorDialogTemplate,\r\n {},\r\n config\r\n );\r\n\r\n dialogRef.afterClosed().subscribe((value) => {\r\n if (value !== undefined && value !== null) {\r\n this.changeValue(value);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Init quillContent in case that there are html tags...\r\n onEditorCreated(quill: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.quillContent = quill.getText();\r\n }\r\n }\r\n\r\n onContentChanged(obj: any, inDialog: boolean): void {\r\n if (inDialog) {\r\n this.quillContentDialog = obj.html;\r\n } else {\r\n this.quillContent = obj.html;\r\n }\r\n }\r\n\r\n onBlur(obj: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.active = false;\r\n this.changeValue(this.quillContent);\r\n }\r\n }\r\n\r\n onFocus(obj: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.active = true;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\n\r\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\r\nimport {\r\n PepIconModule,\r\n PepIconRegistry,\r\n pepIconSystemEdit,\r\n pepIconSystemClose,\r\n} from '@pepperi-addons/ngx-lib/icon';\r\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\r\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\r\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\r\n\r\nimport { QuillModule } from 'ngx-quill';\r\n\r\nimport { PepRichHtmlTextareaComponent } from './rich-html-textarea.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n // Material modules,\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n // External modules\r\n QuillModule.forRoot(),\r\n // ngx-lib modules\r\n PepNgxLibModule,\r\n PepIconModule,\r\n PepFieldTitleModule,\r\n PepTextboxIconModule,\r\n PepDialogModule,\r\n ],\r\n exports: [PepRichHtmlTextareaComponent],\r\n declarations: [PepRichHtmlTextareaComponent],\r\n})\r\nexport class PepRichHtmlTextareaModule {\r\n constructor(private pepIconRegistry: PepIconRegistry) {\r\n this.pepIconRegistry.registerIcons([\r\n pepIconSystemEdit,\r\n pepIconSystemClose,\r\n ]);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-lib/rich-html-textarea\r\n */\r\nexport * from './rich-html-textarea.module';\r\nexport * from './rich-html-textarea.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-rich-html-textarea.js","sources":["../../../projects/ngx-lib/rich-html-textarea/rich-html-textarea.component.ts","../../../projects/ngx-lib/rich-html-textarea/rich-html-textarea.module.ts","../../../projects/ngx-lib/rich-html-textarea/public-api.ts","../../../projects/ngx-lib/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n ElementRef,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n PepLayoutType,\r\n PepCustomizationService,\r\n PepHorizontalAlignment,\r\n DEFAULT_HORIZONTAL_ALIGNMENT,\r\n PepRichHtmlTextareaField,\r\n} from '@pepperi-addons/ngx-lib';\r\nimport {\r\n PepDialogService,\r\n PepDialogData,\r\n} from '@pepperi-addons/ngx-lib/dialog';\r\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\r\n\r\nexport interface IPepRichHtmlTextareaToolbarOptions {\r\n font?: any;\r\n size?: any;\r\n header?: any;\r\n bold?: any;\r\n italic?: any;\r\n underline?: any;\r\n strike?: any;\r\n link?: any;\r\n image?: any;\r\n ordered?: any;\r\n bullet?: any;\r\n color?: any;\r\n background?: any;\r\n align?: any;\r\n}\r\n\r\n@Component({\r\n selector: 'pep-rich-html-textarea',\r\n templateUrl: './rich-html-textarea.component.html',\r\n styleUrls: ['./rich-html-textarea.component.scss', './rich-html-textarea.component.theme.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PepRichHtmlTextareaComponent\r\n implements OnInit, OnChanges, OnDestroy {\r\n @Input() key = '';\r\n @Input() value = '';\r\n @Input() label = '';\r\n @Input() mandatory = false;\r\n @Input() disabled = false;\r\n @Input() readonly = false;\r\n @Input() maxFieldCharacters: number;\r\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\r\n\r\n private _rowSpan = 1;\r\n @Input()\r\n set rowSpan(value) {\r\n this._rowSpan = value;\r\n this.setFieldHeight();\r\n }\r\n get rowSpan(): number {\r\n return this._rowSpan;\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 = 'richhtmltextarea';\r\n\r\n @Input() form: FormGroup = null;\r\n @Input() isActive = false;\r\n @Input() showTitle = true;\r\n @Input() renderTitle = true;\r\n\r\n private _layoutType: PepLayoutType = 'form';\r\n @Input()\r\n set layoutType(value: PepLayoutType) {\r\n this._layoutType = value;\r\n this.setFieldHeight();\r\n }\r\n get layoutType(): PepLayoutType {\r\n return this._layoutType;\r\n }\r\n\r\n @Input() inlineMode = false;\r\n\r\n protected _toolbarOptions: IPepRichHtmlTextareaToolbarOptions;\r\n @Input()\r\n get toolbarOptions(): IPepRichHtmlTextareaToolbarOptions {\r\n return this._toolbarOptions;\r\n }\r\n set toolbarOptions(options: IPepRichHtmlTextareaToolbarOptions) {\r\n if (options) {\r\n this._toolbarOptions = options;\r\n }\r\n }\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @ViewChild('richTextEditorDialogTemplate', { read: TemplateRef })\r\n richTextEditorDialogTemplate: TemplateRef<any>;\r\n quillContent = '';\r\n quillContentDialog = '';\r\n\r\n fieldHeight = '';\r\n standAlone = false;\r\n active = false;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private dialogService: PepDialogService,\r\n private customizationService: PepCustomizationService,\r\n private renderer: Renderer2,\r\n private element: ElementRef\r\n ) {\r\n this.toolbarOptions = this.getDefaultToolbarOptions();\r\n }\r\n\r\n private setFieldHeight(): void {\r\n this.fieldHeight = this.customizationService.calculateFieldHeight(\r\n this.layoutType,\r\n this.rowSpan,\r\n this.standAlone\r\n );\r\n }\r\n\r\n private setDefaultForm(): void {\r\n const pepField = new PepRichHtmlTextareaField({\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 maxFieldCharacters: this.maxFieldCharacters,\r\n });\r\n this.form = this.customizationService.getDefaultFromGroup(pepField);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.form === null) {\r\n this.standAlone = true;\r\n this.setFieldHeight();\r\n this.setDefaultForm();\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.quillContent = this.value;\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.standAlone) {\r\n this.setDefaultForm();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //\r\n }\r\n\r\n getDefaultToolbarOptions(): IPepRichHtmlTextareaToolbarOptions {\r\n return {\r\n font: false,\r\n size: false,\r\n header: true,\r\n bold: true,\r\n italic: true,\r\n underline: true,\r\n strike: false,\r\n link: true,\r\n image: true,\r\n ordered: true,\r\n bullet: true,\r\n color: true,\r\n background: false,\r\n align: true,\r\n };\r\n }\r\n\r\n changeValue(value: any): void {\r\n if (value !== this.value) {\r\n this.value = value;\r\n this.quillContent = value;\r\n this.customizationService.updateFormFieldValue(\r\n this.form,\r\n this.key,\r\n value\r\n );\r\n this.valueChange.emit(value);\r\n }\r\n }\r\n\r\n cardTemplateClicked(event: any): void {\r\n this.openDialog();\r\n }\r\n\r\n openDialog(): void {\r\n const config = this.dialogService.getDialogConfig(\r\n {\r\n // minWidth: '50vw',\r\n // maxWidth: '90vw',\r\n // maxHeight: '90vh',\r\n },\r\n 'large'\r\n );\r\n\r\n // If disabled open regular modal as html mode.\r\n if (this.disabled || this.readonly) {\r\n const data = new PepDialogData({\r\n title: this.label,\r\n content: this.quillContent,\r\n showFooter: false,\r\n });\r\n this.dialogService.openDefaultDialog(data, config);\r\n } else {\r\n this.quillContentDialog = this.quillContent;\r\n const dialogRef = this.dialogService.openDialog(\r\n this.richTextEditorDialogTemplate,\r\n {},\r\n config\r\n );\r\n\r\n dialogRef.afterClosed().subscribe((value) => {\r\n if (value !== undefined && value !== null) {\r\n this.changeValue(value);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Init quillContent in case that there are html tags...\r\n onEditorCreated(quill: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.quillContent = quill.getText();\r\n }\r\n }\r\n\r\n onContentChanged(obj: any, inDialog: boolean): void {\r\n if (inDialog) {\r\n this.quillContentDialog = obj.html;\r\n } else {\r\n this.quillContent = obj.html;\r\n }\r\n }\r\n\r\n onBlur(obj: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.active = false;\r\n this.changeValue(this.quillContent);\r\n }\r\n }\r\n\r\n onFocus(obj: any, inDialog: boolean): void {\r\n if (!inDialog) {\r\n this.active = true;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\n\r\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\r\nimport {\r\n PepIconModule,\r\n PepIconRegistry,\r\n pepIconSystemEdit,\r\n pepIconSystemClose,\r\n} from '@pepperi-addons/ngx-lib/icon';\r\nimport { PepTextboxIconModule } from '@pepperi-addons/ngx-lib/textbox-icon';\r\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\r\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\r\n\r\nimport { QuillModule } from 'ngx-quill';\r\n\r\nimport { PepRichHtmlTextareaComponent } from './rich-html-textarea.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n // Material modules,\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n // External modules\r\n QuillModule.forRoot(),\r\n // ngx-lib modules\r\n PepNgxLibModule,\r\n PepIconModule,\r\n PepFieldTitleModule,\r\n PepTextboxIconModule,\r\n PepDialogModule,\r\n ],\r\n exports: [PepRichHtmlTextareaComponent],\r\n declarations: [PepRichHtmlTextareaComponent],\r\n})\r\nexport class PepRichHtmlTextareaModule {\r\n constructor(private pepIconRegistry: PepIconRegistry) {\r\n this.pepIconRegistry.registerIcons([\r\n pepIconSystemEdit,\r\n pepIconSystemClose,\r\n ]);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-lib/rich-html-textarea\r\n */\r\nexport * from './rich-html-textarea.module';\r\nexport * from './rich-html-textarea.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -189,7 +189,7 @@ PepSelectComponent.decorators = [
189
189
  selector: 'pep-select',
190
190
  template: "<ng-container [formGroup]=\"form\">\r\n <ng-template #pepTemplate>\r\n <ng-container *ngIf=\"type == 'multi'; then multiSelectBlock; else regularSelectBlock\"></ng-container>\r\n <ng-template #regularSelectBlock>\r\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\r\n <mat-select #select [required]=\"mandatory ? mandatory : undefined\" matInput disableOptionCentering\r\n class=\"body-sm text-align-{{ xAlignment }}\" [id]=\"key\"\r\n [ngClass]=\"{'right-alignment': xAlignment === 'right'}\"\r\n [placeholder]=\"disabled || readonly ? '' : ('SELECT.HINT' | translate)\"\r\n [(ngModel)]=\"selectedValueModel\" [ngModelOptions]=\"{standalone: true}\" [disabled]=\"disabled\"\r\n (selectionChange)=\"selectionChange($event)\" (openedChange)=\"openedChange($event)\"\r\n title=\"{{ fieldFormattedValue }}\">\r\n <mat-option *ngIf=\"emptyOption\" value=\"\" [title]=\"'LIST.NONE' | translate\">{{ 'LIST.NONE' |\r\n translate }}</mat-option>\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option.key\" [title]=\"option.value\">{{\r\n option.value }}</mat-option>\r\n </mat-select>\r\n <mat-error>\r\n <span class=\"body-xs\" [title]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"\r\n [innerText]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"></span>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n <ng-template #multiSelectBlock>\r\n <mat-form-field appearance=\"outline\" dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\r\n <mat-select #select multiple [required]=\"mandatory ? mandatory : undefined\" matInput\r\n disableOptionCentering class=\"body-sm text-align-{{ xAlignment }}\" [id]=\"key\"\r\n [ngClass]=\"{'right-alignment': xAlignment === 'right'}\"\r\n [placeholder]=\"disabled || readonly ? '' : ('SELECT.HINT' | translate)\"\r\n [(ngModel)]=\"selectedValuesModel\" [ngModelOptions]=\"{standalone: true}\" [disabled]=\"disabled\"\r\n (openedChange)=\"openedChange($event)\" title=\"{{ fieldFormattedValue }}\">\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option.key\" [title]=\"option.value\">{{\r\n option.value }}</mat-option>\r\n </mat-select>\r\n <mat-error><span class=\"body-xs\" [title]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"\r\n [innerText]=\"'MESSAGES.ERROR_IS_REQUIRED' | translate: {field: label}\"> </span>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"layoutType === 'form'\">\r\n <pep-field-title *ngIf=\"!parentFieldKey && renderTitle\" [label]=\"label\" [mandatory]=\"mandatory\"\r\n [disabled]=\"disabled\" [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\">\r\n </pep-field-title>\r\n <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"layoutType === 'card'\">\r\n <ng-container *ngIf=\"isInEditMode; then editBlock; else readOnlyBlock\"></ng-container>\r\n <ng-template #editBlock>\r\n <div [ngClass]=\"{'one-row': rowSpan === 1}\">\r\n <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n <ng-template #readOnlyBlock>\r\n <div class=\"pep-card-input card-flex-container\"\r\n [ngClass]=\"{'one-row': rowSpan === 1, 'pep-button weak': isActive && !disabled}\"\r\n [class]=\"'text-align-' + xAlignment\" (click)=\"!disabled ? cardTemplateClicked($event) : ''\">\r\n <span *ngIf=\"showTitle && label != ''\" class=\"body-xs title\" title=\"{{ label }}\">{{ label\r\n }}&nbsp;</span>\r\n <span [id]=\"key\" title=\"{{ fieldFormattedValue }}\" class=\"body-sm value\">{{ fieldFormattedValue\r\n }}</span>\r\n <button *ngIf=\"isActive && !disabled\" class=\"pep-button weak card-edit-button\" mat-button>\r\n <mat-icon>\r\n <pep-icon name=\"system_edit\">\r\n </pep-icon>\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"layoutType === 'table'\">\r\n <ng-container *ngIf=\"isActive && !disabled; then selectedBlock; else notSelectedBlock\"></ng-container>\r\n <ng-template #selectedBlock>\r\n <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\r\n </ng-template>\r\n <ng-template #notSelectedBlock>\r\n <span [id]=\"key\" class=\"body-sm pep-report-input\" [ngClass]=\"{readonly: disabled}\"\r\n title=\"{{ fieldFormattedValue }}\">{{ fieldFormattedValue }}</span>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>",
191
191
  changeDetection: ChangeDetectionStrategy.OnPush,
192
- styles: [":host{height:inherit;display:grid}:host>*{align-self:center}"]
192
+ styles: [":host{height:inherit;display:grid}:host>*{align-self:center}", ""]
193
193
  },] }
194
194
  ];
195
195
  PepSelectComponent.ctorParameters = () => [
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-select.js","sources":["../../../projects/ngx-lib/select/select.component.ts","../../../projects/ngx-lib/select/select.module.ts","../../../projects/ngx-lib/select/public-api.ts","../../../projects/ngx-lib/select/pepperi-addons-ngx-lib-select.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport {\r\n PepLayoutType,\r\n PepCustomizationService,\r\n PepHorizontalAlignment,\r\n DEFAULT_HORIZONTAL_ALIGNMENT,\r\n PepSelectFieldType,\r\n PepSelectField,\r\n IPepOption,\r\n} from '@pepperi-addons/ngx-lib';\r\n\r\n@Component({\r\n selector: 'pep-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PepSelectComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input() key = '';\r\n @Input() value = '';\r\n @Input() label = '';\r\n @Input() type: PepSelectFieldType = 'select';\r\n @Input() mandatory = false;\r\n @Input() disabled = false;\r\n @Input() readonly = false;\r\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\r\n @Input() rowSpan = 1;\r\n @Input() options: Array<IPepOption> = [];\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 = 'select';\r\n\r\n // @Input() field: PepFieldBase;\r\n @Input() form: FormGroup = null;\r\n @Input() layoutType: PepLayoutType = 'form';\r\n @Input() parentFieldKey: string = null;\r\n @Input() isActive = false;\r\n @Input() showTitle = true;\r\n @Input() emptyOption = true;\r\n @Input() renderTitle = true;\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n @Output()\r\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild('select') select: MatSelect;\r\n\r\n standAlone = false;\r\n isInEditMode = false;\r\n isMulti = false;\r\n selectedValuesModel: string[];\r\n selectedValueModel: string;\r\n fieldFormattedValue = '';\r\n\r\n constructor(\r\n private customizationService: PepCustomizationService,\r\n private renderer: Renderer2,\r\n private element: ElementRef\r\n ) { }\r\n\r\n private addOptionsIfNeeded(): void {\r\n if (this.isMulti) {\r\n // Go gor all selected and add to options if not exist\r\n // for (let i = 0; i < this.selectedValuesModel.length; i++) {\r\n for (const selectedValue of this.selectedValuesModel) {\r\n let valueNotExist = false;\r\n\r\n if (\r\n this.options &&\r\n !this.options.find((opt) => opt.key === selectedValue)\r\n ) {\r\n valueNotExist = true;\r\n }\r\n\r\n // Add it to options.\r\n if (valueNotExist) {\r\n this.options.push({\r\n key: selectedValue,\r\n value: selectedValue,\r\n });\r\n }\r\n }\r\n } else {\r\n if (\r\n this.value &&\r\n this.value !== '' &&\r\n this.options &&\r\n !this.options.find((opt) => opt.key === this.value)\r\n ) {\r\n this.options.push({ key: this.value, value: this.value });\r\n }\r\n }\r\n }\r\n\r\n private setFieldFormattedValue(value: any): void {\r\n if (this.isMulti) {\r\n if (this.selectedValuesModel.length > 0) {\r\n this.fieldFormattedValue = this.selectedValuesModel\r\n .map((value) => {\r\n return this.options.find((opt) => opt.key === value)\r\n ?.value;\r\n })\r\n .join(', ');\r\n } else {\r\n this.fieldFormattedValue = '';\r\n }\r\n\r\n // this.fieldFormattedValue = typeof value === 'string' ? value.replace(new RegExp(';', 'g'), ', ') : '';\r\n } else {\r\n const selectedOpt = this.options.find((opt) => opt.key === value);\r\n\r\n if (selectedOpt) {\r\n this.fieldFormattedValue = selectedOpt.value;\r\n }\r\n }\r\n }\r\n\r\n private setDefaultForm(): void {\r\n const pepField = new PepSelectField({\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 ngOnInit(): void {\r\n if (this.form === null) {\r\n this.standAlone = true;\r\n this.setDefaultForm();\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\r\n ngOnChanges(changes: any): void {\r\n if (this.standAlone) {\r\n this.setDefaultForm();\r\n }\r\n\r\n this.isMulti = this.type === 'multi';\r\n if (this.isMulti) {\r\n this.selectedValuesModel =\r\n this.value.length > 0 ? this.value.split(';') : [];\r\n } else {\r\n this.selectedValueModel = this.value;\r\n }\r\n\r\n this.addOptionsIfNeeded();\r\n this.setFieldFormattedValue(this.value);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //\r\n }\r\n\r\n selectionChange(event: any): void {\r\n if (!this.isMulti) {\r\n this.changeValue(this.selectedValueModel);\r\n }\r\n }\r\n\r\n openedChange(event: any): void {\r\n // Only on close.\r\n if (!event) {\r\n if (this.isMulti) {\r\n this.changeValue(this.selectedValuesModel.join(';'));\r\n }\r\n\r\n if (this.isInEditMode) {\r\n this.isInEditMode = false;\r\n }\r\n }\r\n }\r\n\r\n changeValue(value: any): void {\r\n this.setFieldFormattedValue(value);\r\n this.customizationService.updateFormFieldValue(\r\n this.form,\r\n this.key,\r\n // value,\r\n this.fieldFormattedValue,\r\n this.parentFieldKey\r\n );\r\n\r\n if (this.mandatory) {\r\n const fieldControl = this.form.controls[this.key];\r\n if (value) {\r\n fieldControl.setErrors(null);\r\n } else {\r\n fieldControl.setErrors({\r\n serverError: 'Required',\r\n });\r\n }\r\n this.formValidationChange.emit(this.form.valid);\r\n }\r\n\r\n this.valueChange.emit(value);\r\n }\r\n\r\n cardTemplateClicked(event: any): void {\r\n this.isInEditMode = true;\r\n\r\n setTimeout(() => {\r\n this.select.open();\r\n }, 0);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\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 pepIconSystemEdit,\r\n} from '@pepperi-addons/ngx-lib/icon';\r\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\r\n\r\nimport { PepSelectComponent } from './select.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n // Material modules\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n // ngx-lib modules\r\n PepNgxLibModule,\r\n PepIconModule,\r\n PepFieldTitleModule,\r\n ],\r\n exports: [PepSelectComponent],\r\n declarations: [PepSelectComponent],\r\n})\r\nexport class PepSelectModule {\r\n constructor(private pepIconRegistry: PepIconRegistry) {\r\n this.pepIconRegistry.registerIcons([pepIconSystemEdit]);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-lib/select\r\n */\r\nexport * from './select.module';\r\nexport * from './select.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;MA+Ba,kBAAkB;IAyD3B,YACY,oBAA6C,EAC7C,QAAmB,EACnB,OAAmB;QAFnB,yBAAoB,GAApB,oBAAoB,CAAyB;QAC7C,aAAQ,GAAR,QAAQ,CAAW;QACnB,YAAO,GAAP,OAAO,CAAY;QA3DtB,QAAG,GAAG,EAAE,CAAC;QACT,UAAK,GAAG,EAAE,CAAC;QACX,UAAK,GAAG,EAAE,CAAC;QACX,SAAI,GAAuB,QAAQ,CAAC;QACpC,cAAS,GAAG,KAAK,CAAC;QAClB,aAAQ,GAAG,KAAK,CAAC;QACjB,aAAQ,GAAG,KAAK,CAAC;QACjB,eAAU,GAA2B,4BAA4B,CAAC;QAClE,YAAO,GAAG,CAAC,CAAC;QACZ,YAAO,GAAsB,EAAE,CAAC;QAEjC,aAAQ,GAAG,IAAI,CAAC;QAoBxB,gBAAW,GAAG,QAAQ,CAAC;;QAGd,SAAI,GAAc,IAAI,CAAC;QACvB,eAAU,GAAkB,MAAM,CAAC;QACnC,mBAAc,GAAW,IAAI,CAAC;QAC9B,aAAQ,GAAG,KAAK,CAAC;QACjB,cAAS,GAAG,IAAI,CAAC;QACjB,gBAAW,GAAG,IAAI,CAAC;QACnB,gBAAW,GAAG,IAAI,CAAC;QAG5B,gBAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;QAE/D,yBAAoB,GAA0B,IAAI,YAAY,EAAW,CAAC;QAI1E,eAAU,GAAG,KAAK,CAAC;QACnB,iBAAY,GAAG,KAAK,CAAC;QACrB,YAAO,GAAG,KAAK,CAAC;QAGhB,wBAAmB,GAAG,EAAE,CAAC;KAMpB;IAhDL,IACI,OAAO,CAAC,OAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,QAAQ,CAAC,WAAW,CACrB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,gBAAgB,CACnB,CAAC;SACL;aAAM;YACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,gBAAgB,CACnB,CAAC;SACL;KACJ;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAiCO,kBAAkB;QACtB,IAAI,IAAI,CAAC,OAAO,EAAE;;;YAGd,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAClD,IAAI,aAAa,GAAG,KAAK,CAAC;gBAE1B,IACI,IAAI,CAAC,OAAO;oBACZ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC,EACxD;oBACE,aAAa,GAAG,IAAI,CAAC;iBACxB;;gBAGD,IAAI,aAAa,EAAE;oBACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBACd,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,aAAa;qBACvB,CAAC,CAAC;iBACN;aACJ;SACJ;aAAM;YACH,IACI,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,KAAK,KAAK,EAAE;gBACjB,IAAI,CAAC,OAAO;gBACZ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,EACrD;gBACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;aAC7D;SACJ;KACJ;IAEO,sBAAsB,CAAC,KAAU;QACrC,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;qBAC9C,GAAG,CAAC,CAAC,KAAK;;oBACP,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,0CAC9C,KAAK,CAAC;iBACf,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;aACjC;;SAGJ;aAAM;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;YAElE,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,KAAK,CAAC;aAChD;SACJ;KACJ;IAEO,cAAc;QAClB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;YAChC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACvE;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,uBAAuB,CAAC,4BAA4B,CACvD,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,uBAAuB,CAAC,uCAAuC,CAClE,CAAC;aACL;SACJ;KACJ;IAED,WAAW,CAAC,OAAY;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,mBAAmB;gBACpB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SAC1D;aAAM;YACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC;SACxC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3C;IAED,WAAW;;KAEV;IAED,eAAe,CAAC,KAAU;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAC7C;KACJ;IAED,YAAY,CAAC,KAAU;;QAEnB,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACxD;YAED,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC7B;SACJ;KACJ;IAED,WAAW,CAAC,KAAU;QAClB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,GAAG;;QAER,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,cAAc,CACtB,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,KAAK,EAAE;gBACP,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM;gBACH,YAAY,CAAC,SAAS,CAAC;oBACnB,WAAW,EAAE,UAAU;iBAC1B,CAAC,CAAC;aACN;YACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;IAED,mBAAmB,CAAC,KAAU;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,UAAU,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB,EAAE,CAAC,CAAC,CAAC;KACT;;;YAnOJ,SAAS,SAAC;gBACP,QAAQ,EAAE,YAAY;gBACtB,u2KAAsC;gBAEtC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAClD;;;YAbG,uBAAuB;YANvB,SAAS;YAHT,UAAU;;;kBAwBT,KAAK;oBACL,KAAK;oBACL,KAAK;mBACL,KAAK;wBACL,KAAK;uBACL,KAAK;uBACL,KAAK;yBACL,KAAK;sBACL,KAAK;sBACL,KAAK;sBAGL,KAAK;mBAsBL,KAAK;yBACL,KAAK;6BACL,KAAK;uBACL,KAAK;wBACL,KAAK;0BACL,KAAK;0BACL,KAAK;0BAEL,MAAM;mCAEN,MAAM;qBAGN,SAAS,SAAC,QAAQ;;;MCxCV,eAAe;IACxB,YAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAChD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;KAC3D;;;YAtBJ,QAAQ,SAAC;gBACN,OAAO,EAAE;oBACL,YAAY;oBACZ,mBAAmB;oBACnB,WAAW;;oBAEX,eAAe;oBACf,eAAe;oBACf,kBAAkB;oBAClB,eAAe;oBACf,aAAa;;oBAEb,eAAe;oBACf,aAAa;oBACb,mBAAmB;iBACtB;gBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;gBAC7B,YAAY,EAAE,CAAC,kBAAkB,CAAC;aACrC;;;YAzBG,eAAe;;;ACbnB;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-select.js","sources":["../../../projects/ngx-lib/select/select.component.ts","../../../projects/ngx-lib/select/select.module.ts","../../../projects/ngx-lib/select/public-api.ts","../../../projects/ngx-lib/select/pepperi-addons-ngx-lib-select.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport {\r\n PepLayoutType,\r\n PepCustomizationService,\r\n PepHorizontalAlignment,\r\n DEFAULT_HORIZONTAL_ALIGNMENT,\r\n PepSelectFieldType,\r\n PepSelectField,\r\n IPepOption,\r\n} from '@pepperi-addons/ngx-lib';\r\n\r\n@Component({\r\n selector: 'pep-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss', './select.component.theme.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PepSelectComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input() key = '';\r\n @Input() value = '';\r\n @Input() label = '';\r\n @Input() type: PepSelectFieldType = 'select';\r\n @Input() mandatory = false;\r\n @Input() disabled = false;\r\n @Input() readonly = false;\r\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\r\n @Input() rowSpan = 1;\r\n @Input() options: Array<IPepOption> = [];\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 = 'select';\r\n\r\n // @Input() field: PepFieldBase;\r\n @Input() form: FormGroup = null;\r\n @Input() layoutType: PepLayoutType = 'form';\r\n @Input() parentFieldKey: string = null;\r\n @Input() isActive = false;\r\n @Input() showTitle = true;\r\n @Input() emptyOption = true;\r\n @Input() renderTitle = true;\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n @Output()\r\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild('select') select: MatSelect;\r\n\r\n standAlone = false;\r\n isInEditMode = false;\r\n isMulti = false;\r\n selectedValuesModel: string[];\r\n selectedValueModel: string;\r\n fieldFormattedValue = '';\r\n\r\n constructor(\r\n private customizationService: PepCustomizationService,\r\n private renderer: Renderer2,\r\n private element: ElementRef\r\n ) { }\r\n\r\n private addOptionsIfNeeded(): void {\r\n if (this.isMulti) {\r\n // Go gor all selected and add to options if not exist\r\n // for (let i = 0; i < this.selectedValuesModel.length; i++) {\r\n for (const selectedValue of this.selectedValuesModel) {\r\n let valueNotExist = false;\r\n\r\n if (\r\n this.options &&\r\n !this.options.find((opt) => opt.key === selectedValue)\r\n ) {\r\n valueNotExist = true;\r\n }\r\n\r\n // Add it to options.\r\n if (valueNotExist) {\r\n this.options.push({\r\n key: selectedValue,\r\n value: selectedValue,\r\n });\r\n }\r\n }\r\n } else {\r\n if (\r\n this.value &&\r\n this.value !== '' &&\r\n this.options &&\r\n !this.options.find((opt) => opt.key === this.value)\r\n ) {\r\n this.options.push({ key: this.value, value: this.value });\r\n }\r\n }\r\n }\r\n\r\n private setFieldFormattedValue(value: any): void {\r\n if (this.isMulti) {\r\n if (this.selectedValuesModel.length > 0) {\r\n this.fieldFormattedValue = this.selectedValuesModel\r\n .map((value) => {\r\n return this.options.find((opt) => opt.key === value)\r\n ?.value;\r\n })\r\n .join(', ');\r\n } else {\r\n this.fieldFormattedValue = '';\r\n }\r\n\r\n // this.fieldFormattedValue = typeof value === 'string' ? value.replace(new RegExp(';', 'g'), ', ') : '';\r\n } else {\r\n const selectedOpt = this.options.find((opt) => opt.key === value);\r\n\r\n if (selectedOpt) {\r\n this.fieldFormattedValue = selectedOpt.value;\r\n }\r\n }\r\n }\r\n\r\n private setDefaultForm(): void {\r\n const pepField = new PepSelectField({\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 ngOnInit(): void {\r\n if (this.form === null) {\r\n this.standAlone = true;\r\n this.setDefaultForm();\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\r\n ngOnChanges(changes: any): void {\r\n if (this.standAlone) {\r\n this.setDefaultForm();\r\n }\r\n\r\n this.isMulti = this.type === 'multi';\r\n if (this.isMulti) {\r\n this.selectedValuesModel =\r\n this.value.length > 0 ? this.value.split(';') : [];\r\n } else {\r\n this.selectedValueModel = this.value;\r\n }\r\n\r\n this.addOptionsIfNeeded();\r\n this.setFieldFormattedValue(this.value);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //\r\n }\r\n\r\n selectionChange(event: any): void {\r\n if (!this.isMulti) {\r\n this.changeValue(this.selectedValueModel);\r\n }\r\n }\r\n\r\n openedChange(event: any): void {\r\n // Only on close.\r\n if (!event) {\r\n if (this.isMulti) {\r\n this.changeValue(this.selectedValuesModel.join(';'));\r\n }\r\n\r\n if (this.isInEditMode) {\r\n this.isInEditMode = false;\r\n }\r\n }\r\n }\r\n\r\n changeValue(value: any): void {\r\n this.setFieldFormattedValue(value);\r\n this.customizationService.updateFormFieldValue(\r\n this.form,\r\n this.key,\r\n // value,\r\n this.fieldFormattedValue,\r\n this.parentFieldKey\r\n );\r\n\r\n if (this.mandatory) {\r\n const fieldControl = this.form.controls[this.key];\r\n if (value) {\r\n fieldControl.setErrors(null);\r\n } else {\r\n fieldControl.setErrors({\r\n serverError: 'Required',\r\n });\r\n }\r\n this.formValidationChange.emit(this.form.valid);\r\n }\r\n\r\n this.valueChange.emit(value);\r\n }\r\n\r\n cardTemplateClicked(event: any): void {\r\n this.isInEditMode = true;\r\n\r\n setTimeout(() => {\r\n this.select.open();\r\n }, 0);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\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 pepIconSystemEdit,\r\n} from '@pepperi-addons/ngx-lib/icon';\r\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\r\n\r\nimport { PepSelectComponent } from './select.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n // Material modules\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n // ngx-lib modules\r\n PepNgxLibModule,\r\n PepIconModule,\r\n PepFieldTitleModule,\r\n ],\r\n exports: [PepSelectComponent],\r\n declarations: [PepSelectComponent],\r\n})\r\nexport class PepSelectModule {\r\n constructor(private pepIconRegistry: PepIconRegistry) {\r\n this.pepIconRegistry.registerIcons([pepIconSystemEdit]);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-lib/select\r\n */\r\nexport * from './select.module';\r\nexport * from './select.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}