@provoly/dashboard 0.11.0

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 (1765) hide show
  1. package/README.md +5 -0
  2. package/admin/admin-routing.module.d.ts +9 -0
  3. package/admin/admin.module.d.ts +87 -0
  4. package/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.d.ts +14 -0
  5. package/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.d.ts +29 -0
  6. package/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.d.ts +12 -0
  7. package/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.d.ts +13 -0
  8. package/admin/components/admin-abac-rules/admin-abac-rules.component.d.ts +18 -0
  9. package/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.d.ts +26 -0
  10. package/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.d.ts +29 -0
  11. package/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.d.ts +28 -0
  12. package/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.d.ts +17 -0
  13. package/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.d.ts +14 -0
  14. package/admin/components/admin-abac-rules/store/abac-rules.actions.d.ts +147 -0
  15. package/admin/components/admin-abac-rules/store/abac-rules.effects.d.ts +67 -0
  16. package/admin/components/admin-abac-rules/store/abac-rules.model.d.ts +44 -0
  17. package/admin/components/admin-abac-rules/store/abac-rules.reducer.d.ts +10 -0
  18. package/admin/components/admin-abac-rules/store/abac-rules.selectors.d.ts +14 -0
  19. package/admin/components/admin-abac-rules/store/abac-rules.service.d.ts +21 -0
  20. package/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.d.ts +32 -0
  21. package/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.d.ts +46 -0
  22. package/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.d.ts +41 -0
  23. package/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.d.ts +16 -0
  24. package/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.d.ts +26 -0
  25. package/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.d.ts +5 -0
  26. package/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.d.ts +24 -0
  27. package/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.d.ts +17 -0
  28. package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +43 -0
  29. package/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.d.ts +17 -0
  30. package/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.d.ts +27 -0
  31. package/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.d.ts +44 -0
  32. package/admin/components/admin-classes/admin-classes.component.d.ts +25 -0
  33. package/admin/components/admin-classes/store/admin-class.actions.d.ts +143 -0
  34. package/admin/components/admin-classes/store/admin-class.effects.d.ts +81 -0
  35. package/admin/components/admin-classes/store/admin-class.reducer.d.ts +11 -0
  36. package/admin/components/admin-classes/store/admin-class.selectors.d.ts +12 -0
  37. package/admin/components/admin-dataset/admin-dataset.component.d.ts +32 -0
  38. package/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.d.ts +15 -0
  39. package/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.d.ts +5 -0
  40. package/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.d.ts +36 -0
  41. package/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.d.ts +34 -0
  42. package/admin/components/admin-dataset/store/admin-dataset.actions.d.ts +59 -0
  43. package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +30 -0
  44. package/admin/components/admin-dataset/store/admin-dataset.reducer.d.ts +6 -0
  45. package/admin/components/admin-dataset/store/admin-dataset.selector.d.ts +5 -0
  46. package/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.d.ts +35 -0
  47. package/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.d.ts +5 -0
  48. package/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.d.ts +24 -0
  49. package/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.d.ts +15 -0
  50. package/admin/components/admin-environment/admin-environment.component.d.ts +20 -0
  51. package/admin/components/admin-environment/store/environment.actions.d.ts +82 -0
  52. package/admin/components/admin-environment/store/environment.effects.d.ts +44 -0
  53. package/admin/components/admin-environment/store/environment.reducer.d.ts +9 -0
  54. package/admin/components/admin-environment/store/environment.selectors.d.ts +8 -0
  55. package/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.d.ts +15 -0
  56. package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +30 -0
  57. package/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.d.ts +5 -0
  58. package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +28 -0
  59. package/admin/components/admin-fields/admin-fields.component.d.ts +19 -0
  60. package/admin/components/admin-fields/store/admin-fields.model.d.ts +4 -0
  61. package/admin/components/admin-fields/store/fields.actions.d.ts +47 -0
  62. package/admin/components/admin-fields/store/fields.effects.d.ts +36 -0
  63. package/admin/components/admin-fields/store/fields.reducer.d.ts +8 -0
  64. package/admin/components/admin-fields/store/fields.selectors.d.ts +7 -0
  65. package/admin/components/admin-layout/admin-layout.component.d.ts +24 -0
  66. package/admin/components/admin-links/admin-links-new/admin-links-new.component.d.ts +33 -0
  67. package/admin/components/admin-links/admin-links.component.d.ts +19 -0
  68. package/admin/components/admin-links/store/links.actions.d.ts +31 -0
  69. package/admin/components/admin-links/store/links.effects.d.ts +28 -0
  70. package/admin/components/admin-links/store/links.reducer.d.ts +8 -0
  71. package/admin/components/admin-links/store/links.selectors.d.ts +5 -0
  72. package/admin/components/admin-menu/admin-menu.component.d.ts +14 -0
  73. package/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.d.ts +16 -0
  74. package/admin/components/admin-metadata/admin-metadata.component.d.ts +24 -0
  75. package/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.d.ts +10 -0
  76. package/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.d.ts +23 -0
  77. package/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.d.ts +36 -0
  78. package/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.d.ts +11 -0
  79. package/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.d.ts +40 -0
  80. package/admin/components/admin-metadata/store/metadata.action.d.ts +56 -0
  81. package/admin/components/admin-metadata/store/metadata.effects.d.ts +36 -0
  82. package/admin/components/admin-metadata/store/metadata.reducer.d.ts +13 -0
  83. package/admin/components/admin-metadata/store/metadata.selector.d.ts +10 -0
  84. package/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.d.ts +12 -0
  85. package/admin/components/admin-metadata-rules/admin-metadata-rules.component.d.ts +35 -0
  86. package/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.d.ts +5 -0
  87. package/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.d.ts +23 -0
  88. package/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.d.ts +41 -0
  89. package/admin/components/admin-metadata-rules/store/metadata-rules.actions.d.ts +49 -0
  90. package/admin/components/admin-metadata-rules/store/metadata-rules.effects.d.ts +39 -0
  91. package/admin/components/admin-metadata-rules/store/metadata-rules.reducer.d.ts +11 -0
  92. package/admin/components/admin-metadata-rules/store/metadata-rules.selectors.d.ts +7 -0
  93. package/admin/components/admin-metadata-user/admin-metadata-user.component.d.ts +25 -0
  94. package/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.d.ts +17 -0
  95. package/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.d.ts +10 -0
  96. package/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.d.ts +23 -0
  97. package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +84 -0
  98. package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +48 -0
  99. package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +11 -0
  100. package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +14 -0
  101. package/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.d.ts +34 -0
  102. package/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.d.ts +5 -0
  103. package/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.d.ts +22 -0
  104. package/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.d.ts +16 -0
  105. package/admin/components/admin-predicates/admin-predicates.component.d.ts +19 -0
  106. package/admin/components/admin-predicates/store/predicates.actions.d.ts +46 -0
  107. package/admin/components/admin-predicates/store/predicates.effects.d.ts +33 -0
  108. package/admin/components/admin-predicates/store/predicates.reducer.d.ts +9 -0
  109. package/admin/components/admin-predicates/store/predicates.selectors.d.ts +8 -0
  110. package/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.d.ts +32 -0
  111. package/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.d.ts +19 -0
  112. package/admin/components/admin-relation-types/admin-relation-types.component.d.ts +15 -0
  113. package/admin/components/admin-title/admin-title.component.d.ts +15 -0
  114. package/admin/components/admin-user/admin-user-select/admin-user-select.component.d.ts +35 -0
  115. package/admin/components/admin-user/admin-user.component.d.ts +18 -0
  116. package/admin/components/admin-user/store/admin-user.action.d.ts +76 -0
  117. package/admin/components/admin-user/store/admin-user.effects.d.ts +43 -0
  118. package/admin/components/admin-user/store/admin-user.reducer.d.ts +10 -0
  119. package/admin/components/admin-user/store/admin-user.selector.d.ts +8 -0
  120. package/admin/components/admin.component.d.ts +17 -0
  121. package/admin/i18n/en.translations.d.ts +327 -0
  122. package/admin/i18n/fr.translations.d.ts +328 -0
  123. package/admin/index.d.ts +5 -0
  124. package/admin/public-api.d.ts +1 -0
  125. package/admin/store/admin.actions.d.ts +41 -0
  126. package/admin/store/admin.effects.d.ts +34 -0
  127. package/admin/store/admin.reducer.d.ts +13 -0
  128. package/admin/store/admin.selectors.d.ts +13 -0
  129. package/admin/store/admin.service.d.ts +45 -0
  130. package/assets/backgrounds/chart.svg +684 -0
  131. package/assets/backgrounds/detail.svg +27 -0
  132. package/assets/backgrounds/graph.svg +1775 -0
  133. package/assets/backgrounds/iframe.svg +799 -0
  134. package/assets/backgrounds/img_processus.png +0 -0
  135. package/assets/backgrounds/map.svg +154 -0
  136. package/assets/backgrounds/placeholder.png +0 -0
  137. package/assets/backgrounds/table.svg +48 -0
  138. package/assets/backgrounds/template.svg +26 -0
  139. package/assets/backgrounds/tile.svg +26 -0
  140. package/assets/fonts/ubuntu-latin-bold.woff2 +0 -0
  141. package/assets/fonts/ubuntu-latin-medium.woff2 +0 -0
  142. package/assets/fonts/ubuntu-latin-regular.woff2 +0 -0
  143. package/assets/svgs/add.svg +4 -0
  144. package/assets/svgs/add_column.svg +5 -0
  145. package/assets/svgs/admin-fill.svg +5 -0
  146. package/assets/svgs/admin.svg +8 -0
  147. package/assets/svgs/ads_click.svg +5 -0
  148. package/assets/svgs/apps.svg +5 -0
  149. package/assets/svgs/area_chart.svg +19 -0
  150. package/assets/svgs/arrow_back.svg +4 -0
  151. package/assets/svgs/arrow_right.svg +6 -0
  152. package/assets/svgs/auto_graph.svg +12 -0
  153. package/assets/svgs/bar_chart.svg +18 -0
  154. package/assets/svgs/bubble-chart-line.svg +18 -0
  155. package/assets/svgs/bulles.svg +5 -0
  156. package/assets/svgs/chart.svg +5 -0
  157. package/assets/svgs/chat-settings.svg +5 -0
  158. package/assets/svgs/check.svg +4 -0
  159. package/assets/svgs/checkbox-circle.svg +6 -0
  160. package/assets/svgs/chevron_bottom.svg +6 -0
  161. package/assets/svgs/chevron_bottom_rounded.svg +5 -0
  162. package/assets/svgs/chevron_left.svg +6 -0
  163. package/assets/svgs/chevron_right.svg +6 -0
  164. package/assets/svgs/chevron_top.svg +3 -0
  165. package/assets/svgs/chevron_top_rounded.svg +5 -0
  166. package/assets/svgs/click.svg +4 -0
  167. package/assets/svgs/close.svg +5 -0
  168. package/assets/svgs/control.svg +5 -0
  169. package/assets/svgs/control_point.svg +5 -0
  170. package/assets/svgs/danger.svg +5 -0
  171. package/assets/svgs/data.svg +5 -0
  172. package/assets/svgs/data_usage.svg +5 -0
  173. package/assets/svgs/dataset.svg +0 -0
  174. package/assets/svgs/default-restitution.svg +6 -0
  175. package/assets/svgs/default.svg +28 -0
  176. package/assets/svgs/delete.svg +5 -0
  177. package/assets/svgs/detail.svg +5 -0
  178. package/assets/svgs/donut_large.svg +14 -0
  179. package/assets/svgs/download.svg +4 -0
  180. package/assets/svgs/drag_indicator.svg +5 -0
  181. package/assets/svgs/edit.svg +5 -0
  182. package/assets/svgs/edit_off.svg +5 -0
  183. package/assets/svgs/epingle.svg +6 -0
  184. package/assets/svgs/event-fill.svg +5 -0
  185. package/assets/svgs/event.svg +5 -0
  186. package/assets/svgs/exposure_neg_1.svg +4 -0
  187. package/assets/svgs/exposure_plus_1.svg +4 -0
  188. package/assets/svgs/eye-arrow-down.svg +14 -0
  189. package/assets/svgs/eye-arrow-up.svg +14 -0
  190. package/assets/svgs/eye.svg +5 -0
  191. package/assets/svgs/file_download.svg +5 -0
  192. package/assets/svgs/file_upload.svg +5 -0
  193. package/assets/svgs/fleche_bas.svg +4 -0
  194. package/assets/svgs/fleche_haut.svg +4 -0
  195. package/assets/svgs/frequentation.svg +4 -0
  196. package/assets/svgs/fullscreen.svg +4 -0
  197. package/assets/svgs/globe.svg +5 -0
  198. package/assets/svgs/graph.svg +20 -0
  199. package/assets/svgs/grid_1_2_horizontal.svg +4 -0
  200. package/assets/svgs/grid_1_2_vertical.svg +4 -0
  201. package/assets/svgs/grid_1_3_horizontal.svg +5 -0
  202. package/assets/svgs/grid_1_3_vertical.svg +5 -0
  203. package/assets/svgs/grid_1_4.svg +6 -0
  204. package/assets/svgs/grid_2_gauche_1_droite.svg +5 -0
  205. package/assets/svgs/grid_composition_libre.svg +7 -0
  206. package/assets/svgs/grid_full.svg +3 -0
  207. package/assets/svgs/grid_view.svg +4 -0
  208. package/assets/svgs/heart-add-line.svg +5 -0
  209. package/assets/svgs/heart-fill.svg +5 -0
  210. package/assets/svgs/highlight_alt.svg +5 -0
  211. package/assets/svgs/history-line.svg +5 -0
  212. package/assets/svgs/home-fill.svg +5 -0
  213. package/assets/svgs/home-fill_old.svg +4 -0
  214. package/assets/svgs/home-line.svg +12 -0
  215. package/assets/svgs/home-line_old.svg +5 -0
  216. package/assets/svgs/home.svg +12 -0
  217. package/assets/svgs/iframe.svg +11 -0
  218. package/assets/svgs/image.svg +6 -0
  219. package/assets/svgs/info.svg +8 -0
  220. package/assets/svgs/information-point.svg +5 -0
  221. package/assets/svgs/lasso.svg +5 -0
  222. package/assets/svgs/launch.svg +5 -0
  223. package/assets/svgs/legend.svg +4 -0
  224. package/assets/svgs/library_add.svg +5 -0
  225. package/assets/svgs/links_line.svg +5 -0
  226. package/assets/svgs/map.svg +8 -0
  227. package/assets/svgs/marqueur.svg +5 -0
  228. package/assets/svgs/mode_clic.svg +5 -0
  229. package/assets/svgs/more_horiz.svg +5 -0
  230. package/assets/svgs/more_vertical.svg +5 -0
  231. package/assets/svgs/move.svg +5 -0
  232. package/assets/svgs/noise_aware.svg +12 -0
  233. package/assets/svgs/north_east.svg +6 -0
  234. package/assets/svgs/north_west.svg +6 -0
  235. package/assets/svgs/notification-4-line.svg +5 -0
  236. package/assets/svgs/notification.svg +5 -0
  237. package/assets/svgs/notifications.svg +5 -0
  238. package/assets/svgs/picture-in-picture.svg +7 -0
  239. package/assets/svgs/place.svg +5 -0
  240. package/assets/svgs/post_add.svg +8 -0
  241. package/assets/svgs/presentation-fill.svg +4 -0
  242. package/assets/svgs/presentation.svg +5 -0
  243. package/assets/svgs/private.svg +10 -0
  244. package/assets/svgs/pry_recherche.svg +81 -0
  245. package/assets/svgs/pry_recherche_pas_de_resultat.svg +81 -0
  246. package/assets/svgs/public.svg +16 -0
  247. package/assets/svgs/published_with_changes.svg +5 -0
  248. package/assets/svgs/question-line.svg +5 -0
  249. package/assets/svgs/radar_chart.svg +11 -0
  250. package/assets/svgs/rectangle.svg +5 -0
  251. package/assets/svgs/remove.svg +4 -0
  252. package/assets/svgs/renamed.svg +6 -0
  253. package/assets/svgs/reset.svg +4 -0
  254. package/assets/svgs/resize.svg +4 -0
  255. package/assets/svgs/restitution-fill.svg +11 -0
  256. package/assets/svgs/restitution.svg +15 -0
  257. package/assets/svgs/restricted.svg +18 -0
  258. package/assets/svgs/rotate-lock-line.svg +5 -0
  259. package/assets/svgs/save-fill.svg +4 -0
  260. package/assets/svgs/save-line.svg +5 -0
  261. package/assets/svgs/screenshot-fill.svg +5 -0
  262. package/assets/svgs/search-criteria.svg +5 -0
  263. package/assets/svgs/search-fill.svg +5 -0
  264. package/assets/svgs/search-line.svg +5 -0
  265. package/assets/svgs/search.svg +4 -0
  266. package/assets/svgs/settings_applications.svg +12 -0
  267. package/assets/svgs/share.svg +5 -0
  268. package/assets/svgs/share_location.svg +20 -0
  269. package/assets/svgs/shield-lock.svg +7 -0
  270. package/assets/svgs/show_chart.svg +12 -0
  271. package/assets/svgs/south_east.svg +6 -0
  272. package/assets/svgs/south_west.svg +6 -0
  273. package/assets/svgs/stack-fill.svg +5 -0
  274. package/assets/svgs/stack-line.svg +5 -0
  275. package/assets/svgs/stop.svg +5 -0
  276. package/assets/svgs/supervision.svg +13 -0
  277. package/assets/svgs/svg.svg +5 -0
  278. package/assets/svgs/synchro.svg +5 -0
  279. package/assets/svgs/table.svg +5 -0
  280. package/assets/svgs/table_chart.svg +18 -0
  281. package/assets/svgs/tags.svg +11 -0
  282. package/assets/svgs/tile.svg +12 -0
  283. package/assets/svgs/toc.svg +20 -0
  284. package/assets/svgs/transformation-fill.svg +21 -0
  285. package/assets/svgs/transformation.svg +20 -0
  286. package/assets/svgs/tune.svg +5 -0
  287. package/assets/svgs/unpublished.svg +5 -0
  288. package/assets/svgs/upload.svg +4 -0
  289. package/assets/svgs/user.svg +5 -0
  290. package/assets/svgs/warning-triangle.svg +5 -0
  291. package/assets/svgs/warning.svg +5 -0
  292. package/assets/svgs/zoom.svg +6 -0
  293. package/components/card/card.component.d.ts +69 -0
  294. package/components/card/card.module.d.ts +10 -0
  295. package/components/card/index.d.ts +5 -0
  296. package/components/card/public-api.d.ts +2 -0
  297. package/components/checkbox/checkbox.component.d.ts +20 -0
  298. package/components/checkbox/checkbox.module.d.ts +9 -0
  299. package/components/checkbox/index.d.ts +5 -0
  300. package/components/checkbox/public-api.d.ts +2 -0
  301. package/components/expand-panel/expand-panel.component.d.ts +14 -0
  302. package/components/expand-panel/expand-panel.module.d.ts +7 -0
  303. package/components/expand-panel/index.d.ts +5 -0
  304. package/components/expand-panel/public-api.d.ts +2 -0
  305. package/components/filter/filter.module.d.ts +7 -0
  306. package/components/filter/filter.pipe.d.ts +7 -0
  307. package/components/filter/index.d.ts +5 -0
  308. package/components/filter/public-api.d.ts +2 -0
  309. package/components/sinceDate/index.d.ts +5 -0
  310. package/components/sinceDate/public-api.d.ts +2 -0
  311. package/components/sinceDate/sinceDate.module.d.ts +7 -0
  312. package/components/sinceDate/sinceDate.pipe.d.ts +11 -0
  313. package/components/stepper/index.d.ts +5 -0
  314. package/components/stepper/public-api.d.ts +4 -0
  315. package/components/stepper/step/step.component.d.ts +15 -0
  316. package/components/stepper/step-title.directive.d.ts +8 -0
  317. package/components/stepper/stepper.component.d.ts +28 -0
  318. package/components/stepper/stepper.module.d.ts +10 -0
  319. package/dataset/components/dataset-card/dataset-card.component.d.ts +10 -0
  320. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +29 -0
  321. package/dataset/components/dataset.component.d.ts +17 -0
  322. package/dataset/dataset.module.d.ts +17 -0
  323. package/dataset/i18n/en.translations.d.ts +33 -0
  324. package/dataset/i18n/fr.translations.d.ts +38 -0
  325. package/dataset/index.d.ts +5 -0
  326. package/dataset/public-api.d.ts +5 -0
  327. package/dataset/style/_o-pry-dataset-card.scss +29 -0
  328. package/dataset/style/_o-pry-dataset-detail.scss +55 -0
  329. package/dataset/style/_o-pry-dataset.scss +31 -0
  330. package/dataset/style/css.component.d.ts +5 -0
  331. package/esm2022/admin/admin-routing.module.mjs +567 -0
  332. package/esm2022/admin/admin.module.mjs +366 -0
  333. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +50 -0
  334. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +57 -0
  335. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +34 -0
  336. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +54 -0
  337. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +47 -0
  338. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +81 -0
  339. package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +66 -0
  340. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +69 -0
  341. package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +29 -0
  342. package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +24 -0
  343. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.actions.mjs +28 -0
  344. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +78 -0
  345. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.model.mjs +20 -0
  346. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.reducer.mjs +110 -0
  347. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.selectors.mjs +29 -0
  348. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +161 -0
  349. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +92 -0
  350. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +146 -0
  351. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +127 -0
  352. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +26 -0
  353. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +91 -0
  354. package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +13 -0
  355. package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +107 -0
  356. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +30 -0
  357. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +151 -0
  358. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +30 -0
  359. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +81 -0
  360. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +183 -0
  361. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +70 -0
  362. package/esm2022/admin/components/admin-classes/store/admin-class.actions.mjs +32 -0
  363. package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +139 -0
  364. package/esm2022/admin/components/admin-classes/store/admin-class.reducer.mjs +43 -0
  365. package/esm2022/admin/components/admin-classes/store/admin-class.selectors.mjs +23 -0
  366. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +79 -0
  367. package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +26 -0
  368. package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +13 -0
  369. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +155 -0
  370. package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +98 -0
  371. package/esm2022/admin/components/admin-dataset/store/admin-dataset.actions.mjs +14 -0
  372. package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +34 -0
  373. package/esm2022/admin/components/admin-dataset/store/admin-dataset.reducer.mjs +11 -0
  374. package/esm2022/admin/components/admin-dataset/store/admin-dataset.selector.mjs +9 -0
  375. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +125 -0
  376. package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +13 -0
  377. package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +94 -0
  378. package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +26 -0
  379. package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +51 -0
  380. package/esm2022/admin/components/admin-environment/store/environment.actions.mjs +19 -0
  381. package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +47 -0
  382. package/esm2022/admin/components/admin-environment/store/environment.reducer.mjs +39 -0
  383. package/esm2022/admin/components/admin-environment/store/environment.selectors.mjs +15 -0
  384. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +25 -0
  385. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +85 -0
  386. package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +13 -0
  387. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +96 -0
  388. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +52 -0
  389. package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +2 -0
  390. package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +14 -0
  391. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +54 -0
  392. package/esm2022/admin/components/admin-fields/store/fields.reducer.mjs +14 -0
  393. package/esm2022/admin/components/admin-fields/store/fields.selectors.mjs +13 -0
  394. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +81 -0
  395. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +92 -0
  396. package/esm2022/admin/components/admin-links/admin-links.component.mjs +60 -0
  397. package/esm2022/admin/components/admin-links/store/links.actions.mjs +10 -0
  398. package/esm2022/admin/components/admin-links/store/links.effects.mjs +27 -0
  399. package/esm2022/admin/components/admin-links/store/links.reducer.mjs +19 -0
  400. package/esm2022/admin/components/admin-links/store/links.selectors.mjs +9 -0
  401. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +38 -0
  402. package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +32 -0
  403. package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +65 -0
  404. package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +21 -0
  405. package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +77 -0
  406. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +130 -0
  407. package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +21 -0
  408. package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +90 -0
  409. package/esm2022/admin/components/admin-metadata/store/metadata.action.mjs +19 -0
  410. package/esm2022/admin/components/admin-metadata/store/metadata.effects.mjs +33 -0
  411. package/esm2022/admin/components/admin-metadata/store/metadata.reducer.mjs +35 -0
  412. package/esm2022/admin/components/admin-metadata/store/metadata.selector.mjs +17 -0
  413. package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +22 -0
  414. package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +86 -0
  415. package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +13 -0
  416. package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +86 -0
  417. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +133 -0
  418. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.actions.mjs +23 -0
  419. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +51 -0
  420. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.reducer.mjs +28 -0
  421. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.selectors.mjs +13 -0
  422. package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +65 -0
  423. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +33 -0
  424. package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +21 -0
  425. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +77 -0
  426. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +23 -0
  427. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +38 -0
  428. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +45 -0
  429. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +17 -0
  430. package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +102 -0
  431. package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +13 -0
  432. package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +69 -0
  433. package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +27 -0
  434. package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +46 -0
  435. package/esm2022/admin/components/admin-predicates/store/predicates.actions.mjs +13 -0
  436. package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +28 -0
  437. package/esm2022/admin/components/admin-predicates/store/predicates.reducer.mjs +40 -0
  438. package/esm2022/admin/components/admin-predicates/store/predicates.selectors.mjs +15 -0
  439. package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +101 -0
  440. package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +63 -0
  441. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +42 -0
  442. package/esm2022/admin/components/admin-title/admin-title.component.mjs +29 -0
  443. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +116 -0
  444. package/esm2022/admin/components/admin-user/admin-user.component.mjs +34 -0
  445. package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +21 -0
  446. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +38 -0
  447. package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +27 -0
  448. package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +15 -0
  449. package/esm2022/admin/components/admin.component.mjs +29 -0
  450. package/esm2022/admin/i18n/en.translations.mjs +328 -0
  451. package/esm2022/admin/i18n/fr.translations.mjs +329 -0
  452. package/esm2022/admin/provoly-dashboard-admin.mjs +5 -0
  453. package/esm2022/admin/public-api.mjs +2 -0
  454. package/esm2022/admin/store/admin.actions.mjs +12 -0
  455. package/esm2022/admin/store/admin.effects.mjs +66 -0
  456. package/esm2022/admin/store/admin.reducer.mjs +52 -0
  457. package/esm2022/admin/store/admin.selectors.mjs +32 -0
  458. package/esm2022/admin/store/admin.service.mjs +181 -0
  459. package/esm2022/components/card/card.component.mjs +270 -0
  460. package/esm2022/components/card/card.module.mjs +38 -0
  461. package/esm2022/components/card/provoly-dashboard-components-card.mjs +5 -0
  462. package/esm2022/components/card/public-api.mjs +3 -0
  463. package/esm2022/components/checkbox/checkbox.component.mjs +58 -0
  464. package/esm2022/components/checkbox/checkbox.module.mjs +20 -0
  465. package/esm2022/components/checkbox/provoly-dashboard-components-checkbox.mjs +5 -0
  466. package/esm2022/components/checkbox/public-api.mjs +3 -0
  467. package/esm2022/components/expand-panel/expand-panel.component.mjs +65 -0
  468. package/esm2022/components/expand-panel/expand-panel.module.mjs +19 -0
  469. package/esm2022/components/expand-panel/provoly-dashboard-components-expand-panel.mjs +5 -0
  470. package/esm2022/components/expand-panel/public-api.mjs +3 -0
  471. package/esm2022/components/filter/filter.module.mjs +16 -0
  472. package/esm2022/components/filter/filter.pipe.mjs +16 -0
  473. package/esm2022/components/filter/provoly-dashboard-components-filter.mjs +5 -0
  474. package/esm2022/components/filter/public-api.mjs +3 -0
  475. package/esm2022/components/sinceDate/provoly-dashboard-components-sinceDate.mjs +5 -0
  476. package/esm2022/components/sinceDate/public-api.mjs +3 -0
  477. package/esm2022/components/sinceDate/sinceDate.module.mjs +16 -0
  478. package/esm2022/components/sinceDate/sinceDate.pipe.mjs +40 -0
  479. package/esm2022/components/stepper/provoly-dashboard-components-stepper.mjs +5 -0
  480. package/esm2022/components/stepper/public-api.mjs +5 -0
  481. package/esm2022/components/stepper/step/step.component.mjs +36 -0
  482. package/esm2022/components/stepper/step-title.directive.mjs +14 -0
  483. package/esm2022/components/stepper/stepper.component.mjs +109 -0
  484. package/esm2022/components/stepper/stepper.module.mjs +20 -0
  485. package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +24 -0
  486. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +86 -0
  487. package/esm2022/dataset/components/dataset.component.mjs +35 -0
  488. package/esm2022/dataset/dataset.module.mjs +59 -0
  489. package/esm2022/dataset/i18n/en.translations.mjs +34 -0
  490. package/esm2022/dataset/i18n/fr.translations.mjs +39 -0
  491. package/esm2022/dataset/provoly-dashboard-dataset.mjs +5 -0
  492. package/esm2022/dataset/public-api.mjs +6 -0
  493. package/esm2022/dataset/style/css.component.mjs +11 -0
  494. package/esm2022/filters/date/date-filter.component.mjs +50 -0
  495. package/esm2022/filters/date/date-filter.module.mjs +25 -0
  496. package/esm2022/filters/date/provoly-dashboard-filters-date.mjs +5 -0
  497. package/esm2022/filters/date/public-api.mjs +4 -0
  498. package/esm2022/filters/date/style/css.component.mjs +11 -0
  499. package/esm2022/filters/list/list-filter.component.mjs +31 -0
  500. package/esm2022/filters/list/list-filter.module.mjs +24 -0
  501. package/esm2022/filters/list/provoly-dashboard-filters-list.mjs +5 -0
  502. package/esm2022/filters/list/public-api.mjs +4 -0
  503. package/esm2022/filters/list/style/css.component.mjs +11 -0
  504. package/esm2022/filters/number/number-filter.component.mjs +26 -0
  505. package/esm2022/filters/number/number-filter.module.mjs +24 -0
  506. package/esm2022/filters/number/provoly-dashboard-filters-number.mjs +5 -0
  507. package/esm2022/filters/number/public-api.mjs +3 -0
  508. package/esm2022/filters/text/provoly-dashboard-filters-text.mjs +5 -0
  509. package/esm2022/filters/text/public-api.mjs +3 -0
  510. package/esm2022/filters/text/text-filter.component.mjs +29 -0
  511. package/esm2022/filters/text/text-filter.module.mjs +24 -0
  512. package/esm2022/import/components/import.component.mjs +72 -0
  513. package/esm2022/import/i18n/en.translations.mjs +28 -0
  514. package/esm2022/import/i18n/fr.translations.mjs +28 -0
  515. package/esm2022/import/import-routing.module.mjs +32 -0
  516. package/esm2022/import/import.module.mjs +61 -0
  517. package/esm2022/import/provoly-dashboard-import.mjs +5 -0
  518. package/esm2022/import/public-api.mjs +3 -0
  519. package/esm2022/import/store/import.actions.mjs +7 -0
  520. package/esm2022/import/store/import.effects.mjs +32 -0
  521. package/esm2022/import/store/import.reducer.mjs +23 -0
  522. package/esm2022/import/store/import.selectors.mjs +10 -0
  523. package/esm2022/import/store/import.service.mjs +29 -0
  524. package/esm2022/import/style/css.component.mjs +11 -0
  525. package/esm2022/lib/core/access/access.directive.mjs +45 -0
  526. package/esm2022/lib/core/access/access.guard.mjs +21 -0
  527. package/esm2022/lib/core/access/access.model.mjs +2 -0
  528. package/esm2022/lib/core/access/access.service.mjs +20 -0
  529. package/esm2022/lib/core/access/access.utils.mjs +83 -0
  530. package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +44 -0
  531. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +29 -0
  532. package/esm2022/lib/core/components/base-toolbox/base-toolbox-action.interface.mjs +2 -0
  533. package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +23 -0
  534. package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +64 -0
  535. package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +206 -0
  536. package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +36 -0
  537. package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +42 -0
  538. package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +92 -0
  539. package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +81 -0
  540. package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +60 -0
  541. package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +22 -0
  542. package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +25 -0
  543. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +30 -0
  544. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +20 -0
  545. package/esm2022/lib/core/components/icon/icon.component.mjs +92 -0
  546. package/esm2022/lib/core/components/icon/icon.module.mjs +19 -0
  547. package/esm2022/lib/core/components/modal/modal.component.mjs +34 -0
  548. package/esm2022/lib/core/components/modal/pry-modal.module.mjs +22 -0
  549. package/esm2022/lib/core/components/modalStatus/modalStatus.component.mjs +35 -0
  550. package/esm2022/lib/core/components/modalStatus/modalStatus.module.mjs +28 -0
  551. package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +77 -0
  552. package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +57 -0
  553. package/esm2022/lib/core/components/overlay/dialog-ref.mjs +15 -0
  554. package/esm2022/lib/core/components/overlay/dialog.service.mjs +71 -0
  555. package/esm2022/lib/core/components/overlay/overlay.constantes.mjs +9 -0
  556. package/esm2022/lib/core/components/overlay/overlay.directive.mjs +125 -0
  557. package/esm2022/lib/core/components/overlay/overlay.module.mjs +23 -0
  558. package/esm2022/lib/core/components/overlay/tooltip.directive.mjs +121 -0
  559. package/esm2022/lib/core/components/range/range.component.mjs +106 -0
  560. package/esm2022/lib/core/components/range/range.module.mjs +19 -0
  561. package/esm2022/lib/core/components/select/select.component.mjs +118 -0
  562. package/esm2022/lib/core/components/select/select.module.mjs +22 -0
  563. package/esm2022/lib/core/components/select-image/select-image.component.mjs +84 -0
  564. package/esm2022/lib/core/components/share/share.component.mjs +83 -0
  565. package/esm2022/lib/core/components/share/share.model.mjs +7 -0
  566. package/esm2022/lib/core/components/share/share.module.mjs +21 -0
  567. package/esm2022/lib/core/components/snackbar/snack.interface.mjs +2 -0
  568. package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +65 -0
  569. package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +19 -0
  570. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +63 -0
  571. package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +54 -0
  572. package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +52 -0
  573. package/esm2022/lib/core/components/sort/sort-header.directive.mjs +13 -0
  574. package/esm2022/lib/core/components/sort/sort-table.directive.mjs +64 -0
  575. package/esm2022/lib/core/components/sort/sort.model.mjs +2 -0
  576. package/esm2022/lib/core/components/sort/sort.module.mjs +23 -0
  577. package/esm2022/lib/core/components/title-presentation/title-presentation.component.mjs +26 -0
  578. package/esm2022/lib/core/components/toggle/toggle.component.mjs +100 -0
  579. package/esm2022/lib/core/components/toggle/toggle.module.mjs +21 -0
  580. package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +115 -0
  581. package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +27 -0
  582. package/esm2022/lib/core/components/upload/upload.component.mjs +88 -0
  583. package/esm2022/lib/core/core.module.mjs +179 -0
  584. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +44 -0
  585. package/esm2022/lib/core/i18n/deep-merge.function.mjs +21 -0
  586. package/esm2022/lib/core/i18n/en.translations.mjs +323 -0
  587. package/esm2022/lib/core/i18n/fr.translations.mjs +323 -0
  588. package/esm2022/lib/core/i18n/i18n.module.mjs +16 -0
  589. package/esm2022/lib/core/i18n/i18n.pipe.mjs +42 -0
  590. package/esm2022/lib/core/i18n/i18n.service.mjs +88 -0
  591. package/esm2022/lib/core/model/admin-api.model.mjs +45 -0
  592. package/esm2022/lib/core/model/dataset.interface.mjs +13 -0
  593. package/esm2022/lib/core/model/filter.interface.mjs +2 -0
  594. package/esm2022/lib/core/model/item.interface.mjs +2 -0
  595. package/esm2022/lib/core/model/manifest.interface.mjs +11 -0
  596. package/esm2022/lib/core/model/mimetype-resultset.constant.mjs +2 -0
  597. package/esm2022/lib/core/model/notification-interface.mjs +2 -0
  598. package/esm2022/lib/core/model/public-api.mjs +25 -0
  599. package/esm2022/lib/core/model/relation.interface.mjs +2 -0
  600. package/esm2022/lib/core/model/result-order.interface.mjs +2 -0
  601. package/esm2022/lib/core/model/result-set.interface.mjs +2 -0
  602. package/esm2022/lib/core/model/search-mono-class.model.mjs +17 -0
  603. package/esm2022/lib/core/model/search-multi-class.model.mjs +2 -0
  604. package/esm2022/lib/core/model/tooltip-of-class.interface.mjs +2 -0
  605. package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +26 -0
  606. package/esm2022/lib/core/model/widget-chart-manifest.interface.mjs +63 -0
  607. package/esm2022/lib/core/model/widget-detail-manifest.interface.mjs +2 -0
  608. package/esm2022/lib/core/model/widget-graph-manifest.interface.mjs +2 -0
  609. package/esm2022/lib/core/model/widget-iframe-manifest.interface.mjs +2 -0
  610. package/esm2022/lib/core/model/widget-image-manifest.interface.mjs +2 -0
  611. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +19 -0
  612. package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +2 -0
  613. package/esm2022/lib/core/model/widget-template-manifest.interface.mjs +2 -0
  614. package/esm2022/lib/core/model/widget-tile-manifest.interface.mjs +2 -0
  615. package/esm2022/lib/core/model/widget.interface.mjs +2 -0
  616. package/esm2022/lib/core/public-api.mjs +113 -0
  617. package/esm2022/lib/core/store/category/category.actions.mjs +7 -0
  618. package/esm2022/lib/core/store/category/category.effects.mjs +20 -0
  619. package/esm2022/lib/core/store/category/category.interface.mjs +2 -0
  620. package/esm2022/lib/core/store/category/category.reducer.mjs +19 -0
  621. package/esm2022/lib/core/store/category/category.selectors.mjs +11 -0
  622. package/esm2022/lib/core/store/category/category.service.mjs +26 -0
  623. package/esm2022/lib/core/store/class/class.actions.mjs +13 -0
  624. package/esm2022/lib/core/store/class/class.effects.mjs +26 -0
  625. package/esm2022/lib/core/store/class/class.interface.mjs +2 -0
  626. package/esm2022/lib/core/store/class/class.reducer.mjs +42 -0
  627. package/esm2022/lib/core/store/class/class.selectors.mjs +31 -0
  628. package/esm2022/lib/core/store/class/class.service.mjs +42 -0
  629. package/esm2022/lib/core/store/config/config.actions.mjs +31 -0
  630. package/esm2022/lib/core/store/config/config.effects.mjs +100 -0
  631. package/esm2022/lib/core/store/config/config.reducer.mjs +122 -0
  632. package/esm2022/lib/core/store/config/config.selectors.mjs +82 -0
  633. package/esm2022/lib/core/store/config/config.service.mjs +106 -0
  634. package/esm2022/lib/core/store/config/config.widget.constants.mjs +55 -0
  635. package/esm2022/lib/core/store/config/icon-definitions.interface.mjs +19 -0
  636. package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +37 -0
  637. package/esm2022/lib/core/store/context-menu/context-menu.actions.mjs +6 -0
  638. package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +14 -0
  639. package/esm2022/lib/core/store/context-menu/context-menu.reducer.mjs +29 -0
  640. package/esm2022/lib/core/store/context-menu/context-menu.selectors.mjs +19 -0
  641. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +53 -0
  642. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +151 -0
  643. package/esm2022/lib/core/store/data-source/data-source.model.mjs +2 -0
  644. package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +87 -0
  645. package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +66 -0
  646. package/esm2022/lib/core/store/data-source/data-source.service.mjs +123 -0
  647. package/esm2022/lib/core/store/data-source/named-query-types.model.mjs +7 -0
  648. package/esm2022/lib/core/store/data-source/named-query-utils.mjs +13 -0
  649. package/esm2022/lib/core/store/field/field.actions.mjs +7 -0
  650. package/esm2022/lib/core/store/field/field.effects.mjs +20 -0
  651. package/esm2022/lib/core/store/field/field.interface.mjs +18 -0
  652. package/esm2022/lib/core/store/field/field.reducer.mjs +19 -0
  653. package/esm2022/lib/core/store/field/field.selectors.mjs +19 -0
  654. package/esm2022/lib/core/store/field/field.service.mjs +36 -0
  655. package/esm2022/lib/core/store/image/image.actions.mjs +10 -0
  656. package/esm2022/lib/core/store/image/image.effects.mjs +21 -0
  657. package/esm2022/lib/core/store/image/image.reducer.mjs +23 -0
  658. package/esm2022/lib/core/store/image/image.selectors.mjs +19 -0
  659. package/esm2022/lib/core/store/image/image.service.mjs +72 -0
  660. package/esm2022/lib/core/store/item/item.actions.mjs +7 -0
  661. package/esm2022/lib/core/store/item/item.effects.mjs +44 -0
  662. package/esm2022/lib/core/store/item/item.service.mjs +50 -0
  663. package/esm2022/lib/core/store/raw/raw.service.mjs +50 -0
  664. package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +22 -0
  665. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +48 -0
  666. package/esm2022/lib/core/store/relation-types/relation-types.interface.mjs +2 -0
  667. package/esm2022/lib/core/store/relation-types/relation-types.reducer.mjs +33 -0
  668. package/esm2022/lib/core/store/relation-types/relation-types.selectors.mjs +18 -0
  669. package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +46 -0
  670. package/esm2022/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.mjs +35 -0
  671. package/esm2022/lib/core/store/search/search.actions.mjs +9 -0
  672. package/esm2022/lib/core/store/search/search.constants.mjs +3 -0
  673. package/esm2022/lib/core/store/search/search.effects.mjs +36 -0
  674. package/esm2022/lib/core/store/search/search.reducer.mjs +25 -0
  675. package/esm2022/lib/core/store/search/search.selectors.mjs +9 -0
  676. package/esm2022/lib/core/store/search/search.service.mjs +96 -0
  677. package/esm2022/lib/core/symbol/symbol.service.mjs +182 -0
  678. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +335 -0
  679. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +167 -0
  680. package/esm2022/lib/core/ws/websocket.service.mjs +92 -0
  681. package/esm2022/lib/dashboard/action-bus/bus-action.interface.mjs +2 -0
  682. package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +23 -0
  683. package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +86 -0
  684. package/esm2022/lib/dashboard/action-bus/service/control-message.interface.mjs +2 -0
  685. package/esm2022/lib/dashboard/base-widget.module.mjs +16 -0
  686. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +131 -0
  687. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +267 -0
  688. package/esm2022/lib/dashboard/components/dashboard.component.mjs +558 -0
  689. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +60 -0
  690. package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +33 -0
  691. package/esm2022/lib/dashboard/components/solve-collisions.function.mjs +88 -0
  692. package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +17 -0
  693. package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +45 -0
  694. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +62 -0
  695. package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +59 -0
  696. package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +45 -0
  697. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +474 -0
  698. package/esm2022/lib/dashboard/components/widgets/public-api.mjs +10 -0
  699. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +97 -0
  700. package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +20 -0
  701. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +60 -0
  702. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +90 -0
  703. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.mjs +2 -0
  704. package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +17 -0
  705. package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +183 -0
  706. package/esm2022/lib/dashboard/dashboard.module.mjs +172 -0
  707. package/esm2022/lib/dashboard/date-utils.mjs +7 -0
  708. package/esm2022/lib/dashboard/filter/base-filter.component.mjs +32 -0
  709. package/esm2022/lib/dashboard/filter/base-filter.module.mjs +15 -0
  710. package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +42 -0
  711. package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +67 -0
  712. package/esm2022/lib/dashboard/filter/filter-loader.function.mjs +21 -0
  713. package/esm2022/lib/dashboard/filter/public-api.mjs +6 -0
  714. package/esm2022/lib/dashboard/guard/default-view.guard.mjs +41 -0
  715. package/esm2022/lib/dashboard/item-utils.mjs +167 -0
  716. package/esm2022/lib/dashboard/public-api.mjs +31 -0
  717. package/esm2022/lib/dashboard/resultset-utils.mjs +30 -0
  718. package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +37 -0
  719. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +76 -0
  720. package/esm2022/lib/dashboard/store/dashboard.contants.mjs +5 -0
  721. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +333 -0
  722. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +590 -0
  723. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +118 -0
  724. package/esm2022/lib/dashboard/store/geocoding.service.mjs +44 -0
  725. package/esm2022/lib/dashboard/store/manifest.service.mjs +95 -0
  726. package/esm2022/lib/dashboard/store/refresh.service.mjs +37 -0
  727. package/esm2022/lib/dashboard/store/title.service.mjs +39 -0
  728. package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +20 -0
  729. package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +16 -0
  730. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +15 -0
  731. package/esm2022/lib/dashboard/tooltip/public-api.mjs +6 -0
  732. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +77 -0
  733. package/esm2022/lib/dashboard/tooltip/tooltip-loader.function.mjs +22 -0
  734. package/esm2022/lib/dashboard/widget-loader.function.mjs +22 -0
  735. package/esm2022/notification/components/notification/content/notification-content.component.mjs +62 -0
  736. package/esm2022/notification/components/notification/notification.component.mjs +59 -0
  737. package/esm2022/notification/i18n/en.translations.mjs +23 -0
  738. package/esm2022/notification/i18n/fr.translations.mjs +23 -0
  739. package/esm2022/notification/notification.module.mjs +53 -0
  740. package/esm2022/notification/provoly-dashboard-notification.mjs +5 -0
  741. package/esm2022/notification/public-api.mjs +9 -0
  742. package/esm2022/notification/store/notification.actions.mjs +9 -0
  743. package/esm2022/notification/store/notification.effects.mjs +37 -0
  744. package/esm2022/notification/store/notification.reducer.mjs +20 -0
  745. package/esm2022/notification/store/notification.selectors.mjs +9 -0
  746. package/esm2022/notification/store/notification.service.mjs +31 -0
  747. package/esm2022/notification/style/css.component.mjs +11 -0
  748. package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +103 -0
  749. package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +101 -0
  750. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +305 -0
  751. package/esm2022/pipeline/components/pipeline-editor/pipeline.interface.mjs +7 -0
  752. package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +174 -0
  753. package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +22 -0
  754. package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +58 -0
  755. package/esm2022/pipeline/i18n/en.translations.mjs +74 -0
  756. package/esm2022/pipeline/i18n/fr.translations.mjs +74 -0
  757. package/esm2022/pipeline/node-class/base-node.class.mjs +44 -0
  758. package/esm2022/pipeline/pipeline.module.mjs +83 -0
  759. package/esm2022/pipeline/provoly-dashboard-pipeline.mjs +5 -0
  760. package/esm2022/pipeline/public-api.mjs +17 -0
  761. package/esm2022/pipeline/store/pipeline.actions.mjs +15 -0
  762. package/esm2022/pipeline/store/pipeline.effects.mjs +71 -0
  763. package/esm2022/pipeline/store/pipeline.reducer.mjs +41 -0
  764. package/esm2022/pipeline/store/pipeline.selectors.mjs +18 -0
  765. package/esm2022/pipeline/store/pipeline.service.mjs +51 -0
  766. package/esm2022/pipeline/style/css.component.mjs +11 -0
  767. package/esm2022/pipeline-components/filter/component/filter.component.mjs +62 -0
  768. package/esm2022/pipeline-components/filter/filter.module.mjs +52 -0
  769. package/esm2022/pipeline-components/filter/i18n/en.translations.mjs +16 -0
  770. package/esm2022/pipeline-components/filter/i18n/fr.translations.mjs +16 -0
  771. package/esm2022/pipeline-components/filter/node-class/filter-node.class.mjs +10 -0
  772. package/esm2022/pipeline-components/filter/provoly-dashboard-pipeline-components-filter.mjs +5 -0
  773. package/esm2022/pipeline-components/filter/public-api.mjs +4 -0
  774. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +28 -0
  775. package/esm2022/pipeline-components/input-datasource/i18n/en.translations.mjs +8 -0
  776. package/esm2022/pipeline-components/input-datasource/i18n/fr.translations.mjs +8 -0
  777. package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +59 -0
  778. package/esm2022/pipeline-components/input-datasource/node-class/input-datasourse-node.class.mjs +16 -0
  779. package/esm2022/pipeline-components/input-datasource/provoly-dashboard-pipeline-components-input-datasource.mjs +5 -0
  780. package/esm2022/pipeline-components/input-datasource/public-api.mjs +4 -0
  781. package/esm2022/pipeline-components/noop/component/noop.component.mjs +18 -0
  782. package/esm2022/pipeline-components/noop/node-class/noop-node.class.mjs +10 -0
  783. package/esm2022/pipeline-components/noop/noop.module.mjs +46 -0
  784. package/esm2022/pipeline-components/noop/provoly-dashboard-pipeline-components-noop.mjs +5 -0
  785. package/esm2022/pipeline-components/noop/public-api.mjs +4 -0
  786. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +30 -0
  787. package/esm2022/pipeline-components/output-dataset/i18n/en.translations.mjs +8 -0
  788. package/esm2022/pipeline-components/output-dataset/i18n/fr.translations.mjs +8 -0
  789. package/esm2022/pipeline-components/output-dataset/node-class/output-dataset-node.class.mjs +17 -0
  790. package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +60 -0
  791. package/esm2022/pipeline-components/output-dataset/provoly-dashboard-pipeline-components-output-dataset.mjs +5 -0
  792. package/esm2022/pipeline-components/output-dataset/public-api.mjs +4 -0
  793. package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +18 -0
  794. package/esm2022/pipeline-components/subgraph/node-class/sub-graph-input.class.mjs +15 -0
  795. package/esm2022/pipeline-components/subgraph/node-class/sub-graph-node.class.mjs +96 -0
  796. package/esm2022/pipeline-components/subgraph/node-class/sub-graph-output.class.mjs +15 -0
  797. package/esm2022/pipeline-components/subgraph/provoly-dashboard-pipeline-components-subgraph.mjs +5 -0
  798. package/esm2022/pipeline-components/subgraph/public-api.mjs +6 -0
  799. package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +50 -0
  800. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +119 -0
  801. package/esm2022/presentation/components/presentation.component.mjs +231 -0
  802. package/esm2022/presentation/i18n/en.translations.mjs +40 -0
  803. package/esm2022/presentation/i18n/fr.translations.mjs +41 -0
  804. package/esm2022/presentation/presentation.module.mjs +72 -0
  805. package/esm2022/presentation/provoly-dashboard-presentation.mjs +5 -0
  806. package/esm2022/presentation/public-api.mjs +5 -0
  807. package/esm2022/presentation/style/css.component.mjs +11 -0
  808. package/esm2022/provoly-dashboard.mjs +5 -0
  809. package/esm2022/public-api.mjs +6 -0
  810. package/esm2022/restitution/components/restitution/restitution.component.mjs +216 -0
  811. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +114 -0
  812. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +68 -0
  813. package/esm2022/restitution/i18n/en.translations.mjs +44 -0
  814. package/esm2022/restitution/i18n/fr.translations.mjs +44 -0
  815. package/esm2022/restitution/model/restitution.model.mjs +2 -0
  816. package/esm2022/restitution/provoly-dashboard-restitution.mjs +5 -0
  817. package/esm2022/restitution/public-api.mjs +5 -0
  818. package/esm2022/restitution/restitution.module.mjs +86 -0
  819. package/esm2022/restitution/style/css.component.mjs +11 -0
  820. package/esm2022/search/components/choose-widget/choose-widget.component.mjs +67 -0
  821. package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +101 -0
  822. package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +55 -0
  823. package/esm2022/search/components/save-query/save-query.component.mjs +106 -0
  824. package/esm2022/search/components/save-query-button/save-query-button.component.mjs +76 -0
  825. package/esm2022/search/i18n/en.translations.mjs +132 -0
  826. package/esm2022/search/i18n/fr.translations.mjs +132 -0
  827. package/esm2022/search/provoly-dashboard-search.mjs +5 -0
  828. package/esm2022/search/public-api.mjs +13 -0
  829. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +207 -0
  830. package/esm2022/search/search-fulltext/store/search-fulltext.actions.mjs +6 -0
  831. package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +38 -0
  832. package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +22 -0
  833. package/esm2022/search/search-home/search-home.component.mjs +199 -0
  834. package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +78 -0
  835. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +139 -0
  836. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +34 -0
  837. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +69 -0
  838. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +37 -0
  839. package/esm2022/search/search-mono-class/store/search-mono-class.actions.mjs +26 -0
  840. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +112 -0
  841. package/esm2022/search/search-mono-class/store/search-mono-class.reducer.mjs +139 -0
  842. package/esm2022/search/search-mono-class/store/search-mono-class.selectors.mjs +38 -0
  843. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +161 -0
  844. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +150 -0
  845. package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +62 -0
  846. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +37 -0
  847. package/esm2022/search/search-multi-class/store/search-multi-class.actions.mjs +16 -0
  848. package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +66 -0
  849. package/esm2022/search/search-multi-class/store/search-multi-class.reducer.mjs +59 -0
  850. package/esm2022/search/search-multi-class/store/search-multi-class.selectors.mjs +32 -0
  851. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +125 -0
  852. package/esm2022/search/search-tools/search-tools.component.mjs +151 -0
  853. package/esm2022/search/search.module.mjs +156 -0
  854. package/esm2022/search/style/css.component.mjs +11 -0
  855. package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +34 -0
  856. package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +33 -0
  857. package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +51 -0
  858. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +27 -0
  859. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +100 -0
  860. package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +47 -0
  861. package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +32 -0
  862. package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +24 -0
  863. package/esm2022/supervision/components/supervision.component.mjs +19 -0
  864. package/esm2022/supervision/i18n/en.translations.mjs +58 -0
  865. package/esm2022/supervision/i18n/fr.translations.mjs +58 -0
  866. package/esm2022/supervision/provoly-dashboard-supervision.mjs +5 -0
  867. package/esm2022/supervision/public-api.mjs +2 -0
  868. package/esm2022/supervision/store/supervision-api.model.mjs +2 -0
  869. package/esm2022/supervision/store/supervision.actions.mjs +33 -0
  870. package/esm2022/supervision/store/supervision.effects.mjs +60 -0
  871. package/esm2022/supervision/store/supervision.reducer.mjs +115 -0
  872. package/esm2022/supervision/store/supervision.selectors.mjs +35 -0
  873. package/esm2022/supervision/store/supervision.service.mjs +54 -0
  874. package/esm2022/supervision/supervision-routing.module.mjs +96 -0
  875. package/esm2022/supervision/supervision.module.mjs +96 -0
  876. package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +24 -0
  877. package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +43 -0
  878. package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +27 -0
  879. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +235 -0
  880. package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +24 -0
  881. package/esm2022/toolbox/components/named-query/named-query.component.mjs +35 -0
  882. package/esm2022/toolbox/components/save-view/save-view.component.mjs +207 -0
  883. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +109 -0
  884. package/esm2022/toolbox/components/toolbox.component.mjs +32 -0
  885. package/esm2022/toolbox/provoly-dashboard-toolbox.mjs +5 -0
  886. package/esm2022/toolbox/public-api.mjs +12 -0
  887. package/esm2022/toolbox/style/css.component.mjs +11 -0
  888. package/esm2022/toolbox/toolbox.module.mjs +107 -0
  889. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +33 -0
  890. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +24 -0
  891. package/esm2022/tooltips/attribute/provoly-dashboard-tooltips-attribute.mjs +5 -0
  892. package/esm2022/tooltips/attribute/public-api.mjs +3 -0
  893. package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +12 -0
  894. package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +24 -0
  895. package/esm2022/tooltips/cluster/provoly-dashboard-tooltips-cluster.mjs +5 -0
  896. package/esm2022/tooltips/cluster/public-api.mjs +3 -0
  897. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +633 -0
  898. package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +104 -0
  899. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +104 -0
  900. package/esm2022/widgets/widget-aggregated-chart/provoly-dashboard-widgets-widget-aggregated-chart.mjs +5 -0
  901. package/esm2022/widgets/widget-aggregated-chart/public-api.mjs +6 -0
  902. package/esm2022/widgets/widget-aggregated-chart/service/backend-aggregation.service.mjs +103 -0
  903. package/esm2022/widgets/widget-aggregated-chart/service/base-aggregation.service.mjs +16 -0
  904. package/esm2022/widgets/widget-aggregated-chart/service/frontend-aggregation.service.mjs +206 -0
  905. package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +11 -0
  906. package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +72 -0
  907. package/esm2022/widgets/widget-chart/component/vega-error.handler.mjs +36 -0
  908. package/esm2022/widgets/widget-chart/component/vega-spec.constant.mjs +248 -0
  909. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +652 -0
  910. package/esm2022/widgets/widget-chart/i18n/en.translations.mjs +114 -0
  911. package/esm2022/widgets/widget-chart/i18n/fr.translations.mjs +114 -0
  912. package/esm2022/widgets/widget-chart/provoly-dashboard-widgets-widget-chart.mjs +5 -0
  913. package/esm2022/widgets/widget-chart/public-api.mjs +3 -0
  914. package/esm2022/widgets/widget-chart/style/css.component.mjs +11 -0
  915. package/esm2022/widgets/widget-chart/widget-chart.module.mjs +70 -0
  916. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +131 -0
  917. package/esm2022/widgets/widget-detail/i18n/en.translations.mjs +14 -0
  918. package/esm2022/widgets/widget-detail/i18n/fr.translations.mjs +14 -0
  919. package/esm2022/widgets/widget-detail/provoly-dashboard-widgets-widget-detail.mjs +5 -0
  920. package/esm2022/widgets/widget-detail/public-api.mjs +3 -0
  921. package/esm2022/widgets/widget-detail/style/css.component.mjs +11 -0
  922. package/esm2022/widgets/widget-detail/widget-detail.module.mjs +64 -0
  923. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +448 -0
  924. package/esm2022/widgets/widget-graph/i18n/en.translations.mjs +15 -0
  925. package/esm2022/widgets/widget-graph/i18n/fr.translations.mjs +15 -0
  926. package/esm2022/widgets/widget-graph/layout/node.interface.mjs +2 -0
  927. package/esm2022/widgets/widget-graph/layout/simple.function.mjs +99 -0
  928. package/esm2022/widgets/widget-graph/provoly-dashboard-widgets-widget-graph.mjs +5 -0
  929. package/esm2022/widgets/widget-graph/public-api.mjs +4 -0
  930. package/esm2022/widgets/widget-graph/style/css.component.mjs +11 -0
  931. package/esm2022/widgets/widget-graph/widget-graph.module.mjs +73 -0
  932. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +53 -0
  933. package/esm2022/widgets/widget-iframe/i18n/en.translations.mjs +11 -0
  934. package/esm2022/widgets/widget-iframe/i18n/fr.translations.mjs +11 -0
  935. package/esm2022/widgets/widget-iframe/messaging/iframe-message-type.interface.mjs +2 -0
  936. package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +30 -0
  937. package/esm2022/widgets/widget-iframe/provoly-dashboard-widgets-widget-iframe.mjs +5 -0
  938. package/esm2022/widgets/widget-iframe/public-api.mjs +5 -0
  939. package/esm2022/widgets/widget-iframe/style/css.component.mjs +11 -0
  940. package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +66 -0
  941. package/esm2022/widgets/widget-image/component/widget-image.component.mjs +33 -0
  942. package/esm2022/widgets/widget-image/provoly-dashboard-widgets-widget-image.mjs +5 -0
  943. package/esm2022/widgets/widget-image/public-api.mjs +3 -0
  944. package/esm2022/widgets/widget-image/style/css.component.mjs +11 -0
  945. package/esm2022/widgets/widget-image/widget-image.module.mjs +24 -0
  946. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +317 -0
  947. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +822 -0
  948. package/esm2022/widgets/widget-map/i18n/en.translations.mjs +81 -0
  949. package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +81 -0
  950. package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +170 -0
  951. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +52 -0
  952. package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +22 -0
  953. package/esm2022/widgets/widget-map/provoly-dashboard-widgets-widget-map.mjs +5 -0
  954. package/esm2022/widgets/widget-map/public-api.mjs +7 -0
  955. package/esm2022/widgets/widget-map/reader/kmz-zip-reader.class.mjs +57 -0
  956. package/esm2022/widgets/widget-map/reader/map-formats-reader.class.mjs +37 -0
  957. package/esm2022/widgets/widget-map/reader/random-color-style.function.mjs +32 -0
  958. package/esm2022/widgets/widget-map/reader/read-as-text.class.mjs +30 -0
  959. package/esm2022/widgets/widget-map/reader/shp-zip-reader.class.mjs +35 -0
  960. package/esm2022/widgets/widget-map/search-bar/search-bar.control.mjs +66 -0
  961. package/esm2022/widgets/widget-map/style/css.component.mjs +11 -0
  962. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +229 -0
  963. package/esm2022/widgets/widget-map/widget-map.module.mjs +72 -0
  964. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +187 -0
  965. package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +30 -0
  966. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +32 -0
  967. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +29 -0
  968. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +43 -0
  969. package/esm2022/widgets/widget-table/i18n/en.translations.mjs +15 -0
  970. package/esm2022/widgets/widget-table/i18n/fr.translations.mjs +15 -0
  971. package/esm2022/widgets/widget-table/provoly-dashboard-widgets-widget-table.mjs +5 -0
  972. package/esm2022/widgets/widget-table/public-api.mjs +6 -0
  973. package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +21 -0
  974. package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +34 -0
  975. package/esm2022/widgets/widget-table/style/css.component.mjs +11 -0
  976. package/esm2022/widgets/widget-table/widget-table.module.mjs +86 -0
  977. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +86 -0
  978. package/esm2022/widgets/widget-template/provoly-dashboard-widgets-widget-template.mjs +5 -0
  979. package/esm2022/widgets/widget-template/public-api.mjs +3 -0
  980. package/esm2022/widgets/widget-template/style/css.component.mjs +11 -0
  981. package/esm2022/widgets/widget-template/widget-template.module.mjs +52 -0
  982. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +114 -0
  983. package/esm2022/widgets/widget-tile/i18n/en.translations.mjs +13 -0
  984. package/esm2022/widgets/widget-tile/i18n/fr.translations.mjs +13 -0
  985. package/esm2022/widgets/widget-tile/provoly-dashboard-widgets-widget-tile.mjs +5 -0
  986. package/esm2022/widgets/widget-tile/public-api.mjs +3 -0
  987. package/esm2022/widgets/widget-tile/style/css.component.mjs +11 -0
  988. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +72 -0
  989. package/fesm2022/provoly-dashboard-admin.mjs +6992 -0
  990. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -0
  991. package/fesm2022/provoly-dashboard-components-card.mjs +312 -0
  992. package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -0
  993. package/fesm2022/provoly-dashboard-components-checkbox.mjs +81 -0
  994. package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -0
  995. package/fesm2022/provoly-dashboard-components-expand-panel.mjs +88 -0
  996. package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -0
  997. package/fesm2022/provoly-dashboard-components-filter.mjs +36 -0
  998. package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -0
  999. package/fesm2022/provoly-dashboard-components-sinceDate.mjs +60 -0
  1000. package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -0
  1001. package/fesm2022/provoly-dashboard-components-stepper.mjs +175 -0
  1002. package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -0
  1003. package/fesm2022/provoly-dashboard-dataset.mjs +268 -0
  1004. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -0
  1005. package/fesm2022/provoly-dashboard-filters-date.mjs +85 -0
  1006. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -0
  1007. package/fesm2022/provoly-dashboard-filters-list.mjs +65 -0
  1008. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -0
  1009. package/fesm2022/provoly-dashboard-filters-number.mjs +53 -0
  1010. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -0
  1011. package/fesm2022/provoly-dashboard-filters-text.mjs +56 -0
  1012. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -0
  1013. package/fesm2022/provoly-dashboard-import.mjs +302 -0
  1014. package/fesm2022/provoly-dashboard-import.mjs.map +1 -0
  1015. package/fesm2022/provoly-dashboard-notification.mjs +303 -0
  1016. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -0
  1017. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +154 -0
  1018. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -0
  1019. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +116 -0
  1020. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -0
  1021. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +76 -0
  1022. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -0
  1023. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +120 -0
  1024. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -0
  1025. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +188 -0
  1026. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -0
  1027. package/fesm2022/provoly-dashboard-pipeline.mjs +1183 -0
  1028. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -0
  1029. package/fesm2022/provoly-dashboard-presentation.mjs +498 -0
  1030. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -0
  1031. package/fesm2022/provoly-dashboard-restitution.mjs +557 -0
  1032. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -0
  1033. package/fesm2022/provoly-dashboard-search.mjs +2590 -0
  1034. package/fesm2022/provoly-dashboard-search.mjs.map +1 -0
  1035. package/fesm2022/provoly-dashboard-supervision.mjs +866 -0
  1036. package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -0
  1037. package/fesm2022/provoly-dashboard-toolbox.mjs +774 -0
  1038. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -0
  1039. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +60 -0
  1040. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -0
  1041. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +39 -0
  1042. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -0
  1043. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1228 -0
  1044. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -0
  1045. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1238 -0
  1046. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -0
  1047. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +230 -0
  1048. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -0
  1049. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +656 -0
  1050. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -0
  1051. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +173 -0
  1052. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -0
  1053. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +67 -0
  1054. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -0
  1055. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +2055 -0
  1056. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -0
  1057. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +464 -0
  1058. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -0
  1059. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +148 -0
  1060. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -0
  1061. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +219 -0
  1062. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -0
  1063. package/fesm2022/provoly-dashboard.mjs +10650 -0
  1064. package/fesm2022/provoly-dashboard.mjs.map +1 -0
  1065. package/filters/date/date-filter.component.d.ts +17 -0
  1066. package/filters/date/date-filter.module.d.ts +15 -0
  1067. package/filters/date/index.d.ts +5 -0
  1068. package/filters/date/public-api.d.ts +3 -0
  1069. package/filters/date/style/_m-date.scss +6 -0
  1070. package/filters/date/style/css.component.d.ts +5 -0
  1071. package/filters/list/index.d.ts +5 -0
  1072. package/filters/list/list-filter.component.d.ts +12 -0
  1073. package/filters/list/list-filter.module.d.ts +14 -0
  1074. package/filters/list/public-api.d.ts +3 -0
  1075. package/filters/list/style/_m-list.scss +7 -0
  1076. package/filters/list/style/css.component.d.ts +5 -0
  1077. package/filters/number/index.d.ts +5 -0
  1078. package/filters/number/number-filter.component.d.ts +11 -0
  1079. package/filters/number/number-filter.module.d.ts +14 -0
  1080. package/filters/number/public-api.d.ts +2 -0
  1081. package/filters/text/index.d.ts +5 -0
  1082. package/filters/text/public-api.d.ts +2 -0
  1083. package/filters/text/text-filter.component.d.ts +12 -0
  1084. package/filters/text/text-filter.module.d.ts +14 -0
  1085. package/import/components/import.component.d.ts +29 -0
  1086. package/import/i18n/en.translations.d.ts +27 -0
  1087. package/import/i18n/fr.translations.d.ts +27 -0
  1088. package/import/import-routing.module.d.ts +7 -0
  1089. package/import/import.module.d.ts +17 -0
  1090. package/import/index.d.ts +5 -0
  1091. package/import/public-api.d.ts +2 -0
  1092. package/import/store/import.actions.d.ts +33 -0
  1093. package/import/store/import.effects.d.ts +18 -0
  1094. package/import/store/import.reducer.d.ts +11 -0
  1095. package/import/store/import.selectors.d.ts +9 -0
  1096. package/import/store/import.service.d.ts +12 -0
  1097. package/import/style/_o-import.scss +51 -0
  1098. package/import/style/css.component.d.ts +5 -0
  1099. package/index.d.ts +5 -0
  1100. package/lib/core/access/access.directive.d.ts +16 -0
  1101. package/lib/core/access/access.guard.d.ts +13 -0
  1102. package/lib/core/access/access.model.d.ts +24 -0
  1103. package/lib/core/access/access.service.d.ts +13 -0
  1104. package/lib/core/access/access.utils.d.ts +6 -0
  1105. package/lib/core/components/base-layout/base-layout.component.d.ts +20 -0
  1106. package/lib/core/components/base-menu/base-menu.component.d.ts +27 -0
  1107. package/lib/core/components/base-toolbox/base-toolbox-action.interface.d.ts +12 -0
  1108. package/lib/core/components/base-toolbox/base-toolbox.component.d.ts +10 -0
  1109. package/lib/core/components/base-toolbox-action/base-toolbox-action.component.d.ts +23 -0
  1110. package/lib/core/components/date-picker/date-picker.component.d.ts +47 -0
  1111. package/lib/core/components/date-picker/date-picker.module.d.ts +14 -0
  1112. package/lib/core/components/date-picker/date-range-highlight.pipe.d.ts +8 -0
  1113. package/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.d.ts +26 -0
  1114. package/lib/core/components/date-picker/time-picker/time-picker.component.d.ts +28 -0
  1115. package/lib/core/components/edit-input/edit-input.component.d.ts +21 -0
  1116. package/lib/core/components/edit-input/edit-input.module.d.ts +11 -0
  1117. package/lib/core/components/get-secured-image/get-secured-image.pipe.d.ts +16 -0
  1118. package/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.d.ts +12 -0
  1119. package/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.d.ts +9 -0
  1120. package/lib/core/components/icon/icon.component.d.ts +32 -0
  1121. package/lib/core/components/icon/icon.module.d.ts +8 -0
  1122. package/lib/core/components/modal/modal.component.d.ts +11 -0
  1123. package/lib/core/components/modal/pry-modal.module.d.ts +11 -0
  1124. package/lib/core/components/modalStatus/modalStatus.component.d.ts +17 -0
  1125. package/lib/core/components/modalStatus/modalStatus.module.d.ts +13 -0
  1126. package/lib/core/components/nq-color-selector/nq-color-selector.component.d.ts +23 -0
  1127. package/lib/core/components/overlay/dialog-confirm.component.d.ts +29 -0
  1128. package/lib/core/components/overlay/dialog-ref.d.ts +9 -0
  1129. package/lib/core/components/overlay/dialog.service.d.ts +27 -0
  1130. package/lib/core/components/overlay/overlay.constantes.d.ts +4 -0
  1131. package/lib/core/components/overlay/overlay.directive.d.ts +27 -0
  1132. package/lib/core/components/overlay/overlay.module.d.ts +13 -0
  1133. package/lib/core/components/overlay/tooltip.directive.d.ts +28 -0
  1134. package/lib/core/components/range/range.component.d.ts +35 -0
  1135. package/lib/core/components/range/range.module.d.ts +9 -0
  1136. package/lib/core/components/select/select.component.d.ts +42 -0
  1137. package/lib/core/components/select/select.module.d.ts +12 -0
  1138. package/lib/core/components/select-image/select-image.component.d.ts +28 -0
  1139. package/lib/core/components/share/share.component.d.ts +31 -0
  1140. package/lib/core/components/share/share.model.d.ts +9 -0
  1141. package/lib/core/components/share/share.module.d.ts +11 -0
  1142. package/lib/core/components/snackbar/snack.interface.d.ts +6 -0
  1143. package/lib/core/components/snackbar/snackbar/snackbar.component.d.ts +25 -0
  1144. package/lib/core/components/snackbar/snackbar.module.d.ts +9 -0
  1145. package/lib/core/components/snackbar/snackbar.service.d.ts +22 -0
  1146. package/lib/core/components/sort/sort-data.pipe.d.ts +10 -0
  1147. package/lib/core/components/sort/sort-header/sort-header.component.d.ts +16 -0
  1148. package/lib/core/components/sort/sort-header.directive.d.ts +5 -0
  1149. package/lib/core/components/sort/sort-table.directive.d.ts +17 -0
  1150. package/lib/core/components/sort/sort.model.d.ts +4 -0
  1151. package/lib/core/components/sort/sort.module.d.ts +12 -0
  1152. package/lib/core/components/title-presentation/title-presentation.component.d.ts +12 -0
  1153. package/lib/core/components/toggle/toggle.component.d.ts +31 -0
  1154. package/lib/core/components/toggle/toggle.module.d.ts +10 -0
  1155. package/lib/core/components/translate-id/translate-id.pipe.d.ts +20 -0
  1156. package/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.d.ts +18 -0
  1157. package/lib/core/components/upload/upload.component.d.ts +19 -0
  1158. package/lib/core/core.module.d.ts +36 -0
  1159. package/lib/core/errors/http-error-interceptor.service.d.ts +16 -0
  1160. package/lib/core/i18n/deep-merge.function.d.ts +1 -0
  1161. package/lib/core/i18n/en.translations.d.ts +322 -0
  1162. package/lib/core/i18n/fr.translations.d.ts +322 -0
  1163. package/lib/core/i18n/i18n.module.d.ts +7 -0
  1164. package/lib/core/i18n/i18n.pipe.d.ts +16 -0
  1165. package/lib/core/i18n/i18n.service.d.ts +35 -0
  1166. package/lib/core/model/admin-api.model.d.ts +111 -0
  1167. package/lib/core/model/dataset.interface.d.ts +29 -0
  1168. package/lib/core/model/filter.interface.d.ts +20 -0
  1169. package/lib/core/model/item.interface.d.ts +38 -0
  1170. package/lib/core/model/manifest.interface.d.ts +84 -0
  1171. package/lib/core/model/mimetype-resultset.constant.d.ts +1 -0
  1172. package/lib/core/model/notification-interface.d.ts +13 -0
  1173. package/lib/core/model/public-api.d.ts +24 -0
  1174. package/lib/core/model/relation.interface.d.ts +5 -0
  1175. package/lib/core/model/result-order.interface.d.ts +5 -0
  1176. package/lib/core/model/result-set.interface.d.ts +19 -0
  1177. package/lib/core/model/search-mono-class.model.d.ts +49 -0
  1178. package/lib/core/model/search-multi-class.model.d.ts +38 -0
  1179. package/lib/core/model/tooltip-of-class.interface.d.ts +4 -0
  1180. package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +60 -0
  1181. package/lib/core/model/widget-chart-manifest.interface.d.ts +150 -0
  1182. package/lib/core/model/widget-detail-manifest.interface.d.ts +4 -0
  1183. package/lib/core/model/widget-graph-manifest.interface.d.ts +14 -0
  1184. package/lib/core/model/widget-iframe-manifest.interface.d.ts +3 -0
  1185. package/lib/core/model/widget-image-manifest.interface.d.ts +4 -0
  1186. package/lib/core/model/widget-map-manifest.interface.d.ts +97 -0
  1187. package/lib/core/model/widget-table-manifest.interface.d.ts +9 -0
  1188. package/lib/core/model/widget-template-manifest.interface.d.ts +5 -0
  1189. package/lib/core/model/widget-tile-manifest.interface.d.ts +10 -0
  1190. package/lib/core/model/widget.interface.d.ts +13 -0
  1191. package/lib/core/public-api.d.ts +113 -0
  1192. package/lib/core/store/category/category.actions.d.ts +14 -0
  1193. package/lib/core/store/category/category.effects.d.ts +15 -0
  1194. package/lib/core/store/category/category.interface.d.ts +4 -0
  1195. package/lib/core/store/category/category.reducer.d.ts +11 -0
  1196. package/lib/core/store/category/category.selectors.d.ts +6 -0
  1197. package/lib/core/store/category/category.service.d.ts +13 -0
  1198. package/lib/core/store/class/class.actions.d.ts +37 -0
  1199. package/lib/core/store/class/class.effects.d.ts +25 -0
  1200. package/lib/core/store/class/class.interface.d.ts +19 -0
  1201. package/lib/core/store/class/class.reducer.d.ts +15 -0
  1202. package/lib/core/store/class/class.selectors.d.ts +14 -0
  1203. package/lib/core/store/class/class.service.d.ts +22 -0
  1204. package/lib/core/store/config/config.actions.d.ts +185 -0
  1205. package/lib/core/store/config/config.effects.d.ts +51 -0
  1206. package/lib/core/store/config/config.reducer.d.ts +37 -0
  1207. package/lib/core/store/config/config.selectors.d.ts +52 -0
  1208. package/lib/core/store/config/config.service.d.ts +51 -0
  1209. package/lib/core/store/config/config.widget.constants.d.ts +12 -0
  1210. package/lib/core/store/config/icon-definitions.interface.d.ts +34 -0
  1211. package/lib/core/store/config/open-map-tiles.service.d.ts +17 -0
  1212. package/lib/core/store/context-menu/context-menu.actions.d.ts +18 -0
  1213. package/lib/core/store/context-menu/context-menu.effects.d.ts +8 -0
  1214. package/lib/core/store/context-menu/context-menu.reducer.d.ts +12 -0
  1215. package/lib/core/store/context-menu/context-menu.selectors.d.ts +16 -0
  1216. package/lib/core/store/data-source/data-source.actions.d.ts +238 -0
  1217. package/lib/core/store/data-source/data-source.effects.d.ts +106 -0
  1218. package/lib/core/store/data-source/data-source.model.d.ts +32 -0
  1219. package/lib/core/store/data-source/data-source.reducer.d.ts +21 -0
  1220. package/lib/core/store/data-source/data-source.selectors.d.ts +31 -0
  1221. package/lib/core/store/data-source/data-source.service.d.ts +40 -0
  1222. package/lib/core/store/data-source/named-query-types.model.d.ts +5 -0
  1223. package/lib/core/store/data-source/named-query-utils.d.ts +6 -0
  1224. package/lib/core/store/field/field.actions.d.ts +14 -0
  1225. package/lib/core/store/field/field.effects.d.ts +15 -0
  1226. package/lib/core/store/field/field.interface.d.ts +21 -0
  1227. package/lib/core/store/field/field.reducer.d.ts +11 -0
  1228. package/lib/core/store/field/field.selectors.d.ts +7 -0
  1229. package/lib/core/store/field/field.service.d.ts +15 -0
  1230. package/lib/core/store/image/image.actions.d.ts +32 -0
  1231. package/lib/core/store/image/image.effects.d.ts +20 -0
  1232. package/lib/core/store/image/image.reducer.d.ts +9 -0
  1233. package/lib/core/store/image/image.selectors.d.ts +7 -0
  1234. package/lib/core/store/image/image.service.d.ts +29 -0
  1235. package/lib/core/store/item/item.actions.d.ts +18 -0
  1236. package/lib/core/store/item/item.effects.d.ts +27 -0
  1237. package/lib/core/store/item/item.service.d.ts +28 -0
  1238. package/lib/core/store/raw/raw.service.d.ts +18 -0
  1239. package/lib/core/store/relation-types/relation-types.actions.d.ts +65 -0
  1240. package/lib/core/store/relation-types/relation-types.effects.d.ts +31 -0
  1241. package/lib/core/store/relation-types/relation-types.interface.d.ts +8 -0
  1242. package/lib/core/store/relation-types/relation-types.reducer.d.ts +11 -0
  1243. package/lib/core/store/relation-types/relation-types.selectors.d.ts +8 -0
  1244. package/lib/core/store/relation-types/relation-types.service.d.ts +17 -0
  1245. package/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.d.ts +2 -0
  1246. package/lib/core/store/search/search.actions.d.ts +33 -0
  1247. package/lib/core/store/search/search.constants.d.ts +2 -0
  1248. package/lib/core/store/search/search.effects.d.ts +33 -0
  1249. package/lib/core/store/search/search.reducer.d.ts +10 -0
  1250. package/lib/core/store/search/search.selectors.d.ts +5 -0
  1251. package/lib/core/store/search/search.service.d.ts +50 -0
  1252. package/lib/core/symbol/symbol.service.d.ts +27 -0
  1253. package/lib/core/toolbox/toolbox-manifest.service.d.ts +21 -0
  1254. package/lib/core/toolbox/toolbox-menu.service.d.ts +45 -0
  1255. package/lib/core/ws/websocket.service.d.ts +26 -0
  1256. package/lib/dashboard/action-bus/bus-action.interface.d.ts +4 -0
  1257. package/lib/dashboard/action-bus/effect/action-bus.effects.d.ts +13 -0
  1258. package/lib/dashboard/action-bus/service/bus.service.d.ts +22 -0
  1259. package/lib/dashboard/action-bus/service/control-message.interface.d.ts +6 -0
  1260. package/lib/dashboard/base-widget.module.d.ts +9 -0
  1261. package/lib/dashboard/components/context-menu/context-menu.component.d.ts +59 -0
  1262. package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +78 -0
  1263. package/lib/dashboard/components/dashboard.component.d.ts +99 -0
  1264. package/lib/dashboard/components/manifests/manifests.component.d.ts +20 -0
  1265. package/lib/dashboard/components/metadata/metadata.component.d.ts +16 -0
  1266. package/lib/dashboard/components/solve-collisions.function.d.ts +15 -0
  1267. package/lib/dashboard/components/subscriptionner.directive.d.ts +9 -0
  1268. package/lib/dashboard/components/vizualize-raw/vizualize-raw.component.d.ts +26 -0
  1269. package/lib/dashboard/components/widgets/base-widget.component.d.ts +36 -0
  1270. package/lib/dashboard/components/widgets/data-widget.component.d.ts +20 -0
  1271. package/lib/dashboard/components/widgets/header/resultset-size.pipe.d.ts +18 -0
  1272. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +115 -0
  1273. package/lib/dashboard/components/widgets/public-api.d.ts +9 -0
  1274. package/lib/dashboard/components/widgets/settings/settings.component.d.ts +35 -0
  1275. package/lib/dashboard/components/widgets/widget-filler/widget-filler.component.d.ts +10 -0
  1276. package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +24 -0
  1277. package/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.d.ts +34 -0
  1278. package/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.d.ts +11 -0
  1279. package/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.d.ts +9 -0
  1280. package/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.d.ts +39 -0
  1281. package/lib/dashboard/dashboard.module.d.ts +59 -0
  1282. package/lib/dashboard/date-utils.d.ts +3 -0
  1283. package/lib/dashboard/filter/base-filter.component.d.ts +13 -0
  1284. package/lib/dashboard/filter/base-filter.module.d.ts +9 -0
  1285. package/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.d.ts +20 -0
  1286. package/lib/dashboard/filter/filter-factory.service.d.ts +40 -0
  1287. package/lib/dashboard/filter/filter-loader.function.d.ts +3 -0
  1288. package/lib/dashboard/filter/public-api.d.ts +5 -0
  1289. package/lib/dashboard/guard/default-view.guard.d.ts +14 -0
  1290. package/lib/dashboard/item-utils.d.ts +35 -0
  1291. package/lib/dashboard/public-api.d.ts +30 -0
  1292. package/lib/dashboard/resultset-utils.d.ts +4 -0
  1293. package/lib/dashboard/store/dashboard-init.service.d.ts +20 -0
  1294. package/lib/dashboard/store/dashboard.actions.d.ts +455 -0
  1295. package/lib/dashboard/store/dashboard.contants.d.ts +4 -0
  1296. package/lib/dashboard/store/dashboard.effects.d.ts +226 -0
  1297. package/lib/dashboard/store/dashboard.reducers.d.ts +48 -0
  1298. package/lib/dashboard/store/dashboard.selectors.d.ts +374 -0
  1299. package/lib/dashboard/store/geocoding.service.d.ts +56 -0
  1300. package/lib/dashboard/store/manifest.service.d.ts +26 -0
  1301. package/lib/dashboard/store/refresh.service.d.ts +12 -0
  1302. package/lib/dashboard/store/title.service.d.ts +17 -0
  1303. package/lib/dashboard/tooltip/base-tooltip.component.d.ts +15 -0
  1304. package/lib/dashboard/tooltip/base-tooltip.module.d.ts +9 -0
  1305. package/lib/dashboard/tooltip/components/default/default.tooltip.component.d.ts +6 -0
  1306. package/lib/dashboard/tooltip/public-api.d.ts +5 -0
  1307. package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +42 -0
  1308. package/lib/dashboard/tooltip/tooltip-loader.function.d.ts +3 -0
  1309. package/lib/dashboard/widget-loader.function.d.ts +3 -0
  1310. package/notification/components/notification/content/notification-content.component.d.ts +25 -0
  1311. package/notification/components/notification/notification.component.d.ts +20 -0
  1312. package/notification/i18n/en.translations.d.ts +22 -0
  1313. package/notification/i18n/fr.translations.d.ts +22 -0
  1314. package/notification/index.d.ts +5 -0
  1315. package/notification/notification.module.d.ts +17 -0
  1316. package/notification/public-api.d.ts +9 -0
  1317. package/notification/store/notification.actions.d.ts +20 -0
  1318. package/notification/store/notification.effects.d.ts +18 -0
  1319. package/notification/store/notification.reducer.d.ts +6 -0
  1320. package/notification/store/notification.selectors.d.ts +5 -0
  1321. package/notification/store/notification.service.d.ts +12 -0
  1322. package/notification/style/_m-notifications.scss +127 -0
  1323. package/notification/style/css.component.d.ts +5 -0
  1324. package/package.json +266 -0
  1325. package/pipeline/components/pipeline-details/pipeline-details.component.d.ts +27 -0
  1326. package/pipeline/components/pipeline-editor/graph-serializer.utils.d.ts +8 -0
  1327. package/pipeline/components/pipeline-editor/pipeline-editor.component.d.ts +73 -0
  1328. package/pipeline/components/pipeline-editor/pipeline.interface.d.ts +52 -0
  1329. package/pipeline/components/pipeline-list/pipeline-list.component.d.ts +46 -0
  1330. package/pipeline/components/pipeline-properties-panel.component.d.ts +11 -0
  1331. package/pipeline/factory/pipeline-component-factory.service.d.ts +29 -0
  1332. package/pipeline/i18n/en.translations.d.ts +73 -0
  1333. package/pipeline/i18n/fr.translations.d.ts +73 -0
  1334. package/pipeline/index.d.ts +5 -0
  1335. package/pipeline/node-class/base-node.class.d.ts +13 -0
  1336. package/pipeline/pipeline.module.d.ts +20 -0
  1337. package/pipeline/public-api.d.ts +16 -0
  1338. package/pipeline/store/pipeline.actions.d.ts +81 -0
  1339. package/pipeline/store/pipeline.effects.d.ts +30 -0
  1340. package/pipeline/store/pipeline.reducer.d.ts +13 -0
  1341. package/pipeline/store/pipeline.selectors.d.ts +8 -0
  1342. package/pipeline/store/pipeline.service.d.ts +19 -0
  1343. package/pipeline/style/_o-pipeline.scss +274 -0
  1344. package/pipeline/style/css.component.d.ts +5 -0
  1345. package/pipeline-components/filter/component/filter.component.d.ts +16 -0
  1346. package/pipeline-components/filter/filter.module.d.ts +15 -0
  1347. package/pipeline-components/filter/i18n/en.translations.d.ts +15 -0
  1348. package/pipeline-components/filter/i18n/fr.translations.d.ts +15 -0
  1349. package/pipeline-components/filter/index.d.ts +5 -0
  1350. package/pipeline-components/filter/node-class/filter-node.class.d.ts +4 -0
  1351. package/pipeline-components/filter/public-api.d.ts +3 -0
  1352. package/pipeline-components/input-datasource/component/input-datasource.component.d.ts +13 -0
  1353. package/pipeline-components/input-datasource/i18n/en.translations.d.ts +10 -0
  1354. package/pipeline-components/input-datasource/i18n/fr.translations.d.ts +10 -0
  1355. package/pipeline-components/input-datasource/index.d.ts +5 -0
  1356. package/pipeline-components/input-datasource/input-datasource.module.d.ts +17 -0
  1357. package/pipeline-components/input-datasource/node-class/input-datasourse-node.class.d.ts +5 -0
  1358. package/pipeline-components/input-datasource/public-api.d.ts +3 -0
  1359. package/pipeline-components/noop/component/noop.component.d.ts +7 -0
  1360. package/pipeline-components/noop/index.d.ts +5 -0
  1361. package/pipeline-components/noop/node-class/noop-node.class.d.ts +4 -0
  1362. package/pipeline-components/noop/noop.module.d.ts +13 -0
  1363. package/pipeline-components/noop/public-api.d.ts +3 -0
  1364. package/pipeline-components/output-dataset/component/output-dataset.component.d.ts +13 -0
  1365. package/pipeline-components/output-dataset/i18n/en.translations.d.ts +9 -0
  1366. package/pipeline-components/output-dataset/i18n/fr.translations.d.ts +9 -0
  1367. package/pipeline-components/output-dataset/index.d.ts +5 -0
  1368. package/pipeline-components/output-dataset/node-class/output-dataset-node.class.d.ts +5 -0
  1369. package/pipeline-components/output-dataset/output-dataset.module.d.ts +17 -0
  1370. package/pipeline-components/output-dataset/public-api.d.ts +3 -0
  1371. package/pipeline-components/subgraph/component/empty.component.d.ts +7 -0
  1372. package/pipeline-components/subgraph/index.d.ts +5 -0
  1373. package/pipeline-components/subgraph/node-class/sub-graph-input.class.d.ts +4 -0
  1374. package/pipeline-components/subgraph/node-class/sub-graph-node.class.d.ts +17 -0
  1375. package/pipeline-components/subgraph/node-class/sub-graph-output.class.d.ts +4 -0
  1376. package/pipeline-components/subgraph/public-api.d.ts +5 -0
  1377. package/pipeline-components/subgraph/subgraph.module.d.ts +13 -0
  1378. package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +28 -0
  1379. package/presentation/components/presentation.component.d.ts +55 -0
  1380. package/presentation/i18n/en.translations.d.ts +39 -0
  1381. package/presentation/i18n/fr.translations.d.ts +40 -0
  1382. package/presentation/index.d.ts +5 -0
  1383. package/presentation/presentation.module.d.ts +18 -0
  1384. package/presentation/public-api.d.ts +4 -0
  1385. package/presentation/style/_o-pry-new-presentation.scss +78 -0
  1386. package/presentation/style/_o-pry-presentation.scss +93 -0
  1387. package/presentation/style/css.component.d.ts +5 -0
  1388. package/public-api.d.ts +2 -0
  1389. package/restitution/components/restitution/restitution.component.d.ts +54 -0
  1390. package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +40 -0
  1391. package/restitution/components/restitution-list/restitution-list.component.d.ts +33 -0
  1392. package/restitution/i18n/en.translations.d.ts +43 -0
  1393. package/restitution/i18n/fr.translations.d.ts +43 -0
  1394. package/restitution/index.d.ts +5 -0
  1395. package/restitution/model/restitution.model.d.ts +8 -0
  1396. package/restitution/public-api.d.ts +4 -0
  1397. package/restitution/restitution.module.d.ts +21 -0
  1398. package/restitution/style/_o-restitution-list.scss +161 -0
  1399. package/restitution/style/_o-restitution.scss +32 -0
  1400. package/restitution/style/css.component.d.ts +5 -0
  1401. package/search/components/choose-widget/choose-widget.component.d.ts +34 -0
  1402. package/search/components/edit-named-query/edit-named-query.component.d.ts +37 -0
  1403. package/search/components/edit-named-query-modal/edit-named-query-modal.component.d.ts +17 -0
  1404. package/search/components/save-query/save-query.component.d.ts +36 -0
  1405. package/search/components/save-query-button/save-query-button.component.d.ts +23 -0
  1406. package/search/i18n/en.translations.d.ts +131 -0
  1407. package/search/i18n/fr.translations.d.ts +131 -0
  1408. package/search/index.d.ts +5 -0
  1409. package/search/public-api.d.ts +12 -0
  1410. package/search/search-fulltext/search-fulltext/search-fulltext.component.d.ts +56 -0
  1411. package/search/search-fulltext/store/search-fulltext.actions.d.ts +21 -0
  1412. package/search/search-fulltext/store/search-fulltext.effects.d.ts +25 -0
  1413. package/search/search-fulltext/store/search-fulltext.service.d.ts +7 -0
  1414. package/search/search-home/search-home.component.d.ts +76 -0
  1415. package/search/search-mono-class/components/search-composed/search-composed.component.d.ts +27 -0
  1416. package/search/search-mono-class/components/search-condition/search-condition.component.d.ts +42 -0
  1417. package/search/search-mono-class/components/search-mono-class/search-mono-class.component.d.ts +15 -0
  1418. package/search/search-mono-class/components/search-order/search-order.component.d.ts +25 -0
  1419. package/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.d.ts +16 -0
  1420. package/search/search-mono-class/store/search-mono-class.actions.d.ts +119 -0
  1421. package/search/search-mono-class/store/search-mono-class.effects.d.ts +64 -0
  1422. package/search/search-mono-class/store/search-mono-class.reducer.d.ts +10 -0
  1423. package/search/search-mono-class/store/search-mono-class.selectors.d.ts +13 -0
  1424. package/search/search-mono-class/store/search-mono-class.service.d.ts +20 -0
  1425. package/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.d.ts +39 -0
  1426. package/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.d.ts +24 -0
  1427. package/search/search-multi-class/components/search-multi-class/search-multi-class.component.d.ts +15 -0
  1428. package/search/search-multi-class/store/search-multi-class.actions.d.ts +65 -0
  1429. package/search/search-multi-class/store/search-multi-class.effects.d.ts +39 -0
  1430. package/search/search-multi-class/store/search-multi-class.reducer.d.ts +8 -0
  1431. package/search/search-multi-class/store/search-multi-class.selectors.d.ts +9 -0
  1432. package/search/search-multi-class/store/search-multi-class.service.d.ts +15 -0
  1433. package/search/search-tools/search-tools.component.d.ts +52 -0
  1434. package/search/search.module.d.ts +37 -0
  1435. package/search/style/_m-choose-widget.scss +108 -0
  1436. package/search/style/_m-pry-search-select-attribute.scss +28 -0
  1437. package/search/style/_o-edit-named-query-modal.scss +9 -0
  1438. package/search/style/_o-edit-named-query.scss +29 -0
  1439. package/search/style/_o-multi-class-condition.scss +65 -0
  1440. package/search/style/_o-multi-class-field-selection.scss +64 -0
  1441. package/search/style/_o-pry-search-composed.scss +89 -0
  1442. package/search/style/_o-pry-search-condition.scss +54 -0
  1443. package/search/style/_o-pry-search-home.scss +91 -0
  1444. package/search/style/_o-pry-search-order.scss +14 -0
  1445. package/search/style/_o-pry-search-tools.scss +150 -0
  1446. package/search/style/_o-search-fulltext.scss +154 -0
  1447. package/search/style/_o-search-mono-class.scss +45 -0
  1448. package/search/style/_o-search-multi-class.scss +34 -0
  1449. package/search/style/css.component.d.ts +5 -0
  1450. package/styles/abstracts/_abstracts-overlays.scss +13 -0
  1451. package/styles/abstracts/_abstracts-utils.scss +82 -0
  1452. package/styles/abstracts/_functions.scss +229 -0
  1453. package/styles/abstracts/_index.scss +5 -0
  1454. package/styles/abstracts/_mixins.scss +309 -0
  1455. package/styles/abstracts/_variables.scss +3 -0
  1456. package/styles/base/_custom-scrollbar.scss +9 -0
  1457. package/styles/base/_html-body.scss +5 -0
  1458. package/styles/base/_index.scss +6 -0
  1459. package/styles/base/_normalize.scss +351 -0
  1460. package/styles/base/_reboot.scss +376 -0
  1461. package/styles/base/_typography.scss +25 -0
  1462. package/styles/base/_utils.scss +67 -0
  1463. package/styles/components/_a-badge.scss +8 -0
  1464. package/styles/components/_a-btn.scss +207 -0
  1465. package/styles/components/_a-checkbox.scss +80 -0
  1466. package/styles/components/_a-checkmark.scss +1 -0
  1467. package/styles/components/_a-expandable-value.scss +51 -0
  1468. package/styles/components/_a-form-field.scss +96 -0
  1469. package/styles/components/_a-icon.scss +16 -0
  1470. package/styles/components/_a-label.scss +16 -0
  1471. package/styles/components/_a-link.scss +17 -0
  1472. package/styles/components/_a-loader.scss +30 -0
  1473. package/styles/components/_a-pastille.scss +14 -0
  1474. package/styles/components/_a-pry-select-image.scss +16 -0
  1475. package/styles/components/_a-pry-select.scss +19 -0
  1476. package/styles/components/_a-range-slider.scss +105 -0
  1477. package/styles/components/_a-table.scss +128 -0
  1478. package/styles/components/_a-toggle.scss +150 -0
  1479. package/styles/components/_m-actions-list.scss +25 -0
  1480. package/styles/components/_m-btn-group.scss +58 -0
  1481. package/styles/components/_m-btn-sorttable.scss +75 -0
  1482. package/styles/components/_m-color-selector.scss +58 -0
  1483. package/styles/components/_m-context-menu.scss +52 -0
  1484. package/styles/components/_m-filter.scss +7 -0
  1485. package/styles/components/_m-form-label-field.scss +55 -0
  1486. package/styles/components/_m-form-radio-group.scss +47 -0
  1487. package/styles/components/_m-image-selector.scss +11 -0
  1488. package/styles/components/_m-metadata-tag.scss +55 -0
  1489. package/styles/components/_m-minus-plus.scss +81 -0
  1490. package/styles/components/_m-nav-links.scss +34 -0
  1491. package/styles/components/_m-pry-overlay.scss +56 -0
  1492. package/styles/components/_m-snackbar.scss +52 -0
  1493. package/styles/components/_m-time-picker.scss +55 -0
  1494. package/styles/components/_m-toolbox.scss +21 -0
  1495. package/styles/components/_m-tooltip.scss +91 -0
  1496. package/styles/components/_o-accordion.scss +24 -0
  1497. package/styles/components/_o-card.scss +131 -0
  1498. package/styles/components/_o-cards-list.scss +11 -0
  1499. package/styles/components/_o-dashboard.scss +169 -0
  1500. package/styles/components/_o-datasources.scss +83 -0
  1501. package/styles/components/_o-date-picker.scss +141 -0
  1502. package/styles/components/_o-draggable-menu.scss +54 -0
  1503. package/styles/components/_o-form.scss +29 -0
  1504. package/styles/components/_o-modal.scss +94 -0
  1505. package/styles/components/_o-named-query.scss +43 -0
  1506. package/styles/components/_o-object-panel.scss +109 -0
  1507. package/styles/components/_o-panel.scss +37 -0
  1508. package/styles/components/_o-properties.scss +42 -0
  1509. package/styles/components/_o-pry-admin-classes-customize.scss +130 -0
  1510. package/styles/components/_o-pry-card-menu.scss +105 -0
  1511. package/styles/components/_o-pry-card.scss +97 -0
  1512. package/styles/components/_o-pry-composed-condition.scss +84 -0
  1513. package/styles/components/_o-pry-edit.scss +9 -0
  1514. package/styles/components/_o-pry-expand-panel.scss +36 -0
  1515. package/styles/components/_o-pry-stepper.scss +103 -0
  1516. package/styles/components/_o-search-mono-class.scss +45 -0
  1517. package/styles/components/_o-search-multi-class.scss +34 -0
  1518. package/styles/components/_o-settings.scss +123 -0
  1519. package/styles/components/_o-tabs.scss +108 -0
  1520. package/styles/components/_o-widget.scss +208 -0
  1521. package/styles/components/_overlay.scss +82 -0
  1522. package/styles/layout/_o-base-layout.scss +113 -0
  1523. package/styles/layout/_o-main-layout.scss +38 -0
  1524. package/styles/layout/_o-manifest-layout.scss +89 -0
  1525. package/styles/layout/_o-workspace.scss +61 -0
  1526. package/styles/layout/grid/_grid.scss +141 -0
  1527. package/styles/layout/grid/_visibility.scss +71 -0
  1528. package/styles/layout/grid/mixins/_grid-mixins.scss +368 -0
  1529. package/styles/layout/grid/mixins/_visibility-mixins.scss +115 -0
  1530. package/styles/layout/grid/variables/_grid-variables.scss +41 -0
  1531. package/styles/libs/_reset-lib-ol.scss +35 -0
  1532. package/styles/main.scss +78 -0
  1533. package/styles-theme/abstracts-theme/_abstracts-cards.theme.scss +22 -0
  1534. package/styles-theme/abstracts-theme/_abstracts-overlays.theme.scss +10 -0
  1535. package/styles-theme/abstracts-theme/_index.scss +3 -0
  1536. package/styles-theme/abstracts-theme/_variables.theme.scss +5 -0
  1537. package/styles-theme/abstracts-theme/variables/_index.scss +4 -0
  1538. package/styles-theme/abstracts-theme/variables/_variables-colors.scss +113 -0
  1539. package/styles-theme/abstracts-theme/variables/_variables-decoration.scss +49 -0
  1540. package/styles-theme/abstracts-theme/variables/_variables-fonts.scss +40 -0
  1541. package/styles-theme/abstracts-theme/variables/_variables-typo.scss +138 -0
  1542. package/styles-theme/base-theme/_custom-scrollbar.theme.scss +8 -0
  1543. package/styles-theme/base-theme/_fonts.theme.scss +37 -0
  1544. package/styles-theme/base-theme/_html-body.theme.scss +6 -0
  1545. package/styles-theme/base-theme/_index.scss +4 -0
  1546. package/styles-theme/base-theme/_typography.theme.scss +27 -0
  1547. package/styles-theme/components-theme/_a-badge.theme.scss +21 -0
  1548. package/styles-theme/components-theme/_a-btn.theme.scss +214 -0
  1549. package/styles-theme/components-theme/_a-checkbox.theme.scss +68 -0
  1550. package/styles-theme/components-theme/_a-checkmark.theme.scss +4 -0
  1551. package/styles-theme/components-theme/_a-expandable-value.theme.scss +23 -0
  1552. package/styles-theme/components-theme/_a-form-field.theme.scss +63 -0
  1553. package/styles-theme/components-theme/_a-icon.theme.scss +17 -0
  1554. package/styles-theme/components-theme/_a-label.theme.scss +16 -0
  1555. package/styles-theme/components-theme/_a-link.theme.scss +12 -0
  1556. package/styles-theme/components-theme/_a-pastille.theme.scss +14 -0
  1557. package/styles-theme/components-theme/_a-pry-select.theme.scss +117 -0
  1558. package/styles-theme/components-theme/_a-range-slider.theme.scss +54 -0
  1559. package/styles-theme/components-theme/_a-table.theme.scss +49 -0
  1560. package/styles-theme/components-theme/_a-toggle.theme.scss +62 -0
  1561. package/styles-theme/components-theme/_m-btn-sorttable.theme.scss +45 -0
  1562. package/styles-theme/components-theme/_m-choose-widget.theme.scss +4 -0
  1563. package/styles-theme/components-theme/_m-context-menu.theme.scss +46 -0
  1564. package/styles-theme/components-theme/_m-metadata-tag.theme.scss +17 -0
  1565. package/styles-theme/components-theme/_m-minus-plus.theme.scss +51 -0
  1566. package/styles-theme/components-theme/_m-nav-links.theme.scss +4 -0
  1567. package/styles-theme/components-theme/_m-notifications.theme.scss +90 -0
  1568. package/styles-theme/components-theme/_m-pry-search-select-attribute.theme.scss +15 -0
  1569. package/styles-theme/components-theme/_m-snackbar.theme.scss +42 -0
  1570. package/styles-theme/components-theme/_m-time-picker.theme.scss +36 -0
  1571. package/styles-theme/components-theme/_m-toolbox.theme.scss +15 -0
  1572. package/styles-theme/components-theme/_m-tooltip.theme.scss +66 -0
  1573. package/styles-theme/components-theme/_o-card.theme.scss +45 -0
  1574. package/styles-theme/components-theme/_o-catalog.theme.scss +74 -0
  1575. package/styles-theme/components-theme/_o-datasources.theme.scss +38 -0
  1576. package/styles-theme/components-theme/_o-date-picker.theme.scss +37 -0
  1577. package/styles-theme/components-theme/_o-draggable-menu.theme.scss +26 -0
  1578. package/styles-theme/components-theme/_o-modal.theme.scss +28 -0
  1579. package/styles-theme/components-theme/_o-multi-class-condition.theme.scss +22 -0
  1580. package/styles-theme/components-theme/_o-multi-class-field-selection.theme.scss +43 -0
  1581. package/styles-theme/components-theme/_o-named-query.theme.scss +19 -0
  1582. package/styles-theme/components-theme/_o-object-panel.theme.scss +11 -0
  1583. package/styles-theme/components-theme/_o-panel.theme.scss +18 -0
  1584. package/styles-theme/components-theme/_o-pipeline.theme.scss +88 -0
  1585. package/styles-theme/components-theme/_o-pry-admin-classes-customize.theme.scss +14 -0
  1586. package/styles-theme/components-theme/_o-pry-card-menu.theme.scss +55 -0
  1587. package/styles-theme/components-theme/_o-pry-card.theme.scss +44 -0
  1588. package/styles-theme/components-theme/_o-pry-composed-condition.theme.scss +60 -0
  1589. package/styles-theme/components-theme/_o-pry-dataset-card.theme.scss +18 -0
  1590. package/styles-theme/components-theme/_o-pry-dataset.theme.scss +12 -0
  1591. package/styles-theme/components-theme/_o-pry-expand-panel.theme.scss +12 -0
  1592. package/styles-theme/components-theme/_o-pry-new-presentation.theme.scss +20 -0
  1593. package/styles-theme/components-theme/_o-pry-presentation.theme.scss +39 -0
  1594. package/styles-theme/components-theme/_o-pry-search-composed.theme.scss +44 -0
  1595. package/styles-theme/components-theme/_o-pry-search-condition.theme.scss +10 -0
  1596. package/styles-theme/components-theme/_o-pry-search-home.theme.scss +25 -0
  1597. package/styles-theme/components-theme/_o-pry-search-tools.theme.scss +54 -0
  1598. package/styles-theme/components-theme/_o-pry-stepper.theme.scss +35 -0
  1599. package/styles-theme/components-theme/_o-restitution-list.theme.scss +27 -0
  1600. package/styles-theme/components-theme/_o-restitution.theme.scss +7 -0
  1601. package/styles-theme/components-theme/_o-search-fulltext.theme.scss +83 -0
  1602. package/styles-theme/components-theme/_o-search-multi-class.theme.scss +28 -0
  1603. package/styles-theme/components-theme/_o-select-grid-layout.theme.scss +33 -0
  1604. package/styles-theme/components-theme/_o-settings.theme.scss +64 -0
  1605. package/styles-theme/components-theme/_o-tabs.theme.scss +37 -0
  1606. package/styles-theme/components-theme/_o-widget-detail.theme.scss +21 -0
  1607. package/styles-theme/components-theme/_o-widget-graph.theme.scss +32 -0
  1608. package/styles-theme/components-theme/_o-widget-iframe.theme.scss +30 -0
  1609. package/styles-theme/components-theme/_o-widget-map.theme.scss +5 -0
  1610. package/styles-theme/components-theme/_o-widget-table.theme.scss +18 -0
  1611. package/styles-theme/components-theme/_o-widget-tile.theme.scss +21 -0
  1612. package/styles-theme/components-theme/_o-widget.theme.scss +70 -0
  1613. package/styles-theme/components-theme/_overlay.theme.scss +44 -0
  1614. package/styles-theme/layout-theme/_o-base-layout.theme.scss +24 -0
  1615. package/styles-theme/layout-theme/_o-manifest-layout.theme.scss +33 -0
  1616. package/styles-theme/layout-theme/_o-workspace.theme.scss +18 -0
  1617. package/styles-theme/libs-theme/_reset-lib-ol.theme.scss +38 -0
  1618. package/styles-theme/main-theme.scss +83 -0
  1619. package/supervision/components/supervision-business-data/supervision-business-data.component.d.ts +14 -0
  1620. package/supervision/components/supervision-flow/supervision-flow.component.d.ts +14 -0
  1621. package/supervision/components/supervision-infrastructures/supervision-infrastructures.component.d.ts +18 -0
  1622. package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +14 -0
  1623. package/supervision/components/supervision-integration-errors/supervision-integration-errors.component.d.ts +29 -0
  1624. package/supervision/components/supervision-layout/supervision-layout.component.d.ts +21 -0
  1625. package/supervision/components/supervision-menu/supervision-menu.component.d.ts +13 -0
  1626. package/supervision/components/supervision-title/supervision-title.component.d.ts +11 -0
  1627. package/supervision/components/supervision.component.d.ts +9 -0
  1628. package/supervision/i18n/en.translations.d.ts +57 -0
  1629. package/supervision/i18n/fr.translations.d.ts +57 -0
  1630. package/supervision/index.d.ts +5 -0
  1631. package/supervision/public-api.d.ts +1 -0
  1632. package/supervision/store/supervision-api.model.d.ts +36 -0
  1633. package/supervision/store/supervision.actions.d.ts +121 -0
  1634. package/supervision/store/supervision.effects.d.ts +51 -0
  1635. package/supervision/store/supervision.reducer.d.ts +22 -0
  1636. package/supervision/store/supervision.selectors.d.ts +18 -0
  1637. package/supervision/store/supervision.service.d.ts +19 -0
  1638. package/supervision/supervision-routing.module.d.ts +7 -0
  1639. package/supervision/supervision.module.d.ts +25 -0
  1640. package/toolbox/components/clear-view/clear-view.component.d.ts +10 -0
  1641. package/toolbox/components/drag-widgets/drag-widgets.component.d.ts +19 -0
  1642. package/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.d.ts +12 -0
  1643. package/toolbox/components/filter-settings/filter-settings.component.d.ts +80 -0
  1644. package/toolbox/components/launch-tab/launch-tab.component.d.ts +10 -0
  1645. package/toolbox/components/named-query/named-query.component.d.ts +15 -0
  1646. package/toolbox/components/save-view/save-view.component.d.ts +53 -0
  1647. package/toolbox/components/select-grid-layout/select-grid-layout.component.d.ts +35 -0
  1648. package/toolbox/components/toolbox.component.d.ts +11 -0
  1649. package/toolbox/index.d.ts +5 -0
  1650. package/toolbox/public-api.d.ts +11 -0
  1651. package/toolbox/style/_o-filter-settings.scss +96 -0
  1652. package/toolbox/style/_o-select-grid-layout.scss +43 -0
  1653. package/toolbox/style/css.component.d.ts +5 -0
  1654. package/toolbox/toolbox.module.d.ts +23 -0
  1655. package/tooltips/attribute/attribute-tooltip.component.d.ts +10 -0
  1656. package/tooltips/attribute/attribute-tooltip.module.d.ts +14 -0
  1657. package/tooltips/attribute/index.d.ts +5 -0
  1658. package/tooltips/attribute/public-api.d.ts +2 -0
  1659. package/tooltips/cluster/cluster-tooltip.component.d.ts +6 -0
  1660. package/tooltips/cluster/cluster-tooltip.module.d.ts +13 -0
  1661. package/tooltips/cluster/index.d.ts +5 -0
  1662. package/tooltips/cluster/public-api.d.ts +2 -0
  1663. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +101 -0
  1664. package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +103 -0
  1665. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +103 -0
  1666. package/widgets/widget-aggregated-chart/index.d.ts +5 -0
  1667. package/widgets/widget-aggregated-chart/public-api.d.ts +5 -0
  1668. package/widgets/widget-aggregated-chart/service/backend-aggregation.service.d.ts +21 -0
  1669. package/widgets/widget-aggregated-chart/service/base-aggregation.service.d.ts +21 -0
  1670. package/widgets/widget-aggregated-chart/service/frontend-aggregation.service.d.ts +32 -0
  1671. package/widgets/widget-aggregated-chart/style/_o-widget-chart.scss +43 -0
  1672. package/widgets/widget-aggregated-chart/style/css.component.d.ts +5 -0
  1673. package/widgets/widget-aggregated-chart/widget-aggregated-chart.module.d.ts +18 -0
  1674. package/widgets/widget-chart/component/vega-error.handler.d.ts +6 -0
  1675. package/widgets/widget-chart/component/vega-spec.constant.d.ts +98 -0
  1676. package/widgets/widget-chart/component/widget-chart.component.d.ts +151 -0
  1677. package/widgets/widget-chart/i18n/en.translations.d.ts +113 -0
  1678. package/widgets/widget-chart/i18n/fr.translations.d.ts +113 -0
  1679. package/widgets/widget-chart/index.d.ts +5 -0
  1680. package/widgets/widget-chart/public-api.d.ts +2 -0
  1681. package/widgets/widget-chart/style/_o-widget-chart.scss +43 -0
  1682. package/widgets/widget-chart/style/css.component.d.ts +5 -0
  1683. package/widgets/widget-chart/widget-chart.module.d.ts +18 -0
  1684. package/widgets/widget-detail/component/widget-detail.component.d.ts +45 -0
  1685. package/widgets/widget-detail/i18n/en.translations.d.ts +13 -0
  1686. package/widgets/widget-detail/i18n/fr.translations.d.ts +13 -0
  1687. package/widgets/widget-detail/index.d.ts +5 -0
  1688. package/widgets/widget-detail/public-api.d.ts +2 -0
  1689. package/widgets/widget-detail/style/_o-widget-detail.scss +60 -0
  1690. package/widgets/widget-detail/style/css.component.d.ts +5 -0
  1691. package/widgets/widget-detail/widget-detail.module.d.ts +18 -0
  1692. package/widgets/widget-graph/component/widget-graph.component.d.ts +101 -0
  1693. package/widgets/widget-graph/i18n/en.translations.d.ts +14 -0
  1694. package/widgets/widget-graph/i18n/fr.translations.d.ts +14 -0
  1695. package/widgets/widget-graph/index.d.ts +5 -0
  1696. package/widgets/widget-graph/layout/node.interface.d.ts +12 -0
  1697. package/widgets/widget-graph/layout/simple.function.d.ts +9 -0
  1698. package/widgets/widget-graph/public-api.d.ts +3 -0
  1699. package/widgets/widget-graph/style/_o-widget-graph.scss +4 -0
  1700. package/widgets/widget-graph/style/css.component.d.ts +5 -0
  1701. package/widgets/widget-graph/widget-graph.module.d.ts +18 -0
  1702. package/widgets/widget-iframe/component/widget-iframe.component.d.ts +20 -0
  1703. package/widgets/widget-iframe/i18n/en.translations.d.ts +10 -0
  1704. package/widgets/widget-iframe/i18n/fr.translations.d.ts +10 -0
  1705. package/widgets/widget-iframe/index.d.ts +5 -0
  1706. package/widgets/widget-iframe/messaging/iframe-message-type.interface.d.ts +8 -0
  1707. package/widgets/widget-iframe/messaging/iframe-messaging.service.d.ts +10 -0
  1708. package/widgets/widget-iframe/public-api.d.ts +4 -0
  1709. package/widgets/widget-iframe/style/_o-widget-iframe.scss +19 -0
  1710. package/widgets/widget-iframe/style/css.component.d.ts +5 -0
  1711. package/widgets/widget-iframe/widget-iframe.module.d.ts +18 -0
  1712. package/widgets/widget-image/component/widget-image.component.d.ts +13 -0
  1713. package/widgets/widget-image/index.d.ts +5 -0
  1714. package/widgets/widget-image/public-api.d.ts +2 -0
  1715. package/widgets/widget-image/style/_o-widget-image.scss +7 -0
  1716. package/widgets/widget-image/style/css.component.d.ts +5 -0
  1717. package/widgets/widget-image/widget-image.module.d.ts +14 -0
  1718. package/widgets/widget-map/component/widget-map-layer.service.d.ts +98 -0
  1719. package/widgets/widget-map/component/widget-map.component.d.ts +136 -0
  1720. package/widgets/widget-map/i18n/en.translations.d.ts +80 -0
  1721. package/widgets/widget-map/i18n/fr.translations.d.ts +80 -0
  1722. package/widgets/widget-map/index.d.ts +5 -0
  1723. package/widgets/widget-map/interaction/selection-interaction.class.d.ts +25 -0
  1724. package/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.d.ts +14 -0
  1725. package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +8 -0
  1726. package/widgets/widget-map/public-api.d.ts +6 -0
  1727. package/widgets/widget-map/reader/kmz-zip-reader.class.d.ts +12 -0
  1728. package/widgets/widget-map/reader/map-formats-reader.class.d.ts +15 -0
  1729. package/widgets/widget-map/reader/random-color-style.function.d.ts +6 -0
  1730. package/widgets/widget-map/reader/read-as-text.class.d.ts +10 -0
  1731. package/widgets/widget-map/reader/shp-zip-reader.class.d.ts +10 -0
  1732. package/widgets/widget-map/search-bar/search-bar.control.d.ts +27 -0
  1733. package/widgets/widget-map/style/_o-layer-legend.scss +42 -0
  1734. package/widgets/widget-map/style/_o-widget-map.scss +69 -0
  1735. package/widgets/widget-map/style/css.component.d.ts +5 -0
  1736. package/widgets/widget-map/utils/widget-map.utils.d.ts +29 -0
  1737. package/widgets/widget-map/widget-map.module.d.ts +20 -0
  1738. package/widgets/widget-table/component/widget-table.component.d.ts +41 -0
  1739. package/widgets/widget-table/expand-value/detach-row.directive.d.ts +12 -0
  1740. package/widgets/widget-table/expand-value/expand-value.component.d.ts +10 -0
  1741. package/widgets/widget-table/expand-value/format-number.pipe.d.ts +12 -0
  1742. package/widgets/widget-table/get-value/get-value.pipe.d.ts +11 -0
  1743. package/widgets/widget-table/i18n/en.translations.d.ts +14 -0
  1744. package/widgets/widget-table/i18n/fr.translations.d.ts +14 -0
  1745. package/widgets/widget-table/index.d.ts +5 -0
  1746. package/widgets/widget-table/public-api.d.ts +5 -0
  1747. package/widgets/widget-table/resizable/resizable.component.d.ts +7 -0
  1748. package/widgets/widget-table/resizable/resizable.directive.d.ts +10 -0
  1749. package/widgets/widget-table/style/_o-widget-table.scss +64 -0
  1750. package/widgets/widget-table/style/css.component.d.ts +5 -0
  1751. package/widgets/widget-table/widget-table.module.d.ts +24 -0
  1752. package/widgets/widget-template/component/widget-template.component.d.ts +21 -0
  1753. package/widgets/widget-template/index.d.ts +5 -0
  1754. package/widgets/widget-template/public-api.d.ts +2 -0
  1755. package/widgets/widget-template/style/_o-widget-template.scss +8 -0
  1756. package/widgets/widget-template/style/css.component.d.ts +5 -0
  1757. package/widgets/widget-template/widget-template.module.d.ts +16 -0
  1758. package/widgets/widget-tile/component/widget-tile.component.d.ts +47 -0
  1759. package/widgets/widget-tile/i18n/en.translations.d.ts +12 -0
  1760. package/widgets/widget-tile/i18n/fr.translations.d.ts +12 -0
  1761. package/widgets/widget-tile/index.d.ts +5 -0
  1762. package/widgets/widget-tile/public-api.d.ts +2 -0
  1763. package/widgets/widget-tile/style/_o-widget-tile.scss +83 -0
  1764. package/widgets/widget-tile/style/css.component.d.ts +5 -0
  1765. package/widgets/widget-tile/widget-tile.module.d.ts +20 -0
@@ -0,0 +1,2590 @@
1
+ import * as i2$1 from '@angular/cdk/overlay';
2
+ import { OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
3
+ import { TemplatePortal, PortalModule } from '@angular/cdk/portal';
4
+ import * as i2 from '@angular/common';
5
+ import { CommonModule } from '@angular/common';
6
+ import * as i0 from '@angular/core';
7
+ import { EventEmitter, Component, ViewEncapsulation, ViewChild, Input, Output, Inject, TemplateRef, ChangeDetectionStrategy, HostBinding, HostListener, Injectable, ElementRef, NgModule } from '@angular/core';
8
+ import * as i4 from '@angular/forms';
9
+ import { Validators, UntypedFormGroup, UntypedFormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
10
+ import * as i1$1 from '@ngrx/effects';
11
+ import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
12
+ import * as i1 from '@ngrx/store';
13
+ import { createAction, props, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
14
+ import * as i3 from '@provoly/dashboard';
15
+ import { SubscriptionnerDirective, NamedQueryTypes, ClassSelectors, PryVisibilityType, DataSourceSelectors, DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID, ConfigActions, DataSourceActions, PRY_DIALOG_DATA, defaultMenuStructure, DashboardGridLayout, DashboardSelectors, DashboardActions, PryDialogConfirmComponent, NamedQueryUtils, SearchActions, FieldSelectors, FieldType, OPERATOR_OPTIONS, FieldActions, ClassActions, PryCoreModule, PryIconModule, PrySelectModule, PryToggleModule, PryOverlayModule, PryDashboardModule, PryShareModule, PryDatePickerModule, PryI18nModule } from '@provoly/dashboard';
16
+ import * as i6 from '@provoly/dashboard/components/card';
17
+ import { PryCardModule } from '@provoly/dashboard/components/card';
18
+ import { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';
19
+ import * as i5 from '@provoly/dashboard/components/expand-panel';
20
+ import { PryExpandPanelModule } from '@provoly/dashboard/components/expand-panel';
21
+ import * as i6$1 from '@provoly/dashboard/components/filter';
22
+ import { PryFilterModule } from '@provoly/dashboard/components/filter';
23
+ import { map, take, Subscription, BehaviorSubject, combineLatest, combineLatestWith, filter, switchMap, Subject, tap, of } from 'rxjs';
24
+ import { map as map$1, debounceTime, withLatestFrom, distinctUntilChanged, filter as filter$1, switchMap as switchMap$1, take as take$1, delay, mergeMap, first, catchError } from 'rxjs/operators';
25
+ import { v4 } from 'uuid';
26
+ import equal from 'fast-deep-equal/es6';
27
+ import * as i5$1 from '@angular/cdk/bidi';
28
+
29
+ class ChooseWidgetComponent extends SubscriptionnerDirective {
30
+ constructor(toolboxMenuService, toolboxManifestService) {
31
+ super();
32
+ this.toolboxMenuService = toolboxMenuService;
33
+ this.toolboxManifestService = toolboxManifestService;
34
+ this.panelOpen = false;
35
+ this.FULL_TEXT = NamedQueryTypes.FULL_TEXT;
36
+ this.selected = new EventEmitter();
37
+ this.TOP_POSITION = {
38
+ originX: 'start',
39
+ originY: 'top',
40
+ overlayX: 'start',
41
+ overlayY: 'bottom'
42
+ };
43
+ this.BOTTOM_POSITION = {
44
+ originX: 'start',
45
+ originY: 'bottom',
46
+ overlayX: 'start',
47
+ overlayY: 'top'
48
+ };
49
+ this.mode = 'button';
50
+ this.width = 200;
51
+ this.widgets$ = this.toolboxMenuService.menuStructure$.pipe(map((menu) => menu
52
+ .map((items) => [...items.sub.filter((s) => this.toolboxManifestService.isModel(s.type))])
53
+ .reduce((acc, items) => [...acc, ...items], [])));
54
+ this.subscriptions.add(this.widgets$.subscribe((widgets) => (this.widgetSelected = [...widgets].sort((a, b) => (a.type === 'table' ? -1 : 1))[0])));
55
+ }
56
+ ngOnChanges() {
57
+ if (this.panelOpen) {
58
+ setTimeout(() => {
59
+ this.chooseWidgets.nativeElement.focus();
60
+ }, 10);
61
+ }
62
+ }
63
+ togglePopup() {
64
+ this.panelOpen = !this.panelOpen;
65
+ }
66
+ onSelectWidget(type) {
67
+ this.widgetSelected = type;
68
+ this.selected.emit(type.type);
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ChooseWidgetComponent, deps: [{ token: i3.ToolboxMenuService }, { token: i3.ToolboxManifestService }], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ChooseWidgetComponent, selector: "pry-choose-widget", inputs: { panelOpen: "panelOpen", mode: "mode", width: "width" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "chooseWidgets", first: true, predicate: ["chooseWidgets"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div cdkOverlayOrigin #originSearch=\"cdkOverlayOrigin\" class=\"m-choose-widget\">\n <button\n type=\"button\"\n title=\"{{ '@pry.widget.buttonChoice' | i18n }}\"\n class=\"a-btn a-btn--primary a-btn--icon-text m-choose-widget__buttons-widget\"\n (click)=\"togglePopup()\"\n *ngIf=\"mode === 'button'\"\n >\n <img\n [alt]=\"widgetSelected?.label\"\n [src]=\"widgetSelected?.icon | getSecuredImage | async\"\n [width]=\"22\"\n [height]=\"22\"\n />\n <span>{{ widgetSelected ? (widgetSelected.label | i18n) : ('@pry.toolbox.table' | i18n) }}</span>\n </button>\n</div>\n\n<div class=\"m-choose-widget__input\" [class.choose-widget__input__inline]=\"mode === 'inline'\" *ngIf=\"mode !== 'button'\">\n <ng-content></ng-content>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"originSearch\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"[BOTTOM_POSITION, TOP_POSITION]\"\n>\n <div class=\"m-choose-widget__widget_overlay\" (keydown.escape)=\"togglePopup()\" [style.width.px]=\"width\">\n <div class=\"m-choose-widget__widget_overlay__content\">\n <div *ngFor=\"let widget of widgets$ | async\">\n <button\n #chooseWidgets\n type=\"button\"\n class=\"m-choose-widget__widget_overlay__content__item\"\n [class.choose-widget__widget_overlay__content__item__selected]=\"widget.type === widgetSelected?.type\"\n (click)=\"onSelectWidget(widget)\"\n >\n <img [alt]=\"widget.label | i18n\" [height]=\"22\" [width]=\"22\" [src]=\"widget.icon | getSecuredImage | async\" />\n <span class=\"m-choose-widget__widget_overlay__content__item__label\">{{ widget.label | i18n }}</span>\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }], encapsulation: i0.ViewEncapsulation.None }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ChooseWidgetComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'pry-choose-widget', encapsulation: ViewEncapsulation.None, template: "<div cdkOverlayOrigin #originSearch=\"cdkOverlayOrigin\" class=\"m-choose-widget\">\n <button\n type=\"button\"\n title=\"{{ '@pry.widget.buttonChoice' | i18n }}\"\n class=\"a-btn a-btn--primary a-btn--icon-text m-choose-widget__buttons-widget\"\n (click)=\"togglePopup()\"\n *ngIf=\"mode === 'button'\"\n >\n <img\n [alt]=\"widgetSelected?.label\"\n [src]=\"widgetSelected?.icon | getSecuredImage | async\"\n [width]=\"22\"\n [height]=\"22\"\n />\n <span>{{ widgetSelected ? (widgetSelected.label | i18n) : ('@pry.toolbox.table' | i18n) }}</span>\n </button>\n</div>\n\n<div class=\"m-choose-widget__input\" [class.choose-widget__input__inline]=\"mode === 'inline'\" *ngIf=\"mode !== 'button'\">\n <ng-content></ng-content>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"originSearch\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"[BOTTOM_POSITION, TOP_POSITION]\"\n>\n <div class=\"m-choose-widget__widget_overlay\" (keydown.escape)=\"togglePopup()\" [style.width.px]=\"width\">\n <div class=\"m-choose-widget__widget_overlay__content\">\n <div *ngFor=\"let widget of widgets$ | async\">\n <button\n #chooseWidgets\n type=\"button\"\n class=\"m-choose-widget__widget_overlay__content__item\"\n [class.choose-widget__widget_overlay__content__item__selected]=\"widget.type === widgetSelected?.type\"\n (click)=\"onSelectWidget(widget)\"\n >\n <img [alt]=\"widget.label | i18n\" [height]=\"22\" [width]=\"22\" [src]=\"widget.icon | getSecuredImage | async\" />\n <span class=\"m-choose-widget__widget_overlay__content__item__label\">{{ widget.label | i18n }}</span>\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
76
+ }], ctorParameters: function () { return [{ type: i3.ToolboxMenuService }, { type: i3.ToolboxManifestService }]; }, propDecorators: { chooseWidgets: [{
77
+ type: ViewChild,
78
+ args: ['chooseWidgets']
79
+ }], panelOpen: [{
80
+ type: Input
81
+ }], selected: [{
82
+ type: Output
83
+ }], mode: [{
84
+ type: Input
85
+ }], width: [{
86
+ type: Input
87
+ }] } });
88
+
89
+ const SearchMonoClassActions = {
90
+ save: createAction('[SearchMonoClass] save', props()),
91
+ search: createAction('[SearchMonoClass] launch Mono Class search'),
92
+ load: createAction('[SearchMonoClass] launch Mono Class search'),
93
+ saveMonoClassSearch: createAction('[SearchMonoClass] launch Mono Class search'),
94
+ selectMonoClassSearch: createAction('[Condition] select mono class search', props()),
95
+ addFirstNormalizedCondition: createAction('[Condition] add first normalizedCondition ', props()),
96
+ addNormalizedConditionAttributeForConditionId: createAction('[Condition] add normalizedCondition attribute ', props()),
97
+ addNormalizedConditionComposedForConditionId: createAction('[Condition] add normalizedCondition composed ', props()),
98
+ addNormalizedConditionForConditionId: createAction('[Condition] add normalizedCondition for condition id', props()),
99
+ updateNormalizedConditionOperatorForConditionId: createAction('[Condition] update normalizedCondition operator for condition id', props()),
100
+ updateNormalizedConditionValueForConditionId: createAction('[Condition] update normalizedCondition value for condition id', props()),
101
+ updateNormalizedConditionTypeForConditionId: createAction('[Condition] update normalizedCondition type for condition id', props()),
102
+ deleteNormalizedConditionById: createAction('[Condition] delete normalizedCondition for condition id', props()),
103
+ deleteNormalizedCondition: createAction('[Condition] delete normalizedCondition', props()),
104
+ removeConditionFromComposed: createAction('[Condition] remove normalizedCondition id from parent composed', props()),
105
+ loadExistingConditions: createAction('[SearchMonoClass] load existing conditions', props()),
106
+ addIdCondition: createAction('[SearchMonoClass] add id condition', props()),
107
+ addIdMaster: createAction('[SearchMonoClass] add id master', props()),
108
+ addEntities: createAction('[SearchMonoClass] add entities', props()),
109
+ addIdClass: createAction('[SearchMonoClass] add id class', props()),
110
+ resetSearch: createAction('[SearchMonoClass] reset search'),
111
+ addOrder: createAction('[SearchMonoClass] add order', props())
112
+ };
113
+
114
+ const searchMonoClassFeatureKey = '@pry/search/mono-class';
115
+ const initialSearchMonoClassState = {
116
+ loading: false,
117
+ monoClassConditions: {
118
+ masterId: null,
119
+ ids: [],
120
+ entities: {}
121
+ },
122
+ order: undefined
123
+ };
124
+ const searchMonoClassReducer = createReducer(initialSearchMonoClassState, on(SearchMonoClassActions.selectMonoClassSearch, (state, action) => ({
125
+ ...state,
126
+ monoClassId: action.classId
127
+ })), on(SearchMonoClassActions.addFirstNormalizedCondition, (state, action) => ({
128
+ ...state,
129
+ monoClassConditions: {
130
+ masterId: action.condition.id,
131
+ ids: [action.condition.id],
132
+ entities: {
133
+ [action.condition.id]: action.condition
134
+ }
135
+ }
136
+ })), on(SearchMonoClassActions.addNormalizedConditionForConditionId, (state, action) => {
137
+ const composedIds = [
138
+ ...(state.monoClassConditions.entities[action.conditionId]?.composed ?? []),
139
+ action.condition.id
140
+ ];
141
+ return {
142
+ ...state,
143
+ monoClassConditions: {
144
+ ...state.monoClassConditions,
145
+ ids: [...state.monoClassConditions.ids, action.condition.id],
146
+ entities: {
147
+ ...state.monoClassConditions.entities,
148
+ [action.conditionId]: {
149
+ ...state.monoClassConditions.entities[action.conditionId],
150
+ composed: composedIds
151
+ },
152
+ [action.condition.id]: action.condition
153
+ }
154
+ }
155
+ };
156
+ }), on(SearchMonoClassActions.updateNormalizedConditionOperatorForConditionId, (state, action) => ({
157
+ ...state,
158
+ monoClassConditions: {
159
+ ...state.monoClassConditions,
160
+ entities: {
161
+ ...state.monoClassConditions.entities,
162
+ [action.conditionId]: {
163
+ ...state.monoClassConditions.entities[action.conditionId],
164
+ operator: action.operator
165
+ }
166
+ }
167
+ }
168
+ })), on(SearchMonoClassActions.updateNormalizedConditionValueForConditionId, (state, action) => ({
169
+ ...state,
170
+ monoClassConditions: {
171
+ ...state.monoClassConditions,
172
+ entities: {
173
+ ...state.monoClassConditions.entities,
174
+ [action.conditionId]: {
175
+ ...state.monoClassConditions.entities[action.conditionId],
176
+ value: action.value,
177
+ upperValue: action.upperValue
178
+ }
179
+ }
180
+ }
181
+ })), on(SearchMonoClassActions.updateNormalizedConditionTypeForConditionId, (state, action) => ({
182
+ ...state,
183
+ monoClassConditions: {
184
+ ...state.monoClassConditions,
185
+ entities: {
186
+ ...state.monoClassConditions.entities,
187
+ [action.conditionId]: {
188
+ ...state.monoClassConditions.entities[action.conditionId],
189
+ type: action.conditionType
190
+ }
191
+ }
192
+ }
193
+ })), on(SearchMonoClassActions.deleteNormalizedCondition, (state, action) => {
194
+ const ids = [...state.monoClassConditions.ids.filter((id) => id !== action.condition.id)];
195
+ const { [action.condition.id]: value, ...entities } = { ...state.monoClassConditions.entities };
196
+ return {
197
+ ...state,
198
+ monoClassConditions: {
199
+ ...state.monoClassConditions,
200
+ ids,
201
+ entities
202
+ }
203
+ };
204
+ }), on(SearchMonoClassActions.removeConditionFromComposed, (state, action) => ({
205
+ ...state,
206
+ monoClassConditions: {
207
+ ...state.monoClassConditions,
208
+ entities: {
209
+ ...state.monoClassConditions.entities,
210
+ [action.parentId]: {
211
+ ...state.monoClassConditions.entities[action.parentId],
212
+ composed: [
213
+ ...(state.monoClassConditions.entities[action.parentId]?.composed?.filter((el) => el !== action.childrenId) ?? [])
214
+ ]
215
+ }
216
+ }
217
+ }
218
+ })), on(SearchMonoClassActions.addIdCondition, (state, action) => ({
219
+ ...state,
220
+ monoClassConditions: { ...state.monoClassConditions, ids: [...action.ids] }
221
+ })), on(SearchMonoClassActions.addIdMaster, (state, action) => ({
222
+ ...state,
223
+ monoClassConditions: { ...state.monoClassConditions, masterId: action.id }
224
+ })), on(SearchMonoClassActions.addEntities, (state, action) => ({
225
+ ...state,
226
+ monoClassConditions: {
227
+ ...state.monoClassConditions,
228
+ entities: { ...action.entities }
229
+ }
230
+ })), on(SearchMonoClassActions.addIdClass, (state, action) => ({
231
+ ...state,
232
+ monoClassId: action.id
233
+ })), on(SearchMonoClassActions.resetSearch, (state) => ({
234
+ ...state,
235
+ monoClassId: undefined,
236
+ monoClassConditions: {
237
+ masterId: null,
238
+ ids: [],
239
+ entities: {}
240
+ }
241
+ })), on(SearchMonoClassActions.addOrder, (state, action) => ({
242
+ ...state,
243
+ order: action.asc
244
+ ? {
245
+ attribute: action.attribute ?? state.order?.attribute ?? '',
246
+ asc: action.asc
247
+ }
248
+ : undefined
249
+ })));
250
+
251
+ const feature$1 = createFeatureSelector(searchMonoClassFeatureKey);
252
+ const selectMonoClassIdSearch = createSelector(feature$1, (state) => state?.monoClassId);
253
+ const selectMonoClassAttributesSearch = createSelector(ClassSelectors.entities, selectMonoClassIdSearch, (classes, classId) => (classId ? [...new Set(classes[classId]?.attributes ?? [])] : []));
254
+ const selectMonoClassSearchAttributeById = (attributeId) => createSelector(selectMonoClassAttributesSearch, (attributes) => attributes.find((attr) => attr.id === attributeId));
255
+ const selectMonoClassConditions = createSelector(feature$1, (state) => state.monoClassConditions);
256
+ const order = createSelector(feature$1, (state) => state.order);
257
+ const selectMonoClassConditionsMasterId = createSelector(selectMonoClassConditions, (monoClassCondition) => monoClassCondition?.masterId);
258
+ const selectMonoClassConditionsById = (id) => createSelector(selectMonoClassConditions, (monoClassConditions) => monoClassConditions.entities[id]);
259
+ const searchMonoClassValid = createSelector(selectMonoClassConditions, selectMonoClassIdSearch, (conditions, searchClassId) => {
260
+ if (!searchClassId) {
261
+ return false;
262
+ }
263
+ const attributeConditionIds = conditions.ids.filter((id) => conditions.entities[id]?.type === 'ATTRIBUTE');
264
+ return (attributeConditionIds.find((id) => {
265
+ const condition = conditions.entities[id];
266
+ const pattern = condition?.pattern ?? '';
267
+ const value = condition?.value ?? '';
268
+ if (pattern === '' || value === '') {
269
+ return true;
270
+ }
271
+ return !RegExp(pattern).test(`${value}`);
272
+ }) === undefined);
273
+ });
274
+ const SearchMonoClassSelectors = {
275
+ feature: feature$1,
276
+ selectMonoClassIdSearch,
277
+ selectMonoClassAttributesSearch,
278
+ selectMonoClassSearchAttributeById,
279
+ selectMonoClassConditions,
280
+ selectMonoClassConditionsById,
281
+ selectMonoClassConditionsMasterId,
282
+ searchMonoClassValid,
283
+ order
284
+ };
285
+
286
+ const SearchMultiClassActions = {
287
+ updateMultiType: createAction('[Search Multi class] update conditonnal type', props()),
288
+ addNewEmptyCondition: createAction('[SearchMultiClass] add empty condition'),
289
+ addMultiClassCondition: createAction('[SearchMultiClass] add multi class condition', props()),
290
+ updateConditionField: createAction('[SearchMultiClass] update condition field', props()),
291
+ updateCondition: createAction('[SearchMultiClass] update condition', props()),
292
+ updateConditionPattern: createAction('[SearchMultiClass] update condition pattern', props()),
293
+ removeCondition: createAction('[SearchMultiClass] remove condition', props()),
294
+ resetSearch: createAction('[SearchMultiClass] reset search'),
295
+ loadExistingConditions: createAction('[SearchMultiClass] load existing conditions', props()),
296
+ updateConditions: createAction('[SearchMultiClass] update conditions', props()),
297
+ search: createAction('[SearchMultiClass] launch search'),
298
+ save: createAction('[SearchMultiClass] launch save', props())
299
+ };
300
+
301
+ const searchMultiClassFeatureKey = '@pry/search/multi-class';
302
+ const initialSearchState = {
303
+ multiType: 'AND',
304
+ conditions: []
305
+ };
306
+ const searchMultiClassReducer = createReducer(initialSearchState, on(SearchMultiClassActions.updateMultiType, (state, action) => ({
307
+ ...state,
308
+ multiType: action.multiType
309
+ })), on(SearchMultiClassActions.addMultiClassCondition, (state, action) => ({
310
+ ...state,
311
+ conditions: [...state.conditions, action.condition]
312
+ })), on(SearchMultiClassActions.removeCondition, (state, action) => ({
313
+ ...state,
314
+ conditions: [...state.conditions.filter((c) => c.id !== action.conditionId)]
315
+ })), on(SearchMultiClassActions.updateConditionField, (state, action) => ({
316
+ ...state,
317
+ conditions: [
318
+ ...state.conditions.map((c) => c.id === action.conditionId
319
+ ? {
320
+ ...c,
321
+ field: action.field
322
+ }
323
+ : c)
324
+ ]
325
+ })), on(SearchMultiClassActions.updateConditionPattern, (state, action) => ({
326
+ ...state,
327
+ conditions: [
328
+ ...state.conditions.map((c) => c.id === action.conditionId
329
+ ? {
330
+ ...c,
331
+ pattern: action.pattern,
332
+ isDate: action.isDate,
333
+ operator: action.isDate ? 'GREATER_THAN' : 'EQUALS',
334
+ value: null
335
+ }
336
+ : c)
337
+ ]
338
+ })), on(SearchMultiClassActions.updateCondition, (state, action) => ({
339
+ ...state,
340
+ conditions: [
341
+ ...state.conditions.map((c) => c.id === action.conditionId
342
+ ? {
343
+ ...c,
344
+ [action.key]: action.value,
345
+ upperValue: action.upperValue
346
+ }
347
+ : c)
348
+ ]
349
+ })), on(SearchMultiClassActions.updateConditions, (state, action) => ({
350
+ ...state,
351
+ conditions: action.conditions
352
+ })), on(SearchMultiClassActions.resetSearch, (state) => ({
353
+ ...state,
354
+ multiType: 'AND',
355
+ conditions: []
356
+ })));
357
+
358
+ const feature = createFeatureSelector(searchMultiClassFeatureKey);
359
+ const multiType = createSelector(feature, (state) => state?.multiType);
360
+ const conditions = createSelector(feature, (state) => state?.conditions);
361
+ const getConditionById = (id) => createSelector(conditions, (conditions) => conditions?.find((c) => c.id === id));
362
+ // in case when user could choose classes before fields
363
+ const searchMultiClassValid = createSelector(conditions, (conditions) => {
364
+ return (conditions.find((condition) => {
365
+ if (condition.field === undefined) {
366
+ return true;
367
+ }
368
+ if ((condition.value ?? '') === '') {
369
+ return true;
370
+ }
371
+ if (condition.pattern) {
372
+ const pattern = condition.pattern;
373
+ const value = condition.value;
374
+ const patternTest = RegExp(pattern).test(value);
375
+ return !patternTest;
376
+ }
377
+ return false;
378
+ }) === undefined);
379
+ });
380
+ const SearchMultiClassSelectors = {
381
+ feature,
382
+ multiType,
383
+ conditions,
384
+ getConditionById,
385
+ searchMultiClassValid
386
+ };
387
+
388
+ const searchFulltextActions = {
389
+ search: createAction('[Search Fulltext] search', props()),
390
+ save: createAction('[Search Fulltext] save', props())
391
+ };
392
+
393
+ class PrySaveQueryComponent {
394
+ get modalSave() {
395
+ return this.data.save;
396
+ }
397
+ get saveDisabled() {
398
+ return ((this.name ?? '') === '' ||
399
+ (this.savedNameQuery?.name === this.name && !this.savedNameQuery?.owner) ||
400
+ this.name.length > 30 ||
401
+ this.description.length > 200);
402
+ }
403
+ constructor(store, dialog, data) {
404
+ this.store = store;
405
+ this.dialog = dialog;
406
+ this.data = data;
407
+ this.value = '';
408
+ this.opened = false;
409
+ this.isEdit = false;
410
+ this.name = '';
411
+ this.description = '';
412
+ this.visibility = {
413
+ type: PryVisibilityType.PRIVATE,
414
+ users: []
415
+ };
416
+ this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);
417
+ }
418
+ ngOnInit() {
419
+ setTimeout(() => {
420
+ this.cross.nativeElement.focus();
421
+ }, 10);
422
+ this.currentEdit$.pipe(take(1)).subscribe((nq) => {
423
+ if (nq) {
424
+ this.savedNameQuery = nq;
425
+ this.id = nq.id;
426
+ this.isEdit = true;
427
+ this.name = nq.name;
428
+ this.description = nq.description ?? '';
429
+ }
430
+ });
431
+ }
432
+ onSave() {
433
+ const id = this.id === DEFAULT_NAMED_QUERY_ID || this.id === EXPLORE_NAMED_QUERY_ID || !this.id ? v4() : this.id;
434
+ if (this.name !== '') {
435
+ const descriptionQuery = {
436
+ name: this.name,
437
+ description: this.description ?? undefined,
438
+ visibility: this.visibility
439
+ };
440
+ switch (this.data.type) {
441
+ case NamedQueryTypes.FULL_TEXT:
442
+ const classes = this.data.payload?.classes ?? [];
443
+ const search = this.data.payload?.value ?? '';
444
+ this.store.dispatch(searchFulltextActions.save({ descriptionQuery, classes, search, id }));
445
+ break;
446
+ case NamedQueryTypes.MONO_CLASS:
447
+ this.store.dispatch(SearchMonoClassActions.save({ descriptionQuery, id }));
448
+ break;
449
+ case NamedQueryTypes.MULTI_CLASS:
450
+ this.store.dispatch(SearchMultiClassActions.save({ descriptionQuery, id }));
451
+ break;
452
+ }
453
+ this.onClose();
454
+ }
455
+ }
456
+ focusCrossElement() {
457
+ this.cross.nativeElement.focus();
458
+ }
459
+ focusValidation() {
460
+ this.save.nativeElement.focus();
461
+ }
462
+ onClose() {
463
+ this.store.dispatch(ConfigActions.closeOverlay({ id: 'PrySaveQueryComponent' }));
464
+ this.store.dispatch(DataSourceActions.namedQuery.stopRename());
465
+ if (this.isEdit) {
466
+ this.store.dispatch(DataSourceActions.namedQuery.stopEdit());
467
+ }
468
+ this.isEdit = false;
469
+ this.dialog.close();
470
+ }
471
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySaveQueryComponent, deps: [{ token: i1.Store }, { token: i3.PryDialogRef }, { token: PRY_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
472
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySaveQueryComponent, selector: "pry-save-query", viewQueries: [{ propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "save", first: true, predicate: ["save"], descendants: true }], ngImport: i0, template: "<div\n class=\"o-modal-wrapper\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_rename\"\n (keydown.escape)=\"onClose()\"\n>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.search.namedQuery.' + (modalSave ? 'saveTitle' : 'renameTitle') | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (keydown.shift.tab)=\"focusValidation()\" (click)=\"onClose()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\">{{ '@pry.search.namedQuery.name' | i18n }}</label>\n <input [(ngModel)]=\"name\" id=\"name\" type=\"text\" class=\"a-form-field\" required maxlength=\"30\" />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"description\">{{ '@pry.search.namedQuery.description' | i18n }}</label>\n <input [(ngModel)]=\"description\" id=\"description\" type=\"text\" class=\"a-form-field\" required maxlength=\"200\" />\n </div>\n\n <pry-share [(ngModel)]=\"visibility\"></pry-share>\n\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"onClose()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"button\"\n #save\n (click)=\"onSave()\"\n class=\"a-btn a-btn--primary\"\n [disabled]=\"saveDisabled\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
473
+ }
474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySaveQueryComponent, decorators: [{
475
+ type: Component,
476
+ args: [{ selector: 'pry-save-query', template: "<div\n class=\"o-modal-wrapper\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_rename\"\n (keydown.escape)=\"onClose()\"\n>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.search.namedQuery.' + (modalSave ? 'saveTitle' : 'renameTitle') | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (keydown.shift.tab)=\"focusValidation()\" (click)=\"onClose()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\">{{ '@pry.search.namedQuery.name' | i18n }}</label>\n <input [(ngModel)]=\"name\" id=\"name\" type=\"text\" class=\"a-form-field\" required maxlength=\"30\" />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"description\">{{ '@pry.search.namedQuery.description' | i18n }}</label>\n <input [(ngModel)]=\"description\" id=\"description\" type=\"text\" class=\"a-form-field\" required maxlength=\"200\" />\n </div>\n\n <pry-share [(ngModel)]=\"visibility\"></pry-share>\n\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"onClose()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"button\"\n #save\n (click)=\"onSave()\"\n class=\"a-btn a-btn--primary\"\n [disabled]=\"saveDisabled\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</div>\n" }]
477
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i3.PryDialogRef }, { type: undefined, decorators: [{
478
+ type: Inject,
479
+ args: [PRY_DIALOG_DATA]
480
+ }] }]; }, propDecorators: { cross: [{
481
+ type: ViewChild,
482
+ args: ['cross']
483
+ }], save: [{
484
+ type: ViewChild,
485
+ args: ['save']
486
+ }] } });
487
+
488
+ class PrySearchCssComponent {
489
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
490
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchCssComponent, selector: "pry-search-css", ngImport: i0, template: '', isInline: true, styles: ["pry-choose-widget{display:flex;max-width:21.875rem;height:2.25rem}.m-choose-widget{display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.m-choose-widget__input{position:relative;display:flex;flex:1;overflow:hidden;width:100%;height:100%;border-radius:0 .25rem .25rem 0;border-left-width:1px;border-left-style:solid;cursor:pointer}.m-choose-widget__input input{height:2.25rem;border:none;outline:none;width:100%;padding-left:.75rem;border-radius:0 .25rem .25rem 0}.m-choose-widget__input__inline{display:contents;flex-grow:0;overflow:hidden;width:inherit;min-width:25rem;border-radius:0}.m-choose-widget__input__inline input{width:360px;border-radius:0}.m-choose-widget__widget_overlay{width:inherit;height:inherit}.m-choose-widget__widget_overlay__content{position:relative;bottom:.125rem;display:flex;justify-content:flex-start;flex-wrap:wrap;gap:.25rem;width:16.4375rem;padding:.5rem;border-radius:.3125rem}.m-choose-widget__widget_overlay__content__item{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;overflow:hidden;width:3.625rem;height:3.625rem;border-radius:.3125rem;cursor:pointer}.m-choose-widget__widget_overlay__content__item:hover{border-width:.0625rem;border-style:solid}.m-choose-widget__widget_overlay__content__item__label{overflow:hidden;width:3.1875rem;margin:0 .125rem;font-size:.6875rem;text-align:center;text-overflow:ellipsis;white-space:nowrap}.m-choose-widget__widget_overlay__content__item__selected{border-width:.0625rem;border-style:solid}.m-choose-widget__buttons-widget img{margin-right:.1875rem;filter:invert(100%)}\n", ".o-edit-named-query-wrapper{height:100%}.o-edit-named-query{display:flex;justify-content:space-between;flex-direction:column;overflow:hidden;height:100%}.o-edit-named-query__content{overflow:auto}.o-edit-named-query__buttons{display:flex;gap:1.25rem}.o-edit-named-query__buttons pry-choose-widget,.o-edit-named-query__buttons .m-choose-widget{height:auto}\n", ".o-search-fulltext{display:flex;align-items:center;justify-content:flex-start;gap:10px;width:inherit}.o-search-fulltext--vertical{flex-direction:column;width:100%}.o-search-fulltext--vertical>.o-search-fulltext__container{width:100%}.o-search-fulltext__container{display:flex;height:2.25rem}.o-search-fulltext__classes{display:flex;align-items:center;overflow:hidden;min-width:3.75rem;height:100%;padding:0;border:none;border-radius:.25rem 0 0 .25rem;cursor:pointer}.o-search-fulltext__classes--inline{width:14.125rem;padding:0;margin:0}.o-search-fulltext__classes--inline .o-search-fulltext__classes__content{flex-direction:row}.o-search-fulltext__classes--inline .o-search-fulltext__classes__content__label{line-height:1}.o-search-fulltext__classes--inline .o-search-fulltext__classes__arrow{width:36px;border-left-width:1px;border-left-style:solid}.o-search-fulltext__classes__content{flex:1;display:flex;align-items:center;gap:.3125rem;padding:.53125rem .75rem}.o-search-fulltext__classes__arrow{display:flex;justify-content:center;align-items:center;width:1.875rem;height:100%}.o-search-fulltext__classes__arrow__icon{transition:transform .3s ease-in-out}.o-search-fulltext__classes__arrow__icon.is-open{transform:rotate(180deg)}.o-search-fulltext__input__clear{position:absolute;right:.625rem;top:.5rem}.o-search-fulltext__input__clear__wrapper{display:flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:.125rem;border-radius:50%}.o-search-fulltext__button{display:flex;width:100%;margin-right:0;margin-top:.3125rem}.o-search-fulltext__button__inline{display:flex;align-items:center;margin:0;padding:0 .375rem;width:inherit;min-width:inherit;height:2.25rem;border-radius:0 .25rem .25rem 0;border:0 solid transparent}.o-search-fulltext__classes-overlay{display:flex;flex-direction:column;overflow:auto;max-height:12.5rem;padding:.3125rem 0}.o-search-fulltext__classes-overlay__inline{width:14.375rem;border-radius:.25rem}.o-search-fulltext__classes-overlay__item{display:flex;align-items:center;gap:.5rem;width:93%;height:2rem;margin:0 auto .1875rem;padding:.5rem;border-radius:.3125rem;cursor:pointer}.o-search-fulltext__classes-overlay__item:first-child{font-weight:700;white-space:nowrap}.o-search-fulltext__classes-overlay__item__label{text-transform:capitalize}\n", ".o-pry-search-composed-wrapper{max-width:max-content;margin-bottom:.875rem;border-radius:.3125rem}.o-pry-search-composed{display:flex;max-width:84%;min-width:94%;padding:.625rem}.o-pry-search-composed__condition{display:flex;align-items:center;max-width:-moz-fit-content;max-width:fit-content}.o-pry-search-composed__condition:first-of-type{margin-top:0;margin-bottom:0;background:transparent}.o-pry-search-composed__condition__type{position:relative;display:flex;align-items:center;justify-content:center;height:100%}.o-pry-search-composed__condition__type .a-toggle{gap:0;margin-top:3px}.o-pry-search-composed__condition__type.-vertical-bar:before{content:\"\";position:absolute;left:calc(50% - 1px);top:-3px;bottom:-3px;display:block;width:2px}.o-pry-search-composed__condition__content{display:flex;align-items:stretch;flex-direction:column;width:max-content;margin-left:1rem;border-radius:.25rem}.o-pry-search-composed__condition__content__footer{display:flex;align-items:center;justify-content:flex-start;gap:.5rem;margin-bottom:.3125rem}.o-pry-search-composed__condition__content__footer .a-btn{margin-top:0}.o-pry-search-composed__condition__content__footer .a-btn:nth-of-type(2){margin-right:0}.o-pry-search-composed__condition__content__footer__remove.a-btn.-circle{width:1.5625rem;height:1.5625rem;padding:.1875rem}pry-search-select-attribute{width:9.75rem}\n", ".o-pry-search-order{display:flex;flex-direction:row;align-items:center;gap:.625rem;padding-bottom:1.25rem}.o-pry-search-order .a-pry-select{width:200px}\n", ".m-pry-search-select-attribute{margin:0;padding:0}.m-pry-search-select-attribute li{list-style:none}.m-pry-search-select-attribute__item:last-of-type{margin-bottom:.375rem}.m-pry-search-select-attribute__item:first-of-type{margin-top:.375rem}.m-pry-search-select-attribute__item .a-btn{overflow:hidden;max-width:-moz-fit-content;max-width:fit-content;height:auto;margin:1px .375rem;padding:.5rem;border-radius:.25rem;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}\n", ".o-multi-class-condition{display:flex;gap:.625rem;justify-content:space-between;margin-top:.3125rem;padding-left:.25rem;border-left-width:.25rem;border-left-style:solid;border-radius:.3125rem;overflow:hidden}.o-multi-class-condition:hover .o-multi-class-condition__delete-content{opacity:1}.o-multi-class-condition__content{display:flex;flex-direction:column;flex:1;gap:.5rem;width:12.8125rem;padding:.5rem 0 .5rem .25rem}.o-multi-class-condition__content__action{display:flex;justify-content:center;align-items:center;gap:.3125rem;cursor:pointer}.o-multi-class-condition__content__action__button{flex:1;margin-right:0;padding-left:.4375rem;padding-right:.4375rem}.o-multi-class-condition__content .m-form-label-field{margin-bottom:.3125rem}.o-multi-class-condition__content .m-form-label-field .a-form-field+.a-form-field{margin-top:.625rem}.o-multi-class-condition__delete-content{display:flex;align-items:center;justify-content:center;width:24px;opacity:0}.o-multi-class-condition__delete-content .a-btn:disabled{pointer-events:auto;cursor:not-allowed}\n", ".o-search-mono-class{display:flex;flex-direction:column;gap:.3125rem;overflow:auto;height:100%;padding:.625rem}.o-search-mono-class__header{display:flex;flex-direction:column;width:100%;gap:.3125rem}.o-search-mono-class__header>.m-form-label-field{margin-bottom:0}.o-search-mono-class__header__selected{display:flex;align-items:center;gap:.5rem}.o-search-mono-class__content-wrapper{overflow-x:hidden;flex:1;width:100%}.o-search-mono-class__content{width:100%;height:100%;overflow:auto}.o-search-mono-class__content__title{margin:2rem 0 1.5625rem}\n", ".o-pry-search-condition-wrapper{display:flex;flex:1;flex-direction:column;gap:.5rem;width:100%;margin:0 .5rem 0rem 0}.o-pry-search-condition{display:flex;align-items:center;gap:.3125rem;width:100%}.o-pry-search-condition__fields{display:flex;align-items:center;gap:.25rem}.o-pry-search-condition__fields.has-date-picker{flex-wrap:wrap;width:min-content}.o-pry-search-condition__fields.has-date-picker .a-form-field{flex-grow:0}.o-pry-search-condition .a-form-field{width:7.8125rem;height:2.25rem}.o-pry-search-condition .a-form-field::placeholder{font-size:13px}.o-pry-search-condition .a-pry-select.operator{width:7.8125rem}.o-pry-search-condition__date-picker{width:15.875rem;margin-right:.0625rem;border-style:solid;border-radius:.25rem;font-size:.875rem}\n", ".o-pry-search-tools-wrapper{display:block;overflow:hidden;height:100%;width:100%;transition:all .3s ease-in-out}.o-pry-search-tools-wrapper.is-close{width:50px}.o-pry-search-tools-wrapper.is-close .o-pry-search-tools__content,.o-pry-search-tools-wrapper.is-close .o-pry-search-tools__footer{opacity:0}.o-pry-search-tools-wrapper.is-mono:not(.is-close){width:700px}.o-pry-search-tools{display:flex;flex-direction:column;overflow:hidden;width:100%;height:100%;transition:all .3s ease-in-out}.o-pry-search-tools.is-close{width:50px;border-right-width:1px;border-right-style:solid}.o-pry-search-tools.is-mono:not(.is-close){width:700px}.o-pry-search-tools__header{position:relative;display:flex;justify-content:space-between;align-items:center;height:4rem;padding:1.375rem .9375rem;border-bottom-width:.0625rem;border-bottom-style:solid}.o-pry-search-tools__header__title{display:flex;gap:1.25rem;align-items:center}.o-pry-search-tools__header__title .a-h2,.o-pry-search-tools__header__title .a-h3{padding-bottom:0}.o-pry-search-tools__header button#hide_search{position:absolute;right:.875rem;top:auto;left:auto}.o-pry-search-tools__header button#hide_search[aria-pressed=true]{transform:rotate(180deg)}.o-pry-search-tools__content{flex:1;display:flex;flex-direction:column;width:100%;overflow-x:hidden;overflow-y:auto;padding:1.25rem .5rem .5rem}.o-pry-search-tools__content__full{flex:1;width:100%;overflow-x:hidden;overflow-y:auto}.o-pry-search-tools__content__button-search{display:flex;justify-content:flex-start;gap:10px}.o-pry-search-tools__content__button-search pry-choose-widget{height:auto}.o-pry-search-tools__content #btn_reset{margin-right:.625rem;margin-bottom:1.875rem;padding:0 .5rem}.o-pry-search-tools__content #btn_reset:focus{outline:2px solid #35b99f}.o-pry-search-tools__content #btn_reset:focus:not(:focus-visible){outline:0}.o-pry-search-tools__content #btn_reset:focus-visible{outline:0;border-radius:.5rem;box-shadow:0 0 0 2px #fff,0 0 0 4px #35b99f}.o-pry-search-tools__content pry-share{padding:0 .625rem}.o-pry-search-tools__footer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%;margin:1rem auto 0;padding:0 .9375rem;border-top-width:.0625rem;border-top-style:solid}.o-pry-search-tools__footer__close{opacity:0}.o-pry-search-tools__footer__params{cursor:pointer}.o-pry-search-tools__footer .save-query-button{display:flex;flex-direction:row;align-items:center;margin:0;padding-left:0}.o-pry-search-tools__footer .save-query-button:disabled{opacity:.5}.o-pry-search-tools__footer .save-query-button__text{padding-left:.25rem;font-size:.875rem}\n", ".o-edit-named-query-modal{top:2.1875rem;bottom:0;width:320px}\n", ".o-multi-class-field-selection__fields{margin:0;padding:0}.o-multi-class-field-selection__fields li{list-style:none}.o-multi-class-field-selection{display:flex;flex-direction:column;width:100%;max-width:34.375rem;min-width:21.875rem;max-height:56.25rem;height:100%;border-radius:.5rem;background-color:#fff;box-shadow:2px 3px 10px 2px #0003}.o-multi-class-field-selection__header{padding:1.5rem;border-radius:.5rem .5rem 0 0}.o-multi-class-field-selection__header__top{display:flex;justify-content:space-between}.o-multi-class-field-selection__header__search{display:flex;flex-direction:column}.o-multi-class-field-selection__legend{padding:.9375rem 1.5rem;font-style:italic}.o-multi-class-field-selection__fields{overflow:auto;margin:0 0 .5rem}.o-multi-class-field-selection__fields__select{padding:.5rem 1.5rem;cursor:pointer}.o-multi-class-field-selection__fields__select .a-btn{gap:6px;max-width:100%;font-weight:500;transition:none;height:4rem}.o-multi-class-field-selection__fields__select__inside{font-weight:300;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}\n", ".o-search-multi-class{position:relative;height:100%;padding:.625rem .3125rem}.o-search-multi-class__header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.5rem}.o-search-multi-class__header .a-h3{padding-bottom:0}.o-search-multi-class__add-condition{padding-top:.625rem}.o-search-multi-class__add-condition .a-btn{margin-bottom:.9375rem}.o-search-multi-class .a-btn.a-btn--icon-text{height:auto;padding:5px 2px}.o-search-multi-class .a-btn.a-btn--icon-text:focus{outline:2px solid #35b99f}.o-search-multi-class .a-btn.a-btn--icon-text:focus:not(:focus-visible){outline:0}.o-search-multi-class .a-btn.a-btn--icon-text:focus-visible{outline:0;border-radius:.375rem;box-shadow:0 0 0 2px #fff,0 0 0 4px #35b99f}\n", ".o-pry-search-home{display:flex;flex-direction:column;align-items:stretch;height:100%}.o-pry-search-home__named-query{flex:1;display:flex;flex-direction:column;overflow:auto}.o-pry-search-home__named-query__card{overflow:auto;max-height:100%}.o-pry-search-home__named-query__card__load{display:flex;justify-content:center;align-items:center;width:5.375rem;height:2.25rem;margin:0 0 0 .3125rem;border-radius:3.125rem;cursor:pointer}.o-pry-search-home__named-query__card__container-menu{z-index:1001;display:flex;flex-direction:column;margin:.125rem;padding:.375rem .9375rem;border-radius:.3125rem;box-shadow:2px 3px 10px 2px #0003}.o-pry-search-home__named-query__card__container-menu>*{padding:.3125rem;cursor:pointer}.o-pry-search-home__named-query__card__container-menu>*:hover{border-radius:.375rem}.o-pry-search-home__named-query #btn_view_more{align-self:flex-end;margin-top:.625rem}.o-pry-search-home__search{display:flex;flex-direction:column;align-items:stretch;gap:.25rem;margin:0 1.125rem;padding-top:1.25rem}.o-pry-search-home__search .a-h3{margin-bottom:.3125rem;padding-bottom:0}.o-pry-search-home__search__or{margin:.3125rem auto;padding:0;text-align:center;font-size:1rem}.o-pry-search-home__search .o-search-fulltext__container{margin-bottom:.625rem}.o-pry-search-home__search .o-search-fulltext__container pry-choose-widget{flex-grow:1}.o-draggable-menu.-search-home{margin-left:14rem;margin-top:-1.6875rem}\n"], encapsulation: i0.ViewEncapsulation.None }); }
491
+ }
492
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchCssComponent, decorators: [{
493
+ type: Component,
494
+ args: [{ selector: 'pry-search-css', template: '', encapsulation: ViewEncapsulation.None, styles: ["pry-choose-widget{display:flex;max-width:21.875rem;height:2.25rem}.m-choose-widget{display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.m-choose-widget__input{position:relative;display:flex;flex:1;overflow:hidden;width:100%;height:100%;border-radius:0 .25rem .25rem 0;border-left-width:1px;border-left-style:solid;cursor:pointer}.m-choose-widget__input input{height:2.25rem;border:none;outline:none;width:100%;padding-left:.75rem;border-radius:0 .25rem .25rem 0}.m-choose-widget__input__inline{display:contents;flex-grow:0;overflow:hidden;width:inherit;min-width:25rem;border-radius:0}.m-choose-widget__input__inline input{width:360px;border-radius:0}.m-choose-widget__widget_overlay{width:inherit;height:inherit}.m-choose-widget__widget_overlay__content{position:relative;bottom:.125rem;display:flex;justify-content:flex-start;flex-wrap:wrap;gap:.25rem;width:16.4375rem;padding:.5rem;border-radius:.3125rem}.m-choose-widget__widget_overlay__content__item{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;overflow:hidden;width:3.625rem;height:3.625rem;border-radius:.3125rem;cursor:pointer}.m-choose-widget__widget_overlay__content__item:hover{border-width:.0625rem;border-style:solid}.m-choose-widget__widget_overlay__content__item__label{overflow:hidden;width:3.1875rem;margin:0 .125rem;font-size:.6875rem;text-align:center;text-overflow:ellipsis;white-space:nowrap}.m-choose-widget__widget_overlay__content__item__selected{border-width:.0625rem;border-style:solid}.m-choose-widget__buttons-widget img{margin-right:.1875rem;filter:invert(100%)}\n", ".o-edit-named-query-wrapper{height:100%}.o-edit-named-query{display:flex;justify-content:space-between;flex-direction:column;overflow:hidden;height:100%}.o-edit-named-query__content{overflow:auto}.o-edit-named-query__buttons{display:flex;gap:1.25rem}.o-edit-named-query__buttons pry-choose-widget,.o-edit-named-query__buttons .m-choose-widget{height:auto}\n", ".o-search-fulltext{display:flex;align-items:center;justify-content:flex-start;gap:10px;width:inherit}.o-search-fulltext--vertical{flex-direction:column;width:100%}.o-search-fulltext--vertical>.o-search-fulltext__container{width:100%}.o-search-fulltext__container{display:flex;height:2.25rem}.o-search-fulltext__classes{display:flex;align-items:center;overflow:hidden;min-width:3.75rem;height:100%;padding:0;border:none;border-radius:.25rem 0 0 .25rem;cursor:pointer}.o-search-fulltext__classes--inline{width:14.125rem;padding:0;margin:0}.o-search-fulltext__classes--inline .o-search-fulltext__classes__content{flex-direction:row}.o-search-fulltext__classes--inline .o-search-fulltext__classes__content__label{line-height:1}.o-search-fulltext__classes--inline .o-search-fulltext__classes__arrow{width:36px;border-left-width:1px;border-left-style:solid}.o-search-fulltext__classes__content{flex:1;display:flex;align-items:center;gap:.3125rem;padding:.53125rem .75rem}.o-search-fulltext__classes__arrow{display:flex;justify-content:center;align-items:center;width:1.875rem;height:100%}.o-search-fulltext__classes__arrow__icon{transition:transform .3s ease-in-out}.o-search-fulltext__classes__arrow__icon.is-open{transform:rotate(180deg)}.o-search-fulltext__input__clear{position:absolute;right:.625rem;top:.5rem}.o-search-fulltext__input__clear__wrapper{display:flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:.125rem;border-radius:50%}.o-search-fulltext__button{display:flex;width:100%;margin-right:0;margin-top:.3125rem}.o-search-fulltext__button__inline{display:flex;align-items:center;margin:0;padding:0 .375rem;width:inherit;min-width:inherit;height:2.25rem;border-radius:0 .25rem .25rem 0;border:0 solid transparent}.o-search-fulltext__classes-overlay{display:flex;flex-direction:column;overflow:auto;max-height:12.5rem;padding:.3125rem 0}.o-search-fulltext__classes-overlay__inline{width:14.375rem;border-radius:.25rem}.o-search-fulltext__classes-overlay__item{display:flex;align-items:center;gap:.5rem;width:93%;height:2rem;margin:0 auto .1875rem;padding:.5rem;border-radius:.3125rem;cursor:pointer}.o-search-fulltext__classes-overlay__item:first-child{font-weight:700;white-space:nowrap}.o-search-fulltext__classes-overlay__item__label{text-transform:capitalize}\n", ".o-pry-search-composed-wrapper{max-width:max-content;margin-bottom:.875rem;border-radius:.3125rem}.o-pry-search-composed{display:flex;max-width:84%;min-width:94%;padding:.625rem}.o-pry-search-composed__condition{display:flex;align-items:center;max-width:-moz-fit-content;max-width:fit-content}.o-pry-search-composed__condition:first-of-type{margin-top:0;margin-bottom:0;background:transparent}.o-pry-search-composed__condition__type{position:relative;display:flex;align-items:center;justify-content:center;height:100%}.o-pry-search-composed__condition__type .a-toggle{gap:0;margin-top:3px}.o-pry-search-composed__condition__type.-vertical-bar:before{content:\"\";position:absolute;left:calc(50% - 1px);top:-3px;bottom:-3px;display:block;width:2px}.o-pry-search-composed__condition__content{display:flex;align-items:stretch;flex-direction:column;width:max-content;margin-left:1rem;border-radius:.25rem}.o-pry-search-composed__condition__content__footer{display:flex;align-items:center;justify-content:flex-start;gap:.5rem;margin-bottom:.3125rem}.o-pry-search-composed__condition__content__footer .a-btn{margin-top:0}.o-pry-search-composed__condition__content__footer .a-btn:nth-of-type(2){margin-right:0}.o-pry-search-composed__condition__content__footer__remove.a-btn.-circle{width:1.5625rem;height:1.5625rem;padding:.1875rem}pry-search-select-attribute{width:9.75rem}\n", ".o-pry-search-order{display:flex;flex-direction:row;align-items:center;gap:.625rem;padding-bottom:1.25rem}.o-pry-search-order .a-pry-select{width:200px}\n", ".m-pry-search-select-attribute{margin:0;padding:0}.m-pry-search-select-attribute li{list-style:none}.m-pry-search-select-attribute__item:last-of-type{margin-bottom:.375rem}.m-pry-search-select-attribute__item:first-of-type{margin-top:.375rem}.m-pry-search-select-attribute__item .a-btn{overflow:hidden;max-width:-moz-fit-content;max-width:fit-content;height:auto;margin:1px .375rem;padding:.5rem;border-radius:.25rem;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}\n", ".o-multi-class-condition{display:flex;gap:.625rem;justify-content:space-between;margin-top:.3125rem;padding-left:.25rem;border-left-width:.25rem;border-left-style:solid;border-radius:.3125rem;overflow:hidden}.o-multi-class-condition:hover .o-multi-class-condition__delete-content{opacity:1}.o-multi-class-condition__content{display:flex;flex-direction:column;flex:1;gap:.5rem;width:12.8125rem;padding:.5rem 0 .5rem .25rem}.o-multi-class-condition__content__action{display:flex;justify-content:center;align-items:center;gap:.3125rem;cursor:pointer}.o-multi-class-condition__content__action__button{flex:1;margin-right:0;padding-left:.4375rem;padding-right:.4375rem}.o-multi-class-condition__content .m-form-label-field{margin-bottom:.3125rem}.o-multi-class-condition__content .m-form-label-field .a-form-field+.a-form-field{margin-top:.625rem}.o-multi-class-condition__delete-content{display:flex;align-items:center;justify-content:center;width:24px;opacity:0}.o-multi-class-condition__delete-content .a-btn:disabled{pointer-events:auto;cursor:not-allowed}\n", ".o-search-mono-class{display:flex;flex-direction:column;gap:.3125rem;overflow:auto;height:100%;padding:.625rem}.o-search-mono-class__header{display:flex;flex-direction:column;width:100%;gap:.3125rem}.o-search-mono-class__header>.m-form-label-field{margin-bottom:0}.o-search-mono-class__header__selected{display:flex;align-items:center;gap:.5rem}.o-search-mono-class__content-wrapper{overflow-x:hidden;flex:1;width:100%}.o-search-mono-class__content{width:100%;height:100%;overflow:auto}.o-search-mono-class__content__title{margin:2rem 0 1.5625rem}\n", ".o-pry-search-condition-wrapper{display:flex;flex:1;flex-direction:column;gap:.5rem;width:100%;margin:0 .5rem 0rem 0}.o-pry-search-condition{display:flex;align-items:center;gap:.3125rem;width:100%}.o-pry-search-condition__fields{display:flex;align-items:center;gap:.25rem}.o-pry-search-condition__fields.has-date-picker{flex-wrap:wrap;width:min-content}.o-pry-search-condition__fields.has-date-picker .a-form-field{flex-grow:0}.o-pry-search-condition .a-form-field{width:7.8125rem;height:2.25rem}.o-pry-search-condition .a-form-field::placeholder{font-size:13px}.o-pry-search-condition .a-pry-select.operator{width:7.8125rem}.o-pry-search-condition__date-picker{width:15.875rem;margin-right:.0625rem;border-style:solid;border-radius:.25rem;font-size:.875rem}\n", ".o-pry-search-tools-wrapper{display:block;overflow:hidden;height:100%;width:100%;transition:all .3s ease-in-out}.o-pry-search-tools-wrapper.is-close{width:50px}.o-pry-search-tools-wrapper.is-close .o-pry-search-tools__content,.o-pry-search-tools-wrapper.is-close .o-pry-search-tools__footer{opacity:0}.o-pry-search-tools-wrapper.is-mono:not(.is-close){width:700px}.o-pry-search-tools{display:flex;flex-direction:column;overflow:hidden;width:100%;height:100%;transition:all .3s ease-in-out}.o-pry-search-tools.is-close{width:50px;border-right-width:1px;border-right-style:solid}.o-pry-search-tools.is-mono:not(.is-close){width:700px}.o-pry-search-tools__header{position:relative;display:flex;justify-content:space-between;align-items:center;height:4rem;padding:1.375rem .9375rem;border-bottom-width:.0625rem;border-bottom-style:solid}.o-pry-search-tools__header__title{display:flex;gap:1.25rem;align-items:center}.o-pry-search-tools__header__title .a-h2,.o-pry-search-tools__header__title .a-h3{padding-bottom:0}.o-pry-search-tools__header button#hide_search{position:absolute;right:.875rem;top:auto;left:auto}.o-pry-search-tools__header button#hide_search[aria-pressed=true]{transform:rotate(180deg)}.o-pry-search-tools__content{flex:1;display:flex;flex-direction:column;width:100%;overflow-x:hidden;overflow-y:auto;padding:1.25rem .5rem .5rem}.o-pry-search-tools__content__full{flex:1;width:100%;overflow-x:hidden;overflow-y:auto}.o-pry-search-tools__content__button-search{display:flex;justify-content:flex-start;gap:10px}.o-pry-search-tools__content__button-search pry-choose-widget{height:auto}.o-pry-search-tools__content #btn_reset{margin-right:.625rem;margin-bottom:1.875rem;padding:0 .5rem}.o-pry-search-tools__content #btn_reset:focus{outline:2px solid #35b99f}.o-pry-search-tools__content #btn_reset:focus:not(:focus-visible){outline:0}.o-pry-search-tools__content #btn_reset:focus-visible{outline:0;border-radius:.5rem;box-shadow:0 0 0 2px #fff,0 0 0 4px #35b99f}.o-pry-search-tools__content pry-share{padding:0 .625rem}.o-pry-search-tools__footer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%;margin:1rem auto 0;padding:0 .9375rem;border-top-width:.0625rem;border-top-style:solid}.o-pry-search-tools__footer__close{opacity:0}.o-pry-search-tools__footer__params{cursor:pointer}.o-pry-search-tools__footer .save-query-button{display:flex;flex-direction:row;align-items:center;margin:0;padding-left:0}.o-pry-search-tools__footer .save-query-button:disabled{opacity:.5}.o-pry-search-tools__footer .save-query-button__text{padding-left:.25rem;font-size:.875rem}\n", ".o-edit-named-query-modal{top:2.1875rem;bottom:0;width:320px}\n", ".o-multi-class-field-selection__fields{margin:0;padding:0}.o-multi-class-field-selection__fields li{list-style:none}.o-multi-class-field-selection{display:flex;flex-direction:column;width:100%;max-width:34.375rem;min-width:21.875rem;max-height:56.25rem;height:100%;border-radius:.5rem;background-color:#fff;box-shadow:2px 3px 10px 2px #0003}.o-multi-class-field-selection__header{padding:1.5rem;border-radius:.5rem .5rem 0 0}.o-multi-class-field-selection__header__top{display:flex;justify-content:space-between}.o-multi-class-field-selection__header__search{display:flex;flex-direction:column}.o-multi-class-field-selection__legend{padding:.9375rem 1.5rem;font-style:italic}.o-multi-class-field-selection__fields{overflow:auto;margin:0 0 .5rem}.o-multi-class-field-selection__fields__select{padding:.5rem 1.5rem;cursor:pointer}.o-multi-class-field-selection__fields__select .a-btn{gap:6px;max-width:100%;font-weight:500;transition:none;height:4rem}.o-multi-class-field-selection__fields__select__inside{font-weight:300;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}\n", ".o-search-multi-class{position:relative;height:100%;padding:.625rem .3125rem}.o-search-multi-class__header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.5rem}.o-search-multi-class__header .a-h3{padding-bottom:0}.o-search-multi-class__add-condition{padding-top:.625rem}.o-search-multi-class__add-condition .a-btn{margin-bottom:.9375rem}.o-search-multi-class .a-btn.a-btn--icon-text{height:auto;padding:5px 2px}.o-search-multi-class .a-btn.a-btn--icon-text:focus{outline:2px solid #35b99f}.o-search-multi-class .a-btn.a-btn--icon-text:focus:not(:focus-visible){outline:0}.o-search-multi-class .a-btn.a-btn--icon-text:focus-visible{outline:0;border-radius:.375rem;box-shadow:0 0 0 2px #fff,0 0 0 4px #35b99f}\n", ".o-pry-search-home{display:flex;flex-direction:column;align-items:stretch;height:100%}.o-pry-search-home__named-query{flex:1;display:flex;flex-direction:column;overflow:auto}.o-pry-search-home__named-query__card{overflow:auto;max-height:100%}.o-pry-search-home__named-query__card__load{display:flex;justify-content:center;align-items:center;width:5.375rem;height:2.25rem;margin:0 0 0 .3125rem;border-radius:3.125rem;cursor:pointer}.o-pry-search-home__named-query__card__container-menu{z-index:1001;display:flex;flex-direction:column;margin:.125rem;padding:.375rem .9375rem;border-radius:.3125rem;box-shadow:2px 3px 10px 2px #0003}.o-pry-search-home__named-query__card__container-menu>*{padding:.3125rem;cursor:pointer}.o-pry-search-home__named-query__card__container-menu>*:hover{border-radius:.375rem}.o-pry-search-home__named-query #btn_view_more{align-self:flex-end;margin-top:.625rem}.o-pry-search-home__search{display:flex;flex-direction:column;align-items:stretch;gap:.25rem;margin:0 1.125rem;padding-top:1.25rem}.o-pry-search-home__search .a-h3{margin-bottom:.3125rem;padding-bottom:0}.o-pry-search-home__search__or{margin:.3125rem auto;padding:0;text-align:center;font-size:1rem}.o-pry-search-home__search .o-search-fulltext__container{margin-bottom:.625rem}.o-pry-search-home__search .o-search-fulltext__container pry-choose-widget{flex-grow:1}.o-draggable-menu.-search-home{margin-left:14rem;margin-top:-1.6875rem}\n"] }]
495
+ }] });
496
+
497
+ class PrySearchHomeComponent {
498
+ constructor(store, overlay, viewContainerRef, pryDialog) {
499
+ this.store = store;
500
+ this.overlay = overlay;
501
+ this.viewContainerRef = viewContainerRef;
502
+ this.pryDialog = pryDialog;
503
+ this.isMoreList = false;
504
+ this.changeListView = new EventEmitter();
505
+ this.changeSearchCriteria = new EventEmitter();
506
+ this.subscription = new Subscription();
507
+ this.spotting$ = new BehaviorSubject('');
508
+ this.refreshOptions = [0, 10, 30, 60];
509
+ this.icons = {
510
+ map: 'share_location',
511
+ table: 'table_chart',
512
+ chart: 'show_chart',
513
+ graph: 'graph'
514
+ };
515
+ this.connectedPosition = {
516
+ originX: 'start',
517
+ originY: 'bottom',
518
+ overlayX: 'start',
519
+ overlayY: 'top'
520
+ };
521
+ this.structure = defaultMenuStructure.map((items) => ({
522
+ ...items,
523
+ sub: items.sub.filter((s) => s.type !== 'iframe' && s.type !== 'detail')
524
+ }));
525
+ this.refreshId = '';
526
+ this.DashboardGridLayout = DashboardGridLayout;
527
+ }
528
+ ngOnInit() {
529
+ this.store.dispatch(DataSourceActions.load());
530
+ this.namedQueryList$ = this.store.select(DataSourceSelectors.getNamedQuerySorted);
531
+ this.namedQueriesUses$ = this.store.select(DashboardSelectors.namedQueriesUses);
532
+ this.spottingWidget$ = combineLatest([this.namedQueriesUses$, this.spotting$]).pipe(map$1(([uses, spotting]) => uses[spotting] ?? []), map$1((uses) => uses.map((use) => ({ ...use, windowIndex: use.windowIndex + 1 }))));
533
+ this.refreshRates$ = this.store.select(DashboardSelectors.refreshRates);
534
+ this.layout$ = this.store.select(DashboardSelectors.gridLayout);
535
+ this.deleteError$ = this.store.select(DataSourceSelectors.errors).pipe(debounceTime(100));
536
+ }
537
+ onSearchNamedQuery(id) {
538
+ this.store.dispatch(DashboardActions.updateWidgetInPresentation({ id, widgetType: 'table' }));
539
+ }
540
+ onFavorite(id, isFavorite) {
541
+ if (!isFavorite) {
542
+ this.store.dispatch(DataSourceActions.namedQuery.addFavorite({ id }));
543
+ }
544
+ else {
545
+ this.store.dispatch(DataSourceActions.namedQuery.deleteFavorite({ id }));
546
+ }
547
+ }
548
+ onSpot(id, $event) {
549
+ this.spotting$.next(id);
550
+ if (!this.overlayRef) {
551
+ this.overlayRef = this.overlay.create(new OverlayConfig({
552
+ hasBackdrop: false,
553
+ panelClass: ['spot-rs']
554
+ }));
555
+ this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));
556
+ this.overlayRef.attach(new TemplatePortal(this.templateSpot, this.viewContainerRef));
557
+ const spotElement = document.querySelector('.spot-rs');
558
+ if (!!spotElement) {
559
+ spotElement.style.left = $event.clientX - 10 + 'px';
560
+ spotElement.style.top = $event.clientY - 10 + 'px';
561
+ }
562
+ }
563
+ }
564
+ hideSpot() {
565
+ this.overlayRef?.dispose();
566
+ this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));
567
+ this.overlayRef = undefined;
568
+ }
569
+ onEdit(namedQuery) {
570
+ this.store.dispatch(DataSourceActions.namedQuery.edit({ currentEdit: namedQuery }));
571
+ }
572
+ onChangeListView(isMoreList) {
573
+ this.changeListView.emit(isMoreList);
574
+ }
575
+ onSearchCriteria() {
576
+ this.changeSearchCriteria.emit();
577
+ }
578
+ loadWidget(id, sub) {
579
+ this.store.dispatch(DashboardActions.updateWidgetInPresentation({ id, widgetType: sub.type }));
580
+ this.loadOpened = undefined;
581
+ }
582
+ onDelete(nq) {
583
+ const data = {
584
+ title: '@pry.search.namedQuery.delete',
585
+ actions: [
586
+ { id: 0, label: '@pry.toolbox.manifest.close', color: 'ghost' },
587
+ { id: 1, label: '@pry.search.namedQuery.delete' }
588
+ ]
589
+ };
590
+ const dialog = this.pryDialog.open(PryDialogConfirmComponent, {
591
+ data
592
+ });
593
+ this.subscription.add(dialog.closeValue.pipe(take(1)).subscribe((action) => {
594
+ this.store.dispatch(ConfigActions.closeOverlay({ id: 'PryDialogConfirmComponent' }));
595
+ if (action.id === 1) {
596
+ this.store.dispatch(DataSourceActions.namedQuery.delete({ id: nq.id ?? '' }));
597
+ this.subscription.add(this.deleteError$
598
+ ?.pipe(combineLatestWith(this.store.select(DataSourceSelectors.isLoading)), filter(([, isLoading]) => !isLoading), take(1))
599
+ .subscribe(([error]) => {
600
+ if (error?.status === 403) {
601
+ const data = {
602
+ title: '@pry.manifest.deleteError',
603
+ actions: [{ id: 1, label: '@pry.toolbox.close' }]
604
+ };
605
+ const errorDialog = this.pryDialog.open(PryDialogConfirmComponent, {
606
+ data
607
+ });
608
+ this.subscription.add(errorDialog.closeValue.pipe(take(1)).subscribe(() => {
609
+ this.store.dispatch(ConfigActions.closeOverlay({ id: 'PryDialogConfirmComponent' }));
610
+ }));
611
+ }
612
+ }));
613
+ }
614
+ }));
615
+ }
616
+ onRename(nq) {
617
+ this.store.dispatch(DataSourceActions.namedQuery.openRename());
618
+ this.store.dispatch(DataSourceActions.namedQuery.edit({ currentEdit: nq }));
619
+ const save = false;
620
+ const type = NamedQueryUtils.getTypeFromPayload(nq.request);
621
+ const data = type === NamedQueryTypes.FULL_TEXT
622
+ ? { save, type, payload: this.extractPayload(nq.request) }
623
+ : { save, type };
624
+ this.pryDialog.open(PrySaveQueryComponent, { data });
625
+ }
626
+ extractPayload(payload) {
627
+ const { fullSearch, oClasses } = payload;
628
+ return { value: fullSearch.value, classes: oClasses ?? [] };
629
+ }
630
+ onRefresh(id, $event) {
631
+ this.refreshId = id;
632
+ if (!this.overlayRef) {
633
+ this.overlayRef = this.overlay.create(new OverlayConfig({
634
+ hasBackdrop: true,
635
+ panelClass: ['refresh-rs']
636
+ }));
637
+ this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));
638
+ this.overlayRef.attach(new TemplatePortal(this.templateRefresh, this.viewContainerRef));
639
+ this.overlayRef.backdropClick().subscribe((_) => this.hideSpot());
640
+ const refreshElement = document.querySelector('.refresh-rs');
641
+ const refresh = document.querySelector('.refreshbt');
642
+ if (!!refreshElement) {
643
+ const rect = refresh.getBoundingClientRect();
644
+ refreshElement.style.left = rect.left + rect.width + 10 + 'px';
645
+ refreshElement.style.top = rect.top + 137 + 'px';
646
+ }
647
+ }
648
+ }
649
+ selectRefresh($event) {
650
+ this.store.dispatch(DashboardActions.setRefreshRate({ id: this.refreshId ?? '', rate: $event }));
651
+ this.hideSpot();
652
+ }
653
+ refresh(id) {
654
+ this.store.dispatch(SearchActions.getDatasourceItems({ id }));
655
+ }
656
+ ngOnDestroy() {
657
+ this.subscription.unsubscribe();
658
+ }
659
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchHomeComponent, deps: [{ token: i1.Store }, { token: i2$1.Overlay }, { token: i0.ViewContainerRef }, { token: i3.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
660
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchHomeComponent, selector: "pry-search-home", inputs: { searchFulltextTpl: "searchFulltextTpl", isMoreList: "isMoreList" }, outputs: { changeListView: "changeListView", changeSearchCriteria: "changeSearchCriteria" }, viewQueries: [{ propertyName: "templateSpot", first: true, predicate: ["templateSpot"], descendants: true, read: TemplateRef }, { propertyName: "templateRefresh", first: true, predicate: ["templateRefresh"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<pry-search-css></pry-search-css>\n<div class=\"o-pry-search-home__named-query\">\n <ng-container *ngIf=\"namedQueryList$ | async as namedQuery\">\n <ng-container *ngIf=\"namedQuery.length > 0; else noNamedQuery\">\n <div class=\"o-pry-search-home__named-query__card\">\n <pry-expand-panel [open]=\"true\">\n <pry-expand-panel-title>{{ '@pry.search.home.title' | i18n }}</pry-expand-panel-title>\n\n <pry-card *ngFor=\"let nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery\">\n <pry-card-header [marker]=\"true\">\n <pry-card-icon>\n <pry-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></pry-nq-color-selector>\n <img\n [alt]=\"nq.id | translateId: { type: 'datasource', output: 'name' } | async\"\n [height]=\"22\"\n [width]=\"22\"\n [src]=\"nq.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n </pry-card-icon>\n\n <pry-card-title>\n <div\n class=\"o-pry-card-title__text\"\n [pryTooltip]=\"infoTooltip\"\n aria-describedby=\"infoTooltip_searchHome\"\n >\n <div class=\"a-p o-pry-card-title__text__title\">{{ nq.name }}</div>\n <div class=\"a-p o-pry-card-title__text__description\" *ngIf=\"nq.description\">{{ nq.description }}</div>\n </div>\n\n <ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n <span class=\"m-tooltip__text\">\n {{ nq.name }}\n </span>\n <span class=\"m-tooltip__description\" *ngIf=\"nq.description\">\n {{ nq.description }}\n </span>\n </div>\n </ng-template>\n\n <pry-icon\n class=\"o-pry-card-title__pin\"\n *ngIf=\"nq.favorite\"\n [width]=\"18\"\n [height]=\"18\"\n aria-label=\"favorite\"\n iconSvg=\"epingle\"\n ></pry-icon>\n\n <button\n [pryTooltip]=\"infoTooltipShow\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipShow_searchHome\"\n class=\"a-btn a-btn--secondary -size-sm\"\n (click)=\"onSearchNamedQuery(nq.id)\"\n *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\"\n >\n {{ '@pry.search.namedQuery.display' | i18n }}\n <span class=\"u-visually-hidden\">le widget associ\u00E9 \u00E0 cette recherche</span>\n </button>\n </pry-card-title>\n\n <pry-card-menu>\n <div class=\"o-pry-card-menu__nav\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onFavorite(nq.id, nq.favorite)\"\n >\n <pry-icon iconSvg=\"epingle\"></pry-icon>\n {{ (nq.favorite ? '@pry.search.namedQuery.noFavorite' : '@pry.search.namedQuery.favorite') | i18n }}\n </button>\n <pry-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n {{ '@pry.search.namedQuery.refreshData' | i18n }}\n </button>\n </pry-card-menu>\n <pry-card-menu *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n cdkOverlayOrigin\n #triggerLoad=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n {{ '@pry.search.namedQuery.display' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"loadOpened = undefined\"\n >\n <div class=\"o-draggable-menu -search-home\">\n <ul class=\"o-draggable-menu__list\">\n <ng-container *ngFor=\"let menu of structure\">\n <li class=\"o-draggable-menu__list__item\">\n <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <pry-icon [iconSvg]=\"menu.icon\"></pry-icon>\n {{ menu.label | i18n }}\n </button>\n\n <ul class=\"o-draggable-menu__list__submenu\">\n <ng-container *ngFor=\"let sub of menu.sub\">\n <li class=\"o-draggable-menu__list__submenu__item\">\n <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n <pry-icon [iconSvg]=\"sub.icon\"></pry-icon>\n {{ sub.label | i18n }}\n </button>\n </li>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n </pry-card-menu>\n\n <pry-card-menu class=\"o-pry-card-menu__nav__item\">\n <pry-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></pry-nq-color-selector>\n </pry-card-menu>\n\n <pry-card-menu (click)=\"onSpot(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"mode_clic\"></pry-icon>\n {{ '@pry.search.namedQuery.spot' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <pry-card-menu (click)=\"onRefresh(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"history-line\"></pry-icon>\n {{ '@pry.search.namedQuery.refresh.title' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onDelete(nq)\"\n *ngIf=\"nq.owner\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n {{ '@pry.search.namedQuery.delete' | i18n }}\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onRename(nq)\"\n *ngIf=\"nq.owner\"\n >\n <pry-icon iconSvg=\"renamed\"></pry-icon>\n {{ '@pry.search.namedQuery.rename' | i18n }}\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onEdit(nq)\"\n (keydown.tab)=\"hideSpot()\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n {{ '@pry.search.namedQuery.edit' | i18n }}\n </button>\n </div>\n </pry-card-menu>\n </pry-card-header>\n </pry-card>\n </pry-expand-panel>\n </div>\n <button\n class=\"a-btn -link-like\"\n aria-pressed=\"false\"\n id=\"btn_view_more\"\n *ngIf=\"namedQuery.length > 2\"\n (click)=\"onChangeListView(isMoreList)\"\n >\n {{ isMoreList ? ('@pry.search.namedQuery.seeLess' | i18n) : ('@pry.search.namedQuery.seeMore' | i18n) }}\n </button>\n </ng-container>\n\n <ng-template #noNamedQuery>\n <p class=\"search-home__container-search\">{{ '@pry.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n </ng-template>\n </ng-container>\n</div>\n\n<ng-template #infoTooltipShow>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipShow_searchHome\">\n <span class=\"m-tooltip__text\"> Afficher le widget associ\u00E9 \u00E0 cette recherche </span>\n </div>\n</ng-template>\n\n<div class=\"o-pry-search-home__search\">\n <h3 class=\"a-h3\">{{ '@pry.search.home.ssTitle' | i18n }}</h3>\n <ng-container *ngIf=\"searchFulltextTpl\">\n <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n <p class=\"a-p o-pry-search-home__search__or\">{{ '@pry.search.home.or' | i18n }}</p>\n </ng-container>\n <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></pry-icon>\n {{ '@pry.search.home.searchByCriteria' | i18n }}\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n</div>\n\n<ng-template #templateSpot>\n <div (mouseleave)=\"hideSpot()\">\n {{\n ((spottingWidget$ | async)?.length ?? 0 > 0\n ? '@pry.search.namedQuery.spotTitle'\n : '@pry.search.namedQuery.noSpot'\n ) | i18n: { length: (spottingWidget$ | async)?.length }\n }}\n <div *ngFor=\"let use of spottingWidget$ | async\" class=\"spot-line\">\n <pry-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></pry-icon>\n {{ '@pry.search.namedQuery.type.' + use.type | i18n }} - {{ '@pry.search.namedQuery.use' | i18n: use }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n <div>\n <button\n *ngFor=\"let option of refreshOptions\"\n class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n (click)=\"selectRefresh(option)\"\n >\n <pry-icon\n [width]=\"20\"\n [height]=\"20\"\n iconSvg=\"check\"\n *ngIf=\"(((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option\"\n ></pry-icon>\n {{ '@pry.search.namedQuery.refresh.' + option | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.PryNqColorSelectorComponent, selector: "pry-nq-color-selector", inputs: ["disabled", "datasource"], outputs: ["colorChanged"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i3.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "component", type: i5.PryExpandPanelComponent, selector: "pry-expand-panel", inputs: ["open"] }, { kind: "directive", type: i5.PryExpansionPanelTitleDirective, selector: "pry-expand-panel-title" }, { kind: "component", type: i6.PryCardComponent, selector: "pry-card", inputs: ["selected"], outputs: ["statusChange"] }, { kind: "directive", type: i6.PryCardIconDirective, selector: "pry-card-icon, [pry-card-icon], [pryCardIcon]" }, { kind: "directive", type: i6.PryCardTitleDirective, selector: "pry-card-title, [o-pry-card-title], [pryCardTitle]" }, { kind: "directive", type: i6.PryCardMenuDirective, selector: "pry-card-menu", outputs: ["closeMenu$"], exportAs: ["pryCardMenu"] }, { kind: "component", type: i6.PryCardHeaderComponent, selector: "pry-card-header", inputs: ["marker"] }, { kind: "component", type: PrySearchCssComponent, selector: "pry-search-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
661
+ }
662
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchHomeComponent, decorators: [{
663
+ type: Component,
664
+ args: [{ selector: 'pry-search-home', template: "<pry-search-css></pry-search-css>\n<div class=\"o-pry-search-home__named-query\">\n <ng-container *ngIf=\"namedQueryList$ | async as namedQuery\">\n <ng-container *ngIf=\"namedQuery.length > 0; else noNamedQuery\">\n <div class=\"o-pry-search-home__named-query__card\">\n <pry-expand-panel [open]=\"true\">\n <pry-expand-panel-title>{{ '@pry.search.home.title' | i18n }}</pry-expand-panel-title>\n\n <pry-card *ngFor=\"let nq of namedQuery.length > 1 && !isMoreList ? namedQuery.slice(0, 2) : namedQuery\">\n <pry-card-header [marker]=\"true\">\n <pry-card-icon>\n <pry-nq-color-selector [datasource]=\"nq\" [disabled]=\"true\"></pry-nq-color-selector>\n <img\n [alt]=\"nq.id | translateId: { type: 'datasource', output: 'name' } | async\"\n [height]=\"22\"\n [width]=\"22\"\n [src]=\"nq.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n </pry-card-icon>\n\n <pry-card-title>\n <div\n class=\"o-pry-card-title__text\"\n [pryTooltip]=\"infoTooltip\"\n aria-describedby=\"infoTooltip_searchHome\"\n >\n <div class=\"a-p o-pry-card-title__text__title\">{{ nq.name }}</div>\n <div class=\"a-p o-pry-card-title__text__description\" *ngIf=\"nq.description\">{{ nq.description }}</div>\n </div>\n\n <ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchHome\">\n <span class=\"m-tooltip__text\">\n {{ nq.name }}\n </span>\n <span class=\"m-tooltip__description\" *ngIf=\"nq.description\">\n {{ nq.description }}\n </span>\n </div>\n </ng-template>\n\n <pry-icon\n class=\"o-pry-card-title__pin\"\n *ngIf=\"nq.favorite\"\n [width]=\"18\"\n [height]=\"18\"\n aria-label=\"favorite\"\n iconSvg=\"epingle\"\n ></pry-icon>\n\n <button\n [pryTooltip]=\"infoTooltipShow\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipShow_searchHome\"\n class=\"a-btn a-btn--secondary -size-sm\"\n (click)=\"onSearchNamedQuery(nq.id)\"\n *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\"\n >\n {{ '@pry.search.namedQuery.display' | i18n }}\n <span class=\"u-visually-hidden\">le widget associ\u00E9 \u00E0 cette recherche</span>\n </button>\n </pry-card-title>\n\n <pry-card-menu>\n <div class=\"o-pry-card-menu__nav\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onFavorite(nq.id, nq.favorite)\"\n >\n <pry-icon iconSvg=\"epingle\"></pry-icon>\n {{ (nq.favorite ? '@pry.search.namedQuery.noFavorite' : '@pry.search.namedQuery.favorite') | i18n }}\n </button>\n <pry-card-menu (click)=\"refresh(nq.id)\" class=\"refreshbt\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n {{ '@pry.search.namedQuery.refreshData' | i18n }}\n </button>\n </pry-card-menu>\n <pry-card-menu *ngIf=\"(layout$ | async) !== DashboardGridLayout.MANUAL\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"loadOpened = nq.id; $event.stopPropagation()\"\n cdkOverlayOrigin\n #triggerLoad=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n {{ '@pry.search.namedQuery.display' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"triggerLoad\"\n [cdkConnectedOverlayOpen]=\"loadOpened === nq.id\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"[connectedPosition]\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"loadOpened = undefined\"\n >\n <div class=\"o-draggable-menu -search-home\">\n <ul class=\"o-draggable-menu__list\">\n <ng-container *ngFor=\"let menu of structure\">\n <li class=\"o-draggable-menu__list__item\">\n <button class=\"a-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <pry-icon [iconSvg]=\"menu.icon\"></pry-icon>\n {{ menu.label | i18n }}\n </button>\n\n <ul class=\"o-draggable-menu__list__submenu\">\n <ng-container *ngFor=\"let sub of menu.sub\">\n <li class=\"o-draggable-menu__list__submenu__item\">\n <button class=\"a-btn\" (click)=\"loadWidget(nq.id, sub)\">\n <pry-icon [iconSvg]=\"sub.icon\"></pry-icon>\n {{ sub.label | i18n }}\n </button>\n </li>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n </pry-card-menu>\n\n <pry-card-menu class=\"o-pry-card-menu__nav__item\">\n <pry-nq-color-selector [ngStyle]=\"{ width: '100%' }\" [datasource]=\"nq\"></pry-nq-color-selector>\n </pry-card-menu>\n\n <pry-card-menu (click)=\"onSpot(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"mode_clic\"></pry-icon>\n {{ '@pry.search.namedQuery.spot' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <pry-card-menu (click)=\"onRefresh(nq.id, $event)\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\">\n <pry-icon iconSvg=\"history-line\"></pry-icon>\n {{ '@pry.search.namedQuery.refresh.title' | i18n }}\n <pry-icon\n iconSvg=\"fleche_haut\"\n [ngStyle]=\"{ transform: 'rotate(90deg)', marginLeft: 'auto' }\"\n ></pry-icon>\n </button>\n </pry-card-menu>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onDelete(nq)\"\n *ngIf=\"nq.owner\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n {{ '@pry.search.namedQuery.delete' | i18n }}\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onRename(nq)\"\n *ngIf=\"nq.owner\"\n >\n <pry-icon iconSvg=\"renamed\"></pry-icon>\n {{ '@pry.search.namedQuery.rename' | i18n }}\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text o-pry-card-menu__nav__item\"\n (click)=\"onEdit(nq)\"\n (keydown.tab)=\"hideSpot()\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n {{ '@pry.search.namedQuery.edit' | i18n }}\n </button>\n </div>\n </pry-card-menu>\n </pry-card-header>\n </pry-card>\n </pry-expand-panel>\n </div>\n <button\n class=\"a-btn -link-like\"\n aria-pressed=\"false\"\n id=\"btn_view_more\"\n *ngIf=\"namedQuery.length > 2\"\n (click)=\"onChangeListView(isMoreList)\"\n >\n {{ isMoreList ? ('@pry.search.namedQuery.seeLess' | i18n) : ('@pry.search.namedQuery.seeMore' | i18n) }}\n </button>\n </ng-container>\n\n <ng-template #noNamedQuery>\n <p class=\"search-home__container-search\">{{ '@pry.search.namedQuery.emptyNamedQuery' | i18n }}</p>\n </ng-template>\n </ng-container>\n</div>\n\n<ng-template #infoTooltipShow>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipShow_searchHome\">\n <span class=\"m-tooltip__text\"> Afficher le widget associ\u00E9 \u00E0 cette recherche </span>\n </div>\n</ng-template>\n\n<div class=\"o-pry-search-home__search\">\n <h3 class=\"a-h3\">{{ '@pry.search.home.ssTitle' | i18n }}</h3>\n <ng-container *ngIf=\"searchFulltextTpl\">\n <ng-container [ngTemplateOutlet]=\"searchFulltextTpl\"></ng-container>\n <p class=\"a-p o-pry-search-home__search__or\">{{ '@pry.search.home.or' | i18n }}</p>\n </ng-container>\n <button class=\"a-btn a-btn--primary -width-full\" (click)=\"onSearchCriteria()\">\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"search-criteria\"></pry-icon>\n {{ '@pry.search.home.searchByCriteria' | i18n }}\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n</div>\n\n<ng-template #templateSpot>\n <div (mouseleave)=\"hideSpot()\">\n {{\n ((spottingWidget$ | async)?.length ?? 0 > 0\n ? '@pry.search.namedQuery.spotTitle'\n : '@pry.search.namedQuery.noSpot'\n ) | i18n: { length: (spottingWidget$ | async)?.length }\n }}\n <div *ngFor=\"let use of spottingWidget$ | async\" class=\"spot-line\">\n <pry-icon [width]=\"20\" [height]=\"20\" [iconSvg]=\"icons[use.type]\"></pry-icon>\n {{ '@pry.search.namedQuery.type.' + use.type | i18n }} - {{ '@pry.search.namedQuery.use' | i18n: use }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #templateRefresh>\n <div>\n <button\n *ngFor=\"let option of refreshOptions\"\n class=\"refresh-line a-btn a-btn--icon-text -size-sm\"\n (click)=\"selectRefresh(option)\"\n >\n <pry-icon\n [width]=\"20\"\n [height]=\"20\"\n iconSvg=\"check\"\n *ngIf=\"(((refreshRates$ | async) ?? {})[refreshId] ?? 0) === option\"\n ></pry-icon>\n {{ '@pry.search.namedQuery.refresh.' + option | i18n }}\n </button>\n </div>\n</ng-template>\n" }]
665
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2$1.Overlay }, { type: i0.ViewContainerRef }, { type: i3.PryDialogService }]; }, propDecorators: { templateSpot: [{
666
+ type: ViewChild,
667
+ args: ['templateSpot', { read: TemplateRef }]
668
+ }], templateRefresh: [{
669
+ type: ViewChild,
670
+ args: ['templateRefresh', { read: TemplateRef }]
671
+ }], searchFulltextTpl: [{
672
+ type: Input
673
+ }], isMoreList: [{
674
+ type: Input
675
+ }], changeListView: [{
676
+ type: Output
677
+ }], changeSearchCriteria: [{
678
+ type: Output
679
+ }] } });
680
+
681
+ class PrySearchSelectAttributeComponent {
682
+ set id(val) {
683
+ this._attributes$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(filter((id) => id !== null), switchMap((id) => this.store.select(ClassSelectors.classById(id))), filter((clazz) => clazz !== undefined), withLatestFrom(this.store.select(FieldSelectors.fields)), map(([clazz, fields]) => {
684
+ const attributes = [...(clazz.attributes ?? [])].filter((attr) => fields.find((field) => field.id === attr.field)?.type !== FieldType.RAW);
685
+ return attributes.sort((a, b) => a.name.localeCompare(b.name));
686
+ }));
687
+ }
688
+ get attributes$() {
689
+ return this._attributes$;
690
+ }
691
+ constructor(store) {
692
+ this.store = store;
693
+ this.selectAttributeChange = new EventEmitter();
694
+ }
695
+ onSelectAttribute(attribute) {
696
+ this.selectAttributeChange.emit(attribute);
697
+ }
698
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchSelectAttributeComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
699
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchSelectAttributeComponent, selector: "pry-search-select-attribute", inputs: { id: "id" }, outputs: { selectAttributeChange: "selectAttributeChange" }, ngImport: i0, template: "<ng-container *ngIf=\"_attributes$ | async as attributes\">\n <ul class=\"m-pry-search-select-attribute\">\n <li class=\"m-pry-search-select-attribute__item\" *ngFor=\"let attr of attributes\">\n <button class=\"a-btn\" (click)=\"onSelectAttribute(attr)\">\n {{ attr.name }}\n </button>\n </li>\n </ul>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
700
+ }
701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchSelectAttributeComponent, decorators: [{
702
+ type: Component,
703
+ args: [{ selector: 'pry-search-select-attribute', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"_attributes$ | async as attributes\">\n <ul class=\"m-pry-search-select-attribute\">\n <li class=\"m-pry-search-select-attribute__item\" *ngFor=\"let attr of attributes\">\n <button class=\"a-btn\" (click)=\"onSelectAttribute(attr)\">\n {{ attr.name }}\n </button>\n </li>\n </ul>\n</ng-container>\n" }]
704
+ }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { id: [{
705
+ type: Input
706
+ }], selectAttributeChange: [{
707
+ type: Output
708
+ }] } });
709
+
710
+ class PrySearchConditionComponent {
711
+ set attributeId(val) {
712
+ this.attributeId$.next(val);
713
+ this.attributeName$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(filter((id) => id !== null), switchMap((id) => this.store.select(ClassSelectors.classById(id))), filter((clazz) => clazz !== undefined), map((clazz) => clazz.attributes.find((c) => c.id === val)?.name ?? ''));
714
+ }
715
+ set id(val) {
716
+ this.conditionId$.next(val);
717
+ this.conditionId = val;
718
+ }
719
+ set useTextDateInputs(val) {
720
+ this.textDateInputs = val;
721
+ }
722
+ constructor(store, _detect) {
723
+ this.store = store;
724
+ this._detect = _detect;
725
+ this.class = 'o-pry-search-condition-wrapper';
726
+ this.attributeId$ = new Subject();
727
+ this.conditionId$ = new Subject();
728
+ this.isDate = false;
729
+ this.firstValueInvalid = false;
730
+ this.secondValueInvalid = false;
731
+ this.conditionValue = '';
732
+ this.secondConditionValue = '';
733
+ this.twoValues = false;
734
+ this.textDateInputs = false;
735
+ this.dateConditionValue = '';
736
+ this.sub = new Subscription();
737
+ this.sub.add(combineLatest([this.attributeId$, this.conditionId$])
738
+ .pipe(filter(([attributeId, conditionId]) => attributeId !== null && conditionId !== null), tap(([attributeId, conditionId]) => {
739
+ this.assignOperatorOption$(attributeId);
740
+ this.assignCondition$(conditionId);
741
+ }), switchMap(() => combineLatest([this.operatorOptions$, this.condition$])))
742
+ .subscribe(([operatorOptions, condition]) => {
743
+ if (condition) {
744
+ this.conditionValue = condition.value?.toString() ?? '';
745
+ const operator = operatorOptions.find((ope) => ope.operator === condition.operator);
746
+ if (operator) {
747
+ this.operatorSelectedValue = operator.operator;
748
+ this.twoValues = operator.twoValues;
749
+ }
750
+ this.pattern = condition.pattern;
751
+ this.isDate = condition.isDate ?? false;
752
+ this._detect.markForCheck();
753
+ }
754
+ }));
755
+ }
756
+ ngOnDestroy() {
757
+ this.sub.unsubscribe();
758
+ }
759
+ onSelectedOperator(operatorType) {
760
+ this.store.dispatch(SearchMonoClassActions.updateNormalizedConditionOperatorForConditionId({
761
+ conditionId: this.conditionId,
762
+ operator: operatorType
763
+ }));
764
+ }
765
+ updateFirstValue() {
766
+ this.store.dispatch(SearchMonoClassActions.updateNormalizedConditionValueForConditionId({
767
+ value: this.conditionValue,
768
+ conditionId: this.conditionId
769
+ }));
770
+ }
771
+ onCheckValidity(evt, first) {
772
+ if (this.pattern && evt?.target?.value) {
773
+ if (first) {
774
+ this.firstValueInvalid = !RegExp(this.pattern).test(evt.target.value);
775
+ }
776
+ else {
777
+ this.secondValueInvalid = !RegExp(this.pattern).test(evt.target.value);
778
+ }
779
+ this._detect.markForCheck();
780
+ }
781
+ }
782
+ onDeleteAttributeCondition() {
783
+ this.store.dispatch(SearchMonoClassActions.deleteNormalizedConditionById({ conditionId: this.conditionId }));
784
+ }
785
+ updateSecondValue() {
786
+ this.store.dispatch(SearchMonoClassActions.updateNormalizedConditionValueForConditionId({
787
+ value: this.conditionValue,
788
+ conditionId: this.conditionId,
789
+ upperValue: this.secondConditionValue
790
+ }));
791
+ }
792
+ updateDateCondition() {
793
+ this.store.dispatch(SearchMonoClassActions.updateNormalizedConditionValueForConditionId({
794
+ value: typeof this.dateConditionValue == 'object' ? this.dateConditionValue.start : this.dateConditionValue,
795
+ conditionId: this.conditionId,
796
+ upperValue: typeof this.dateConditionValue == 'object' ? this.dateConditionValue.end : ''
797
+ }));
798
+ }
799
+ assignOperatorOption$(attributeId) {
800
+ this.operatorOptions$ = this.store
801
+ .select(SearchMonoClassSelectors.selectMonoClassSearchAttributeById(attributeId))
802
+ .pipe(filter((attr) => attr !== undefined), switchMap((attr) => this.store.select(FieldSelectors.fieldById(attr.field))), filter((field) => field !== undefined), map((field) => {
803
+ const fieldType = field.type;
804
+ if (fieldType === FieldType.STRING || fieldType === FieldType.KEYWORD) {
805
+ return OPERATOR_OPTIONS.filter((el) => el.type === 'string');
806
+ }
807
+ else if (fieldType === FieldType.INTEGER ||
808
+ fieldType === FieldType.DECIMAL ||
809
+ fieldType === FieldType.LONG) {
810
+ return OPERATOR_OPTIONS.filter((el) => el.type === 'number');
811
+ }
812
+ else {
813
+ return OPERATOR_OPTIONS.filter((el) => el.type === 'date');
814
+ }
815
+ }));
816
+ }
817
+ assignCondition$(conditionId) {
818
+ this.condition$ = this.store
819
+ .select(SearchMonoClassSelectors.selectMonoClassConditionsById(conditionId))
820
+ .pipe(filter((cond) => cond !== null));
821
+ }
822
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchConditionComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
823
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchConditionComponent, selector: "pry-search-condition", inputs: { attributeId: "attributeId", id: "id", useTextDateInputs: "useTextDateInputs" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<div class=\"o-pry-search-condition\">\n <div class=\"o-pry-search-condition__fields\" [class.has-date-picker]=\"isDate && !textDateInputs\">\n <input class=\"a-form-field\" type=\"text\" [ngModel]=\"attributeName$ | async\" readonly />\n <pry-select\n class=\"a-pry-select operator\"\n [labelTranslate]=\"true\"\n [items]=\"operatorOptions$ | async\"\n [itemsAsOption]=\"true\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n name=\"operator\"\n [ngModel]=\"operatorSelectedValue\"\n (ngModelChange)=\"onSelectedOperator($event)\"\n ></pry-select>\n <ng-container *ngIf=\"isDate && !textDateInputs; else textInput\">\n <pry-date-picker\n class=\"o-pry-search-condition__date-picker\"\n [(ngModel)]=\"dateConditionValue\"\n (ngModelChange)=\"updateDateCondition()\"\n [rangePicker]=\"twoValues\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n required\n ></pry-date-picker>\n </ng-container>\n </div>\n <ng-template #textInput>\n <input\n class=\"a-form-field\"\n type=\"text\"\n [placeholder]=\"(twoValues ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\"\n [ngClass]=\"{ '-half': twoValues }\"\n [class.pry-search-condition-input-pattern]=\"firstValue.touched && firstValueInvalid\"\n [class.pry-search-condition-input-required]=\"firstValue.touched && firstValue.invalid\"\n name=\"value\"\n [type]=\"isDate ? 'date' : 'text'\"\n required\n #firstValue=\"ngModel\"\n [(ngModel)]=\"conditionValue\"\n (input)=\"onCheckValidity($event, true)\"\n (focusout)=\"updateFirstValue()\"\n />\n <ng-container *ngIf=\"twoValues\">\n <input\n class=\"a-form-field\"\n type=\"text\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n required\n [type]=\"isDate ? 'date' : 'text'\"\n [(ngModel)]=\"secondConditionValue\"\n (input)=\"onCheckValidity($event, false)\"\n (focusout)=\"updateSecondValue()\"\n />\n </ng-container>\n </ng-template>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-xs delete\"\n (click)=\"onDeleteAttributeCondition()\"\n [title]=\"'@pry.search.attribute.remove' | i18n\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"22\" [height]=\"22\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.attribute.remove' | i18n }}</span>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i3.PryDatePickerComponent, selector: "pry-date-picker", inputs: ["rangePicker", "timePicker", "maxYear", "minYear", "roundSelection"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
824
+ }
825
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchConditionComponent, decorators: [{
826
+ type: Component,
827
+ args: [{ selector: 'pry-search-condition', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"o-pry-search-condition\">\n <div class=\"o-pry-search-condition__fields\" [class.has-date-picker]=\"isDate && !textDateInputs\">\n <input class=\"a-form-field\" type=\"text\" [ngModel]=\"attributeName$ | async\" readonly />\n <pry-select\n class=\"a-pry-select operator\"\n [labelTranslate]=\"true\"\n [items]=\"operatorOptions$ | async\"\n [itemsAsOption]=\"true\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n name=\"operator\"\n [ngModel]=\"operatorSelectedValue\"\n (ngModelChange)=\"onSelectedOperator($event)\"\n ></pry-select>\n <ng-container *ngIf=\"isDate && !textDateInputs; else textInput\">\n <pry-date-picker\n class=\"o-pry-search-condition__date-picker\"\n [(ngModel)]=\"dateConditionValue\"\n (ngModelChange)=\"updateDateCondition()\"\n [rangePicker]=\"twoValues\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n required\n ></pry-date-picker>\n </ng-container>\n </div>\n <ng-template #textInput>\n <input\n class=\"a-form-field\"\n type=\"text\"\n [placeholder]=\"(twoValues ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\"\n [ngClass]=\"{ '-half': twoValues }\"\n [class.pry-search-condition-input-pattern]=\"firstValue.touched && firstValueInvalid\"\n [class.pry-search-condition-input-required]=\"firstValue.touched && firstValue.invalid\"\n name=\"value\"\n [type]=\"isDate ? 'date' : 'text'\"\n required\n #firstValue=\"ngModel\"\n [(ngModel)]=\"conditionValue\"\n (input)=\"onCheckValidity($event, true)\"\n (focusout)=\"updateFirstValue()\"\n />\n <ng-container *ngIf=\"twoValues\">\n <input\n class=\"a-form-field\"\n type=\"text\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n required\n [type]=\"isDate ? 'date' : 'text'\"\n [(ngModel)]=\"secondConditionValue\"\n (input)=\"onCheckValidity($event, false)\"\n (focusout)=\"updateSecondValue()\"\n />\n </ng-container>\n </ng-template>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-xs delete\"\n (click)=\"onDeleteAttributeCondition()\"\n [title]=\"'@pry.search.attribute.remove' | i18n\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"22\" [height]=\"22\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.attribute.remove' | i18n }}</span>\n </button>\n</div>\n" }]
828
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { class: [{
829
+ type: HostBinding,
830
+ args: ['class']
831
+ }], attributeId: [{
832
+ type: Input
833
+ }], id: [{
834
+ type: Input
835
+ }], useTextDateInputs: [{
836
+ type: Input
837
+ }] } });
838
+
839
+ class PrySearchComposedComponent {
840
+ onMouseOver(evt) {
841
+ evt.stopPropagation();
842
+ this.hover = true;
843
+ }
844
+ onMouseOut(evt) {
845
+ evt.stopPropagation();
846
+ this.hover = false;
847
+ }
848
+ set id(val) {
849
+ this._id = val;
850
+ this.condition$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsById(this._id));
851
+ }
852
+ constructor(store, _change) {
853
+ this.store = store;
854
+ this._change = _change;
855
+ this.class = 'o-pry-search-composed-wrapper';
856
+ this.hover = false;
857
+ this.condition$ = of(null);
858
+ this.panelNewAttributeOpen = false;
859
+ this.masterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);
860
+ }
861
+ onAddNestedCondition(conditionId) {
862
+ this.store.dispatch(SearchMonoClassActions.addNormalizedConditionComposedForConditionId({ conditionId }));
863
+ }
864
+ onSelectType(conditionId, conditionType) {
865
+ this.store.dispatch(SearchMonoClassActions.updateNormalizedConditionTypeForConditionId({ conditionId, conditionType }));
866
+ }
867
+ onOpenPanel() {
868
+ this.panelNewAttributeOpen = true;
869
+ this._change.markForCheck();
870
+ }
871
+ onClosePanel() {
872
+ if (this.panelNewAttributeOpen) {
873
+ this.panelNewAttributeOpen = false;
874
+ this._change.markForCheck();
875
+ }
876
+ }
877
+ onAddAttributeCondition(attribute, conditionId) {
878
+ this.store.dispatch(SearchMonoClassActions.addNormalizedConditionAttributeForConditionId({ conditionId, attribute }));
879
+ this.onClosePanel();
880
+ }
881
+ onDeleteNestedCondition(conditionId) {
882
+ this.store.dispatch(SearchMonoClassActions.deleteNormalizedConditionById({ conditionId }));
883
+ }
884
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchComposedComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
885
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchComposedComponent, selector: "pry-search-composed", inputs: { id: "id" }, host: { listeners: { "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)" }, properties: { "class": "this.class", "class.is-hover": "this.hover" } }, ngImport: i0, template: "<div class=\"o-pry-search-composed\" [ngClass]=\"{ 'pry-search-composed-hover': hover }\">\n <ng-container *ngIf=\"condition$ | async as cond\">\n <ng-container *ngIf=\"cond.type === 'ATTRIBUTE'; else composedBlock\">\n <ng-container *ngIf=\"cond.attribute\">\n <pry-search-condition [attributeId]=\"cond.attribute\" [id]=\"cond.id\"></pry-search-condition>\n </ng-container>\n </ng-container>\n <ng-template #composedBlock>\n <div class=\"o-pry-search-composed__condition\">\n <div class=\"o-pry-search-composed__condition__type -vertical-bar\">\n <div class=\"o-pry-search-composed__condition__type__content\">\n <pry-toggle\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n [ngModel]=\"cond.type === 'OR'\"\n (ngModelChange)=\"onSelectType(cond.id, cond.type === 'OR' ? 'AND' : 'OR')\"\n ></pry-toggle>\n </div>\n </div>\n <div class=\"o-pry-search-composed__condition__content\">\n <ng-container *ngFor=\"let composedId of cond.composed\">\n <pry-search-composed [id]=\"composedId\"></pry-search-composed>\n </ng-container>\n\n <div class=\"o-pry-search-composed__condition__content__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--select -size-sm\"\n (click)=\"onOpenPanel()\"\n [pryOverlay]=\"selectAttribute\"\n [overlayOpen]=\"panelNewAttributeOpen\"\n (overlayOpenChange)=\"onClosePanel()\"\n pryOverlayPosition=\"start-bottom\"\n [pryOverlayNoPadding]=\"true\"\n >\n <pry-icon iconSvg=\"add\" [width]=\"15\" [height]=\"15\"></pry-icon>\n <span>{{ '@pry.search.composed.addCondition' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"onAddNestedCondition(cond.id)\">\n <pry-icon iconSvg=\"picture-in-picture\" [width]=\"16\" [height]=\"16\"></pry-icon>\n <span>{{ '@pry.search.composed.addGroup' | i18n }}</span>\n </button>\n <ng-container *ngIf=\"masterId$ | async as masterId\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-sm o-pry-search-composed__condition__content__footer__remove\"\n *ngIf=\"masterId !== cond.id\"\n (click)=\"onDeleteNestedCondition(cond.id)\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"16\" [height]=\"16\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.composed.remove' | i18n }}</span>\n </button>\n </ng-container>\n </div>\n\n <ng-template #selectAttribute>\n <pry-search-select-attribute\n [id]=\"cond.id\"\n (selectAttributeChange)=\"onAddAttributeCondition($event, cond.id)\"\n ></pry-search-select-attribute>\n </ng-template>\n </div>\n </div>\n </ng-template>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3.PryOverlayDirective, selector: "[pryOverlay]", inputs: ["pryOverlay", "styleReversed", "pryOverlaySticky", "pryOverlayNoPadding", "pryOverlayPosition", "overlayOpen", "hasBackdrop"], outputs: ["overlayOpenChange"] }, { kind: "component", type: PrySearchComposedComponent, selector: "pry-search-composed", inputs: ["id"] }, { kind: "component", type: PrySearchSelectAttributeComponent, selector: "pry-search-select-attribute", inputs: ["id"], outputs: ["selectAttributeChange"] }, { kind: "component", type: PrySearchConditionComponent, selector: "pry-search-condition", inputs: ["attributeId", "id", "useTextDateInputs"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
886
+ }
887
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchComposedComponent, decorators: [{
888
+ type: Component,
889
+ args: [{ selector: 'pry-search-composed', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"o-pry-search-composed\" [ngClass]=\"{ 'pry-search-composed-hover': hover }\">\n <ng-container *ngIf=\"condition$ | async as cond\">\n <ng-container *ngIf=\"cond.type === 'ATTRIBUTE'; else composedBlock\">\n <ng-container *ngIf=\"cond.attribute\">\n <pry-search-condition [attributeId]=\"cond.attribute\" [id]=\"cond.id\"></pry-search-condition>\n </ng-container>\n </ng-container>\n <ng-template #composedBlock>\n <div class=\"o-pry-search-composed__condition\">\n <div class=\"o-pry-search-composed__condition__type -vertical-bar\">\n <div class=\"o-pry-search-composed__condition__type__content\">\n <pry-toggle\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n [ngModel]=\"cond.type === 'OR'\"\n (ngModelChange)=\"onSelectType(cond.id, cond.type === 'OR' ? 'AND' : 'OR')\"\n ></pry-toggle>\n </div>\n </div>\n <div class=\"o-pry-search-composed__condition__content\">\n <ng-container *ngFor=\"let composedId of cond.composed\">\n <pry-search-composed [id]=\"composedId\"></pry-search-composed>\n </ng-container>\n\n <div class=\"o-pry-search-composed__condition__content__footer\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--select -size-sm\"\n (click)=\"onOpenPanel()\"\n [pryOverlay]=\"selectAttribute\"\n [overlayOpen]=\"panelNewAttributeOpen\"\n (overlayOpenChange)=\"onClosePanel()\"\n pryOverlayPosition=\"start-bottom\"\n [pryOverlayNoPadding]=\"true\"\n >\n <pry-icon iconSvg=\"add\" [width]=\"15\" [height]=\"15\"></pry-icon>\n <span>{{ '@pry.search.composed.addCondition' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"onAddNestedCondition(cond.id)\">\n <pry-icon iconSvg=\"picture-in-picture\" [width]=\"16\" [height]=\"16\"></pry-icon>\n <span>{{ '@pry.search.composed.addGroup' | i18n }}</span>\n </button>\n <ng-container *ngIf=\"masterId$ | async as masterId\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-sm o-pry-search-composed__condition__content__footer__remove\"\n *ngIf=\"masterId !== cond.id\"\n (click)=\"onDeleteNestedCondition(cond.id)\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"16\" [height]=\"16\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.composed.remove' | i18n }}</span>\n </button>\n </ng-container>\n </div>\n\n <ng-template #selectAttribute>\n <pry-search-select-attribute\n [id]=\"cond.id\"\n (selectAttributeChange)=\"onAddAttributeCondition($event, cond.id)\"\n ></pry-search-select-attribute>\n </ng-template>\n </div>\n </div>\n </ng-template>\n </ng-container>\n</div>\n" }]
890
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { class: [{
891
+ type: HostBinding,
892
+ args: ['class']
893
+ }], hover: [{
894
+ type: HostBinding,
895
+ args: ['class.is-hover']
896
+ }], onMouseOver: [{
897
+ type: HostListener,
898
+ args: ['mouseover', ['$event']]
899
+ }], onMouseOut: [{
900
+ type: HostListener,
901
+ args: ['mouseout', ['$event']]
902
+ }], id: [{
903
+ type: Input
904
+ }] } });
905
+
906
+ class PrySearchOrderComponent {
907
+ onMouseOver(evt) {
908
+ evt.stopPropagation();
909
+ this.hover = true;
910
+ }
911
+ onMouseOut(evt) {
912
+ evt.stopPropagation();
913
+ this.hover = false;
914
+ }
915
+ constructor(store, translateService) {
916
+ this.store = store;
917
+ this.translateService = translateService;
918
+ this.class = 'o-pry-search-order-wrapper';
919
+ this.hover = false;
920
+ this.activated = false;
921
+ this.masterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);
922
+ this.monoClassId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch);
923
+ this.order$ = this.store.select(SearchMonoClassSelectors.order);
924
+ this.classes$ = this.store.select(ClassSelectors.classes);
925
+ this.fields$ = this.store.select(FieldSelectors.fields);
926
+ this.variableAttributes$ = combineLatest([this.monoClassId$, this.classes$]).pipe(map$1(([classId, classes]) => classes.find((clazz) => clazz.id === classId)?.attributes ?? []), withLatestFrom(this.fields$), map$1(([attrs, fields]) => attrs.filter((attr) => fields.find((f) => f.id === attr.field)?.type !== FieldType.RAW)), map$1((attrs) => attrs.concat({
927
+ name: this.translateService.instant('@pry.search.composed.orderNone'),
928
+ id: 'null'
929
+ })), distinctUntilChanged((p, c) => equal(p, c)));
930
+ }
931
+ ngAfterViewInit() {
932
+ setTimeout(() => {
933
+ this.activated = true;
934
+ }, 100);
935
+ }
936
+ changeProperty(_attribute, asc) {
937
+ if (this.activated) {
938
+ const attribute = _attribute === 'null' ? undefined : _attribute;
939
+ this.store.dispatch(SearchMonoClassActions.addOrder({ attribute: attribute, asc: asc ?? (attribute ? 'asc' : undefined) }));
940
+ }
941
+ }
942
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchOrderComponent, deps: [{ token: i1.Store }, { token: i3.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
943
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchOrderComponent, selector: "pry-search-order", host: { listeners: { "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)" }, properties: { "class": "this.class", "class.is-hover": "this.hover" } }, ngImport: i0, template: "<div class=\"o-pry-search-order\">\n <pry-select\n (ngModelChange)=\"changeProperty($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"variableAttributes$ | async\"\n [ngModel]=\"(order$ | async)?.attribute ?? 'null'\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n ></pry-select>\n <pry-toggle\n *ngIf=\"(order$ | async)?.attribute\"\n [ngModel]=\"(order$ | async)?.asc === 'asc'\"\n (ngModelChange)=\"changeProperty(undefined, $event ? 'asc' : 'desc')\"\n [alwaysActive]=\"true\"\n dir=\"ltr\"\n >\n {{ ((order$ | async)?.asc === 'asc' ? '@pry.search.composed.orderA' : '@pry.search.composed.orderD') | i18n }}\n </pry-toggle>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5$1.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
944
+ }
945
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchOrderComponent, decorators: [{
946
+ type: Component,
947
+ args: [{ selector: 'pry-search-order', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"o-pry-search-order\">\n <pry-select\n (ngModelChange)=\"changeProperty($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"variableAttributes$ | async\"\n [ngModel]=\"(order$ | async)?.attribute ?? 'null'\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n ></pry-select>\n <pry-toggle\n *ngIf=\"(order$ | async)?.attribute\"\n [ngModel]=\"(order$ | async)?.asc === 'asc'\"\n (ngModelChange)=\"changeProperty(undefined, $event ? 'asc' : 'desc')\"\n [alwaysActive]=\"true\"\n dir=\"ltr\"\n >\n {{ ((order$ | async)?.asc === 'asc' ? '@pry.search.composed.orderA' : '@pry.search.composed.orderD') | i18n }}\n </pry-toggle>\n</div>\n" }]
948
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i3.PryI18nService }]; }, propDecorators: { class: [{
949
+ type: HostBinding,
950
+ args: ['class']
951
+ }], hover: [{
952
+ type: HostBinding,
953
+ args: ['class.is-hover']
954
+ }], onMouseOver: [{
955
+ type: HostListener,
956
+ args: ['mouseover', ['$event']]
957
+ }], onMouseOut: [{
958
+ type: HostListener,
959
+ args: ['mouseout', ['$event']]
960
+ }] } });
961
+
962
+ class PrySearchMonoClassComponent {
963
+ constructor(store) {
964
+ this.store = store;
965
+ this.classes$ = this.store.select(ClassSelectors.classes);
966
+ this.monoClassMasterId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId);
967
+ this.monoClassId$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch);
968
+ this.monoClass$ = this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch).pipe(filter$1((id) => id !== null), switchMap$1((id) => this.store.select(ClassSelectors.classById(id))), filter$1((clazz) => clazz !== null));
969
+ }
970
+ onChangeClass(classId) {
971
+ this.store.dispatch(SearchMonoClassActions.addOrder({}));
972
+ this.monoClassId$
973
+ .pipe(take$1(1), filter$1((monoClassId) => monoClassId !== classId))
974
+ .subscribe(() => this.store.dispatch(SearchMonoClassActions.selectMonoClassSearch({ classId })));
975
+ }
976
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchMonoClassComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
977
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchMonoClassComponent, selector: "pry-search-mono-class", ngImport: i0, template: "<div class=\"o-search-mono-class\">\n <div class=\"o-search-mono-class__header search-mono__header\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"composed_class\">{{ '@pry.search.composed.class' | i18n }}</label>\n <pry-select\n [items]=\"classes$ | async\"\n [itemsAsOption]=\"true\"\n bindValue=\"id\"\n [ngModel]=\"monoClassId$ | async\"\n (ngModelChange)=\"onChangeClass($event)\"\n [templateLabel]=\"optionTpl\"\n [templateOption]=\"optionTpl\"\n class=\"a-pry-select\"\n id=\"composed_class\"\n >\n </pry-select>\n </div>\n\n <ng-template #optionTpl let-item=\"item\">\n <div class=\"o-search-mono-class__header__selected search-class-selected__content\">\n <ng-container *ngIf=\"item.image; else noImg\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item.id | translateId: { type: 'class', output: 'icon' } | async\"\n />\n </ng-container>\n <ng-template #noImg>\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item.id | translateId: { type: 'class', output: 'icon' } | async\"\n />\n </ng-template>\n <span>{{ item.name }}</span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-mono-class__content-wrapper search-mono__content\">\n <div class=\"o-search-mono-class__content search-mono__content__wrapper\">\n <ng-container *ngIf=\"monoClassMasterId$ | async as conditionId; else noCondition\">\n <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n {{ '@pry.search.composed.title' | i18n }}\n </p>\n <ng-container *ngIf=\"monoClass$ | async as clazz\">\n <pry-search-composed [id]=\"conditionId\"></pry-search-composed>\n <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n {{ '@pry.search.composed.order' | i18n }}\n </p>\n <pry-search-order></pry-search-order>\n </ng-container>\n </ng-container>\n </div>\n <ng-template #noCondition>{{ '@pry.search.composed.shouldSelectClass' | i18n }}</ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: PrySearchComposedComponent, selector: "pry-search-composed", inputs: ["id"] }, { kind: "component", type: PrySearchOrderComponent, selector: "pry-search-order" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
978
+ }
979
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchMonoClassComponent, decorators: [{
980
+ type: Component,
981
+ args: [{ selector: 'pry-search-mono-class', template: "<div class=\"o-search-mono-class\">\n <div class=\"o-search-mono-class__header search-mono__header\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"composed_class\">{{ '@pry.search.composed.class' | i18n }}</label>\n <pry-select\n [items]=\"classes$ | async\"\n [itemsAsOption]=\"true\"\n bindValue=\"id\"\n [ngModel]=\"monoClassId$ | async\"\n (ngModelChange)=\"onChangeClass($event)\"\n [templateLabel]=\"optionTpl\"\n [templateOption]=\"optionTpl\"\n class=\"a-pry-select\"\n id=\"composed_class\"\n >\n </pry-select>\n </div>\n\n <ng-template #optionTpl let-item=\"item\">\n <div class=\"o-search-mono-class__header__selected search-class-selected__content\">\n <ng-container *ngIf=\"item.image; else noImg\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item.id | translateId: { type: 'class', output: 'icon' } | async\"\n />\n </ng-container>\n <ng-template #noImg>\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item.id | translateId: { type: 'class', output: 'icon' } | async\"\n />\n </ng-template>\n <span>{{ item.name }}</span>\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-mono-class__content-wrapper search-mono__content\">\n <div class=\"o-search-mono-class__content search-mono__content__wrapper\">\n <ng-container *ngIf=\"monoClassMasterId$ | async as conditionId; else noCondition\">\n <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n {{ '@pry.search.composed.title' | i18n }}\n </p>\n <ng-container *ngIf=\"monoClass$ | async as clazz\">\n <pry-search-composed [id]=\"conditionId\"></pry-search-composed>\n <p class=\"o-search-mono-class__content__title search-mono__content__title\">\n {{ '@pry.search.composed.order' | i18n }}\n </p>\n <pry-search-order></pry-search-order>\n </ng-container>\n </ng-container>\n </div>\n <ng-template #noCondition>{{ '@pry.search.composed.shouldSelectClass' | i18n }}</ng-template>\n </div>\n</div>\n" }]
982
+ }], ctorParameters: function () { return [{ type: i1.Store }]; } });
983
+
984
+ class SearchMultiClassService {
985
+ generateCondition(field, operator) {
986
+ const id = v4();
987
+ return {
988
+ id,
989
+ field,
990
+ operator: operator ? operator : field ? 'EQUALS' : null,
991
+ value: field ? '' : null,
992
+ isDate: false
993
+ };
994
+ }
995
+ getConditionsFromSearchPayload(payload, fields) {
996
+ return payload.fields.map((item) => {
997
+ const generatedCondition = this.generateCondition(item.field, item.operator);
998
+ const field = fields.find((field) => field.id === item.field);
999
+ if (!field) {
1000
+ return generatedCondition;
1001
+ }
1002
+ const pattern = this.getPatternForField(field);
1003
+ return {
1004
+ ...generatedCondition,
1005
+ value: item.value,
1006
+ pattern,
1007
+ isDate: field?.type === FieldType.INSTANT
1008
+ };
1009
+ });
1010
+ }
1011
+ buildConditionsToSearchPayload(conditions, classes, multiType) {
1012
+ const oClasses = this.getClassesIdsByConditions(conditions, classes);
1013
+ const fields = conditions.map((c) => ({
1014
+ field: c.field,
1015
+ operator: c.operator,
1016
+ value: c.value,
1017
+ upperValue: c.upperValue
1018
+ }));
1019
+ return {
1020
+ fullSearch: null,
1021
+ type: NamedQueryTypes.MULTI_CLASS,
1022
+ multiType,
1023
+ oClasses,
1024
+ fields: fields.map((f) => {
1025
+ if (f.operator === 'INSIDE' || f.operator === 'OUTSIDE') {
1026
+ return f;
1027
+ }
1028
+ const { upperValue, ...rest } = f;
1029
+ return rest;
1030
+ })
1031
+ };
1032
+ }
1033
+ getFieldsAvailable(conditions, classes, fields, excludedCondition) {
1034
+ const selectedFields = this.getSelectedFields(conditions, excludedCondition);
1035
+ const availableClasses = this.getClassesIntersectFields(selectedFields, classes);
1036
+ const classesByFields = {};
1037
+ const availableFields = [
1038
+ ...new Set(availableClasses.reduce((acc, c) => {
1039
+ const fieldsByClass = c.attributes
1040
+ .map((a) => fields.find((f) => f.id === a.field))
1041
+ .filter((f) => f !== undefined);
1042
+ fieldsByClass.forEach((f) => {
1043
+ classesByFields[f.id] = classesByFields[f.id] ? [...classesByFields[f.id], c.name] : [c.name];
1044
+ });
1045
+ return [...acc, ...fieldsByClass];
1046
+ }, []))
1047
+ ];
1048
+ return availableFields.map((f) => ({
1049
+ id: f.id,
1050
+ name: f.name,
1051
+ classes: classesByFields[f.id]
1052
+ }));
1053
+ }
1054
+ getClassesForField(conditions, condition, classes) {
1055
+ const selectedFields = this.getSelectedFields(conditions);
1056
+ const availableClasses = this.getClassesIntersectFields(selectedFields, classes);
1057
+ return condition
1058
+ ? availableClasses.filter((c) => c.attributes.find((a) => a.field === condition.field))
1059
+ : availableClasses;
1060
+ }
1061
+ getPatternForField(field) {
1062
+ const type = field.type;
1063
+ switch (type) {
1064
+ case FieldType.DECIMAL:
1065
+ return '^[+-]?([0-9]*[.])?[0-9]+$';
1066
+ case FieldType.INTEGER:
1067
+ case FieldType.LONG:
1068
+ return '^[+-]?[0-9]+$';
1069
+ case FieldType.STRING:
1070
+ case FieldType.KEYWORD:
1071
+ return '^.+$';
1072
+ case FieldType.INSTANT:
1073
+ return '^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$';
1074
+ default:
1075
+ return '^.+$';
1076
+ }
1077
+ }
1078
+ getClassesIdsByConditions(conditions, classes) {
1079
+ const selectedFields = this.getSelectedFields(conditions);
1080
+ const availableClasses = this.getClassesIntersectFields(selectedFields, classes);
1081
+ return availableClasses.map((c) => c.id);
1082
+ }
1083
+ getClassesIntersectFields(fields, classes) {
1084
+ return fields?.length > 0
1085
+ ? classes.filter((c) => {
1086
+ const fieldsInClass = c.attributes.map((a) => a.field);
1087
+ const intersect = fields.filter((field) => fieldsInClass.includes(field)).length;
1088
+ return intersect === fields.length;
1089
+ })
1090
+ : classes;
1091
+ }
1092
+ getSelectedFields(conditions, excludedCondition) {
1093
+ return [
1094
+ ...new Set(conditions.filter((c) => !(c.id === excludedCondition || c.field === undefined)).map((c) => c.field))
1095
+ ];
1096
+ }
1097
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMultiClassService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1098
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMultiClassService, providedIn: 'root' }); }
1099
+ }
1100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMultiClassService, decorators: [{
1101
+ type: Injectable,
1102
+ args: [{ providedIn: 'root' }]
1103
+ }] });
1104
+
1105
+ class MultiClassFieldSelectionComponent {
1106
+ set conditionId(val) {
1107
+ this._conditionId = val;
1108
+ this.availableFields$ = combineLatest([this.conditions$, this.classes$, this.fields$]).pipe(map(([conditions, classes, fields]) => this.sortFields(conditions, classes, fields)), map((fields) => {
1109
+ const uniqueFields = fields.map((field) => ({
1110
+ ...field,
1111
+ classes: [...new Set(field.classes)]
1112
+ }));
1113
+ return uniqueFields;
1114
+ }));
1115
+ }
1116
+ get conditionId() {
1117
+ return this._conditionId;
1118
+ }
1119
+ constructor(store, searchMultiClassService) {
1120
+ this.store = store;
1121
+ this.searchMultiClassService = searchMultiClassService;
1122
+ this.fieldSearch = '';
1123
+ this.closeModal = new EventEmitter();
1124
+ this.selectFieldChange = new EventEmitter();
1125
+ this.classes$ = this.store.select(ClassSelectors.classes);
1126
+ this.fields$ = this.store
1127
+ .select(FieldSelectors.fields)
1128
+ .pipe(map((fields) => fields.filter((field) => field.type !== FieldType.RAW)));
1129
+ this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);
1130
+ this.availableFields$ = combineLatest([this.conditions$, this.classes$, this.fields$]).pipe(map(([conditions, classes, fields]) => this.sortFields(conditions, classes, fields)), map((fields) => {
1131
+ const uniqueFields = fields.map((field) => ({
1132
+ ...field,
1133
+ classes: [...new Set(field.classes)]
1134
+ }));
1135
+ return uniqueFields;
1136
+ }));
1137
+ }
1138
+ sortFields(conditions, classes, fields) {
1139
+ const availableFields = this.searchMultiClassService.getFieldsAvailable(conditions, classes, fields, this._conditionId);
1140
+ return availableFields.sort((a, b) => a.name.localeCompare(b.name));
1141
+ }
1142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MultiClassFieldSelectionComponent, deps: [{ token: i1.Store }, { token: SearchMultiClassService }], target: i0.ɵɵFactoryTarget.Component }); }
1143
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: MultiClassFieldSelectionComponent, selector: "pry-multi-class-field-selection", inputs: { conditionId: "conditionId" }, outputs: { closeModal: "closeModal", selectFieldChange: "selectFieldChange" }, ngImport: i0, template: "<div class=\"o-multi-class-field-selection\" id=\"popin\">\n <div class=\"o-multi-class-field-selection__header\" data-toggle=\"popin\">\n <div class=\"o-multi-class-field-selection__header__top\">\n <div class=\"o-multi-class-field-selection__header__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.search.multi.selectField' | i18n }}\n </h2>\n </div>\n <div class=\"o-multi-class-field-selection__header__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal.emit()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"availableFields$ | async as list\">\n <ng-container *ngIf=\"list.length > 7\">\n <div class=\"o-multi-class-field-selection__header__search\">\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"fieldSearch\" placeholder=\"Filtrer\" />\n </div>\n </ng-container>\n </ng-container>\n </div>\n <div class=\"o-multi-class-field-selection__legend\">{{ '@pry.search.multi.legend' | i18n }}</div>\n <ul class=\"o-multi-class-field-selection__fields\">\n <ng-container *ngFor=\"let field of availableFields$ | async | pryFilter: 'name' : fieldSearch\">\n <li class=\"o-multi-class-field-selection__fields__select\" (click)=\"selectFieldChange.emit(field.id)\">\n <button class=\"a-btn -link-like\">\n {{ field.name }}\n <span class=\"o-multi-class-field-selection__fields__select__inside\"\n >{{ '@pry.search.multi.in' | i18n }}\n <ng-container> {{ field.classes.join(', ') }} </ng-container>\n </span>\n </button>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6$1.PryFilterPipe, name: "pryFilter" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1144
+ }
1145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MultiClassFieldSelectionComponent, decorators: [{
1146
+ type: Component,
1147
+ args: [{ selector: 'pry-multi-class-field-selection', template: "<div class=\"o-multi-class-field-selection\" id=\"popin\">\n <div class=\"o-multi-class-field-selection__header\" data-toggle=\"popin\">\n <div class=\"o-multi-class-field-selection__header__top\">\n <div class=\"o-multi-class-field-selection__header__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.search.multi.selectField' | i18n }}\n </h2>\n </div>\n <div class=\"o-multi-class-field-selection__header__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal.emit()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"availableFields$ | async as list\">\n <ng-container *ngIf=\"list.length > 7\">\n <div class=\"o-multi-class-field-selection__header__search\">\n <input class=\"a-form-field\" type=\"text\" [(ngModel)]=\"fieldSearch\" placeholder=\"Filtrer\" />\n </div>\n </ng-container>\n </ng-container>\n </div>\n <div class=\"o-multi-class-field-selection__legend\">{{ '@pry.search.multi.legend' | i18n }}</div>\n <ul class=\"o-multi-class-field-selection__fields\">\n <ng-container *ngFor=\"let field of availableFields$ | async | pryFilter: 'name' : fieldSearch\">\n <li class=\"o-multi-class-field-selection__fields__select\" (click)=\"selectFieldChange.emit(field.id)\">\n <button class=\"a-btn -link-like\">\n {{ field.name }}\n <span class=\"o-multi-class-field-selection__fields__select__inside\"\n >{{ '@pry.search.multi.in' | i18n }}\n <ng-container> {{ field.classes.join(', ') }} </ng-container>\n </span>\n </button>\n </li>\n </ng-container>\n </ul>\n</div>\n" }]
1148
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: SearchMultiClassService }]; }, propDecorators: { conditionId: [{
1149
+ type: Input
1150
+ }], closeModal: [{
1151
+ type: Output
1152
+ }], selectFieldChange: [{
1153
+ type: Output
1154
+ }] } });
1155
+
1156
+ class MultiClassConditionComponent {
1157
+ set id(val) {
1158
+ this._id = val;
1159
+ this.condition$ = this.store.select(SearchMultiClassSelectors.getConditionById(this._id));
1160
+ this.condition$
1161
+ .pipe(filter((c) => c?.field !== undefined), take(1))
1162
+ .subscribe((c) => {
1163
+ if (c.isDate && typeof this.form.get('value')?.value !== 'string') {
1164
+ this.form.patchValue({ operator: c.operator, value: { start: c.value, end: c.upperValue } });
1165
+ }
1166
+ else {
1167
+ this.form.patchValue({ operator: c.operator, value: c.value, upperValue: c.upperValue }, { emitEvent: false });
1168
+ }
1169
+ this.formValue?.setValidators([Validators.required]);
1170
+ this.formValue?.updateValueAndValidity();
1171
+ if (c.value !== null) {
1172
+ this.form.markAllAsTouched();
1173
+ }
1174
+ this.form.enable({ emitEvent: false });
1175
+ });
1176
+ this.field$ = this.condition$.pipe(filter((c) => c !== undefined), switchMap((c) => this.store.select(FieldSelectors.fieldById(c.field))));
1177
+ this.classesLinked$ = combineLatest([this.conditions$, this.condition$, this.classes$]).pipe(map(([conditions, condition, classes]) => this.service.getClassesForField(conditions, condition, classes)), filter((clazz) => (clazz?.length ?? 0) > 0));
1178
+ this.operators$ = this.condition$.pipe(filter((c) => c !== undefined), switchMap((c) => this.store.select(FieldSelectors.fieldById(c.field))), filter((f) => f !== undefined), map((f) => {
1179
+ const type = f.type;
1180
+ if ([FieldType.STRING, FieldType.KEYWORD].includes(type)) {
1181
+ return OPERATOR_OPTIONS.filter((opt) => opt.type === 'string');
1182
+ }
1183
+ else if ([FieldType.DECIMAL, FieldType.INTEGER, FieldType.LONG].includes(type)) {
1184
+ return OPERATOR_OPTIONS.filter((opt) => opt.type === 'number');
1185
+ }
1186
+ else {
1187
+ return OPERATOR_OPTIONS.filter((opt) => opt.type === 'date');
1188
+ }
1189
+ }));
1190
+ }
1191
+ get formValue() {
1192
+ return this.form.get('value');
1193
+ }
1194
+ constructor(store, service, overlay, viewContainerRef) {
1195
+ this.store = store;
1196
+ this.service = service;
1197
+ this.overlay = overlay;
1198
+ this.viewContainerRef = viewContainerRef;
1199
+ this.condition$ = of(undefined);
1200
+ this.classesLinked$ = of([]);
1201
+ this.field$ = of(undefined);
1202
+ this.operators$ = of([]);
1203
+ this.opened = false;
1204
+ this.form = new UntypedFormGroup({
1205
+ operator: new UntypedFormControl({ value: null, disabled: true }, [Validators.required]),
1206
+ value: new UntypedFormControl({ value: null, disabled: true }, [Validators.required]),
1207
+ upperValue: new UntypedFormControl({ value: null, disabled: true }, [])
1208
+ });
1209
+ this.classes$ = this.store.select(ClassSelectors.classes);
1210
+ this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);
1211
+ this.notLastCondition$ = this.conditions$.pipe(map((conditions) => (conditions?.length ?? 0) !== 1));
1212
+ }
1213
+ ngOnInit() {
1214
+ this.form.get('operator')?.valueChanges.subscribe((value) => {
1215
+ if (this._id) {
1216
+ this.store.dispatch(SearchMultiClassActions.updateCondition({ conditionId: this._id, key: 'operator', value }));
1217
+ }
1218
+ });
1219
+ }
1220
+ onRemoveCondition(condition) {
1221
+ this.store.dispatch(SearchMultiClassActions.removeCondition({ conditionId: condition.id }));
1222
+ }
1223
+ toggleFieldSelection() {
1224
+ this.opened = !this.opened;
1225
+ if (this.opened) {
1226
+ this.openWithTemplate();
1227
+ }
1228
+ else {
1229
+ this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));
1230
+ this.overlayRef?.dispose();
1231
+ }
1232
+ }
1233
+ openWithTemplate() {
1234
+ this.overlayRef = this.overlay.create(new OverlayConfig({
1235
+ hasBackdrop: true,
1236
+ backdropClass: 'backdrop',
1237
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
1238
+ minHeight: '300px',
1239
+ maxHeight: '600px',
1240
+ width: '500px'
1241
+ }));
1242
+ this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));
1243
+ this.overlayRef.backdropClick().subscribe((_) => this.toggleFieldSelection());
1244
+ this.overlayRef.attach(new TemplatePortal(this.fieldSelectionTpl, this.viewContainerRef));
1245
+ }
1246
+ onChangeField(condition, field) {
1247
+ if (condition.field !== field) {
1248
+ this.store.dispatch(SearchMultiClassActions.updateConditionField({ conditionId: condition.id, field }));
1249
+ }
1250
+ this.toggleFieldSelection();
1251
+ }
1252
+ onCloseModal() {
1253
+ this.toggleFieldSelection();
1254
+ }
1255
+ onUpdateValue(condition) {
1256
+ let formValue, formSecondValue;
1257
+ if (condition.isDate && typeof this.form.get('value')?.value !== 'string') {
1258
+ formValue = this.form.get('value')?.value.start;
1259
+ formSecondValue = this.form.get('value')?.value.end;
1260
+ }
1261
+ else {
1262
+ formValue = this.form.get('value')?.value;
1263
+ formSecondValue = this.form.get('upperValue')?.value;
1264
+ }
1265
+ if (formValue !== condition.value || formSecondValue !== condition.upperValue) {
1266
+ this.store.dispatch(SearchMultiClassActions.updateCondition({
1267
+ conditionId: condition.id,
1268
+ key: 'value',
1269
+ value: formValue,
1270
+ upperValue: formSecondValue
1271
+ }));
1272
+ }
1273
+ }
1274
+ get hasTwoFields() {
1275
+ return this.form.get('operator')?.value === 'INSIDE' || this.form.get('operator')?.value === 'OUTSIDE';
1276
+ }
1277
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MultiClassConditionComponent, deps: [{ token: i1.Store }, { token: SearchMultiClassService }, { token: i2$1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
1278
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: MultiClassConditionComponent, selector: "pry-multi-class-condition", inputs: { id: "id" }, viewQueries: [{ propertyName: "fieldSelectionTpl", first: true, predicate: ["fieldSelectionTpl"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <div class=\"o-multi-class-condition\">\n <div class=\"o-multi-class-condition__content\">\n <div class=\"o-multi-class-condition__content__action\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-sm -width-full\"\n aria-label=\"selection button\"\n (click)=\"toggleFieldSelection()\"\n >\n <ng-container *ngIf=\"field$ | async as field; else noFieldTpl\">\n {{ field.name }}\n </ng-container>\n <ng-template #noFieldTpl>{{ '@pry.search.multi.selectField' | i18n }}</ng-template>\n </button>\n\n <ng-container *ngIf=\"classesLinked$ | async as classesLinked\">\n <pry-icon\n iconSvg=\"links_line\"\n [width]=\"15\"\n [height]=\"15\"\n style=\"color: black\"\n [pryTooltip]=\"classesTooltip\"\n pryTooltipPosition=\"after\"\n ></pry-icon>\n <ng-template #classesTooltip>\n <span>\n {{ '@pry.search.multi.in' | i18n }}\n <span *ngFor=\"let clazz of classesLinked; let last = last\">\n {{ clazz.name }}\n <ng-container *ngIf=\"!last\">, </ng-container>\n </span>\n </span>\n </ng-template>\n </ng-container>\n </div>\n\n <ng-container [formGroup]=\"form\">\n <div class=\"m-form-label-field\">\n <pry-select\n [items]=\"operators$ | async\"\n placeholder=\"Op\u00E9rateur\"\n formControlName=\"operator\"\n [itemsAsOption]=\"true\"\n [labelTranslate]=\"true\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"condition.isDate; else classicInput\">\n <pry-date-picker\n formControlName=\"value\"\n (click)=\"onUpdateValue(condition)\"\n [rangePicker]=\"hasTwoFields\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </ng-container>\n <ng-template #classicInput>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"\n (hasTwoFields ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\n \"\n formControlName=\"value\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n <ng-container *ngIf=\"hasTwoFields\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n formControlName=\"upperValue\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n </ng-container>\n </ng-template>\n\n <label class=\"a-label a-label--help -error\" *ngIf=\"formValue?.errors?.['required'] && formValue?.touched\">\n {{ '@pry.search.multi.requiredError' | i18n }}\n </label>\n </div>\n </ng-container>\n </div>\n\n <div class=\"o-multi-class-condition__delete-content\">\n <ng-container *ngIf=\"notLastCondition$ | async; else cannotDelete\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n <pry-icon\n iconSvg=\"delete\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n (click)=\"onRemoveCondition(condition)\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-container>\n </div>\n <ng-template #cannotDelete>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-template>\n </div>\n\n <ng-template #fieldSelectionTpl>\n <pry-multi-class-field-selection\n [conditionId]=\"condition.id\"\n (closeModal)=\"onCloseModal()\"\n (selectFieldChange)=\"onChangeField(condition, $event)\"\n ></pry-multi-class-field-selection>\n </ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "directive", type: i3.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "component", type: i3.PryDatePickerComponent, selector: "pry-date-picker", inputs: ["rangePicker", "timePicker", "maxYear", "minYear", "roundSelection"] }, { kind: "component", type: MultiClassFieldSelectionComponent, selector: "pry-multi-class-field-selection", inputs: ["conditionId"], outputs: ["closeModal", "selectFieldChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1279
+ }
1280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: MultiClassConditionComponent, decorators: [{
1281
+ type: Component,
1282
+ args: [{ selector: 'pry-multi-class-condition', template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <div class=\"o-multi-class-condition\">\n <div class=\"o-multi-class-condition__content\">\n <div class=\"o-multi-class-condition__content__action\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-sm -width-full\"\n aria-label=\"selection button\"\n (click)=\"toggleFieldSelection()\"\n >\n <ng-container *ngIf=\"field$ | async as field; else noFieldTpl\">\n {{ field.name }}\n </ng-container>\n <ng-template #noFieldTpl>{{ '@pry.search.multi.selectField' | i18n }}</ng-template>\n </button>\n\n <ng-container *ngIf=\"classesLinked$ | async as classesLinked\">\n <pry-icon\n iconSvg=\"links_line\"\n [width]=\"15\"\n [height]=\"15\"\n style=\"color: black\"\n [pryTooltip]=\"classesTooltip\"\n pryTooltipPosition=\"after\"\n ></pry-icon>\n <ng-template #classesTooltip>\n <span>\n {{ '@pry.search.multi.in' | i18n }}\n <span *ngFor=\"let clazz of classesLinked; let last = last\">\n {{ clazz.name }}\n <ng-container *ngIf=\"!last\">, </ng-container>\n </span>\n </span>\n </ng-template>\n </ng-container>\n </div>\n\n <ng-container [formGroup]=\"form\">\n <div class=\"m-form-label-field\">\n <pry-select\n [items]=\"operators$ | async\"\n placeholder=\"Op\u00E9rateur\"\n formControlName=\"operator\"\n [itemsAsOption]=\"true\"\n [labelTranslate]=\"true\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"condition.isDate; else classicInput\">\n <pry-date-picker\n formControlName=\"value\"\n (click)=\"onUpdateValue(condition)\"\n [rangePicker]=\"hasTwoFields\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </ng-container>\n <ng-template #classicInput>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"\n (hasTwoFields ? '@pry.search.placeholder.minValue' : '@pry.search.placeholder.search') | i18n\n \"\n formControlName=\"value\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n <ng-container *ngIf=\"hasTwoFields\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.search.placeholder.maxValue' | i18n\"\n formControlName=\"upperValue\"\n (focusout)=\"onUpdateValue(condition)\"\n />\n </ng-container>\n </ng-template>\n\n <label class=\"a-label a-label--help -error\" *ngIf=\"formValue?.errors?.['required'] && formValue?.touched\">\n {{ '@pry.search.multi.requiredError' | i18n }}\n </label>\n </div>\n </ng-container>\n </div>\n\n <div class=\"o-multi-class-condition__delete-content\">\n <ng-container *ngIf=\"notLastCondition$ | async; else cannotDelete\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\">\n <pry-icon\n iconSvg=\"delete\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n (click)=\"onRemoveCondition(condition)\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-container>\n </div>\n <ng-template #cannotDelete>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" disabled>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </ng-template>\n </div>\n\n <ng-template #fieldSelectionTpl>\n <pry-multi-class-field-selection\n [conditionId]=\"condition.id\"\n (closeModal)=\"onCloseModal()\"\n (selectFieldChange)=\"onChangeField(condition, $event)\"\n ></pry-multi-class-field-selection>\n </ng-template>\n</ng-container>\n" }]
1283
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: SearchMultiClassService }, { type: i2$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { fieldSelectionTpl: [{
1284
+ type: ViewChild,
1285
+ args: ['fieldSelectionTpl', { read: TemplateRef }]
1286
+ }], id: [{
1287
+ type: Input
1288
+ }] } });
1289
+
1290
+ class PrySearchMultiClassComponent {
1291
+ constructor(store) {
1292
+ this.store = store;
1293
+ this.optionsOpen = false;
1294
+ this.conditions$ = this.store.select(SearchMultiClassSelectors.conditions);
1295
+ this.multiType$ = this.store.select(SearchMultiClassSelectors.multiType);
1296
+ this.conditions$.pipe(take(1)).subscribe((conditions) => {
1297
+ if ((conditions?.length ?? 0) === 0) {
1298
+ this.store.dispatch(SearchMultiClassActions.addNewEmptyCondition());
1299
+ }
1300
+ });
1301
+ }
1302
+ onAddCondition() {
1303
+ this.store.dispatch(SearchMultiClassActions.addNewEmptyCondition());
1304
+ }
1305
+ onChangeMultiType(evt) {
1306
+ const multiType = evt ? 'OR' : 'AND';
1307
+ this.store.dispatch(SearchMultiClassActions.updateMultiType({ multiType }));
1308
+ }
1309
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchMultiClassComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
1310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchMultiClassComponent, selector: "pry-search-multi-class", ngImport: i0, template: "<div class=\"o-search-multi-class\">\n <div class=\"o-search-multi-class__header\">\n <h3 class=\"a-h3\">{{ '@pry.search.multi.title' | i18n }}</h3>\n <div class=\"\" [pryOverlay]=\"optionOverlay\" [(overlayOpen)]=\"optionsOpen\" (click)=\"optionsOpen = !optionsOpen\">\n <button\n class=\"a-btn a-btn--icon-text\"\n [pryTooltip]=\"infoTooltip\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltip_searchMulticlass\"\n >\n {{ '@pry.search.multi.options' | i18n }}\n <pry-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></pry-icon>\n </button>\n </div>\n <ng-template #optionOverlay>\n <div class=\"o-search-multi-class__options\">\n <pry-toggle\n [ngModel]=\"(multiType$ | async) === 'OR'\"\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n (ngModelChange)=\"onChangeMultiType($event)\"\n >{{ '@pry.search.multi.multiType' | i18n }}</pry-toggle\n >\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-multi-class__conditions-wrapper\">\n <div class=\"o-search-multi-class__conditions\">\n <ng-container *ngFor=\"let condition of conditions$ | async\">\n <pry-multi-class-condition [id]=\"condition.id\"></pry-multi-class-condition>\n </ng-container>\n </div>\n <div class=\"o-search-multi-class__add-condition\">\n <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></pry-icon>\n {{ '@pry.search.multi.addCondition' | i18n }}\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchMulticlass\">\n <span class=\"m-tooltip__text\"> Options suppl\u00E9mentaires </span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "directive", type: i3.PryOverlayDirective, selector: "[pryOverlay]", inputs: ["pryOverlay", "styleReversed", "pryOverlaySticky", "pryOverlayNoPadding", "pryOverlayPosition", "overlayOpen", "hasBackdrop"], outputs: ["overlayOpenChange"] }, { kind: "component", type: MultiClassConditionComponent, selector: "pry-multi-class-condition", inputs: ["id"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1311
+ }
1312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchMultiClassComponent, decorators: [{
1313
+ type: Component,
1314
+ args: [{ selector: 'pry-search-multi-class', template: "<div class=\"o-search-multi-class\">\n <div class=\"o-search-multi-class__header\">\n <h3 class=\"a-h3\">{{ '@pry.search.multi.title' | i18n }}</h3>\n <div class=\"\" [pryOverlay]=\"optionOverlay\" [(overlayOpen)]=\"optionsOpen\" (click)=\"optionsOpen = !optionsOpen\">\n <button\n class=\"a-btn a-btn--icon-text\"\n [pryTooltip]=\"infoTooltip\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltip_searchMulticlass\"\n >\n {{ '@pry.search.multi.options' | i18n }}\n <pry-icon iconSvg=\"tune\" [width]=\"16\" [height]=\"16\" [animation]=\"false\"></pry-icon>\n </button>\n </div>\n <ng-template #optionOverlay>\n <div class=\"o-search-multi-class__options\">\n <pry-toggle\n [ngModel]=\"(multiType$ | async) === 'OR'\"\n [leftword]=\"'@pry.search.type.or' | i18n\"\n [rightword]=\"'@pry.search.type.and' | i18n\"\n [alwaysActive]=\"true\"\n (ngModelChange)=\"onChangeMultiType($event)\"\n >{{ '@pry.search.multi.multiType' | i18n }}</pry-toggle\n >\n </div>\n </ng-template>\n </div>\n\n <div class=\"o-search-multi-class__conditions-wrapper\">\n <div class=\"o-search-multi-class__conditions\">\n <ng-container *ngFor=\"let condition of conditions$ | async\">\n <pry-multi-class-condition [id]=\"condition.id\"></pry-multi-class-condition>\n </ng-container>\n </div>\n <div class=\"o-search-multi-class__add-condition\">\n <button (click)=\"onAddCondition()\" class=\"a-btn a-btn--secondary -size-sm\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"add\"></pry-icon>\n {{ '@pry.search.multi.addCondition' | i18n }}\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchMulticlass\">\n <span class=\"m-tooltip__text\"> Options suppl\u00E9mentaires </span>\n </div>\n</ng-template>\n" }]
1315
+ }], ctorParameters: function () { return [{ type: i1.Store }]; } });
1316
+
1317
+ class PrySearchFulltextComponent {
1318
+ set currentEdit(nq) {
1319
+ if (nq) {
1320
+ const request = nq.request;
1321
+ this.search = request.fullSearch?.value;
1322
+ this.classesSelected = request.oClasses ?? [];
1323
+ }
1324
+ else {
1325
+ this.search = '';
1326
+ this.classesSelected = [];
1327
+ }
1328
+ this.searchDisabled = this.search === '';
1329
+ this.emitChange(this.search, this.classesSelected);
1330
+ }
1331
+ constructor(store) {
1332
+ this.store = store;
1333
+ this.panelClassesOpen = false;
1334
+ this.panelSearchOpen = false;
1335
+ this.mode = 'inline';
1336
+ this.launchButton = true;
1337
+ this.search = '';
1338
+ this.isFocused = false;
1339
+ this.searchChange = new EventEmitter();
1340
+ this.BOTTOM_POSITION = {
1341
+ originX: 'start',
1342
+ originY: 'bottom',
1343
+ overlayX: 'start',
1344
+ overlayY: 'top'
1345
+ };
1346
+ this.TOP_POSITION = {
1347
+ originX: 'start',
1348
+ originY: 'top',
1349
+ overlayX: 'start',
1350
+ overlayY: 'bottom'
1351
+ };
1352
+ this.positions = [this.BOTTOM_POSITION, this.TOP_POSITION];
1353
+ this.classesSelected = [];
1354
+ this.classesSelectedLabel = '@pry.search.fulltext.allClasses';
1355
+ this.searchDisabled = true;
1356
+ this.classes$ = this.store.select(ClassSelectors.classes);
1357
+ }
1358
+ ngOnInit() {
1359
+ this.emitChange(this.search, this.classesSelected);
1360
+ }
1361
+ onArrowUp() {
1362
+ const lastElement = this.chooseClasses.nativeElement.lastElementChild;
1363
+ if (this.selectedClassItem?.previousElementSibling) {
1364
+ this.selectedClassItem = this.selectedClassItem?.previousElementSibling;
1365
+ }
1366
+ else {
1367
+ this.selectedClassItem = lastElement;
1368
+ }
1369
+ const focusElement = this.selectedClassItem;
1370
+ focusElement.focus();
1371
+ }
1372
+ onArrowDown() {
1373
+ const firstElement = this.chooseClasses.nativeElement.firstElementChild;
1374
+ if (this.selectedClassItem?.nextElementSibling) {
1375
+ this.selectedClassItem = this.selectedClassItem?.nextElementSibling;
1376
+ }
1377
+ else {
1378
+ this.selectedClassItem = firstElement;
1379
+ }
1380
+ const focusElement = this.selectedClassItem;
1381
+ focusElement.focus();
1382
+ }
1383
+ clickout(event) {
1384
+ if (this.panelSearchOpen) {
1385
+ setTimeout(() => {
1386
+ this.selectedClassItem = this.chooseClasses?.nativeElement?.firstElementChild;
1387
+ }, 10);
1388
+ const clickInput = this.searchInputRef?.nativeElement?.contains(event.target);
1389
+ if (!clickInput) {
1390
+ const clickPanel = this.searchOverlayRef?.nativeElement?.contains(event.target);
1391
+ if (!clickPanel) {
1392
+ this.panelSearchOpen = false;
1393
+ }
1394
+ }
1395
+ }
1396
+ }
1397
+ keyEvent(event) {
1398
+ this.chooseClasses?.nativeElement?.firstElementChild.focus();
1399
+ this.selectedClassItem = this.chooseClasses?.nativeElement?.firstElementChild;
1400
+ const search = this.search;
1401
+ if ((search ?? '') !== '' && (this.panelSearchOpen || this.isFocused)) {
1402
+ this.searchButton?.nativeElement.click();
1403
+ }
1404
+ }
1405
+ closeFocus() {
1406
+ if (this.panelClassesOpen) {
1407
+ this.panelClassesOpen = false;
1408
+ this.searchClass?.nativeElement?.focus();
1409
+ }
1410
+ }
1411
+ onSearch() {
1412
+ this.panelSearchOpen = false;
1413
+ const search = this.search;
1414
+ if ((search ?? '') !== '') {
1415
+ const classes = this.classesSelected;
1416
+ this.store.dispatch(searchFulltextActions.search({ classes, search }));
1417
+ this.store.dispatch(DashboardActions.updateWidgetInPresentation({
1418
+ id: DEFAULT_NAMED_QUERY_ID,
1419
+ widgetType: this.widgetSelected ?? 'table'
1420
+ }));
1421
+ }
1422
+ }
1423
+ onChangeSearch(evt) {
1424
+ const value = evt?.target?.value ?? '';
1425
+ this.searchDisabled = value === '';
1426
+ this.emitChange(value, this.classesSelected);
1427
+ }
1428
+ onClearSearch(evt) {
1429
+ this.search = '';
1430
+ this.searchDisabled = true;
1431
+ this.emitChange(this.search, this.classesSelected);
1432
+ }
1433
+ onOpenSearchPanel() {
1434
+ this.isFocused = true;
1435
+ this.searchPanelWidth = this.searchInputRef.nativeElement.getBoundingClientRect().width;
1436
+ this.panelSearchOpen = true;
1437
+ }
1438
+ onFocusOut() {
1439
+ this.isFocused = false;
1440
+ }
1441
+ onSelectWidget(widget) {
1442
+ this.widgetSelected = this.widgetSelected === widget ? undefined : widget;
1443
+ }
1444
+ onSelectAllClasses() {
1445
+ this.classesSelected = [];
1446
+ this.classesSelectedLabel = '@pry.search.fulltext.allClasses';
1447
+ }
1448
+ onSelectClass(clazz) {
1449
+ if (this.classesSelected.indexOf(clazz.id) !== -1) {
1450
+ this.classesSelected = this.classesSelected.filter((c) => clazz.id !== c);
1451
+ }
1452
+ else {
1453
+ this.classesSelected = [...this.classesSelected, clazz.id];
1454
+ }
1455
+ this.emitChange(this.search, this.classesSelected);
1456
+ if (this.classesSelected?.length === 1) {
1457
+ this.classes$.pipe(take(1)).subscribe((classes) => {
1458
+ this.classesSelectedLabel =
1459
+ classes.find((c) => this.classesSelected[0] === c.id)?.name ?? '@pry.search.fulltext.oneClass';
1460
+ });
1461
+ }
1462
+ else if (this.classesSelected?.length > 1) {
1463
+ this.classesSelectedLabel = '@pry.search.fulltext.manyClasses';
1464
+ }
1465
+ else {
1466
+ this.classesSelectedLabel = '@pry.search.fulltext.allClasses';
1467
+ }
1468
+ }
1469
+ emitChange(value, classes) {
1470
+ const payload = { value, classes };
1471
+ this.searchChange.emit(payload);
1472
+ }
1473
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchFulltextComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
1474
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchFulltextComponent, selector: "pry-search-fulltext", inputs: { mode: "mode", launchButton: "launchButton", currentEdit: "currentEdit" }, outputs: { searchChange: "searchChange" }, host: { listeners: { "document:click": "clickout($event)", "window:keyup.enter": "keyEvent($event)" } }, viewQueries: [{ propertyName: "searchButton", first: true, predicate: ["searchButton"], descendants: true, read: ElementRef }, { propertyName: "searchTrigger", first: true, predicate: ["searchTrigger"], descendants: true, read: ElementRef }, { propertyName: "searchInputRef", first: true, predicate: ["searchInput"], descendants: true, read: ElementRef }, { propertyName: "searchOverlayRef", first: true, predicate: ["searchOverlay"], descendants: true, read: ElementRef }, { propertyName: "searchClass", first: true, predicate: ["searchClass"], descendants: true }, { propertyName: "chooseClasses", first: true, predicate: ["chooseClasses"], descendants: true }], ngImport: i0, template: "<pry-search-css></pry-search-css>\n<div class=\"o-search-fulltext\" [class.o-search-fulltext--vertical]=\"mode === 'vertical'\">\n <div class=\"o-search-fulltext__container\">\n <button\n #searchClass\n type=\"button\"\n class=\"o-search-fulltext__classes\"\n [class.o-search-fulltext__classes--inline]=\"mode === 'inline'\"\n [pryOverlay]=\"classesOverlay\"\n [(overlayOpen)]=\"panelClassesOpen\"\n pryOverlayPosition=\"start-top\"\n [pryOverlaySticky]=\"true\"\n [pryOverlayNoPadding]=\"true\"\n (click)=\"panelClassesOpen = true\"\n >\n <span\n class=\"o-search-fulltext__classes__content\"\n [pryTooltip]=\"infoTooltip\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltip_searchfulltext\"\n >\n <pry-icon\n [iconSvg]=\"classesSelected.length === 0 ? 'apps' : 'detail'\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n ></pry-icon>\n <span class=\"o-search-fulltext__classes__content__label\" *ngIf=\"mode === 'inline'\">\n {{ classesSelectedLabel | i18n: { nb: classesSelected.length } }}\n </span>\n </span>\n\n <span class=\"o-search-fulltext__classes__arrow\">\n <pry-icon\n iconSvg=\"fleche_bas\"\n [width]=\"17\"\n [height]=\"17\"\n [animation]=\"false\"\n class=\"o-search-fulltext__classes__arrow__icon\"\n [class.is-open]=\"panelClassesOpen\"\n ></pry-icon>\n </span>\n </button>\n\n <pry-choose-widget\n [mode]=\"'input'\"\n [class.m-choose-widget__input__inline]=\"mode === 'inline'\"\n [panelOpen]=\"panelSearchOpen\"\n [width]=\"searchPanelWidth ?? 200\"\n (selected)=\"onSelectWidget($event)\"\n >\n <input\n #searchInput\n [(ngModel)]=\"search\"\n (input)=\"onChangeSearch($event)\"\n (focusin)=\"onOpenSearchPanel()\"\n (focusout)=\"onFocusOut()\"\n />\n <div\n *ngIf=\"!searchDisabled\"\n class=\"o-search-fulltext__input__clear\"\n [pryTooltip]=\"infoTooltipClose\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipClose_searchfulltext\"\n >\n <div class=\"o-search-fulltext__input__clear__wrapper\" (click)=\"onClearSearch($event)\">\n <pry-icon iconSvg=\"close\" [height]=\"16\" [width]=\"16\" [animation]=\"false\"></pry-icon>\n <span class=\"u-visually-hidden\">Effacer la saisie</span>\n </div>\n </div>\n </pry-choose-widget>\n </div>\n\n <button\n #searchButton\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n [class.o-search-fulltext__button__inline]=\"mode === 'inline'\"\n [ngClass]=\"{ ' -width-full': mode === 'vertical' }\"\n [disabled]=\"searchDisabled\"\n *ngIf=\"launchButton\"\n [pryTooltip]=\"infoTooltipSearch\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipSearch_searchfulltext\"\n >\n <pry-icon iconSvg=\"search-line\" [animation]=\"false\"></pry-icon>\n <span *ngIf=\"mode === 'vertical'\">{{ '@pry.search.fulltext.search' | i18n }}</span>\n <span class=\"u-visually-hidden\">Lancer la recherche</span>\n </button>\n</div>\n\n<ng-template #classesOverlay>\n <div\n class=\"o-search-fulltext__classes-overlay\"\n #chooseClasses\n (keydown.escape)=\"closeFocus()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n >\n <button class=\"o-search-fulltext__classes-overlay__item\" (click)=\"onSelectAllClasses()\">\n <pry-icon iconSvg=\"apps\" [width]=\"20\" [height]=\"20\"></pry-icon>\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{\n '@pry.search.fulltext.allClasses' | i18n\n }}</span>\n </button>\n <ng-container *ngFor=\"let clazz of classes$ | async; let last = last\">\n <button\n type=\"button\"\n class=\"o-search-fulltext__classes-overlay__item\"\n (click)=\"onSelectClass(clazz)\"\n [class.o-search-fulltext__classes-overlay__item__selected]=\"classesSelected.includes(clazz.id)\"\n (keydown.tab)=\"last ? closeFocus() : null\"\n >\n <img\n alt=\"class\"\n [height]=\"20\"\n [width]=\"20\"\n [src]=\"clazz.id | translateId: { type: 'class', output: 'icon' } | async\"\n />\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{ clazz.name }}</span>\n </button>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchfulltext\">\n <span class=\"m-tooltip__text\"> S\u00E9lectionner la classe </span>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSearch>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipSearch_searchfulltext\">\n <span class=\"m-tooltip__text\"> Lancer la recherche </span>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipClose>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipClose_searchfulltext\">\n <span class=\"m-tooltip__text\"> Effacer la saisie </span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "directive", type: i3.PryOverlayDirective, selector: "[pryOverlay]", inputs: ["pryOverlay", "styleReversed", "pryOverlaySticky", "pryOverlayNoPadding", "pryOverlayPosition", "overlayOpen", "hasBackdrop"], outputs: ["overlayOpenChange"] }, { kind: "component", type: ChooseWidgetComponent, selector: "pry-choose-widget", inputs: ["panelOpen", "mode", "width"], outputs: ["selected"] }, { kind: "component", type: PrySearchCssComponent, selector: "pry-search-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1475
+ }
1476
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchFulltextComponent, decorators: [{
1477
+ type: Component,
1478
+ args: [{ selector: 'pry-search-fulltext', template: "<pry-search-css></pry-search-css>\n<div class=\"o-search-fulltext\" [class.o-search-fulltext--vertical]=\"mode === 'vertical'\">\n <div class=\"o-search-fulltext__container\">\n <button\n #searchClass\n type=\"button\"\n class=\"o-search-fulltext__classes\"\n [class.o-search-fulltext__classes--inline]=\"mode === 'inline'\"\n [pryOverlay]=\"classesOverlay\"\n [(overlayOpen)]=\"panelClassesOpen\"\n pryOverlayPosition=\"start-top\"\n [pryOverlaySticky]=\"true\"\n [pryOverlayNoPadding]=\"true\"\n (click)=\"panelClassesOpen = true\"\n >\n <span\n class=\"o-search-fulltext__classes__content\"\n [pryTooltip]=\"infoTooltip\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltip_searchfulltext\"\n >\n <pry-icon\n [iconSvg]=\"classesSelected.length === 0 ? 'apps' : 'detail'\"\n [height]=\"20\"\n [width]=\"20\"\n [animation]=\"false\"\n ></pry-icon>\n <span class=\"o-search-fulltext__classes__content__label\" *ngIf=\"mode === 'inline'\">\n {{ classesSelectedLabel | i18n: { nb: classesSelected.length } }}\n </span>\n </span>\n\n <span class=\"o-search-fulltext__classes__arrow\">\n <pry-icon\n iconSvg=\"fleche_bas\"\n [width]=\"17\"\n [height]=\"17\"\n [animation]=\"false\"\n class=\"o-search-fulltext__classes__arrow__icon\"\n [class.is-open]=\"panelClassesOpen\"\n ></pry-icon>\n </span>\n </button>\n\n <pry-choose-widget\n [mode]=\"'input'\"\n [class.m-choose-widget__input__inline]=\"mode === 'inline'\"\n [panelOpen]=\"panelSearchOpen\"\n [width]=\"searchPanelWidth ?? 200\"\n (selected)=\"onSelectWidget($event)\"\n >\n <input\n #searchInput\n [(ngModel)]=\"search\"\n (input)=\"onChangeSearch($event)\"\n (focusin)=\"onOpenSearchPanel()\"\n (focusout)=\"onFocusOut()\"\n />\n <div\n *ngIf=\"!searchDisabled\"\n class=\"o-search-fulltext__input__clear\"\n [pryTooltip]=\"infoTooltipClose\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipClose_searchfulltext\"\n >\n <div class=\"o-search-fulltext__input__clear__wrapper\" (click)=\"onClearSearch($event)\">\n <pry-icon iconSvg=\"close\" [height]=\"16\" [width]=\"16\" [animation]=\"false\"></pry-icon>\n <span class=\"u-visually-hidden\">Effacer la saisie</span>\n </div>\n </div>\n </pry-choose-widget>\n </div>\n\n <button\n #searchButton\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n [class.o-search-fulltext__button__inline]=\"mode === 'inline'\"\n [ngClass]=\"{ ' -width-full': mode === 'vertical' }\"\n [disabled]=\"searchDisabled\"\n *ngIf=\"launchButton\"\n [pryTooltip]=\"infoTooltipSearch\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipSearch_searchfulltext\"\n >\n <pry-icon iconSvg=\"search-line\" [animation]=\"false\"></pry-icon>\n <span *ngIf=\"mode === 'vertical'\">{{ '@pry.search.fulltext.search' | i18n }}</span>\n <span class=\"u-visually-hidden\">Lancer la recherche</span>\n </button>\n</div>\n\n<ng-template #classesOverlay>\n <div\n class=\"o-search-fulltext__classes-overlay\"\n #chooseClasses\n (keydown.escape)=\"closeFocus()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n >\n <button class=\"o-search-fulltext__classes-overlay__item\" (click)=\"onSelectAllClasses()\">\n <pry-icon iconSvg=\"apps\" [width]=\"20\" [height]=\"20\"></pry-icon>\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{\n '@pry.search.fulltext.allClasses' | i18n\n }}</span>\n </button>\n <ng-container *ngFor=\"let clazz of classes$ | async; let last = last\">\n <button\n type=\"button\"\n class=\"o-search-fulltext__classes-overlay__item\"\n (click)=\"onSelectClass(clazz)\"\n [class.o-search-fulltext__classes-overlay__item__selected]=\"classesSelected.includes(clazz.id)\"\n (keydown.tab)=\"last ? closeFocus() : null\"\n >\n <img\n alt=\"class\"\n [height]=\"20\"\n [width]=\"20\"\n [src]=\"clazz.id | translateId: { type: 'class', output: 'icon' } | async\"\n />\n <span class=\"o-search-fulltext__classes-overlay__item__label\">{{ clazz.name }}</span>\n </button>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #infoTooltip>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_searchfulltext\">\n <span class=\"m-tooltip__text\"> S\u00E9lectionner la classe </span>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSearch>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipSearch_searchfulltext\">\n <span class=\"m-tooltip__text\"> Lancer la recherche </span>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipClose>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipClose_searchfulltext\">\n <span class=\"m-tooltip__text\"> Effacer la saisie </span>\n </div>\n</ng-template>\n" }]
1479
+ }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { searchButton: [{
1480
+ type: ViewChild,
1481
+ args: ['searchButton', { read: ElementRef }]
1482
+ }], searchTrigger: [{
1483
+ type: ViewChild,
1484
+ args: ['searchTrigger', { read: ElementRef }]
1485
+ }], searchInputRef: [{
1486
+ type: ViewChild,
1487
+ args: ['searchInput', { read: ElementRef }]
1488
+ }], searchOverlayRef: [{
1489
+ type: ViewChild,
1490
+ args: ['searchOverlay', { read: ElementRef }]
1491
+ }], searchClass: [{
1492
+ type: ViewChild,
1493
+ args: ['searchClass']
1494
+ }], chooseClasses: [{
1495
+ type: ViewChild,
1496
+ args: ['chooseClasses']
1497
+ }], mode: [{
1498
+ type: Input
1499
+ }], launchButton: [{
1500
+ type: Input
1501
+ }], currentEdit: [{
1502
+ type: Input
1503
+ }], searchChange: [{
1504
+ type: Output
1505
+ }], clickout: [{
1506
+ type: HostListener,
1507
+ args: ['document:click', ['$event']]
1508
+ }], keyEvent: [{
1509
+ type: HostListener,
1510
+ args: ['window:keyup.enter', ['$event']]
1511
+ }] } });
1512
+
1513
+ class PrySaveQueryButtonComponent {
1514
+ constructor(pryDialog) {
1515
+ this.pryDialog = pryDialog;
1516
+ this.editInProgress = false;
1517
+ this.fulltextValid = false;
1518
+ this.multiValid = false;
1519
+ this.monoValid = false;
1520
+ this.isNotFulltext = false;
1521
+ this.isMonoSearch = false;
1522
+ this.saveDisabled = true;
1523
+ }
1524
+ ngOnChanges(changes) {
1525
+ const isEditFulltextValid = this.editInProgress && this.currentEditType === NamedQueryTypes.FULL_TEXT && this.fulltextValid;
1526
+ const isEditMonoValid = this.editInProgress && this.currentEditType === NamedQueryTypes.MONO_CLASS && this.monoValid;
1527
+ const isEditMultiValid = this.editInProgress && this.currentEditType === NamedQueryTypes.MULTI_CLASS && this.multiValid;
1528
+ const isCreateFulltextValid = !this.editInProgress && !this.isNotFulltext && this.fulltextValid;
1529
+ const isCreateMonoValid = !this.editInProgress && this.isNotFulltext && this.isMonoSearch && this.monoValid;
1530
+ const isCreateMultiValid = !this.editInProgress && this.isNotFulltext && !this.isMonoSearch && this.multiValid;
1531
+ this.saveDisabled =
1532
+ //test pour rendre inactive la sauvegarde via l'edition
1533
+ //!isEditFulltextValid &&
1534
+ //!isEditMonoValid &&
1535
+ //!isEditMultiValid &&
1536
+ !isCreateFulltextValid && !isCreateMonoValid && !isCreateMultiValid;
1537
+ }
1538
+ openSaveQuery() {
1539
+ if (!this.saveDisabled) {
1540
+ const save = true;
1541
+ const nq = this.currentEdit;
1542
+ const type = nq
1543
+ ? NamedQueryUtils.getTypeFromPayload(nq.request)
1544
+ : this.getNQType(this.isNotFulltext, this.isMonoSearch);
1545
+ const data = type === NamedQueryTypes.FULL_TEXT ? { save, type, payload: this.fulltextSearch } : { save, type };
1546
+ this.pryDialog.open(PrySaveQueryComponent, { data });
1547
+ }
1548
+ }
1549
+ getNQType(isNotFulltext, isMono) {
1550
+ return isNotFulltext
1551
+ ? isMono
1552
+ ? NamedQueryTypes.MONO_CLASS
1553
+ : NamedQueryTypes.MULTI_CLASS
1554
+ : NamedQueryTypes.FULL_TEXT;
1555
+ }
1556
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySaveQueryButtonComponent, deps: [{ token: i3.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
1557
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySaveQueryButtonComponent, selector: "pry-save-query-button", inputs: { editInProgress: "editInProgress", currentEdit: "currentEdit", currentEditType: "currentEditType", fulltextValid: "fulltextValid", multiValid: "multiValid", monoValid: "monoValid", isNotFulltext: "isNotFulltext", isMonoSearch: "isMonoSearch", fulltextSearch: "fulltextSearch", saveDisabled: "saveDisabled" }, usesOnChanges: true, ngImport: i0, template: "<button class=\"a-btn a-btn--icon-text save-query-button\" (click)=\"openSaveQuery()\" [disabled]=\"saveDisabled\">\n <pry-icon iconSvg=\"save-line\"></pry-icon>\n <span>{{ '@pry.search.namedQuery.open' | i18n }}</span>\n</button>\n", dependencies: [{ kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1558
+ }
1559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySaveQueryButtonComponent, decorators: [{
1560
+ type: Component,
1561
+ args: [{ selector: 'pry-save-query-button', template: "<button class=\"a-btn a-btn--icon-text save-query-button\" (click)=\"openSaveQuery()\" [disabled]=\"saveDisabled\">\n <pry-icon iconSvg=\"save-line\"></pry-icon>\n <span>{{ '@pry.search.namedQuery.open' | i18n }}</span>\n</button>\n" }]
1562
+ }], ctorParameters: function () { return [{ type: i3.PryDialogService }]; }, propDecorators: { editInProgress: [{
1563
+ type: Input
1564
+ }], currentEdit: [{
1565
+ type: Input
1566
+ }], currentEditType: [{
1567
+ type: Input
1568
+ }], fulltextValid: [{
1569
+ type: Input
1570
+ }], multiValid: [{
1571
+ type: Input
1572
+ }], monoValid: [{
1573
+ type: Input
1574
+ }], isNotFulltext: [{
1575
+ type: Input
1576
+ }], isMonoSearch: [{
1577
+ type: Input
1578
+ }], fulltextSearch: [{
1579
+ type: Input
1580
+ }], saveDisabled: [{
1581
+ type: Input
1582
+ }] } });
1583
+
1584
+ class EditNamedQueryComponent extends SubscriptionnerDirective {
1585
+ constructor(store) {
1586
+ super();
1587
+ this.store = store;
1588
+ this.class = 'o-edit-named-query-wrapper';
1589
+ this.FULL_TEXT = NamedQueryTypes.FULL_TEXT;
1590
+ this.MONO_CLASS = NamedQueryTypes.MONO_CLASS;
1591
+ this.MULTI_CLASS = NamedQueryTypes.MULTI_CLASS;
1592
+ this.isSearchCriteria = false;
1593
+ this.isSearchParams = false;
1594
+ this.DEFAULT_NAMED_QUERY_ID = DEFAULT_NAMED_QUERY_ID;
1595
+ this.searchFulltextChange = new EventEmitter();
1596
+ this.cancelled = new EventEmitter();
1597
+ this.searched = new EventEmitter();
1598
+ this.fullTextPayload = { value: '', classes: [] };
1599
+ this.widgetType = 'table';
1600
+ this.currentEditType$ = this.store.select(DataSourceSelectors.currentEditType);
1601
+ this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);
1602
+ this.searchMultiClassValid$ = this.store.select(SearchMultiClassSelectors.searchMultiClassValid);
1603
+ this.searchMonoClassValid$ = this.store.select(SearchMonoClassSelectors.searchMonoClassValid);
1604
+ this.subscriptions.add(this.currentEdit$.subscribe((currentEdit) => (this.currentEdit = currentEdit)));
1605
+ }
1606
+ cancel() {
1607
+ this.isSearchCriteria = false;
1608
+ this.isSearchParams = false;
1609
+ this.store.dispatch(DataSourceActions.namedQuery.stopEdit());
1610
+ this.cancelled.emit();
1611
+ }
1612
+ search() {
1613
+ // Save as current name
1614
+ const descriptionQuery = {
1615
+ name: this.currentEdit?.name ?? '',
1616
+ description: this.currentEdit?.description,
1617
+ visibility: this.currentEdit?.visibility ?? undefined
1618
+ };
1619
+ switch (NamedQueryUtils.getTypeFromPayload(this.currentEdit?.request)) {
1620
+ case NamedQueryTypes.FULL_TEXT:
1621
+ this.store.dispatch(searchFulltextActions.save({
1622
+ descriptionQuery,
1623
+ id: this.currentEdit?.id,
1624
+ classes: this.fullTextPayload.classes,
1625
+ search: this.fullTextPayload.value
1626
+ }));
1627
+ break;
1628
+ case NamedQueryTypes.MONO_CLASS:
1629
+ this.store.dispatch(SearchMonoClassActions.save({ descriptionQuery, id: this.currentEdit?.id }));
1630
+ break;
1631
+ case NamedQueryTypes.MULTI_CLASS:
1632
+ this.store.dispatch(SearchMultiClassActions.save({ descriptionQuery, id: this.currentEdit?.id }));
1633
+ break;
1634
+ }
1635
+ if (this.currentEdit?.id !== DEFAULT_NAMED_QUERY_ID) {
1636
+ this.store.dispatch(SearchActions.getDatasourceItems({ id: this.currentEdit?.id ?? DEFAULT_NAMED_QUERY_ID }));
1637
+ }
1638
+ this.store.dispatch(DashboardActions.updateWidgetInPresentation({
1639
+ id: this.currentEdit?.id ?? DEFAULT_NAMED_QUERY_ID,
1640
+ widgetType: this.widgetType
1641
+ }));
1642
+ this.searched.emit();
1643
+ }
1644
+ onSearchFulltextChange(evt) {
1645
+ this.searchFulltextChange.emit(evt);
1646
+ this.fullTextPayload = evt;
1647
+ }
1648
+ select($event) {
1649
+ this.widgetType = $event;
1650
+ }
1651
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: EditNamedQueryComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
1652
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: EditNamedQueryComponent, selector: "pry-edit-named-query", inputs: { fromWidget: "fromWidget" }, outputs: { searchFulltextChange: "searchFulltextChange", cancelled: "cancelled", searched: "searched" }, host: { properties: { "class": "this.class" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-edit-named-query\">\n <ng-container *ngIf=\"currentEditType$ | async as currentEditType\">\n <div class=\"o-edit-named-query__content\">\n <ng-container [ngSwitch]=\"currentEditType\">\n <ng-container *ngSwitchCase=\"FULL_TEXT\">\n <pry-search-fulltext\n mode=\"vertical\"\n [launchButton]=\"false\"\n (searchChange)=\"onSearchFulltextChange($event)\"\n [currentEdit]=\"currentEdit$ | async\"\n ></pry-search-fulltext>\n </ng-container>\n <ng-container *ngSwitchCase=\"MONO_CLASS\">\n <pry-search-mono-class></pry-search-mono-class>\n </ng-container>\n <ng-container *ngSwitchCase=\"MULTI_CLASS\">\n <pry-search-multi-class></pry-search-multi-class>\n </ng-container>\n </ng-container>\n </div>\n <div class=\"o-edit-named-query__buttons\">\n <ng-container *ngIf=\"currentEditType !== FULL_TEXT\">\n <pry-choose-widget (selected)=\"select($event)\"></pry-choose-widget>\n </ng-container>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"cancel()\" *ngIf=\"currentEditType === FULL_TEXT\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n <button\n [disabled]=\"\n (currentEditType === MULTI_CLASS && !(searchMultiClassValid$ | async)) ||\n (currentEditType === MONO_CLASS && !(searchMonoClassValid$ | async)) ||\n !(currentEdit$ | async)?.owner\n \"\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n (click)=\"search()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{\n ((currentEdit$ | async)?.id === DEFAULT_NAMED_QUERY_ID\n ? '@pry.search.button.search'\n : '@pry.search.button.update'\n ) | i18n\n }}\n </button>\n </div>\n </div>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: PrySearchMonoClassComponent, selector: "pry-search-mono-class" }, { kind: "component", type: PrySearchMultiClassComponent, selector: "pry-search-multi-class" }, { kind: "component", type: PrySearchFulltextComponent, selector: "pry-search-fulltext", inputs: ["mode", "launchButton", "currentEdit"], outputs: ["searchChange"] }, { kind: "component", type: ChooseWidgetComponent, selector: "pry-choose-widget", inputs: ["panelOpen", "mode", "width"], outputs: ["selected"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1653
+ }
1654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: EditNamedQueryComponent, decorators: [{
1655
+ type: Component,
1656
+ args: [{ selector: 'pry-edit-named-query', template: "<div class=\"o-edit-named-query\">\n <ng-container *ngIf=\"currentEditType$ | async as currentEditType\">\n <div class=\"o-edit-named-query__content\">\n <ng-container [ngSwitch]=\"currentEditType\">\n <ng-container *ngSwitchCase=\"FULL_TEXT\">\n <pry-search-fulltext\n mode=\"vertical\"\n [launchButton]=\"false\"\n (searchChange)=\"onSearchFulltextChange($event)\"\n [currentEdit]=\"currentEdit$ | async\"\n ></pry-search-fulltext>\n </ng-container>\n <ng-container *ngSwitchCase=\"MONO_CLASS\">\n <pry-search-mono-class></pry-search-mono-class>\n </ng-container>\n <ng-container *ngSwitchCase=\"MULTI_CLASS\">\n <pry-search-multi-class></pry-search-multi-class>\n </ng-container>\n </ng-container>\n </div>\n <div class=\"o-edit-named-query__buttons\">\n <ng-container *ngIf=\"currentEditType !== FULL_TEXT\">\n <pry-choose-widget (selected)=\"select($event)\"></pry-choose-widget>\n </ng-container>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"cancel()\" *ngIf=\"currentEditType === FULL_TEXT\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n <button\n [disabled]=\"\n (currentEditType === MULTI_CLASS && !(searchMultiClassValid$ | async)) ||\n (currentEditType === MONO_CLASS && !(searchMonoClassValid$ | async)) ||\n !(currentEdit$ | async)?.owner\n \"\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n (click)=\"search()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{\n ((currentEdit$ | async)?.id === DEFAULT_NAMED_QUERY_ID\n ? '@pry.search.button.search'\n : '@pry.search.button.update'\n ) | i18n\n }}\n </button>\n </div>\n </div>\n </ng-container>\n</div>\n" }]
1657
+ }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { class: [{
1658
+ type: HostBinding,
1659
+ args: ['class']
1660
+ }], fromWidget: [{
1661
+ type: Input
1662
+ }], searchFulltextChange: [{
1663
+ type: Output
1664
+ }], cancelled: [{
1665
+ type: Output
1666
+ }], searched: [{
1667
+ type: Output
1668
+ }] } });
1669
+
1670
+ class PrySearchToolsComponent {
1671
+ get isNewMono() {
1672
+ return this.isSearchCriteria && this.isSearchMono;
1673
+ }
1674
+ get isEditMono$() {
1675
+ return combineLatest([this.currentEditType$, this.isRename$]).pipe(map(([type, isRename]) => type === NamedQueryTypes.MONO_CLASS && !isRename));
1676
+ }
1677
+ constructor(store) {
1678
+ this.store = store;
1679
+ this.class = true;
1680
+ this.searchToolsClose = false;
1681
+ this.isSearchCriteria = false;
1682
+ this.isSearchMono = false;
1683
+ this.isSearchFullText = false;
1684
+ this.isSearchFulltextValid = false;
1685
+ this.isMoreList = false;
1686
+ this.widgetType = 'table';
1687
+ this.getIcon = {
1688
+ caracteristique: 'default',
1689
+ lieu: 'default',
1690
+ meteo: 'default',
1691
+ usager: 'profil',
1692
+ valeur_fonciere: 'default',
1693
+ vehicule: 'car'
1694
+ };
1695
+ this.items = of([
1696
+ { id: 1, name: '1' },
1697
+ { id: 2, name: '2' },
1698
+ { id: 3, name: '3' },
1699
+ { id: 4, name: '4' }
1700
+ ]);
1701
+ this.FULL_TEXT = NamedQueryTypes.FULL_TEXT;
1702
+ this.MONO_CLASS = NamedQueryTypes.MONO_CLASS;
1703
+ this.MULTI_CLASS = NamedQueryTypes.MULTI_CLASS;
1704
+ this.sub = new Subscription();
1705
+ this.loading$ = this.store.select(DataSourceSelectors.selectFeature).pipe(map((state) => state.isLoading));
1706
+ this.store.dispatch(DataSourceActions.load());
1707
+ this.store.dispatch(FieldActions.load());
1708
+ this.store.dispatch(ClassActions.load());
1709
+ this.searchMultiClassValid$ = this.store.select(SearchMultiClassSelectors.searchMultiClassValid).pipe(delay(100));
1710
+ this.searchMonoClassValid$ = this.store.select(SearchMonoClassSelectors.searchMonoClassValid).pipe(delay(100));
1711
+ this.editInProgress$ = this.store.select(DataSourceSelectors.editInProgress);
1712
+ this.currentEditType$ = this.store.select(DataSourceSelectors.currentEditType);
1713
+ this.currentEdit$ = this.store.select(DataSourceSelectors.currentEdit);
1714
+ this.isRename$ = this.store.select(DataSourceSelectors.isRename);
1715
+ this.sub.add(combineLatest([this.editInProgress$, this.isRename$]).subscribe(([editInProgress, isRename]) => {
1716
+ if (editInProgress && this.searchToolsClose && !isRename) {
1717
+ this.onChangePanel();
1718
+ }
1719
+ }));
1720
+ }
1721
+ ngOnDestroy() {
1722
+ this.sub.unsubscribe();
1723
+ }
1724
+ onSearchCriteria() {
1725
+ this.isSearchCriteria = true;
1726
+ this.store.dispatch(DataSourceActions.namedQuery.openEdit({
1727
+ currentEdit: {
1728
+ sourceType: 'namedQuery',
1729
+ id: v4(),
1730
+ request: { type: NamedQueryTypes.MULTI_CLASS, fullSearch: null, fields: [], multiType: 'AND' },
1731
+ name: ''
1732
+ }
1733
+ }));
1734
+ }
1735
+ onSearchTools() {
1736
+ this.isSearchCriteria = false;
1737
+ this.store.dispatch(DataSourceActions.namedQuery.stopEdit());
1738
+ this.resizeScreen();
1739
+ }
1740
+ back() {
1741
+ this.store.dispatch(DataSourceActions.namedQuery.stopEdit());
1742
+ this.resizeScreen();
1743
+ }
1744
+ onMonoSearch() {
1745
+ this.isSearchMono = !this.isSearchMono;
1746
+ this.resizeScreen();
1747
+ }
1748
+ onChangeListView(isMoreList) {
1749
+ this.isMoreList = !isMoreList;
1750
+ }
1751
+ onSearchFulltextChange(payload) {
1752
+ setTimeout(() => {
1753
+ this.isSearchFulltextValid = payload.value !== '';
1754
+ this.searchFulltextTemp = payload;
1755
+ }, 10);
1756
+ }
1757
+ onSearch() {
1758
+ if (this.isSearchMono) {
1759
+ this.store.dispatch(SearchMonoClassActions.search());
1760
+ }
1761
+ else {
1762
+ this.store.dispatch(SearchMultiClassActions.search());
1763
+ }
1764
+ this.store.dispatch(DashboardActions.updateWidgetInPresentation({
1765
+ id: DEFAULT_NAMED_QUERY_ID,
1766
+ widgetType: this.widgetType
1767
+ }));
1768
+ }
1769
+ onChangePanel() {
1770
+ this.searchToolsClose = !this.searchToolsClose;
1771
+ this.resizeScreen();
1772
+ }
1773
+ resizeScreen() {
1774
+ setTimeout(() => window?.dispatchEvent(new Event('resize')), 400);
1775
+ }
1776
+ selectWidget($event) {
1777
+ this.widgetType = $event;
1778
+ }
1779
+ reset() {
1780
+ this.store.dispatch(DataSourceActions.namedQuery.stopEdit());
1781
+ this.isSearchCriteria = true;
1782
+ }
1783
+ updateVisibility($event) {
1784
+ this.store.dispatch(DataSourceActions.namedQuery.updateCurrentEdit({ currentEdit: { visibility: $event } }));
1785
+ }
1786
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchToolsComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
1787
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySearchToolsComponent, selector: "pry-search-tools", host: { properties: { "class.o-pry-search-tools-wrapper": "this.class", "class.is-close": "this.searchToolsClose" } }, ngImport: i0, template: "<div\n class=\"o-pry-search-tools\"\n [class.is-close]=\"searchToolsClose\"\n [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -back\"\n (click)=\"onSearchTools()\"\n aria-pressed=\"false\"\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n [pryTooltip]=\"infoTooltipBack\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipBack_searchTools\"\n >\n <pry-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></pry-icon>\n <span>{{ '@pry.search.button.backSearch' | i18n }}</span>\n </button>\n <div class=\"o-pry-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n <button\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n (click)=\"reset()\"\n id=\"btn_reset\"\n >\n <pry-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></pry-icon>\n {{ '@pry.search.button.reset' | i18n }}\n </button>\n <ng-container *ngIf=\"editInProgress$ | async\">\n <pry-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></pry-share>\n </ng-container>\n <ng-container *ngIf=\"(editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async); else noEdit\">\n <pry-edit-named-query\n (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n (cancelled)=\"onSearchTools()\"\n ></pry-edit-named-query>\n </ng-container>\n <ng-template #noEdit>\n <ng-container *ngIf=\"isSearchCriteria && !(loading$ | async); else noSearch\">\n <pry-toggle\n class=\"o-pry-search-tools__content__toggle\"\n [ngModel]=\"isSearchMono\"\n (ngModelChange)=\"onMonoSearch()\"\n [alwaysActive]=\"true\"\n mode=\"action\"\n >\n {{ (isSearchMono ? '@pry.search.button.mono' : '@pry.search.button.multi') | i18n }}\n </pry-toggle>\n <div class=\"o-pry-search-tools__content__full\">\n <ng-container *ngIf=\"isSearchMono; else isMultiSearch\">\n <pry-search-mono-class></pry-search-mono-class>\n </ng-container>\n <ng-template #isMultiSearch>\n <pry-search-multi-class></pry-search-multi-class>\n </ng-template>\n </div>\n\n <div class=\"o-pry-search-tools__content__button-search\">\n <ng-container *ngIf=\"isSearchCriteria\">\n <pry-choose-widget (selected)=\"selectWidget($event)\"></pry-choose-widget>\n </ng-container>\n <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\" *ngIf=\"!isSearchCriteria\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n <button\n [disabled]=\"\n (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n \"\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{ '@pry.search.button.search' | i18n }}\n </button>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #noSearch>\n <div class=\"o-pry-search-tools__content__full\">\n <pry-search-home\n class=\"o-pry-search-home\"\n [isMoreList]=\"isMoreList\"\n [searchFulltextTpl]=\"searchFulltextTpl\"\n (changeListView)=\"onChangeListView($event)\"\n (changeSearchCriteria)=\"onSearchCriteria()\"\n ></pry-search-home>\n <ng-template #searchFulltextTpl>\n <pry-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></pry-search-fulltext>\n </ng-template>\n </div>\n </ng-template>\n </div>\n <div class=\"o-pry-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n <pry-save-query-button\n [editInProgress]=\"editInProgress$ | async\"\n [currentEdit]=\"currentEdit$ | async\"\n [currentEditType]=\"currentEditType$ | async\"\n [fulltextValid]=\"isSearchFulltextValid\"\n [multiValid]=\"searchMultiClassValid$ | async\"\n [monoValid]=\"searchMonoClassValid$ | async\"\n [isNotFulltext]=\"isSearchCriteria\"\n [isMonoSearch]=\"isSearchMono\"\n [fulltextSearch]=\"searchFulltextTemp\"\n ></pry-save-query-button>\n </div>\n</div>\n\n<ng-template #infoTooltipBack>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipBack_searchTools\">\n <span class=\"m-tooltip__text\"> Retour \u00E0 la liste des recherches </span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "component", type: i3.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "component", type: PrySearchHomeComponent, selector: "pry-search-home", inputs: ["searchFulltextTpl", "isMoreList"], outputs: ["changeListView", "changeSearchCriteria"] }, { kind: "component", type: PrySearchMonoClassComponent, selector: "pry-search-mono-class" }, { kind: "component", type: PrySearchMultiClassComponent, selector: "pry-search-multi-class" }, { kind: "component", type: PrySearchFulltextComponent, selector: "pry-search-fulltext", inputs: ["mode", "launchButton", "currentEdit"], outputs: ["searchChange"] }, { kind: "component", type: PrySaveQueryButtonComponent, selector: "pry-save-query-button", inputs: ["editInProgress", "currentEdit", "currentEditType", "fulltextValid", "multiValid", "monoValid", "isNotFulltext", "isMonoSearch", "fulltextSearch", "saveDisabled"] }, { kind: "component", type: EditNamedQueryComponent, selector: "pry-edit-named-query", inputs: ["fromWidget"], outputs: ["searchFulltextChange", "cancelled", "searched"] }, { kind: "component", type: ChooseWidgetComponent, selector: "pry-choose-widget", inputs: ["panelOpen", "mode", "width"], outputs: ["selected"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
1788
+ }
1789
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchToolsComponent, decorators: [{
1790
+ type: Component,
1791
+ args: [{ selector: 'pry-search-tools', template: "<div\n class=\"o-pry-search-tools\"\n [class.is-close]=\"searchToolsClose\"\n [class.is-mono]=\"isNewMono || (isEditMono$ | async)\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-text -back\"\n (click)=\"onSearchTools()\"\n aria-pressed=\"false\"\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n [pryTooltip]=\"infoTooltipBack\"\n pryTooltipPosition=\"bottom\"\n aria-describedby=\"infoTooltipBack_searchTools\"\n >\n <pry-icon iconSvg=\"arrow_back\" [width]=\"24\" [height]=\"24\" [animation]=\"false\"></pry-icon>\n <span>{{ '@pry.search.button.backSearch' | i18n }}</span>\n </button>\n <div class=\"o-pry-search-tools__content\" [class.is-close]=\"searchToolsClose\">\n <button\n *ngIf=\"((editInProgress$ | async) && !(isRename$ | async)) || isSearchCriteria\"\n class=\"a-btn a-btn--icon-text -link-like u-self-end\"\n (click)=\"reset()\"\n id=\"btn_reset\"\n >\n <pry-icon iconSvg=\"reset\" [width]=\"18\" [height]=\"18\"></pry-icon>\n {{ '@pry.search.button.reset' | i18n }}\n </button>\n <ng-container *ngIf=\"editInProgress$ | async\">\n <pry-share [ngModel]=\"(currentEdit$ | async)?.visibility\" (ngModelChange)=\"updateVisibility($event)\"></pry-share>\n </ng-container>\n <ng-container *ngIf=\"(editInProgress$ | async) && !(isRename$ | async) && !(loading$ | async); else noEdit\">\n <pry-edit-named-query\n (searchFulltextChange)=\"onSearchFulltextChange($event)\"\n (cancelled)=\"onSearchTools()\"\n ></pry-edit-named-query>\n </ng-container>\n <ng-template #noEdit>\n <ng-container *ngIf=\"isSearchCriteria && !(loading$ | async); else noSearch\">\n <pry-toggle\n class=\"o-pry-search-tools__content__toggle\"\n [ngModel]=\"isSearchMono\"\n (ngModelChange)=\"onMonoSearch()\"\n [alwaysActive]=\"true\"\n mode=\"action\"\n >\n {{ (isSearchMono ? '@pry.search.button.mono' : '@pry.search.button.multi') | i18n }}\n </pry-toggle>\n <div class=\"o-pry-search-tools__content__full\">\n <ng-container *ngIf=\"isSearchMono; else isMultiSearch\">\n <pry-search-mono-class></pry-search-mono-class>\n </ng-container>\n <ng-template #isMultiSearch>\n <pry-search-multi-class></pry-search-multi-class>\n </ng-template>\n </div>\n\n <div class=\"o-pry-search-tools__content__button-search\">\n <ng-container *ngIf=\"isSearchCriteria\">\n <pry-choose-widget (selected)=\"selectWidget($event)\"></pry-choose-widget>\n </ng-container>\n <button class=\"a-btn a-btn--primary\" (click)=\"onSearchTools()\" *ngIf=\"!isSearchCriteria\">\n {{ '@pry.search.button.cancel' | i18n }}\n </button>\n <button\n [disabled]=\"\n (!(searchMultiClassValid$ | async) && !isSearchMono) || (!(searchMonoClassValid$ | async) && isSearchMono)\n \"\n class=\"a-btn a-btn--primary\"\n (click)=\"onSearch()\"\n >\n <pry-icon iconSvg=\"search-line\"></pry-icon>\n {{ '@pry.search.button.search' | i18n }}\n </button>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #noSearch>\n <div class=\"o-pry-search-tools__content__full\">\n <pry-search-home\n class=\"o-pry-search-home\"\n [isMoreList]=\"isMoreList\"\n [searchFulltextTpl]=\"searchFulltextTpl\"\n (changeListView)=\"onChangeListView($event)\"\n (changeSearchCriteria)=\"onSearchCriteria()\"\n ></pry-search-home>\n <ng-template #searchFulltextTpl>\n <pry-search-fulltext mode=\"vertical\" (searchChange)=\"onSearchFulltextChange($event)\"></pry-search-fulltext>\n </ng-template>\n </div>\n </ng-template>\n </div>\n <div class=\"o-pry-search-tools__footer\" [class.is-close]=\"searchToolsClose\">\n <pry-save-query-button\n [editInProgress]=\"editInProgress$ | async\"\n [currentEdit]=\"currentEdit$ | async\"\n [currentEditType]=\"currentEditType$ | async\"\n [fulltextValid]=\"isSearchFulltextValid\"\n [multiValid]=\"searchMultiClassValid$ | async\"\n [monoValid]=\"searchMonoClassValid$ | async\"\n [isNotFulltext]=\"isSearchCriteria\"\n [isMonoSearch]=\"isSearchMono\"\n [fulltextSearch]=\"searchFulltextTemp\"\n ></pry-save-query-button>\n </div>\n</div>\n\n<ng-template #infoTooltipBack>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltipBack_searchTools\">\n <span class=\"m-tooltip__text\"> Retour \u00E0 la liste des recherches </span>\n </div>\n</ng-template>\n" }]
1792
+ }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { class: [{
1793
+ type: HostBinding,
1794
+ args: ['class.o-pry-search-tools-wrapper']
1795
+ }], searchToolsClose: [{
1796
+ type: HostBinding,
1797
+ args: ['class.is-close']
1798
+ }] } });
1799
+
1800
+ class EditNamedQueryModalComponent extends SubscriptionnerDirective {
1801
+ constructor(store, overlay, viewContainerRef) {
1802
+ super();
1803
+ this.store = store;
1804
+ this.overlay = overlay;
1805
+ this.viewContainerRef = viewContainerRef;
1806
+ this.subscriptions.add(this.store.select(DataSourceSelectors.editInProgress).subscribe((inProgress) => {
1807
+ if (inProgress && !this.overlayRef && !this.isPanelAlreadyPresent) {
1808
+ // open modal
1809
+ this.overlayRef = this.overlay.create(new OverlayConfig({
1810
+ hasBackdrop: true,
1811
+ panelClass: ['o-edit-named-query-modal'],
1812
+ backdropClass: 'backdrop'
1813
+ }));
1814
+ this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));
1815
+ this.overlayRef.backdropClick().subscribe((_) => {
1816
+ this.close();
1817
+ });
1818
+ this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));
1819
+ }
1820
+ if (!inProgress) {
1821
+ this.close();
1822
+ }
1823
+ }));
1824
+ }
1825
+ close() {
1826
+ this.overlayRef?.dispose();
1827
+ this.overlayRef = undefined;
1828
+ this.store.dispatch(DataSourceActions.namedQuery.stopEdit());
1829
+ this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));
1830
+ }
1831
+ get isPanelAlreadyPresent() {
1832
+ return (document.getElementsByTagName('pry-search-home').length +
1833
+ document.getElementsByTagName('pry-search-tools').length >
1834
+ 0);
1835
+ }
1836
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: EditNamedQueryModalComponent, deps: [{ token: i1.Store }, { token: i2$1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
1837
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: EditNamedQueryModalComponent, selector: "pry-edit-named-query-modal", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div>\n <pry-search-tools></pry-search-tools>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: PrySearchToolsComponent, selector: "pry-search-tools" }] }); }
1838
+ }
1839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: EditNamedQueryModalComponent, decorators: [{
1840
+ type: Component,
1841
+ args: [{ selector: 'pry-edit-named-query-modal', template: "<ng-template #template>\n <div>\n <pry-search-tools></pry-search-tools>\n </div>\n</ng-template>\n" }]
1842
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { template: [{
1843
+ type: ViewChild,
1844
+ args: ['template', { read: TemplateRef }]
1845
+ }] } });
1846
+
1847
+ const enTranslations = {
1848
+ '@pry': {
1849
+ search: {
1850
+ title: 'Search',
1851
+ button: {
1852
+ update: 'Save',
1853
+ search: 'Search',
1854
+ cancel: 'Cancel',
1855
+ reset: 'Reset',
1856
+ backSearch: 'Back to searches list',
1857
+ mono: 'Class search',
1858
+ multi: 'Business field search'
1859
+ },
1860
+ home: {
1861
+ or: 'or',
1862
+ title: 'My search',
1863
+ ssTitle: 'New search',
1864
+ searchByCriteria: 'search by criteria'
1865
+ },
1866
+ attribute: {
1867
+ title: 'Attribute: ',
1868
+ remove: 'Remove attribute filter'
1869
+ },
1870
+ type: {
1871
+ and: 'AND',
1872
+ or: 'OR'
1873
+ },
1874
+ composed: {
1875
+ class: 'Class',
1876
+ title: 'Include filters',
1877
+ order: 'Add sort',
1878
+ orderA: 'Ascending',
1879
+ orderD: 'Descending',
1880
+ orderNone: 'None',
1881
+ shouldSelectClass: 'Select a class',
1882
+ changeClassWarning: 'Change class will remove all conditions',
1883
+ addCondition: 'Add condition',
1884
+ addGroup: 'Add nested group',
1885
+ removeGroup: 'Remove nested group'
1886
+ },
1887
+ operator: {
1888
+ contains: 'Contain',
1889
+ startWith: 'Start with',
1890
+ endWith: 'End with',
1891
+ notEqualsString: 'Different from',
1892
+ equalsString: 'Match',
1893
+ equalsNumber: 'Equal to',
1894
+ greaterThanNumber: 'Greater than',
1895
+ lowerThanNumber: 'Lower than',
1896
+ innerBoundsNumber: 'Between',
1897
+ outerBoundsNumber: 'Outside',
1898
+ greaterThanDate: 'After',
1899
+ lowerThanDate: 'Before',
1900
+ innerBoundsDate: 'Between',
1901
+ outerBoundsDate: 'Outside'
1902
+ },
1903
+ placeholder: {
1904
+ search: 'Enter value...',
1905
+ minValue: 'Min value...',
1906
+ maxValue: 'Max value...'
1907
+ },
1908
+ namedQuery: {
1909
+ emptyNamedQuery: 'No saved search',
1910
+ open: 'Save search...',
1911
+ title: 'Give a name to this search',
1912
+ saveTitle: 'Save search',
1913
+ renameTitle: 'Rename search',
1914
+ rename: 'Rename',
1915
+ name: 'Name',
1916
+ description: 'Description',
1917
+ favorite: 'Pin',
1918
+ noFavorite: 'Detach',
1919
+ display: 'Display',
1920
+ refreshData: 'Refresh',
1921
+ noSpot: 'Unused search',
1922
+ color: 'Data color',
1923
+ spot: 'Spot',
1924
+ spotTitle: 'This query is used {{length}} times:',
1925
+ use: 'View n°{{windowIndex}}',
1926
+ delete: 'Delete',
1927
+ edit: 'Edit',
1928
+ seeLess: 'see less',
1929
+ seeMore: 'see More',
1930
+ explore: 'Exploring set',
1931
+ type: {
1932
+ map: 'Map',
1933
+ table: 'Table',
1934
+ chart: 'Chart',
1935
+ graph: 'Network Relation'
1936
+ },
1937
+ alreadyEditing: 'A search is already being edited.',
1938
+ refresh: {
1939
+ title: 'Automatic refresh',
1940
+ 0: 'Inactive',
1941
+ 10: '10 seconds',
1942
+ 30: '30 seconds',
1943
+ 60: '1 minute'
1944
+ }
1945
+ },
1946
+ mono: {
1947
+ title: 'Search advanded criteria'
1948
+ },
1949
+ fulltext: {
1950
+ allClasses: 'All classes',
1951
+ oneClass: 'One selected class',
1952
+ manyClasses: '{{nb}} selected classes',
1953
+ search: 'Search'
1954
+ },
1955
+ multi: {
1956
+ title: 'Add criterias',
1957
+ addCondition: 'Add one criteria',
1958
+ options: 'Options',
1959
+ multiType: 'Kind of association',
1960
+ search: 'Search',
1961
+ requiredError: 'Value is missing',
1962
+ patternError: 'Format is incorrect',
1963
+ selectField: 'Select the criteria',
1964
+ legend: 'Criteria / classes using it',
1965
+ in: 'in'
1966
+ },
1967
+ params: {
1968
+ title: 'Search parameters',
1969
+ button: 'Save settings',
1970
+ namedQuery: {
1971
+ title: 'Searches',
1972
+ description: 'This part presents default parameters when creating a new search, like color or refresh rate.'
1973
+ }
1974
+ }
1975
+ }
1976
+ }
1977
+ };
1978
+
1979
+ const frTranslations = {
1980
+ '@pry': {
1981
+ search: {
1982
+ title: 'Recherche',
1983
+ button: {
1984
+ update: 'Enregistrer',
1985
+ search: 'Rechercher',
1986
+ cancel: 'Annuler',
1987
+ reset: 'Remise à zéro',
1988
+ backSearch: 'Retour à la liste des recherches',
1989
+ mono: 'Recherche par classe',
1990
+ multi: 'Recherche par champs métier'
1991
+ },
1992
+ home: {
1993
+ or: 'ou',
1994
+ title: 'Mes recherches',
1995
+ ssTitle: 'Nouvelle recherche',
1996
+ searchByCriteria: 'Recherche par critères'
1997
+ },
1998
+ attribute: {
1999
+ title: 'Attribut : ',
2000
+ remove: 'Retirer le filtre'
2001
+ },
2002
+ type: {
2003
+ and: 'ET',
2004
+ or: 'OU'
2005
+ },
2006
+ composed: {
2007
+ class: 'Classe',
2008
+ title: 'Incluez des filtres',
2009
+ order: 'Ajouter un tri',
2010
+ orderA: 'Croissant',
2011
+ orderD: 'Décroissant',
2012
+ orderNone: 'Aucun tri',
2013
+ shouldSelectClass: 'Choisissez une classe',
2014
+ changeClassWarning: 'Changer de classe supprimera toutes les conditions',
2015
+ addCondition: 'Ajouter une condition',
2016
+ addGroup: 'Ajouter un sous-groupe',
2017
+ removeGroup: 'Supprimer un sous-groupe'
2018
+ },
2019
+ operator: {
2020
+ contains: 'Contient',
2021
+ startWith: 'Commence par',
2022
+ endWith: 'Fini par',
2023
+ notEqualsString: 'Différent de',
2024
+ equalsString: 'Exactement',
2025
+ equalsNumber: 'Egal',
2026
+ greaterThanNumber: 'Supérieur à',
2027
+ lowerThanNumber: 'Inférieur à',
2028
+ innerBoundsNumber: 'Compris entre',
2029
+ outerBoundsNumber: "A l'extérieur de",
2030
+ greaterThanDate: 'Après',
2031
+ lowerThanDate: 'Avant',
2032
+ innerBoundsDate: 'Entre deux dates',
2033
+ outerBoundsDate: "A l'extérieur d'une période"
2034
+ },
2035
+ placeholder: {
2036
+ search: 'Entrer la valeur ...',
2037
+ minValue: 'Valeur min ...',
2038
+ maxValue: 'Valeur max ...'
2039
+ },
2040
+ namedQuery: {
2041
+ emptyNamedQuery: 'Aucune recherche enregistrée',
2042
+ open: 'Enregistrer la recherche sous...',
2043
+ title: 'Nommez cette recherche',
2044
+ saveTitle: 'Sauvegarder cette recherche',
2045
+ renameTitle: 'Renommer cette recherche',
2046
+ rename: 'Renommer',
2047
+ name: 'Nom',
2048
+ description: 'Description',
2049
+ favorite: 'Epingler',
2050
+ noFavorite: 'Détacher',
2051
+ display: 'Afficher',
2052
+ refreshData: 'Actualiser',
2053
+ noSpot: 'Recherche non utilisée',
2054
+ color: 'Couleur jeu de données',
2055
+ spot: 'Repérer',
2056
+ spotTitle: 'La recherche est utilisée à {{length}} endroits:',
2057
+ use: 'Vue n°{{windowIndex}}',
2058
+ delete: 'Supprimer',
2059
+ edit: 'Editer',
2060
+ seeLess: 'voir moins',
2061
+ seeMore: 'voir plus',
2062
+ explore: 'Recherche exploratoire',
2063
+ type: {
2064
+ map: 'Carte',
2065
+ table: 'Tableau',
2066
+ chart: 'Graphique',
2067
+ graph: 'Relations'
2068
+ },
2069
+ alreadyEditing: 'Vous avez déjà une édition de recherche en cours.',
2070
+ refresh: {
2071
+ title: 'Rafraichissement automatique',
2072
+ 0: 'Inactif',
2073
+ 10: '10 secondes',
2074
+ 30: '30 secondes',
2075
+ 60: '1 minute'
2076
+ }
2077
+ },
2078
+ mono: {
2079
+ title: 'Recherche critères avancés'
2080
+ },
2081
+ fulltext: {
2082
+ allClasses: 'Toutes les classes',
2083
+ oneClass: 'Une classe sélectionnée',
2084
+ manyClasses: '{{nb}} classes sélectionnées',
2085
+ search: 'Lancer la recherche'
2086
+ },
2087
+ multi: {
2088
+ title: 'Ajouter des critères',
2089
+ addCondition: 'Ajouter un critère',
2090
+ options: 'Options',
2091
+ multiType: 'Associer les critères',
2092
+ search: 'Rechercher',
2093
+ requiredError: 'La valeur est manquante',
2094
+ patternError: 'Le format est incorrect',
2095
+ selectField: 'Sélectionner un critère',
2096
+ legend: 'Critère / classes utilisant ce critère',
2097
+ in: 'dans'
2098
+ },
2099
+ params: {
2100
+ title: 'Paramètres de recherche',
2101
+ button: 'Enregistrer les paramètres',
2102
+ namedQuery: {
2103
+ title: 'Recherches',
2104
+ description: "Cette partie regroupe les paramètres par défaut d'une nouvelle recherche(la couleur à utiliser, ...)"
2105
+ }
2106
+ }
2107
+ }
2108
+ }
2109
+ };
2110
+
2111
+ class SearchFulltextService {
2112
+ buildPayload(value, oClasses) {
2113
+ return {
2114
+ type: NamedQueryTypes.MULTI_CLASS,
2115
+ multiType: 'AND',
2116
+ oClasses,
2117
+ fullSearch: {
2118
+ value
2119
+ }
2120
+ };
2121
+ }
2122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchFulltextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2123
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchFulltextService, providedIn: 'root' }); }
2124
+ }
2125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchFulltextService, decorators: [{
2126
+ type: Injectable,
2127
+ args: [{ providedIn: 'root' }]
2128
+ }] });
2129
+
2130
+ class SearchFulltextEffects {
2131
+ constructor(actions$, store, searchFulltextService) {
2132
+ this.actions$ = actions$;
2133
+ this.store = store;
2134
+ this.searchFulltextService = searchFulltextService;
2135
+ this.search$ = createEffect(() => this.actions$.pipe(ofType(searchFulltextActions.search, searchFulltextActions.save), withLatestFrom(this.store.select(DataSourceSelectors.currentEdit)), map$1(([action, currentEdit]) => {
2136
+ const payload = this.searchFulltextService.buildPayload(action.search, action.classes);
2137
+ if (action.type === searchFulltextActions.save.type && DEFAULT_NAMED_QUERY_ID !== action?.id) {
2138
+ return DataSourceActions.namedQuery.post({
2139
+ id: action.id ?? currentEdit?.id,
2140
+ name: action.descriptionQuery.name,
2141
+ description: action.descriptionQuery?.description,
2142
+ visibility: action.descriptionQuery?.visibility,
2143
+ payload,
2144
+ color: currentEdit?.color,
2145
+ favorite: currentEdit?.favorite ?? false,
2146
+ isEdit: !!currentEdit
2147
+ });
2148
+ }
2149
+ return SearchActions.search({ payload });
2150
+ })));
2151
+ }
2152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchFulltextEffects, deps: [{ token: i1$1.Actions }, { token: i1.Store }, { token: SearchFulltextService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2153
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchFulltextEffects }); }
2154
+ }
2155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchFulltextEffects, decorators: [{
2156
+ type: Injectable
2157
+ }], ctorParameters: function () { return [{ type: i1$1.Actions }, { type: i1.Store }, { type: SearchFulltextService }]; } });
2158
+
2159
+ class SearchMonoClassService {
2160
+ initNormalizedConditionComposed(parentId) {
2161
+ const id = v4();
2162
+ return {
2163
+ id,
2164
+ parentId,
2165
+ type: 'AND'
2166
+ };
2167
+ }
2168
+ initNormalizedConditionAttribute(parentId, attributeId) {
2169
+ if (!attributeId.trim()) {
2170
+ throw new Error('Invalid attribute ID');
2171
+ }
2172
+ const id = v4();
2173
+ return {
2174
+ id,
2175
+ parentId,
2176
+ attribute: attributeId,
2177
+ type: 'ATTRIBUTE',
2178
+ operator: 'EQUALS'
2179
+ };
2180
+ }
2181
+ buildMonoClassSearchPayloadForSearch(oClass, masterId, monoClassConditions, order) {
2182
+ if (!oClass.trim()) {
2183
+ throw new Error('Invalid class ID');
2184
+ }
2185
+ const condition = this.buildConditionFromMonoClassSearchCondition(monoClassConditions, masterId);
2186
+ let sort = undefined;
2187
+ if (order) {
2188
+ sort = {
2189
+ attribute: order.attribute,
2190
+ direction: order.asc
2191
+ };
2192
+ }
2193
+ return { type: NamedQueryTypes.MONO_CLASS, ...{ condition }, ...{ sort }, oClass };
2194
+ }
2195
+ buildConditionFromMonoClassSearchCondition(monoClassConditions, idCondition) {
2196
+ const cond = monoClassConditions.entities[idCondition];
2197
+ const subCond = monoClassConditions.entities[idCondition].composed?.map((id) => this.buildConditionFromMonoClassSearchCondition(monoClassConditions, id)) ?? [];
2198
+ const condition = {
2199
+ type: cond.type,
2200
+ attribute: cond.attribute,
2201
+ composed: subCond.length > 0 ? subCond : undefined,
2202
+ operator: cond.operator,
2203
+ value: cond.value,
2204
+ upperValue: cond.upperValue
2205
+ };
2206
+ if (condition.operator !== 'INSIDE' && condition.operator !== 'OUTSIDE') {
2207
+ delete condition.upperValue;
2208
+ }
2209
+ return condition;
2210
+ }
2211
+ loadNormalizedConditions(cond, parentId, classes, fields, masterId, sort) {
2212
+ let resultSort = undefined;
2213
+ if (sort) {
2214
+ resultSort = {
2215
+ attribute: sort.attribute,
2216
+ asc: sort.direction
2217
+ };
2218
+ }
2219
+ if (cond?.type === 'AND' || cond?.type === 'OR') {
2220
+ const id = masterId ?? v4();
2221
+ if (cond?.composed) {
2222
+ const children = cond.composed.map((cond) => this.loadNormalizedConditions(cond, id, classes, fields));
2223
+ const ids = children.map((child) => child.id);
2224
+ const normalizedChildren = children.reduce((acc, res) => [...acc, ...res.conditions], []);
2225
+ return {
2226
+ id,
2227
+ conditions: [
2228
+ ...normalizedChildren,
2229
+ {
2230
+ id,
2231
+ parentId: parentId ?? null,
2232
+ type: cond.type,
2233
+ composed: ids
2234
+ }
2235
+ ],
2236
+ sort: resultSort
2237
+ };
2238
+ }
2239
+ return {
2240
+ id,
2241
+ conditions: [
2242
+ {
2243
+ id,
2244
+ parentId: parentId ?? null,
2245
+ type: cond.type
2246
+ }
2247
+ ],
2248
+ sort: resultSort
2249
+ };
2250
+ }
2251
+ else {
2252
+ const id = masterId ?? v4();
2253
+ const field = this.getFieldFromAttribute(cond?.attribute, classes, fields);
2254
+ const condition = field
2255
+ ? {
2256
+ id,
2257
+ parentId: parentId ?? null,
2258
+ type: 'ATTRIBUTE',
2259
+ attribute: cond.attribute,
2260
+ operator: cond.operator,
2261
+ value: cond.value,
2262
+ pattern: this.getPatternForField(field),
2263
+ isDate: field.type === FieldType.INSTANT
2264
+ }
2265
+ : {
2266
+ id,
2267
+ parentId: parentId ?? null,
2268
+ type: 'ATTRIBUTE',
2269
+ attribute: cond?.attribute,
2270
+ operator: cond?.operator,
2271
+ value: cond?.value
2272
+ };
2273
+ return {
2274
+ id,
2275
+ conditions: [condition],
2276
+ sort: resultSort
2277
+ };
2278
+ }
2279
+ }
2280
+ getPatternForField(field) {
2281
+ const type = field.type;
2282
+ switch (type) {
2283
+ case FieldType.DECIMAL:
2284
+ return '^[+-]?([0-9]*[.])?[0-9]+$';
2285
+ case FieldType.INTEGER:
2286
+ case FieldType.LONG:
2287
+ return '^[+-]?[0-9]+$';
2288
+ case FieldType.STRING:
2289
+ case FieldType.KEYWORD:
2290
+ return '^.+$';
2291
+ case FieldType.INSTANT:
2292
+ return '^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$';
2293
+ default:
2294
+ return '^.+$';
2295
+ }
2296
+ }
2297
+ getFieldFromAttribute(attributeId, classes, fields) {
2298
+ if (!attributeId) {
2299
+ return undefined;
2300
+ }
2301
+ const attribute = classes
2302
+ .reduce((acc, clazz) => [...acc, ...clazz.attributes], [])
2303
+ .find((a) => a.id === attributeId);
2304
+ return fields.find((f) => f.id === attribute?.field);
2305
+ }
2306
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMonoClassService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2307
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMonoClassService, providedIn: 'root' }); }
2308
+ }
2309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMonoClassService, decorators: [{
2310
+ type: Injectable,
2311
+ args: [{
2312
+ providedIn: 'root'
2313
+ }]
2314
+ }] });
2315
+
2316
+ class SearchMonoClassEffects {
2317
+ constructor(actions$, searchService, searchMonoClassService, store) {
2318
+ this.actions$ = actions$;
2319
+ this.searchService = searchService;
2320
+ this.searchMonoClassService = searchMonoClassService;
2321
+ this.store = store;
2322
+ this.selectedMonoClass$ = createEffect(() => this.actions$.pipe(ofType(SearchMonoClassActions.selectMonoClassSearch), map$1(() => {
2323
+ const condition = this.searchMonoClassService.initNormalizedConditionComposed(null);
2324
+ return SearchMonoClassActions.addFirstNormalizedCondition({ condition });
2325
+ })));
2326
+ this.addNormalizedConditionAttribute$ = createEffect(() => this.actions$.pipe(ofType(SearchMonoClassActions.addNormalizedConditionAttributeForConditionId), mergeMap((action) => combineLatest([of(action), this.store.select(FieldSelectors.fieldById(action.attribute.field))]).pipe(first())), map$1(([action, field]) => {
2327
+ const pattern = this.searchMonoClassService.getPatternForField(field);
2328
+ const isDate = field.type === FieldType.INSTANT;
2329
+ const condition = {
2330
+ ...this.searchMonoClassService.initNormalizedConditionAttribute(action.conditionId, action.attribute.id),
2331
+ isDate,
2332
+ pattern
2333
+ };
2334
+ return SearchMonoClassActions.addNormalizedConditionForConditionId({
2335
+ conditionId: action.conditionId,
2336
+ condition
2337
+ });
2338
+ })));
2339
+ this.addNormalizedConditionComposed$ = createEffect(() => this.actions$.pipe(ofType(SearchMonoClassActions.addNormalizedConditionComposedForConditionId), map$1((action) => {
2340
+ const condition = this.searchMonoClassService.initNormalizedConditionComposed(action.conditionId);
2341
+ return SearchMonoClassActions.addNormalizedConditionForConditionId({
2342
+ conditionId: action.conditionId,
2343
+ condition
2344
+ });
2345
+ })));
2346
+ this.deleteNormalizedCondition$ = createEffect(() => this.actions$.pipe(ofType(SearchMonoClassActions.deleteNormalizedConditionById), mergeMap((action) => combineLatest([
2347
+ of(action),
2348
+ this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsById(action.conditionId))
2349
+ ]).pipe(first())), switchMap$1(([action, condition]) => {
2350
+ const actionCondition$ = SearchMonoClassActions.deleteNormalizedCondition({ condition });
2351
+ const actionParent$ = SearchMonoClassActions.removeConditionFromComposed({
2352
+ parentId: condition.parentId ?? null,
2353
+ childrenId: condition.id
2354
+ });
2355
+ const actionsComposed$ = condition.composed?.map((id) => SearchMonoClassActions.deleteNormalizedConditionById({ conditionId: id }));
2356
+ return actionsComposed$
2357
+ ? [actionCondition$, actionParent$, ...actionsComposed$]
2358
+ : [actionCondition$, actionParent$];
2359
+ })));
2360
+ this.actionMonoClassSearch$ = createEffect(() => this.actions$.pipe(ofType(SearchMonoClassActions.search, SearchMonoClassActions.save), withLatestFrom(this.store.select(SearchMonoClassSelectors.selectMonoClassIdSearch), this.store.select(SearchMonoClassSelectors.selectMonoClassConditionsMasterId), this.store.select(SearchMonoClassSelectors.selectMonoClassConditions), this.store.select(SearchMonoClassSelectors.order), this.store.select(DataSourceSelectors.currentEdit)), map$1(([action, oClass, masterId, conditions, order, currentEdit]) => {
2361
+ const payload = this.searchMonoClassService.buildMonoClassSearchPayloadForSearch(oClass ?? '', masterId ?? '', conditions, order);
2362
+ if (action.type === SearchMonoClassActions.save.type && DEFAULT_NAMED_QUERY_ID !== action?.id) {
2363
+ return DataSourceActions.namedQuery.post({
2364
+ id: action.id ?? currentEdit?.id,
2365
+ name: action.descriptionQuery.name,
2366
+ description: action.descriptionQuery?.description,
2367
+ visibility: action.descriptionQuery?.visibility,
2368
+ payload,
2369
+ color: currentEdit?.color,
2370
+ favorite: currentEdit?.favorite ?? false,
2371
+ isEdit: !!currentEdit
2372
+ });
2373
+ }
2374
+ return SearchActions.search({ payload });
2375
+ })));
2376
+ this.loadExistingConditions$ = createEffect(() => this.actions$.pipe(ofType(SearchMonoClassActions.loadExistingConditions), withLatestFrom(this.store.select(ClassSelectors.classes), this.store.select(FieldSelectors.fields)), mergeMap(([action, classes, fields]) => {
2377
+ const { oClass, condition, sort } = action.payload;
2378
+ const masterId = v4();
2379
+ const conditions = this.searchMonoClassService.loadNormalizedConditions(condition, masterId, classes, fields, masterId, sort).conditions;
2380
+ const ids = conditions.map((cond) => cond.id);
2381
+ const entities = conditions.reduce((acc, cond) => ({ ...acc, [cond.id]: cond }), {});
2382
+ return [
2383
+ SearchMonoClassActions.addIdMaster({ id: masterId }),
2384
+ SearchMonoClassActions.addIdCondition({ ids }),
2385
+ SearchMonoClassActions.addEntities({ entities }),
2386
+ SearchMonoClassActions.addIdClass({ id: oClass }),
2387
+ SearchMonoClassActions.addOrder({ attribute: sort?.attribute, asc: sort?.direction })
2388
+ ];
2389
+ })));
2390
+ this.addEdit$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.namedQuery.openEdit), withLatestFrom(this.store.select(DataSourceSelectors.currentEdit)), mergeMap(([action, currentEdit]) => {
2391
+ const actions = [];
2392
+ if (!!currentEdit) {
2393
+ const type = NamedQueryUtils.getTypeFromPayload(currentEdit.request);
2394
+ if (type === NamedQueryTypes.MULTI_CLASS) {
2395
+ actions.push(SearchMultiClassActions.loadExistingConditions({
2396
+ payload: currentEdit.request
2397
+ }));
2398
+ }
2399
+ if (type === NamedQueryTypes.MONO_CLASS) {
2400
+ actions.push(SearchMonoClassActions.loadExistingConditions({ payload: currentEdit.request }));
2401
+ }
2402
+ }
2403
+ return actions;
2404
+ }), catchError((error) => [DataSourceActions.namedQuery.failure({ error })])));
2405
+ this.stopEdit$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.namedQuery.stopEdit), mergeMap(() => [SearchMultiClassActions.resetSearch(), SearchMonoClassActions.resetSearch()])));
2406
+ }
2407
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMonoClassEffects, deps: [{ token: i1$1.Actions }, { token: i3.SearchService }, { token: SearchMonoClassService }, { token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
2408
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMonoClassEffects }); }
2409
+ }
2410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMonoClassEffects, decorators: [{
2411
+ type: Injectable
2412
+ }], ctorParameters: function () { return [{ type: i1$1.Actions }, { type: i3.SearchService }, { type: SearchMonoClassService }, { type: i1.Store }]; } });
2413
+
2414
+ class SearchMultiClassEffects {
2415
+ constructor(actions$, store, multiClassService) {
2416
+ this.actions$ = actions$;
2417
+ this.store = store;
2418
+ this.multiClassService = multiClassService;
2419
+ this.addCondition$ = createEffect(() => this.actions$.pipe(ofType(SearchMultiClassActions.addNewEmptyCondition), map$1(() => {
2420
+ const condition = this.multiClassService.generateCondition();
2421
+ return SearchMultiClassActions.addMultiClassCondition({ condition });
2422
+ })));
2423
+ this.updateConditionField$ = createEffect(() => this.actions$.pipe(ofType(SearchMultiClassActions.updateConditionField), mergeMap((action) => combineLatest([
2424
+ this.store
2425
+ .select(SearchMultiClassSelectors.getConditionById(action.conditionId))
2426
+ .pipe(filter$1((c) => c !== undefined)),
2427
+ this.store.select(FieldSelectors.fieldById(action.field))
2428
+ ]).pipe(first())), map$1(([condition, field]) => {
2429
+ const pattern = this.multiClassService.getPatternForField(field);
2430
+ const isDate = field.type === FieldType.INSTANT;
2431
+ return SearchMultiClassActions.updateConditionPattern({
2432
+ conditionId: condition.id,
2433
+ pattern,
2434
+ isDate
2435
+ });
2436
+ })));
2437
+ this.actionMultiClassSearch$ = createEffect(() => this.actions$.pipe(ofType(SearchMultiClassActions.search, SearchMultiClassActions.save), withLatestFrom(this.store.select(SearchMultiClassSelectors.conditions), this.store.select(SearchMultiClassSelectors.multiType), this.store.select(ClassSelectors.classes), this.store.select(DataSourceSelectors.currentEdit)), map$1(([action, conditions, multiType, classes, currentEdit]) => {
2438
+ const payload = this.multiClassService.buildConditionsToSearchPayload(conditions, classes, multiType);
2439
+ if (action.type === SearchMultiClassActions.save.type && DEFAULT_NAMED_QUERY_ID !== currentEdit?.id) {
2440
+ return DataSourceActions.namedQuery.post({
2441
+ id: action.id ?? currentEdit?.id,
2442
+ name: action.descriptionQuery.name,
2443
+ description: action.descriptionQuery?.description,
2444
+ visibility: action.descriptionQuery?.visibility,
2445
+ payload,
2446
+ color: currentEdit?.color,
2447
+ favorite: currentEdit?.favorite ?? false,
2448
+ isEdit: !!currentEdit
2449
+ });
2450
+ }
2451
+ return SearchActions.search({ payload });
2452
+ })));
2453
+ this.loadExistingConditions$ = createEffect(() => this.actions$.pipe(ofType(SearchMultiClassActions.loadExistingConditions), withLatestFrom(this.store.select(FieldSelectors.fields)), mergeMap(([action, fields]) => {
2454
+ const conditions = this.multiClassService.getConditionsFromSearchPayload(action.payload, fields);
2455
+ const multiType = action.payload.multiType;
2456
+ return [
2457
+ SearchMultiClassActions.updateConditions({ conditions }),
2458
+ SearchMultiClassActions.updateMultiType({ multiType })
2459
+ ];
2460
+ })));
2461
+ }
2462
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMultiClassEffects, deps: [{ token: i1$1.Actions }, { token: i1.Store }, { token: SearchMultiClassService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2463
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMultiClassEffects }); }
2464
+ }
2465
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SearchMultiClassEffects, decorators: [{
2466
+ type: Injectable
2467
+ }], ctorParameters: function () { return [{ type: i1$1.Actions }, { type: i1.Store }, { type: SearchMultiClassService }]; } });
2468
+
2469
+ class PrySearchModule {
2470
+ constructor(pryTranslateService) {
2471
+ this.pryTranslateService = pryTranslateService;
2472
+ this.pryTranslateService.addLangObject('fr', 'search', frTranslations);
2473
+ this.pryTranslateService.addLangObject('en', 'search', enTranslations);
2474
+ }
2475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchModule, deps: [{ token: i3.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
2476
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: PrySearchModule, declarations: [PrySearchComposedComponent,
2477
+ PrySearchSelectAttributeComponent,
2478
+ PrySearchConditionComponent,
2479
+ PrySaveQueryComponent,
2480
+ PrySearchToolsComponent,
2481
+ PrySearchHomeComponent,
2482
+ PrySearchMonoClassComponent,
2483
+ PrySaveQueryComponent,
2484
+ MultiClassConditionComponent,
2485
+ PrySearchMultiClassComponent,
2486
+ MultiClassFieldSelectionComponent,
2487
+ PrySearchFulltextComponent,
2488
+ PrySaveQueryButtonComponent,
2489
+ EditNamedQueryComponent,
2490
+ EditNamedQueryModalComponent,
2491
+ ChooseWidgetComponent,
2492
+ PrySearchOrderComponent,
2493
+ PrySearchCssComponent], imports: [CommonModule,
2494
+ PryCoreModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1$1.EffectsFeatureModule, PryIconModule,
2495
+ FormsModule,
2496
+ ReactiveFormsModule,
2497
+ OverlayModule,
2498
+ PortalModule,
2499
+ PrySelectModule,
2500
+ PryToggleModule,
2501
+ PryOverlayModule,
2502
+ PryFilterModule,
2503
+ PryToggleModule,
2504
+ PryExpandPanelModule,
2505
+ PryCardModule,
2506
+ PryCheckboxModule,
2507
+ PryDashboardModule,
2508
+ PryShareModule,
2509
+ PryDatePickerModule,
2510
+ PryI18nModule], exports: [PrySearchToolsComponent, PrySearchFulltextComponent, EditNamedQueryModalComponent, ChooseWidgetComponent] }); }
2511
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchModule, imports: [CommonModule,
2512
+ PryCoreModule,
2513
+ StoreModule.forFeature(searchMultiClassFeatureKey, searchMultiClassReducer),
2514
+ StoreModule.forFeature(searchMonoClassFeatureKey, searchMonoClassReducer),
2515
+ EffectsModule.forFeature([SearchMultiClassEffects, SearchMonoClassEffects, SearchFulltextEffects]),
2516
+ PryIconModule,
2517
+ FormsModule,
2518
+ ReactiveFormsModule,
2519
+ OverlayModule,
2520
+ PortalModule,
2521
+ PrySelectModule,
2522
+ PryToggleModule,
2523
+ PryOverlayModule,
2524
+ PryFilterModule,
2525
+ PryToggleModule,
2526
+ PryExpandPanelModule,
2527
+ PryCardModule,
2528
+ PryCheckboxModule,
2529
+ PryDashboardModule,
2530
+ PryShareModule,
2531
+ PryDatePickerModule,
2532
+ PryI18nModule] }); }
2533
+ }
2534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySearchModule, decorators: [{
2535
+ type: NgModule,
2536
+ args: [{
2537
+ imports: [
2538
+ CommonModule,
2539
+ PryCoreModule,
2540
+ StoreModule.forFeature(searchMultiClassFeatureKey, searchMultiClassReducer),
2541
+ StoreModule.forFeature(searchMonoClassFeatureKey, searchMonoClassReducer),
2542
+ EffectsModule.forFeature([SearchMultiClassEffects, SearchMonoClassEffects, SearchFulltextEffects]),
2543
+ PryIconModule,
2544
+ FormsModule,
2545
+ ReactiveFormsModule,
2546
+ OverlayModule,
2547
+ PortalModule,
2548
+ PrySelectModule,
2549
+ PryToggleModule,
2550
+ PryOverlayModule,
2551
+ PryFilterModule,
2552
+ PryToggleModule,
2553
+ PryExpandPanelModule,
2554
+ PryCardModule,
2555
+ PryCheckboxModule,
2556
+ PryDashboardModule,
2557
+ PryShareModule,
2558
+ PryDatePickerModule,
2559
+ PryI18nModule
2560
+ ],
2561
+ declarations: [
2562
+ PrySearchComposedComponent,
2563
+ PrySearchSelectAttributeComponent,
2564
+ PrySearchConditionComponent,
2565
+ PrySaveQueryComponent,
2566
+ PrySearchToolsComponent,
2567
+ PrySearchHomeComponent,
2568
+ PrySearchMonoClassComponent,
2569
+ PrySaveQueryComponent,
2570
+ MultiClassConditionComponent,
2571
+ PrySearchMultiClassComponent,
2572
+ MultiClassFieldSelectionComponent,
2573
+ PrySearchFulltextComponent,
2574
+ PrySaveQueryButtonComponent,
2575
+ EditNamedQueryComponent,
2576
+ EditNamedQueryModalComponent,
2577
+ ChooseWidgetComponent,
2578
+ PrySearchOrderComponent,
2579
+ PrySearchCssComponent
2580
+ ],
2581
+ exports: [PrySearchToolsComponent, PrySearchFulltextComponent, EditNamedQueryModalComponent, ChooseWidgetComponent]
2582
+ }]
2583
+ }], ctorParameters: function () { return [{ type: i3.PryI18nService }]; } });
2584
+
2585
+ /**
2586
+ * Generated bundle index. Do not edit.
2587
+ */
2588
+
2589
+ export { ChooseWidgetComponent, EditNamedQueryComponent, EditNamedQueryModalComponent, PrySaveQueryComponent, PrySearchComposedComponent, PrySearchConditionComponent, PrySearchFulltextComponent, PrySearchModule, PrySearchMonoClassComponent, PrySearchMultiClassComponent, PrySearchSelectAttributeComponent, PrySearchToolsComponent };
2590
+ //# sourceMappingURL=provoly-dashboard-search.mjs.map