@dflat-core/web 1.7.2077 → 1.7.2079

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 (694) hide show
  1. package/README.md +211 -211
  2. package/assets/components/modals.scss +216 -216
  3. package/assets/images/icons/fa/500px.svg +6 -6
  4. package/assets/images/icons/fa/address-book-o.svg +4 -4
  5. package/assets/images/icons/fa/address-book.svg +3 -3
  6. package/assets/images/icons/fa/adjust.svg +1 -1
  7. package/assets/images/icons/fa/adn.svg +1 -1
  8. package/assets/images/icons/fa/align-center.svg +2 -2
  9. package/assets/images/icons/fa/align-justify.svg +2 -2
  10. package/assets/images/icons/fa/align-left.svg +2 -2
  11. package/assets/images/icons/fa/align-right.svg +2 -2
  12. package/assets/images/icons/fa/amazon.svg +5 -5
  13. package/assets/images/icons/fa/ambulance.svg +3 -3
  14. package/assets/images/icons/fa/anchor.svg +3 -3
  15. package/assets/images/icons/fa/android.svg +3 -3
  16. package/assets/images/icons/fa/angellist.svg +6 -6
  17. package/assets/images/icons/fa/angle-double-down.svg +2 -2
  18. package/assets/images/icons/fa/angle-double-left.svg +2 -2
  19. package/assets/images/icons/fa/angle-double-right.svg +2 -2
  20. package/assets/images/icons/fa/angle-double-up.svg +2 -2
  21. package/assets/images/icons/fa/angle-down.svg +1 -1
  22. package/assets/images/icons/fa/angle-left.svg +1 -1
  23. package/assets/images/icons/fa/angle-right.svg +1 -1
  24. package/assets/images/icons/fa/angle-up.svg +1 -1
  25. package/assets/images/icons/fa/apple.svg +2 -2
  26. package/assets/images/icons/fa/archive.svg +2 -2
  27. package/assets/images/icons/fa/area-chart.svg +1 -1
  28. package/assets/images/icons/fa/arrow-circle-down.svg +2 -2
  29. package/assets/images/icons/fa/arrow-circle-left.svg +2 -2
  30. package/assets/images/icons/fa/arrow-circle-o-down.svg +2 -2
  31. package/assets/images/icons/fa/arrow-circle-o-left.svg +2 -2
  32. package/assets/images/icons/fa/arrow-circle-o-right.svg +2 -2
  33. package/assets/images/icons/fa/arrow-circle-o-up.svg +2 -2
  34. package/assets/images/icons/fa/arrow-circle-right.svg +2 -2
  35. package/assets/images/icons/fa/arrow-circle-up.svg +2 -2
  36. package/assets/images/icons/fa/arrow-down.svg +1 -1
  37. package/assets/images/icons/fa/arrow-left.svg +2 -2
  38. package/assets/images/icons/fa/arrow-right.svg +1 -1
  39. package/assets/images/icons/fa/arrow-up.svg +2 -2
  40. package/assets/images/icons/fa/arrows-alt.svg +3 -3
  41. package/assets/images/icons/fa/arrows-h.svg +1 -1
  42. package/assets/images/icons/fa/arrows-v.svg +1 -1
  43. package/assets/images/icons/fa/arrows.svg +2 -2
  44. package/assets/images/icons/fa/asl-interpreting.svg +6 -6
  45. package/assets/images/icons/fa/assistive-listening-systems.svg +5 -5
  46. package/assets/images/icons/fa/asterisk.svg +2 -2
  47. package/assets/images/icons/fa/at.svg +4 -4
  48. package/assets/images/icons/fa/audio-description.svg +5 -5
  49. package/assets/images/icons/fa/automobile.svg +3 -3
  50. package/assets/images/icons/fa/backward.svg +1 -1
  51. package/assets/images/icons/fa/balance-scale.svg +4 -4
  52. package/assets/images/icons/fa/ban.svg +2 -2
  53. package/assets/images/icons/fa/bandcamp.svg +1 -1
  54. package/assets/images/icons/fa/bar-chart-o.svg +1 -1
  55. package/assets/images/icons/fa/barcode.svg +2 -2
  56. package/assets/images/icons/fa/bathtub.svg +6 -6
  57. package/assets/images/icons/fa/battery-0.svg +2 -2
  58. package/assets/images/icons/fa/battery-1.svg +2 -2
  59. package/assets/images/icons/fa/battery-2.svg +2 -2
  60. package/assets/images/icons/fa/battery-3.svg +2 -2
  61. package/assets/images/icons/fa/battery-4.svg +2 -2
  62. package/assets/images/icons/fa/beer.svg +1 -1
  63. package/assets/images/icons/fa/behance-square.svg +3 -3
  64. package/assets/images/icons/fa/behance.svg +3 -3
  65. package/assets/images/icons/fa/bell-o.svg +3 -3
  66. package/assets/images/icons/fa/bell-slash-o.svg +3 -3
  67. package/assets/images/icons/fa/bell-slash.svg +3 -3
  68. package/assets/images/icons/fa/bell.svg +2 -2
  69. package/assets/images/icons/fa/bicycle.svg +4 -4
  70. package/assets/images/icons/fa/binoculars.svg +2 -2
  71. package/assets/images/icons/fa/birthday-cake.svg +5 -5
  72. package/assets/images/icons/fa/bitbucket-square.svg +4 -4
  73. package/assets/images/icons/fa/bitbucket.svg +4 -4
  74. package/assets/images/icons/fa/bitcoin.svg +3 -3
  75. package/assets/images/icons/fa/black-tie.svg +1 -1
  76. package/assets/images/icons/fa/blind.svg +4 -4
  77. package/assets/images/icons/fa/bluetooth-b.svg +1 -1
  78. package/assets/images/icons/fa/bluetooth.svg +2 -2
  79. package/assets/images/icons/fa/bold.svg +4 -4
  80. package/assets/images/icons/fa/bomb.svg +4 -4
  81. package/assets/images/icons/fa/book.svg +4 -4
  82. package/assets/images/icons/fa/bookmark-o.svg +2 -2
  83. package/assets/images/icons/fa/bookmark.svg +1 -1
  84. package/assets/images/icons/fa/braille.svg +7 -7
  85. package/assets/images/icons/fa/briefcase.svg +2 -2
  86. package/assets/images/icons/fa/bug.svg +3 -3
  87. package/assets/images/icons/fa/building-o.svg +10 -10
  88. package/assets/images/icons/fa/building.svg +8 -8
  89. package/assets/images/icons/fa/bullhorn.svg +2 -2
  90. package/assets/images/icons/fa/bullseye.svg +3 -3
  91. package/assets/images/icons/fa/bus.svg +3 -3
  92. package/assets/images/icons/fa/buysellads.svg +1 -1
  93. package/assets/images/icons/fa/cab.svg +3 -3
  94. package/assets/images/icons/fa/calculator.svg +6 -6
  95. package/assets/images/icons/fa/calendar-check-o.svg +3 -3
  96. package/assets/images/icons/fa/calendar-minus-o.svg +3 -3
  97. package/assets/images/icons/fa/calendar-o.svg +2 -2
  98. package/assets/images/icons/fa/calendar-plus-o.svg +3 -3
  99. package/assets/images/icons/fa/calendar-times-o.svg +3 -3
  100. package/assets/images/icons/fa/calendar.svg +4 -4
  101. package/assets/images/icons/fa/camera-retro.svg +3 -3
  102. package/assets/images/icons/fa/camera.svg +2 -2
  103. package/assets/images/icons/fa/caret-down.svg +1 -1
  104. package/assets/images/icons/fa/caret-left.svg +1 -1
  105. package/assets/images/icons/fa/caret-right.svg +1 -1
  106. package/assets/images/icons/fa/caret-up.svg +1 -1
  107. package/assets/images/icons/fa/cart-arrow-down.svg +3 -3
  108. package/assets/images/icons/fa/cart-plus.svg +3 -3
  109. package/assets/images/icons/fa/cc-amex.svg +9 -9
  110. package/assets/images/icons/fa/cc-diners-club.svg +3 -3
  111. package/assets/images/icons/fa/cc-discover.svg +5 -5
  112. package/assets/images/icons/fa/cc-jcb.svg +4 -4
  113. package/assets/images/icons/fa/cc-mastercard.svg +11 -11
  114. package/assets/images/icons/fa/cc-paypal.svg +6 -6
  115. package/assets/images/icons/fa/cc-stripe.svg +5 -5
  116. package/assets/images/icons/fa/cc-visa.svg +3 -3
  117. package/assets/images/icons/fa/cc.svg +4 -4
  118. package/assets/images/icons/fa/certificate.svg +3 -3
  119. package/assets/images/icons/fa/chain.svg +4 -4
  120. package/assets/images/icons/fa/check-circle-o.svg +2 -2
  121. package/assets/images/icons/fa/check-circle.svg +2 -2
  122. package/assets/images/icons/fa/check-square-o.svg +3 -3
  123. package/assets/images/icons/fa/check-square.svg +2 -2
  124. package/assets/images/icons/fa/check.svg +1 -1
  125. package/assets/images/icons/fa/chevron-circle-down.svg +2 -2
  126. package/assets/images/icons/fa/chevron-circle-left.svg +2 -2
  127. package/assets/images/icons/fa/chevron-circle-right.svg +2 -2
  128. package/assets/images/icons/fa/chevron-circle-up.svg +2 -2
  129. package/assets/images/icons/fa/chevron-down.svg +1 -1
  130. package/assets/images/icons/fa/chevron-left.svg +1 -1
  131. package/assets/images/icons/fa/chevron-right.svg +1 -1
  132. package/assets/images/icons/fa/chevron-up.svg +1 -1
  133. package/assets/images/icons/fa/child.svg +2 -2
  134. package/assets/images/icons/fa/chrome.svg +2 -2
  135. package/assets/images/icons/fa/circle-o-notch.svg +2 -2
  136. package/assets/images/icons/fa/circle-o.svg +2 -2
  137. package/assets/images/icons/fa/circle-thin.svg +2 -2
  138. package/assets/images/icons/fa/circle.svg +1 -1
  139. package/assets/images/icons/fa/clock-o.svg +2 -2
  140. package/assets/images/icons/fa/clone.svg +2 -2
  141. package/assets/images/icons/fa/cloud-download.svg +2 -2
  142. package/assets/images/icons/fa/cloud-upload.svg +2 -2
  143. package/assets/images/icons/fa/cloud.svg +2 -2
  144. package/assets/images/icons/fa/cny.svg +2 -2
  145. package/assets/images/icons/fa/code-fork.svg +3 -3
  146. package/assets/images/icons/fa/code.svg +2 -2
  147. package/assets/images/icons/fa/codepen.svg +2 -2
  148. package/assets/images/icons/fa/codiepie.svg +3 -3
  149. package/assets/images/icons/fa/coffee.svg +2 -2
  150. package/assets/images/icons/fa/columns.svg +1 -1
  151. package/assets/images/icons/fa/comment-o.svg +3 -3
  152. package/assets/images/icons/fa/comment.svg +2 -2
  153. package/assets/images/icons/fa/commenting-o.svg +4 -4
  154. package/assets/images/icons/fa/commenting.svg +3 -3
  155. package/assets/images/icons/fa/comments-o.svg +4 -4
  156. package/assets/images/icons/fa/comments.svg +3 -3
  157. package/assets/images/icons/fa/compass.svg +2 -2
  158. package/assets/images/icons/fa/compress.svg +2 -2
  159. package/assets/images/icons/fa/connectdevelop.svg +7 -7
  160. package/assets/images/icons/fa/contao.svg +3 -3
  161. package/assets/images/icons/fa/copy.svg +2 -2
  162. package/assets/images/icons/fa/copyright.svg +3 -3
  163. package/assets/images/icons/fa/creative-commons.svg +5 -5
  164. package/assets/images/icons/fa/credit-card-alt.svg +1 -1
  165. package/assets/images/icons/fa/credit-card.svg +2 -2
  166. package/assets/images/icons/fa/crop.svg +2 -2
  167. package/assets/images/icons/fa/crosshairs.svg +3 -3
  168. package/assets/images/icons/fa/css3.svg +1 -1
  169. package/assets/images/icons/fa/cube.svg +2 -2
  170. package/assets/images/icons/fa/cubes.svg +3 -3
  171. package/assets/images/icons/fa/cut.svg +5 -5
  172. package/assets/images/icons/fa/cutlery.svg +2 -2
  173. package/assets/images/icons/fa/dashboard.svg +4 -4
  174. package/assets/images/icons/fa/dashcube.svg +1 -1
  175. package/assets/images/icons/fa/database.svg +3 -3
  176. package/assets/images/icons/fa/deafness.svg +4 -4
  177. package/assets/images/icons/fa/dedent.svg +3 -3
  178. package/assets/images/icons/fa/delicious.svg +2 -2
  179. package/assets/images/icons/fa/desktop.svg +2 -2
  180. package/assets/images/icons/fa/deviantart.svg +1 -1
  181. package/assets/images/icons/fa/diamond.svg +2 -2
  182. package/assets/images/icons/fa/digg.svg +2 -2
  183. package/assets/images/icons/fa/dollar.svg +4 -4
  184. package/assets/images/icons/fa/dot-circle-o.svg +2 -2
  185. package/assets/images/icons/fa/download.svg +2 -2
  186. package/assets/images/icons/fa/dribbble.svg +4 -4
  187. package/assets/images/icons/fa/drivers-license-o.svg +4 -4
  188. package/assets/images/icons/fa/drivers-license.svg +4 -4
  189. package/assets/images/icons/fa/dropbox.svg +1 -1
  190. package/assets/images/icons/fa/drupal.svg +5 -5
  191. package/assets/images/icons/fa/edge.svg +2 -2
  192. package/assets/images/icons/fa/edit.svg +3 -3
  193. package/assets/images/icons/fa/eercast.svg +5 -5
  194. package/assets/images/icons/fa/eject.svg +1 -1
  195. package/assets/images/icons/fa/ellipsis-h.svg +2 -2
  196. package/assets/images/icons/fa/ellipsis-v.svg +2 -2
  197. package/assets/images/icons/fa/envelope-o.svg +3 -3
  198. package/assets/images/icons/fa/envelope-open-o.svg +4 -4
  199. package/assets/images/icons/fa/envelope-open.svg +3 -3
  200. package/assets/images/icons/fa/envelope-square.svg +3 -3
  201. package/assets/images/icons/fa/envelope.svg +2 -2
  202. package/assets/images/icons/fa/envira.svg +3 -3
  203. package/assets/images/icons/fa/eraser.svg +1 -1
  204. package/assets/images/icons/fa/etsy.svg +3 -3
  205. package/assets/images/icons/fa/euro.svg +3 -3
  206. package/assets/images/icons/fa/exchange.svg +2 -2
  207. package/assets/images/icons/fa/exclamation-circle.svg +2 -2
  208. package/assets/images/icons/fa/exclamation.svg +1 -1
  209. package/assets/images/icons/fa/expand.svg +2 -2
  210. package/assets/images/icons/fa/expeditedssl.svg +5 -5
  211. package/assets/images/icons/fa/external-link-square.svg +2 -2
  212. package/assets/images/icons/fa/external-link.svg +2 -2
  213. package/assets/images/icons/fa/eye-slash.svg +4 -4
  214. package/assets/images/icons/fa/eye.svg +2 -2
  215. package/assets/images/icons/fa/eyedropper.svg +2 -2
  216. package/assets/images/icons/fa/fa.svg +2 -2
  217. package/assets/images/icons/fa/facebook-f.svg +1 -1
  218. package/assets/images/icons/fa/facebook-official.svg +1 -1
  219. package/assets/images/icons/fa/facebook-square.svg +2 -2
  220. package/assets/images/icons/fa/fast-backward.svg +2 -2
  221. package/assets/images/icons/fa/fast-forward.svg +2 -2
  222. package/assets/images/icons/fa/fax.svg +5 -5
  223. package/assets/images/icons/fa/feed.svg +3 -3
  224. package/assets/images/icons/fa/female.svg +2 -2
  225. package/assets/images/icons/fa/fighter-jet.svg +2 -2
  226. package/assets/images/icons/fa/file-code-o.svg +3 -3
  227. package/assets/images/icons/fa/file-excel-o.svg +3 -3
  228. package/assets/images/icons/fa/file-movie-o.svg +2 -2
  229. package/assets/images/icons/fa/file-o.svg +2 -2
  230. package/assets/images/icons/fa/file-pdf-o.svg +4 -4
  231. package/assets/images/icons/fa/file-photo-o.svg +2 -2
  232. package/assets/images/icons/fa/file-powerpoint-o.svg +2 -2
  233. package/assets/images/icons/fa/file-sound-o.svg +3 -3
  234. package/assets/images/icons/fa/file-text-o.svg +3 -3
  235. package/assets/images/icons/fa/file-text.svg +2 -2
  236. package/assets/images/icons/fa/file-word-o.svg +3 -3
  237. package/assets/images/icons/fa/file-zip-o.svg +3 -3
  238. package/assets/images/icons/fa/file.svg +1 -1
  239. package/assets/images/icons/fa/film.svg +5 -5
  240. package/assets/images/icons/fa/filter.svg +1 -1
  241. package/assets/images/icons/fa/fire-extinguisher.svg +3 -3
  242. package/assets/images/icons/fa/fire.svg +2 -2
  243. package/assets/images/icons/fa/firefox.svg +3 -3
  244. package/assets/images/icons/fa/first-order.svg +4 -4
  245. package/assets/images/icons/fa/flag-checkered.svg +4 -4
  246. package/assets/images/icons/fa/flag-o.svg +3 -3
  247. package/assets/images/icons/fa/flag.svg +2 -2
  248. package/assets/images/icons/fa/flash.svg +1 -1
  249. package/assets/images/icons/fa/flask.svg +1 -1
  250. package/assets/images/icons/fa/flickr.svg +2 -2
  251. package/assets/images/icons/fa/folder-o.svg +2 -2
  252. package/assets/images/icons/fa/folder-open-o.svg +3 -3
  253. package/assets/images/icons/fa/folder-open.svg +2 -2
  254. package/assets/images/icons/fa/folder.svg +1 -1
  255. package/assets/images/icons/fa/font.svg +3 -3
  256. package/assets/images/icons/fa/fonticons.svg +3 -3
  257. package/assets/images/icons/fa/fort-awesome.svg +4 -4
  258. package/assets/images/icons/fa/forumbee.svg +2 -2
  259. package/assets/images/icons/fa/forward.svg +1 -1
  260. package/assets/images/icons/fa/foursquare.svg +3 -3
  261. package/assets/images/icons/fa/free-code-camp.svg +7 -7
  262. package/assets/images/icons/fa/frown-o.svg +3 -3
  263. package/assets/images/icons/fa/gamepad.svg +3 -3
  264. package/assets/images/icons/fa/gbp.svg +2 -2
  265. package/assets/images/icons/fa/ge.svg +6 -6
  266. package/assets/images/icons/fa/gear.svg +4 -4
  267. package/assets/images/icons/fa/gears.svg +8 -8
  268. package/assets/images/icons/fa/genderless.svg +2 -2
  269. package/assets/images/icons/fa/get-pocket.svg +2 -2
  270. package/assets/images/icons/fa/gg-circle.svg +2 -2
  271. package/assets/images/icons/fa/gg.svg +1 -1
  272. package/assets/images/icons/fa/gift.svg +3 -3
  273. package/assets/images/icons/fa/git-square.svg +4 -4
  274. package/assets/images/icons/fa/git.svg +4 -4
  275. package/assets/images/icons/fa/github-alt.svg +4 -4
  276. package/assets/images/icons/fa/github-square.svg +5 -5
  277. package/assets/images/icons/fa/github.svg +5 -5
  278. package/assets/images/icons/fa/gitlab.svg +1 -1
  279. package/assets/images/icons/fa/gittip.svg +2 -2
  280. package/assets/images/icons/fa/glass.svg +1 -1
  281. package/assets/images/icons/fa/glide-g.svg +4 -4
  282. package/assets/images/icons/fa/glide.svg +4 -4
  283. package/assets/images/icons/fa/globe.svg +15 -15
  284. package/assets/images/icons/fa/google-plus-circle.svg +2 -2
  285. package/assets/images/icons/fa/google-plus-square.svg +2 -2
  286. package/assets/images/icons/fa/google-plus.svg +2 -2
  287. package/assets/images/icons/fa/google-wallet.svg +2 -2
  288. package/assets/images/icons/fa/google.svg +2 -2
  289. package/assets/images/icons/fa/grav.svg +7 -7
  290. package/assets/images/icons/fa/group.svg +4 -4
  291. package/assets/images/icons/fa/h-square.svg +2 -2
  292. package/assets/images/icons/fa/hand-grab-o.svg +4 -4
  293. package/assets/images/icons/fa/hand-lizard-o.svg +3 -3
  294. package/assets/images/icons/fa/hand-o-down.svg +4 -4
  295. package/assets/images/icons/fa/hand-o-left.svg +4 -4
  296. package/assets/images/icons/fa/hand-o-right.svg +4 -4
  297. package/assets/images/icons/fa/hand-o-up.svg +4 -4
  298. package/assets/images/icons/fa/hand-peace-o.svg +5 -5
  299. package/assets/images/icons/fa/hand-pointer-o.svg +4 -4
  300. package/assets/images/icons/fa/hand-scissors-o.svg +5 -5
  301. package/assets/images/icons/fa/hand-spock-o.svg +4 -4
  302. package/assets/images/icons/fa/hand-stop-o.svg +3 -3
  303. package/assets/images/icons/fa/handshake-o.svg +5 -5
  304. package/assets/images/icons/fa/hashtag.svg +3 -3
  305. package/assets/images/icons/fa/hdd-o.svg +3 -3
  306. package/assets/images/icons/fa/header.svg +5 -5
  307. package/assets/images/icons/fa/headphones.svg +3 -3
  308. package/assets/images/icons/fa/heart-o.svg +3 -3
  309. package/assets/images/icons/fa/heart.svg +2 -2
  310. package/assets/images/icons/fa/heartbeat.svg +3 -3
  311. package/assets/images/icons/fa/history.svg +3 -3
  312. package/assets/images/icons/fa/home.svg +2 -2
  313. package/assets/images/icons/fa/hospital-o.svg +8 -8
  314. package/assets/images/icons/fa/hotel.svg +2 -2
  315. package/assets/images/icons/fa/hourglass-1.svg +2 -2
  316. package/assets/images/icons/fa/hourglass-2.svg +2 -2
  317. package/assets/images/icons/fa/hourglass-3.svg +3 -3
  318. package/assets/images/icons/fa/hourglass-o.svg +3 -3
  319. package/assets/images/icons/fa/hourglass.svg +3 -3
  320. package/assets/images/icons/fa/houzz.svg +1 -1
  321. package/assets/images/icons/fa/html5.svg +1 -1
  322. package/assets/images/icons/fa/i-cursor.svg +1 -1
  323. package/assets/images/icons/fa/id-badge.svg +3 -3
  324. package/assets/images/icons/fa/imdb.svg +4 -4
  325. package/assets/images/icons/fa/inbox.svg +2 -2
  326. package/assets/images/icons/fa/indent.svg +3 -3
  327. package/assets/images/icons/fa/industry.svg +1 -1
  328. package/assets/images/icons/fa/info-circle.svg +2 -2
  329. package/assets/images/icons/fa/info.svg +2 -2
  330. package/assets/images/icons/fa/instagram.svg +4 -4
  331. package/assets/images/icons/fa/institution.svg +2 -2
  332. package/assets/images/icons/fa/internet-explorer.svg +3 -3
  333. package/assets/images/icons/fa/intersex.svg +3 -3
  334. package/assets/images/icons/fa/ioxhost.svg +3 -3
  335. package/assets/images/icons/fa/italic.svg +2 -2
  336. package/assets/images/icons/fa/joomla.svg +5 -5
  337. package/assets/images/icons/fa/jsfiddle.svg +3 -3
  338. package/assets/images/icons/fa/key.svg +3 -3
  339. package/assets/images/icons/fa/keyboard-o.svg +5 -5
  340. package/assets/images/icons/fa/language.svg +6 -6
  341. package/assets/images/icons/fa/laptop.svg +2 -2
  342. package/assets/images/icons/fa/lastfm-square.svg +4 -4
  343. package/assets/images/icons/fa/lastfm.svg +4 -4
  344. package/assets/images/icons/fa/leaf.svg +3 -3
  345. package/assets/images/icons/fa/leanpub.svg +3 -3
  346. package/assets/images/icons/fa/legal.svg +4 -4
  347. package/assets/images/icons/fa/lemon-o.svg +4 -4
  348. package/assets/images/icons/fa/level-down.svg +1 -1
  349. package/assets/images/icons/fa/level-up.svg +1 -1
  350. package/assets/images/icons/fa/life-bouy.svg +3 -3
  351. package/assets/images/icons/fa/lightbulb-o.svg +4 -4
  352. package/assets/images/icons/fa/line-chart.svg +2 -2
  353. package/assets/images/icons/fa/linkedin-square.svg +2 -2
  354. package/assets/images/icons/fa/linkedin.svg +2 -2
  355. package/assets/images/icons/fa/linode.svg +4 -4
  356. package/assets/images/icons/fa/linux.svg +16 -16
  357. package/assets/images/icons/fa/list-alt.svg +5 -5
  358. package/assets/images/icons/fa/list-ol.svg +4 -4
  359. package/assets/images/icons/fa/list-ul.svg +3 -3
  360. package/assets/images/icons/fa/list.svg +5 -5
  361. package/assets/images/icons/fa/location-arrow.svg +1 -1
  362. package/assets/images/icons/fa/lock.svg +1 -1
  363. package/assets/images/icons/fa/long-arrow-down.svg +1 -1
  364. package/assets/images/icons/fa/long-arrow-left.svg +1 -1
  365. package/assets/images/icons/fa/long-arrow-right.svg +1 -1
  366. package/assets/images/icons/fa/long-arrow-up.svg +1 -1
  367. package/assets/images/icons/fa/low-vision.svg +4 -4
  368. package/assets/images/icons/fa/magic.svg +2 -2
  369. package/assets/images/icons/fa/magnet.svg +2 -2
  370. package/assets/images/icons/fa/mail-forward.svg +2 -2
  371. package/assets/images/icons/fa/mail-reply-all.svg +2 -2
  372. package/assets/images/icons/fa/mail-reply.svg +2 -2
  373. package/assets/images/icons/fa/male.svg +2 -2
  374. package/assets/images/icons/fa/map-marker.svg +1 -1
  375. package/assets/images/icons/fa/map-o.svg +2 -2
  376. package/assets/images/icons/fa/map-pin.svg +2 -2
  377. package/assets/images/icons/fa/map-signs.svg +2 -2
  378. package/assets/images/icons/fa/map.svg +2 -2
  379. package/assets/images/icons/fa/mars-double.svg +4 -4
  380. package/assets/images/icons/fa/mars-stroke-h.svg +3 -3
  381. package/assets/images/icons/fa/mars-stroke-v.svg +3 -3
  382. package/assets/images/icons/fa/mars-stroke.svg +3 -3
  383. package/assets/images/icons/fa/mars.svg +2 -2
  384. package/assets/images/icons/fa/maxcdn.svg +1 -1
  385. package/assets/images/icons/fa/meanpath.svg +3 -3
  386. package/assets/images/icons/fa/medium.svg +2 -2
  387. package/assets/images/icons/fa/medkit.svg +2 -2
  388. package/assets/images/icons/fa/meetup.svg +9 -9
  389. package/assets/images/icons/fa/meh-o.svg +3 -3
  390. package/assets/images/icons/fa/mercury.svg +3 -3
  391. package/assets/images/icons/fa/microchip.svg +5 -5
  392. package/assets/images/icons/fa/microphone-slash.svg +3 -3
  393. package/assets/images/icons/fa/microphone.svg +2 -2
  394. package/assets/images/icons/fa/minus-circle.svg +2 -2
  395. package/assets/images/icons/fa/minus-square-o.svg +2 -2
  396. package/assets/images/icons/fa/minus-square.svg +2 -2
  397. package/assets/images/icons/fa/minus.svg +1 -1
  398. package/assets/images/icons/fa/mixcloud.svg +4 -4
  399. package/assets/images/icons/fa/mobile-phone.svg +2 -2
  400. package/assets/images/icons/fa/modx.svg +1 -1
  401. package/assets/images/icons/fa/money.svg +2 -2
  402. package/assets/images/icons/fa/moon-o.svg +2 -2
  403. package/assets/images/icons/fa/mortar-board.svg +2 -2
  404. package/assets/images/icons/fa/motorcycle.svg +4 -4
  405. package/assets/images/icons/fa/mouse-pointer.svg +1 -1
  406. package/assets/images/icons/fa/music.svg +2 -2
  407. package/assets/images/icons/fa/navicon.svg +2 -2
  408. package/assets/images/icons/fa/neuter.svg +2 -2
  409. package/assets/images/icons/fa/newspaper-o.svg +2 -2
  410. package/assets/images/icons/fa/object-group.svg +2 -2
  411. package/assets/images/icons/fa/object-ungroup.svg +2 -2
  412. package/assets/images/icons/fa/odnoklassniki-square.svg +3 -3
  413. package/assets/images/icons/fa/odnoklassniki.svg +3 -3
  414. package/assets/images/icons/fa/opencart.svg +3 -3
  415. package/assets/images/icons/fa/openid.svg +1 -1
  416. package/assets/images/icons/fa/opera.svg +3 -3
  417. package/assets/images/icons/fa/optin-monster.svg +17 -17
  418. package/assets/images/icons/fa/pagelines.svg +4 -4
  419. package/assets/images/icons/fa/paint-brush.svg +2 -2
  420. package/assets/images/icons/fa/paperclip.svg +3 -3
  421. package/assets/images/icons/fa/paragraph.svg +2 -2
  422. package/assets/images/icons/fa/paste.svg +2 -2
  423. package/assets/images/icons/fa/pause-circle-o.svg +2 -2
  424. package/assets/images/icons/fa/pause-circle.svg +2 -2
  425. package/assets/images/icons/fa/pause.svg +1 -1
  426. package/assets/images/icons/fa/paw.svg +4 -4
  427. package/assets/images/icons/fa/paypal.svg +3 -3
  428. package/assets/images/icons/fa/pencil-square.svg +2 -2
  429. package/assets/images/icons/fa/pencil.svg +2 -2
  430. package/assets/images/icons/fa/percent.svg +3 -3
  431. package/assets/images/icons/fa/phone-square.svg +4 -4
  432. package/assets/images/icons/fa/phone.svg +3 -3
  433. package/assets/images/icons/fa/photo.svg +2 -2
  434. package/assets/images/icons/fa/pie-chart.svg +1 -1
  435. package/assets/images/icons/fa/pied-piper-alt.svg +8 -8
  436. package/assets/images/icons/fa/pied-piper-pp.svg +3 -3
  437. package/assets/images/icons/fa/pied-piper.svg +3 -3
  438. package/assets/images/icons/fa/pinterest-p.svg +3 -3
  439. package/assets/images/icons/fa/pinterest-square.svg +3 -3
  440. package/assets/images/icons/fa/pinterest.svg +3 -3
  441. package/assets/images/icons/fa/plane.svg +2 -2
  442. package/assets/images/icons/fa/play-circle-o.svg +2 -2
  443. package/assets/images/icons/fa/play-circle.svg +2 -2
  444. package/assets/images/icons/fa/play.svg +1 -1
  445. package/assets/images/icons/fa/plug.svg +2 -2
  446. package/assets/images/icons/fa/plus-circle.svg +2 -2
  447. package/assets/images/icons/fa/plus-square-o.svg +2 -2
  448. package/assets/images/icons/fa/plus-square.svg +2 -2
  449. package/assets/images/icons/fa/plus.svg +1 -1
  450. package/assets/images/icons/fa/podcast.svg +5 -5
  451. package/assets/images/icons/fa/power-off.svg +2 -2
  452. package/assets/images/icons/fa/print.svg +2 -2
  453. package/assets/images/icons/fa/product-hunt.svg +2 -2
  454. package/assets/images/icons/fa/puzzle-piece.svg +4 -4
  455. package/assets/images/icons/fa/qq.svg +4 -4
  456. package/assets/images/icons/fa/qrcode.svg +2 -2
  457. package/assets/images/icons/fa/question-circle-o.svg +4 -4
  458. package/assets/images/icons/fa/question-circle.svg +3 -3
  459. package/assets/images/icons/fa/question.svg +2 -2
  460. package/assets/images/icons/fa/quora.svg +3 -3
  461. package/assets/images/icons/fa/quote-left.svg +2 -2
  462. package/assets/images/icons/fa/quote-right.svg +2 -2
  463. package/assets/images/icons/fa/ra.svg +4 -4
  464. package/assets/images/icons/fa/random.svg +4 -4
  465. package/assets/images/icons/fa/ravelry.svg +6 -6
  466. package/assets/images/icons/fa/recycle.svg +4 -4
  467. package/assets/images/icons/fa/reddit-alien.svg +4 -4
  468. package/assets/images/icons/fa/reddit-square.svg +4 -4
  469. package/assets/images/icons/fa/reddit.svg +4 -4
  470. package/assets/images/icons/fa/refresh.svg +3 -3
  471. package/assets/images/icons/fa/registered.svg +3 -3
  472. package/assets/images/icons/fa/remove.svg +2 -2
  473. package/assets/images/icons/fa/renren.svg +2 -2
  474. package/assets/images/icons/fa/retweet.svg +3 -3
  475. package/assets/images/icons/fa/road.svg +2 -2
  476. package/assets/images/icons/fa/rocket.svg +2 -2
  477. package/assets/images/icons/fa/rotate-left.svg +2 -2
  478. package/assets/images/icons/fa/rotate-right.svg +2 -2
  479. package/assets/images/icons/fa/rss-square.svg +3 -3
  480. package/assets/images/icons/fa/ruble.svg +2 -2
  481. package/assets/images/icons/fa/rupee.svg +2 -2
  482. package/assets/images/icons/fa/safari.svg +6 -6
  483. package/assets/images/icons/fa/save.svg +2 -2
  484. package/assets/images/icons/fa/scribd.svg +4 -4
  485. package/assets/images/icons/fa/search-minus.svg +3 -3
  486. package/assets/images/icons/fa/search-plus.svg +3 -3
  487. package/assets/images/icons/fa/search.svg +2 -2
  488. package/assets/images/icons/fa/sellsy.svg +3 -3
  489. package/assets/images/icons/fa/send-o.svg +2 -2
  490. package/assets/images/icons/fa/send.svg +1 -1
  491. package/assets/images/icons/fa/server.svg +2 -2
  492. package/assets/images/icons/fa/share-alt-square.svg +2 -2
  493. package/assets/images/icons/fa/share-alt.svg +2 -2
  494. package/assets/images/icons/fa/share-square-o.svg +3 -3
  495. package/assets/images/icons/fa/share-square.svg +2 -2
  496. package/assets/images/icons/fa/shekel.svg +2 -2
  497. package/assets/images/icons/fa/shield.svg +2 -2
  498. package/assets/images/icons/fa/ship.svg +5 -5
  499. package/assets/images/icons/fa/shirtsinbulk.svg +7 -7
  500. package/assets/images/icons/fa/shopping-bag.svg +2 -2
  501. package/assets/images/icons/fa/shopping-basket.svg +4 -4
  502. package/assets/images/icons/fa/shopping-cart.svg +2 -2
  503. package/assets/images/icons/fa/shower.svg +6 -6
  504. package/assets/images/icons/fa/sign-in.svg +2 -2
  505. package/assets/images/icons/fa/sign-out.svg +2 -2
  506. package/assets/images/icons/fa/signal.svg +2 -2
  507. package/assets/images/icons/fa/signing.svg +5 -5
  508. package/assets/images/icons/fa/simplybuilt.svg +2 -2
  509. package/assets/images/icons/fa/sitemap.svg +3 -3
  510. package/assets/images/icons/fa/skyatlas.svg +4 -4
  511. package/assets/images/icons/fa/skype.svg +4 -4
  512. package/assets/images/icons/fa/slack.svg +3 -3
  513. package/assets/images/icons/fa/sliders.svg +2 -2
  514. package/assets/images/icons/fa/slideshare.svg +4 -4
  515. package/assets/images/icons/fa/smile-o.svg +3 -3
  516. package/assets/images/icons/fa/snapchat-ghost.svg +3 -3
  517. package/assets/images/icons/fa/snapchat-square.svg +4 -4
  518. package/assets/images/icons/fa/snapchat.svg +4 -4
  519. package/assets/images/icons/fa/snowflake-o.svg +5 -5
  520. package/assets/images/icons/fa/soccer-ball-o.svg +2 -2
  521. package/assets/images/icons/fa/sort-alpha-asc.svg +3 -3
  522. package/assets/images/icons/fa/sort-alpha-desc.svg +3 -3
  523. package/assets/images/icons/fa/sort-amount-asc.svg +3 -3
  524. package/assets/images/icons/fa/sort-amount-desc.svg +3 -3
  525. package/assets/images/icons/fa/sort-down.svg +1 -1
  526. package/assets/images/icons/fa/sort-numeric-asc.svg +3 -3
  527. package/assets/images/icons/fa/sort-numeric-desc.svg +3 -3
  528. package/assets/images/icons/fa/sort-up.svg +1 -1
  529. package/assets/images/icons/fa/soundcloud.svg +7 -7
  530. package/assets/images/icons/fa/space-shuttle.svg +3 -3
  531. package/assets/images/icons/fa/spinner.svg +4 -4
  532. package/assets/images/icons/fa/spoon.svg +1 -1
  533. package/assets/images/icons/fa/spotify.svg +3 -3
  534. package/assets/images/icons/fa/square-o.svg +2 -2
  535. package/assets/images/icons/fa/square.svg +1 -1
  536. package/assets/images/icons/fa/stack-exchange.svg +2 -2
  537. package/assets/images/icons/fa/stack-overflow.svg +1 -1
  538. package/assets/images/icons/fa/star-half-empty.svg +2 -2
  539. package/assets/images/icons/fa/star-half.svg +1 -1
  540. package/assets/images/icons/fa/star-o.svg +2 -2
  541. package/assets/images/icons/fa/star.svg +2 -2
  542. package/assets/images/icons/fa/steam-square.svg +4 -4
  543. package/assets/images/icons/fa/steam.svg +3 -3
  544. package/assets/images/icons/fa/step-backward.svg +1 -1
  545. package/assets/images/icons/fa/step-forward.svg +1 -1
  546. package/assets/images/icons/fa/stethoscope.svg +3 -3
  547. package/assets/images/icons/fa/sticky-note-o.svg +2 -2
  548. package/assets/images/icons/fa/sticky-note.svg +1 -1
  549. package/assets/images/icons/fa/stop-circle-o.svg +2 -2
  550. package/assets/images/icons/fa/stop-circle.svg +2 -2
  551. package/assets/images/icons/fa/stop.svg +1 -1
  552. package/assets/images/icons/fa/street-view.svg +4 -4
  553. package/assets/images/icons/fa/strikethrough.svg +3 -3
  554. package/assets/images/icons/fa/stumbleupon-circle.svg +3 -3
  555. package/assets/images/icons/fa/stumbleupon.svg +2 -2
  556. package/assets/images/icons/fa/subscript.svg +3 -3
  557. package/assets/images/icons/fa/subway.svg +2 -2
  558. package/assets/images/icons/fa/suitcase.svg +2 -2
  559. package/assets/images/icons/fa/sun-o.svg +3 -3
  560. package/assets/images/icons/fa/superpowers.svg +2 -2
  561. package/assets/images/icons/fa/superscript.svg +3 -3
  562. package/assets/images/icons/fa/table.svg +5 -5
  563. package/assets/images/icons/fa/tablet.svg +2 -2
  564. package/assets/images/icons/fa/tag.svg +2 -2
  565. package/assets/images/icons/fa/tags.svg +2 -2
  566. package/assets/images/icons/fa/tasks.svg +2 -2
  567. package/assets/images/icons/fa/telegram.svg +2 -2
  568. package/assets/images/icons/fa/tencent-weibo.svg +3 -3
  569. package/assets/images/icons/fa/terminal.svg +2 -2
  570. package/assets/images/icons/fa/text-height.svg +4 -4
  571. package/assets/images/icons/fa/text-width.svg +5 -5
  572. package/assets/images/icons/fa/th-large.svg +2 -2
  573. package/assets/images/icons/fa/th-list.svg +3 -3
  574. package/assets/images/icons/fa/th.svg +4 -4
  575. package/assets/images/icons/fa/themeisle.svg +8 -8
  576. package/assets/images/icons/fa/thermometer-0.svg +2 -2
  577. package/assets/images/icons/fa/thermometer-1.svg +3 -3
  578. package/assets/images/icons/fa/thermometer-2.svg +3 -3
  579. package/assets/images/icons/fa/thermometer-3.svg +3 -3
  580. package/assets/images/icons/fa/thermometer-4.svg +3 -3
  581. package/assets/images/icons/fa/thumb-tack.svg +2 -2
  582. package/assets/images/icons/fa/thumbs-down.svg +3 -3
  583. package/assets/images/icons/fa/thumbs-o-down.svg +4 -4
  584. package/assets/images/icons/fa/thumbs-o-up.svg +4 -4
  585. package/assets/images/icons/fa/thumbs-up.svg +3 -3
  586. package/assets/images/icons/fa/ticket.svg +2 -2
  587. package/assets/images/icons/fa/times-circle-o.svg +3 -3
  588. package/assets/images/icons/fa/times-circle.svg +2 -2
  589. package/assets/images/icons/fa/times-rectangle-o.svg +2 -2
  590. package/assets/images/icons/fa/times-rectangle.svg +2 -2
  591. package/assets/images/icons/fa/tint.svg +2 -2
  592. package/assets/images/icons/fa/toggle-down.svg +2 -2
  593. package/assets/images/icons/fa/toggle-left.svg +2 -2
  594. package/assets/images/icons/fa/toggle-off.svg +3 -3
  595. package/assets/images/icons/fa/toggle-on.svg +2 -2
  596. package/assets/images/icons/fa/toggle-right.svg +2 -2
  597. package/assets/images/icons/fa/toggle-up.svg +2 -2
  598. package/assets/images/icons/fa/trademark.svg +3 -3
  599. package/assets/images/icons/fa/train.svg +2 -2
  600. package/assets/images/icons/fa/transgender-alt.svg +4 -4
  601. package/assets/images/icons/fa/trash-o.svg +3 -3
  602. package/assets/images/icons/fa/trash.svg +3 -3
  603. package/assets/images/icons/fa/tree.svg +2 -2
  604. package/assets/images/icons/fa/trello.svg +2 -2
  605. package/assets/images/icons/fa/tripadvisor.svg +6 -6
  606. package/assets/images/icons/fa/trophy.svg +3 -3
  607. package/assets/images/icons/fa/truck.svg +3 -3
  608. package/assets/images/icons/fa/tty.svg +5 -5
  609. package/assets/images/icons/fa/tumblr-square.svg +2 -2
  610. package/assets/images/icons/fa/tumblr.svg +2 -2
  611. package/assets/images/icons/fa/turkish-lira.svg +2 -2
  612. package/assets/images/icons/fa/tv.svg +2 -2
  613. package/assets/images/icons/fa/twitch.svg +1 -1
  614. package/assets/images/icons/fa/twitter-square.svg +3 -3
  615. package/assets/images/icons/fa/twitter.svg +2 -2
  616. package/assets/images/icons/fa/umbrella.svg +3 -3
  617. package/assets/images/icons/fa/underline.svg +4 -4
  618. package/assets/images/icons/fa/universal-access.svg +4 -4
  619. package/assets/images/icons/fa/unlink.svg +4 -4
  620. package/assets/images/icons/fa/unlock-alt.svg +2 -2
  621. package/assets/images/icons/fa/unlock.svg +2 -2
  622. package/assets/images/icons/fa/unsorted.svg +1 -1
  623. package/assets/images/icons/fa/upload.svg +2 -2
  624. package/assets/images/icons/fa/usb.svg +3 -3
  625. package/assets/images/icons/fa/user-circle-o.svg +2 -2
  626. package/assets/images/icons/fa/user-circle.svg +2 -2
  627. package/assets/images/icons/fa/user-md.svg +4 -4
  628. package/assets/images/icons/fa/user-o.svg +3 -3
  629. package/assets/images/icons/fa/user-plus.svg +3 -3
  630. package/assets/images/icons/fa/user-secret.svg +4 -4
  631. package/assets/images/icons/fa/user-times.svg +3 -3
  632. package/assets/images/icons/fa/user.svg +2 -2
  633. package/assets/images/icons/fa/vcard-o.svg +5 -5
  634. package/assets/images/icons/fa/vcard.svg +4 -4
  635. package/assets/images/icons/fa/venus-double.svg +4 -4
  636. package/assets/images/icons/fa/venus-mars.svg +4 -4
  637. package/assets/images/icons/fa/venus.svg +2 -2
  638. package/assets/images/icons/fa/viacoin.svg +1 -1
  639. package/assets/images/icons/fa/viadeo-square.svg +4 -4
  640. package/assets/images/icons/fa/viadeo.svg +3 -3
  641. package/assets/images/icons/fa/video-camera.svg +2 -2
  642. package/assets/images/icons/fa/vimeo-square.svg +2 -2
  643. package/assets/images/icons/fa/vimeo.svg +2 -2
  644. package/assets/images/icons/fa/vine.svg +2 -2
  645. package/assets/images/icons/fa/vk.svg +5 -5
  646. package/assets/images/icons/fa/volume-control-phone.svg +5 -5
  647. package/assets/images/icons/fa/volume-down.svg +2 -2
  648. package/assets/images/icons/fa/volume-off.svg +1 -1
  649. package/assets/images/icons/fa/volume-up.svg +4 -4
  650. package/assets/images/icons/fa/warning.svg +2 -2
  651. package/assets/images/icons/fa/wechat.svg +4 -4
  652. package/assets/images/icons/fa/weibo.svg +5 -5
  653. package/assets/images/icons/fa/whatsapp.svg +3 -3
  654. package/assets/images/icons/fa/wheelchair-alt.svg +3 -3
  655. package/assets/images/icons/fa/wheelchair.svg +2 -2
  656. package/assets/images/icons/fa/wifi.svg +3 -3
  657. package/assets/images/icons/fa/wikipedia-w.svg +3 -3
  658. package/assets/images/icons/fa/window-maximize.svg +1 -1
  659. package/assets/images/icons/fa/window-minimize.svg +1 -1
  660. package/assets/images/icons/fa/window-restore.svg +2 -2
  661. package/assets/images/icons/fa/windows.svg +1 -1
  662. package/assets/images/icons/fa/won.svg +3 -3
  663. package/assets/images/icons/fa/wordpress.svg +5 -5
  664. package/assets/images/icons/fa/wpbeginner.svg +2 -2
  665. package/assets/images/icons/fa/wpexplorer.svg +3 -3
  666. package/assets/images/icons/fa/wpforms.svg +2 -2
  667. package/assets/images/icons/fa/wrench.svg +2 -2
  668. package/assets/images/icons/fa/xing-square.svg +2 -2
  669. package/assets/images/icons/fa/xing.svg +2 -2
  670. package/assets/images/icons/fa/y-combinator-square.svg +1 -1
  671. package/assets/images/icons/fa/yahoo.svg +2 -2
  672. package/assets/images/icons/fa/yc.svg +1 -1
  673. package/assets/images/icons/fa/yelp.svg +4 -4
  674. package/assets/images/icons/fa/yoast.svg +2 -2
  675. package/assets/images/icons/fa/youtube-play.svg +3 -3
  676. package/assets/images/icons/fa/youtube-square.svg +6 -6
  677. package/assets/images/icons/fa/youtube.svg +5 -5
  678. package/assets/site.scss +375 -375
  679. package/assets/text.scss +8 -0
  680. package/assets/theme-variables.scss +98 -98
  681. package/assets/variables.scss +93 -93
  682. package/fesm2022/dflat-core-web-core-data.mjs +5 -0
  683. package/fesm2022/dflat-core-web-core-data.mjs.map +1 -1
  684. package/fesm2022/dflat-core-web-core-model.mjs.map +1 -1
  685. package/fesm2022/dflat-core-web-core-ux.mjs +547 -68
  686. package/fesm2022/dflat-core-web-core-ux.mjs.map +1 -1
  687. package/fesm2022/dflat-core-web-system-data.mjs.map +1 -1
  688. package/fesm2022/dflat-core-web-system-ux.mjs.map +1 -1
  689. package/package.json +1 -1
  690. package/scss/dflat-app.scss +6 -0
  691. package/types/dflat-core-web-core-data.d.ts +8 -0
  692. package/types/dflat-core-web-core-model.d.ts +2 -0
  693. package/types/dflat-core-web-core-ux.d.ts +149 -3
  694. package/types/dflat-core-web-system-ux.d.ts +1 -1
@@ -2,7 +2,7 @@ import { ActionDisplay, AggregateFunction, ApiErrorTypes, ConditionalResults, Co
2
2
  import * as i1$5 from "@angular/common";
3
3
  import { CommonModule, Location } from "@angular/common";
4
4
  import * as i0 from "@angular/core";
5
- import { ApplicationRef, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, Directive, ElementRef, EnvironmentInjector, EventEmitter, Host, HostBinding, HostListener, Inject, Injectable, InjectionToken, Injector, Input, LOCALE_ID, NgModule, Optional, Output, Pipe, TemplateRef, ViewChild, ViewChildren, ViewContainerRef, computed, createComponent, forwardRef, inject, signal } from "@angular/core";
5
+ import { ApplicationRef, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EnvironmentInjector, EventEmitter, Host, HostBinding, HostListener, Inject, Injectable, InjectionToken, Injector, Input, LOCALE_ID, NgModule, Optional, Output, Pipe, TemplateRef, ViewChild, ViewChildren, ViewContainerRef, computed, createComponent, forwardRef, inject, signal } from "@angular/core";
6
6
  import * as i5 from "@angular/forms";
7
7
  import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
8
8
  import * as i2$1 from "@angular/router";
@@ -2953,22 +2953,57 @@ var FilterContext = class FilterContext {
2953
2953
  this.applyAdditionalQuery();
2954
2954
  }
2955
2955
  applyAdditionalQuery() {
2956
- const groups = this.additionalQuery$.value.Rows.map((row) => {
2956
+ const filter = {
2957
+ ...this.filter$.value,
2958
+ AdditionalQuery: this.buildAdditionalQuery() ?? null
2959
+ };
2960
+ this.setFilter(filter);
2961
+ }
2962
+ buildAdditionalQuery(excludedProperty) {
2963
+ return toAdditionalQuery(this.additionalQuery$.value.Rows.map((row) => {
2957
2964
  const conditions = [];
2958
2965
  row.ClausesByPropertyName.forEach((element, property) => {
2966
+ if (property === excludedProperty) return;
2959
2967
  if (!Utilities.IsNil(element.FilterValue) && element.FilterValue !== "") conditions.push({
2960
2968
  Property: property,
2961
2969
  Operator: "like",
2962
2970
  Value: String(element.FilterValue)
2963
2971
  });
2972
+ if (element.FilterValues?.length) conditions.push({
2973
+ Property: property,
2974
+ Operator: "in",
2975
+ Values: element.FilterValues
2976
+ });
2964
2977
  });
2965
2978
  return { Conditions: conditions };
2966
- });
2967
- const filter = {
2979
+ }));
2980
+ }
2981
+ getDistinctValuesFilter(property) {
2982
+ return {
2968
2983
  ...this.filter$.value,
2969
- AdditionalQuery: toAdditionalQuery(groups) ?? null
2984
+ AdditionalQuery: this.buildAdditionalQuery(property) ?? null
2970
2985
  };
2971
- this.setFilter(filter);
2986
+ }
2987
+ getFilterValues(property) {
2988
+ return this.additionalQuery$.value.Rows[0]?.ClausesByPropertyName.get(property)?.FilterValues ?? [];
2989
+ }
2990
+ setFilterValues(property, values) {
2991
+ if (!property) return;
2992
+ let current = this.additionalQuery$.value;
2993
+ if (current.Rows.length === 0) {
2994
+ if (!values.length) return;
2995
+ current.Rows.push(this.newFilterRow());
2996
+ }
2997
+ const row = current.Rows[0];
2998
+ const clause = row.ClausesByPropertyName.get(property) ?? {
2999
+ PropertyName: property,
3000
+ Operator: FilterOperator.Contains,
3001
+ FilterValue: void 0
3002
+ };
3003
+ clause.FilterValues = values.length ? [...values] : void 0;
3004
+ row.ClausesByPropertyName.set(property, clause);
3005
+ this.additionalQuery$.next(current);
3006
+ this.applyAdditionalQuery();
2972
3007
  }
2973
3008
  setAggregateClause(aggregationRequest) {
2974
3009
  this.setFilter({ AggregateClause: aggregationRequest });
@@ -9502,6 +9537,10 @@ var PageTabService = class PageTabService {
9502
9537
  this.router.navigateByUrl(tab.url);
9503
9538
  }
9504
9539
  close(tab) {
9540
+ if (tab.parentUrl && !this.tabs.some((t) => t.id !== tab.id && t.path === PageTabService.pathOf(tab.parentUrl))) {
9541
+ this.backToParent(tab);
9542
+ return;
9543
+ }
9505
9544
  const tabs = this.tabs;
9506
9545
  const index = tabs.findIndex((t) => t.id === tab.id);
9507
9546
  if (index < 0) return;
@@ -9517,6 +9556,21 @@ var PageTabService = class PageTabService {
9517
9556
  this.router.navigateByUrl(neighbour.url);
9518
9557
  } else this.router.navigateByUrl("/");
9519
9558
  }
9559
+ backToParent(tab) {
9560
+ const parentUrl = tab.parentUrl;
9561
+ if (tab.id === this.activeId) {
9562
+ this.router.navigateByUrl(parentUrl);
9563
+ return;
9564
+ }
9565
+ this.destroyHandle(tab.id);
9566
+ const parent = {
9567
+ id: tab.id,
9568
+ path: PageTabService.pathOf(parentUrl),
9569
+ url: parentUrl,
9570
+ title: tab.parentTitle || this.titleOf(PageTabService.pathOf(parentUrl))
9571
+ };
9572
+ this.tabs$.next(this.tabs.map((t) => t.id === tab.id ? parent : t));
9573
+ }
9520
9574
  move(id, position) {
9521
9575
  const tabs = [...this.tabs];
9522
9576
  const from = tabs.findIndex((t) => t.id === id);
@@ -9542,7 +9596,11 @@ var PageTabService = class PageTabService {
9542
9596
  id: this.nextId++,
9543
9597
  path: t.path,
9544
9598
  url: t.url || t.path,
9545
- title: t.title || t.path
9599
+ title: t.title || t.path,
9600
+ ...t.parentUrl ? {
9601
+ parentUrl: t.parentUrl,
9602
+ parentTitle: t.parentTitle
9603
+ } : {}
9546
9604
  }));
9547
9605
  if (tabs.length > 0) this.tabs$.next(tabs);
9548
9606
  }
@@ -9551,7 +9609,9 @@ var PageTabService = class PageTabService {
9551
9609
  localStorage.setItem(PageTabService.storageKey, JSON.stringify(tabs.map((t) => ({
9552
9610
  path: t.path,
9553
9611
  url: t.url,
9554
- title: t.title
9612
+ title: t.title,
9613
+ parentUrl: t.parentUrl,
9614
+ parentTitle: t.parentTitle
9555
9615
  }))));
9556
9616
  } catch {}
9557
9617
  }
@@ -9635,16 +9695,22 @@ var PageTabService = class PageTabService {
9635
9695
  id: this.toId ?? this.nextId++,
9636
9696
  path,
9637
9697
  url,
9638
- title: menuTitle || this.titleOf(path)
9698
+ ...this.titlesOf(path, menuTitle)
9639
9699
  };
9640
9700
  tabs.push(tab);
9641
- } else {
9642
- const changedPath = tab.path !== path;
9701
+ } else if (tab.path !== path) {
9702
+ const { parentUrl, parentTitle, ...previous } = tab;
9643
9703
  tab = {
9644
- ...tab,
9704
+ ...previous,
9645
9705
  path,
9646
9706
  url,
9647
- title: changedPath ? menuTitle || this.titleOf(path) : tab.title
9707
+ ...this.titlesOf(path, menuTitle, tab)
9708
+ };
9709
+ tabs[tabs.findIndex((t) => t.id === tab.id)] = tab;
9710
+ } else {
9711
+ tab = {
9712
+ ...tab,
9713
+ url
9648
9714
  };
9649
9715
  tabs[tabs.findIndex((t) => t.id === tab.id)] = tab;
9650
9716
  }
@@ -9665,6 +9731,29 @@ var PageTabService = class PageTabService {
9665
9731
  if (handle?.componentRef) handle.componentRef.destroy();
9666
9732
  this.handles.delete(id);
9667
9733
  }
9734
+ titlesOf(path, menuTitle, previous) {
9735
+ const detail = menuTitle ? null : PageTabService.detailOf(path);
9736
+ if (!detail) return { title: menuTitle || this.titleOf(path) };
9737
+ const fromList = previous?.path === detail.parentPath;
9738
+ const parentTitle = fromList ? previous.title : this.titleOf(detail.parentPath);
9739
+ return {
9740
+ title: PageTabService.detailTitle(parentTitle, detail.id),
9741
+ parentUrl: fromList ? previous.url : detail.parentPath,
9742
+ parentTitle
9743
+ };
9744
+ }
9745
+ static detailOf(path) {
9746
+ const segments = PageTabService.pathOf(path).split("/").filter((s) => s);
9747
+ const last = segments[segments.length - 1];
9748
+ if (segments.length < 2 || !/^-?\d+$/.test(last ?? "")) return null;
9749
+ return {
9750
+ parentPath: "/" + segments.slice(0, -1).join("/"),
9751
+ id: Number(last)
9752
+ };
9753
+ }
9754
+ static detailTitle(parentTitle, id) {
9755
+ return `${parentTitle} (${id > 0 ? id : "nouveau"})`;
9756
+ }
9668
9757
  titleOf(path) {
9669
9758
  if (path === "" || path === "/") return "Accueil";
9670
9759
  const item = PageTabService.findMenuItem(this.menuItems, path);
@@ -10041,6 +10130,9 @@ var PageTabsComponent = class PageTabsComponent {
10041
10130
  this.menuOpen = false;
10042
10131
  this.pageTabs.activate(tab);
10043
10132
  }
10133
+ closeTitle(tab) {
10134
+ return tab.parentUrl ? `Revenir à « ${tab.parentTitle} »` : "Fermer l'onglet";
10135
+ }
10044
10136
  onClose(tab, event) {
10045
10137
  event.stopPropagation();
10046
10138
  this.pageTabs.close(tab);
@@ -10147,7 +10239,7 @@ var PageTabsComponent = class PageTabsComponent {
10147
10239
  descendants: true
10148
10240
  }],
10149
10241
  ngImport: i0,
10150
- template: "<!-- Onglets des écrans ouverts : clic pour afficher, croix ou clic du milieu pour fermer, glisser-déposer pour déplacer.\r\n Les onglets qui ne tiennent pas dans la barre sont masqués et listés dans un menu déroulant. -->\r\n<div #frame class=\"page-tabs-frame\" [class.narrow]=\"narrow\">\r\n <div #strip class=\"page-tabs\" role=\"tablist\" aria-label=\"Ecrans ouverts\">\r\n @for (tab of pageTabs.tabs$ | async; track tab.id; let index = $index) {\r\n <div class=\"page-tab\" role=\"tab\" tabindex=\"0\" draggable=\"true\"\r\n [attr.data-tab-id]=\"tab.id\"\r\n [attr.aria-hidden]=\"isHidden(tab) ? true : null\"\r\n [class.hidden-tab]=\"isHidden(tab)\"\r\n [class.active]=\"tab.id === pageTabs.activeId\"\r\n [class.dragging]=\"tab.id === draggedId\"\r\n [class.drop-before]=\"dropIndex === index && dropBefore && !isDragged(index)\"\r\n [class.drop-after]=\"dropIndex === index && !dropBefore && !isDragged(index)\"\r\n [attr.aria-selected]=\"tab.id === pageTabs.activeId\"\r\n [title]=\"tab.title\"\r\n (click)=\"onSelect(tab)\"\r\n (keydown.enter)=\"onSelect(tab)\"\r\n (auxclick)=\"onAuxClick(tab, $event)\"\r\n (dragstart)=\"onDragStart(tab, $event)\"\r\n (dragover)=\"onDragOver(index, $event)\"\r\n (drop)=\"onDrop($event)\"\r\n (dragend)=\"onDragEnd()\">\r\n <span class=\"page-tab-title\">{{ tab.title }}</span>\r\n <button type=\"button\" class=\"page-tab-close\" title=\"Fermer l'onglet\" aria-label=\"Fermer l'onglet\"\r\n draggable=\"false\" (click)=\"onClose(tab, $event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (hiddenIds.size > 0) {\r\n <div class=\"page-tabs-more\">\r\n <button type=\"button\" class=\"page-tabs-more-button\" [class.open]=\"menuOpen\"\r\n [title]=\"narrow ? 'Écrans ouverts' : hiddenIds.size + ' onglet(s) masqué(s)'\" aria-haspopup=\"menu\" [attr.aria-expanded]=\"menuOpen\"\r\n (click)=\"toggleMenu($event)\">\r\n <i class=\"fa fa-chevron-down\"></i>\r\n </button>\r\n @if (menuOpen) {\r\n <ul class=\"page-tabs-menu\" role=\"menu\">\r\n @for (tab of hiddenTabs; track tab.id) {\r\n <li class=\"page-tabs-menu-item\" role=\"menuitem\" tabindex=\"0\"\r\n [class.active]=\"tab.id === pageTabs.activeId\"\r\n (click)=\"onSelect(tab)\" (keydown.enter)=\"onSelect(tab)\">\r\n <span class=\"page-tab-title\">{{ tab.title }}</span>\r\n <button type=\"button\" class=\"page-tab-close\" title=\"Fermer l'onglet\" aria-label=\"Fermer l'onglet\"\r\n (click)=\"onClose(tab, $event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n</div>\r\n",
10242
+ template: "<!-- Onglets des écrans ouverts : clic pour afficher, croix ou clic du milieu pour fermer, glisser-déposer pour déplacer.\r\n Les onglets qui ne tiennent pas dans la barre sont masqués et listés dans un menu déroulant. -->\r\n<div #frame class=\"page-tabs-frame\" [class.narrow]=\"narrow\">\r\n <div #strip class=\"page-tabs\" role=\"tablist\" aria-label=\"Ecrans ouverts\">\r\n @for (tab of pageTabs.tabs$ | async; track tab.id; let index = $index) {\r\n <div class=\"page-tab\" role=\"tab\" tabindex=\"0\" draggable=\"true\"\r\n [attr.data-tab-id]=\"tab.id\"\r\n [attr.aria-hidden]=\"isHidden(tab) ? true : null\"\r\n [class.hidden-tab]=\"isHidden(tab)\"\r\n [class.active]=\"tab.id === pageTabs.activeId\"\r\n [class.dragging]=\"tab.id === draggedId\"\r\n [class.drop-before]=\"dropIndex === index && dropBefore && !isDragged(index)\"\r\n [class.drop-after]=\"dropIndex === index && !dropBefore && !isDragged(index)\"\r\n [attr.aria-selected]=\"tab.id === pageTabs.activeId\"\r\n [title]=\"tab.title\"\r\n (click)=\"onSelect(tab)\"\r\n (keydown.enter)=\"onSelect(tab)\"\r\n (auxclick)=\"onAuxClick(tab, $event)\"\r\n (dragstart)=\"onDragStart(tab, $event)\"\r\n (dragover)=\"onDragOver(index, $event)\"\r\n (drop)=\"onDrop($event)\"\r\n (dragend)=\"onDragEnd()\">\r\n <span class=\"page-tab-title\">{{ tab.title }}</span>\r\n <button type=\"button\" class=\"page-tab-close\" [title]=\"closeTitle(tab)\" [attr.aria-label]=\"closeTitle(tab)\"\r\n draggable=\"false\" (click)=\"onClose(tab, $event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (hiddenIds.size > 0) {\r\n <div class=\"page-tabs-more\">\r\n <button type=\"button\" class=\"page-tabs-more-button\" [class.open]=\"menuOpen\"\r\n [title]=\"narrow ? 'Écrans ouverts' : hiddenIds.size + ' onglet(s) masqué(s)'\" aria-haspopup=\"menu\" [attr.aria-expanded]=\"menuOpen\"\r\n (click)=\"toggleMenu($event)\">\r\n <i class=\"fa fa-chevron-down\"></i>\r\n </button>\r\n @if (menuOpen) {\r\n <ul class=\"page-tabs-menu\" role=\"menu\">\r\n @for (tab of hiddenTabs; track tab.id) {\r\n <li class=\"page-tabs-menu-item\" role=\"menuitem\" tabindex=\"0\"\r\n [class.active]=\"tab.id === pageTabs.activeId\"\r\n (click)=\"onSelect(tab)\" (keydown.enter)=\"onSelect(tab)\">\r\n <span class=\"page-tab-title\">{{ tab.title }}</span>\r\n <button type=\"button\" class=\"page-tab-close\" [title]=\"closeTitle(tab)\" [attr.aria-label]=\"closeTitle(tab)\"\r\n (click)=\"onClose(tab, $event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n</div>\r\n",
10151
10243
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{display:block;flex:1 1 0;min-width:0;height:50px;margin-left:16px}.page-tabs-frame{display:flex;align-items:center;height:100%}.page-tabs{position:relative;flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:2px;height:100%;overflow:hidden}.page-tab{position:relative;display:flex;align-items:center;gap:6px;flex-shrink:0;min-width:90px;max-width:220px;height:30px;padding:0 6px 0 30px;border-radius:5px;color:#fff;font-size:12.5px;cursor:pointer;-webkit-user-select:none;user-select:none}.page-tab:hover{background:#5272d3}.page-tab:focus-visible{outline:2px solid #ffffff;outline-offset:-2px}.page-tab.active{background:#6684e0;font-weight:600}.page-tab.hidden-tab{position:absolute;left:0;top:0;visibility:hidden;pointer-events:none}.page-tab:hover .page-tab-close,.page-tab:focus-visible .page-tab-close{visibility:visible}.page-tab.dragging{opacity:.5}.page-tab.drop-before:before,.page-tab.drop-after:after{content:\"\";position:absolute;top:4px;bottom:4px;width:3px;border-radius:2px;background:#ffd54f}.page-tab.drop-before:before{left:-3px}.page-tab.drop-after:after{right:-3px}.page-tab-title{flex:1 1 auto;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.page-tab-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;padding:0;border:0;border-radius:3px;background:none;color:inherit;font-size:11px;opacity:.7;visibility:hidden;cursor:pointer}.page-tab-close:hover{opacity:1;background:#fff3}.page-tabs-more{position:relative;flex-shrink:0;margin:0 8px 0 12px}.page-tabs-more-button{display:flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:0;border-radius:5px;background:#6684e0;color:#fff;font-size:12px;cursor:pointer}.page-tabs-more-button i{display:block;line-height:1;transform:translateY(-1px)}.page-tabs-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:3000;min-width:200px;max-width:320px;max-height:60vh;margin:0;padding:4px 0;overflow-y:auto;list-style:none;background:#4465c9;border-radius:5px;box-shadow:0 4px 14px #0003}.page-tabs-menu-item{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;color:#fff;font-size:12.5px;cursor:pointer}.page-tabs-menu-item .page-tab-title{text-align:left}.page-tabs-menu-item .page-tab-close{color:#fff}.page-tabs-menu-item:hover,.page-tabs-menu-item:focus-visible{background:#5272d3;outline:none}.page-tabs-menu-item:hover .page-tab-close,.page-tabs-menu-item:focus-visible .page-tab-close{visibility:visible}.page-tabs-frame.narrow{justify-content:flex-end}.page-tabs-frame.narrow .page-tabs{flex:0 0 0;overflow:hidden}.page-tabs-menu-item.active .page-tab-title{font-weight:600}\n"],
10152
10244
  dependencies: [{
10153
10245
  kind: "pipe",
@@ -10169,7 +10261,7 @@ i0.ɵɵngDeclareClassMetadata({
10169
10261
  selector: "alg-page-tabs",
10170
10262
  changeDetection: ChangeDetectionStrategy.Eager,
10171
10263
  standalone: false,
10172
- template: "<!-- Onglets des écrans ouverts : clic pour afficher, croix ou clic du milieu pour fermer, glisser-déposer pour déplacer.\r\n Les onglets qui ne tiennent pas dans la barre sont masqués et listés dans un menu déroulant. -->\r\n<div #frame class=\"page-tabs-frame\" [class.narrow]=\"narrow\">\r\n <div #strip class=\"page-tabs\" role=\"tablist\" aria-label=\"Ecrans ouverts\">\r\n @for (tab of pageTabs.tabs$ | async; track tab.id; let index = $index) {\r\n <div class=\"page-tab\" role=\"tab\" tabindex=\"0\" draggable=\"true\"\r\n [attr.data-tab-id]=\"tab.id\"\r\n [attr.aria-hidden]=\"isHidden(tab) ? true : null\"\r\n [class.hidden-tab]=\"isHidden(tab)\"\r\n [class.active]=\"tab.id === pageTabs.activeId\"\r\n [class.dragging]=\"tab.id === draggedId\"\r\n [class.drop-before]=\"dropIndex === index && dropBefore && !isDragged(index)\"\r\n [class.drop-after]=\"dropIndex === index && !dropBefore && !isDragged(index)\"\r\n [attr.aria-selected]=\"tab.id === pageTabs.activeId\"\r\n [title]=\"tab.title\"\r\n (click)=\"onSelect(tab)\"\r\n (keydown.enter)=\"onSelect(tab)\"\r\n (auxclick)=\"onAuxClick(tab, $event)\"\r\n (dragstart)=\"onDragStart(tab, $event)\"\r\n (dragover)=\"onDragOver(index, $event)\"\r\n (drop)=\"onDrop($event)\"\r\n (dragend)=\"onDragEnd()\">\r\n <span class=\"page-tab-title\">{{ tab.title }}</span>\r\n <button type=\"button\" class=\"page-tab-close\" title=\"Fermer l'onglet\" aria-label=\"Fermer l'onglet\"\r\n draggable=\"false\" (click)=\"onClose(tab, $event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (hiddenIds.size > 0) {\r\n <div class=\"page-tabs-more\">\r\n <button type=\"button\" class=\"page-tabs-more-button\" [class.open]=\"menuOpen\"\r\n [title]=\"narrow ? 'Écrans ouverts' : hiddenIds.size + ' onglet(s) masqué(s)'\" aria-haspopup=\"menu\" [attr.aria-expanded]=\"menuOpen\"\r\n (click)=\"toggleMenu($event)\">\r\n <i class=\"fa fa-chevron-down\"></i>\r\n </button>\r\n @if (menuOpen) {\r\n <ul class=\"page-tabs-menu\" role=\"menu\">\r\n @for (tab of hiddenTabs; track tab.id) {\r\n <li class=\"page-tabs-menu-item\" role=\"menuitem\" tabindex=\"0\"\r\n [class.active]=\"tab.id === pageTabs.activeId\"\r\n (click)=\"onSelect(tab)\" (keydown.enter)=\"onSelect(tab)\">\r\n <span class=\"page-tab-title\">{{ tab.title }}</span>\r\n <button type=\"button\" class=\"page-tab-close\" title=\"Fermer l'onglet\" aria-label=\"Fermer l'onglet\"\r\n (click)=\"onClose(tab, $event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n</div>\r\n",
10264
+ template: "<!-- Onglets des écrans ouverts : clic pour afficher, croix ou clic du milieu pour fermer, glisser-déposer pour déplacer.\r\n Les onglets qui ne tiennent pas dans la barre sont masqués et listés dans un menu déroulant. -->\r\n<div #frame class=\"page-tabs-frame\" [class.narrow]=\"narrow\">\r\n <div #strip class=\"page-tabs\" role=\"tablist\" aria-label=\"Ecrans ouverts\">\r\n @for (tab of pageTabs.tabs$ | async; track tab.id; let index = $index) {\r\n <div class=\"page-tab\" role=\"tab\" tabindex=\"0\" draggable=\"true\"\r\n [attr.data-tab-id]=\"tab.id\"\r\n [attr.aria-hidden]=\"isHidden(tab) ? true : null\"\r\n [class.hidden-tab]=\"isHidden(tab)\"\r\n [class.active]=\"tab.id === pageTabs.activeId\"\r\n [class.dragging]=\"tab.id === draggedId\"\r\n [class.drop-before]=\"dropIndex === index && dropBefore && !isDragged(index)\"\r\n [class.drop-after]=\"dropIndex === index && !dropBefore && !isDragged(index)\"\r\n [attr.aria-selected]=\"tab.id === pageTabs.activeId\"\r\n [title]=\"tab.title\"\r\n (click)=\"onSelect(tab)\"\r\n (keydown.enter)=\"onSelect(tab)\"\r\n (auxclick)=\"onAuxClick(tab, $event)\"\r\n (dragstart)=\"onDragStart(tab, $event)\"\r\n (dragover)=\"onDragOver(index, $event)\"\r\n (drop)=\"onDrop($event)\"\r\n (dragend)=\"onDragEnd()\">\r\n <span class=\"page-tab-title\">{{ tab.title }}</span>\r\n <button type=\"button\" class=\"page-tab-close\" [title]=\"closeTitle(tab)\" [attr.aria-label]=\"closeTitle(tab)\"\r\n draggable=\"false\" (click)=\"onClose(tab, $event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (hiddenIds.size > 0) {\r\n <div class=\"page-tabs-more\">\r\n <button type=\"button\" class=\"page-tabs-more-button\" [class.open]=\"menuOpen\"\r\n [title]=\"narrow ? 'Écrans ouverts' : hiddenIds.size + ' onglet(s) masqué(s)'\" aria-haspopup=\"menu\" [attr.aria-expanded]=\"menuOpen\"\r\n (click)=\"toggleMenu($event)\">\r\n <i class=\"fa fa-chevron-down\"></i>\r\n </button>\r\n @if (menuOpen) {\r\n <ul class=\"page-tabs-menu\" role=\"menu\">\r\n @for (tab of hiddenTabs; track tab.id) {\r\n <li class=\"page-tabs-menu-item\" role=\"menuitem\" tabindex=\"0\"\r\n [class.active]=\"tab.id === pageTabs.activeId\"\r\n (click)=\"onSelect(tab)\" (keydown.enter)=\"onSelect(tab)\">\r\n <span class=\"page-tab-title\">{{ tab.title }}</span>\r\n <button type=\"button\" class=\"page-tab-close\" [title]=\"closeTitle(tab)\" [attr.aria-label]=\"closeTitle(tab)\"\r\n (click)=\"onClose(tab, $event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n</div>\r\n",
10173
10265
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{display:block;flex:1 1 0;min-width:0;height:50px;margin-left:16px}.page-tabs-frame{display:flex;align-items:center;height:100%}.page-tabs{position:relative;flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:2px;height:100%;overflow:hidden}.page-tab{position:relative;display:flex;align-items:center;gap:6px;flex-shrink:0;min-width:90px;max-width:220px;height:30px;padding:0 6px 0 30px;border-radius:5px;color:#fff;font-size:12.5px;cursor:pointer;-webkit-user-select:none;user-select:none}.page-tab:hover{background:#5272d3}.page-tab:focus-visible{outline:2px solid #ffffff;outline-offset:-2px}.page-tab.active{background:#6684e0;font-weight:600}.page-tab.hidden-tab{position:absolute;left:0;top:0;visibility:hidden;pointer-events:none}.page-tab:hover .page-tab-close,.page-tab:focus-visible .page-tab-close{visibility:visible}.page-tab.dragging{opacity:.5}.page-tab.drop-before:before,.page-tab.drop-after:after{content:\"\";position:absolute;top:4px;bottom:4px;width:3px;border-radius:2px;background:#ffd54f}.page-tab.drop-before:before{left:-3px}.page-tab.drop-after:after{right:-3px}.page-tab-title{flex:1 1 auto;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.page-tab-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;padding:0;border:0;border-radius:3px;background:none;color:inherit;font-size:11px;opacity:.7;visibility:hidden;cursor:pointer}.page-tab-close:hover{opacity:1;background:#fff3}.page-tabs-more{position:relative;flex-shrink:0;margin:0 8px 0 12px}.page-tabs-more-button{display:flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:0;border-radius:5px;background:#6684e0;color:#fff;font-size:12px;cursor:pointer}.page-tabs-more-button i{display:block;line-height:1;transform:translateY(-1px)}.page-tabs-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:3000;min-width:200px;max-width:320px;max-height:60vh;margin:0;padding:4px 0;overflow-y:auto;list-style:none;background:#4465c9;border-radius:5px;box-shadow:0 4px 14px #0003}.page-tabs-menu-item{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;color:#fff;font-size:12.5px;cursor:pointer}.page-tabs-menu-item .page-tab-title{text-align:left}.page-tabs-menu-item .page-tab-close{color:#fff}.page-tabs-menu-item:hover,.page-tabs-menu-item:focus-visible{background:#5272d3;outline:none}.page-tabs-menu-item:hover .page-tab-close,.page-tabs-menu-item:focus-visible .page-tab-close{visibility:visible}.page-tabs-frame.narrow{justify-content:flex-end}.page-tabs-frame.narrow .page-tabs{flex:0 0 0;overflow:hidden}.page-tabs-menu-item.active .page-tab-title{font-weight:600}\n"]
10174
10266
  }]
10175
10267
  }],
@@ -15082,7 +15174,7 @@ var FieldComponent = class FieldComponent {
15082
15174
  }],
15083
15175
  ngImport: i0,
15084
15176
  template: "<div [formGroup]=\"form\" class=\"field-container\">\r\n <ng-container *ngIf=\"field\">\r\n <div [hidden]=\"!!field.IsHidden\" [ngSwitch]=\"field.FilterType\">\r\n <div class=\"label-group\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"field.FilterType != filterType.CheckBox &&\r\n field.FilterType != filterType.HorizComboBox\"\r\n [htmlFor]=\"field.PropertyName\">\r\n {{ field.Label }}\r\n </label>\r\n <img *ngIf=\"field.Required\"\r\n class=\"required-icon\"\r\n [src]=\"this.getRequiredIcon()\"\r\n alt=\"obligatoire\"\r\n />\r\n </div>\r\n\r\n <!--String Input-->\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControl]=\"this.control\"\r\n [id]=\"field.PropertyName\"\r\n [type]=\"field.InputType\"\r\n (change)=\"this.onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n focusable\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Number Input-->\r\n <div *ngSwitchCase=\"filterType.Integer\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControl]=\"this.control\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"number\"\r\n focusable\r\n />\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"filterType.Decimal\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"text\"\r\n inputmode=\"decimal\"\r\n algDecimalInput\r\n />\r\n </div>\r\n </div>\r\n <!--ComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n (change)=\"onValueChanged($event)\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!-- InputSelect -->\r\n <!-- <div *ngSwitchCase=\"this.filterType.Custom\" class=\"form-group input\">\r\n <alg-input-selector #inputSelector\r\n type=\"text\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"this.field.ModalPropertyValue\"\r\n [modalPropertyName]=\"this.field.ModalPropertyName\"\r\n [modalEntityKey]=\"this.field.ModalEntityKey\"\r\n [modalTitle]=\"this.field.ModalTitle\"\r\n [readonly]=\"this.field.ReadOnly\">\r\n </alg-input-selector>\r\n </div> -->\r\n\r\n <!-- InputSelector with button -->\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n <!-- <alg-selector\r\n #inputSelector\r\n type=\"text\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"field.ModalPropertyValue\"\r\n [modalPropertyName]=\"field.ModalPropertyName\"\r\n [modalEntityKey]=\"field.ModalEntityKey\"\r\n [modalTitle]=\"field.ModalTitle\">\r\n </alg-selector> -->\r\n\r\n <!-- *ngSwitchCase=\"filterType.Custom\" -->\r\n <ng-container *ngIf=\"field.ModalOnly\">\r\n <div class=\"pull-left input-select-default with-button\">\r\n <input\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n />\r\n </div> \r\n </ng-container>\r\n\r\n <alg-selector\r\n [field]=\"field\"\r\n [control]=\"this.control\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n \r\n >\r\n <!-- [control]=\"this.form.controls[field.PropertyName]\" -->\r\n </alg-selector>\r\n\r\n </ng-container>\r\n\r\n <!-- TreeSelector -->\r\n <ng-container *ngSwitchCase=\"this.filterType.TreeSelector\">\r\n <alg-input-tree-selector\r\n [items]=\"field.Data\"\r\n [id]=\"field.PropertyName\"\r\n [bindValue]=\"field.ValueMember\"\r\n [bindLabel]=\"field.DisplayMember\"\r\n childrenKey=\"children\"\r\n countKey=\"childrenCount\"\r\n [formControlName]=\"field.PropertyName\"\r\n placeholder=\"{{ field.Label }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </alg-input-tree-selector>\r\n </ng-container>\r\n\r\n <!-- TextWithbutton -->\r\n <ng-container\r\n *ngSwitchCase=\"this.filterType.TextWithButton\"\r\n class=\"form-group\"\r\n >\r\n <div class=\"input-with-button\">\r\n\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n (change)=\"onValueChanged($event)\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n />\r\n\r\n <button\r\n class=\"btn btn-secondary btn-32 btn-input-select\"\r\n (click)=\"onClick(field)\"\r\n >\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <!--HorizComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.HorizComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n class=\"horiz-combox-box\"\r\n placeholder=\"{{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!--Boolean Input-->\r\n <div *ngSwitchCase=\"filterType.CheckBox\" class=\"form-group\">\r\n <div class=\"checkbox-container\">\r\n <label class=\"switch\" [htmlFor]=\"field.PropertyName\">\r\n <input\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n type=\"checkbox\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <span class=\"slider round\"></span>\r\n </label>\r\n <span class=\"checkbox-label\">{{ field.Label }}</span>\r\n </div>\r\n </div>\r\n\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group\">\r\n <div class=\"radio-button-container\">\r\n <form [formGroup]=\"form\" class=\"radio-buttons\">\r\n <div\r\n *ngFor=\"let data of field.Data;let indexOfData = index\" class=\"radio-button\">\r\n <input\r\n type=\"radio\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"getRadioButtonId(field.PropertyName,indexOfData)\"\r\n [value]=\"indexOfData\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <label class=\"radio-button-label\">{{ data }}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Text zone with button -->\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\"\r\n class=\"form-group\">\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea\r\n #textarea\r\n type=\"text\"\r\n class=\"text-area\"\r\n spellcheck=\"false\"\r\n [formControlName]=\"field.ValueMember\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </textarea>\r\n </div>\r\n <div class=\"feedback-and-button\">\r\n <div class=\"feedback\">\r\n <div class=\"feedback-green\" *ngIf=\"field.TextWithStyle.GreenText.length > 0\">\r\n {{ field.TextWithStyle.GreenText }}\r\n </div>\r\n <div class=\"feedback-yellow\" *ngIf=\"field.TextWithStyle.YellowText.length > 0\">\r\n {{ field.TextWithStyle.YellowText }}\r\n </div>\r\n <div class=\"feedback-red\" *ngIf=\"field.TextWithStyle.RedText.length > 0\">\r\n {{ field.TextWithStyle.RedText }}\r\n </div>\r\n </div>\r\n <button\r\n type=\"button\"\r\n id=\"botton-compile\"\r\n class=\"btn btn-primary btn-flat pull-right button\"\r\n (click)=\"onClick(field)\"\r\n >\r\n {{ field.ButtonLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Date -->\r\n <div *ngSwitchCase=\"filterType.Date\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"text\"\r\n [class]=\"this.inputClass\"\r\n placeholder=\"Sélectionner une date\"\r\n [id]=\"field.PropertyName\"\r\n [bsConfig]=\"bsConfig\"\r\n [bsValue]=\"dateValue\"\r\n (bsValueChange)=\"onBsValueChanged($event)\"\r\n [disabled]=\"this.readonly || field.ReadOnly\"\r\n algDatepicker\r\n />\r\n </div>\r\n </div>\r\n <!--DateTime -->\r\n <div *ngSwitchCase=\"filterType.DateTime\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"datetime-local\"\r\n [class]=\"this.inputClass\"\r\n [id]=\"field.PropertyName\"\r\n [value]=\"dateTimeLocalValue\"\r\n [disabled]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onDateTimeLocalChanged($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.Text\" class=\"form-group\">\r\n <div>\r\n <textarea\r\n type=\"text\"\r\n rows=\"5\"\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n >\r\n </textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- DropFileZone -->\r\n <div\r\n *ngSwitchCase=\"filterType.DropFileZone\"\r\n class=\"form-group ml-4\"\r\n >\r\n <fieldset>\r\n <input\r\n [id]=\"field.PropertyName\"\r\n type=\"file\"\r\n class=\"ml--3\"\r\n (change)=\"fileEvent($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n\r\n <!-- Password -->\r\n <div *ngSwitchCase=\"filterType.Password\" class=\"form-group\">\r\n <div class=\"input-with-button\">\r\n <input\r\n class=\"form-control\"\r\n [type]=\"hidePassword ? 'password' : 'text'\"\r\n [formControl]=\"control\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n autocomplete=\"new-password\"\r\n />\r\n <!-- btn-32 pull-right button -->\r\n <button class=\"btn btn-secondary btn-32 btn-input-select\" (click)=\"showPassword()\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"this.showValidationErrors()\">\r\n <div class=\"validation-message\">\r\n {{ this.getValidationErrors() }}\r\n </div>\r\n <!-- <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('required')\">\r\n Ce champ est obligatoire\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('min')\">\r\n Minimum: {{field.FieldValidators.MinValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('max')\">\r\n Maximum: {{field.FieldValidators.MaxValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('maxLength')\">\r\n Longueur maximale: {{field.FieldValidators.MaxLength}} caractères\r\n </ng-container> -->\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</div>\r\n",
15085
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{width:100%}.input-select-default{width:100%}.input-select-default.with-button{padding-right:35px;margin-right:-32px}.btn-input-select{padding:6px 10px 8px 8px;border-top-right-radius:0;border-bottom-right-radius:0;width:32px;border-color:#adb5bd}.form-group{display:flex;flex-direction:column}.field-container{margin-bottom:5px}.comboBox-icon-and-text{display:inline-block}.comboBox-icon{margin-right:5px;margin-bottom:5px}.comboBox-text{padding-right:10px}.checkbox-label{margin-left:5px;margin-top:5px;flex:1}.checkbox-input{width:17px;height:17px}.radio-button-container{border:1px solid #cbc8d0;border-radius:5px;width:100%;margin-top:5px;padding-top:12px;display:flex;flex-direction:row;flex-wrap:wrap}.under-line{margin:3px 10px 5px}.radio-buttons{margin:0;display:flex;flex-direction:column}.radio-button{margin-right:20px}.radio-buttons input{margin-right:0;margin-left:10px;margin-top:0;height:18px;width:18px;min-height:18px;flex-grow:0}.radio-button-label{margin-right:10px;margin-bottom:12px;margin-left:5px;vertical-align:middle}.text-zone-and-button{width:100%;display:flex;flex-direction:column}.text-area{background-color:#343a40;border-radius:5px;color:#e6e65f;caret-color:#ff0;font-family:monospace;font-weight:700;font-size:large;width:100%;height:200px;padding:10px;cursor:text}.feedback-and-button,.input-with-button{display:flex;flex-direction:row;width:100%}.input-with-button input{margin-right:3px}.button{margin-right:0;margin-top:5px;float:right}.feedback{width:100%;float:left;padding-left:10px}.feedback-green{float:left;width:90%;color:green;font-weight:700}.feedback-yellow{float:left;width:90%;color:orange;font-weight:700}.feedback-red{float:left;width:90%;color:var(--red-error);font-weight:700}.errorMessage{display:block;color:var(--red-error);width:100%}.validation-message{color:#a94442!important;display:inline-block;font-size:small;margin:3px}::ng-deep .ng-select.horiz-combox-box{height:30px;width:230px}::ng-deep .ng-select.horiz-combox-box .ng-select-container{height:30px;width:230px}.ng-select.horiz-combox-box ::ng-deep .ng-select-container .ng-placeholder{color:#3e4152}.input alg-input-selector{width:73.6%;margin:.75rem 0 .75rem .95rem}.ml-15px{margin-left:15px;margin-top:.4em}.textButton{margin-top:.4em;padding-bottom:.4em;margin-right:.8rem}fieldset input.ml--3{margin-left:-3%!important}.label-group{color:var(--main-bg-color)}.label-group span{padding-top:5px;display:inline-block;margin-right:5px}.label-group .required-icon{height:8px;margin:-6px 0 5px 5px;filter:invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}.checkbox-container{display:flex;flex-direction:row;align-items:center}.switch{position:relative;display:inline-block;width:48px;height:26px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#2196f3}input:focus+.slider{box-shadow:0 0 1px #2196f3}input:checked+.slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translate(22px)}.slider.round{border-radius:25px}.slider.round:before{border-radius:50%}\n"],
15177
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{width:100%}.input-select-default{width:100%}.input-select-default.with-button{padding-right:35px;margin-right:-32px}.btn-input-select{padding:6px 10px 8px 8px;border-top-right-radius:0;border-bottom-right-radius:0;width:32px;border-color:#adb5bd}.form-group{display:flex;flex-direction:column}.field-container{margin-bottom:5px}.comboBox-icon-and-text{display:inline-block}.comboBox-icon{margin-right:5px;margin-bottom:5px}.comboBox-text{padding-right:10px}.checkbox-label{margin-left:5px;margin-top:5px;flex:1}.checkbox-input{width:17px;height:17px}.radio-button-container{border:1px solid #cbc8d0;border-radius:5px;width:100%;margin-top:5px;padding-top:12px;display:flex;flex-direction:row;flex-wrap:wrap}.under-line{margin:3px 10px 5px}.radio-buttons{margin:0;display:flex;flex-direction:column}.radio-button{margin-right:20px}.radio-buttons input{margin-right:0;margin-left:10px;margin-top:0;height:18px;width:18px;min-height:18px;flex-grow:0}.radio-button-label{margin-right:10px;margin-bottom:12px;margin-left:5px;vertical-align:middle}.text-zone-and-button{width:100%;display:flex;flex-direction:column}.text-area{background-color:#343a40;border-radius:5px;color:#e6e65f;caret-color:#ff0;font-family:monospace;font-weight:700;font-size:large;width:100%;height:200px;padding:10px;cursor:text}.feedback-and-button,.input-with-button{display:flex;flex-direction:row;width:100%}.input-with-button input{margin-right:3px}.button{margin-right:0;margin-top:5px;float:right}.feedback{width:100%;float:left;padding-left:10px}.feedback-green{float:left;width:90%;color:green;font-weight:700}.feedback-yellow{float:left;width:90%;color:orange;font-weight:700}.feedback-red{float:left;width:90%;color:var(--red-error);font-weight:700}.errorMessage{display:block;color:var(--red-error);width:100%}.validation-message{color:#a94442!important;display:inline-block;font-size:small;margin:3px}::ng-deep .ng-select.horiz-combox-box{height:30px;width:230px}::ng-deep .ng-select.horiz-combox-box .ng-select-container{height:30px;width:230px}.ng-select.horiz-combox-box ::ng-deep .ng-select-container .ng-placeholder{color:#3e4152}.input alg-input-selector{width:73.6%;margin:.75rem 0 .75rem .95rem}.ml-15px{margin-left:15px;margin-top:.4em}.textButton{margin-top:.4em;padding-bottom:.4em;margin-right:.8rem}fieldset input.ml--3{margin-left:-3%!important}.label-group{color:var(--main-bg-color)}.label-group span{padding-top:5px;display:inline-block;margin-right:5px}.label-group .required-icon{height:8px;margin:-6px 0 5px 5px;filter:invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}.checkbox-container{display:flex;flex-direction:row;align-items:center}.switch{position:relative;display:inline-block;width:48px;height:26px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#4465c9}input:focus+.slider{box-shadow:0 0 1px #4465c9}input:checked+.slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translate(22px)}.slider.round{border-radius:25px}.slider.round:before{border-radius:50%}\n"],
15086
15178
  dependencies: [
15087
15179
  {
15088
15180
  kind: "directive",
@@ -15337,7 +15429,7 @@ i0.ɵɵngDeclareClassMetadata({
15337
15429
  changeDetection: ChangeDetectionStrategy.Eager,
15338
15430
  standalone: false,
15339
15431
  template: "<div [formGroup]=\"form\" class=\"field-container\">\r\n <ng-container *ngIf=\"field\">\r\n <div [hidden]=\"!!field.IsHidden\" [ngSwitch]=\"field.FilterType\">\r\n <div class=\"label-group\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"field.FilterType != filterType.CheckBox &&\r\n field.FilterType != filterType.HorizComboBox\"\r\n [htmlFor]=\"field.PropertyName\">\r\n {{ field.Label }}\r\n </label>\r\n <img *ngIf=\"field.Required\"\r\n class=\"required-icon\"\r\n [src]=\"this.getRequiredIcon()\"\r\n alt=\"obligatoire\"\r\n />\r\n </div>\r\n\r\n <!--String Input-->\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControl]=\"this.control\"\r\n [id]=\"field.PropertyName\"\r\n [type]=\"field.InputType\"\r\n (change)=\"this.onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n focusable\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Number Input-->\r\n <div *ngSwitchCase=\"filterType.Integer\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControl]=\"this.control\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"number\"\r\n focusable\r\n />\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"filterType.Decimal\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"text\"\r\n inputmode=\"decimal\"\r\n algDecimalInput\r\n />\r\n </div>\r\n </div>\r\n <!--ComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n (change)=\"onValueChanged($event)\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!-- InputSelect -->\r\n <!-- <div *ngSwitchCase=\"this.filterType.Custom\" class=\"form-group input\">\r\n <alg-input-selector #inputSelector\r\n type=\"text\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"this.field.ModalPropertyValue\"\r\n [modalPropertyName]=\"this.field.ModalPropertyName\"\r\n [modalEntityKey]=\"this.field.ModalEntityKey\"\r\n [modalTitle]=\"this.field.ModalTitle\"\r\n [readonly]=\"this.field.ReadOnly\">\r\n </alg-input-selector>\r\n </div> -->\r\n\r\n <!-- InputSelector with button -->\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n <!-- <alg-selector\r\n #inputSelector\r\n type=\"text\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"field.ModalPropertyValue\"\r\n [modalPropertyName]=\"field.ModalPropertyName\"\r\n [modalEntityKey]=\"field.ModalEntityKey\"\r\n [modalTitle]=\"field.ModalTitle\">\r\n </alg-selector> -->\r\n\r\n <!-- *ngSwitchCase=\"filterType.Custom\" -->\r\n <ng-container *ngIf=\"field.ModalOnly\">\r\n <div class=\"pull-left input-select-default with-button\">\r\n <input\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n />\r\n </div> \r\n </ng-container>\r\n\r\n <alg-selector\r\n [field]=\"field\"\r\n [control]=\"this.control\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n \r\n >\r\n <!-- [control]=\"this.form.controls[field.PropertyName]\" -->\r\n </alg-selector>\r\n\r\n </ng-container>\r\n\r\n <!-- TreeSelector -->\r\n <ng-container *ngSwitchCase=\"this.filterType.TreeSelector\">\r\n <alg-input-tree-selector\r\n [items]=\"field.Data\"\r\n [id]=\"field.PropertyName\"\r\n [bindValue]=\"field.ValueMember\"\r\n [bindLabel]=\"field.DisplayMember\"\r\n childrenKey=\"children\"\r\n countKey=\"childrenCount\"\r\n [formControlName]=\"field.PropertyName\"\r\n placeholder=\"{{ field.Label }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </alg-input-tree-selector>\r\n </ng-container>\r\n\r\n <!-- TextWithbutton -->\r\n <ng-container\r\n *ngSwitchCase=\"this.filterType.TextWithButton\"\r\n class=\"form-group\"\r\n >\r\n <div class=\"input-with-button\">\r\n\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n (change)=\"onValueChanged($event)\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n />\r\n\r\n <button\r\n class=\"btn btn-secondary btn-32 btn-input-select\"\r\n (click)=\"onClick(field)\"\r\n >\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <!--HorizComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.HorizComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n class=\"horiz-combox-box\"\r\n placeholder=\"{{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!--Boolean Input-->\r\n <div *ngSwitchCase=\"filterType.CheckBox\" class=\"form-group\">\r\n <div class=\"checkbox-container\">\r\n <label class=\"switch\" [htmlFor]=\"field.PropertyName\">\r\n <input\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n type=\"checkbox\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <span class=\"slider round\"></span>\r\n </label>\r\n <span class=\"checkbox-label\">{{ field.Label }}</span>\r\n </div>\r\n </div>\r\n\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group\">\r\n <div class=\"radio-button-container\">\r\n <form [formGroup]=\"form\" class=\"radio-buttons\">\r\n <div\r\n *ngFor=\"let data of field.Data;let indexOfData = index\" class=\"radio-button\">\r\n <input\r\n type=\"radio\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"getRadioButtonId(field.PropertyName,indexOfData)\"\r\n [value]=\"indexOfData\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <label class=\"radio-button-label\">{{ data }}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Text zone with button -->\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\"\r\n class=\"form-group\">\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea\r\n #textarea\r\n type=\"text\"\r\n class=\"text-area\"\r\n spellcheck=\"false\"\r\n [formControlName]=\"field.ValueMember\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </textarea>\r\n </div>\r\n <div class=\"feedback-and-button\">\r\n <div class=\"feedback\">\r\n <div class=\"feedback-green\" *ngIf=\"field.TextWithStyle.GreenText.length > 0\">\r\n {{ field.TextWithStyle.GreenText }}\r\n </div>\r\n <div class=\"feedback-yellow\" *ngIf=\"field.TextWithStyle.YellowText.length > 0\">\r\n {{ field.TextWithStyle.YellowText }}\r\n </div>\r\n <div class=\"feedback-red\" *ngIf=\"field.TextWithStyle.RedText.length > 0\">\r\n {{ field.TextWithStyle.RedText }}\r\n </div>\r\n </div>\r\n <button\r\n type=\"button\"\r\n id=\"botton-compile\"\r\n class=\"btn btn-primary btn-flat pull-right button\"\r\n (click)=\"onClick(field)\"\r\n >\r\n {{ field.ButtonLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Date -->\r\n <div *ngSwitchCase=\"filterType.Date\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"text\"\r\n [class]=\"this.inputClass\"\r\n placeholder=\"Sélectionner une date\"\r\n [id]=\"field.PropertyName\"\r\n [bsConfig]=\"bsConfig\"\r\n [bsValue]=\"dateValue\"\r\n (bsValueChange)=\"onBsValueChanged($event)\"\r\n [disabled]=\"this.readonly || field.ReadOnly\"\r\n algDatepicker\r\n />\r\n </div>\r\n </div>\r\n <!--DateTime -->\r\n <div *ngSwitchCase=\"filterType.DateTime\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"datetime-local\"\r\n [class]=\"this.inputClass\"\r\n [id]=\"field.PropertyName\"\r\n [value]=\"dateTimeLocalValue\"\r\n [disabled]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onDateTimeLocalChanged($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.Text\" class=\"form-group\">\r\n <div>\r\n <textarea\r\n type=\"text\"\r\n rows=\"5\"\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n >\r\n </textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- DropFileZone -->\r\n <div\r\n *ngSwitchCase=\"filterType.DropFileZone\"\r\n class=\"form-group ml-4\"\r\n >\r\n <fieldset>\r\n <input\r\n [id]=\"field.PropertyName\"\r\n type=\"file\"\r\n class=\"ml--3\"\r\n (change)=\"fileEvent($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n\r\n <!-- Password -->\r\n <div *ngSwitchCase=\"filterType.Password\" class=\"form-group\">\r\n <div class=\"input-with-button\">\r\n <input\r\n class=\"form-control\"\r\n [type]=\"hidePassword ? 'password' : 'text'\"\r\n [formControl]=\"control\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"this.readonly || field.ReadOnly\"\r\n autocomplete=\"new-password\"\r\n />\r\n <!-- btn-32 pull-right button -->\r\n <button class=\"btn btn-secondary btn-32 btn-input-select\" (click)=\"showPassword()\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"this.showValidationErrors()\">\r\n <div class=\"validation-message\">\r\n {{ this.getValidationErrors() }}\r\n </div>\r\n <!-- <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('required')\">\r\n Ce champ est obligatoire\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('min')\">\r\n Minimum: {{field.FieldValidators.MinValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('max')\">\r\n Maximum: {{field.FieldValidators.MaxValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('maxLength')\">\r\n Longueur maximale: {{field.FieldValidators.MaxLength}} caractères\r\n </ng-container> -->\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</div>\r\n",
15340
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{width:100%}.input-select-default{width:100%}.input-select-default.with-button{padding-right:35px;margin-right:-32px}.btn-input-select{padding:6px 10px 8px 8px;border-top-right-radius:0;border-bottom-right-radius:0;width:32px;border-color:#adb5bd}.form-group{display:flex;flex-direction:column}.field-container{margin-bottom:5px}.comboBox-icon-and-text{display:inline-block}.comboBox-icon{margin-right:5px;margin-bottom:5px}.comboBox-text{padding-right:10px}.checkbox-label{margin-left:5px;margin-top:5px;flex:1}.checkbox-input{width:17px;height:17px}.radio-button-container{border:1px solid #cbc8d0;border-radius:5px;width:100%;margin-top:5px;padding-top:12px;display:flex;flex-direction:row;flex-wrap:wrap}.under-line{margin:3px 10px 5px}.radio-buttons{margin:0;display:flex;flex-direction:column}.radio-button{margin-right:20px}.radio-buttons input{margin-right:0;margin-left:10px;margin-top:0;height:18px;width:18px;min-height:18px;flex-grow:0}.radio-button-label{margin-right:10px;margin-bottom:12px;margin-left:5px;vertical-align:middle}.text-zone-and-button{width:100%;display:flex;flex-direction:column}.text-area{background-color:#343a40;border-radius:5px;color:#e6e65f;caret-color:#ff0;font-family:monospace;font-weight:700;font-size:large;width:100%;height:200px;padding:10px;cursor:text}.feedback-and-button,.input-with-button{display:flex;flex-direction:row;width:100%}.input-with-button input{margin-right:3px}.button{margin-right:0;margin-top:5px;float:right}.feedback{width:100%;float:left;padding-left:10px}.feedback-green{float:left;width:90%;color:green;font-weight:700}.feedback-yellow{float:left;width:90%;color:orange;font-weight:700}.feedback-red{float:left;width:90%;color:var(--red-error);font-weight:700}.errorMessage{display:block;color:var(--red-error);width:100%}.validation-message{color:#a94442!important;display:inline-block;font-size:small;margin:3px}::ng-deep .ng-select.horiz-combox-box{height:30px;width:230px}::ng-deep .ng-select.horiz-combox-box .ng-select-container{height:30px;width:230px}.ng-select.horiz-combox-box ::ng-deep .ng-select-container .ng-placeholder{color:#3e4152}.input alg-input-selector{width:73.6%;margin:.75rem 0 .75rem .95rem}.ml-15px{margin-left:15px;margin-top:.4em}.textButton{margin-top:.4em;padding-bottom:.4em;margin-right:.8rem}fieldset input.ml--3{margin-left:-3%!important}.label-group{color:var(--main-bg-color)}.label-group span{padding-top:5px;display:inline-block;margin-right:5px}.label-group .required-icon{height:8px;margin:-6px 0 5px 5px;filter:invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}.checkbox-container{display:flex;flex-direction:row;align-items:center}.switch{position:relative;display:inline-block;width:48px;height:26px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#2196f3}input:focus+.slider{box-shadow:0 0 1px #2196f3}input:checked+.slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translate(22px)}.slider.round{border-radius:25px}.slider.round:before{border-radius:50%}\n"]
15432
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{width:100%}.input-select-default{width:100%}.input-select-default.with-button{padding-right:35px;margin-right:-32px}.btn-input-select{padding:6px 10px 8px 8px;border-top-right-radius:0;border-bottom-right-radius:0;width:32px;border-color:#adb5bd}.form-group{display:flex;flex-direction:column}.field-container{margin-bottom:5px}.comboBox-icon-and-text{display:inline-block}.comboBox-icon{margin-right:5px;margin-bottom:5px}.comboBox-text{padding-right:10px}.checkbox-label{margin-left:5px;margin-top:5px;flex:1}.checkbox-input{width:17px;height:17px}.radio-button-container{border:1px solid #cbc8d0;border-radius:5px;width:100%;margin-top:5px;padding-top:12px;display:flex;flex-direction:row;flex-wrap:wrap}.under-line{margin:3px 10px 5px}.radio-buttons{margin:0;display:flex;flex-direction:column}.radio-button{margin-right:20px}.radio-buttons input{margin-right:0;margin-left:10px;margin-top:0;height:18px;width:18px;min-height:18px;flex-grow:0}.radio-button-label{margin-right:10px;margin-bottom:12px;margin-left:5px;vertical-align:middle}.text-zone-and-button{width:100%;display:flex;flex-direction:column}.text-area{background-color:#343a40;border-radius:5px;color:#e6e65f;caret-color:#ff0;font-family:monospace;font-weight:700;font-size:large;width:100%;height:200px;padding:10px;cursor:text}.feedback-and-button,.input-with-button{display:flex;flex-direction:row;width:100%}.input-with-button input{margin-right:3px}.button{margin-right:0;margin-top:5px;float:right}.feedback{width:100%;float:left;padding-left:10px}.feedback-green{float:left;width:90%;color:green;font-weight:700}.feedback-yellow{float:left;width:90%;color:orange;font-weight:700}.feedback-red{float:left;width:90%;color:var(--red-error);font-weight:700}.errorMessage{display:block;color:var(--red-error);width:100%}.validation-message{color:#a94442!important;display:inline-block;font-size:small;margin:3px}::ng-deep .ng-select.horiz-combox-box{height:30px;width:230px}::ng-deep .ng-select.horiz-combox-box .ng-select-container{height:30px;width:230px}.ng-select.horiz-combox-box ::ng-deep .ng-select-container .ng-placeholder{color:#3e4152}.input alg-input-selector{width:73.6%;margin:.75rem 0 .75rem .95rem}.ml-15px{margin-left:15px;margin-top:.4em}.textButton{margin-top:.4em;padding-bottom:.4em;margin-right:.8rem}fieldset input.ml--3{margin-left:-3%!important}.label-group{color:var(--main-bg-color)}.label-group span{padding-top:5px;display:inline-block;margin-right:5px}.label-group .required-icon{height:8px;margin:-6px 0 5px 5px;filter:invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}.checkbox-container{display:flex;flex-direction:row;align-items:center}.switch{position:relative;display:inline-block;width:48px;height:26px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#4465c9}input:focus+.slider{box-shadow:0 0 1px #4465c9}input:checked+.slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translate(22px)}.slider.round{border-radius:25px}.slider.round:before{border-radius:50%}\n"]
15341
15433
  }]
15342
15434
  }],
15343
15435
  ctorParameters: () => [{ type: ValidationService }],
@@ -16750,7 +16842,7 @@ var MobileMenuComponent = class MobileMenuComponent {
16750
16842
  inline: "inline"
16751
16843
  },
16752
16844
  ngImport: i0,
16753
- template: "<button type=\"button\" [class.mm-fab]=\"!inline\" [class.mm-inline]=\"inline\" [class.open]=\"open\" (click)=\"toggle()\" [title]=\"open ? 'Fermer le menu' : 'Menu de l\\'écran'\">\r\n <i class=\"fa\" [class.fa-ellipsis-v]=\"!open\" [class.fa-times]=\"open\"></i>\r\n</button>\r\n\r\n<ng-container *ngIf=\"open\">\r\n <div class=\"mm-scrim\" (click)=\"close()\"></div>\r\n <div class=\"mm-sheet\" role=\"dialog\" aria-label=\"Menu de l'écran\">\r\n <div class=\"mm-header\">\r\n <span class=\"mm-title\">{{ title || 'Menu' }}</span>\r\n <button type=\"button\" class=\"mm-close\" title=\"Fermer le menu\" aria-label=\"Fermer le menu\" (click)=\"close()\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n\r\n <ul class=\"mm-list\">\r\n <li class=\"mm-item\" (click)=\"openNavigation()\"><i class=\"fa fa-bars mm-icon\"></i><span>Menu de l'application</span></li>\r\n <li class=\"mm-item\" (click)=\"goHome()\"><i class=\"fa fa-home mm-icon\"></i><span>Accueil</span></li>\r\n </ul>\r\n\r\n <ng-container *ngIf=\"visibleActions.length\">\r\n <div class=\"mm-section\">Actions</div>\r\n <ul class=\"mm-list\">\r\n <ng-container *ngFor=\"let a of visibleActions\">\r\n <li *ngIf=\"{ disabled: (a.disabled$ | async) } as state\" class=\"mm-item\" [class.disabled]=\"state.disabled\" (click)=\"execute(a, state.disabled)\">\r\n <img class=\"mm-icon mm-action-icon\" [src]=\"getActionImageUrl(a.icon)\" alt=\"\" />\r\n <span>{{ a.title }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"facade?.config?.viewChooser as chooser\">\r\n <div class=\"mm-section\">Affichage</div>\r\n <ul class=\"mm-list mm-view-menu\" (click)=\"$event.stopPropagation()\">\r\n <alg-grid-view-menu [chooser]=\"chooser\" [mobile]=\"true\" (done)=\"close()\"></alg-grid-view-menu>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n",
16845
+ template: "<button type=\"button\" [class.mm-fab]=\"!inline\" [class.mm-inline]=\"inline\" [class.open]=\"open\" (click)=\"toggle()\" [title]=\"open ? 'Fermer le menu' : 'Menu de l\\'écran'\">\n <i class=\"fa\" [class.fa-ellipsis-v]=\"!open\" [class.fa-times]=\"open\"></i>\n</button>\n\n<ng-container *ngIf=\"open\">\n <div class=\"mm-scrim\" (click)=\"close()\"></div>\n <div class=\"mm-sheet\" role=\"dialog\" aria-label=\"Menu de l'écran\">\n <div class=\"mm-header\">\n <span class=\"mm-title\">{{ title || 'Menu' }}</span>\n <button type=\"button\" class=\"mm-close\" title=\"Fermer le menu\" aria-label=\"Fermer le menu\" (click)=\"close()\">\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <ul class=\"mm-list\">\n <li class=\"mm-item\" (click)=\"openNavigation()\"><i class=\"fa fa-bars mm-icon\"></i><span>Menu de l'application</span></li>\n <li class=\"mm-item\" (click)=\"goHome()\"><i class=\"fa fa-home mm-icon\"></i><span>Accueil</span></li>\n </ul>\n\n <ng-container *ngIf=\"visibleActions.length\">\n <div class=\"mm-section\">Actions</div>\n <ul class=\"mm-list\">\n <ng-container *ngFor=\"let a of visibleActions\">\n <li *ngIf=\"{ disabled: (a.disabled$ | async) } as state\" class=\"mm-item\" [class.disabled]=\"state.disabled\" (click)=\"execute(a, state.disabled)\">\n <img class=\"mm-icon mm-action-icon\" [src]=\"getActionImageUrl(a.icon)\" alt=\"\" />\n <span>{{ a.title }}</span>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"facade?.config?.viewChooser as chooser\">\n <div class=\"mm-section\">Affichage</div>\n <ul class=\"mm-list mm-view-menu\" (click)=\"$event.stopPropagation()\">\n <alg-grid-view-menu [chooser]=\"chooser\" [mobile]=\"true\" (done)=\"close()\"></alg-grid-view-menu>\n </ul>\n </ng-container>\n </div>\n</ng-container>\n",
16754
16846
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.mm-fab{position:fixed;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:1031;width:54px;height:54px;border:none;border-radius:50%;background:var(--orange-algorima, #f59d0f);color:#fff;font-size:20px;box-shadow:0 6px 16px #f59d0f73;cursor:pointer}.mm-fab.open{background:#4465c9;box-shadow:0 6px 16px #0000004d}.mm-inline{display:flex;align-items:center;justify-content:center;width:32px;height:30px;padding:0;border:none;border-radius:5px;background:transparent;color:#fff;font-size:18px;cursor:pointer}.mm-inline:hover,.mm-inline.open{background:#6684e0}.mm-scrim{position:fixed;inset:0;z-index:1029;background:#0f142873}.mm-sheet{position:fixed;inset:0;z-index:3100;overflow-y:auto;padding:0 0 calc(16px + env(safe-area-inset-bottom,0px));background:#fff}.mm-header{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;height:50px;padding:0 8px 0 18px;padding-top:env(safe-area-inset-top,0px);background:#4465c9;color:#fff}.mm-close{display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin-left:auto;border:none;border-radius:5px;background:transparent;color:#fff;font-size:18px;cursor:pointer}.mm-grab{width:40px;height:4px;margin:0 auto 8px;border-radius:2px;background:#dbe4ff}.mm-title{min-width:0;overflow:hidden;font-size:15px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}.mm-section{padding:10px 18px 4px;font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:#9fa9c7}.mm-list{margin:0;padding:0;list-style:none}.mm-item{display:flex;align-items:center;gap:12px;padding:11px 18px;font-size:14px;color:#4d5a81;cursor:pointer}.mm-item:active,.mm-item:hover{background:#ebf0ff}.mm-item.disabled{opacity:.45;cursor:default}.mm-icon{width:18px;text-align:center;color:#4465c9}.mm-action-icon{height:18px}.mm-view-menu ::ng-deep .gvm-item{padding:10px 18px;font-size:14px}\n"],
16755
16847
  dependencies: [
16756
16848
  {
@@ -16801,7 +16893,7 @@ i0.ɵɵngDeclareClassMetadata({
16801
16893
  selector: "alg-mobile-menu",
16802
16894
  changeDetection: ChangeDetectionStrategy.Eager,
16803
16895
  standalone: false,
16804
- template: "<button type=\"button\" [class.mm-fab]=\"!inline\" [class.mm-inline]=\"inline\" [class.open]=\"open\" (click)=\"toggle()\" [title]=\"open ? 'Fermer le menu' : 'Menu de l\\'écran'\">\r\n <i class=\"fa\" [class.fa-ellipsis-v]=\"!open\" [class.fa-times]=\"open\"></i>\r\n</button>\r\n\r\n<ng-container *ngIf=\"open\">\r\n <div class=\"mm-scrim\" (click)=\"close()\"></div>\r\n <div class=\"mm-sheet\" role=\"dialog\" aria-label=\"Menu de l'écran\">\r\n <div class=\"mm-header\">\r\n <span class=\"mm-title\">{{ title || 'Menu' }}</span>\r\n <button type=\"button\" class=\"mm-close\" title=\"Fermer le menu\" aria-label=\"Fermer le menu\" (click)=\"close()\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n\r\n <ul class=\"mm-list\">\r\n <li class=\"mm-item\" (click)=\"openNavigation()\"><i class=\"fa fa-bars mm-icon\"></i><span>Menu de l'application</span></li>\r\n <li class=\"mm-item\" (click)=\"goHome()\"><i class=\"fa fa-home mm-icon\"></i><span>Accueil</span></li>\r\n </ul>\r\n\r\n <ng-container *ngIf=\"visibleActions.length\">\r\n <div class=\"mm-section\">Actions</div>\r\n <ul class=\"mm-list\">\r\n <ng-container *ngFor=\"let a of visibleActions\">\r\n <li *ngIf=\"{ disabled: (a.disabled$ | async) } as state\" class=\"mm-item\" [class.disabled]=\"state.disabled\" (click)=\"execute(a, state.disabled)\">\r\n <img class=\"mm-icon mm-action-icon\" [src]=\"getActionImageUrl(a.icon)\" alt=\"\" />\r\n <span>{{ a.title }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"facade?.config?.viewChooser as chooser\">\r\n <div class=\"mm-section\">Affichage</div>\r\n <ul class=\"mm-list mm-view-menu\" (click)=\"$event.stopPropagation()\">\r\n <alg-grid-view-menu [chooser]=\"chooser\" [mobile]=\"true\" (done)=\"close()\"></alg-grid-view-menu>\r\n </ul>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n",
16896
+ template: "<button type=\"button\" [class.mm-fab]=\"!inline\" [class.mm-inline]=\"inline\" [class.open]=\"open\" (click)=\"toggle()\" [title]=\"open ? 'Fermer le menu' : 'Menu de l\\'écran'\">\n <i class=\"fa\" [class.fa-ellipsis-v]=\"!open\" [class.fa-times]=\"open\"></i>\n</button>\n\n<ng-container *ngIf=\"open\">\n <div class=\"mm-scrim\" (click)=\"close()\"></div>\n <div class=\"mm-sheet\" role=\"dialog\" aria-label=\"Menu de l'écran\">\n <div class=\"mm-header\">\n <span class=\"mm-title\">{{ title || 'Menu' }}</span>\n <button type=\"button\" class=\"mm-close\" title=\"Fermer le menu\" aria-label=\"Fermer le menu\" (click)=\"close()\">\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <ul class=\"mm-list\">\n <li class=\"mm-item\" (click)=\"openNavigation()\"><i class=\"fa fa-bars mm-icon\"></i><span>Menu de l'application</span></li>\n <li class=\"mm-item\" (click)=\"goHome()\"><i class=\"fa fa-home mm-icon\"></i><span>Accueil</span></li>\n </ul>\n\n <ng-container *ngIf=\"visibleActions.length\">\n <div class=\"mm-section\">Actions</div>\n <ul class=\"mm-list\">\n <ng-container *ngFor=\"let a of visibleActions\">\n <li *ngIf=\"{ disabled: (a.disabled$ | async) } as state\" class=\"mm-item\" [class.disabled]=\"state.disabled\" (click)=\"execute(a, state.disabled)\">\n <img class=\"mm-icon mm-action-icon\" [src]=\"getActionImageUrl(a.icon)\" alt=\"\" />\n <span>{{ a.title }}</span>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"facade?.config?.viewChooser as chooser\">\n <div class=\"mm-section\">Affichage</div>\n <ul class=\"mm-list mm-view-menu\" (click)=\"$event.stopPropagation()\">\n <alg-grid-view-menu [chooser]=\"chooser\" [mobile]=\"true\" (done)=\"close()\"></alg-grid-view-menu>\n </ul>\n </ng-container>\n </div>\n</ng-container>\n",
16805
16897
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.mm-fab{position:fixed;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:1031;width:54px;height:54px;border:none;border-radius:50%;background:var(--orange-algorima, #f59d0f);color:#fff;font-size:20px;box-shadow:0 6px 16px #f59d0f73;cursor:pointer}.mm-fab.open{background:#4465c9;box-shadow:0 6px 16px #0000004d}.mm-inline{display:flex;align-items:center;justify-content:center;width:32px;height:30px;padding:0;border:none;border-radius:5px;background:transparent;color:#fff;font-size:18px;cursor:pointer}.mm-inline:hover,.mm-inline.open{background:#6684e0}.mm-scrim{position:fixed;inset:0;z-index:1029;background:#0f142873}.mm-sheet{position:fixed;inset:0;z-index:3100;overflow-y:auto;padding:0 0 calc(16px + env(safe-area-inset-bottom,0px));background:#fff}.mm-header{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;height:50px;padding:0 8px 0 18px;padding-top:env(safe-area-inset-top,0px);background:#4465c9;color:#fff}.mm-close{display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin-left:auto;border:none;border-radius:5px;background:transparent;color:#fff;font-size:18px;cursor:pointer}.mm-grab{width:40px;height:4px;margin:0 auto 8px;border-radius:2px;background:#dbe4ff}.mm-title{min-width:0;overflow:hidden;font-size:15px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}.mm-section{padding:10px 18px 4px;font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:#9fa9c7}.mm-list{margin:0;padding:0;list-style:none}.mm-item{display:flex;align-items:center;gap:12px;padding:11px 18px;font-size:14px;color:#4d5a81;cursor:pointer}.mm-item:active,.mm-item:hover{background:#ebf0ff}.mm-item.disabled{opacity:.45;cursor:default}.mm-icon{width:18px;text-align:center;color:#4465c9}.mm-action-icon{height:18px}.mm-view-menu ::ng-deep .gvm-item{padding:10px 18px;font-size:14px}\n"]
16806
16898
  }]
16807
16899
  }],
@@ -16957,8 +17049,8 @@ var ActionPanelComponent = class ActionPanelComponent {
16957
17049
  guid: "guid"
16958
17050
  },
16959
17051
  ngImport: i0,
16960
- template: "<!-- Téléphone (narrow) : seulement le titre et la recherche, sur fond bleu ; les actions passent par le menu de l'écran. -->\r\n<div class=\"action-panel\" [class.narrow]=\"this.facade.layout.narrow$ | async\">\r\n <div class=\"action-panel-container\">\r\n <ng-container *ngIf=\"this.facade.layout.showActionTitle$ |async\">\r\n <div class=\"action-title\">\r\n <h1>{{ this.title }}</h1>\r\n <span>|</span>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- ACTIONS-->\r\n <ng-container *ngIf=\"this.fields.length && this.facade.layout.showFilterButton$ |async\">\r\n <div class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n id=\"toggleFilter\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"Afficher/Masquer les filtres\"\r\n (click)=\"toggleFilterView()\"\r\n >\r\n <!-- <div class=\"pull-left action-icon\"><i class=\"fa fa-filter fa-lg\"></i></div> -->\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl('filter-solid')\"\r\n alt=\"Afficher/Masquer les filtres\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n \r\n \r\n\r\n <ng-container *ngIf=\"this.facade.layout.showActionSearchBar$ | async\">\r\n <div class=\"input-img\">\r\n <input\r\n \r\n type=\"text\"\r\n class=\"form-control search-bar-action\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [placeholder]=\"this.searchText\"\r\n [(ngModel)]=\"keyword\"\r\n (ngModelChange)=\"handleKeywordsChanged($event)\"\r\n focusable\r\n />\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngFor=\"let action of actions\">\r\n <div\r\n *ngIf=\"action.isVisible && action.showTitle\"\r\n class=\"button-container\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [disabled]=\"action.disabled$ | async\">\r\n\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n <div class=\"action-label\">\r\n <span>{{ action.title }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"action.isVisible && !action.showTitle\" class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [disabled]=\"! this.enableActions() || action.disabled\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-content select=\"[actions-content]\"> </ng-content>\r\n\r\n <!-- Téléphone : menu de l'écran (actions, affichage, navigation) derrière trois points. -->\r\n <alg-mobile-menu *ngIf=\"this.facade.layout.narrow$ | async\" class=\"action-mobile-menu\" [inline]=\"true\"\r\n [entityKey]=\"this.entityKey\" [guid]=\"this.guid\" [title]=\"this.title\"></alg-mobile-menu>\r\n </div>\r\n</div>\r\n",
16961
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.action-panel{display:block;height:auto;border-bottom:solid 1px #3C5DC4;width:auto;overflow:hidden;padding:3px 0}.action-panel-container{display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;justify-items:center;justify-content:flex-start;width:30000px;padding:2px 5px;min-height:34px}.action-panel-container .input-img{margin-right:5px;min-width:150px}.action-panel-container>div{padding:2px;margin-right:0}.action-panel-container>button{padding:2px;margin-right:0}.action-panel-container .button-container{margin-right:3px;padding:3px;height:30px}.action-panel-container .button-container .img{padding:3px;margin-right:0}.action-panel-container .button-container:hover{background-color:#eaeaea}.action-panel-container .action-title{display:flex}.action-panel-container .action-title h1{display:block;font-size:14px;background:#fff;border-bottom:none;padding:2px 0 2px 10px;margin:0;line-height:24px;font-weight:700}.action-panel-container .action-title span{display:flex;margin:0 8px;padding:0;font-size:15px;flex-wrap:nowrap}.action-label{display:flex;flex-wrap:nowrap}.action-icon{margin:0 2px;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.search-bar-action{height:26px;min-height:26px;border-radius:5px}.input-img{position:relative;margin:0 5px 0 0;min-width:250px}.input-img .search-pin{position:absolute;top:5px;left:5px;height:16px;width:16px}.action-panel.narrow{background:#4465c9;border-bottom:none;padding:6px 0}.action-panel.narrow .action-panel-container{width:auto;min-height:30px;padding:0 8px;gap:8px}.action-panel.narrow .action-panel-container>div{padding:0}.action-panel.narrow .action-panel-container .button-container,.action-panel.narrow .action-panel-container ::ng-deep [actions-content]{display:none!important}.action-panel.narrow .action-panel-container .action-title{flex:0 1 auto;min-width:0}.action-panel.narrow .action-panel-container .action-title h1{overflow:hidden;height:30px;padding:0 12px;border-radius:5px;background:#6684e0;color:#fff;font-size:12.5px;font-weight:600;line-height:30px;white-space:nowrap;text-overflow:ellipsis}.action-panel.narrow .action-panel-container .action-title span{display:none}.action-panel.narrow .action-panel-container .input-img{flex:1 1 auto;min-width:0;margin:0}.action-panel.narrow .action-panel-container .action-mobile-menu{flex:none;margin-left:auto}.action-panel.narrow .action-panel-container .search-bar-action{width:100%;height:30px;border:none}\n"],
17052
+ template: "<!-- Téléphone (narrow) : seulement le titre et la recherche, sur fond bleu ; les actions passent par le menu de l'écran. -->\r\n<div class=\"action-panel\" [class.narrow]=\"this.facade.layout.narrow$ | async\">\r\n <div class=\"action-panel-container\">\r\n <ng-container *ngIf=\"this.facade.layout.showActionTitle$ |async\">\r\n <div class=\"action-title\">\r\n <h1>{{ this.title }}</h1>\r\n <span>|</span>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- ACTIONS-->\r\n <ng-container *ngIf=\"this.fields.length && this.facade.layout.showFilterButton$ |async\">\r\n <div class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n id=\"toggleFilter\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"Afficher/Masquer les filtres\"\r\n (click)=\"toggleFilterView()\"\r\n >\r\n <!-- <div class=\"pull-left action-icon\"><i class=\"fa fa-filter fa-lg\"></i></div> -->\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl('filter-solid')\"\r\n alt=\"Afficher/Masquer les filtres\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n \r\n \r\n\r\n <ng-container *ngIf=\"this.facade.layout.showActionSearchBar$ | async\">\r\n <div class=\"input-img\">\r\n <i class=\"fa fa-search search-icon\"></i>\r\n <input\r\n \r\n type=\"text\"\r\n class=\"form-control search-bar-action\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [placeholder]=\"this.searchText\"\r\n [(ngModel)]=\"keyword\"\r\n (ngModelChange)=\"handleKeywordsChanged($event)\"\r\n focusable\r\n />\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngFor=\"let action of actions\">\r\n <div\r\n *ngIf=\"action.isVisible && action.showTitle\"\r\n class=\"button-container\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [class.save-active]=\"action.name === 'save' && !(action.disabled$ | async)\"\r\n [disabled]=\"action.disabled$ | async\">\r\n\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n <div class=\"action-label\">\r\n <span>{{ action.title }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"action.isVisible && !action.showTitle\" class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [class.save-active]=\"action.name === 'save' && this.enableActions() && !action.disabled\"\r\n [disabled]=\"! this.enableActions() || action.disabled\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-content select=\"[actions-content]\"> </ng-content>\r\n\r\n <!-- Téléphone : menu de l'écran (actions, affichage, navigation) derrière trois points. -->\r\n <alg-mobile-menu *ngIf=\"this.facade.layout.narrow$ | async\" class=\"action-mobile-menu\" [inline]=\"true\"\r\n [entityKey]=\"this.entityKey\" [guid]=\"this.guid\" [title]=\"this.title\"></alg-mobile-menu>\r\n </div>\r\n</div>\r\n",
17053
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.action-panel{display:block;height:auto;border-bottom:solid 1px #3C5DC4;width:auto;overflow:hidden;padding:3px 0}.action-panel-container{display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;justify-items:center;justify-content:flex-start;width:30000px;padding:2px 5px;min-height:34px}.action-panel-container .input-img{margin-right:5px;min-width:150px}.action-panel-container>div{padding:2px;margin-right:0}.action-panel-container>button{padding:2px;margin-right:0}.action-panel-container .button-container{margin-right:3px;padding:3px;height:30px}.action-panel-container .button-container .img{padding:3px;margin-right:0}.action-panel-container .button-container:hover{background-color:#eaeaea}.action-panel-container .action-title{display:flex}.action-panel-container .action-title h1{display:block;font-size:14px;background:#fff;border-bottom:none;padding:2px 0 2px 10px;margin:0;line-height:24px;font-weight:700}.action-panel-container .action-title span{display:flex;margin:0 8px;padding:0;font-size:15px;flex-wrap:nowrap}.action-label{display:flex;flex-wrap:nowrap}.action-icon{margin:0 2px;filter:brightness(0) saturate(100%) invert(36%) sepia(91%) saturate(628%) hue-rotate(191deg) brightness(89%) contrast(85%) brightness(75%)}.search-bar-action{height:26px;min-height:26px;border-radius:5px}.input-img{position:relative;margin:0 5px 0 0;min-width:250px}.input-img .search-icon{position:absolute;top:50%;left:9px;transform:translateY(-50%);font-size:12px;color:#9fa9c7;pointer-events:none;z-index:1}.input-img .search-bar-action{padding-left:27px}.input-img .search-pin{position:absolute;top:5px;left:5px;height:16px;width:16px}.action-panel.narrow{background:#4465c9;border-bottom:none;padding:6px 0}.action-panel.narrow .action-panel-container{width:auto;min-height:30px;padding:0 8px;gap:8px}.action-panel.narrow .action-panel-container>div{padding:0}.action-panel.narrow .action-panel-container .button-container,.action-panel.narrow .action-panel-container ::ng-deep [actions-content]{display:none!important}.action-panel.narrow .action-panel-container .action-title{flex:0 1 auto;min-width:0}.action-panel.narrow .action-panel-container .action-title h1{overflow:hidden;height:30px;padding:0 12px;border-radius:5px;background:#6684e0;color:#fff;font-size:12.5px;font-weight:600;line-height:30px;white-space:nowrap;text-overflow:ellipsis}.action-panel.narrow .action-panel-container .action-title span{display:none}.action-panel.narrow .action-panel-container .input-img{flex:1 1 auto;min-width:0;margin:0}.action-panel.narrow .action-panel-container .action-mobile-menu{flex:none;margin-left:auto}.action-panel.narrow .action-panel-container .search-bar-action{width:100%;height:30px;border:none}.action-btn.save-active{color:#d1353a}.action-btn.save-active .action-icon{filter:brightness(0) saturate(100%) invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}\n"],
16962
17054
  dependencies: [
16963
17055
  {
16964
17056
  kind: "directive",
@@ -17040,8 +17132,8 @@ i0.ɵɵngDeclareClassMetadata({
17040
17132
  selector: "alg-action-panel",
17041
17133
  changeDetection: ChangeDetectionStrategy.Eager,
17042
17134
  standalone: false,
17043
- template: "<!-- Téléphone (narrow) : seulement le titre et la recherche, sur fond bleu ; les actions passent par le menu de l'écran. -->\r\n<div class=\"action-panel\" [class.narrow]=\"this.facade.layout.narrow$ | async\">\r\n <div class=\"action-panel-container\">\r\n <ng-container *ngIf=\"this.facade.layout.showActionTitle$ |async\">\r\n <div class=\"action-title\">\r\n <h1>{{ this.title }}</h1>\r\n <span>|</span>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- ACTIONS-->\r\n <ng-container *ngIf=\"this.fields.length && this.facade.layout.showFilterButton$ |async\">\r\n <div class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n id=\"toggleFilter\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"Afficher/Masquer les filtres\"\r\n (click)=\"toggleFilterView()\"\r\n >\r\n <!-- <div class=\"pull-left action-icon\"><i class=\"fa fa-filter fa-lg\"></i></div> -->\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl('filter-solid')\"\r\n alt=\"Afficher/Masquer les filtres\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n \r\n \r\n\r\n <ng-container *ngIf=\"this.facade.layout.showActionSearchBar$ | async\">\r\n <div class=\"input-img\">\r\n <input\r\n \r\n type=\"text\"\r\n class=\"form-control search-bar-action\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [placeholder]=\"this.searchText\"\r\n [(ngModel)]=\"keyword\"\r\n (ngModelChange)=\"handleKeywordsChanged($event)\"\r\n focusable\r\n />\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngFor=\"let action of actions\">\r\n <div\r\n *ngIf=\"action.isVisible && action.showTitle\"\r\n class=\"button-container\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [disabled]=\"action.disabled$ | async\">\r\n\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n <div class=\"action-label\">\r\n <span>{{ action.title }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"action.isVisible && !action.showTitle\" class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [disabled]=\"! this.enableActions() || action.disabled\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-content select=\"[actions-content]\"> </ng-content>\r\n\r\n <!-- Téléphone : menu de l'écran (actions, affichage, navigation) derrière trois points. -->\r\n <alg-mobile-menu *ngIf=\"this.facade.layout.narrow$ | async\" class=\"action-mobile-menu\" [inline]=\"true\"\r\n [entityKey]=\"this.entityKey\" [guid]=\"this.guid\" [title]=\"this.title\"></alg-mobile-menu>\r\n </div>\r\n</div>\r\n",
17044
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.action-panel{display:block;height:auto;border-bottom:solid 1px #3C5DC4;width:auto;overflow:hidden;padding:3px 0}.action-panel-container{display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;justify-items:center;justify-content:flex-start;width:30000px;padding:2px 5px;min-height:34px}.action-panel-container .input-img{margin-right:5px;min-width:150px}.action-panel-container>div{padding:2px;margin-right:0}.action-panel-container>button{padding:2px;margin-right:0}.action-panel-container .button-container{margin-right:3px;padding:3px;height:30px}.action-panel-container .button-container .img{padding:3px;margin-right:0}.action-panel-container .button-container:hover{background-color:#eaeaea}.action-panel-container .action-title{display:flex}.action-panel-container .action-title h1{display:block;font-size:14px;background:#fff;border-bottom:none;padding:2px 0 2px 10px;margin:0;line-height:24px;font-weight:700}.action-panel-container .action-title span{display:flex;margin:0 8px;padding:0;font-size:15px;flex-wrap:nowrap}.action-label{display:flex;flex-wrap:nowrap}.action-icon{margin:0 2px;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.search-bar-action{height:26px;min-height:26px;border-radius:5px}.input-img{position:relative;margin:0 5px 0 0;min-width:250px}.input-img .search-pin{position:absolute;top:5px;left:5px;height:16px;width:16px}.action-panel.narrow{background:#4465c9;border-bottom:none;padding:6px 0}.action-panel.narrow .action-panel-container{width:auto;min-height:30px;padding:0 8px;gap:8px}.action-panel.narrow .action-panel-container>div{padding:0}.action-panel.narrow .action-panel-container .button-container,.action-panel.narrow .action-panel-container ::ng-deep [actions-content]{display:none!important}.action-panel.narrow .action-panel-container .action-title{flex:0 1 auto;min-width:0}.action-panel.narrow .action-panel-container .action-title h1{overflow:hidden;height:30px;padding:0 12px;border-radius:5px;background:#6684e0;color:#fff;font-size:12.5px;font-weight:600;line-height:30px;white-space:nowrap;text-overflow:ellipsis}.action-panel.narrow .action-panel-container .action-title span{display:none}.action-panel.narrow .action-panel-container .input-img{flex:1 1 auto;min-width:0;margin:0}.action-panel.narrow .action-panel-container .action-mobile-menu{flex:none;margin-left:auto}.action-panel.narrow .action-panel-container .search-bar-action{width:100%;height:30px;border:none}\n"]
17135
+ template: "<!-- Téléphone (narrow) : seulement le titre et la recherche, sur fond bleu ; les actions passent par le menu de l'écran. -->\r\n<div class=\"action-panel\" [class.narrow]=\"this.facade.layout.narrow$ | async\">\r\n <div class=\"action-panel-container\">\r\n <ng-container *ngIf=\"this.facade.layout.showActionTitle$ |async\">\r\n <div class=\"action-title\">\r\n <h1>{{ this.title }}</h1>\r\n <span>|</span>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- ACTIONS-->\r\n <ng-container *ngIf=\"this.fields.length && this.facade.layout.showFilterButton$ |async\">\r\n <div class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n id=\"toggleFilter\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"Afficher/Masquer les filtres\"\r\n (click)=\"toggleFilterView()\"\r\n >\r\n <!-- <div class=\"pull-left action-icon\"><i class=\"fa fa-filter fa-lg\"></i></div> -->\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl('filter-solid')\"\r\n alt=\"Afficher/Masquer les filtres\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n \r\n \r\n\r\n <ng-container *ngIf=\"this.facade.layout.showActionSearchBar$ | async\">\r\n <div class=\"input-img\">\r\n <i class=\"fa fa-search search-icon\"></i>\r\n <input\r\n \r\n type=\"text\"\r\n class=\"form-control search-bar-action\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [placeholder]=\"this.searchText\"\r\n [(ngModel)]=\"keyword\"\r\n (ngModelChange)=\"handleKeywordsChanged($event)\"\r\n focusable\r\n />\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngFor=\"let action of actions\">\r\n <div\r\n *ngIf=\"action.isVisible && action.showTitle\"\r\n class=\"button-container\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [class.save-active]=\"action.name === 'save' && !(action.disabled$ | async)\"\r\n [disabled]=\"action.disabled$ | async\">\r\n\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n <div class=\"action-label\">\r\n <span>{{ action.title }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"action.isVisible && !action.showTitle\" class=\"button-container img\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-svg action-btn\"\r\n data-toggle=\"tooltip\"\r\n title=\"{{ action.title }}\"\r\n (click)=\"this.executeAction(action)\"\r\n [class.save-active]=\"action.name === 'save' && this.enableActions() && !action.disabled\"\r\n [disabled]=\"! this.enableActions() || action.disabled\"\r\n >\r\n <img\r\n class=\"action-icon\"\r\n [src]=\"getImageUrl(action.icon)\"\r\n alt=\"{{ action.title }}\"\r\n />\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-content select=\"[actions-content]\"> </ng-content>\r\n\r\n <!-- Téléphone : menu de l'écran (actions, affichage, navigation) derrière trois points. -->\r\n <alg-mobile-menu *ngIf=\"this.facade.layout.narrow$ | async\" class=\"action-mobile-menu\" [inline]=\"true\"\r\n [entityKey]=\"this.entityKey\" [guid]=\"this.guid\" [title]=\"this.title\"></alg-mobile-menu>\r\n </div>\r\n</div>\r\n",
17136
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.action-panel{display:block;height:auto;border-bottom:solid 1px #3C5DC4;width:auto;overflow:hidden;padding:3px 0}.action-panel-container{display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;justify-items:center;justify-content:flex-start;width:30000px;padding:2px 5px;min-height:34px}.action-panel-container .input-img{margin-right:5px;min-width:150px}.action-panel-container>div{padding:2px;margin-right:0}.action-panel-container>button{padding:2px;margin-right:0}.action-panel-container .button-container{margin-right:3px;padding:3px;height:30px}.action-panel-container .button-container .img{padding:3px;margin-right:0}.action-panel-container .button-container:hover{background-color:#eaeaea}.action-panel-container .action-title{display:flex}.action-panel-container .action-title h1{display:block;font-size:14px;background:#fff;border-bottom:none;padding:2px 0 2px 10px;margin:0;line-height:24px;font-weight:700}.action-panel-container .action-title span{display:flex;margin:0 8px;padding:0;font-size:15px;flex-wrap:nowrap}.action-label{display:flex;flex-wrap:nowrap}.action-icon{margin:0 2px;filter:brightness(0) saturate(100%) invert(36%) sepia(91%) saturate(628%) hue-rotate(191deg) brightness(89%) contrast(85%) brightness(75%)}.search-bar-action{height:26px;min-height:26px;border-radius:5px}.input-img{position:relative;margin:0 5px 0 0;min-width:250px}.input-img .search-icon{position:absolute;top:50%;left:9px;transform:translateY(-50%);font-size:12px;color:#9fa9c7;pointer-events:none;z-index:1}.input-img .search-bar-action{padding-left:27px}.input-img .search-pin{position:absolute;top:5px;left:5px;height:16px;width:16px}.action-panel.narrow{background:#4465c9;border-bottom:none;padding:6px 0}.action-panel.narrow .action-panel-container{width:auto;min-height:30px;padding:0 8px;gap:8px}.action-panel.narrow .action-panel-container>div{padding:0}.action-panel.narrow .action-panel-container .button-container,.action-panel.narrow .action-panel-container ::ng-deep [actions-content]{display:none!important}.action-panel.narrow .action-panel-container .action-title{flex:0 1 auto;min-width:0}.action-panel.narrow .action-panel-container .action-title h1{overflow:hidden;height:30px;padding:0 12px;border-radius:5px;background:#6684e0;color:#fff;font-size:12.5px;font-weight:600;line-height:30px;white-space:nowrap;text-overflow:ellipsis}.action-panel.narrow .action-panel-container .action-title span{display:none}.action-panel.narrow .action-panel-container .input-img{flex:1 1 auto;min-width:0;margin:0}.action-panel.narrow .action-panel-container .action-mobile-menu{flex:none;margin-left:auto}.action-panel.narrow .action-panel-container .search-bar-action{width:100%;height:30px;border:none}.action-btn.save-active{color:#d1353a}.action-btn.save-active .action-icon{filter:brightness(0) saturate(100%) invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}\n"]
17045
17137
  }]
17046
17138
  }],
17047
17139
  ctorParameters: () => [
@@ -17247,7 +17339,7 @@ var CustomSortComponent = class CustomSortComponent {
17247
17339
  isStandalone: true,
17248
17340
  selector: "alg-custom-sort",
17249
17341
  ngImport: i0,
17250
- template: "<div class=\"custom-sort\">\r\n <div class=\"custom-sort-level\" *ngFor=\"let level of levels; let i = index\">\r\n <span class=\"custom-sort-label\">{{ i === 0 ? 'Trier par' : 'Puis par' }}</span>\r\n <select class=\"form-control\" [(ngModel)]=\"level.property\">\r\n <option *ngFor=\"let col of sortableColumns(i)\" [value]=\"col.Property\">{{ col.Name || col.Property }}</option>\r\n </select>\r\n <select class=\"form-control custom-sort-direction\" [(ngModel)]=\"level.direction\">\r\n <option value=\"asc\">Croissant</option>\r\n <option value=\"desc\">Décroissant</option>\r\n </select>\r\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Monter\" [disabled]=\"i === 0\" (click)=\"moveLevel(i, -1)\">\r\n <i class=\"fa fa-arrow-up\"></i>\r\n </button>\r\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Descendre\" [disabled]=\"i === levels.length - 1\" (click)=\"moveLevel(i, 1)\">\r\n <i class=\"fa fa-arrow-down\"></i>\r\n </button>\r\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Retirer\" (click)=\"removeLevel(i)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n <button type=\"button\" class=\"custom-sort-add\" [disabled]=\"sortableColumns(-1).length === 0\" (click)=\"addLevel()\">\r\n <i class=\"fa fa-plus\"></i> Ajouter un niveau\r\n </button>\r\n</div>\r\n",
17342
+ template: "<div class=\"custom-sort\">\n <div class=\"custom-sort-level\" *ngFor=\"let level of levels; let i = index\">\n <span class=\"custom-sort-label\">{{ i === 0 ? 'Trier par' : 'Puis par' }}</span>\n <select class=\"form-control\" [(ngModel)]=\"level.property\">\n <option *ngFor=\"let col of sortableColumns(i)\" [value]=\"col.Property\">{{ col.Name || col.Property }}</option>\n </select>\n <select class=\"form-control custom-sort-direction\" [(ngModel)]=\"level.direction\">\n <option value=\"asc\">Croissant</option>\n <option value=\"desc\">Décroissant</option>\n </select>\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Monter\" [disabled]=\"i === 0\" (click)=\"moveLevel(i, -1)\">\n <i class=\"fa fa-arrow-up\"></i>\n </button>\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Descendre\" [disabled]=\"i === levels.length - 1\" (click)=\"moveLevel(i, 1)\">\n <i class=\"fa fa-arrow-down\"></i>\n </button>\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Retirer\" (click)=\"removeLevel(i)\">\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n <button type=\"button\" class=\"custom-sort-add\" [disabled]=\"sortableColumns(-1).length === 0\" (click)=\"addLevel()\">\n <i class=\"fa fa-plus\"></i> Ajouter un niveau\n </button>\n</div>\n",
17251
17343
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.custom-sort{padding:12px 16px 4px;color:#3c5dc4;font-size:12.5px}.custom-sort-level{display:flex;align-items:center;gap:6px;margin-bottom:6px}.custom-sort-level select{flex:1 1 auto;min-width:0;height:28px;padding:2px 6px;font-size:12.5px}.custom-sort-level .custom-sort-direction{flex:0 0 120px}.custom-sort-label{flex:0 0 64px}.custom-sort-icon{width:26px;height:26px;padding:0;border:0;border-radius:4px;background:none;color:#3c5dc4;cursor:pointer}.custom-sort-icon:hover:not(:disabled){background:#dbe4ff}.custom-sort-icon:disabled{opacity:.3;cursor:default}.custom-sort-add{margin:4px 0 8px 70px;padding:0;border:0;background:none;color:#3c5dc4;cursor:pointer}.custom-sort-add:disabled{opacity:.4;cursor:default}\n"],
17252
17344
  dependencies: [
17253
17345
  {
@@ -17321,7 +17413,7 @@ i0.ɵɵngDeclareClassMetadata({
17321
17413
  standalone: true,
17322
17414
  imports: [CommonModule, FormsModule],
17323
17415
  changeDetection: ChangeDetectionStrategy.Eager,
17324
- template: "<div class=\"custom-sort\">\r\n <div class=\"custom-sort-level\" *ngFor=\"let level of levels; let i = index\">\r\n <span class=\"custom-sort-label\">{{ i === 0 ? 'Trier par' : 'Puis par' }}</span>\r\n <select class=\"form-control\" [(ngModel)]=\"level.property\">\r\n <option *ngFor=\"let col of sortableColumns(i)\" [value]=\"col.Property\">{{ col.Name || col.Property }}</option>\r\n </select>\r\n <select class=\"form-control custom-sort-direction\" [(ngModel)]=\"level.direction\">\r\n <option value=\"asc\">Croissant</option>\r\n <option value=\"desc\">Décroissant</option>\r\n </select>\r\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Monter\" [disabled]=\"i === 0\" (click)=\"moveLevel(i, -1)\">\r\n <i class=\"fa fa-arrow-up\"></i>\r\n </button>\r\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Descendre\" [disabled]=\"i === levels.length - 1\" (click)=\"moveLevel(i, 1)\">\r\n <i class=\"fa fa-arrow-down\"></i>\r\n </button>\r\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Retirer\" (click)=\"removeLevel(i)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n <button type=\"button\" class=\"custom-sort-add\" [disabled]=\"sortableColumns(-1).length === 0\" (click)=\"addLevel()\">\r\n <i class=\"fa fa-plus\"></i> Ajouter un niveau\r\n </button>\r\n</div>\r\n",
17416
+ template: "<div class=\"custom-sort\">\n <div class=\"custom-sort-level\" *ngFor=\"let level of levels; let i = index\">\n <span class=\"custom-sort-label\">{{ i === 0 ? 'Trier par' : 'Puis par' }}</span>\n <select class=\"form-control\" [(ngModel)]=\"level.property\">\n <option *ngFor=\"let col of sortableColumns(i)\" [value]=\"col.Property\">{{ col.Name || col.Property }}</option>\n </select>\n <select class=\"form-control custom-sort-direction\" [(ngModel)]=\"level.direction\">\n <option value=\"asc\">Croissant</option>\n <option value=\"desc\">Décroissant</option>\n </select>\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Monter\" [disabled]=\"i === 0\" (click)=\"moveLevel(i, -1)\">\n <i class=\"fa fa-arrow-up\"></i>\n </button>\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Descendre\" [disabled]=\"i === levels.length - 1\" (click)=\"moveLevel(i, 1)\">\n <i class=\"fa fa-arrow-down\"></i>\n </button>\n <button type=\"button\" class=\"custom-sort-icon\" title=\"Retirer\" (click)=\"removeLevel(i)\">\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n <button type=\"button\" class=\"custom-sort-add\" [disabled]=\"sortableColumns(-1).length === 0\" (click)=\"addLevel()\">\n <i class=\"fa fa-plus\"></i> Ajouter un niveau\n </button>\n</div>\n",
17325
17417
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.custom-sort{padding:12px 16px 4px;color:#3c5dc4;font-size:12.5px}.custom-sort-level{display:flex;align-items:center;gap:6px;margin-bottom:6px}.custom-sort-level select{flex:1 1 auto;min-width:0;height:28px;padding:2px 6px;font-size:12.5px}.custom-sort-level .custom-sort-direction{flex:0 0 120px}.custom-sort-label{flex:0 0 64px}.custom-sort-icon{width:26px;height:26px;padding:0;border:0;border-radius:4px;background:none;color:#3c5dc4;cursor:pointer}.custom-sort-icon:hover:not(:disabled){background:#dbe4ff}.custom-sort-icon:disabled{opacity:.3;cursor:default}.custom-sort-add{margin:4px 0 8px 70px;padding:0;border:0;background:none;color:#3c5dc4;cursor:pointer}.custom-sort-add:disabled{opacity:.4;cursor:default}\n"]
17326
17418
  }]
17327
17419
  }]
@@ -17499,6 +17591,222 @@ i0.ɵɵngDeclareClassMetadata({
17499
17591
  args: ["rowRef"]
17500
17592
  }] }
17501
17593
  });
17594
+ var GridDistinctFilterComponent = class GridDistinctFilterComponent {
17595
+ constructor() {
17596
+ this.done = new EventEmitter();
17597
+ this.loaded = new EventEmitter();
17598
+ this.dataService = inject(DataService, { optional: true });
17599
+ this.cd = inject(ChangeDetectorRef);
17600
+ this.values = [];
17601
+ this.hasMore = false;
17602
+ this.loading = false;
17603
+ this.error = false;
17604
+ this.search = "";
17605
+ this.selected = /* @__PURE__ */ new Set();
17606
+ this.search$ = new Subject();
17607
+ this.subscriptions = new Subscription();
17608
+ }
17609
+ static {
17610
+ this.PageSize = 50;
17611
+ }
17612
+ ngOnInit() {
17613
+ this.facade.filter.getFilterValues(this.property).forEach((v) => this.selected.add(v));
17614
+ this.subscriptions.add(this.search$.pipe(debounceTime(300)).subscribe(() => this.load(true)));
17615
+ this.load(true);
17616
+ }
17617
+ ngOnDestroy() {
17618
+ this.subscriptions.unsubscribe();
17619
+ this.request?.unsubscribe();
17620
+ }
17621
+ load(reset) {
17622
+ if (!this.dataService) return;
17623
+ this.request?.unsubscribe();
17624
+ if (reset) {
17625
+ this.values = [];
17626
+ this.hasMore = false;
17627
+ }
17628
+ this.loading = true;
17629
+ this.error = false;
17630
+ const filter = this.facade.filter.getDistinctValuesFilter(this.property);
17631
+ this.request = this.dataService.distinctValues(this.entityKey, filter, this.property, this.search.trim(), this.values.length, GridDistinctFilterComponent.PageSize).subscribe({
17632
+ next: (result) => {
17633
+ this.values = [...this.values, ...(result?.Values ?? []).filter((v) => v !== null && v !== void 0)];
17634
+ this.hasMore = !!result?.HasMore;
17635
+ this.loading = false;
17636
+ this.cd.markForCheck();
17637
+ if (reset) this.loaded.emit();
17638
+ },
17639
+ error: () => {
17640
+ this.loading = false;
17641
+ this.error = true;
17642
+ this.cd.markForCheck();
17643
+ }
17644
+ });
17645
+ }
17646
+ onSearchChange() {
17647
+ this.search$.next(this.search);
17648
+ }
17649
+ onScroll(event) {
17650
+ const list = event.target;
17651
+ if (this.hasMore && !this.loading && list.scrollTop + list.clientHeight >= list.scrollHeight - 24) this.load(false);
17652
+ }
17653
+ key(value) {
17654
+ return String(value);
17655
+ }
17656
+ label(value) {
17657
+ if (value === true) return "Oui";
17658
+ if (value === false) return "Non";
17659
+ const text = String(value);
17660
+ const date = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/.exec(text);
17661
+ if (date) {
17662
+ const [, y, m, d, hh, mm] = date;
17663
+ return hh === "00" && mm === "00" ? `${d}/${m}/${y}` : `${d}/${m}/${y} ${hh}:${mm}`;
17664
+ }
17665
+ return text;
17666
+ }
17667
+ isSelected(value) {
17668
+ return this.selected.has(this.key(value));
17669
+ }
17670
+ toggle(value) {
17671
+ const key = this.key(value);
17672
+ if (this.selected.has(key)) this.selected.delete(key);
17673
+ else this.selected.add(key);
17674
+ }
17675
+ allShownSelected() {
17676
+ return this.values.length > 0 && this.values.every((v) => this.isSelected(v));
17677
+ }
17678
+ toggleAllShown() {
17679
+ const select = !this.allShownSelected();
17680
+ this.values.forEach((v) => select ? this.selected.add(this.key(v)) : this.selected.delete(this.key(v)));
17681
+ }
17682
+ apply() {
17683
+ this.facade.filter.setFilterValues(this.property, [...this.selected]);
17684
+ this.done.emit();
17685
+ }
17686
+ clear() {
17687
+ this.selected.clear();
17688
+ this.facade.filter.setFilterValues(this.property, []);
17689
+ this.done.emit();
17690
+ }
17691
+ static {
17692
+ this.ɵfac = i0.ɵɵngDeclareFactory({
17693
+ minVersion: "12.0.0",
17694
+ version: "22.2.1",
17695
+ ngImport: i0,
17696
+ type: GridDistinctFilterComponent,
17697
+ deps: [],
17698
+ target: i0.ɵɵFactoryTarget.Component
17699
+ });
17700
+ }
17701
+ static {
17702
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
17703
+ minVersion: "14.0.0",
17704
+ version: "22.2.1",
17705
+ type: GridDistinctFilterComponent,
17706
+ isStandalone: true,
17707
+ selector: "alg-grid-distinct-filter",
17708
+ inputs: {
17709
+ facade: "facade",
17710
+ entityKey: "entityKey",
17711
+ property: "property"
17712
+ },
17713
+ outputs: {
17714
+ done: "done",
17715
+ loaded: "loaded"
17716
+ },
17717
+ ngImport: i0,
17718
+ template: "<li class=\"gdf-panel\">\r\n <input class=\"gdf-search\" type=\"text\" placeholder=\"Rechercher…\" [(ngModel)]=\"search\" (ngModelChange)=\"onSearchChange()\" />\r\n\r\n <div *ngIf=\"values.length\" class=\"gdf-item gdf-all\" (click)=\"toggleAllShown()\">\r\n <input type=\"checkbox\" tabindex=\"-1\" [checked]=\"allShownSelected()\" (click)=\"$event.preventDefault()\" />\r\n <span class=\"gdf-label\">{{ search.trim() ? '(Ajouter les valeurs trouvées)' : '(Tout sélectionner)' }}</span>\r\n </div>\r\n\r\n <!-- Valeurs distinctes : page suivante chargée en défilant vers le bas. -->\r\n <ul class=\"gdf-list\" (scroll)=\"onScroll($event)\">\r\n <li *ngFor=\"let value of values\" class=\"gdf-item\" [class.checked]=\"isSelected(value)\" [title]=\"label(value)\" (click)=\"toggle(value)\">\r\n <input type=\"checkbox\" tabindex=\"-1\" [checked]=\"isSelected(value)\" (click)=\"$event.preventDefault()\" />\r\n <span class=\"gdf-label\">{{ label(value) }}</span>\r\n </li>\r\n <li *ngIf=\"loading\" class=\"gdf-info\">Chargement…</li>\r\n <li *ngIf=\"error\" class=\"gdf-info\">Valeurs indisponibles pour cette colonne</li>\r\n <li *ngIf=\"!loading && !error && !values.length\" class=\"gdf-info\">Aucune valeur</li>\r\n </ul>\r\n\r\n <div class=\"gdf-footer\">\r\n <span class=\"gdf-count\">{{ selected.size ? selected.size + (selected.size > 1 ? ' valeurs cochées' : ' valeur cochée') : '' }}</span>\r\n <button type=\"button\" class=\"gdf-btn\" (click)=\"clear()\">Effacer</button>\r\n <button type=\"button\" class=\"gdf-btn primary\" (click)=\"apply()\">OK</button>\r\n </div>\r\n</li>\r\n",
17719
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{display:contents}li{list-style:none}.gdf-panel{display:flex;flex-direction:column;width:240px;padding:4px 0;cursor:default}.gdf-search{margin:2px 8px 4px;padding:3px 6px;border:1px solid #DBE4FF;border-radius:4px;font-size:12px;outline:none}.gdf-search:focus{border-color:#4465c9}.gdf-list{max-height:240px;margin:0;padding:0;overflow-y:auto}.gdf-item{display:flex;align-items:center;gap:8px;padding:4px 12px;white-space:nowrap;cursor:pointer;font-size:12px;color:#4d5a81}.gdf-item:hover{background:#ebf0ff}.gdf-item.checked{color:#4465c9}.gdf-item input[type=checkbox]{width:14px;margin:0;pointer-events:none}.gdf-all{border-bottom:1px solid #ebf0ff}.gdf-label{flex:1;overflow:hidden;text-overflow:ellipsis}.gdf-info{padding:4px 12px;font-size:12px;color:#9fa9c7}.gdf-footer{display:flex;align-items:center;gap:6px;padding:6px 8px 2px;border-top:1px solid #ebf0ff}.gdf-count{flex:1;font-size:11px;color:#9fa9c7}.gdf-btn{padding:1px 10px;border:1px solid #DBE4FF;border-radius:4px;background:#fff;color:#4465c9;font-size:12px;cursor:pointer}.gdf-btn.primary{background:#4465c9;border-color:#4465c9;color:#fff}\n"],
17720
+ dependencies: [
17721
+ {
17722
+ kind: "ngmodule",
17723
+ type: CommonModule
17724
+ },
17725
+ {
17726
+ kind: "directive",
17727
+ type: i1$5.NgForOf,
17728
+ selector: "[ngFor][ngForOf]",
17729
+ inputs: [
17730
+ "ngForOf",
17731
+ "ngForTrackBy",
17732
+ "ngForTemplate"
17733
+ ]
17734
+ },
17735
+ {
17736
+ kind: "directive",
17737
+ type: i1$5.NgIf,
17738
+ selector: "[ngIf]",
17739
+ inputs: [
17740
+ "ngIf",
17741
+ "ngIfThen",
17742
+ "ngIfElse"
17743
+ ]
17744
+ },
17745
+ {
17746
+ kind: "ngmodule",
17747
+ type: FormsModule
17748
+ },
17749
+ {
17750
+ kind: "directive",
17751
+ type: i5.DefaultValueAccessor,
17752
+ selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]"
17753
+ },
17754
+ {
17755
+ kind: "directive",
17756
+ type: i5.NgControlStatus,
17757
+ selector: "[formControlName],[ngModel],[formControl]"
17758
+ },
17759
+ {
17760
+ kind: "directive",
17761
+ type: i5.NgModel,
17762
+ selector: "[ngModel]:not([formControlName]):not([formControl])",
17763
+ inputs: [
17764
+ "name",
17765
+ "disabled",
17766
+ "ngModel",
17767
+ "ngModelOptions"
17768
+ ],
17769
+ outputs: ["ngModelChange"],
17770
+ exportAs: ["ngModel"]
17771
+ }
17772
+ ],
17773
+ changeDetection: i0.ChangeDetectionStrategy.Eager
17774
+ });
17775
+ }
17776
+ };
17777
+ i0.ɵɵngDeclareClassMetadata({
17778
+ minVersion: "12.0.0",
17779
+ version: "22.2.1",
17780
+ ngImport: i0,
17781
+ type: GridDistinctFilterComponent,
17782
+ decorators: [{
17783
+ type: Component,
17784
+ args: [{
17785
+ selector: "alg-grid-distinct-filter",
17786
+ standalone: true,
17787
+ imports: [CommonModule, FormsModule],
17788
+ changeDetection: ChangeDetectionStrategy.Eager,
17789
+ template: "<li class=\"gdf-panel\">\r\n <input class=\"gdf-search\" type=\"text\" placeholder=\"Rechercher…\" [(ngModel)]=\"search\" (ngModelChange)=\"onSearchChange()\" />\r\n\r\n <div *ngIf=\"values.length\" class=\"gdf-item gdf-all\" (click)=\"toggleAllShown()\">\r\n <input type=\"checkbox\" tabindex=\"-1\" [checked]=\"allShownSelected()\" (click)=\"$event.preventDefault()\" />\r\n <span class=\"gdf-label\">{{ search.trim() ? '(Ajouter les valeurs trouvées)' : '(Tout sélectionner)' }}</span>\r\n </div>\r\n\r\n <!-- Valeurs distinctes : page suivante chargée en défilant vers le bas. -->\r\n <ul class=\"gdf-list\" (scroll)=\"onScroll($event)\">\r\n <li *ngFor=\"let value of values\" class=\"gdf-item\" [class.checked]=\"isSelected(value)\" [title]=\"label(value)\" (click)=\"toggle(value)\">\r\n <input type=\"checkbox\" tabindex=\"-1\" [checked]=\"isSelected(value)\" (click)=\"$event.preventDefault()\" />\r\n <span class=\"gdf-label\">{{ label(value) }}</span>\r\n </li>\r\n <li *ngIf=\"loading\" class=\"gdf-info\">Chargement…</li>\r\n <li *ngIf=\"error\" class=\"gdf-info\">Valeurs indisponibles pour cette colonne</li>\r\n <li *ngIf=\"!loading && !error && !values.length\" class=\"gdf-info\">Aucune valeur</li>\r\n </ul>\r\n\r\n <div class=\"gdf-footer\">\r\n <span class=\"gdf-count\">{{ selected.size ? selected.size + (selected.size > 1 ? ' valeurs cochées' : ' valeur cochée') : '' }}</span>\r\n <button type=\"button\" class=\"gdf-btn\" (click)=\"clear()\">Effacer</button>\r\n <button type=\"button\" class=\"gdf-btn primary\" (click)=\"apply()\">OK</button>\r\n </div>\r\n</li>\r\n",
17790
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{display:contents}li{list-style:none}.gdf-panel{display:flex;flex-direction:column;width:240px;padding:4px 0;cursor:default}.gdf-search{margin:2px 8px 4px;padding:3px 6px;border:1px solid #DBE4FF;border-radius:4px;font-size:12px;outline:none}.gdf-search:focus{border-color:#4465c9}.gdf-list{max-height:240px;margin:0;padding:0;overflow-y:auto}.gdf-item{display:flex;align-items:center;gap:8px;padding:4px 12px;white-space:nowrap;cursor:pointer;font-size:12px;color:#4d5a81}.gdf-item:hover{background:#ebf0ff}.gdf-item.checked{color:#4465c9}.gdf-item input[type=checkbox]{width:14px;margin:0;pointer-events:none}.gdf-all{border-bottom:1px solid #ebf0ff}.gdf-label{flex:1;overflow:hidden;text-overflow:ellipsis}.gdf-info{padding:4px 12px;font-size:12px;color:#9fa9c7}.gdf-footer{display:flex;align-items:center;gap:6px;padding:6px 8px 2px;border-top:1px solid #ebf0ff}.gdf-count{flex:1;font-size:11px;color:#9fa9c7}.gdf-btn{padding:1px 10px;border:1px solid #DBE4FF;border-radius:4px;background:#fff;color:#4465c9;font-size:12px;cursor:pointer}.gdf-btn.primary{background:#4465c9;border-color:#4465c9;color:#fff}\n"]
17791
+ }]
17792
+ }],
17793
+ propDecorators: {
17794
+ facade: [{
17795
+ type: Input,
17796
+ args: [{ required: true }]
17797
+ }],
17798
+ entityKey: [{
17799
+ type: Input,
17800
+ args: [{ required: true }]
17801
+ }],
17802
+ property: [{
17803
+ type: Input,
17804
+ args: [{ required: true }]
17805
+ }],
17806
+ done: [{ type: Output }],
17807
+ loaded: [{ type: Output }]
17808
+ }
17809
+ });
17502
17810
  var GridStylePipe = class GridStylePipe {
17503
17811
  transform(type, context, args = {}) {
17504
17812
  if (!context) return "";
@@ -18910,8 +19218,8 @@ var DataGridComponent = class DataGridComponent {
18910
19218
  }
18911
19219
  ],
18912
19220
  ngImport: i0,
18913
- template: "<div #datagridContainer [class]=\"this.datagridClass\" tabindex=\"-1\" (keydown)=\"onGridKeyDown($event)\" (scroll)=\"onGridScroll($event)\"\r\n (copy)=\"onCopy($event)\" (paste)=\"onPaste($event)\" (contextmenu)=\"openEmptyAreaContextMenu($event)\">\r\n <ng-container>\r\n <table class=\"data-grid-datatable\">\r\n <ng-container *ngIf=\"this.facade.style as ctx\">\r\n <ng-container *ngIf=\"this.facade.config.columns$ | async as rcolumns\">\r\n <thead>\r\n <tr>\r\n <th class=\"header row-state\" (click)=\"addFilterQuery()\"></th>\r\n <!-- En-tête : poignée de déplacement à gauche, intitulé, indicateur de tri,\r\n flèche du menu (tri, agrégation) à droite. Le clic ne trie plus. -->\r\n <th #thHeader *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-col-' + col.Property\"\r\n [attr.class]=\"'header' | gridStyle : ctx : { column : col }\"\r\n [style.width.px]=\"colWidth(col)\" [style.min-width.px]=\"colWidth(col)\" [style.max-width.px]=\"colWidth(col)\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\">\r\n <div class=\"header-cell\"\r\n [class.col-dragging]=\"draggedColumn === col.Property\">\r\n <span class=\"header-handle\" title=\"Déplacer la colonne\"\r\n (mousedown)=\"onHeaderMouseDown(col, $event)\">\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </span>\r\n <label>{{ getHeaderLabel(col) }}</label>\r\n <i *ngIf=\"this.facade.filter.isAsc(col.Property)\" class=\"fa fa-long-arrow-up header-sort\" title=\"Tri croissant\"></i>\r\n <i *ngIf=\"this.facade.filter.isDesc(col.Property)\" class=\"fa fa-long-arrow-down header-sort\" title=\"Tri décroissant\"></i>\r\n <sup *ngIf=\"this.facade.filter.sortRank(col.Property) > 0\" class=\"header-sort-rank\"\r\n title=\"Rang dans le tri personnalisé\">{{ this.facade.filter.sortRank(col.Property) }}</sup>\r\n <i *ngIf=\"activeAggregations[col.Property]\" class=\"header-agg\" [title]=\"'Agrégation : ' + aggregationLabel(activeAggregations[col.Property])\">Σ</i>\r\n <!-- Dernière colonne suivie de la colonne vide de fin : sa flèche est dans la colonne vide. -->\r\n <button type=\"button\" class=\"header-menu-button\" title=\"Trier, agréger\"\r\n *ngIf=\"!(ctx.enableLastColumnResize && i === rcolumns.length - 1)\"\r\n [class.open]=\"headerMenu?.column.Property === col.Property\"\r\n (click)=\"toggleHeaderMenu(col, $event)\">\r\n <i class=\"fa fa-caret-down\"></i>\r\n </button>\r\n </div>\r\n <!-- Bord droit : largeur de la colonne (tirer), ajustée au contenu (double clic). -->\r\n <span class=\"col-resizer\" title=\"Largeur de la colonne (double clic : ajuster au contenu)\"\r\n (mousedown)=\"startResize(col, $event)\" (dblclick)=\"autoFitColumn(col, $event)\"\r\n (click)=\"$event.stopPropagation()\"></span>\r\n </th>\r\n <th *ngIf=\"ctx.enableLastColumnResize\" #lastColumnHeader class=\"header last-column\"\r\n (contextmenu)=\"openHeaderContextMenu($event, rcolumns[rcolumns.length - 1])\">\r\n <div class=\"header-cell header-cell-end\" *ngIf=\"rcolumns.length > 0\">\r\n <button type=\"button\" class=\"header-menu-button\" title=\"Trier, agréger\"\r\n [class.open]=\"headerMenu?.column.Property === rcolumns[rcolumns.length - 1].Property\"\r\n (click)=\"toggleHeaderMenu(rcolumns[rcolumns.length - 1], $event)\">\r\n <i class=\"fa fa-caret-down\"></i>\r\n </button>\r\n </div>\r\n </th>\r\n\r\n </tr>\r\n <ng-container *ngIf=\"this.facade.filter.additionalQuery$ | async as additionalQuery\">\r\n <tr #thFilterRows *ngFor=\"let filterRow of additionalQuery.Rows;let i = index\" >\r\n <th class=\"filter-header row-state\" (click)=\"removeFilterQuery(i)\"></th>\r\n <th class=\"filter-header\" [ngClass]=\"{disabled: !col.IsFilterEnabled}\" *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-filter-' + i\">\r\n <input *ngIf=\"col.IsFilterEnabled\" type=\"text\"\r\n class=\"filter-header-input\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [attr.id]=\"guid.toString() + '-filter-input-' + col.Property\"\r\n [(ngModel)]=\"filterRow.ClausesByPropertyName.get(col.Property).FilterValue\"\r\n (ngModelChange)=\"handleFilterChanged($event, filterRow, col.Property)\"\r\n (change)=\"validateFilterChanged($event, filterRow, col.Property)\"\r\n />\r\n </th>\r\n <ng-container>\r\n <th #lastColumnFilter class=\"filter-header last-column\"></th>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"this.facade.data\">\r\n <ng-container *ngFor=\"let row of this.data.Values; let r = index;\">\r\n <tr\r\n [class]=\"'alternating' | gridStyle : ctx : { row : row, index : r, maxIndex : this.data.Values.length, hasAggregates: hasAggregates }\"\r\n [class.selected]=\"isRowSelected(row)\"\r\n [attr.id]=\"guid.toString() + '-row-' + row.Id\"\r\n (mousedown)=\"onRowMouseDown(row, $event)\"\r\n (mouseup)=\"onRowMouseUp(row, $event)\"\r\n (click)=\"onRowClick(row, $event)\"\r\n\r\n [rowRef]=\"guid + '-row-' + row.Id\"\r\n >\r\n\r\n <th [attr.class]=\"'rowstate' | gridStyle : ctx : { row : row }\">\r\n <ng-container *ngIf=\"selectionStyler.isModified(row) && !selectionStyler.isInvalid(row) && !selectionStyler.isWarning(row)\">\r\n <div class=\"new-rowstate\"><span>...</span></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/error.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isWarning(row) && !selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/warning.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ctx.displayDetail\">\r\n <button type=\"button\" [attr.id]=\"row.Id + '_button'\" class=\"toggle-button btn\" (click)=\"toggleDetail(row)\">\r\n <i class=\"fa fa-chevron-right fa-custom\"></i>\r\n </button>\r\n </ng-container>\r\n </th>\r\n\r\n <td *ngFor=\"let column of rcolumns; index as i\"\r\n [attr.id]=\"cellId(row, column)\"\r\n [style.max-width.px]=\"colWidth(column)\" [attr.data-sized]=\"colWidth(column) ? '' : null\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\"\r\n [class]=\"'cell' | gridStyle : ctx : { row : row,column : column,index : r }\"\r\n [class.selected]=\"isRowSelected(row)\"\r\n (mousedown)=\"onCellMouseDown(r, i, $event)\"\r\n (mouseenter)=\"onCellMouseEnter(r, i, $event)\"\r\n (click)=\"onCellClick(row, column)\"\r\n (dblclick)=\"onCellDblClick(row, column)\">\r\n\r\n <alg-datagrid-cell #dataGridCellComponent\r\n class=\"gridcell-container\"\r\n [entity]=\"row\"\r\n [isEditable]=\"canEditCell(row, column)\"\r\n [property]=\"column.Property\"\r\n [managed]=\"true\"\r\n [mode]=\"showEditor(row, column) ? 'edit' : 'view'\"\r\n [class.grid-cursor]=\"isCursorCell(row, column)\"\r\n [class.grid-range]=\"isInRange(r, i)\"\r\n (contextmenu)=\"openContextMenu($event, row, column)\">\r\n\r\n <ng-template alg-editMode>\r\n <!-- Éditeur du champ du formulaire qui correspond à la colonne (sinon déduit de la colonne), à la hauteur de la ligne. -->\r\n <alg-field class=\"grid-editor\"\r\n [field]=\"getEditField(column)\"\r\n [form]=\"getRowForm(row)\"\r\n [showLabel]=\"false\"\r\n (propertyChanged)=\"onCellChanged(row, $event)\"\r\n >\r\n <!-- [focusable]=\"cellFocus\" -->\r\n </alg-field>\r\n </ng-template>\r\n <ng-template alg-viewMode>\r\n\r\n <div [ngSwitch]=\"column.Display?.type\" *ngIf=\"!isUndefined(row[column.Property])\">\r\n <div *ngSwitchCase=\"'url'\">\r\n <a [routerLink]=\"[$safeNavigationMigration(column.Display?.baseUrl),row[column.Property]]\">\r\n {{ row.Id || row[column.Property] }}\r\n </a>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"20\" [imageWidth]=\"20\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img-file'\" class=\"image\">\r\n\r\n <alg-image\r\n [imageUrl]=\"this.getImageUrl(row,column)\" [wide]=\"true\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'wide-img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\" [wide]=\"true\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{row[column.Property]| date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'boolean'\">{{row[column.Property] ? 'OUI' : 'NON'}} </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">{{row[column.Property] | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\"\r\n class=\"money\">\r\n {{\r\n row[column.Property]\r\n | currency: column.Display?.currency\r\n || (column.Display?.sourceProperty && row[column.Display?.sourceProperty] ? row[column.Display?.sourceProperty] : false)\r\n || 'EUR' : 'symbol'\r\n\r\n | todefine: $safeNavigationMigration(column.Display?.handleError)\r\n }}\r\n\r\n <div class=\"tool-tip\" *ngIf=\"ctx.showOnToolTip(row,column)\">\r\n {{ctx.showOnToolTip(row,column)}}\r\n </div>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'percent'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * $safeNavigationMigration(column.Display?.multiplier) | percent : column.Display?.format\r\n || '1.0-2' | todefine: $safeNavigationMigration(column.Display?.handleError)}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * $safeNavigationMigration(column.Display?.multiplier) | number: column.Display?.format\r\n || '1.0-3' | todefine : $safeNavigationMigration(column.Display?.handleError)}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] | tofixedsizeinteger : $safeNavigationMigration(column.Display?.completingCaracter) : $safeNavigationMigration(column.Display?.width) }}\r\n </span>\r\n <span *ngSwitchDefault [innerText]=\"column.Property == 'Id' ? (row[column.Property] < 0 ? '' : row[column.Property]) : row[column.Property]\">\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"isUndefined(row[column.Property])\">\r\n <span *ngIf=\"!isUndefined($safeNavigationMigration(column.Display?.nullCaseText))\" class=\"mw-invalid\">\r\n {{ column.Display?.nullCaseText }}\r\n </span>\r\n\r\n <span *ngIf=\"isUndefined($safeNavigationMigration(column.Display?.nullCaseText))\">\r\n &nbsp;&nbsp;&nbsp;\r\n </span>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </alg-datagrid-cell>\r\n </td>\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <!-- Colonne vide de fin : clic droit = menu de la dernière colonne. -->\r\n <td (contextmenu)=\"openContextMenu($event, row, rcolumns[rcolumns.length - 1])\"></td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n\r\n <tfoot>\r\n <tr class=\"empty-row\" *ngIf=\"hasAggregates\">\r\n <td></td>\r\n </tr>\r\n <tr class=\"aggregation-row\" *ngIf=\"hasAggregates\">\r\n <td class=\"row-state\"></td>\r\n <td *ngFor=\"let column of rcolumns; index as i\" [attr.class]=\"'cell' | gridStyle : ctx : { column : column, index : i }\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\">\r\n\r\n <ng-container *ngFor=\"let agg of columnAggregates[column.Property]\">\r\n\r\n <span class=\"agg-label\">{{ aggregationLabel(agg.op) }}</span>\r\n <span [ngSwitch]=\"agg.op === 'COUNT' ? 'count' : column.Display?.type\">\r\n\r\n <span *ngSwitchCase=\"'count'\">{{ agg.value | number: '1.0-0' }}</span>\r\n <span *ngSwitchCase=\"'percent'\">{{ agg.value | number: column.Display?.format || '1.0-3' }}</span>\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\">{{ agg.value | number: column.Display?.format || '1.0-3' }}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\" class=\"money\">\r\n {{ agg.value | currency: getColCurrency(column) }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\">\r\n {{agg.value | number: column.Display?.format || '1.0-3'}}\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n {{agg.value}}\r\n </span>\r\n\r\n </span>\r\n\r\n </ng-container>\r\n\r\n </td>\r\n\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <td class=\"last-column\"></td>\r\n </ng-container>\r\n\r\n </tr>\r\n </tfoot>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<!-- Emplacement visé par une colonne déplacée : trait orange sur la séparation des deux en-têtes. -->\r\n<div class=\"col-drop-indicator\" *ngIf=\"dropIndicator\"\r\n [ngStyle]=\"{ left: dropIndicator.left + 'px', top: dropIndicator.top + 'px', height: dropIndicator.height + 'px' }\"></div>\r\n\r\n<!-- Menu d'une colonne (flèche de l'en-tête ou clic droit sur une cellule), en trois zones séparées\r\n par un trait : Tri, Actions (celles du panneau des actions), Fonctions (sous-menu « Fonctions »). -->\r\n<div class=\"header-menu\" *ngIf=\"headerMenu\"\r\n [ngStyle]=\"{ top: headerMenu.y + 'px', left: headerMenu.x + 'px', visibility: headerMenu.ready ? 'visible' : 'hidden' }\"\r\n (click)=\"$event.stopPropagation()\" (contextmenu)=\"$event.preventDefault()\">\r\n <ul>\r\n <!-- Tri -->\r\n <li [class.checked]=\"this.facade.filter.isAsc(headerMenu.column.Property)\" (click)=\"sortColumn('asc')\"\r\n (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-sort-amount-asc\"></i><span>Trier par ordre croissant</span>\r\n </li>\r\n <li [class.checked]=\"this.facade.filter.isDesc(headerMenu.column.Property)\" (click)=\"sortColumn('desc')\"\r\n (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-sort-amount-desc\"></i><span>Trier par ordre décroissant</span>\r\n </li>\r\n <li [class.checked]=\"this.facade.filter.getSortList().length > 1\" (click)=\"openCustomSort()\"\r\n (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-sort\"></i><span>Tri personnalisé…</span>\r\n </li>\r\n <!-- Filtre sur la valeur de la cellule (clic droit sur une cellule) : première ligne des filtres composés. -->\r\n <li *ngIf=\"cellFilterValue() !== undefined\" (click)=\"filterOnCell()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-filter\"></i><span>Filtrer sur « {{ cellFilterLabel() }} »</span>\r\n </li>\r\n <!-- Affichage : vues personnalisées (cochée = affichée), puis « Modifier… ». -->\r\n <li *ngIf=\"this.facade.config.viewChooser\" class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'columns'\"\r\n (mouseenter)=\"setSubmenu('columns')\" (click)=\"setSubmenu('columns')\">\r\n <i class=\"fa fa-columns\"></i><span>Affichage</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu header-submenu-columns\" *ngIf=\"headerMenu.submenu === 'columns'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <alg-grid-view-menu [chooser]=\"this.facade.config.viewChooser\" (done)=\"closeViewMenu()\" (loaded)=\"onViewMenuLoaded()\"></alg-grid-view-menu>\r\n </ul>\r\n </li>\r\n <!-- Colonnes figées à gauche, de la première jusqu'à celle-ci. -->\r\n <li [class.checked]=\"isFrozen(columnIndex(headerMenu.column))\" (click)=\"toggleFrozen()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-thumb-tack\"></i>\r\n <span>{{ frozenUntil === columnIndex(headerMenu.column) ? 'Libérer les colonnes' : 'Figer jusqu\\'à cette colonne' }}</span>\r\n </li>\r\n <li *ngIf=\"frozenUntil !== undefined && frozenUntil !== columnIndex(headerMenu.column)\"\r\n (click)=\"unfreezeColumns()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-unlock\"></i><span>Libérer les colonnes</span>\r\n </li>\r\n\r\n <!-- Actions -->\r\n <ng-container *ngIf=\"visibleActions.length > 0\">\r\n <li class=\"separator\"></li>\r\n <ng-container *ngFor=\"let action of visibleActions\">\r\n <ng-container *ngIf=\"{ disabled: (action.disabled$ | async) } as state\">\r\n <li class=\"menu-action\" [class.disabled]=\"state.disabled\"\r\n (click)=\"executeMenuAction(action, state.disabled)\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <img class=\"menu-action-icon\" [src]=\"getActionImageUrl(action.icon)\" [alt]=\"action.title\" />\r\n <span>{{ action.title }}</span>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Affichage -->\r\n <li class=\"separator\"></li>\r\n <li class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'display'\"\r\n (mouseenter)=\"setSubmenu('display')\" (click)=\"setSubmenu('display')\">\r\n <i class=\"fa fa-calculator\"></i><span>Fonctions</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu\" *ngIf=\"headerMenu.submenu === 'display'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <li *ngFor=\"let op of getAggregationOptions(headerMenu.column)\"\r\n [class.checked]=\"activeAggregations[headerMenu.column.Property] === op\"\r\n (click)=\"aggregateColumn(op)\">\r\n <i class=\"fa fa-check\"></i><span>{{ aggregationLabel(op) }}</span>\r\n </li>\r\n <ng-container *ngIf=\"activeAggregations[headerMenu.column.Property]\">\r\n <li class=\"separator\"></li>\r\n <li (click)=\"aggregateColumn(null)\">\r\n <i class=\"fa fa-times\"></i><span>Ne plus afficher</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n",
18914
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{flex:1}.header.last-column{border-left:none!important;width:100%}table thead .sorting,table thead .sorting_asc,table thead .sorting_desc,table thead .sorting_asc_disabled,table thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table thead th:first-child,table tfoot tr:first-child{position:sticky;left:0;z-index:2}table tbody th:first-child{position:sticky;left:0;z-index:1;border-right:none}table tbody th:first-child div{text-align:center;vertical-align:middle;line-height:20px}table tbody tr.row-odd th:first-child{background:#ebf0ff}table tbody tr.selected.row-odd.mw-invalid th:first-child,table tbody tr.selected.row-even.mw-invalid th:first-child,table tbody tr.selected.row-odd.mw-warning th:first-child,table tbody tr.selected.row-even.mw-warning th:first-child,table tbody tr.selected.row-even th:first-child,table tbody tr.selected.row-odd th:first-child{background-color:#8ea7f8;color:#fff}table tbody tr.row-odd.mw-invalid th:first-child,table tbody tr.row-even.mw-invalid th:first-child{background-color:#f2dede}table tbody tr.row-odd.mw-warning th:first-child,table tbody tr.row-even.mw-warning th:first-child{background-color:#fff4de}table thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:#fff;border-left:1px solid #3C5DC4;border-bottom:1px solid #3C5DC4}table thead .sorting{background-image:none;cursor:pointer}table thead .sorting_asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExQjM4MkY2QzVGRUYwRTJDNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFEQzYxNjIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFEQzYxNTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+z5ABTAAAAI5JREFUeNpi/P//PwO1ABMDFQELIQXVjfe4gFQbEJe11iv9otRl2UCcBcSphBQy4gszoKu0gNROIJYB4jtA7AF03V2SXQY0iBFIFUMNAgEVIM6DipPsTQcgDkQTSwRia5IMA9rOC6RqgVgQTQokXgOUZyfFZSFQF/zAgh2BOIjkCBjQRDtq2Khh9DAMIMAAT9AmNBDSXegAAAAASUVORK5CYII=);cursor:pointer}table thead .sorting_desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExQjM4MkY2QzVGRUYwRTJDNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFEQzYxQTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFEQzYxOTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1fsfwAAAAJdJREFUeNpi/P//PwO1ABMDFcGoYaOG0cMwFmyC1Y33IoHUAiD+h8MBGa31SvOJddk6IN4PxBxY8FEgXkO0N4G2/gRSLUD8GU3qPRA3A+U/kxpmIBege2U9EB/ApYERX6kBDDtlILUDiFWA+AkQuwNddY2s2ARqvAukJgDxbyCehM8gnLGJBmYDsSoQTyWkkHHQFo4AAQYAAA0piq4hbqwAAAAASUVORK5CYII=);cursor:pointer}table thead .sorting_asc_disabled,table thead .sorting_desc_disabled{background-image:none}.checkbok-container{align-items:center;margin:0;padding:0}.gridcell-container{padding:0;min-width:fit-content}.gridcell-container input[type=number]{display:block;size:1;font-size:10pt;width:100%!important;height:100%;margin:0!important;border:2px solid #F78383}.datagrid-custom-container{height:100%;overflow:auto;margin-left:-1px}.data-grid-datatable{table-layout:fixed;cursor:pointer;border-spacing:0px}.data-grid-datatable td{box-shadow:none;padding:2px 5px;white-space:nowrap}.data-grid-datatable td.row-state{padding:2px 5px;width:16px}.data-grid-datatable td.img{padding:2px 5px}.data-grid-datatable td.row-state img{height:16px;width:16px;margin-top:-3px;padding:0}.data-grid-datatable tr{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header{vertical-align:bottom;padding:2px 5px 2px 0;font-weight:400;color:#3c5dc4;white-space:nowrap;line-height:25px;min-width:32px;margin-bottom:5px}.header.img{min-width:16px}.header.row-state{min-width:27px;position:-webkit-sticky;position:sticky;top:0;left:0;z-index:2;background:#fff;border-left:none;border-right:none}.filter-header{background-color:#f7f7f7!important}.filter-header.disabled{background-color:#9fa9c7!important}.filter-header.row-state:hover:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"57\" height=\"57\" viewBox=\"0 0 57 57\">%0D%0A <path id=\"Rond_Croix\" data-name=\"Rond Croix\" d=\"M28.5,57A28.5,28.5,0,0,1,8.347,8.347,28.5,28.5,0,1,1,48.652,48.652,28.317,28.317,0,0,1,28.5,57Zm0-24.036h0l11.9,11.9L44.869,40.4,32.964,28.5,44.869,16.593,40.4,12.129,28.5,24.034,16.594,12.129l-4.465,4.464L24.034,28.5,12.129,40.4l4.463,4.465L28.5,32.965Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 0 0 3px;filter:brightness(0) saturate(100%) invert(70%) sepia(93%) saturate(1540%) hue-rotate(309deg) brightness(105%) contrast(94%)}.filter-header-input{height:calc(100% - 2px);width:calc(100% - 2px);margin:0;border:none!important;background-color:#f7f7f7;padding:0 0 0 5px;color:#4d5a81}.header.row-state:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->%0D%0A<path fill=\"currentColor\" d=\"M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"/></svg>');background-repeat:no-repeat;margin:0 0 3px 5px;filter:brightness(0) saturate(100%) invert(56%) sepia(79%) saturate(2301%) hue-rotate(202deg) brightness(92%) contrast(91%)}.filter-header.last-column{border-left:none!important}.header label{cursor:pointer;margin-bottom:0;margin-right:10px;padding-left:5px;width:100%}.row-odd{background-color:#ebf0ff;border-left:1px solid #C1D0FD;border-bottom:1px solid #C1D0FD}.row-even{background-color:#f7faff;border-left:1px solid #C1D0FD;border-bottom:1px solid #C1D0FD}.error-row-icon{padding:2px;width:20px}.selected{background-color:#8ea7f8;color:#fff}.mw-invalid{font-weight:600;background-color:#f2dede;border:1px solid var(--red-error)}.mw-invalid td{background-color:#f2dede!important}.data-grid-datatable tbody tr.mw-invalid>td,.data-grid-datatable tbody tr.mw-invalid>th{box-shadow:inset 0 1px 0 var(--red-error),inset 0 -1px 0 var(--red-error)}span.mw-invalid{padding:0 3px;color:var(--red-error);background-color:transparent}.mw-warning.selected,.mw-invalid.selected{background-color:#8ea7f8}.mw-warning.selected td,.mw-invalid.selected td{background-color:#8ea7f8!important}.mw-warning{font-weight:600;background-color:#fff4de;border:1px solid var(--orange-algorima)}.mw-warning td{background-color:#fff4de!important}.mw-modified{font-weight:600;border:1px solid var(--main-bg-color)}.first-row{border-top:none}.last-row,.last-row td{border-bottom:none!important}.data-grid-datatable>tbody>tr{z-index:50}.image{position:relative;display:flex;flex-direction:row}.image img{height:20px;width:auto}td.money{position:relative}.tool-tip{visibility:hidden;background-color:#424242;color:#fff;text-align:left;border-radius:3px;font-size:15px;position:absolute;z-index:1;top:-10%;left:150%;opacity:0;transition:opacity .3s;padding:5px 15px;white-space:nowrap;overflow:visible}.tool-tip:after{content:\" \";position:absolute;top:50%;right:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent rgb(66,66,66) transparent transparent}.image:hover .tool-tip{visibility:visible;opacity:1}td.money:hover .tool-tip{visibility:visible;opacity:1;left:100%;height:28px;font-size:13px;margin-top:0;padding:5px 10px 10px}.disabled{pointer-events:none}.edit-mode{background-color:#fff;border:1px solid #4465C9;min-width:90px!important;height:30px!important}.edit-mode .form-group{min-height:0px}.edit-mode .inactivated{background-color:#dbe4ff80}.edit-mode .inactivated-fo{background-color:#dbe4ff}.edit-mode .ecartclass{border:2px solid #4465C9}.edit-mode .error-cell{font-weight:700;color:#f78383!important}.edit-mode .selected{color:#4d5a81}.highlight-1,.highlight-1.selected,.edit-mode.highlight-1.selected{background-color:#4d5a81!important;color:#fff!important}.highlight-2,.highlight-2.selected,.edit-mode.highlight-2.selected{background-color:#dbe4ff!important;color:#4d5a81!important}.highlight-3,.highlight-3.selected,.edit-mode.highlight-3.selected{background-color:#4465c9!important;color:#fff!important}.highlight-4,.highlight-4.selected,.edit-mode.highlight-4.selected{background-color:#f78383!important;color:#fff!important}.highlight-5,.highlight-5.selected{background-color:#4465c9!important;color:#fff}.fixed-column{position:-webkit-sticky;position:sticky;left:27px;z-index:2!important;border-left:none}.fixed-header{position:-webkit-sticky;position:sticky;left:27px;z-index:3!important;background:#fff}.has-focus{padding:0!important}.has-focus ::ng-deep input,.has-focus ::ng-deep input:focus-visible,.has-focus ::ng-deep input:focus{border-radius:.1;outline:none!important;width:100%;height:29px;min-height:0;margin:0;border:1px solid #4465C9}.has-focus ::ng-deep .form-group{margin-bottom:0;min-height:0}.has-focus ::ng-deep .field-container{margin-bottom:0}.edit-mode.has-focus{width:90px!important}.bordered{border-left:1px solid #14358f!important;border-right:1px solid #14358f!important}.match-keywords{color:var(--main-bg-color);font-weight:700}.datagrid-img img{height:20px;width:20px}.right-align{text-align:right}.left-align{text-align:left}.detail-div{height:0px;overflow:hidden;transition:all .2s linear;width:100%}.fa-custom{font-size:smaller}.detail-div-show{height:150px;transition:all .2s linear}.toggleable{visibility:collapse}.toggleable-show{visibility:visible}.toggle-button-down{transform:rotate(90deg);transition:all .2s linear}.no-result{color:#5272d3;height:100%;width:100%;padding:15px 15px 150px}.new-rowstate{display:flex;flex-direction:row;align-items:center;align-self:center;height:100%;width:100%}.new-rowstate span{height:100%;width:100%;margin-top:-6px}.context-menu{position:absolute;background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);box-shadow:0 4px 12px #0000004d;padding:8px;z-index:1000;min-width:75px;max-width:250px;transition:all .3s ease-in-out}.context-menu ul{list-style:none;margin:0;padding:0}.context-menu li{padding:10px 14px;cursor:pointer;border-radius:8px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.context-menu li:hover{background:linear-gradient(135deg,#ffffff4d,#ffffff1a);transform:scale(1.02)}.context-menu li:active{transform:scale(.98)}.grid-container{overflow:auto;position:relative}.aggregation-row{position:sticky;bottom:0;z-index:50;background:#f7faff!important;background-color:#f7faff!important;font-weight:700;border-top:1px solid #4D5A81!important;border-bottom:1px solid #4D5A81!important}.aggregation-row td{background:#f7faff!important;background-color:#f7faff!important;border-top:1px solid #4D5A81!important;border-bottom:1px solid #4D5A81!important;border-left:none!important;border-right:none!important}.empty-row td{padding:0}.col-resizer{position:absolute;top:0;right:-5px;z-index:4;width:10px;height:100%;cursor:col-resize}.col-resizer:hover{background:#3c5dc440}.data-grid-datatable td[data-sized]{overflow:hidden;text-overflow:ellipsis}:where(.data-grid-datatable tbody tr,.data-grid-datatable tfoot tr){background-color:#fff}.data-grid-datatable td[data-frozen]{position:sticky;z-index:1;background-color:inherit}.data-grid-datatable thead th[data-frozen]{position:sticky;z-index:3}.data-grid-datatable td[data-frozen]:has(+td:not([data-frozen])),.data-grid-datatable thead th[data-frozen]:has(+th:not([data-frozen])){box-shadow:inset -2px 0 #3c5dc459}table thead th.header{background-image:none!important;cursor:default}.header-cell{position:relative;display:flex;align-items:center;gap:2px}.header-cell label{flex:1 1 auto;cursor:default;margin:0;padding-left:2px;overflow:hidden;text-overflow:ellipsis}.header-cell.col-dragging{opacity:.8}.dg-column-ghost{border:1px solid #C1D0FD;box-sizing:border-box}.col-drop-indicator{position:fixed;z-index:3100;width:1px;border-radius:0;background:var(--orange-algorima, #f59d0f);pointer-events:none}.header-cell-end{justify-content:flex-end;align-items:center;height:25px}.header-handle{flex-shrink:0;display:flex;align-items:center;justify-content:center;box-sizing:content-box;width:17px;height:20px;padding:0 2px;color:#3c5dc4;opacity:.35;cursor:grab}.header-handle:hover{opacity:1}.header-handle:active{cursor:grabbing}.header-sort,.header-agg{flex-shrink:0;color:#3c5dc4;font-size:11px;font-style:normal}.header-menu-button{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:16px;height:18px;padding:0;border:0;border-radius:3px;background:none;color:#3c5dc4;opacity:.5;cursor:pointer}.header-menu-button:hover,.header-menu-button.open{opacity:1;background:#4465c926}.header-menu{position:fixed;z-index:3000;width:230px;padding:4px 0;background:#fff;border:1px solid #DBE4FF;border-radius:5px;box-shadow:0 4px 14px #0003}.header-menu ul{margin:0;padding:0;list-style:none}.header-menu li{display:flex;align-items:center;gap:8px;padding:5px 12px;color:#3c5dc4;font-size:12.5px;cursor:pointer}.header-menu li i{width:14px;text-align:center;visibility:visible}.header-menu li:hover{background:#dbe4ff}.header-menu li.checked{font-weight:600}.header-menu li.separator{height:1px;margin:4px 0;padding:0;background:#dbe4ff;cursor:default}.header-menu li .fa-check{visibility:hidden}.header-menu li.checked>.fa-check{visibility:visible}.header-menu li.menu-action.disabled{opacity:.45;cursor:default}.header-menu li.menu-action.disabled:hover{background:none}.header-menu .menu-action-icon{width:14px;height:14px}.header-menu li.has-submenu{position:relative}.header-menu li.has-submenu.open{background:#dbe4ff}.header-menu li.has-submenu .submenu-caret{margin-left:auto}.header-menu .header-submenu{position:absolute;top:-5px;left:100%;width:200px;padding:4px 0;background:#fff;border:1px solid #DBE4FF;border-radius:5px;box-shadow:0 4px 14px #0003;font-weight:400}.header-menu .header-submenu.left{left:auto;right:100%}.header-menu .header-submenu.header-submenu-columns{width:240px;max-height:320px;overflow-y:auto}.header-menu .header-submenu .column-choice input[type=checkbox]{width:14px;margin:0;pointer-events:none}.header-menu .header-submenu .submenu-loading{opacity:.6;cursor:default}.header-menu .header-submenu .view-lock{margin-left:auto;padding-left:8px;opacity:.5;font-size:11px}.header-menu .header-submenu.up{top:auto;bottom:-5px}.header-sort-rank{flex-shrink:0;color:#3c5dc4;font-size:9px}.aggregation-row .agg-label{margin-right:4px;color:#3c5dc4;font-size:10.5px;opacity:.7}.datagrid-custom-container:focus,.datagrid-custom-container:focus-visible{outline:none}.data-grid-datatable td .image ::ng-deep img{display:block}.data-grid-datatable td:has(>.grid-cursor){outline:2px solid #4465C9;outline-offset:-2px}.data-grid-datatable td:has(>.grid-range){background-color:#4465c940!important;box-shadow:inset 0 0 0 1px #4465c980;color:#4d5a81!important}.data-grid-datatable td:has(>.grid-range) ::ng-deep *{color:#4d5a81!important}.data-grid-datatable td:has(.grid-editor){padding:0!important;background-color:#fff}.grid-editor{display:block;height:23px;overflow:visible;color:#4d5a81}.grid-editor ::ng-deep .field-container,.grid-editor ::ng-deep .form-group,.grid-editor ::ng-deep .form-group>div,.grid-editor ::ng-deep .checkbox-container{margin:0!important;padding:0;min-height:0!important;height:23px}.grid-editor ::ng-deep .validation-message,.grid-editor ::ng-deep .checkbox-label{display:none}.grid-editor ::ng-deep input,.grid-editor ::ng-deep input:focus,.grid-editor ::ng-deep textarea{box-sizing:border-box;width:100%;height:23px!important;min-height:0!important;margin:0!important;padding:0 4px;border:1px solid #4465C9;border-radius:0;box-shadow:none;font-size:inherit;line-height:normal;resize:none}.grid-editor ::ng-deep input.ng-invalid.ng-touched,.grid-editor ::ng-deep input.ng-invalid.ng-dirty{border-color:#f78383}.grid-editor ::ng-deep input[type=checkbox]{width:auto}.grid-editor ::ng-deep .ng-select .ng-select-container{color:#4d5a81;min-height:0!important;height:23px!important;border-radius:0;border-color:#4465c9}.grid-editor ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:0}.grid-editor ::ng-deep .ng-select .ng-select-container .ng-value-container{padding-top:0}.grid-editor ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input>input{height:100%!important;border:none}.grid-editor ::ng-deep .form-group>div{flex:1;min-width:0;width:100%}.grid-editor ::ng-deep .ng-select{width:100%}.grid-editor ::ng-deep alg-selector{display:flex;width:100%;height:23px}.grid-editor ::ng-deep .input-select-default,.grid-editor ::ng-deep .input-select-default.with-button{flex:1;min-width:0;padding-right:0;margin-right:0}.grid-editor ::ng-deep .input-group-btn{float:none}.grid-editor ::ng-deep .btn,.grid-editor ::ng-deep .btn-32,.grid-editor ::ng-deep .btn-input-select{height:23px;width:23px;padding:0;line-height:1;border-radius:0}.grid-editor ::ng-deep .input-with-button{display:flex;height:23px}.grid-editor ::ng-deep .switch{margin:2px 0 0 4px;transform:scale(.7);transform-origin:left top}::ng-deep body.dg-column-dragging,::ng-deep body.dg-column-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}\n"],
19221
+ template: "<div #datagridContainer [class]=\"this.datagridClass\" tabindex=\"-1\" (keydown)=\"onGridKeyDown($event)\" (scroll)=\"onGridScroll($event)\"\r\n (copy)=\"onCopy($event)\" (paste)=\"onPaste($event)\" (contextmenu)=\"openEmptyAreaContextMenu($event)\">\r\n <ng-container>\r\n <table class=\"data-grid-datatable\">\r\n <ng-container *ngIf=\"this.facade.style as ctx\">\r\n <ng-container *ngIf=\"this.facade.config.columns$ | async as rcolumns\">\r\n <thead>\r\n <tr>\r\n <th class=\"header row-state\" (click)=\"addFilterQuery()\"></th>\r\n <!-- En-tête : poignée de déplacement à gauche, intitulé, indicateur de tri,\r\n flèche du menu (tri, agrégation) à droite. Le clic ne trie plus. -->\r\n <th #thHeader *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-col-' + col.Property\"\r\n [attr.class]=\"'header' | gridStyle : ctx : { column : col }\"\r\n [style.width.px]=\"colWidth(col)\" [style.min-width.px]=\"colWidth(col)\" [style.max-width.px]=\"colWidth(col)\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\">\r\n <div class=\"header-cell\"\r\n [class.col-dragging]=\"draggedColumn === col.Property\">\r\n <span class=\"header-handle\" title=\"Déplacer la colonne\"\r\n (mousedown)=\"onHeaderMouseDown(col, $event)\">\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </span>\r\n <label>{{ getHeaderLabel(col) }}</label>\r\n <i *ngIf=\"this.facade.filter.isAsc(col.Property)\" class=\"fa fa-long-arrow-up header-sort\" title=\"Tri croissant\"></i>\r\n <i *ngIf=\"this.facade.filter.isDesc(col.Property)\" class=\"fa fa-long-arrow-down header-sort\" title=\"Tri décroissant\"></i>\r\n <sup *ngIf=\"this.facade.filter.sortRank(col.Property) > 0\" class=\"header-sort-rank\"\r\n title=\"Rang dans le tri personnalisé\">{{ this.facade.filter.sortRank(col.Property) }}</sup>\r\n <i *ngIf=\"activeAggregations[col.Property]\" class=\"header-agg\" [title]=\"'Agrégation : ' + aggregationLabel(activeAggregations[col.Property])\">Σ</i>\r\n <!-- Dernière colonne suivie de la colonne vide de fin : sa flèche est dans la colonne vide. -->\r\n <button type=\"button\" class=\"header-menu-button\" title=\"Trier, agréger\"\r\n *ngIf=\"!(ctx.enableLastColumnResize && i === rcolumns.length - 1)\"\r\n [class.open]=\"headerMenu?.column.Property === col.Property\"\r\n (click)=\"toggleHeaderMenu(col, $event)\">\r\n <i class=\"fa fa-caret-down\"></i>\r\n </button>\r\n </div>\r\n <!-- Bord droit : largeur de la colonne (tirer), ajustée au contenu (double clic). -->\r\n <span class=\"col-resizer\" title=\"Largeur de la colonne (double clic : ajuster au contenu)\"\r\n (mousedown)=\"startResize(col, $event)\" (dblclick)=\"autoFitColumn(col, $event)\"\r\n (click)=\"$event.stopPropagation()\"></span>\r\n </th>\r\n <th *ngIf=\"ctx.enableLastColumnResize\" #lastColumnHeader class=\"header last-column\"\r\n (contextmenu)=\"openHeaderContextMenu($event, rcolumns[rcolumns.length - 1])\">\r\n <div class=\"header-cell header-cell-end\" *ngIf=\"rcolumns.length > 0\">\r\n <button type=\"button\" class=\"header-menu-button\" title=\"Trier, agréger\"\r\n [class.open]=\"headerMenu?.column.Property === rcolumns[rcolumns.length - 1].Property\"\r\n (click)=\"toggleHeaderMenu(rcolumns[rcolumns.length - 1], $event)\">\r\n <i class=\"fa fa-caret-down\"></i>\r\n </button>\r\n </div>\r\n </th>\r\n\r\n </tr>\r\n <ng-container *ngIf=\"this.facade.filter.additionalQuery$ | async as additionalQuery\">\r\n <tr #thFilterRows *ngFor=\"let filterRow of additionalQuery.Rows;let i = index\" >\r\n <th class=\"filter-header row-state\" (click)=\"removeFilterQuery(i)\"></th>\r\n <th class=\"filter-header\" [ngClass]=\"{disabled: !col.IsFilterEnabled}\" *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-filter-' + i\">\r\n <input *ngIf=\"col.IsFilterEnabled\" type=\"text\"\r\n class=\"filter-header-input\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [attr.id]=\"guid.toString() + '-filter-input-' + col.Property\"\r\n [placeholder]=\"filterRow.ClausesByPropertyName.get(col.Property).FilterValues?.length ? 'Filtre avancé : ' + filterRow.ClausesByPropertyName.get(col.Property).FilterValues.length + ' valeur(s)' : ''\"\r\n [(ngModel)]=\"filterRow.ClausesByPropertyName.get(col.Property).FilterValue\"\r\n (ngModelChange)=\"handleFilterChanged($event, filterRow, col.Property)\"\r\n (change)=\"validateFilterChanged($event, filterRow, col.Property)\"\r\n />\r\n </th>\r\n <ng-container>\r\n <th #lastColumnFilter class=\"filter-header last-column\"></th>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"this.facade.data\">\r\n <ng-container *ngFor=\"let row of this.data.Values; let r = index;\">\r\n <tr\r\n [class]=\"'alternating' | gridStyle : ctx : { row : row, index : r, maxIndex : this.data.Values.length, hasAggregates: hasAggregates }\"\r\n [class.selected]=\"isRowSelected(row)\"\r\n [attr.id]=\"guid.toString() + '-row-' + row.Id\"\r\n (mousedown)=\"onRowMouseDown(row, $event)\"\r\n (mouseup)=\"onRowMouseUp(row, $event)\"\r\n (click)=\"onRowClick(row, $event)\"\r\n\r\n [rowRef]=\"guid + '-row-' + row.Id\"\r\n >\r\n\r\n <th [attr.class]=\"'rowstate' | gridStyle : ctx : { row : row }\">\r\n <ng-container *ngIf=\"selectionStyler.isModified(row) && !selectionStyler.isInvalid(row) && !selectionStyler.isWarning(row)\">\r\n <div class=\"new-rowstate\"><span>...</span></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/error.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isWarning(row) && !selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/warning.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ctx.displayDetail\">\r\n <button type=\"button\" [attr.id]=\"row.Id + '_button'\" class=\"toggle-button btn\" (click)=\"toggleDetail(row)\">\r\n <i class=\"fa fa-chevron-right fa-custom\"></i>\r\n </button>\r\n </ng-container>\r\n </th>\r\n\r\n <td *ngFor=\"let column of rcolumns; index as i\"\r\n [attr.id]=\"cellId(row, column)\"\r\n [style.max-width.px]=\"colWidth(column)\" [attr.data-sized]=\"colWidth(column) ? '' : null\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\"\r\n [class]=\"'cell' | gridStyle : ctx : { row : row,column : column,index : r }\"\r\n [class.selected]=\"isRowSelected(row)\"\r\n (mousedown)=\"onCellMouseDown(r, i, $event)\"\r\n (mouseenter)=\"onCellMouseEnter(r, i, $event)\"\r\n (click)=\"onCellClick(row, column)\"\r\n (dblclick)=\"onCellDblClick(row, column)\">\r\n\r\n <alg-datagrid-cell #dataGridCellComponent\r\n class=\"gridcell-container\"\r\n [entity]=\"row\"\r\n [isEditable]=\"canEditCell(row, column)\"\r\n [property]=\"column.Property\"\r\n [managed]=\"true\"\r\n [mode]=\"showEditor(row, column) ? 'edit' : 'view'\"\r\n [class.grid-cursor]=\"isCursorCell(row, column)\"\r\n [class.grid-range]=\"isInRange(r, i)\"\r\n (contextmenu)=\"openContextMenu($event, row, column)\">\r\n\r\n <ng-template alg-editMode>\r\n <!-- Éditeur du champ du formulaire qui correspond à la colonne (sinon déduit de la colonne), à la hauteur de la ligne. -->\r\n <alg-field class=\"grid-editor\"\r\n [field]=\"getEditField(column)\"\r\n [form]=\"getRowForm(row)\"\r\n [showLabel]=\"false\"\r\n (propertyChanged)=\"onCellChanged(row, $event)\"\r\n >\r\n <!-- [focusable]=\"cellFocus\" -->\r\n </alg-field>\r\n </ng-template>\r\n <ng-template alg-viewMode>\r\n\r\n <div [ngSwitch]=\"column.Display?.type\" *ngIf=\"!isUndefined(row[column.Property])\">\r\n <div *ngSwitchCase=\"'url'\">\r\n <a [routerLink]=\"[$safeNavigationMigration(column.Display?.baseUrl),row[column.Property]]\">\r\n {{ row.Id || row[column.Property] }}\r\n </a>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"20\" [imageWidth]=\"20\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img-file'\" class=\"image\">\r\n\r\n <alg-image\r\n [imageUrl]=\"this.getImageUrl(row,column)\" [wide]=\"true\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'wide-img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\" [wide]=\"true\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{row[column.Property]| date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'boolean'\">{{row[column.Property] ? 'OUI' : 'NON'}} </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">{{row[column.Property] | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\"\r\n class=\"money\">\r\n {{\r\n row[column.Property]\r\n | currency: column.Display?.currency\r\n || (column.Display?.sourceProperty && row[column.Display?.sourceProperty] ? row[column.Display?.sourceProperty] : false)\r\n || 'EUR' : 'symbol'\r\n\r\n | todefine: $safeNavigationMigration(column.Display?.handleError)\r\n }}\r\n\r\n <div class=\"tool-tip\" *ngIf=\"ctx.showOnToolTip(row,column)\">\r\n {{ctx.showOnToolTip(row,column)}}\r\n </div>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'percent'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * $safeNavigationMigration(column.Display?.multiplier) | percent : column.Display?.format\r\n || '1.0-2' | todefine: $safeNavigationMigration(column.Display?.handleError)}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * $safeNavigationMigration(column.Display?.multiplier) | number: column.Display?.format\r\n || '1.0-3' | todefine : $safeNavigationMigration(column.Display?.handleError)}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] | tofixedsizeinteger : $safeNavigationMigration(column.Display?.completingCaracter) : $safeNavigationMigration(column.Display?.width) }}\r\n </span>\r\n <span *ngSwitchDefault [innerText]=\"column.Property == 'Id' ? (row[column.Property] < 0 ? '' : row[column.Property]) : row[column.Property]\">\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"isUndefined(row[column.Property])\">\r\n <span *ngIf=\"!isUndefined($safeNavigationMigration(column.Display?.nullCaseText))\" class=\"mw-invalid\">\r\n {{ column.Display?.nullCaseText }}\r\n </span>\r\n\r\n <span *ngIf=\"isUndefined($safeNavigationMigration(column.Display?.nullCaseText))\">\r\n &nbsp;&nbsp;&nbsp;\r\n </span>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </alg-datagrid-cell>\r\n </td>\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <!-- Colonne vide de fin : clic droit = menu de la dernière colonne. -->\r\n <td (contextmenu)=\"openContextMenu($event, row, rcolumns[rcolumns.length - 1])\"></td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n\r\n <tfoot>\r\n <tr class=\"empty-row\" *ngIf=\"hasAggregates\">\r\n <td></td>\r\n </tr>\r\n <tr class=\"aggregation-row\" *ngIf=\"hasAggregates\">\r\n <td class=\"row-state\"></td>\r\n <td *ngFor=\"let column of rcolumns; index as i\" [attr.class]=\"'cell' | gridStyle : ctx : { column : column, index : i }\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\">\r\n\r\n <ng-container *ngFor=\"let agg of columnAggregates[column.Property]\">\r\n\r\n <span class=\"agg-label\">{{ aggregationLabel(agg.op) }}</span>\r\n <span [ngSwitch]=\"agg.op === 'COUNT' ? 'count' : column.Display?.type\">\r\n\r\n <span *ngSwitchCase=\"'count'\">{{ agg.value | number: '1.0-0' }}</span>\r\n <span *ngSwitchCase=\"'percent'\">{{ agg.value | number: column.Display?.format || '1.0-3' }}</span>\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\">{{ agg.value | number: column.Display?.format || '1.0-3' }}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\" class=\"money\">\r\n {{ agg.value | currency: getColCurrency(column) }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\">\r\n {{agg.value | number: column.Display?.format || '1.0-3'}}\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n {{agg.value}}\r\n </span>\r\n\r\n </span>\r\n\r\n </ng-container>\r\n\r\n </td>\r\n\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <td class=\"last-column\"></td>\r\n </ng-container>\r\n\r\n </tr>\r\n </tfoot>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<!-- Emplacement visé par une colonne déplacée : trait orange sur la séparation des deux en-têtes. -->\r\n<div class=\"col-drop-indicator\" *ngIf=\"dropIndicator\"\r\n [ngStyle]=\"{ left: dropIndicator.left + 'px', top: dropIndicator.top + 'px', height: dropIndicator.height + 'px' }\"></div>\r\n\r\n<!-- Menu d'une colonne (flèche de l'en-tête ou clic droit sur une cellule), en trois zones séparées\r\n par un trait : Tri (sous-menu « Trier »), Actions (celles du panneau des actions), Fonctions (sous-menu « Fonctions »). -->\r\n<div class=\"header-menu\" *ngIf=\"headerMenu\"\r\n [ngStyle]=\"{ top: headerMenu.y + 'px', left: headerMenu.x + 'px', visibility: headerMenu.ready ? 'visible' : 'hidden' }\"\r\n (click)=\"$event.stopPropagation()\" (contextmenu)=\"$event.preventDefault()\">\r\n <ul>\r\n <!-- Tri : sous-menu « Trier » (croissant, décroissant, personnalisé). -->\r\n <li class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'sort'\"\r\n [class.checked]=\"this.facade.filter.isAsc(headerMenu.column.Property) || this.facade.filter.isDesc(headerMenu.column.Property) || this.facade.filter.getSortList().length > 1\"\r\n (mouseenter)=\"setSubmenu('sort')\" (click)=\"setSubmenu('sort')\">\r\n <i class=\"fa fa-sort\"></i><span>Trier</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu\" *ngIf=\"headerMenu.submenu === 'sort'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <li [class.checked]=\"this.facade.filter.isAsc(headerMenu.column.Property)\" (click)=\"sortColumn('asc')\">\r\n <i class=\"fa fa-sort-amount-asc\"></i><span>Par ordre croissant</span>\r\n </li>\r\n <li [class.checked]=\"this.facade.filter.isDesc(headerMenu.column.Property)\" (click)=\"sortColumn('desc')\">\r\n <i class=\"fa fa-sort-amount-desc\"></i><span>Par ordre décroissant</span>\r\n </li>\r\n <li [class.checked]=\"this.facade.filter.getSortList().length > 1\" (click)=\"openCustomSort()\">\r\n <i class=\"fa fa-sort\"></i><span>Tri personnalisé…</span>\r\n </li>\r\n </ul>\r\n </li>\r\n <!-- Filtre sur la valeur de la cellule (clic droit sur une cellule) : première ligne des filtres composés. -->\r\n <li *ngIf=\"cellFilterValue() !== undefined\" (click)=\"filterOnCell()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-filter\"></i><span>Filtrer sur « {{ cellFilterLabel() }} »</span>\r\n </li>\r\n <!-- Filtre avancé : valeurs distinctes de la colonne sur les résultats, à cocher (condition « dans la liste »). -->\r\n <li *ngIf=\"headerMenu.column.IsFilterEnabled\" class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'distinct'\"\r\n [class.checked]=\"this.facade.filter.getFilterValues(headerMenu.column.Property).length > 0\"\r\n (mouseenter)=\"setSubmenu('distinct')\" (click)=\"setSubmenu('distinct')\">\r\n <i class=\"fa fa-filter\"></i><span>Filtre avancé</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu header-submenu-distinct\" *ngIf=\"headerMenu.submenu === 'distinct'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <alg-grid-distinct-filter [facade]=\"this.facade\" [entityKey]=\"this.entityKey\" [property]=\"headerMenu.column.Property\"\r\n (done)=\"closeViewMenu()\" (loaded)=\"onViewMenuLoaded()\"></alg-grid-distinct-filter>\r\n </ul>\r\n </li>\r\n <!-- Affichage : vues personnalisées (cochée = affichée), puis « Modifier… ». -->\r\n <li *ngIf=\"this.facade.config.viewChooser\" class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'columns'\"\r\n (mouseenter)=\"setSubmenu('columns')\" (click)=\"setSubmenu('columns')\">\r\n <i class=\"fa fa-columns\"></i><span>Affichage</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu header-submenu-columns\" *ngIf=\"headerMenu.submenu === 'columns'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <alg-grid-view-menu [chooser]=\"this.facade.config.viewChooser\" (done)=\"closeViewMenu()\" (loaded)=\"onViewMenuLoaded()\"></alg-grid-view-menu>\r\n </ul>\r\n </li>\r\n <!-- Colonnes figées à gauche, de la première jusqu'à celle-ci. -->\r\n <li [class.checked]=\"isFrozen(columnIndex(headerMenu.column))\" (click)=\"toggleFrozen()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-thumb-tack\"></i>\r\n <span>{{ frozenUntil === columnIndex(headerMenu.column) ? 'Libérer les colonnes' : 'Figer jusqu\\'à cette colonne' }}</span>\r\n </li>\r\n <li *ngIf=\"frozenUntil !== undefined && frozenUntil !== columnIndex(headerMenu.column)\"\r\n (click)=\"unfreezeColumns()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-unlock\"></i><span>Libérer les colonnes</span>\r\n </li>\r\n\r\n <!-- Actions -->\r\n <ng-container *ngIf=\"visibleActions.length > 0\">\r\n <li class=\"separator\"></li>\r\n <ng-container *ngFor=\"let action of visibleActions\">\r\n <ng-container *ngIf=\"{ disabled: (action.disabled$ | async) } as state\">\r\n <li class=\"menu-action\" [class.disabled]=\"state.disabled\"\r\n (click)=\"executeMenuAction(action, state.disabled)\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <img class=\"menu-action-icon\" [src]=\"getActionImageUrl(action.icon)\" [alt]=\"action.title\" />\r\n <span>{{ action.title }}</span>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Affichage -->\r\n <li class=\"separator\"></li>\r\n <li class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'display'\"\r\n (mouseenter)=\"setSubmenu('display')\" (click)=\"setSubmenu('display')\">\r\n <i class=\"fa fa-calculator\"></i><span>Fonctions</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu\" *ngIf=\"headerMenu.submenu === 'display'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <li *ngFor=\"let op of getAggregationOptions(headerMenu.column)\"\r\n [class.checked]=\"activeAggregations[headerMenu.column.Property] === op\"\r\n (click)=\"aggregateColumn(op)\">\r\n <i class=\"fa fa-check\"></i><span>{{ aggregationLabel(op) }}</span>\r\n </li>\r\n <ng-container *ngIf=\"activeAggregations[headerMenu.column.Property]\">\r\n <li class=\"separator\"></li>\r\n <li (click)=\"aggregateColumn(null)\">\r\n <i class=\"fa fa-times\"></i><span>Ne plus afficher</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n",
19222
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{flex:1}.header.last-column{border-left:none!important;width:100%}table thead .sorting,table thead .sorting_asc,table thead .sorting_desc,table thead .sorting_asc_disabled,table thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table thead th:first-child,table tfoot tr:first-child{position:sticky;left:0;z-index:2}table tbody th:first-child{position:sticky;left:0;z-index:1;border-right:none}table tbody th:first-child div{text-align:center;vertical-align:middle;line-height:20px}table tbody tr.row-odd th:first-child{background:#ebf0ff}table tbody tr.selected.row-odd.mw-invalid th:first-child,table tbody tr.selected.row-even.mw-invalid th:first-child,table tbody tr.selected.row-odd.mw-warning th:first-child,table tbody tr.selected.row-even.mw-warning th:first-child,table tbody tr.selected.row-even th:first-child,table tbody tr.selected.row-odd th:first-child{background-color:#8ea7f8;color:#fff}table tbody tr.row-odd.mw-invalid th:first-child,table tbody tr.row-even.mw-invalid th:first-child{background-color:#f2dede}table tbody tr.row-odd.mw-warning th:first-child,table tbody tr.row-even.mw-warning th:first-child{background-color:#fff4de}table thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:#fff;border-left:1px solid #3C5DC4;border-bottom:1px solid #3C5DC4}table thead .sorting{background-image:none;cursor:pointer}table thead .sorting_asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExQjM4MkY2QzVGRUYwRTJDNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFEQzYxNjIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFEQzYxNTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+z5ABTAAAAI5JREFUeNpi/P//PwO1ABMDFQELIQXVjfe4gFQbEJe11iv9otRl2UCcBcSphBQy4gszoKu0gNROIJYB4jtA7AF03V2SXQY0iBFIFUMNAgEVIM6DipPsTQcgDkQTSwRia5IMA9rOC6RqgVgQTQokXgOUZyfFZSFQF/zAgh2BOIjkCBjQRDtq2Khh9DAMIMAAT9AmNBDSXegAAAAASUVORK5CYII=);cursor:pointer}table thead .sorting_desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExQjM4MkY2QzVGRUYwRTJDNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFEQzYxQTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFEQzYxOTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1fsfwAAAAJdJREFUeNpi/P//PwO1ABMDFcGoYaOG0cMwFmyC1Y33IoHUAiD+h8MBGa31SvOJddk6IN4PxBxY8FEgXkO0N4G2/gRSLUD8GU3qPRA3A+U/kxpmIBege2U9EB/ApYERX6kBDDtlILUDiFWA+AkQuwNddY2s2ARqvAukJgDxbyCehM8gnLGJBmYDsSoQTyWkkHHQFo4AAQYAAA0piq4hbqwAAAAASUVORK5CYII=);cursor:pointer}table thead .sorting_asc_disabled,table thead .sorting_desc_disabled{background-image:none}.checkbok-container{align-items:center;margin:0;padding:0}.gridcell-container{padding:0;min-width:fit-content}.gridcell-container input[type=number]{display:block;size:1;font-size:10pt;width:100%!important;height:100%;margin:0!important;border:2px solid #F78383}.datagrid-custom-container{height:100%;overflow:auto;margin-left:-1px}.data-grid-datatable{table-layout:fixed;cursor:pointer;border-spacing:0px}.data-grid-datatable td{box-shadow:none;padding:2px 5px;white-space:nowrap}.data-grid-datatable td.row-state{padding:2px 5px;width:16px}.data-grid-datatable td.img{padding:2px 5px}.data-grid-datatable td.row-state img{height:16px;width:16px;margin-top:-3px;padding:0}.data-grid-datatable tr{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header{vertical-align:bottom;padding:2px 5px 2px 0;font-weight:400;color:#3c5dc4;white-space:nowrap;line-height:25px;min-width:32px;margin-bottom:5px}.header.img{min-width:16px}.header.row-state{min-width:27px;position:-webkit-sticky;position:sticky;top:0;left:0;z-index:2;background:#fff;border-left:none;border-right:none}.filter-header{background-color:#f7f7f7!important}.filter-header.disabled{background-color:#9fa9c7!important}.filter-header.row-state:hover:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"57\" height=\"57\" viewBox=\"0 0 57 57\">%0D%0A <path id=\"Rond_Croix\" data-name=\"Rond Croix\" d=\"M28.5,57A28.5,28.5,0,0,1,8.347,8.347,28.5,28.5,0,1,1,48.652,48.652,28.317,28.317,0,0,1,28.5,57Zm0-24.036h0l11.9,11.9L44.869,40.4,32.964,28.5,44.869,16.593,40.4,12.129,28.5,24.034,16.594,12.129l-4.465,4.464L24.034,28.5,12.129,40.4l4.463,4.465L28.5,32.965Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 0 0 3px;filter:brightness(0) saturate(100%) invert(70%) sepia(93%) saturate(1540%) hue-rotate(309deg) brightness(105%) contrast(94%)}.filter-header-input{height:calc(100% - 2px);width:calc(100% - 2px);margin:0;border:none!important;background-color:#f7f7f7;padding:0 0 0 5px;color:#4d5a81}.header.row-state:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->%0D%0A<path fill=\"currentColor\" d=\"M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"/></svg>');background-repeat:no-repeat;margin:0 0 3px 5px;filter:brightness(0) saturate(100%) invert(56%) sepia(79%) saturate(2301%) hue-rotate(202deg) brightness(92%) contrast(91%)}.filter-header.last-column{border-left:none!important}.header label{cursor:pointer;margin-bottom:0;margin-right:10px;padding-left:5px;width:100%}.row-odd{background-color:#ebf0ff;border-left:1px solid #C1D0FD;border-bottom:1px solid #C1D0FD}.row-even{background-color:#f7faff;border-left:1px solid #C1D0FD;border-bottom:1px solid #C1D0FD}.error-row-icon{padding:2px;width:20px}.selected{background-color:#8ea7f8;color:#fff}.mw-invalid{font-weight:600;background-color:#f2dede;border:1px solid var(--red-error)}.mw-invalid td{background-color:#f2dede!important}.data-grid-datatable tbody tr.mw-invalid>td,.data-grid-datatable tbody tr.mw-invalid>th{box-shadow:inset 0 1px 0 var(--red-error),inset 0 -1px 0 var(--red-error)}span.mw-invalid{padding:0 3px;color:var(--red-error);background-color:transparent}.mw-warning.selected,.mw-invalid.selected{background-color:#8ea7f8}.mw-warning.selected td,.mw-invalid.selected td{background-color:#8ea7f8!important}.mw-warning{font-weight:600;background-color:#fff4de;border:1px solid var(--orange-algorima)}.mw-warning td{background-color:#fff4de!important}.mw-modified{font-weight:600;border:1px solid var(--main-bg-color)}.first-row{border-top:none}.last-row,.last-row td{border-bottom:none!important}.data-grid-datatable>tbody>tr{z-index:50}.image{position:relative;display:flex;flex-direction:row}.image img{height:20px;width:auto}td.money{position:relative}.tool-tip{visibility:hidden;background-color:#424242;color:#fff;text-align:left;border-radius:3px;font-size:15px;position:absolute;z-index:1;top:-10%;left:150%;opacity:0;transition:opacity .3s;padding:5px 15px;white-space:nowrap;overflow:visible}.tool-tip:after{content:\" \";position:absolute;top:50%;right:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent rgb(66,66,66) transparent transparent}.image:hover .tool-tip{visibility:visible;opacity:1}td.money:hover .tool-tip{visibility:visible;opacity:1;left:100%;height:28px;font-size:13px;margin-top:0;padding:5px 10px 10px}.disabled{pointer-events:none}.edit-mode{background-color:#fff;border:1px solid #4465C9;min-width:90px!important;height:30px!important}.edit-mode .form-group{min-height:0px}.edit-mode .inactivated{background-color:#dbe4ff80}.edit-mode .inactivated-fo{background-color:#dbe4ff}.edit-mode .ecartclass{border:2px solid #4465C9}.edit-mode .error-cell{font-weight:700;color:#f78383!important}.edit-mode .selected{color:#4d5a81}.highlight-1,.highlight-1.selected,.edit-mode.highlight-1.selected{background-color:#4d5a81!important;color:#fff!important}.highlight-2,.highlight-2.selected,.edit-mode.highlight-2.selected{background-color:#dbe4ff!important;color:#4d5a81!important}.highlight-3,.highlight-3.selected,.edit-mode.highlight-3.selected{background-color:#4465c9!important;color:#fff!important}.highlight-4,.highlight-4.selected,.edit-mode.highlight-4.selected{background-color:#f78383!important;color:#fff!important}.highlight-5,.highlight-5.selected{background-color:#4465c9!important;color:#fff}.fixed-column{position:-webkit-sticky;position:sticky;left:27px;z-index:2!important;border-left:none}.fixed-header{position:-webkit-sticky;position:sticky;left:27px;z-index:3!important;background:#fff}.has-focus{padding:0!important}.has-focus ::ng-deep input,.has-focus ::ng-deep input:focus-visible,.has-focus ::ng-deep input:focus{border-radius:.1;outline:none!important;width:100%;height:29px;min-height:0;margin:0;border:1px solid #4465C9}.has-focus ::ng-deep .form-group{margin-bottom:0;min-height:0}.has-focus ::ng-deep .field-container{margin-bottom:0}.edit-mode.has-focus{width:90px!important}.bordered{border-left:1px solid #14358f!important;border-right:1px solid #14358f!important}.match-keywords{color:var(--main-bg-color);font-weight:700}.datagrid-img img{height:20px;width:20px}.right-align{text-align:right}.left-align{text-align:left}.detail-div{height:0px;overflow:hidden;transition:all .2s linear;width:100%}.fa-custom{font-size:smaller}.detail-div-show{height:150px;transition:all .2s linear}.toggleable{visibility:collapse}.toggleable-show{visibility:visible}.toggle-button-down{transform:rotate(90deg);transition:all .2s linear}.no-result{color:#5272d3;height:100%;width:100%;padding:15px 15px 150px}.new-rowstate{display:flex;flex-direction:row;align-items:center;align-self:center;height:100%;width:100%}.new-rowstate span{height:100%;width:100%;margin-top:-6px}.context-menu{position:absolute;background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);box-shadow:0 4px 12px #0000004d;padding:8px;z-index:1000;min-width:75px;max-width:250px;transition:all .3s ease-in-out}.context-menu ul{list-style:none;margin:0;padding:0}.context-menu li{padding:10px 14px;cursor:pointer;border-radius:8px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.context-menu li:hover{background:linear-gradient(135deg,#ffffff4d,#ffffff1a);transform:scale(1.02)}.context-menu li:active{transform:scale(.98)}.grid-container{overflow:auto;position:relative}.aggregation-row{position:sticky;bottom:0;z-index:50;background:#f7faff!important;background-color:#f7faff!important;font-weight:700;border-top:1px solid #4D5A81!important;border-bottom:1px solid #4D5A81!important}.aggregation-row td{background:#f7faff!important;background-color:#f7faff!important;border-top:1px solid #4D5A81!important;border-bottom:1px solid #4D5A81!important;border-left:none!important;border-right:none!important}.empty-row td{padding:0}.col-resizer{position:absolute;top:0;right:-5px;z-index:4;width:10px;height:100%;cursor:col-resize}.col-resizer:hover{background:#3c5dc440}.data-grid-datatable td[data-sized]{overflow:hidden;text-overflow:ellipsis}:where(.data-grid-datatable tbody tr,.data-grid-datatable tfoot tr){background-color:#fff}.data-grid-datatable td[data-frozen]{position:sticky;z-index:1;background-color:inherit}.data-grid-datatable thead th[data-frozen]{position:sticky;z-index:3}.data-grid-datatable td[data-frozen]:has(+td:not([data-frozen])),.data-grid-datatable thead th[data-frozen]:has(+th:not([data-frozen])){box-shadow:inset -2px 0 #3c5dc459}table thead th.header{background-image:none!important;cursor:default}.header-cell{position:relative;display:flex;align-items:center;gap:2px}.header-cell label{flex:1 1 auto;cursor:default;margin:0;padding-left:2px;overflow:hidden;text-overflow:ellipsis}.header-cell.col-dragging{opacity:.8}.dg-column-ghost{border:1px solid #C1D0FD;box-sizing:border-box}.col-drop-indicator{position:fixed;z-index:3100;width:1px;border-radius:0;background:var(--orange-algorima, #f59d0f);pointer-events:none}.header-cell-end{justify-content:flex-end;align-items:center;height:25px}.header-handle{flex-shrink:0;display:flex;align-items:center;justify-content:center;box-sizing:content-box;width:17px;height:20px;padding:0 2px;color:#3c5dc4;opacity:.35;cursor:grab}.header-handle:hover{opacity:1}.header-handle:active{cursor:grabbing}.header-sort,.header-agg{flex-shrink:0;color:#3c5dc4;font-size:11px;font-style:normal}.header-menu-button{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:16px;height:18px;padding:0;border:0;border-radius:3px;background:none;color:#3c5dc4;opacity:.5;cursor:pointer}.header-menu-button:hover,.header-menu-button.open{opacity:1;background:#4465c926}.header-menu{position:fixed;z-index:3000;width:230px;padding:4px 0;background:#fff;border:1px solid #DBE4FF;border-radius:5px;box-shadow:0 4px 14px #0003}.header-menu ul{margin:0;padding:0;list-style:none}.header-menu li{display:flex;align-items:center;gap:8px;padding:5px 12px;color:#3c5dc4;font-size:12.5px;cursor:pointer}.header-menu li i{width:14px;text-align:center;visibility:visible}.header-menu li:hover{background:#dbe4ff}.header-menu li.checked{font-weight:600}.header-menu li.separator{height:1px;margin:4px 0;padding:0;background:#dbe4ff;cursor:default}.header-menu li .fa-check{visibility:hidden}.header-menu li.checked>.fa-check{visibility:visible}.header-menu li.menu-action.disabled{opacity:.45;cursor:default}.header-menu li.menu-action.disabled:hover{background:none}.header-menu .menu-action-icon{width:14px;height:14px;filter:brightness(0) saturate(100%) invert(36%) sepia(91%) saturate(628%) hue-rotate(191deg) brightness(89%) contrast(85%) brightness(75%)}.header-menu li.has-submenu{position:relative}.header-menu li.has-submenu.open{background:#dbe4ff}.header-menu li.has-submenu .submenu-caret{margin-left:auto}.header-menu .header-submenu{position:absolute;top:-5px;left:100%;width:200px;padding:4px 0;background:#fff;border:1px solid #DBE4FF;border-radius:5px;box-shadow:0 4px 14px #0003;font-weight:400}.header-menu .header-submenu.left{left:auto;right:100%}.header-menu .header-submenu.header-submenu-distinct{width:240px}.header-menu .header-submenu.header-submenu-columns{width:240px;max-height:320px;overflow-y:auto}.header-menu .header-submenu .column-choice input[type=checkbox]{width:14px;margin:0;pointer-events:none}.header-menu .header-submenu .submenu-loading{opacity:.6;cursor:default}.header-menu .header-submenu .view-lock{margin-left:auto;padding-left:8px;opacity:.5;font-size:11px}.header-menu .header-submenu.up{top:auto;bottom:-5px}.header-sort-rank{flex-shrink:0;color:#3c5dc4;font-size:9px}.aggregation-row .agg-label{margin-right:4px;color:#3c5dc4;font-size:10.5px;opacity:.7}.datagrid-custom-container:focus,.datagrid-custom-container:focus-visible{outline:none}.data-grid-datatable td .image ::ng-deep img{display:block}.data-grid-datatable td:has(>.grid-cursor){outline:2px solid #4465C9;outline-offset:-2px}.data-grid-datatable td:has(>.grid-range){background-color:#4465c940!important;box-shadow:inset 0 0 0 1px #4465c980;color:#4d5a81!important}.data-grid-datatable td:has(>.grid-range) ::ng-deep *{color:#4d5a81!important}.data-grid-datatable td:has(.grid-editor){padding:0!important;background-color:#fff}.grid-editor{display:block;height:23px;overflow:visible;color:#4d5a81}.grid-editor ::ng-deep .field-container,.grid-editor ::ng-deep .form-group,.grid-editor ::ng-deep .form-group>div,.grid-editor ::ng-deep .checkbox-container{margin:0!important;padding:0;min-height:0!important;height:23px}.grid-editor ::ng-deep .validation-message,.grid-editor ::ng-deep .checkbox-label{display:none}.grid-editor ::ng-deep input,.grid-editor ::ng-deep input:focus,.grid-editor ::ng-deep textarea{box-sizing:border-box;width:100%;height:23px!important;min-height:0!important;margin:0!important;padding:0 4px;border:1px solid #4465C9;border-radius:0;box-shadow:none;font-size:inherit;line-height:normal;resize:none}.grid-editor ::ng-deep input.ng-invalid.ng-touched,.grid-editor ::ng-deep input.ng-invalid.ng-dirty{border-color:#f78383}.grid-editor ::ng-deep input[type=checkbox]{width:auto}.grid-editor ::ng-deep .ng-select .ng-select-container{color:#4d5a81;min-height:0!important;height:23px!important;border-radius:0;border-color:#4465c9}.grid-editor ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:0}.grid-editor ::ng-deep .ng-select .ng-select-container .ng-value-container{padding-top:0}.grid-editor ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input>input{height:100%!important;border:none}.grid-editor ::ng-deep .form-group>div{flex:1;min-width:0;width:100%}.grid-editor ::ng-deep .ng-select{width:100%}.grid-editor ::ng-deep alg-selector{display:flex;width:100%;height:23px}.grid-editor ::ng-deep .input-select-default,.grid-editor ::ng-deep .input-select-default.with-button{flex:1;min-width:0;padding-right:0;margin-right:0}.grid-editor ::ng-deep .input-group-btn{float:none}.grid-editor ::ng-deep .btn,.grid-editor ::ng-deep .btn-32,.grid-editor ::ng-deep .btn-input-select{height:23px;width:23px;padding:0;line-height:1;border-radius:0}.grid-editor ::ng-deep .input-with-button{display:flex;height:23px}.grid-editor ::ng-deep .switch{margin:2px 0 0 4px;transform:scale(.7);transform-origin:left top}::ng-deep body.dg-column-dragging,::ng-deep body.dg-column-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}\n"],
18915
19223
  dependencies: [
18916
19224
  {
18917
19225
  kind: "directive",
@@ -19017,6 +19325,17 @@ var DataGridComponent = class DataGridComponent {
19017
19325
  inputs: ["chooser", "mobile"],
19018
19326
  outputs: ["done", "loaded"]
19019
19327
  },
19328
+ {
19329
+ kind: "component",
19330
+ type: GridDistinctFilterComponent,
19331
+ selector: "alg-grid-distinct-filter",
19332
+ inputs: [
19333
+ "facade",
19334
+ "entityKey",
19335
+ "property"
19336
+ ],
19337
+ outputs: ["done", "loaded"]
19338
+ },
19020
19339
  {
19021
19340
  kind: "component",
19022
19341
  type: ImageComponent,
@@ -19130,8 +19449,8 @@ i0.ɵɵngDeclareClassMetadata({
19130
19449
  provide: RowRefHost,
19131
19450
  useExisting: forwardRef(() => DataGridComponent)
19132
19451
  }],
19133
- template: "<div #datagridContainer [class]=\"this.datagridClass\" tabindex=\"-1\" (keydown)=\"onGridKeyDown($event)\" (scroll)=\"onGridScroll($event)\"\r\n (copy)=\"onCopy($event)\" (paste)=\"onPaste($event)\" (contextmenu)=\"openEmptyAreaContextMenu($event)\">\r\n <ng-container>\r\n <table class=\"data-grid-datatable\">\r\n <ng-container *ngIf=\"this.facade.style as ctx\">\r\n <ng-container *ngIf=\"this.facade.config.columns$ | async as rcolumns\">\r\n <thead>\r\n <tr>\r\n <th class=\"header row-state\" (click)=\"addFilterQuery()\"></th>\r\n <!-- En-tête : poignée de déplacement à gauche, intitulé, indicateur de tri,\r\n flèche du menu (tri, agrégation) à droite. Le clic ne trie plus. -->\r\n <th #thHeader *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-col-' + col.Property\"\r\n [attr.class]=\"'header' | gridStyle : ctx : { column : col }\"\r\n [style.width.px]=\"colWidth(col)\" [style.min-width.px]=\"colWidth(col)\" [style.max-width.px]=\"colWidth(col)\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\">\r\n <div class=\"header-cell\"\r\n [class.col-dragging]=\"draggedColumn === col.Property\">\r\n <span class=\"header-handle\" title=\"Déplacer la colonne\"\r\n (mousedown)=\"onHeaderMouseDown(col, $event)\">\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </span>\r\n <label>{{ getHeaderLabel(col) }}</label>\r\n <i *ngIf=\"this.facade.filter.isAsc(col.Property)\" class=\"fa fa-long-arrow-up header-sort\" title=\"Tri croissant\"></i>\r\n <i *ngIf=\"this.facade.filter.isDesc(col.Property)\" class=\"fa fa-long-arrow-down header-sort\" title=\"Tri décroissant\"></i>\r\n <sup *ngIf=\"this.facade.filter.sortRank(col.Property) > 0\" class=\"header-sort-rank\"\r\n title=\"Rang dans le tri personnalisé\">{{ this.facade.filter.sortRank(col.Property) }}</sup>\r\n <i *ngIf=\"activeAggregations[col.Property]\" class=\"header-agg\" [title]=\"'Agrégation : ' + aggregationLabel(activeAggregations[col.Property])\">Σ</i>\r\n <!-- Dernière colonne suivie de la colonne vide de fin : sa flèche est dans la colonne vide. -->\r\n <button type=\"button\" class=\"header-menu-button\" title=\"Trier, agréger\"\r\n *ngIf=\"!(ctx.enableLastColumnResize && i === rcolumns.length - 1)\"\r\n [class.open]=\"headerMenu?.column.Property === col.Property\"\r\n (click)=\"toggleHeaderMenu(col, $event)\">\r\n <i class=\"fa fa-caret-down\"></i>\r\n </button>\r\n </div>\r\n <!-- Bord droit : largeur de la colonne (tirer), ajustée au contenu (double clic). -->\r\n <span class=\"col-resizer\" title=\"Largeur de la colonne (double clic : ajuster au contenu)\"\r\n (mousedown)=\"startResize(col, $event)\" (dblclick)=\"autoFitColumn(col, $event)\"\r\n (click)=\"$event.stopPropagation()\"></span>\r\n </th>\r\n <th *ngIf=\"ctx.enableLastColumnResize\" #lastColumnHeader class=\"header last-column\"\r\n (contextmenu)=\"openHeaderContextMenu($event, rcolumns[rcolumns.length - 1])\">\r\n <div class=\"header-cell header-cell-end\" *ngIf=\"rcolumns.length > 0\">\r\n <button type=\"button\" class=\"header-menu-button\" title=\"Trier, agréger\"\r\n [class.open]=\"headerMenu?.column.Property === rcolumns[rcolumns.length - 1].Property\"\r\n (click)=\"toggleHeaderMenu(rcolumns[rcolumns.length - 1], $event)\">\r\n <i class=\"fa fa-caret-down\"></i>\r\n </button>\r\n </div>\r\n </th>\r\n\r\n </tr>\r\n <ng-container *ngIf=\"this.facade.filter.additionalQuery$ | async as additionalQuery\">\r\n <tr #thFilterRows *ngFor=\"let filterRow of additionalQuery.Rows;let i = index\" >\r\n <th class=\"filter-header row-state\" (click)=\"removeFilterQuery(i)\"></th>\r\n <th class=\"filter-header\" [ngClass]=\"{disabled: !col.IsFilterEnabled}\" *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-filter-' + i\">\r\n <input *ngIf=\"col.IsFilterEnabled\" type=\"text\"\r\n class=\"filter-header-input\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [attr.id]=\"guid.toString() + '-filter-input-' + col.Property\"\r\n [(ngModel)]=\"filterRow.ClausesByPropertyName.get(col.Property).FilterValue\"\r\n (ngModelChange)=\"handleFilterChanged($event, filterRow, col.Property)\"\r\n (change)=\"validateFilterChanged($event, filterRow, col.Property)\"\r\n />\r\n </th>\r\n <ng-container>\r\n <th #lastColumnFilter class=\"filter-header last-column\"></th>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"this.facade.data\">\r\n <ng-container *ngFor=\"let row of this.data.Values; let r = index;\">\r\n <tr\r\n [class]=\"'alternating' | gridStyle : ctx : { row : row, index : r, maxIndex : this.data.Values.length, hasAggregates: hasAggregates }\"\r\n [class.selected]=\"isRowSelected(row)\"\r\n [attr.id]=\"guid.toString() + '-row-' + row.Id\"\r\n (mousedown)=\"onRowMouseDown(row, $event)\"\r\n (mouseup)=\"onRowMouseUp(row, $event)\"\r\n (click)=\"onRowClick(row, $event)\"\r\n\r\n [rowRef]=\"guid + '-row-' + row.Id\"\r\n >\r\n\r\n <th [attr.class]=\"'rowstate' | gridStyle : ctx : { row : row }\">\r\n <ng-container *ngIf=\"selectionStyler.isModified(row) && !selectionStyler.isInvalid(row) && !selectionStyler.isWarning(row)\">\r\n <div class=\"new-rowstate\"><span>...</span></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/error.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isWarning(row) && !selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/warning.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ctx.displayDetail\">\r\n <button type=\"button\" [attr.id]=\"row.Id + '_button'\" class=\"toggle-button btn\" (click)=\"toggleDetail(row)\">\r\n <i class=\"fa fa-chevron-right fa-custom\"></i>\r\n </button>\r\n </ng-container>\r\n </th>\r\n\r\n <td *ngFor=\"let column of rcolumns; index as i\"\r\n [attr.id]=\"cellId(row, column)\"\r\n [style.max-width.px]=\"colWidth(column)\" [attr.data-sized]=\"colWidth(column) ? '' : null\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\"\r\n [class]=\"'cell' | gridStyle : ctx : { row : row,column : column,index : r }\"\r\n [class.selected]=\"isRowSelected(row)\"\r\n (mousedown)=\"onCellMouseDown(r, i, $event)\"\r\n (mouseenter)=\"onCellMouseEnter(r, i, $event)\"\r\n (click)=\"onCellClick(row, column)\"\r\n (dblclick)=\"onCellDblClick(row, column)\">\r\n\r\n <alg-datagrid-cell #dataGridCellComponent\r\n class=\"gridcell-container\"\r\n [entity]=\"row\"\r\n [isEditable]=\"canEditCell(row, column)\"\r\n [property]=\"column.Property\"\r\n [managed]=\"true\"\r\n [mode]=\"showEditor(row, column) ? 'edit' : 'view'\"\r\n [class.grid-cursor]=\"isCursorCell(row, column)\"\r\n [class.grid-range]=\"isInRange(r, i)\"\r\n (contextmenu)=\"openContextMenu($event, row, column)\">\r\n\r\n <ng-template alg-editMode>\r\n <!-- Éditeur du champ du formulaire qui correspond à la colonne (sinon déduit de la colonne), à la hauteur de la ligne. -->\r\n <alg-field class=\"grid-editor\"\r\n [field]=\"getEditField(column)\"\r\n [form]=\"getRowForm(row)\"\r\n [showLabel]=\"false\"\r\n (propertyChanged)=\"onCellChanged(row, $event)\"\r\n >\r\n <!-- [focusable]=\"cellFocus\" -->\r\n </alg-field>\r\n </ng-template>\r\n <ng-template alg-viewMode>\r\n\r\n <div [ngSwitch]=\"column.Display?.type\" *ngIf=\"!isUndefined(row[column.Property])\">\r\n <div *ngSwitchCase=\"'url'\">\r\n <a [routerLink]=\"[$safeNavigationMigration(column.Display?.baseUrl),row[column.Property]]\">\r\n {{ row.Id || row[column.Property] }}\r\n </a>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"20\" [imageWidth]=\"20\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img-file'\" class=\"image\">\r\n\r\n <alg-image\r\n [imageUrl]=\"this.getImageUrl(row,column)\" [wide]=\"true\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'wide-img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\" [wide]=\"true\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{row[column.Property]| date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'boolean'\">{{row[column.Property] ? 'OUI' : 'NON'}} </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">{{row[column.Property] | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\"\r\n class=\"money\">\r\n {{\r\n row[column.Property]\r\n | currency: column.Display?.currency\r\n || (column.Display?.sourceProperty && row[column.Display?.sourceProperty] ? row[column.Display?.sourceProperty] : false)\r\n || 'EUR' : 'symbol'\r\n\r\n | todefine: $safeNavigationMigration(column.Display?.handleError)\r\n }}\r\n\r\n <div class=\"tool-tip\" *ngIf=\"ctx.showOnToolTip(row,column)\">\r\n {{ctx.showOnToolTip(row,column)}}\r\n </div>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'percent'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * $safeNavigationMigration(column.Display?.multiplier) | percent : column.Display?.format\r\n || '1.0-2' | todefine: $safeNavigationMigration(column.Display?.handleError)}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * $safeNavigationMigration(column.Display?.multiplier) | number: column.Display?.format\r\n || '1.0-3' | todefine : $safeNavigationMigration(column.Display?.handleError)}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] | tofixedsizeinteger : $safeNavigationMigration(column.Display?.completingCaracter) : $safeNavigationMigration(column.Display?.width) }}\r\n </span>\r\n <span *ngSwitchDefault [innerText]=\"column.Property == 'Id' ? (row[column.Property] < 0 ? '' : row[column.Property]) : row[column.Property]\">\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"isUndefined(row[column.Property])\">\r\n <span *ngIf=\"!isUndefined($safeNavigationMigration(column.Display?.nullCaseText))\" class=\"mw-invalid\">\r\n {{ column.Display?.nullCaseText }}\r\n </span>\r\n\r\n <span *ngIf=\"isUndefined($safeNavigationMigration(column.Display?.nullCaseText))\">\r\n &nbsp;&nbsp;&nbsp;\r\n </span>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </alg-datagrid-cell>\r\n </td>\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <!-- Colonne vide de fin : clic droit = menu de la dernière colonne. -->\r\n <td (contextmenu)=\"openContextMenu($event, row, rcolumns[rcolumns.length - 1])\"></td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n\r\n <tfoot>\r\n <tr class=\"empty-row\" *ngIf=\"hasAggregates\">\r\n <td></td>\r\n </tr>\r\n <tr class=\"aggregation-row\" *ngIf=\"hasAggregates\">\r\n <td class=\"row-state\"></td>\r\n <td *ngFor=\"let column of rcolumns; index as i\" [attr.class]=\"'cell' | gridStyle : ctx : { column : column, index : i }\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\">\r\n\r\n <ng-container *ngFor=\"let agg of columnAggregates[column.Property]\">\r\n\r\n <span class=\"agg-label\">{{ aggregationLabel(agg.op) }}</span>\r\n <span [ngSwitch]=\"agg.op === 'COUNT' ? 'count' : column.Display?.type\">\r\n\r\n <span *ngSwitchCase=\"'count'\">{{ agg.value | number: '1.0-0' }}</span>\r\n <span *ngSwitchCase=\"'percent'\">{{ agg.value | number: column.Display?.format || '1.0-3' }}</span>\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\">{{ agg.value | number: column.Display?.format || '1.0-3' }}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\" class=\"money\">\r\n {{ agg.value | currency: getColCurrency(column) }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\">\r\n {{agg.value | number: column.Display?.format || '1.0-3'}}\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n {{agg.value}}\r\n </span>\r\n\r\n </span>\r\n\r\n </ng-container>\r\n\r\n </td>\r\n\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <td class=\"last-column\"></td>\r\n </ng-container>\r\n\r\n </tr>\r\n </tfoot>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<!-- Emplacement visé par une colonne déplacée : trait orange sur la séparation des deux en-têtes. -->\r\n<div class=\"col-drop-indicator\" *ngIf=\"dropIndicator\"\r\n [ngStyle]=\"{ left: dropIndicator.left + 'px', top: dropIndicator.top + 'px', height: dropIndicator.height + 'px' }\"></div>\r\n\r\n<!-- Menu d'une colonne (flèche de l'en-tête ou clic droit sur une cellule), en trois zones séparées\r\n par un trait : Tri, Actions (celles du panneau des actions), Fonctions (sous-menu « Fonctions »). -->\r\n<div class=\"header-menu\" *ngIf=\"headerMenu\"\r\n [ngStyle]=\"{ top: headerMenu.y + 'px', left: headerMenu.x + 'px', visibility: headerMenu.ready ? 'visible' : 'hidden' }\"\r\n (click)=\"$event.stopPropagation()\" (contextmenu)=\"$event.preventDefault()\">\r\n <ul>\r\n <!-- Tri -->\r\n <li [class.checked]=\"this.facade.filter.isAsc(headerMenu.column.Property)\" (click)=\"sortColumn('asc')\"\r\n (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-sort-amount-asc\"></i><span>Trier par ordre croissant</span>\r\n </li>\r\n <li [class.checked]=\"this.facade.filter.isDesc(headerMenu.column.Property)\" (click)=\"sortColumn('desc')\"\r\n (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-sort-amount-desc\"></i><span>Trier par ordre décroissant</span>\r\n </li>\r\n <li [class.checked]=\"this.facade.filter.getSortList().length > 1\" (click)=\"openCustomSort()\"\r\n (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-sort\"></i><span>Tri personnalisé…</span>\r\n </li>\r\n <!-- Filtre sur la valeur de la cellule (clic droit sur une cellule) : première ligne des filtres composés. -->\r\n <li *ngIf=\"cellFilterValue() !== undefined\" (click)=\"filterOnCell()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-filter\"></i><span>Filtrer sur « {{ cellFilterLabel() }} »</span>\r\n </li>\r\n <!-- Affichage : vues personnalisées (cochée = affichée), puis « Modifier… ». -->\r\n <li *ngIf=\"this.facade.config.viewChooser\" class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'columns'\"\r\n (mouseenter)=\"setSubmenu('columns')\" (click)=\"setSubmenu('columns')\">\r\n <i class=\"fa fa-columns\"></i><span>Affichage</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu header-submenu-columns\" *ngIf=\"headerMenu.submenu === 'columns'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <alg-grid-view-menu [chooser]=\"this.facade.config.viewChooser\" (done)=\"closeViewMenu()\" (loaded)=\"onViewMenuLoaded()\"></alg-grid-view-menu>\r\n </ul>\r\n </li>\r\n <!-- Colonnes figées à gauche, de la première jusqu'à celle-ci. -->\r\n <li [class.checked]=\"isFrozen(columnIndex(headerMenu.column))\" (click)=\"toggleFrozen()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-thumb-tack\"></i>\r\n <span>{{ frozenUntil === columnIndex(headerMenu.column) ? 'Libérer les colonnes' : 'Figer jusqu\\'à cette colonne' }}</span>\r\n </li>\r\n <li *ngIf=\"frozenUntil !== undefined && frozenUntil !== columnIndex(headerMenu.column)\"\r\n (click)=\"unfreezeColumns()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-unlock\"></i><span>Libérer les colonnes</span>\r\n </li>\r\n\r\n <!-- Actions -->\r\n <ng-container *ngIf=\"visibleActions.length > 0\">\r\n <li class=\"separator\"></li>\r\n <ng-container *ngFor=\"let action of visibleActions\">\r\n <ng-container *ngIf=\"{ disabled: (action.disabled$ | async) } as state\">\r\n <li class=\"menu-action\" [class.disabled]=\"state.disabled\"\r\n (click)=\"executeMenuAction(action, state.disabled)\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <img class=\"menu-action-icon\" [src]=\"getActionImageUrl(action.icon)\" [alt]=\"action.title\" />\r\n <span>{{ action.title }}</span>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Affichage -->\r\n <li class=\"separator\"></li>\r\n <li class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'display'\"\r\n (mouseenter)=\"setSubmenu('display')\" (click)=\"setSubmenu('display')\">\r\n <i class=\"fa fa-calculator\"></i><span>Fonctions</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu\" *ngIf=\"headerMenu.submenu === 'display'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <li *ngFor=\"let op of getAggregationOptions(headerMenu.column)\"\r\n [class.checked]=\"activeAggregations[headerMenu.column.Property] === op\"\r\n (click)=\"aggregateColumn(op)\">\r\n <i class=\"fa fa-check\"></i><span>{{ aggregationLabel(op) }}</span>\r\n </li>\r\n <ng-container *ngIf=\"activeAggregations[headerMenu.column.Property]\">\r\n <li class=\"separator\"></li>\r\n <li (click)=\"aggregateColumn(null)\">\r\n <i class=\"fa fa-times\"></i><span>Ne plus afficher</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n",
19134
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{flex:1}.header.last-column{border-left:none!important;width:100%}table thead .sorting,table thead .sorting_asc,table thead .sorting_desc,table thead .sorting_asc_disabled,table thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table thead th:first-child,table tfoot tr:first-child{position:sticky;left:0;z-index:2}table tbody th:first-child{position:sticky;left:0;z-index:1;border-right:none}table tbody th:first-child div{text-align:center;vertical-align:middle;line-height:20px}table tbody tr.row-odd th:first-child{background:#ebf0ff}table tbody tr.selected.row-odd.mw-invalid th:first-child,table tbody tr.selected.row-even.mw-invalid th:first-child,table tbody tr.selected.row-odd.mw-warning th:first-child,table tbody tr.selected.row-even.mw-warning th:first-child,table tbody tr.selected.row-even th:first-child,table tbody tr.selected.row-odd th:first-child{background-color:#8ea7f8;color:#fff}table tbody tr.row-odd.mw-invalid th:first-child,table tbody tr.row-even.mw-invalid th:first-child{background-color:#f2dede}table tbody tr.row-odd.mw-warning th:first-child,table tbody tr.row-even.mw-warning th:first-child{background-color:#fff4de}table thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:#fff;border-left:1px solid #3C5DC4;border-bottom:1px solid #3C5DC4}table thead .sorting{background-image:none;cursor:pointer}table thead .sorting_asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExQjM4MkY2QzVGRUYwRTJDNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFEQzYxNjIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFEQzYxNTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+z5ABTAAAAI5JREFUeNpi/P//PwO1ABMDFQELIQXVjfe4gFQbEJe11iv9otRl2UCcBcSphBQy4gszoKu0gNROIJYB4jtA7AF03V2SXQY0iBFIFUMNAgEVIM6DipPsTQcgDkQTSwRia5IMA9rOC6RqgVgQTQokXgOUZyfFZSFQF/zAgh2BOIjkCBjQRDtq2Khh9DAMIMAAT9AmNBDSXegAAAAASUVORK5CYII=);cursor:pointer}table thead .sorting_desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExQjM4MkY2QzVGRUYwRTJDNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFEQzYxQTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFEQzYxOTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1fsfwAAAAJdJREFUeNpi/P//PwO1ABMDFcGoYaOG0cMwFmyC1Y33IoHUAiD+h8MBGa31SvOJddk6IN4PxBxY8FEgXkO0N4G2/gRSLUD8GU3qPRA3A+U/kxpmIBege2U9EB/ApYERX6kBDDtlILUDiFWA+AkQuwNddY2s2ARqvAukJgDxbyCehM8gnLGJBmYDsSoQTyWkkHHQFo4AAQYAAA0piq4hbqwAAAAASUVORK5CYII=);cursor:pointer}table thead .sorting_asc_disabled,table thead .sorting_desc_disabled{background-image:none}.checkbok-container{align-items:center;margin:0;padding:0}.gridcell-container{padding:0;min-width:fit-content}.gridcell-container input[type=number]{display:block;size:1;font-size:10pt;width:100%!important;height:100%;margin:0!important;border:2px solid #F78383}.datagrid-custom-container{height:100%;overflow:auto;margin-left:-1px}.data-grid-datatable{table-layout:fixed;cursor:pointer;border-spacing:0px}.data-grid-datatable td{box-shadow:none;padding:2px 5px;white-space:nowrap}.data-grid-datatable td.row-state{padding:2px 5px;width:16px}.data-grid-datatable td.img{padding:2px 5px}.data-grid-datatable td.row-state img{height:16px;width:16px;margin-top:-3px;padding:0}.data-grid-datatable tr{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header{vertical-align:bottom;padding:2px 5px 2px 0;font-weight:400;color:#3c5dc4;white-space:nowrap;line-height:25px;min-width:32px;margin-bottom:5px}.header.img{min-width:16px}.header.row-state{min-width:27px;position:-webkit-sticky;position:sticky;top:0;left:0;z-index:2;background:#fff;border-left:none;border-right:none}.filter-header{background-color:#f7f7f7!important}.filter-header.disabled{background-color:#9fa9c7!important}.filter-header.row-state:hover:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"57\" height=\"57\" viewBox=\"0 0 57 57\">%0D%0A <path id=\"Rond_Croix\" data-name=\"Rond Croix\" d=\"M28.5,57A28.5,28.5,0,0,1,8.347,8.347,28.5,28.5,0,1,1,48.652,48.652,28.317,28.317,0,0,1,28.5,57Zm0-24.036h0l11.9,11.9L44.869,40.4,32.964,28.5,44.869,16.593,40.4,12.129,28.5,24.034,16.594,12.129l-4.465,4.464L24.034,28.5,12.129,40.4l4.463,4.465L28.5,32.965Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 0 0 3px;filter:brightness(0) saturate(100%) invert(70%) sepia(93%) saturate(1540%) hue-rotate(309deg) brightness(105%) contrast(94%)}.filter-header-input{height:calc(100% - 2px);width:calc(100% - 2px);margin:0;border:none!important;background-color:#f7f7f7;padding:0 0 0 5px;color:#4d5a81}.header.row-state:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->%0D%0A<path fill=\"currentColor\" d=\"M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"/></svg>');background-repeat:no-repeat;margin:0 0 3px 5px;filter:brightness(0) saturate(100%) invert(56%) sepia(79%) saturate(2301%) hue-rotate(202deg) brightness(92%) contrast(91%)}.filter-header.last-column{border-left:none!important}.header label{cursor:pointer;margin-bottom:0;margin-right:10px;padding-left:5px;width:100%}.row-odd{background-color:#ebf0ff;border-left:1px solid #C1D0FD;border-bottom:1px solid #C1D0FD}.row-even{background-color:#f7faff;border-left:1px solid #C1D0FD;border-bottom:1px solid #C1D0FD}.error-row-icon{padding:2px;width:20px}.selected{background-color:#8ea7f8;color:#fff}.mw-invalid{font-weight:600;background-color:#f2dede;border:1px solid var(--red-error)}.mw-invalid td{background-color:#f2dede!important}.data-grid-datatable tbody tr.mw-invalid>td,.data-grid-datatable tbody tr.mw-invalid>th{box-shadow:inset 0 1px 0 var(--red-error),inset 0 -1px 0 var(--red-error)}span.mw-invalid{padding:0 3px;color:var(--red-error);background-color:transparent}.mw-warning.selected,.mw-invalid.selected{background-color:#8ea7f8}.mw-warning.selected td,.mw-invalid.selected td{background-color:#8ea7f8!important}.mw-warning{font-weight:600;background-color:#fff4de;border:1px solid var(--orange-algorima)}.mw-warning td{background-color:#fff4de!important}.mw-modified{font-weight:600;border:1px solid var(--main-bg-color)}.first-row{border-top:none}.last-row,.last-row td{border-bottom:none!important}.data-grid-datatable>tbody>tr{z-index:50}.image{position:relative;display:flex;flex-direction:row}.image img{height:20px;width:auto}td.money{position:relative}.tool-tip{visibility:hidden;background-color:#424242;color:#fff;text-align:left;border-radius:3px;font-size:15px;position:absolute;z-index:1;top:-10%;left:150%;opacity:0;transition:opacity .3s;padding:5px 15px;white-space:nowrap;overflow:visible}.tool-tip:after{content:\" \";position:absolute;top:50%;right:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent rgb(66,66,66) transparent transparent}.image:hover .tool-tip{visibility:visible;opacity:1}td.money:hover .tool-tip{visibility:visible;opacity:1;left:100%;height:28px;font-size:13px;margin-top:0;padding:5px 10px 10px}.disabled{pointer-events:none}.edit-mode{background-color:#fff;border:1px solid #4465C9;min-width:90px!important;height:30px!important}.edit-mode .form-group{min-height:0px}.edit-mode .inactivated{background-color:#dbe4ff80}.edit-mode .inactivated-fo{background-color:#dbe4ff}.edit-mode .ecartclass{border:2px solid #4465C9}.edit-mode .error-cell{font-weight:700;color:#f78383!important}.edit-mode .selected{color:#4d5a81}.highlight-1,.highlight-1.selected,.edit-mode.highlight-1.selected{background-color:#4d5a81!important;color:#fff!important}.highlight-2,.highlight-2.selected,.edit-mode.highlight-2.selected{background-color:#dbe4ff!important;color:#4d5a81!important}.highlight-3,.highlight-3.selected,.edit-mode.highlight-3.selected{background-color:#4465c9!important;color:#fff!important}.highlight-4,.highlight-4.selected,.edit-mode.highlight-4.selected{background-color:#f78383!important;color:#fff!important}.highlight-5,.highlight-5.selected{background-color:#4465c9!important;color:#fff}.fixed-column{position:-webkit-sticky;position:sticky;left:27px;z-index:2!important;border-left:none}.fixed-header{position:-webkit-sticky;position:sticky;left:27px;z-index:3!important;background:#fff}.has-focus{padding:0!important}.has-focus ::ng-deep input,.has-focus ::ng-deep input:focus-visible,.has-focus ::ng-deep input:focus{border-radius:.1;outline:none!important;width:100%;height:29px;min-height:0;margin:0;border:1px solid #4465C9}.has-focus ::ng-deep .form-group{margin-bottom:0;min-height:0}.has-focus ::ng-deep .field-container{margin-bottom:0}.edit-mode.has-focus{width:90px!important}.bordered{border-left:1px solid #14358f!important;border-right:1px solid #14358f!important}.match-keywords{color:var(--main-bg-color);font-weight:700}.datagrid-img img{height:20px;width:20px}.right-align{text-align:right}.left-align{text-align:left}.detail-div{height:0px;overflow:hidden;transition:all .2s linear;width:100%}.fa-custom{font-size:smaller}.detail-div-show{height:150px;transition:all .2s linear}.toggleable{visibility:collapse}.toggleable-show{visibility:visible}.toggle-button-down{transform:rotate(90deg);transition:all .2s linear}.no-result{color:#5272d3;height:100%;width:100%;padding:15px 15px 150px}.new-rowstate{display:flex;flex-direction:row;align-items:center;align-self:center;height:100%;width:100%}.new-rowstate span{height:100%;width:100%;margin-top:-6px}.context-menu{position:absolute;background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);box-shadow:0 4px 12px #0000004d;padding:8px;z-index:1000;min-width:75px;max-width:250px;transition:all .3s ease-in-out}.context-menu ul{list-style:none;margin:0;padding:0}.context-menu li{padding:10px 14px;cursor:pointer;border-radius:8px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.context-menu li:hover{background:linear-gradient(135deg,#ffffff4d,#ffffff1a);transform:scale(1.02)}.context-menu li:active{transform:scale(.98)}.grid-container{overflow:auto;position:relative}.aggregation-row{position:sticky;bottom:0;z-index:50;background:#f7faff!important;background-color:#f7faff!important;font-weight:700;border-top:1px solid #4D5A81!important;border-bottom:1px solid #4D5A81!important}.aggregation-row td{background:#f7faff!important;background-color:#f7faff!important;border-top:1px solid #4D5A81!important;border-bottom:1px solid #4D5A81!important;border-left:none!important;border-right:none!important}.empty-row td{padding:0}.col-resizer{position:absolute;top:0;right:-5px;z-index:4;width:10px;height:100%;cursor:col-resize}.col-resizer:hover{background:#3c5dc440}.data-grid-datatable td[data-sized]{overflow:hidden;text-overflow:ellipsis}:where(.data-grid-datatable tbody tr,.data-grid-datatable tfoot tr){background-color:#fff}.data-grid-datatable td[data-frozen]{position:sticky;z-index:1;background-color:inherit}.data-grid-datatable thead th[data-frozen]{position:sticky;z-index:3}.data-grid-datatable td[data-frozen]:has(+td:not([data-frozen])),.data-grid-datatable thead th[data-frozen]:has(+th:not([data-frozen])){box-shadow:inset -2px 0 #3c5dc459}table thead th.header{background-image:none!important;cursor:default}.header-cell{position:relative;display:flex;align-items:center;gap:2px}.header-cell label{flex:1 1 auto;cursor:default;margin:0;padding-left:2px;overflow:hidden;text-overflow:ellipsis}.header-cell.col-dragging{opacity:.8}.dg-column-ghost{border:1px solid #C1D0FD;box-sizing:border-box}.col-drop-indicator{position:fixed;z-index:3100;width:1px;border-radius:0;background:var(--orange-algorima, #f59d0f);pointer-events:none}.header-cell-end{justify-content:flex-end;align-items:center;height:25px}.header-handle{flex-shrink:0;display:flex;align-items:center;justify-content:center;box-sizing:content-box;width:17px;height:20px;padding:0 2px;color:#3c5dc4;opacity:.35;cursor:grab}.header-handle:hover{opacity:1}.header-handle:active{cursor:grabbing}.header-sort,.header-agg{flex-shrink:0;color:#3c5dc4;font-size:11px;font-style:normal}.header-menu-button{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:16px;height:18px;padding:0;border:0;border-radius:3px;background:none;color:#3c5dc4;opacity:.5;cursor:pointer}.header-menu-button:hover,.header-menu-button.open{opacity:1;background:#4465c926}.header-menu{position:fixed;z-index:3000;width:230px;padding:4px 0;background:#fff;border:1px solid #DBE4FF;border-radius:5px;box-shadow:0 4px 14px #0003}.header-menu ul{margin:0;padding:0;list-style:none}.header-menu li{display:flex;align-items:center;gap:8px;padding:5px 12px;color:#3c5dc4;font-size:12.5px;cursor:pointer}.header-menu li i{width:14px;text-align:center;visibility:visible}.header-menu li:hover{background:#dbe4ff}.header-menu li.checked{font-weight:600}.header-menu li.separator{height:1px;margin:4px 0;padding:0;background:#dbe4ff;cursor:default}.header-menu li .fa-check{visibility:hidden}.header-menu li.checked>.fa-check{visibility:visible}.header-menu li.menu-action.disabled{opacity:.45;cursor:default}.header-menu li.menu-action.disabled:hover{background:none}.header-menu .menu-action-icon{width:14px;height:14px}.header-menu li.has-submenu{position:relative}.header-menu li.has-submenu.open{background:#dbe4ff}.header-menu li.has-submenu .submenu-caret{margin-left:auto}.header-menu .header-submenu{position:absolute;top:-5px;left:100%;width:200px;padding:4px 0;background:#fff;border:1px solid #DBE4FF;border-radius:5px;box-shadow:0 4px 14px #0003;font-weight:400}.header-menu .header-submenu.left{left:auto;right:100%}.header-menu .header-submenu.header-submenu-columns{width:240px;max-height:320px;overflow-y:auto}.header-menu .header-submenu .column-choice input[type=checkbox]{width:14px;margin:0;pointer-events:none}.header-menu .header-submenu .submenu-loading{opacity:.6;cursor:default}.header-menu .header-submenu .view-lock{margin-left:auto;padding-left:8px;opacity:.5;font-size:11px}.header-menu .header-submenu.up{top:auto;bottom:-5px}.header-sort-rank{flex-shrink:0;color:#3c5dc4;font-size:9px}.aggregation-row .agg-label{margin-right:4px;color:#3c5dc4;font-size:10.5px;opacity:.7}.datagrid-custom-container:focus,.datagrid-custom-container:focus-visible{outline:none}.data-grid-datatable td .image ::ng-deep img{display:block}.data-grid-datatable td:has(>.grid-cursor){outline:2px solid #4465C9;outline-offset:-2px}.data-grid-datatable td:has(>.grid-range){background-color:#4465c940!important;box-shadow:inset 0 0 0 1px #4465c980;color:#4d5a81!important}.data-grid-datatable td:has(>.grid-range) ::ng-deep *{color:#4d5a81!important}.data-grid-datatable td:has(.grid-editor){padding:0!important;background-color:#fff}.grid-editor{display:block;height:23px;overflow:visible;color:#4d5a81}.grid-editor ::ng-deep .field-container,.grid-editor ::ng-deep .form-group,.grid-editor ::ng-deep .form-group>div,.grid-editor ::ng-deep .checkbox-container{margin:0!important;padding:0;min-height:0!important;height:23px}.grid-editor ::ng-deep .validation-message,.grid-editor ::ng-deep .checkbox-label{display:none}.grid-editor ::ng-deep input,.grid-editor ::ng-deep input:focus,.grid-editor ::ng-deep textarea{box-sizing:border-box;width:100%;height:23px!important;min-height:0!important;margin:0!important;padding:0 4px;border:1px solid #4465C9;border-radius:0;box-shadow:none;font-size:inherit;line-height:normal;resize:none}.grid-editor ::ng-deep input.ng-invalid.ng-touched,.grid-editor ::ng-deep input.ng-invalid.ng-dirty{border-color:#f78383}.grid-editor ::ng-deep input[type=checkbox]{width:auto}.grid-editor ::ng-deep .ng-select .ng-select-container{color:#4d5a81;min-height:0!important;height:23px!important;border-radius:0;border-color:#4465c9}.grid-editor ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:0}.grid-editor ::ng-deep .ng-select .ng-select-container .ng-value-container{padding-top:0}.grid-editor ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input>input{height:100%!important;border:none}.grid-editor ::ng-deep .form-group>div{flex:1;min-width:0;width:100%}.grid-editor ::ng-deep .ng-select{width:100%}.grid-editor ::ng-deep alg-selector{display:flex;width:100%;height:23px}.grid-editor ::ng-deep .input-select-default,.grid-editor ::ng-deep .input-select-default.with-button{flex:1;min-width:0;padding-right:0;margin-right:0}.grid-editor ::ng-deep .input-group-btn{float:none}.grid-editor ::ng-deep .btn,.grid-editor ::ng-deep .btn-32,.grid-editor ::ng-deep .btn-input-select{height:23px;width:23px;padding:0;line-height:1;border-radius:0}.grid-editor ::ng-deep .input-with-button{display:flex;height:23px}.grid-editor ::ng-deep .switch{margin:2px 0 0 4px;transform:scale(.7);transform-origin:left top}::ng-deep body.dg-column-dragging,::ng-deep body.dg-column-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}\n"]
19452
+ template: "<div #datagridContainer [class]=\"this.datagridClass\" tabindex=\"-1\" (keydown)=\"onGridKeyDown($event)\" (scroll)=\"onGridScroll($event)\"\r\n (copy)=\"onCopy($event)\" (paste)=\"onPaste($event)\" (contextmenu)=\"openEmptyAreaContextMenu($event)\">\r\n <ng-container>\r\n <table class=\"data-grid-datatable\">\r\n <ng-container *ngIf=\"this.facade.style as ctx\">\r\n <ng-container *ngIf=\"this.facade.config.columns$ | async as rcolumns\">\r\n <thead>\r\n <tr>\r\n <th class=\"header row-state\" (click)=\"addFilterQuery()\"></th>\r\n <!-- En-tête : poignée de déplacement à gauche, intitulé, indicateur de tri,\r\n flèche du menu (tri, agrégation) à droite. Le clic ne trie plus. -->\r\n <th #thHeader *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-col-' + col.Property\"\r\n [attr.class]=\"'header' | gridStyle : ctx : { column : col }\"\r\n [style.width.px]=\"colWidth(col)\" [style.min-width.px]=\"colWidth(col)\" [style.max-width.px]=\"colWidth(col)\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\">\r\n <div class=\"header-cell\"\r\n [class.col-dragging]=\"draggedColumn === col.Property\">\r\n <span class=\"header-handle\" title=\"Déplacer la colonne\"\r\n (mousedown)=\"onHeaderMouseDown(col, $event)\">\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </span>\r\n <label>{{ getHeaderLabel(col) }}</label>\r\n <i *ngIf=\"this.facade.filter.isAsc(col.Property)\" class=\"fa fa-long-arrow-up header-sort\" title=\"Tri croissant\"></i>\r\n <i *ngIf=\"this.facade.filter.isDesc(col.Property)\" class=\"fa fa-long-arrow-down header-sort\" title=\"Tri décroissant\"></i>\r\n <sup *ngIf=\"this.facade.filter.sortRank(col.Property) > 0\" class=\"header-sort-rank\"\r\n title=\"Rang dans le tri personnalisé\">{{ this.facade.filter.sortRank(col.Property) }}</sup>\r\n <i *ngIf=\"activeAggregations[col.Property]\" class=\"header-agg\" [title]=\"'Agrégation : ' + aggregationLabel(activeAggregations[col.Property])\">Σ</i>\r\n <!-- Dernière colonne suivie de la colonne vide de fin : sa flèche est dans la colonne vide. -->\r\n <button type=\"button\" class=\"header-menu-button\" title=\"Trier, agréger\"\r\n *ngIf=\"!(ctx.enableLastColumnResize && i === rcolumns.length - 1)\"\r\n [class.open]=\"headerMenu?.column.Property === col.Property\"\r\n (click)=\"toggleHeaderMenu(col, $event)\">\r\n <i class=\"fa fa-caret-down\"></i>\r\n </button>\r\n </div>\r\n <!-- Bord droit : largeur de la colonne (tirer), ajustée au contenu (double clic). -->\r\n <span class=\"col-resizer\" title=\"Largeur de la colonne (double clic : ajuster au contenu)\"\r\n (mousedown)=\"startResize(col, $event)\" (dblclick)=\"autoFitColumn(col, $event)\"\r\n (click)=\"$event.stopPropagation()\"></span>\r\n </th>\r\n <th *ngIf=\"ctx.enableLastColumnResize\" #lastColumnHeader class=\"header last-column\"\r\n (contextmenu)=\"openHeaderContextMenu($event, rcolumns[rcolumns.length - 1])\">\r\n <div class=\"header-cell header-cell-end\" *ngIf=\"rcolumns.length > 0\">\r\n <button type=\"button\" class=\"header-menu-button\" title=\"Trier, agréger\"\r\n [class.open]=\"headerMenu?.column.Property === rcolumns[rcolumns.length - 1].Property\"\r\n (click)=\"toggleHeaderMenu(rcolumns[rcolumns.length - 1], $event)\">\r\n <i class=\"fa fa-caret-down\"></i>\r\n </button>\r\n </div>\r\n </th>\r\n\r\n </tr>\r\n <ng-container *ngIf=\"this.facade.filter.additionalQuery$ | async as additionalQuery\">\r\n <tr #thFilterRows *ngFor=\"let filterRow of additionalQuery.Rows;let i = index\" >\r\n <th class=\"filter-header row-state\" (click)=\"removeFilterQuery(i)\"></th>\r\n <th class=\"filter-header\" [ngClass]=\"{disabled: !col.IsFilterEnabled}\" *ngFor=\"let col of rcolumns;let i = index\"\r\n [attr.id]=\"guid.toString() + '-filter-' + i\">\r\n <input *ngIf=\"col.IsFilterEnabled\" type=\"text\"\r\n class=\"filter-header-input\"\r\n name=\"keyword\"\r\n #uniquename=\"ngModel\"\r\n [attr.id]=\"guid.toString() + '-filter-input-' + col.Property\"\r\n [placeholder]=\"filterRow.ClausesByPropertyName.get(col.Property).FilterValues?.length ? 'Filtre avancé : ' + filterRow.ClausesByPropertyName.get(col.Property).FilterValues.length + ' valeur(s)' : ''\"\r\n [(ngModel)]=\"filterRow.ClausesByPropertyName.get(col.Property).FilterValue\"\r\n (ngModelChange)=\"handleFilterChanged($event, filterRow, col.Property)\"\r\n (change)=\"validateFilterChanged($event, filterRow, col.Property)\"\r\n />\r\n </th>\r\n <ng-container>\r\n <th #lastColumnFilter class=\"filter-header last-column\"></th>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"this.facade.data\">\r\n <ng-container *ngFor=\"let row of this.data.Values; let r = index;\">\r\n <tr\r\n [class]=\"'alternating' | gridStyle : ctx : { row : row, index : r, maxIndex : this.data.Values.length, hasAggregates: hasAggregates }\"\r\n [class.selected]=\"isRowSelected(row)\"\r\n [attr.id]=\"guid.toString() + '-row-' + row.Id\"\r\n (mousedown)=\"onRowMouseDown(row, $event)\"\r\n (mouseup)=\"onRowMouseUp(row, $event)\"\r\n (click)=\"onRowClick(row, $event)\"\r\n\r\n [rowRef]=\"guid + '-row-' + row.Id\"\r\n >\r\n\r\n <th [attr.class]=\"'rowstate' | gridStyle : ctx : { row : row }\">\r\n <ng-container *ngIf=\"selectionStyler.isModified(row) && !selectionStyler.isInvalid(row) && !selectionStyler.isWarning(row)\">\r\n <div class=\"new-rowstate\"><span>...</span></div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/error.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionStyler.isWarning(row) && !selectionStyler.isInvalid(row)\">\r\n <div> <img class=\"error-row-icon\" src=\"assets/images/warning.svg\" /> </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ctx.displayDetail\">\r\n <button type=\"button\" [attr.id]=\"row.Id + '_button'\" class=\"toggle-button btn\" (click)=\"toggleDetail(row)\">\r\n <i class=\"fa fa-chevron-right fa-custom\"></i>\r\n </button>\r\n </ng-container>\r\n </th>\r\n\r\n <td *ngFor=\"let column of rcolumns; index as i\"\r\n [attr.id]=\"cellId(row, column)\"\r\n [style.max-width.px]=\"colWidth(column)\" [attr.data-sized]=\"colWidth(column) ? '' : null\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\"\r\n [class]=\"'cell' | gridStyle : ctx : { row : row,column : column,index : r }\"\r\n [class.selected]=\"isRowSelected(row)\"\r\n (mousedown)=\"onCellMouseDown(r, i, $event)\"\r\n (mouseenter)=\"onCellMouseEnter(r, i, $event)\"\r\n (click)=\"onCellClick(row, column)\"\r\n (dblclick)=\"onCellDblClick(row, column)\">\r\n\r\n <alg-datagrid-cell #dataGridCellComponent\r\n class=\"gridcell-container\"\r\n [entity]=\"row\"\r\n [isEditable]=\"canEditCell(row, column)\"\r\n [property]=\"column.Property\"\r\n [managed]=\"true\"\r\n [mode]=\"showEditor(row, column) ? 'edit' : 'view'\"\r\n [class.grid-cursor]=\"isCursorCell(row, column)\"\r\n [class.grid-range]=\"isInRange(r, i)\"\r\n (contextmenu)=\"openContextMenu($event, row, column)\">\r\n\r\n <ng-template alg-editMode>\r\n <!-- Éditeur du champ du formulaire qui correspond à la colonne (sinon déduit de la colonne), à la hauteur de la ligne. -->\r\n <alg-field class=\"grid-editor\"\r\n [field]=\"getEditField(column)\"\r\n [form]=\"getRowForm(row)\"\r\n [showLabel]=\"false\"\r\n (propertyChanged)=\"onCellChanged(row, $event)\"\r\n >\r\n <!-- [focusable]=\"cellFocus\" -->\r\n </alg-field>\r\n </ng-template>\r\n <ng-template alg-viewMode>\r\n\r\n <div [ngSwitch]=\"column.Display?.type\" *ngIf=\"!isUndefined(row[column.Property])\">\r\n <div *ngSwitchCase=\"'url'\">\r\n <a [routerLink]=\"[$safeNavigationMigration(column.Display?.baseUrl),row[column.Property]]\">\r\n {{ row.Id || row[column.Property] }}\r\n </a>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"20\" [imageWidth]=\"20\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'img-file'\" class=\"image\">\r\n\r\n <alg-image\r\n [imageUrl]=\"this.getImageUrl(row,column)\" [wide]=\"true\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'wide-img'\" class=\"image\">\r\n <img *ngIf=\"column.Display?.imagePath?.length == 0\"\r\n [src]=\"(column.Display?.imgBase || '') + (column.Display?.sourceProperty ? row[column.Display?.sourceProperty] : row[column.Property])\" />\r\n\r\n <alg-image *ngIf=\"column.Display?.imagePath?.length != 0\" [wide]=\"true\"\r\n [imageUrl]=\"this.getEnumImageUrl(row,column)\" [imageHeight]=\"40\" [imageWidth]=\"40\">\r\n </alg-image>\r\n\r\n <div class=\"tool-tip\" *ngIf=\"!isUndefined(column.ToolTipProperty)\">\r\n {{ row[column.ToolTipProperty] }}\r\n </div>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{row[column.Property]| date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'boolean'\">{{row[column.Property] ? 'OUI' : 'NON'}} </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">{{row[column.Property] | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\"\r\n class=\"money\">\r\n {{\r\n row[column.Property]\r\n | currency: column.Display?.currency\r\n || (column.Display?.sourceProperty && row[column.Display?.sourceProperty] ? row[column.Display?.sourceProperty] : false)\r\n || 'EUR' : 'symbol'\r\n\r\n | todefine: $safeNavigationMigration(column.Display?.handleError)\r\n }}\r\n\r\n <div class=\"tool-tip\" *ngIf=\"ctx.showOnToolTip(row,column)\">\r\n {{ctx.showOnToolTip(row,column)}}\r\n </div>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'percent'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * $safeNavigationMigration(column.Display?.multiplier) | percent : column.Display?.format\r\n || '1.0-2' | todefine: $safeNavigationMigration(column.Display?.handleError)}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] * $safeNavigationMigration(column.Display?.multiplier) | number: column.Display?.format\r\n || '1.0-3' | todefine : $safeNavigationMigration(column.Display?.handleError)}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\"\r\n [class.red]=\"!row[column.Property] && column.Display?.handleError\">\r\n {{row[column.Property] | tofixedsizeinteger : $safeNavigationMigration(column.Display?.completingCaracter) : $safeNavigationMigration(column.Display?.width) }}\r\n </span>\r\n <span *ngSwitchDefault [innerText]=\"column.Property == 'Id' ? (row[column.Property] < 0 ? '' : row[column.Property]) : row[column.Property]\">\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"isUndefined(row[column.Property])\">\r\n <span *ngIf=\"!isUndefined($safeNavigationMigration(column.Display?.nullCaseText))\" class=\"mw-invalid\">\r\n {{ column.Display?.nullCaseText }}\r\n </span>\r\n\r\n <span *ngIf=\"isUndefined($safeNavigationMigration(column.Display?.nullCaseText))\">\r\n &nbsp;&nbsp;&nbsp;\r\n </span>\r\n </div>\r\n\r\n </ng-template>\r\n\r\n </alg-datagrid-cell>\r\n </td>\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <!-- Colonne vide de fin : clic droit = menu de la dernière colonne. -->\r\n <td (contextmenu)=\"openContextMenu($event, row, rcolumns[rcolumns.length - 1])\"></td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n\r\n <tfoot>\r\n <tr class=\"empty-row\" *ngIf=\"hasAggregates\">\r\n <td></td>\r\n </tr>\r\n <tr class=\"aggregation-row\" *ngIf=\"hasAggregates\">\r\n <td class=\"row-state\"></td>\r\n <td *ngFor=\"let column of rcolumns; index as i\" [attr.class]=\"'cell' | gridStyle : ctx : { column : column, index : i }\"\r\n [attr.data-frozen]=\"isFrozen(i) ? '' : null\" [style.left.px]=\"frozenLeft(i)\">\r\n\r\n <ng-container *ngFor=\"let agg of columnAggregates[column.Property]\">\r\n\r\n <span class=\"agg-label\">{{ aggregationLabel(agg.op) }}</span>\r\n <span [ngSwitch]=\"agg.op === 'COUNT' ? 'count' : column.Display?.type\">\r\n\r\n <span *ngSwitchCase=\"'count'\">{{ agg.value | number: '1.0-0' }}</span>\r\n <span *ngSwitchCase=\"'percent'\">{{ agg.value | number: column.Display?.format || '1.0-3' }}</span>\r\n <span *ngSwitchCase=\"'fixedsizeinteger'\">{{ agg.value | number: column.Display?.format || '1.0-3' }}</span>\r\n\r\n <span *ngSwitchCase=\"'money'\" class=\"money\">\r\n {{ agg.value | currency: getColCurrency(column) }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'date'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'datetime'\">\r\n {{agg.value | date: column.Display?.format || 'dd/MM/yyyy HH:mm:ss'}}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\">\r\n {{agg.value | number: column.Display?.format || '1.0-3'}}\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n {{agg.value}}\r\n </span>\r\n\r\n </span>\r\n\r\n </ng-container>\r\n\r\n </td>\r\n\r\n <ng-container *ngIf=\"ctx.enableLastColumnResize\">\r\n <td class=\"last-column\"></td>\r\n </ng-container>\r\n\r\n </tr>\r\n </tfoot>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<!-- Emplacement visé par une colonne déplacée : trait orange sur la séparation des deux en-têtes. -->\r\n<div class=\"col-drop-indicator\" *ngIf=\"dropIndicator\"\r\n [ngStyle]=\"{ left: dropIndicator.left + 'px', top: dropIndicator.top + 'px', height: dropIndicator.height + 'px' }\"></div>\r\n\r\n<!-- Menu d'une colonne (flèche de l'en-tête ou clic droit sur une cellule), en trois zones séparées\r\n par un trait : Tri (sous-menu « Trier »), Actions (celles du panneau des actions), Fonctions (sous-menu « Fonctions »). -->\r\n<div class=\"header-menu\" *ngIf=\"headerMenu\"\r\n [ngStyle]=\"{ top: headerMenu.y + 'px', left: headerMenu.x + 'px', visibility: headerMenu.ready ? 'visible' : 'hidden' }\"\r\n (click)=\"$event.stopPropagation()\" (contextmenu)=\"$event.preventDefault()\">\r\n <ul>\r\n <!-- Tri : sous-menu « Trier » (croissant, décroissant, personnalisé). -->\r\n <li class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'sort'\"\r\n [class.checked]=\"this.facade.filter.isAsc(headerMenu.column.Property) || this.facade.filter.isDesc(headerMenu.column.Property) || this.facade.filter.getSortList().length > 1\"\r\n (mouseenter)=\"setSubmenu('sort')\" (click)=\"setSubmenu('sort')\">\r\n <i class=\"fa fa-sort\"></i><span>Trier</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu\" *ngIf=\"headerMenu.submenu === 'sort'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <li [class.checked]=\"this.facade.filter.isAsc(headerMenu.column.Property)\" (click)=\"sortColumn('asc')\">\r\n <i class=\"fa fa-sort-amount-asc\"></i><span>Par ordre croissant</span>\r\n </li>\r\n <li [class.checked]=\"this.facade.filter.isDesc(headerMenu.column.Property)\" (click)=\"sortColumn('desc')\">\r\n <i class=\"fa fa-sort-amount-desc\"></i><span>Par ordre décroissant</span>\r\n </li>\r\n <li [class.checked]=\"this.facade.filter.getSortList().length > 1\" (click)=\"openCustomSort()\">\r\n <i class=\"fa fa-sort\"></i><span>Tri personnalisé…</span>\r\n </li>\r\n </ul>\r\n </li>\r\n <!-- Filtre sur la valeur de la cellule (clic droit sur une cellule) : première ligne des filtres composés. -->\r\n <li *ngIf=\"cellFilterValue() !== undefined\" (click)=\"filterOnCell()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-filter\"></i><span>Filtrer sur « {{ cellFilterLabel() }} »</span>\r\n </li>\r\n <!-- Filtre avancé : valeurs distinctes de la colonne sur les résultats, à cocher (condition « dans la liste »). -->\r\n <li *ngIf=\"headerMenu.column.IsFilterEnabled\" class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'distinct'\"\r\n [class.checked]=\"this.facade.filter.getFilterValues(headerMenu.column.Property).length > 0\"\r\n (mouseenter)=\"setSubmenu('distinct')\" (click)=\"setSubmenu('distinct')\">\r\n <i class=\"fa fa-filter\"></i><span>Filtre avancé</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu header-submenu-distinct\" *ngIf=\"headerMenu.submenu === 'distinct'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <alg-grid-distinct-filter [facade]=\"this.facade\" [entityKey]=\"this.entityKey\" [property]=\"headerMenu.column.Property\"\r\n (done)=\"closeViewMenu()\" (loaded)=\"onViewMenuLoaded()\"></alg-grid-distinct-filter>\r\n </ul>\r\n </li>\r\n <!-- Affichage : vues personnalisées (cochée = affichée), puis « Modifier… ». -->\r\n <li *ngIf=\"this.facade.config.viewChooser\" class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'columns'\"\r\n (mouseenter)=\"setSubmenu('columns')\" (click)=\"setSubmenu('columns')\">\r\n <i class=\"fa fa-columns\"></i><span>Affichage</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu header-submenu-columns\" *ngIf=\"headerMenu.submenu === 'columns'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <alg-grid-view-menu [chooser]=\"this.facade.config.viewChooser\" (done)=\"closeViewMenu()\" (loaded)=\"onViewMenuLoaded()\"></alg-grid-view-menu>\r\n </ul>\r\n </li>\r\n <!-- Colonnes figées à gauche, de la première jusqu'à celle-ci. -->\r\n <li [class.checked]=\"isFrozen(columnIndex(headerMenu.column))\" (click)=\"toggleFrozen()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-thumb-tack\"></i>\r\n <span>{{ frozenUntil === columnIndex(headerMenu.column) ? 'Libérer les colonnes' : 'Figer jusqu\\'à cette colonne' }}</span>\r\n </li>\r\n <li *ngIf=\"frozenUntil !== undefined && frozenUntil !== columnIndex(headerMenu.column)\"\r\n (click)=\"unfreezeColumns()\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <i class=\"fa fa-unlock\"></i><span>Libérer les colonnes</span>\r\n </li>\r\n\r\n <!-- Actions -->\r\n <ng-container *ngIf=\"visibleActions.length > 0\">\r\n <li class=\"separator\"></li>\r\n <ng-container *ngFor=\"let action of visibleActions\">\r\n <ng-container *ngIf=\"{ disabled: (action.disabled$ | async) } as state\">\r\n <li class=\"menu-action\" [class.disabled]=\"state.disabled\"\r\n (click)=\"executeMenuAction(action, state.disabled)\" (mouseenter)=\"setSubmenu(undefined)\">\r\n <img class=\"menu-action-icon\" [src]=\"getActionImageUrl(action.icon)\" [alt]=\"action.title\" />\r\n <span>{{ action.title }}</span>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Affichage -->\r\n <li class=\"separator\"></li>\r\n <li class=\"has-submenu\" [class.open]=\"headerMenu.submenu === 'display'\"\r\n (mouseenter)=\"setSubmenu('display')\" (click)=\"setSubmenu('display')\">\r\n <i class=\"fa fa-calculator\"></i><span>Fonctions</span><i class=\"fa fa-caret-right submenu-caret\"></i>\r\n\r\n <ul class=\"header-submenu\" *ngIf=\"headerMenu.submenu === 'display'\"\r\n [class.left]=\"headerMenu.submenuLeft\" [class.up]=\"headerMenu.submenuUp\"\r\n (click)=\"$event.stopPropagation()\">\r\n <li *ngFor=\"let op of getAggregationOptions(headerMenu.column)\"\r\n [class.checked]=\"activeAggregations[headerMenu.column.Property] === op\"\r\n (click)=\"aggregateColumn(op)\">\r\n <i class=\"fa fa-check\"></i><span>{{ aggregationLabel(op) }}</span>\r\n </li>\r\n <ng-container *ngIf=\"activeAggregations[headerMenu.column.Property]\">\r\n <li class=\"separator\"></li>\r\n <li (click)=\"aggregateColumn(null)\">\r\n <i class=\"fa fa-times\"></i><span>Ne plus afficher</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n",
19453
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{flex:1}.header.last-column{border-left:none!important;width:100%}table thead .sorting,table thead .sorting_asc,table thead .sorting_desc,table thead .sorting_asc_disabled,table thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table thead th:first-child,table tfoot tr:first-child{position:sticky;left:0;z-index:2}table tbody th:first-child{position:sticky;left:0;z-index:1;border-right:none}table tbody th:first-child div{text-align:center;vertical-align:middle;line-height:20px}table tbody tr.row-odd th:first-child{background:#ebf0ff}table tbody tr.selected.row-odd.mw-invalid th:first-child,table tbody tr.selected.row-even.mw-invalid th:first-child,table tbody tr.selected.row-odd.mw-warning th:first-child,table tbody tr.selected.row-even.mw-warning th:first-child,table tbody tr.selected.row-even th:first-child,table tbody tr.selected.row-odd th:first-child{background-color:#8ea7f8;color:#fff}table tbody tr.row-odd.mw-invalid th:first-child,table tbody tr.row-even.mw-invalid th:first-child{background-color:#f2dede}table tbody tr.row-odd.mw-warning th:first-child,table tbody tr.row-even.mw-warning th:first-child{background-color:#fff4de}table thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:#fff;border-left:1px solid #3C5DC4;border-bottom:1px solid #3C5DC4}table thead .sorting{background-image:none;cursor:pointer}table thead .sorting_asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExQjM4MkY2QzVGRUYwRTJDNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFEQzYxNjIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFEQzYxNTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+z5ABTAAAAI5JREFUeNpi/P//PwO1ABMDFQELIQXVjfe4gFQbEJe11iv9otRl2UCcBcSphBQy4gszoKu0gNROIJYB4jtA7AF03V2SXQY0iBFIFUMNAgEVIM6DipPsTQcgDkQTSwRia5IMA9rOC6RqgVgQTQokXgOUZyfFZSFQF/zAgh2BOIjkCBjQRDtq2Khh9DAMIMAAT9AmNBDSXegAAAAASUVORK5CYII=);cursor:pointer}table thead .sorting_desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExQjM4MkY2QzVGRUYwRTJDNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFEQzYxQTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFEQzYxOTIyQzExMUUxQTFGMUFEQUQ1QjJBNTM4QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTFCMzgyRjZDNUZFRjBFMkM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1fsfwAAAAJdJREFUeNpi/P//PwO1ABMDFcGoYaOG0cMwFmyC1Y33IoHUAiD+h8MBGa31SvOJddk6IN4PxBxY8FEgXkO0N4G2/gRSLUD8GU3qPRA3A+U/kxpmIBege2U9EB/ApYERX6kBDDtlILUDiFWA+AkQuwNddY2s2ARqvAukJgDxbyCehM8gnLGJBmYDsSoQTyWkkHHQFo4AAQYAAA0piq4hbqwAAAAASUVORK5CYII=);cursor:pointer}table thead .sorting_asc_disabled,table thead .sorting_desc_disabled{background-image:none}.checkbok-container{align-items:center;margin:0;padding:0}.gridcell-container{padding:0;min-width:fit-content}.gridcell-container input[type=number]{display:block;size:1;font-size:10pt;width:100%!important;height:100%;margin:0!important;border:2px solid #F78383}.datagrid-custom-container{height:100%;overflow:auto;margin-left:-1px}.data-grid-datatable{table-layout:fixed;cursor:pointer;border-spacing:0px}.data-grid-datatable td{box-shadow:none;padding:2px 5px;white-space:nowrap}.data-grid-datatable td.row-state{padding:2px 5px;width:16px}.data-grid-datatable td.img{padding:2px 5px}.data-grid-datatable td.row-state img{height:16px;width:16px;margin-top:-3px;padding:0}.data-grid-datatable tr{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header{vertical-align:bottom;padding:2px 5px 2px 0;font-weight:400;color:#3c5dc4;white-space:nowrap;line-height:25px;min-width:32px;margin-bottom:5px}.header.img{min-width:16px}.header.row-state{min-width:27px;position:-webkit-sticky;position:sticky;top:0;left:0;z-index:2;background:#fff;border-left:none;border-right:none}.filter-header{background-color:#f7f7f7!important}.filter-header.disabled{background-color:#9fa9c7!important}.filter-header.row-state:hover:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"57\" height=\"57\" viewBox=\"0 0 57 57\">%0D%0A <path id=\"Rond_Croix\" data-name=\"Rond Croix\" d=\"M28.5,57A28.5,28.5,0,0,1,8.347,8.347,28.5,28.5,0,1,1,48.652,48.652,28.317,28.317,0,0,1,28.5,57Zm0-24.036h0l11.9,11.9L44.869,40.4,32.964,28.5,44.869,16.593,40.4,12.129,28.5,24.034,16.594,12.129l-4.465,4.464L24.034,28.5,12.129,40.4l4.463,4.465L28.5,32.965Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 0 0 3px;filter:brightness(0) saturate(100%) invert(70%) sepia(93%) saturate(1540%) hue-rotate(309deg) brightness(105%) contrast(94%)}.filter-header-input{height:calc(100% - 2px);width:calc(100% - 2px);margin:0;border:none!important;background-color:#f7f7f7;padding:0 0 0 5px;color:#4d5a81}.header.row-state:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->%0D%0A<path fill=\"currentColor\" d=\"M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"/></svg>');background-repeat:no-repeat;margin:0 0 3px 5px;filter:brightness(0) saturate(100%) invert(56%) sepia(79%) saturate(2301%) hue-rotate(202deg) brightness(92%) contrast(91%)}.filter-header.last-column{border-left:none!important}.header label{cursor:pointer;margin-bottom:0;margin-right:10px;padding-left:5px;width:100%}.row-odd{background-color:#ebf0ff;border-left:1px solid #C1D0FD;border-bottom:1px solid #C1D0FD}.row-even{background-color:#f7faff;border-left:1px solid #C1D0FD;border-bottom:1px solid #C1D0FD}.error-row-icon{padding:2px;width:20px}.selected{background-color:#8ea7f8;color:#fff}.mw-invalid{font-weight:600;background-color:#f2dede;border:1px solid var(--red-error)}.mw-invalid td{background-color:#f2dede!important}.data-grid-datatable tbody tr.mw-invalid>td,.data-grid-datatable tbody tr.mw-invalid>th{box-shadow:inset 0 1px 0 var(--red-error),inset 0 -1px 0 var(--red-error)}span.mw-invalid{padding:0 3px;color:var(--red-error);background-color:transparent}.mw-warning.selected,.mw-invalid.selected{background-color:#8ea7f8}.mw-warning.selected td,.mw-invalid.selected td{background-color:#8ea7f8!important}.mw-warning{font-weight:600;background-color:#fff4de;border:1px solid var(--orange-algorima)}.mw-warning td{background-color:#fff4de!important}.mw-modified{font-weight:600;border:1px solid var(--main-bg-color)}.first-row{border-top:none}.last-row,.last-row td{border-bottom:none!important}.data-grid-datatable>tbody>tr{z-index:50}.image{position:relative;display:flex;flex-direction:row}.image img{height:20px;width:auto}td.money{position:relative}.tool-tip{visibility:hidden;background-color:#424242;color:#fff;text-align:left;border-radius:3px;font-size:15px;position:absolute;z-index:1;top:-10%;left:150%;opacity:0;transition:opacity .3s;padding:5px 15px;white-space:nowrap;overflow:visible}.tool-tip:after{content:\" \";position:absolute;top:50%;right:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent rgb(66,66,66) transparent transparent}.image:hover .tool-tip{visibility:visible;opacity:1}td.money:hover .tool-tip{visibility:visible;opacity:1;left:100%;height:28px;font-size:13px;margin-top:0;padding:5px 10px 10px}.disabled{pointer-events:none}.edit-mode{background-color:#fff;border:1px solid #4465C9;min-width:90px!important;height:30px!important}.edit-mode .form-group{min-height:0px}.edit-mode .inactivated{background-color:#dbe4ff80}.edit-mode .inactivated-fo{background-color:#dbe4ff}.edit-mode .ecartclass{border:2px solid #4465C9}.edit-mode .error-cell{font-weight:700;color:#f78383!important}.edit-mode .selected{color:#4d5a81}.highlight-1,.highlight-1.selected,.edit-mode.highlight-1.selected{background-color:#4d5a81!important;color:#fff!important}.highlight-2,.highlight-2.selected,.edit-mode.highlight-2.selected{background-color:#dbe4ff!important;color:#4d5a81!important}.highlight-3,.highlight-3.selected,.edit-mode.highlight-3.selected{background-color:#4465c9!important;color:#fff!important}.highlight-4,.highlight-4.selected,.edit-mode.highlight-4.selected{background-color:#f78383!important;color:#fff!important}.highlight-5,.highlight-5.selected{background-color:#4465c9!important;color:#fff}.fixed-column{position:-webkit-sticky;position:sticky;left:27px;z-index:2!important;border-left:none}.fixed-header{position:-webkit-sticky;position:sticky;left:27px;z-index:3!important;background:#fff}.has-focus{padding:0!important}.has-focus ::ng-deep input,.has-focus ::ng-deep input:focus-visible,.has-focus ::ng-deep input:focus{border-radius:.1;outline:none!important;width:100%;height:29px;min-height:0;margin:0;border:1px solid #4465C9}.has-focus ::ng-deep .form-group{margin-bottom:0;min-height:0}.has-focus ::ng-deep .field-container{margin-bottom:0}.edit-mode.has-focus{width:90px!important}.bordered{border-left:1px solid #14358f!important;border-right:1px solid #14358f!important}.match-keywords{color:var(--main-bg-color);font-weight:700}.datagrid-img img{height:20px;width:20px}.right-align{text-align:right}.left-align{text-align:left}.detail-div{height:0px;overflow:hidden;transition:all .2s linear;width:100%}.fa-custom{font-size:smaller}.detail-div-show{height:150px;transition:all .2s linear}.toggleable{visibility:collapse}.toggleable-show{visibility:visible}.toggle-button-down{transform:rotate(90deg);transition:all .2s linear}.no-result{color:#5272d3;height:100%;width:100%;padding:15px 15px 150px}.new-rowstate{display:flex;flex-direction:row;align-items:center;align-self:center;height:100%;width:100%}.new-rowstate span{height:100%;width:100%;margin-top:-6px}.context-menu{position:absolute;background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);box-shadow:0 4px 12px #0000004d;padding:8px;z-index:1000;min-width:75px;max-width:250px;transition:all .3s ease-in-out}.context-menu ul{list-style:none;margin:0;padding:0}.context-menu li{padding:10px 14px;cursor:pointer;border-radius:8px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.context-menu li:hover{background:linear-gradient(135deg,#ffffff4d,#ffffff1a);transform:scale(1.02)}.context-menu li:active{transform:scale(.98)}.grid-container{overflow:auto;position:relative}.aggregation-row{position:sticky;bottom:0;z-index:50;background:#f7faff!important;background-color:#f7faff!important;font-weight:700;border-top:1px solid #4D5A81!important;border-bottom:1px solid #4D5A81!important}.aggregation-row td{background:#f7faff!important;background-color:#f7faff!important;border-top:1px solid #4D5A81!important;border-bottom:1px solid #4D5A81!important;border-left:none!important;border-right:none!important}.empty-row td{padding:0}.col-resizer{position:absolute;top:0;right:-5px;z-index:4;width:10px;height:100%;cursor:col-resize}.col-resizer:hover{background:#3c5dc440}.data-grid-datatable td[data-sized]{overflow:hidden;text-overflow:ellipsis}:where(.data-grid-datatable tbody tr,.data-grid-datatable tfoot tr){background-color:#fff}.data-grid-datatable td[data-frozen]{position:sticky;z-index:1;background-color:inherit}.data-grid-datatable thead th[data-frozen]{position:sticky;z-index:3}.data-grid-datatable td[data-frozen]:has(+td:not([data-frozen])),.data-grid-datatable thead th[data-frozen]:has(+th:not([data-frozen])){box-shadow:inset -2px 0 #3c5dc459}table thead th.header{background-image:none!important;cursor:default}.header-cell{position:relative;display:flex;align-items:center;gap:2px}.header-cell label{flex:1 1 auto;cursor:default;margin:0;padding-left:2px;overflow:hidden;text-overflow:ellipsis}.header-cell.col-dragging{opacity:.8}.dg-column-ghost{border:1px solid #C1D0FD;box-sizing:border-box}.col-drop-indicator{position:fixed;z-index:3100;width:1px;border-radius:0;background:var(--orange-algorima, #f59d0f);pointer-events:none}.header-cell-end{justify-content:flex-end;align-items:center;height:25px}.header-handle{flex-shrink:0;display:flex;align-items:center;justify-content:center;box-sizing:content-box;width:17px;height:20px;padding:0 2px;color:#3c5dc4;opacity:.35;cursor:grab}.header-handle:hover{opacity:1}.header-handle:active{cursor:grabbing}.header-sort,.header-agg{flex-shrink:0;color:#3c5dc4;font-size:11px;font-style:normal}.header-menu-button{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:16px;height:18px;padding:0;border:0;border-radius:3px;background:none;color:#3c5dc4;opacity:.5;cursor:pointer}.header-menu-button:hover,.header-menu-button.open{opacity:1;background:#4465c926}.header-menu{position:fixed;z-index:3000;width:230px;padding:4px 0;background:#fff;border:1px solid #DBE4FF;border-radius:5px;box-shadow:0 4px 14px #0003}.header-menu ul{margin:0;padding:0;list-style:none}.header-menu li{display:flex;align-items:center;gap:8px;padding:5px 12px;color:#3c5dc4;font-size:12.5px;cursor:pointer}.header-menu li i{width:14px;text-align:center;visibility:visible}.header-menu li:hover{background:#dbe4ff}.header-menu li.checked{font-weight:600}.header-menu li.separator{height:1px;margin:4px 0;padding:0;background:#dbe4ff;cursor:default}.header-menu li .fa-check{visibility:hidden}.header-menu li.checked>.fa-check{visibility:visible}.header-menu li.menu-action.disabled{opacity:.45;cursor:default}.header-menu li.menu-action.disabled:hover{background:none}.header-menu .menu-action-icon{width:14px;height:14px;filter:brightness(0) saturate(100%) invert(36%) sepia(91%) saturate(628%) hue-rotate(191deg) brightness(89%) contrast(85%) brightness(75%)}.header-menu li.has-submenu{position:relative}.header-menu li.has-submenu.open{background:#dbe4ff}.header-menu li.has-submenu .submenu-caret{margin-left:auto}.header-menu .header-submenu{position:absolute;top:-5px;left:100%;width:200px;padding:4px 0;background:#fff;border:1px solid #DBE4FF;border-radius:5px;box-shadow:0 4px 14px #0003;font-weight:400}.header-menu .header-submenu.left{left:auto;right:100%}.header-menu .header-submenu.header-submenu-distinct{width:240px}.header-menu .header-submenu.header-submenu-columns{width:240px;max-height:320px;overflow-y:auto}.header-menu .header-submenu .column-choice input[type=checkbox]{width:14px;margin:0;pointer-events:none}.header-menu .header-submenu .submenu-loading{opacity:.6;cursor:default}.header-menu .header-submenu .view-lock{margin-left:auto;padding-left:8px;opacity:.5;font-size:11px}.header-menu .header-submenu.up{top:auto;bottom:-5px}.header-sort-rank{flex-shrink:0;color:#3c5dc4;font-size:9px}.aggregation-row .agg-label{margin-right:4px;color:#3c5dc4;font-size:10.5px;opacity:.7}.datagrid-custom-container:focus,.datagrid-custom-container:focus-visible{outline:none}.data-grid-datatable td .image ::ng-deep img{display:block}.data-grid-datatable td:has(>.grid-cursor){outline:2px solid #4465C9;outline-offset:-2px}.data-grid-datatable td:has(>.grid-range){background-color:#4465c940!important;box-shadow:inset 0 0 0 1px #4465c980;color:#4d5a81!important}.data-grid-datatable td:has(>.grid-range) ::ng-deep *{color:#4d5a81!important}.data-grid-datatable td:has(.grid-editor){padding:0!important;background-color:#fff}.grid-editor{display:block;height:23px;overflow:visible;color:#4d5a81}.grid-editor ::ng-deep .field-container,.grid-editor ::ng-deep .form-group,.grid-editor ::ng-deep .form-group>div,.grid-editor ::ng-deep .checkbox-container{margin:0!important;padding:0;min-height:0!important;height:23px}.grid-editor ::ng-deep .validation-message,.grid-editor ::ng-deep .checkbox-label{display:none}.grid-editor ::ng-deep input,.grid-editor ::ng-deep input:focus,.grid-editor ::ng-deep textarea{box-sizing:border-box;width:100%;height:23px!important;min-height:0!important;margin:0!important;padding:0 4px;border:1px solid #4465C9;border-radius:0;box-shadow:none;font-size:inherit;line-height:normal;resize:none}.grid-editor ::ng-deep input.ng-invalid.ng-touched,.grid-editor ::ng-deep input.ng-invalid.ng-dirty{border-color:#f78383}.grid-editor ::ng-deep input[type=checkbox]{width:auto}.grid-editor ::ng-deep .ng-select .ng-select-container{color:#4d5a81;min-height:0!important;height:23px!important;border-radius:0;border-color:#4465c9}.grid-editor ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:0}.grid-editor ::ng-deep .ng-select .ng-select-container .ng-value-container{padding-top:0}.grid-editor ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input>input{height:100%!important;border:none}.grid-editor ::ng-deep .form-group>div{flex:1;min-width:0;width:100%}.grid-editor ::ng-deep .ng-select{width:100%}.grid-editor ::ng-deep alg-selector{display:flex;width:100%;height:23px}.grid-editor ::ng-deep .input-select-default,.grid-editor ::ng-deep .input-select-default.with-button{flex:1;min-width:0;padding-right:0;margin-right:0}.grid-editor ::ng-deep .input-group-btn{float:none}.grid-editor ::ng-deep .btn,.grid-editor ::ng-deep .btn-32,.grid-editor ::ng-deep .btn-input-select{height:23px;width:23px;padding:0;line-height:1;border-radius:0}.grid-editor ::ng-deep .input-with-button{display:flex;height:23px}.grid-editor ::ng-deep .switch{margin:2px 0 0 4px;transform:scale(.7);transform-origin:left top}::ng-deep body.dg-column-dragging,::ng-deep body.dg-column-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}\n"]
19135
19454
  }]
19136
19455
  }],
19137
19456
  ctorParameters: () => [
@@ -20165,6 +20484,8 @@ var FilterSummaryPanelComponent = class FilterSummaryPanelComponent {
20165
20484
  this.currentCriteria = null;
20166
20485
  this.hiddenFilters = [];
20167
20486
  this.destroy$ = new Subject();
20487
+ this.keptFilters = /* @__PURE__ */ new Set();
20488
+ this.openedProperty = null;
20168
20489
  }
20169
20490
  ngOnInit() {
20170
20491
  this.facade = this.entityFacadeRegistryService.getFacade(this.entityKey, this.guid);
@@ -20203,12 +20524,21 @@ var FilterSummaryPanelComponent = class FilterSummaryPanelComponent {
20203
20524
  }
20204
20525
  }
20205
20526
  updateFieldSummary(field) {
20206
- const displayedVal = this.getFilterSummaryValue(field);
20207
- if (displayedVal !== null && displayedVal !== void 0) this.filterList.push({
20527
+ let displayedVal = this.getFilterSummaryValue(field);
20528
+ const kept = this.canOpenList(field);
20529
+ if (displayedVal !== null && displayedVal !== void 0) {
20530
+ if (kept) this.keptFilters.add(field.PropertyName);
20531
+ } else if (kept && this.keptFilters.has(field.PropertyName)) displayedVal = this.emptyLabel(field);
20532
+ else return;
20533
+ this.filterList.push({
20208
20534
  DisplayedValue: displayedVal,
20209
20535
  Field: field
20210
20536
  });
20211
20537
  }
20538
+ emptyLabel(field) {
20539
+ const item = (Array.isArray(field.OriginalData) ? field.OriginalData : Array.isArray(field.Data) ? field.Data : []).find((d) => d?.[field.ValueMember] === -1);
20540
+ return item?.[field.DisplayMember] != null ? `${item[field.DisplayMember]}` : "Tous";
20541
+ }
20212
20542
  getFilterSummaryValue(field) {
20213
20543
  if (!field) return null;
20214
20544
  const fv = this.currentCriteria != null ? this.currentCriteria[field.PropertyName] : this.wrapper.form.get(field.PropertyName)?.value;
@@ -20223,10 +20553,42 @@ var FilterSummaryPanelComponent = class FilterSummaryPanelComponent {
20223
20553
  else return null;
20224
20554
  return displayedValue;
20225
20555
  }
20556
+ set listSelect(select) {
20557
+ if (select) setTimeout(() => {
20558
+ select.open();
20559
+ select.focus();
20560
+ });
20561
+ }
20562
+ canOpenList(field) {
20563
+ return (field.FilterType === FilterType.ComboBox || field.FilterType === FilterType.HorizComboBox) && Array.isArray(field.Data) && !field.MultipleSelection && !field.ReadOnly && !(field.PropertyName in this.facade.filter.lockedPanel);
20564
+ }
20565
+ openList(field) {
20566
+ this.openedProperty = field.PropertyName;
20567
+ }
20568
+ closeList() {
20569
+ this.openedProperty = null;
20570
+ }
20571
+ currentValue(field) {
20572
+ return this.currentCriteria != null ? this.currentCriteria[field.PropertyName] : this.wrapper.form.get(field.PropertyName)?.value;
20573
+ }
20574
+ selectValue(field, item) {
20575
+ this.closeList();
20576
+ if (Utilities.IsNil(item)) return;
20577
+ this.keptFilters.add(field.PropertyName);
20578
+ this.wrapper.form.get(field.PropertyName)?.setValue(item[field.ValueMember], { emitEvent: false });
20579
+ this.facade.filter.setFilter(this.wrapper.form.getRawValue());
20580
+ }
20581
+ canClear(field) {
20582
+ return field.IsClearable && !(field.PropertyName in this.facade.filter.lockedPanel);
20583
+ }
20226
20584
  resetFormControl(field) {
20227
- if (!field.IsClearable || field.PropertyName in this.facade.filter.lockedPanel) return;
20585
+ if (!this.canClear(field)) return;
20586
+ this.keptFilters.delete(field.PropertyName);
20228
20587
  const currentValue = this.currentCriteria != null ? this.currentCriteria[field.PropertyName] : this.wrapper.form.get(field.PropertyName)?.value;
20229
- if (Utilities.IsNil(currentValue) || currentValue === -1 || Utilities.isEmptyString(currentValue)) return;
20588
+ if (Utilities.IsNil(currentValue) || currentValue === -1 || Utilities.isEmptyString(currentValue)) {
20589
+ this.updateSummary();
20590
+ return;
20591
+ }
20230
20592
  let newValue;
20231
20593
  if (field.FilterType === FilterType.ComboBox) newValue = field.Data?.find((d) => d[field.ValueMember] === -1) ? -1 : null;
20232
20594
  else if (field.FilterType === FilterType.String) newValue = "";
@@ -20297,28 +20659,138 @@ var FilterSummaryPanelComponent = class FilterSummaryPanelComponent {
20297
20659
  entityKey: "entityKey",
20298
20660
  guid: "guid"
20299
20661
  },
20300
- ngImport: i0,
20301
- template: "<!-- <div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <div class=\"filter-summary\">\r\n <div class=\"filter\" [formGroup]=\"wrapper.form\">\r\n <ng-container *ngIf=\"filterList\">\r\n \r\n <div *ngFor=\"let field of Fields\" class=\"option\">\r\n <div [ngSwitch]=\"field.FilterType\">\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n [type]=\"field.InputType\"\r\n />\r\n </div>\r\n <div\r\n *ngSwitchCase=\"filterType.Integer\"\r\n class=\"form-group\"\r\n >\r\n <div>\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n type=\"number\"\r\n focusable\r\n ng-pattern=\"/^[0-9]+$/\"\r\n tabindex=\"0\"\r\n />\r\n </div>\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{\r\n field.Label\r\n }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n [readonly]=\"field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n\r\n<div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <!-- Filtre fixé par la vue affichée : non modifiable à l'écran. -->\r\n <div class=\"view-filter\" *ngIf=\"viewFilterText\" [class.editing]=\"editingViewFilter\">\r\n <i class=\"fa\" [class.fa-lock]=\"!editingViewFilter\" [class.fa-unlock]=\"editingViewFilter\"></i>\r\n <span class=\"view-filter-text\" [title]=\"viewFilterText\">{{ viewFilterText }}</span>\r\n <!-- Mode édition (propriétaire de la vue ou administrateur) : filtres débloqués, puis réenregistrés. -->\r\n <ng-container *ngIf=\"canEditViewFilter\">\r\n <button *ngIf=\"!editingViewFilter\" type=\"button\" class=\"view-filter-btn\" title=\"Débloquer les filtres de la vue pour les modifier\"\r\n (click)=\"editViewFilter()\"><i class=\"fa fa-pencil\"></i> Modifier</button>\r\n <ng-container *ngIf=\"editingViewFilter\">\r\n <button type=\"button\" class=\"view-filter-btn primary\" title=\"Enregistrer dans la vue le tri et les filtres de l'écran\"\r\n (click)=\"saveViewFilter()\"><i class=\"fa fa-check\"></i> Enregistrer</button>\r\n <button type=\"button\" class=\"view-filter-btn\" title=\"Revenir aux filtres de la vue\" (click)=\"cancelViewFilter()\">Annuler</button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"filter-summary\" *ngIf=\"filterList.length\">\r\n <div class=\"filter\">\r\n <ng-container *ngIf=\"filterList\">\r\n <div *ngFor=\"let field of filterList\">\r\n <div class=\"option\" [class.clearable]=\"field.Field.IsClearable\" (click)=\"resetFormControl(field.Field)\">\r\n {{field.Field.Label + ' : '+ field.DisplayedValue}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
20302
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.view-filter{display:flex;align-items:center;gap:6px;padding:4px 8px;border-bottom:solid 1px var(--main-bg-color);color:#4465c9;font-size:12px}.view-filter>.fa{opacity:.7}.view-filter.editing{background:#ebf0ff}.view-filter-text{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.view-filter-btn{flex:none;padding:1px 8px;border:1px solid #DBE4FF;border-radius:4px;background:#fff;color:#4465c9;font-size:12px;cursor:pointer}.view-filter-btn.primary{background:#4465c9;border-color:#4465c9;color:#fff}.filter-summary{padding:2px 3px;border-bottom:solid 1px var(--main-bg-color);display:flex}.option alg-field .form-group{display:flex!important}.filter-summary .filter{display:flex;flex-direction:row;padding:2px}.filter-summary .filter .option{display:block;float:left;position:relative;background-color:#dbe4ff;text-transform:capitalize;color:#4465c9;padding:5px 10px;margin:0 5px 0 0;border-radius:20px;cursor:pointer;-webkit-transition:background-color .1s ease-out;-moz-transition:background-color .1s ease-out;-o-transition:background-color .1s ease-out;transition:background-color .1s ease-out;border-left:1px solid #ffffff}.filter-summary .filter .option.clearable:hover{text-decoration:line-through}.filter-summary .filter:before,.filter-summary .filter:after{content:\"\";display:table}.filter-summary:before,.filter-summary:after{content:\"\";display:table}\n"],
20303
- dependencies: [{
20304
- kind: "directive",
20305
- type: i1$5.NgForOf,
20306
- selector: "[ngFor][ngForOf]",
20307
- inputs: [
20308
- "ngForOf",
20309
- "ngForTrackBy",
20310
- "ngForTemplate"
20311
- ]
20312
- }, {
20313
- kind: "directive",
20314
- type: i1$5.NgIf,
20315
- selector: "[ngIf]",
20316
- inputs: [
20317
- "ngIf",
20318
- "ngIfThen",
20319
- "ngIfElse"
20320
- ]
20662
+ viewQueries: [{
20663
+ propertyName: "listSelect",
20664
+ first: true,
20665
+ predicate: ["listSelect"],
20666
+ descendants: true
20321
20667
  }],
20668
+ ngImport: i0,
20669
+ template: "<!-- <div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <div class=\"filter-summary\">\r\n <div class=\"filter\" [formGroup]=\"wrapper.form\">\r\n <ng-container *ngIf=\"filterList\">\r\n \r\n <div *ngFor=\"let field of Fields\" class=\"option\">\r\n <div [ngSwitch]=\"field.FilterType\">\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n [type]=\"field.InputType\"\r\n />\r\n </div>\r\n <div\r\n *ngSwitchCase=\"filterType.Integer\"\r\n class=\"form-group\"\r\n >\r\n <div>\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n type=\"number\"\r\n focusable\r\n ng-pattern=\"/^[0-9]+$/\"\r\n tabindex=\"0\"\r\n />\r\n </div>\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{\r\n field.Label\r\n }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n [readonly]=\"field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n\r\n<div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <!-- Filtre fixé par la vue affichée : non modifiable à l'écran. -->\r\n <div class=\"view-filter\" *ngIf=\"viewFilterText\" [class.editing]=\"editingViewFilter\">\r\n <i class=\"fa\" [class.fa-lock]=\"!editingViewFilter\" [class.fa-unlock]=\"editingViewFilter\"></i>\r\n <span class=\"view-filter-text\" [title]=\"viewFilterText\">{{ viewFilterText }}</span>\r\n <!-- Mode édition (propriétaire de la vue ou administrateur) : filtres débloqués, puis réenregistrés. -->\r\n <ng-container *ngIf=\"canEditViewFilter\">\r\n <button *ngIf=\"!editingViewFilter\" type=\"button\" class=\"view-filter-btn\" title=\"Débloquer les filtres de la vue pour les modifier\"\r\n (click)=\"editViewFilter()\"><i class=\"fa fa-pencil\"></i> Modifier</button>\r\n <ng-container *ngIf=\"editingViewFilter\">\r\n <button type=\"button\" class=\"view-filter-btn primary\" title=\"Enregistrer dans la vue le tri et les filtres de l'écran\"\r\n (click)=\"saveViewFilter()\"><i class=\"fa fa-check\"></i> Enregistrer</button>\r\n <button type=\"button\" class=\"view-filter-btn\" title=\"Revenir aux filtres de la vue\" (click)=\"cancelViewFilter()\">Annuler</button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"filter-summary\" *ngIf=\"filterList.length\">\r\n <div class=\"filter\">\r\n <ng-container *ngIf=\"filterList\">\r\n <div *ngFor=\"let field of filterList\">\r\n <!-- Filtre à choix limités : un clic sur le rappel déroule sa liste dessous, le rappel reste affiché tel quel.\r\n La croix rouge supprime le filtre et son rappel,\r\n qui reste sinon affiché même sans valeur (« Tous »). -->\r\n <ng-container *ngIf=\"canOpenList(field.Field); else plainOption\">\r\n <div class=\"option list opens-list\" [class.opened]=\"openedProperty === field.Field.PropertyName\"\r\n title=\"Choisir {{ field.Field.Label }}\" (click)=\"openList(field.Field)\">\r\n {{field.Field.Label + ' : '+ field.DisplayedValue}}\r\n <i class=\"fa fa-caret-down option-caret\"></i>\r\n <i *ngIf=\"canClear(field.Field)\" class=\"fa fa-times option-clear\" title=\"Supprimer le filtre {{ field.Field.Label }}\"\r\n (click)=\"$event.stopPropagation(); resetFormControl(field.Field)\"></i>\r\n <!-- Liste invisible posée sur le rappel : seule sa liste déroulée s'affiche. -->\r\n <ng-select *ngIf=\"openedProperty === field.Field.PropertyName\"\r\n #listSelect\r\n class=\"option-select\"\r\n appendTo=\"body\"\r\n panelClass=\"filter-summary-panel\"\r\n [searchable]=\"false\"\r\n [items]=\"field.Field.Data\"\r\n [bindLabel]=\"field.Field.DisplayMember\"\r\n [bindValue]=\"field.Field.ValueMember\"\r\n [clearable]=\"false\"\r\n [ngModel]=\"currentValue(field.Field)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"selectValue(field.Field, $event)\"\r\n (close)=\"closeList()\"\r\n >\r\n </ng-select>\r\n </div>\r\n </ng-container>\r\n <ng-template #plainOption>\r\n <div class=\"option list\">\r\n {{field.Field.Label + ' : '+ field.DisplayedValue}}\r\n <i *ngIf=\"canClear(field.Field)\" class=\"fa fa-times option-clear\" title=\"Supprimer le filtre {{ field.Field.Label }}\"\r\n (click)=\"resetFormControl(field.Field)\"></i>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
20670
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.view-filter{display:flex;align-items:center;gap:6px;padding:4px 8px;border-bottom:solid 1px var(--main-bg-color);color:#4465c9;font-size:12px}.view-filter>.fa{opacity:.7}.view-filter.editing{background:#ebf0ff}.view-filter-text{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.view-filter-btn{flex:none;padding:1px 8px;border:1px solid #DBE4FF;border-radius:4px;background:#fff;color:#4465c9;font-size:12px;cursor:pointer}.view-filter-btn.primary{background:#4465c9;border-color:#4465c9;color:#fff}.filter-summary{padding:2px 3px;border-bottom:solid 1px var(--main-bg-color);display:flex}.option alg-field .form-group{display:flex!important}.filter-summary .filter{display:flex;flex-direction:row;padding:2px}.filter-summary .filter .option{display:block;float:left;position:relative;background-color:#dbe4ff;text-transform:capitalize;color:#4465c9;padding:5px 10px;margin:0 5px 0 0;border-radius:20px;cursor:pointer;-webkit-transition:background-color .1s ease-out;-moz-transition:background-color .1s ease-out;-o-transition:background-color .1s ease-out;transition:background-color .1s ease-out;border-left:1px solid #ffffff}.filter-summary .filter .option.list{display:flex;align-items:center;gap:6px;cursor:default}.filter-summary .filter .option.list .option-caret,.filter-summary .filter .option.list .option-clear{display:inline-block;padding:0 2px;cursor:pointer;opacity:.7}.filter-summary .filter .option.list .option-caret:hover,.filter-summary .filter .option.list .option-clear:hover{opacity:1}.filter-summary .filter .option.list .option-clear{color:#f78383;visibility:hidden}.filter-summary .filter .option.list:hover .option-clear{visibility:visible}.filter-summary .filter .option.list.opens-list{cursor:pointer}.filter-summary .filter .option.list.opened{border-radius:4px 4px 0 0;box-shadow:inset 0 0 0 1px #4465c9}.filter-summary .filter .option-select{position:absolute;inset:0;opacity:0}.filter-summary .filter .option-select ::ng-deep .ng-select-container{min-height:0;height:100%;cursor:pointer}::ng-deep .ng-dropdown-panel.filter-summary-panel{min-width:180px;margin-top:-1px;border:1px solid #4465C9;border-radius:0 0 4px 4px;overflow:hidden;box-shadow:0 4px 12px #0000001f}::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option{padding:5px 10px;background-color:#fff;color:#4465c9;font-weight:400}::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option.ng-option-marked,::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{background-color:#dbe4ff;color:#4465c9}::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option .ng-option-label{font-weight:400}.filter-summary .filter:before,.filter-summary .filter:after{content:\"\";display:table}.filter-summary:before,.filter-summary:after{content:\"\";display:table}\n"],
20671
+ dependencies: [
20672
+ {
20673
+ kind: "directive",
20674
+ type: i1$5.NgForOf,
20675
+ selector: "[ngFor][ngForOf]",
20676
+ inputs: [
20677
+ "ngForOf",
20678
+ "ngForTrackBy",
20679
+ "ngForTemplate"
20680
+ ]
20681
+ },
20682
+ {
20683
+ kind: "directive",
20684
+ type: i1$5.NgIf,
20685
+ selector: "[ngIf]",
20686
+ inputs: [
20687
+ "ngIf",
20688
+ "ngIfThen",
20689
+ "ngIfElse"
20690
+ ]
20691
+ },
20692
+ {
20693
+ kind: "directive",
20694
+ type: i5.NgControlStatus,
20695
+ selector: "[formControlName],[ngModel],[formControl]"
20696
+ },
20697
+ {
20698
+ kind: "directive",
20699
+ type: i5.NgModel,
20700
+ selector: "[ngModel]:not([formControlName]):not([formControl])",
20701
+ inputs: [
20702
+ "name",
20703
+ "disabled",
20704
+ "ngModel",
20705
+ "ngModelOptions"
20706
+ ],
20707
+ outputs: ["ngModelChange"],
20708
+ exportAs: ["ngModel"]
20709
+ },
20710
+ {
20711
+ kind: "component",
20712
+ type: i6.NgSelectComponent,
20713
+ selector: "ng-select",
20714
+ inputs: [
20715
+ "ariaLabelDropdown",
20716
+ "ariaLabel",
20717
+ "markFirst",
20718
+ "placeholder",
20719
+ "fixedPlaceholder",
20720
+ "notFoundText",
20721
+ "typeToSearchText",
20722
+ "preventToggleOnRightClick",
20723
+ "addTagText",
20724
+ "loadingText",
20725
+ "clearAllText",
20726
+ "removeText",
20727
+ "dropdownPosition",
20728
+ "appendTo",
20729
+ "outsideClickEvent",
20730
+ "loading",
20731
+ "closeOnSelect",
20732
+ "closeOnScroll",
20733
+ "hideSelected",
20734
+ "selectOnTab",
20735
+ "openOnEnter",
20736
+ "maxSelectedItems",
20737
+ "groupBy",
20738
+ "groupValue",
20739
+ "bufferAmount",
20740
+ "virtualScroll",
20741
+ "selectableGroup",
20742
+ "tabFocusOnClearButton",
20743
+ "selectableGroupAsModel",
20744
+ "searchFn",
20745
+ "trackByFn",
20746
+ "clearOnBackspace",
20747
+ "labelForId",
20748
+ "inputAttrs",
20749
+ "tabIndex",
20750
+ "readonly",
20751
+ "searchWhileComposing",
20752
+ "minTermLength",
20753
+ "editableSearchTerm",
20754
+ "ngClass",
20755
+ "panelClass",
20756
+ "typeahead",
20757
+ "multiple",
20758
+ "addTag",
20759
+ "searchable",
20760
+ "clearable",
20761
+ "clearKeepsDisabledOptions",
20762
+ "deselectOnClick",
20763
+ "clearSearchOnAdd",
20764
+ "compareWith",
20765
+ "keyDownFn",
20766
+ "popover",
20767
+ "bindLabel",
20768
+ "bindValue",
20769
+ "appearance",
20770
+ "isOpen",
20771
+ "items"
20772
+ ],
20773
+ outputs: [
20774
+ "bindLabelChange",
20775
+ "bindValueChange",
20776
+ "appearanceChange",
20777
+ "isOpenChange",
20778
+ "itemsChange",
20779
+ "blur",
20780
+ "focus",
20781
+ "change",
20782
+ "open",
20783
+ "close",
20784
+ "search",
20785
+ "clear",
20786
+ "add",
20787
+ "remove",
20788
+ "scroll",
20789
+ "scrollToEnd"
20790
+ ],
20791
+ exportAs: ["ngSelect"]
20792
+ }
20793
+ ],
20322
20794
  changeDetection: i0.ChangeDetectionStrategy.Eager
20323
20795
  });
20324
20796
  }
@@ -20334,8 +20806,8 @@ i0.ɵɵngDeclareClassMetadata({
20334
20806
  selector: "alg-filter-summary-panel",
20335
20807
  changeDetection: ChangeDetectionStrategy.Eager,
20336
20808
  standalone: false,
20337
- template: "<!-- <div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <div class=\"filter-summary\">\r\n <div class=\"filter\" [formGroup]=\"wrapper.form\">\r\n <ng-container *ngIf=\"filterList\">\r\n \r\n <div *ngFor=\"let field of Fields\" class=\"option\">\r\n <div [ngSwitch]=\"field.FilterType\">\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n [type]=\"field.InputType\"\r\n />\r\n </div>\r\n <div\r\n *ngSwitchCase=\"filterType.Integer\"\r\n class=\"form-group\"\r\n >\r\n <div>\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n type=\"number\"\r\n focusable\r\n ng-pattern=\"/^[0-9]+$/\"\r\n tabindex=\"0\"\r\n />\r\n </div>\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{\r\n field.Label\r\n }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n [readonly]=\"field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n\r\n<div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <!-- Filtre fixé par la vue affichée : non modifiable à l'écran. -->\r\n <div class=\"view-filter\" *ngIf=\"viewFilterText\" [class.editing]=\"editingViewFilter\">\r\n <i class=\"fa\" [class.fa-lock]=\"!editingViewFilter\" [class.fa-unlock]=\"editingViewFilter\"></i>\r\n <span class=\"view-filter-text\" [title]=\"viewFilterText\">{{ viewFilterText }}</span>\r\n <!-- Mode édition (propriétaire de la vue ou administrateur) : filtres débloqués, puis réenregistrés. -->\r\n <ng-container *ngIf=\"canEditViewFilter\">\r\n <button *ngIf=\"!editingViewFilter\" type=\"button\" class=\"view-filter-btn\" title=\"Débloquer les filtres de la vue pour les modifier\"\r\n (click)=\"editViewFilter()\"><i class=\"fa fa-pencil\"></i> Modifier</button>\r\n <ng-container *ngIf=\"editingViewFilter\">\r\n <button type=\"button\" class=\"view-filter-btn primary\" title=\"Enregistrer dans la vue le tri et les filtres de l'écran\"\r\n (click)=\"saveViewFilter()\"><i class=\"fa fa-check\"></i> Enregistrer</button>\r\n <button type=\"button\" class=\"view-filter-btn\" title=\"Revenir aux filtres de la vue\" (click)=\"cancelViewFilter()\">Annuler</button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"filter-summary\" *ngIf=\"filterList.length\">\r\n <div class=\"filter\">\r\n <ng-container *ngIf=\"filterList\">\r\n <div *ngFor=\"let field of filterList\">\r\n <div class=\"option\" [class.clearable]=\"field.Field.IsClearable\" (click)=\"resetFormControl(field.Field)\">\r\n {{field.Field.Label + ' : '+ field.DisplayedValue}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
20338
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.view-filter{display:flex;align-items:center;gap:6px;padding:4px 8px;border-bottom:solid 1px var(--main-bg-color);color:#4465c9;font-size:12px}.view-filter>.fa{opacity:.7}.view-filter.editing{background:#ebf0ff}.view-filter-text{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.view-filter-btn{flex:none;padding:1px 8px;border:1px solid #DBE4FF;border-radius:4px;background:#fff;color:#4465c9;font-size:12px;cursor:pointer}.view-filter-btn.primary{background:#4465c9;border-color:#4465c9;color:#fff}.filter-summary{padding:2px 3px;border-bottom:solid 1px var(--main-bg-color);display:flex}.option alg-field .form-group{display:flex!important}.filter-summary .filter{display:flex;flex-direction:row;padding:2px}.filter-summary .filter .option{display:block;float:left;position:relative;background-color:#dbe4ff;text-transform:capitalize;color:#4465c9;padding:5px 10px;margin:0 5px 0 0;border-radius:20px;cursor:pointer;-webkit-transition:background-color .1s ease-out;-moz-transition:background-color .1s ease-out;-o-transition:background-color .1s ease-out;transition:background-color .1s ease-out;border-left:1px solid #ffffff}.filter-summary .filter .option.clearable:hover{text-decoration:line-through}.filter-summary .filter:before,.filter-summary .filter:after{content:\"\";display:table}.filter-summary:before,.filter-summary:after{content:\"\";display:table}\n"]
20809
+ template: "<!-- <div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <div class=\"filter-summary\">\r\n <div class=\"filter\" [formGroup]=\"wrapper.form\">\r\n <ng-container *ngIf=\"filterList\">\r\n \r\n <div *ngFor=\"let field of Fields\" class=\"option\">\r\n <div [ngSwitch]=\"field.FilterType\">\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n [type]=\"field.InputType\"\r\n />\r\n </div>\r\n <div\r\n *ngSwitchCase=\"filterType.Integer\"\r\n class=\"form-group\"\r\n >\r\n <div>\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n type=\"number\"\r\n focusable\r\n ng-pattern=\"/^[0-9]+$/\"\r\n tabindex=\"0\"\r\n />\r\n </div>\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{\r\n field.Label\r\n }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n [readonly]=\"field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n\r\n<div class=\"clearfix\" *ngIf=\"!isEmptyFilter()\">\r\n <!-- Filtre fixé par la vue affichée : non modifiable à l'écran. -->\r\n <div class=\"view-filter\" *ngIf=\"viewFilterText\" [class.editing]=\"editingViewFilter\">\r\n <i class=\"fa\" [class.fa-lock]=\"!editingViewFilter\" [class.fa-unlock]=\"editingViewFilter\"></i>\r\n <span class=\"view-filter-text\" [title]=\"viewFilterText\">{{ viewFilterText }}</span>\r\n <!-- Mode édition (propriétaire de la vue ou administrateur) : filtres débloqués, puis réenregistrés. -->\r\n <ng-container *ngIf=\"canEditViewFilter\">\r\n <button *ngIf=\"!editingViewFilter\" type=\"button\" class=\"view-filter-btn\" title=\"Débloquer les filtres de la vue pour les modifier\"\r\n (click)=\"editViewFilter()\"><i class=\"fa fa-pencil\"></i> Modifier</button>\r\n <ng-container *ngIf=\"editingViewFilter\">\r\n <button type=\"button\" class=\"view-filter-btn primary\" title=\"Enregistrer dans la vue le tri et les filtres de l'écran\"\r\n (click)=\"saveViewFilter()\"><i class=\"fa fa-check\"></i> Enregistrer</button>\r\n <button type=\"button\" class=\"view-filter-btn\" title=\"Revenir aux filtres de la vue\" (click)=\"cancelViewFilter()\">Annuler</button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"filter-summary\" *ngIf=\"filterList.length\">\r\n <div class=\"filter\">\r\n <ng-container *ngIf=\"filterList\">\r\n <div *ngFor=\"let field of filterList\">\r\n <!-- Filtre à choix limités : un clic sur le rappel déroule sa liste dessous, le rappel reste affiché tel quel.\r\n La croix rouge supprime le filtre et son rappel,\r\n qui reste sinon affiché même sans valeur (« Tous »). -->\r\n <ng-container *ngIf=\"canOpenList(field.Field); else plainOption\">\r\n <div class=\"option list opens-list\" [class.opened]=\"openedProperty === field.Field.PropertyName\"\r\n title=\"Choisir {{ field.Field.Label }}\" (click)=\"openList(field.Field)\">\r\n {{field.Field.Label + ' : '+ field.DisplayedValue}}\r\n <i class=\"fa fa-caret-down option-caret\"></i>\r\n <i *ngIf=\"canClear(field.Field)\" class=\"fa fa-times option-clear\" title=\"Supprimer le filtre {{ field.Field.Label }}\"\r\n (click)=\"$event.stopPropagation(); resetFormControl(field.Field)\"></i>\r\n <!-- Liste invisible posée sur le rappel : seule sa liste déroulée s'affiche. -->\r\n <ng-select *ngIf=\"openedProperty === field.Field.PropertyName\"\r\n #listSelect\r\n class=\"option-select\"\r\n appendTo=\"body\"\r\n panelClass=\"filter-summary-panel\"\r\n [searchable]=\"false\"\r\n [items]=\"field.Field.Data\"\r\n [bindLabel]=\"field.Field.DisplayMember\"\r\n [bindValue]=\"field.Field.ValueMember\"\r\n [clearable]=\"false\"\r\n [ngModel]=\"currentValue(field.Field)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"selectValue(field.Field, $event)\"\r\n (close)=\"closeList()\"\r\n >\r\n </ng-select>\r\n </div>\r\n </ng-container>\r\n <ng-template #plainOption>\r\n <div class=\"option list\">\r\n {{field.Field.Label + ' : '+ field.DisplayedValue}}\r\n <i *ngIf=\"canClear(field.Field)\" class=\"fa fa-times option-clear\" title=\"Supprimer le filtre {{ field.Field.Label }}\"\r\n (click)=\"resetFormControl(field.Field)\"></i>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
20810
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.view-filter{display:flex;align-items:center;gap:6px;padding:4px 8px;border-bottom:solid 1px var(--main-bg-color);color:#4465c9;font-size:12px}.view-filter>.fa{opacity:.7}.view-filter.editing{background:#ebf0ff}.view-filter-text{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.view-filter-btn{flex:none;padding:1px 8px;border:1px solid #DBE4FF;border-radius:4px;background:#fff;color:#4465c9;font-size:12px;cursor:pointer}.view-filter-btn.primary{background:#4465c9;border-color:#4465c9;color:#fff}.filter-summary{padding:2px 3px;border-bottom:solid 1px var(--main-bg-color);display:flex}.option alg-field .form-group{display:flex!important}.filter-summary .filter{display:flex;flex-direction:row;padding:2px}.filter-summary .filter .option{display:block;float:left;position:relative;background-color:#dbe4ff;text-transform:capitalize;color:#4465c9;padding:5px 10px;margin:0 5px 0 0;border-radius:20px;cursor:pointer;-webkit-transition:background-color .1s ease-out;-moz-transition:background-color .1s ease-out;-o-transition:background-color .1s ease-out;transition:background-color .1s ease-out;border-left:1px solid #ffffff}.filter-summary .filter .option.list{display:flex;align-items:center;gap:6px;cursor:default}.filter-summary .filter .option.list .option-caret,.filter-summary .filter .option.list .option-clear{display:inline-block;padding:0 2px;cursor:pointer;opacity:.7}.filter-summary .filter .option.list .option-caret:hover,.filter-summary .filter .option.list .option-clear:hover{opacity:1}.filter-summary .filter .option.list .option-clear{color:#f78383;visibility:hidden}.filter-summary .filter .option.list:hover .option-clear{visibility:visible}.filter-summary .filter .option.list.opens-list{cursor:pointer}.filter-summary .filter .option.list.opened{border-radius:4px 4px 0 0;box-shadow:inset 0 0 0 1px #4465c9}.filter-summary .filter .option-select{position:absolute;inset:0;opacity:0}.filter-summary .filter .option-select ::ng-deep .ng-select-container{min-height:0;height:100%;cursor:pointer}::ng-deep .ng-dropdown-panel.filter-summary-panel{min-width:180px;margin-top:-1px;border:1px solid #4465C9;border-radius:0 0 4px 4px;overflow:hidden;box-shadow:0 4px 12px #0000001f}::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option{padding:5px 10px;background-color:#fff;color:#4465c9;font-weight:400}::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option.ng-option-marked,::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{background-color:#dbe4ff;color:#4465c9}::ng-deep .ng-dropdown-panel.filter-summary-panel .ng-dropdown-panel-items .ng-option .ng-option-label{font-weight:400}.filter-summary .filter:before,.filter-summary .filter:after{content:\"\";display:table}.filter-summary:before,.filter-summary:after{content:\"\";display:table}\n"]
20339
20811
  }]
20340
20812
  }],
20341
20813
  ctorParameters: () => [
@@ -20345,7 +20817,11 @@ i0.ɵɵngDeclareClassMetadata({
20345
20817
  ],
20346
20818
  propDecorators: {
20347
20819
  entityKey: [{ type: Input }],
20348
- guid: [{ type: Input }]
20820
+ guid: [{ type: Input }],
20821
+ listSelect: [{
20822
+ type: ViewChild,
20823
+ args: ["listSelect"]
20824
+ }]
20349
20825
  }
20350
20826
  });
20351
20827
  var ViewModelLoaderService = class ViewModelLoaderService {
@@ -20750,7 +21226,7 @@ var PropertyEditorComponent = class PropertyEditorComponent {
20750
21226
  }],
20751
21227
  ngImport: i0,
20752
21228
  template: "<form class=\"propertyGridform\">\r\n <ng-container *ngIf=\"this.viewModel$ | async as vm\">\r\n <alg-editor-tabset #tabs class=\"property-grid-tabset\" [sectionContext]=\"facade.sections\">\r\n <alg-editor-tab [active]=\"1 == 1\">\r\n <div [attr.id]=\"'content-0'\" class=\"property-grid-tab\">\r\n <div class=\"property-container\">\r\n <ng-container *ngIf=\"propertyForm\">\r\n <ng-container\r\n *ngFor=\" let section of vm.FieldSections;let i = index\">\r\n <div class=\"property-section-container\"\r\n [hidden]=\"this.isSectionHidden(section)\">\r\n <div class=\"property-section-title\">\r\n {{ section.Name }}\r\n </div>\r\n\r\n <div class=\"property-section-content\">\r\n <ng-container\r\n *ngFor=\"let field of section.FieldViewModels;let j = index\">\r\n <!-- [class.property-row-center]=\"field.FilterType ==filterTypes.CheckBox\" -->\r\n <div class=\"property-row\"\r\n [hidden]=\"field.IsHidden ||this.isFieldHidden(field)\">\r\n <alg-field\r\n [field]=\"field\"\r\n [form]=\"propertyForm\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n [readonly]=\"this.readonly\"\r\n >\r\n <!-- [readonly]=\"this.readonly\" -->\r\n </alg-field>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </alg-editor-tab>\r\n <ng-container *ngIf=\"facade.sections.sections$ | async as dynamicSections\">\r\n <ng-container *ngFor=\"let section of dynamicSections; let x = index\">\r\n <alg-editor-tab \r\n [title]=\"section.Name\" \r\n [active]=\"false\"\r\n [iconUrl]=\"section.IconUrl\"\r\n [hidden]=\"!section.IsVisible\">\r\n <ng-template #templateContainer></ng-template>\r\n </alg-editor-tab>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </alg-editor-tabset>\r\n </ng-container>\r\n</form>\r\n",
20753
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.propertyGridform{height:100%;width:100%}.property-grid-tabset{height:100%}.property-grid-tab{height:100%;width:100%;padding:5px}.property-row-center{padding-top:21px}.property-section-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));align-items:flex-start;align-content:flex-start;gap:10px;margin:0 10px}.property-section-container{display:flex;flex-direction:column;background:#f7faff;border-radius:5px;border:1px solid #C1D0FD;padding-bottom:10px}.property-section-title{display:block;font-size:14px;background:#f7faff;border-bottom:none;padding:2px 0;margin:10px;line-height:24px;font-weight:700;border-bottom:solid 1px #C1D0FD;color:#4d5a81}.property-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px;padding:5px;height:100%;overflow:auto}.property-row{display:flex;flex-wrap:wrap;align-items:center;flex:25%;gap:10px}.property-label{color:#4465c9}.property-label span{padding-top:5px;display:inline-block;margin-right:5px}.property-label.invalid{color:red}.property-input{flex:2;min-width:200px}.checkbox-container{display:flex;align-items:center;gap:5px}.validation-error{color:red;font-size:.9rem}\n", ".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.action-panel{display:block;height:auto;border-bottom:solid 1px #3C5DC4;width:auto;overflow:hidden;padding:3px 0}.action-panel-container{display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;justify-items:center;justify-content:flex-start;width:30000px;padding:2px 5px;min-height:34px}.action-panel-container .input-img{margin-right:5px;min-width:150px}.action-panel-container>div{padding:2px;margin-right:0}.action-panel-container>button{padding:2px;margin-right:0}.action-panel-container .button-container{margin-right:3px;padding:3px;height:30px}.action-panel-container .button-container .img{padding:3px;margin-right:0}.action-panel-container .button-container:hover{background-color:#eaeaea}.action-panel-container .action-title{display:flex}.action-panel-container .action-title h1{display:block;font-size:14px;background:#fff;border-bottom:none;padding:2px 0 2px 10px;margin:0;line-height:24px;font-weight:700}.action-panel-container .action-title span{display:flex;margin:0 8px;padding:0;font-size:15px;flex-wrap:nowrap}.action-label{display:flex;flex-wrap:nowrap}.action-icon{margin:0 2px;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.search-bar-action{height:26px;min-height:26px;border-radius:5px}.input-img{position:relative;margin:0 5px 0 0;min-width:250px}.input-img .search-pin{position:absolute;top:5px;left:5px;height:16px;width:16px}.action-panel.narrow{background:#4465c9;border-bottom:none;padding:6px 0}.action-panel.narrow .action-panel-container{width:auto;min-height:30px;padding:0 8px;gap:8px}.action-panel.narrow .action-panel-container>div{padding:0}.action-panel.narrow .action-panel-container .button-container,.action-panel.narrow .action-panel-container ::ng-deep [actions-content]{display:none!important}.action-panel.narrow .action-panel-container .action-title{flex:0 1 auto;min-width:0}.action-panel.narrow .action-panel-container .action-title h1{overflow:hidden;height:30px;padding:0 12px;border-radius:5px;background:#6684e0;color:#fff;font-size:12.5px;font-weight:600;line-height:30px;white-space:nowrap;text-overflow:ellipsis}.action-panel.narrow .action-panel-container .action-title span{display:none}.action-panel.narrow .action-panel-container .input-img{flex:1 1 auto;min-width:0;margin:0}.action-panel.narrow .action-panel-container .action-mobile-menu{flex:none;margin-left:auto}.action-panel.narrow .action-panel-container .search-bar-action{width:100%;height:30px;border:none}\n"],
21229
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.propertyGridform{height:100%;width:100%}.property-grid-tabset{height:100%}.property-grid-tab{height:100%;width:100%;padding:5px}.property-row-center{padding-top:21px}.property-section-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));align-items:flex-start;align-content:flex-start;gap:10px;margin:0 10px}.property-section-container{display:flex;flex-direction:column;background:#f7faff;border-radius:5px;border:1px solid #C1D0FD;padding-bottom:10px}.property-section-title{display:block;font-size:14px;background:#f7faff;border-bottom:none;padding:2px 0;margin:10px;line-height:24px;font-weight:700;border-bottom:solid 1px #C1D0FD;color:#4d5a81}.property-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px;padding:5px;height:100%;overflow:auto}.property-row{display:flex;flex-wrap:wrap;align-items:center;flex:25%;gap:10px}.property-label{color:#4465c9}.property-label span{padding-top:5px;display:inline-block;margin-right:5px}.property-label.invalid{color:red}.property-input{flex:2;min-width:200px}.checkbox-container{display:flex;align-items:center;gap:5px}.validation-error{color:red;font-size:.9rem}\n", ".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.action-panel{display:block;height:auto;border-bottom:solid 1px #3C5DC4;width:auto;overflow:hidden;padding:3px 0}.action-panel-container{display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;justify-items:center;justify-content:flex-start;width:30000px;padding:2px 5px;min-height:34px}.action-panel-container .input-img{margin-right:5px;min-width:150px}.action-panel-container>div{padding:2px;margin-right:0}.action-panel-container>button{padding:2px;margin-right:0}.action-panel-container .button-container{margin-right:3px;padding:3px;height:30px}.action-panel-container .button-container .img{padding:3px;margin-right:0}.action-panel-container .button-container:hover{background-color:#eaeaea}.action-panel-container .action-title{display:flex}.action-panel-container .action-title h1{display:block;font-size:14px;background:#fff;border-bottom:none;padding:2px 0 2px 10px;margin:0;line-height:24px;font-weight:700}.action-panel-container .action-title span{display:flex;margin:0 8px;padding:0;font-size:15px;flex-wrap:nowrap}.action-label{display:flex;flex-wrap:nowrap}.action-icon{margin:0 2px;filter:brightness(0) saturate(100%) invert(36%) sepia(91%) saturate(628%) hue-rotate(191deg) brightness(89%) contrast(85%) brightness(75%)}.search-bar-action{height:26px;min-height:26px;border-radius:5px}.input-img{position:relative;margin:0 5px 0 0;min-width:250px}.input-img .search-icon{position:absolute;top:50%;left:9px;transform:translateY(-50%);font-size:12px;color:#9fa9c7;pointer-events:none;z-index:1}.input-img .search-bar-action{padding-left:27px}.input-img .search-pin{position:absolute;top:5px;left:5px;height:16px;width:16px}.action-panel.narrow{background:#4465c9;border-bottom:none;padding:6px 0}.action-panel.narrow .action-panel-container{width:auto;min-height:30px;padding:0 8px;gap:8px}.action-panel.narrow .action-panel-container>div{padding:0}.action-panel.narrow .action-panel-container .button-container,.action-panel.narrow .action-panel-container ::ng-deep [actions-content]{display:none!important}.action-panel.narrow .action-panel-container .action-title{flex:0 1 auto;min-width:0}.action-panel.narrow .action-panel-container .action-title h1{overflow:hidden;height:30px;padding:0 12px;border-radius:5px;background:#6684e0;color:#fff;font-size:12.5px;font-weight:600;line-height:30px;white-space:nowrap;text-overflow:ellipsis}.action-panel.narrow .action-panel-container .action-title span{display:none}.action-panel.narrow .action-panel-container .input-img{flex:1 1 auto;min-width:0;margin:0}.action-panel.narrow .action-panel-container .action-mobile-menu{flex:none;margin-left:auto}.action-panel.narrow .action-panel-container .search-bar-action{width:100%;height:30px;border:none}.action-btn.save-active{color:#d1353a}.action-btn.save-active .action-icon{filter:brightness(0) saturate(100%) invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}\n"],
20754
21230
  dependencies: [
20755
21231
  {
20756
21232
  kind: "directive",
@@ -20849,7 +21325,7 @@ i0.ɵɵngDeclareClassMetadata({
20849
21325
  changeDetection: ChangeDetectionStrategy.Eager,
20850
21326
  standalone: false,
20851
21327
  template: "<form class=\"propertyGridform\">\r\n <ng-container *ngIf=\"this.viewModel$ | async as vm\">\r\n <alg-editor-tabset #tabs class=\"property-grid-tabset\" [sectionContext]=\"facade.sections\">\r\n <alg-editor-tab [active]=\"1 == 1\">\r\n <div [attr.id]=\"'content-0'\" class=\"property-grid-tab\">\r\n <div class=\"property-container\">\r\n <ng-container *ngIf=\"propertyForm\">\r\n <ng-container\r\n *ngFor=\" let section of vm.FieldSections;let i = index\">\r\n <div class=\"property-section-container\"\r\n [hidden]=\"this.isSectionHidden(section)\">\r\n <div class=\"property-section-title\">\r\n {{ section.Name }}\r\n </div>\r\n\r\n <div class=\"property-section-content\">\r\n <ng-container\r\n *ngFor=\"let field of section.FieldViewModels;let j = index\">\r\n <!-- [class.property-row-center]=\"field.FilterType ==filterTypes.CheckBox\" -->\r\n <div class=\"property-row\"\r\n [hidden]=\"field.IsHidden ||this.isFieldHidden(field)\">\r\n <alg-field\r\n [field]=\"field\"\r\n [form]=\"propertyForm\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n [readonly]=\"this.readonly\"\r\n >\r\n <!-- [readonly]=\"this.readonly\" -->\r\n </alg-field>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </alg-editor-tab>\r\n <ng-container *ngIf=\"facade.sections.sections$ | async as dynamicSections\">\r\n <ng-container *ngFor=\"let section of dynamicSections; let x = index\">\r\n <alg-editor-tab \r\n [title]=\"section.Name\" \r\n [active]=\"false\"\r\n [iconUrl]=\"section.IconUrl\"\r\n [hidden]=\"!section.IsVisible\">\r\n <ng-template #templateContainer></ng-template>\r\n </alg-editor-tab>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </alg-editor-tabset>\r\n </ng-container>\r\n</form>\r\n",
20852
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.propertyGridform{height:100%;width:100%}.property-grid-tabset{height:100%}.property-grid-tab{height:100%;width:100%;padding:5px}.property-row-center{padding-top:21px}.property-section-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));align-items:flex-start;align-content:flex-start;gap:10px;margin:0 10px}.property-section-container{display:flex;flex-direction:column;background:#f7faff;border-radius:5px;border:1px solid #C1D0FD;padding-bottom:10px}.property-section-title{display:block;font-size:14px;background:#f7faff;border-bottom:none;padding:2px 0;margin:10px;line-height:24px;font-weight:700;border-bottom:solid 1px #C1D0FD;color:#4d5a81}.property-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px;padding:5px;height:100%;overflow:auto}.property-row{display:flex;flex-wrap:wrap;align-items:center;flex:25%;gap:10px}.property-label{color:#4465c9}.property-label span{padding-top:5px;display:inline-block;margin-right:5px}.property-label.invalid{color:red}.property-input{flex:2;min-width:200px}.checkbox-container{display:flex;align-items:center;gap:5px}.validation-error{color:red;font-size:.9rem}\n", ".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.action-panel{display:block;height:auto;border-bottom:solid 1px #3C5DC4;width:auto;overflow:hidden;padding:3px 0}.action-panel-container{display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;justify-items:center;justify-content:flex-start;width:30000px;padding:2px 5px;min-height:34px}.action-panel-container .input-img{margin-right:5px;min-width:150px}.action-panel-container>div{padding:2px;margin-right:0}.action-panel-container>button{padding:2px;margin-right:0}.action-panel-container .button-container{margin-right:3px;padding:3px;height:30px}.action-panel-container .button-container .img{padding:3px;margin-right:0}.action-panel-container .button-container:hover{background-color:#eaeaea}.action-panel-container .action-title{display:flex}.action-panel-container .action-title h1{display:block;font-size:14px;background:#fff;border-bottom:none;padding:2px 0 2px 10px;margin:0;line-height:24px;font-weight:700}.action-panel-container .action-title span{display:flex;margin:0 8px;padding:0;font-size:15px;flex-wrap:nowrap}.action-label{display:flex;flex-wrap:nowrap}.action-icon{margin:0 2px;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.search-bar-action{height:26px;min-height:26px;border-radius:5px}.input-img{position:relative;margin:0 5px 0 0;min-width:250px}.input-img .search-pin{position:absolute;top:5px;left:5px;height:16px;width:16px}.action-panel.narrow{background:#4465c9;border-bottom:none;padding:6px 0}.action-panel.narrow .action-panel-container{width:auto;min-height:30px;padding:0 8px;gap:8px}.action-panel.narrow .action-panel-container>div{padding:0}.action-panel.narrow .action-panel-container .button-container,.action-panel.narrow .action-panel-container ::ng-deep [actions-content]{display:none!important}.action-panel.narrow .action-panel-container .action-title{flex:0 1 auto;min-width:0}.action-panel.narrow .action-panel-container .action-title h1{overflow:hidden;height:30px;padding:0 12px;border-radius:5px;background:#6684e0;color:#fff;font-size:12.5px;font-weight:600;line-height:30px;white-space:nowrap;text-overflow:ellipsis}.action-panel.narrow .action-panel-container .action-title span{display:none}.action-panel.narrow .action-panel-container .input-img{flex:1 1 auto;min-width:0;margin:0}.action-panel.narrow .action-panel-container .action-mobile-menu{flex:none;margin-left:auto}.action-panel.narrow .action-panel-container .search-bar-action{width:100%;height:30px;border:none}\n"]
21328
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.propertyGridform{height:100%;width:100%}.property-grid-tabset{height:100%}.property-grid-tab{height:100%;width:100%;padding:5px}.property-row-center{padding-top:21px}.property-section-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));align-items:flex-start;align-content:flex-start;gap:10px;margin:0 10px}.property-section-container{display:flex;flex-direction:column;background:#f7faff;border-radius:5px;border:1px solid #C1D0FD;padding-bottom:10px}.property-section-title{display:block;font-size:14px;background:#f7faff;border-bottom:none;padding:2px 0;margin:10px;line-height:24px;font-weight:700;border-bottom:solid 1px #C1D0FD;color:#4d5a81}.property-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px;padding:5px;height:100%;overflow:auto}.property-row{display:flex;flex-wrap:wrap;align-items:center;flex:25%;gap:10px}.property-label{color:#4465c9}.property-label span{padding-top:5px;display:inline-block;margin-right:5px}.property-label.invalid{color:red}.property-input{flex:2;min-width:200px}.checkbox-container{display:flex;align-items:center;gap:5px}.validation-error{color:red;font-size:.9rem}\n", ".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.action-panel{display:block;height:auto;border-bottom:solid 1px #3C5DC4;width:auto;overflow:hidden;padding:3px 0}.action-panel-container{display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;justify-items:center;justify-content:flex-start;width:30000px;padding:2px 5px;min-height:34px}.action-panel-container .input-img{margin-right:5px;min-width:150px}.action-panel-container>div{padding:2px;margin-right:0}.action-panel-container>button{padding:2px;margin-right:0}.action-panel-container .button-container{margin-right:3px;padding:3px;height:30px}.action-panel-container .button-container .img{padding:3px;margin-right:0}.action-panel-container .button-container:hover{background-color:#eaeaea}.action-panel-container .action-title{display:flex}.action-panel-container .action-title h1{display:block;font-size:14px;background:#fff;border-bottom:none;padding:2px 0 2px 10px;margin:0;line-height:24px;font-weight:700}.action-panel-container .action-title span{display:flex;margin:0 8px;padding:0;font-size:15px;flex-wrap:nowrap}.action-label{display:flex;flex-wrap:nowrap}.action-icon{margin:0 2px;filter:brightness(0) saturate(100%) invert(36%) sepia(91%) saturate(628%) hue-rotate(191deg) brightness(89%) contrast(85%) brightness(75%)}.search-bar-action{height:26px;min-height:26px;border-radius:5px}.input-img{position:relative;margin:0 5px 0 0;min-width:250px}.input-img .search-icon{position:absolute;top:50%;left:9px;transform:translateY(-50%);font-size:12px;color:#9fa9c7;pointer-events:none;z-index:1}.input-img .search-bar-action{padding-left:27px}.input-img .search-pin{position:absolute;top:5px;left:5px;height:16px;width:16px}.action-panel.narrow{background:#4465c9;border-bottom:none;padding:6px 0}.action-panel.narrow .action-panel-container{width:auto;min-height:30px;padding:0 8px;gap:8px}.action-panel.narrow .action-panel-container>div{padding:0}.action-panel.narrow .action-panel-container .button-container,.action-panel.narrow .action-panel-container ::ng-deep [actions-content]{display:none!important}.action-panel.narrow .action-panel-container .action-title{flex:0 1 auto;min-width:0}.action-panel.narrow .action-panel-container .action-title h1{overflow:hidden;height:30px;padding:0 12px;border-radius:5px;background:#6684e0;color:#fff;font-size:12.5px;font-weight:600;line-height:30px;white-space:nowrap;text-overflow:ellipsis}.action-panel.narrow .action-panel-container .action-title span{display:none}.action-panel.narrow .action-panel-container .input-img{flex:1 1 auto;min-width:0;margin:0}.action-panel.narrow .action-panel-container .action-mobile-menu{flex:none;margin-left:auto}.action-panel.narrow .action-panel-container .search-bar-action{width:100%;height:30px;border:none}.action-btn.save-active{color:#d1353a}.action-btn.save-active .action-icon{filter:brightness(0) saturate(100%) invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}\n"]
20853
21329
  }]
20854
21330
  }],
20855
21331
  ctorParameters: () => [
@@ -21525,7 +22001,7 @@ var CardListComponent = class CardListComponent {
21525
22001
  guid: "guid"
21526
22002
  },
21527
22003
  ngImport: i0,
21528
- template: "<div class=\"card-list\" (scroll)=\"onScroll($event)\" role=\"list\">\r\n <div *ngIf=\"card === null\" class=\"card-info\">Pas de vue Carte pour cette table.</div>\r\n\r\n <ng-container *ngIf=\"card\">\r\n <button type=\"button\" *ngFor=\"let row of items; trackBy: trackById\" class=\"card-item\" role=\"listitem\"\r\n [class.selected]=\"isSelected(row)\" [class.no-image]=\"!hasImage()\" (click)=\"open(row)\">\r\n <span class=\"card-image\" *ngIf=\"hasImage()\">\r\n <img *ngIf=\"imageUrl(row) as url; else initialsTpl\" [src]=\"url\" alt=\"\" />\r\n <ng-template #initialsTpl><span class=\"card-initials\">{{ initials(row) }}</span></ng-template>\r\n </span>\r\n <span class=\"card-main\">\r\n <span class=\"card-title\" *ngIf=\"card.title\">{{ valueOf(row, card.title) }}</span>\r\n <span class=\"card-text\" *ngIf=\"card.text\">{{ valueOf(row, card.text) }}</span>\r\n <span class=\"card-detail\" *ngIf=\"card.detail\">{{ valueOf(row, card.detail) }}</span>\r\n </span>\r\n <span class=\"card-badge\" *ngIf=\"card.badge && valueOf(row, card.badge) as badge\">{{ badge }}</span>\r\n </button>\r\n\r\n <div class=\"card-info\" *ngIf=\"!items.length && !loading\">Aucun élément</div>\r\n <button type=\"button\" class=\"card-more\" *ngIf=\"hasMore\" [disabled]=\"loading\" (click)=\"loadMore()\">\r\n {{ loading ? 'Chargement…' : 'Afficher les suivants' }}\r\n </button>\r\n </ng-container>\r\n</div>\r\n",
22004
+ template: "<div class=\"card-list\" (scroll)=\"onScroll($event)\" role=\"list\">\n <div *ngIf=\"card === null\" class=\"card-info\">Pas de vue Carte pour cette table.</div>\n\n <ng-container *ngIf=\"card\">\n <button type=\"button\" *ngFor=\"let row of items; trackBy: trackById\" class=\"card-item\" role=\"listitem\"\n [class.selected]=\"isSelected(row)\" [class.no-image]=\"!hasImage()\" (click)=\"open(row)\">\n <span class=\"card-image\" *ngIf=\"hasImage()\">\n <img *ngIf=\"imageUrl(row) as url; else initialsTpl\" [src]=\"url\" alt=\"\" />\n <ng-template #initialsTpl><span class=\"card-initials\">{{ initials(row) }}</span></ng-template>\n </span>\n <span class=\"card-main\">\n <span class=\"card-title\" *ngIf=\"card.title\">{{ valueOf(row, card.title) }}</span>\n <span class=\"card-text\" *ngIf=\"card.text\">{{ valueOf(row, card.text) }}</span>\n <span class=\"card-detail\" *ngIf=\"card.detail\">{{ valueOf(row, card.detail) }}</span>\n </span>\n <span class=\"card-badge\" *ngIf=\"card.badge && valueOf(row, card.badge) as badge\">{{ badge }}</span>\n </button>\n\n <div class=\"card-info\" *ngIf=\"!items.length && !loading\">Aucun élément</div>\n <button type=\"button\" class=\"card-more\" *ngIf=\"hasMore\" [disabled]=\"loading\" (click)=\"loadMore()\">\n {{ loading ? 'Chargement…' : 'Afficher les suivants' }}\n </button>\n </ng-container>\n</div>\n",
21529
22005
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:100%}.card-list{flex:1 1 auto;min-height:0;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));align-content:start;gap:8px;padding:10px;background:#f4f6fb}.card-list>.card-info,.card-list>.card-more{grid-column:1/-1}.card-item{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;padding:10px 12px;border:1px solid #DBE4FF;border-radius:0 4px 4px 0;background:#fff;color:#4d5a81;font:inherit;text-align:left;cursor:pointer}.card-item.no-image{grid-template-columns:minmax(0,1fr) auto}.card-item:hover{border-color:#5272d3}.card-item:focus-visible{outline:2px solid #5272D3;outline-offset:1px}.card-item.selected{border-color:#5272d3;box-shadow:inset 3px 0 #5272d3}.card-image{width:44px;height:44px;border-radius:4px;background:#ebf0ff;display:grid;place-items:center;overflow:hidden}.card-image img{max-width:100%;max-height:100%;object-fit:contain}.card-initials{color:#4465c9;font-weight:700;font-size:13px}.card-main{min-width:0;display:flex;flex-direction:column}.card-title,.card-text,.card-detail{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-title{font-size:12px;color:#4465c9}.card-text{font-size:14px;font-weight:700}.card-detail{font-size:12px;color:#9fa9c7}.card-badge{padding:1px 8px;border-radius:999px;background:#ebf0ff;color:#4465c9;font-size:11px;font-weight:700;white-space:nowrap}.card-info{padding:16px;text-align:center;color:#9fa9c7}.card-more{justify-self:center;margin:4px 0 8px;padding:6px 14px;border:1px solid #C1D0FD;border-radius:999px;background:#fff;color:#4465c9;font:inherit;cursor:pointer}.card-more:disabled{cursor:progress;opacity:.7}\n"],
21530
22006
  dependencies: [{
21531
22007
  kind: "directive",
@@ -21561,7 +22037,7 @@ i0.ɵɵngDeclareClassMetadata({
21561
22037
  selector: "alg-card-list",
21562
22038
  changeDetection: ChangeDetectionStrategy.Eager,
21563
22039
  standalone: false,
21564
- template: "<div class=\"card-list\" (scroll)=\"onScroll($event)\" role=\"list\">\r\n <div *ngIf=\"card === null\" class=\"card-info\">Pas de vue Carte pour cette table.</div>\r\n\r\n <ng-container *ngIf=\"card\">\r\n <button type=\"button\" *ngFor=\"let row of items; trackBy: trackById\" class=\"card-item\" role=\"listitem\"\r\n [class.selected]=\"isSelected(row)\" [class.no-image]=\"!hasImage()\" (click)=\"open(row)\">\r\n <span class=\"card-image\" *ngIf=\"hasImage()\">\r\n <img *ngIf=\"imageUrl(row) as url; else initialsTpl\" [src]=\"url\" alt=\"\" />\r\n <ng-template #initialsTpl><span class=\"card-initials\">{{ initials(row) }}</span></ng-template>\r\n </span>\r\n <span class=\"card-main\">\r\n <span class=\"card-title\" *ngIf=\"card.title\">{{ valueOf(row, card.title) }}</span>\r\n <span class=\"card-text\" *ngIf=\"card.text\">{{ valueOf(row, card.text) }}</span>\r\n <span class=\"card-detail\" *ngIf=\"card.detail\">{{ valueOf(row, card.detail) }}</span>\r\n </span>\r\n <span class=\"card-badge\" *ngIf=\"card.badge && valueOf(row, card.badge) as badge\">{{ badge }}</span>\r\n </button>\r\n\r\n <div class=\"card-info\" *ngIf=\"!items.length && !loading\">Aucun élément</div>\r\n <button type=\"button\" class=\"card-more\" *ngIf=\"hasMore\" [disabled]=\"loading\" (click)=\"loadMore()\">\r\n {{ loading ? 'Chargement…' : 'Afficher les suivants' }}\r\n </button>\r\n </ng-container>\r\n</div>\r\n",
22040
+ template: "<div class=\"card-list\" (scroll)=\"onScroll($event)\" role=\"list\">\n <div *ngIf=\"card === null\" class=\"card-info\">Pas de vue Carte pour cette table.</div>\n\n <ng-container *ngIf=\"card\">\n <button type=\"button\" *ngFor=\"let row of items; trackBy: trackById\" class=\"card-item\" role=\"listitem\"\n [class.selected]=\"isSelected(row)\" [class.no-image]=\"!hasImage()\" (click)=\"open(row)\">\n <span class=\"card-image\" *ngIf=\"hasImage()\">\n <img *ngIf=\"imageUrl(row) as url; else initialsTpl\" [src]=\"url\" alt=\"\" />\n <ng-template #initialsTpl><span class=\"card-initials\">{{ initials(row) }}</span></ng-template>\n </span>\n <span class=\"card-main\">\n <span class=\"card-title\" *ngIf=\"card.title\">{{ valueOf(row, card.title) }}</span>\n <span class=\"card-text\" *ngIf=\"card.text\">{{ valueOf(row, card.text) }}</span>\n <span class=\"card-detail\" *ngIf=\"card.detail\">{{ valueOf(row, card.detail) }}</span>\n </span>\n <span class=\"card-badge\" *ngIf=\"card.badge && valueOf(row, card.badge) as badge\">{{ badge }}</span>\n </button>\n\n <div class=\"card-info\" *ngIf=\"!items.length && !loading\">Aucun élément</div>\n <button type=\"button\" class=\"card-more\" *ngIf=\"hasMore\" [disabled]=\"loading\" (click)=\"loadMore()\">\n {{ loading ? 'Chargement…' : 'Afficher les suivants' }}\n </button>\n </ng-container>\n</div>\n",
21565
22041
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:100%}.card-list{flex:1 1 auto;min-height:0;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));align-content:start;gap:8px;padding:10px;background:#f4f6fb}.card-list>.card-info,.card-list>.card-more{grid-column:1/-1}.card-item{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;padding:10px 12px;border:1px solid #DBE4FF;border-radius:0 4px 4px 0;background:#fff;color:#4d5a81;font:inherit;text-align:left;cursor:pointer}.card-item.no-image{grid-template-columns:minmax(0,1fr) auto}.card-item:hover{border-color:#5272d3}.card-item:focus-visible{outline:2px solid #5272D3;outline-offset:1px}.card-item.selected{border-color:#5272d3;box-shadow:inset 3px 0 #5272d3}.card-image{width:44px;height:44px;border-radius:4px;background:#ebf0ff;display:grid;place-items:center;overflow:hidden}.card-image img{max-width:100%;max-height:100%;object-fit:contain}.card-initials{color:#4465c9;font-weight:700;font-size:13px}.card-main{min-width:0;display:flex;flex-direction:column}.card-title,.card-text,.card-detail{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-title{font-size:12px;color:#4465c9}.card-text{font-size:14px;font-weight:700}.card-detail{font-size:12px;color:#9fa9c7}.card-badge{padding:1px 8px;border-radius:999px;background:#ebf0ff;color:#4465c9;font-size:11px;font-weight:700;white-space:nowrap}.card-info{padding:16px;text-align:center;color:#9fa9c7}.card-more{justify-self:center;margin:4px 0 8px;padding:6px 14px;border:1px solid #C1D0FD;border-radius:999px;background:#fff;color:#4465c9;font:inherit;cursor:pointer}.card-more:disabled{cursor:progress;opacity:.7}\n"]
21566
22042
  }]
21567
22043
  }],
@@ -21870,7 +22346,7 @@ var StandardPageLayoutComponent = class StandardPageLayoutComponent {
21870
22346
  }
21871
22347
  ],
21872
22348
  ngImport: i0,
21873
- template: "<div class=\"page-container\"\r\n [class.narrow]=\"this.facade?.layout?.narrow$ | async\"\r\n [class.mobile-editor-open]=\"this.facade?.layout?.mobileEditorOpen$ | async\"\r\n [class.editor-dirty]=\"editorDirty\"\r\n layoutHandler\r\n [entityKey]=\"this.layoutKey\"\r\n [layoutContext]=\"this.facade.layout\"\r\n [middlePanel]=\"middlePanel\"\r\n \r\n #layoutHandler=\"layoutHandler\"\r\n tabindex=\"0\"\r\n baseShortcuts\r\n [facade]=\"this.facade\"\r\n #baseShortcuts=\"baseShortcuts\"\r\n >\r\n <!-- [rightPanel]=\"rightPanel?.nativeElement\"\r\n [_separator]=\"separator?.nativeElement\"\r\n -->\r\n <div class=\"panel-container\" [id]=\"layoutKey\">\r\n <div class=\"middle-panel\" #middlePanel>\r\n\r\n <!-- <div \r\n *ngIf=\"this.facade.layout.showFilterPanel$ |async\" \r\n class=\"left-panel-container\" hideOnThreshold>\r\n <ng-content select=\"[leftContent]\"></ng-content>\r\n </div> -->\r\n <div class=\"middle-panel-content\">\r\n <ng-content class=\"action-panel\" select=\"[actionsContent]\"></ng-content>\r\n <div class=\"middle-panel-header\">\r\n <ng-content select=\"[middleHeader]\"></ng-content>\r\n </div>\r\n \r\n <div class=\"middle-panel-main\">\r\n <ng-content select=\"[middleContent]\"></ng-content>\r\n </div>\r\n <div class=\"middle-panel-footer\">\r\n <ng-content select=\"[middleFooter]\"></ng-content>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"facade.layout.propertyPanelVisible$ | async\" >\r\n <div class=\"separator-container\"\r\n (mousedown)=\"layoutHandler.startResizing($event)\"\r\n (mouseup)=\"layoutHandler.stopResizing($event)\"\r\n [id]=\"layoutHandler.entityKey\"\r\n #separator\r\n >\r\n <button type=\"button\" class=\"toggle-btn\"\r\n title=\"Affichage Horizontal/Vertical\"\r\n (click)=\"toggleLayout()\">\r\n <div class=\"arrow\"></div>\r\n </button>\r\n\r\n <!-- <button class=\"expand-btn\"\r\n (click)=\"layoutHandler.expandPropertyflexGrow($event)\">\r\n <div class=\"arrow\"></div>\r\n </button> -->\r\n </div>\r\n\r\n <div class=\"right-panel-container\" [id]=\"layoutHandler.entityKey\" #rightPanel>\r\n <!-- Écran étroit : éditeur en plein écran, avec le retour à la liste de cartes. -->\r\n <div class=\"mobile-editor-bar\">\r\n <button type=\"button\" class=\"mobile-editor-button\" title=\"Revenir à la liste\" aria-label=\"Revenir à la liste\" (click)=\"backToList($event)\">\r\n <i class=\"fa fa-arrow-left\"></i>\r\n </button>\r\n <button type=\"button\" class=\"mobile-editor-button\" *ngIf=\"editorDirty\" title=\"Enregistrer\" aria-label=\"Enregistrer\" (click)=\"saveMobileEditor($event)\">\r\n <i class=\"fa fa-floppy-o\"></i>\r\n </button>\r\n </div>\r\n <ng-content select=\"[rightContent]\"></ng-content>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n",
22349
+ template: "<div class=\"page-container\"\n [class.narrow]=\"this.facade?.layout?.narrow$ | async\"\n [class.mobile-editor-open]=\"this.facade?.layout?.mobileEditorOpen$ | async\"\n [class.editor-dirty]=\"editorDirty\"\n layoutHandler\n [entityKey]=\"this.layoutKey\"\n [layoutContext]=\"this.facade.layout\"\n [middlePanel]=\"middlePanel\"\n \n #layoutHandler=\"layoutHandler\"\n tabindex=\"0\"\n baseShortcuts\n [facade]=\"this.facade\"\n #baseShortcuts=\"baseShortcuts\"\n >\n <!-- [rightPanel]=\"rightPanel?.nativeElement\"\n [_separator]=\"separator?.nativeElement\"\n -->\n <div class=\"panel-container\" [id]=\"layoutKey\">\n <div class=\"middle-panel\" #middlePanel>\n\n <!-- <div \n *ngIf=\"this.facade.layout.showFilterPanel$ |async\" \n class=\"left-panel-container\" hideOnThreshold>\n <ng-content select=\"[leftContent]\"></ng-content>\n </div> -->\n <div class=\"middle-panel-content\">\n <ng-content class=\"action-panel\" select=\"[actionsContent]\"></ng-content>\n <div class=\"middle-panel-header\">\n <ng-content select=\"[middleHeader]\"></ng-content>\n </div>\n \n <div class=\"middle-panel-main\">\n <ng-content select=\"[middleContent]\"></ng-content>\n </div>\n <div class=\"middle-panel-footer\">\n <ng-content select=\"[middleFooter]\"></ng-content>\n </div>\n \n </div>\n </div>\n <ng-container *ngIf=\"facade.layout.propertyPanelVisible$ | async\" >\n <div class=\"separator-container\"\n (mousedown)=\"layoutHandler.startResizing($event)\"\n (mouseup)=\"layoutHandler.stopResizing($event)\"\n [id]=\"layoutHandler.entityKey\"\n #separator\n >\n <button type=\"button\" class=\"toggle-btn\"\n title=\"Affichage Horizontal/Vertical\"\n (click)=\"toggleLayout()\">\n <div class=\"arrow\"></div>\n </button>\n\n <!-- <button class=\"expand-btn\"\n (click)=\"layoutHandler.expandPropertyflexGrow($event)\">\n <div class=\"arrow\"></div>\n </button> -->\n </div>\n\n <div class=\"right-panel-container\" [id]=\"layoutHandler.entityKey\" #rightPanel>\n <!-- Écran étroit : éditeur en plein écran, avec le retour à la liste de cartes. -->\n <div class=\"mobile-editor-bar\">\n <button type=\"button\" class=\"mobile-editor-button\" title=\"Revenir à la liste\" aria-label=\"Revenir à la liste\" (click)=\"backToList($event)\">\n <i class=\"fa fa-arrow-left\"></i>\n </button>\n <button type=\"button\" class=\"mobile-editor-button\" *ngIf=\"editorDirty\" title=\"Enregistrer\" aria-label=\"Enregistrer\" (click)=\"saveMobileEditor($event)\">\n <i class=\"fa fa-floppy-o\"></i>\n </button>\n </div>\n <ng-content select=\"[rightContent]\"></ng-content>\n </div>\n </ng-container>\n </div>\n</div>\n",
21874
22350
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.page-container{width:100%;height:100%}.panel-container{display:flex;width:100%;height:100%;flex-grow:1;overflow:auto}.left-panel-container{order:-1;width:20%;flex-grow:0;flex-shrink:0;border-right:solid 1px var(--main-bg-color)}.right-panel-container{flex-basis:0;overflow:hidden}.middle-panel{display:flex;overflow:hidden;flex-basis:0;flex-grow:1}.middle-panel-content{display:flex;flex-direction:column;width:100%;height:100%}.middle-panel-header{padding:0}.middle-panel-main{flex-grow:1;overflow:auto;padding:0}.middle-panel-footer{padding:0}.main-component{width:100%;height:100%;overflow:auto}.left-side-panel h1,.right-side-panel h1,.middle-panel h1{display:block;font-size:12pt;background:#fff;border-bottom:solid 1px var(--main-bg-color);padding:2px 10px;margin:0;line-height:33px}.separator-container{cursor:col-resize;position:relative;display:flex;align-items:center;justify-content:center;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAACXBIWXMAAA7CAAAOwgEVKEqAAAAAIGNIUk0AAHonAACAgwAA+mQAAIDSAAB2hgAA7OkAADmeAAAV/sZ+0zoAAAAeSURBVHjaYvj//z8DDC9duhTBgWHCAgAAAAD//wMAbP4vwvVSoTUAAAAASUVORK5CYII=) repeat scroll 0 0 transparent;background-color:#c1d0fd}.separator-container:hover{background-color:#dbe4ff}.separator-container.vertical{flex-direction:row;width:100%;height:10px;cursor:row-resize}.separator-container.vertical button.expand-btn{width:40px;height:10px}.separator-container.vertical button.toggle-btn{width:20px;height:10px}.separator-container.horizontal{flex-direction:column;width:10px;cursor:col-resize}.separator-container.horizontal button.expand-btn{width:10px;height:40px}.separator-container.horizontal button.toggle-btn{width:10px;height:20px}.toggle-btn,.expand-btn{display:block;width:14px;height:40px;background:none;border:none;cursor:pointer;display:flex;align-items:center;align-self:center;justify-content:center;transition:padding .3s ease;color:#fff;background-color:#8ea7f8;padding:0;z-index:10}.arrow{width:100%;height:100%;filter:brightness(0) saturate(100%) invert(100%) sepia(0%) saturate(0%) hue-rotate(258deg) brightness(108%) contrast(101%)}.arrow-left{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"27.946\" height=\"45.317\" viewBox=\"0 0 27.946 45.317\">%0D%0A <path id=\"\\c0_gauche\" data-name=\"\\c0 gauche\" d=\"M331.646,880.287l-17.372,17.372,17.372,17.371-5.287,5.287L303.7,897.659,326.359,875Z\" transform=\"translate(-303.7 -875)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:8px 8px;background-position:center}.arrow-right{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"27.946\" height=\"45.317\" viewBox=\"0 0 27.946 45.317\">%0D%0A <path fillColor=\"currentColor\" id=\"\\c0_doite\" data-name=\"\\c0 doite\" d=\"M346.487,875l22.659,22.659-22.659,22.659L341.2,915.03l17.372-17.371L341.2,880.287Z\" transform=\"translate(-341.2 -875)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:8px 8px;background-position:center}.arrow-up{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45.317\" height=\"27.946\" viewBox=\"0 0 45.317 27.946\">%0D%0A <path id=\"En_haut\" data-name=\"En haut\" d=\"M435.259,877l22.659,22.659-5.287,5.287-17.372-17.372-17.372,17.372-5.287-5.287Z\" transform=\"translate(-412.6 -877)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:8px 8px;background-position:center}.arrow-down{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45.317\" height=\"27.946\" viewBox=\"0 0 45.317 27.946\">%0D%0A <path id=\"En_bas\" data-name=\"En bas\" d=\"M489.53,877.6l5.287,5.287-22.659,22.659L449.5,882.887l5.287-5.287,17.372,17.371Z\" transform=\"translate(-449.5 -877.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:8px 8px;background-position:center}.toggle-btn{position:absolute;top:0;left:0;height:20px;width:20px}.mobile-editor-bar{display:none}.page-container.narrow .middle-panel-footer,.page-container.narrow .separator-container,.page-container.narrow .right-panel-container{display:none!important}.page-container.narrow .middle-panel{flex:1 1 auto!important;width:100%!important;max-width:100%!important}.page-container.narrow.mobile-editor-open{position:relative}.page-container.narrow.mobile-editor-open .right-panel-container{display:flex!important;flex-direction:column;position:absolute;inset:0;z-index:1040;width:100%!important;max-width:100%!important;height:100%!important;background:#fff;overflow:hidden;padding-bottom:env(safe-area-inset-bottom,0px)}.page-container.narrow.mobile-editor-open .right-panel-container ::ng-deep>:not(.mobile-editor-bar){flex:1 1 0;min-height:0;overflow:auto}.page-container.narrow.mobile-editor-open .mobile-editor-bar{display:flex;align-items:center;flex:none;position:relative;z-index:30;height:44px;gap:4px;padding:0 4px;background:var(--main-bg-color, #3b57b8)}.page-container.narrow.mobile-editor-open .mobile-editor-button{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:44px;height:40px;padding:0;touch-action:manipulation;border:none;border-radius:8px;font-size:18px!important;background:transparent;color:#fff;font:inherit;font-weight:600;cursor:pointer}.page-container.narrow.mobile-editor-open .mobile-editor-button:hover,.page-container.narrow.mobile-editor-open .mobile-editor-button:focus-visible{background:#ffffff29;outline:none}:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .mobile-editor-bar{position:absolute;top:0;left:0;z-index:30;height:42px;padding:6px 0 6px 8px;gap:6px;background:transparent}:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .mobile-editor-button{width:36px;height:30px;border-radius:5px;background:#dbe4ff;color:#4465c9;font-size:15px!important}:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .mobile-editor-button:hover,:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .mobile-editor-button:focus-visible{background:#4465c9;color:#f7faff}:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .property-grid-tabset>.tabset>.tabset-nav-frame{padding-left:44px}:host ::ng-deep .page-container.narrow.mobile-editor-open.editor-dirty .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .property-grid-tabset>.tabset>.tabset-nav-frame{padding-left:86px}\n"],
21875
22351
  dependencies: [
21876
22352
  {
@@ -21923,7 +22399,7 @@ i0.ɵɵngDeclareClassMetadata({
21923
22399
  selector: "alg-standard-page-layout",
21924
22400
  changeDetection: ChangeDetectionStrategy.Eager,
21925
22401
  standalone: false,
21926
- template: "<div class=\"page-container\"\r\n [class.narrow]=\"this.facade?.layout?.narrow$ | async\"\r\n [class.mobile-editor-open]=\"this.facade?.layout?.mobileEditorOpen$ | async\"\r\n [class.editor-dirty]=\"editorDirty\"\r\n layoutHandler\r\n [entityKey]=\"this.layoutKey\"\r\n [layoutContext]=\"this.facade.layout\"\r\n [middlePanel]=\"middlePanel\"\r\n \r\n #layoutHandler=\"layoutHandler\"\r\n tabindex=\"0\"\r\n baseShortcuts\r\n [facade]=\"this.facade\"\r\n #baseShortcuts=\"baseShortcuts\"\r\n >\r\n <!-- [rightPanel]=\"rightPanel?.nativeElement\"\r\n [_separator]=\"separator?.nativeElement\"\r\n -->\r\n <div class=\"panel-container\" [id]=\"layoutKey\">\r\n <div class=\"middle-panel\" #middlePanel>\r\n\r\n <!-- <div \r\n *ngIf=\"this.facade.layout.showFilterPanel$ |async\" \r\n class=\"left-panel-container\" hideOnThreshold>\r\n <ng-content select=\"[leftContent]\"></ng-content>\r\n </div> -->\r\n <div class=\"middle-panel-content\">\r\n <ng-content class=\"action-panel\" select=\"[actionsContent]\"></ng-content>\r\n <div class=\"middle-panel-header\">\r\n <ng-content select=\"[middleHeader]\"></ng-content>\r\n </div>\r\n \r\n <div class=\"middle-panel-main\">\r\n <ng-content select=\"[middleContent]\"></ng-content>\r\n </div>\r\n <div class=\"middle-panel-footer\">\r\n <ng-content select=\"[middleFooter]\"></ng-content>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"facade.layout.propertyPanelVisible$ | async\" >\r\n <div class=\"separator-container\"\r\n (mousedown)=\"layoutHandler.startResizing($event)\"\r\n (mouseup)=\"layoutHandler.stopResizing($event)\"\r\n [id]=\"layoutHandler.entityKey\"\r\n #separator\r\n >\r\n <button type=\"button\" class=\"toggle-btn\"\r\n title=\"Affichage Horizontal/Vertical\"\r\n (click)=\"toggleLayout()\">\r\n <div class=\"arrow\"></div>\r\n </button>\r\n\r\n <!-- <button class=\"expand-btn\"\r\n (click)=\"layoutHandler.expandPropertyflexGrow($event)\">\r\n <div class=\"arrow\"></div>\r\n </button> -->\r\n </div>\r\n\r\n <div class=\"right-panel-container\" [id]=\"layoutHandler.entityKey\" #rightPanel>\r\n <!-- Écran étroit : éditeur en plein écran, avec le retour à la liste de cartes. -->\r\n <div class=\"mobile-editor-bar\">\r\n <button type=\"button\" class=\"mobile-editor-button\" title=\"Revenir à la liste\" aria-label=\"Revenir à la liste\" (click)=\"backToList($event)\">\r\n <i class=\"fa fa-arrow-left\"></i>\r\n </button>\r\n <button type=\"button\" class=\"mobile-editor-button\" *ngIf=\"editorDirty\" title=\"Enregistrer\" aria-label=\"Enregistrer\" (click)=\"saveMobileEditor($event)\">\r\n <i class=\"fa fa-floppy-o\"></i>\r\n </button>\r\n </div>\r\n <ng-content select=\"[rightContent]\"></ng-content>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n",
22402
+ template: "<div class=\"page-container\"\n [class.narrow]=\"this.facade?.layout?.narrow$ | async\"\n [class.mobile-editor-open]=\"this.facade?.layout?.mobileEditorOpen$ | async\"\n [class.editor-dirty]=\"editorDirty\"\n layoutHandler\n [entityKey]=\"this.layoutKey\"\n [layoutContext]=\"this.facade.layout\"\n [middlePanel]=\"middlePanel\"\n \n #layoutHandler=\"layoutHandler\"\n tabindex=\"0\"\n baseShortcuts\n [facade]=\"this.facade\"\n #baseShortcuts=\"baseShortcuts\"\n >\n <!-- [rightPanel]=\"rightPanel?.nativeElement\"\n [_separator]=\"separator?.nativeElement\"\n -->\n <div class=\"panel-container\" [id]=\"layoutKey\">\n <div class=\"middle-panel\" #middlePanel>\n\n <!-- <div \n *ngIf=\"this.facade.layout.showFilterPanel$ |async\" \n class=\"left-panel-container\" hideOnThreshold>\n <ng-content select=\"[leftContent]\"></ng-content>\n </div> -->\n <div class=\"middle-panel-content\">\n <ng-content class=\"action-panel\" select=\"[actionsContent]\"></ng-content>\n <div class=\"middle-panel-header\">\n <ng-content select=\"[middleHeader]\"></ng-content>\n </div>\n \n <div class=\"middle-panel-main\">\n <ng-content select=\"[middleContent]\"></ng-content>\n </div>\n <div class=\"middle-panel-footer\">\n <ng-content select=\"[middleFooter]\"></ng-content>\n </div>\n \n </div>\n </div>\n <ng-container *ngIf=\"facade.layout.propertyPanelVisible$ | async\" >\n <div class=\"separator-container\"\n (mousedown)=\"layoutHandler.startResizing($event)\"\n (mouseup)=\"layoutHandler.stopResizing($event)\"\n [id]=\"layoutHandler.entityKey\"\n #separator\n >\n <button type=\"button\" class=\"toggle-btn\"\n title=\"Affichage Horizontal/Vertical\"\n (click)=\"toggleLayout()\">\n <div class=\"arrow\"></div>\n </button>\n\n <!-- <button class=\"expand-btn\"\n (click)=\"layoutHandler.expandPropertyflexGrow($event)\">\n <div class=\"arrow\"></div>\n </button> -->\n </div>\n\n <div class=\"right-panel-container\" [id]=\"layoutHandler.entityKey\" #rightPanel>\n <!-- Écran étroit : éditeur en plein écran, avec le retour à la liste de cartes. -->\n <div class=\"mobile-editor-bar\">\n <button type=\"button\" class=\"mobile-editor-button\" title=\"Revenir à la liste\" aria-label=\"Revenir à la liste\" (click)=\"backToList($event)\">\n <i class=\"fa fa-arrow-left\"></i>\n </button>\n <button type=\"button\" class=\"mobile-editor-button\" *ngIf=\"editorDirty\" title=\"Enregistrer\" aria-label=\"Enregistrer\" (click)=\"saveMobileEditor($event)\">\n <i class=\"fa fa-floppy-o\"></i>\n </button>\n </div>\n <ng-content select=\"[rightContent]\"></ng-content>\n </div>\n </ng-container>\n </div>\n</div>\n",
21927
22403
  styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.page-container{width:100%;height:100%}.panel-container{display:flex;width:100%;height:100%;flex-grow:1;overflow:auto}.left-panel-container{order:-1;width:20%;flex-grow:0;flex-shrink:0;border-right:solid 1px var(--main-bg-color)}.right-panel-container{flex-basis:0;overflow:hidden}.middle-panel{display:flex;overflow:hidden;flex-basis:0;flex-grow:1}.middle-panel-content{display:flex;flex-direction:column;width:100%;height:100%}.middle-panel-header{padding:0}.middle-panel-main{flex-grow:1;overflow:auto;padding:0}.middle-panel-footer{padding:0}.main-component{width:100%;height:100%;overflow:auto}.left-side-panel h1,.right-side-panel h1,.middle-panel h1{display:block;font-size:12pt;background:#fff;border-bottom:solid 1px var(--main-bg-color);padding:2px 10px;margin:0;line-height:33px}.separator-container{cursor:col-resize;position:relative;display:flex;align-items:center;justify-content:center;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAACXBIWXMAAA7CAAAOwgEVKEqAAAAAIGNIUk0AAHonAACAgwAA+mQAAIDSAAB2hgAA7OkAADmeAAAV/sZ+0zoAAAAeSURBVHjaYvj//z8DDC9duhTBgWHCAgAAAAD//wMAbP4vwvVSoTUAAAAASUVORK5CYII=) repeat scroll 0 0 transparent;background-color:#c1d0fd}.separator-container:hover{background-color:#dbe4ff}.separator-container.vertical{flex-direction:row;width:100%;height:10px;cursor:row-resize}.separator-container.vertical button.expand-btn{width:40px;height:10px}.separator-container.vertical button.toggle-btn{width:20px;height:10px}.separator-container.horizontal{flex-direction:column;width:10px;cursor:col-resize}.separator-container.horizontal button.expand-btn{width:10px;height:40px}.separator-container.horizontal button.toggle-btn{width:10px;height:20px}.toggle-btn,.expand-btn{display:block;width:14px;height:40px;background:none;border:none;cursor:pointer;display:flex;align-items:center;align-self:center;justify-content:center;transition:padding .3s ease;color:#fff;background-color:#8ea7f8;padding:0;z-index:10}.arrow{width:100%;height:100%;filter:brightness(0) saturate(100%) invert(100%) sepia(0%) saturate(0%) hue-rotate(258deg) brightness(108%) contrast(101%)}.arrow-left{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"27.946\" height=\"45.317\" viewBox=\"0 0 27.946 45.317\">%0D%0A <path id=\"\\c0_gauche\" data-name=\"\\c0 gauche\" d=\"M331.646,880.287l-17.372,17.372,17.372,17.371-5.287,5.287L303.7,897.659,326.359,875Z\" transform=\"translate(-303.7 -875)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:8px 8px;background-position:center}.arrow-right{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"27.946\" height=\"45.317\" viewBox=\"0 0 27.946 45.317\">%0D%0A <path fillColor=\"currentColor\" id=\"\\c0_doite\" data-name=\"\\c0 doite\" d=\"M346.487,875l22.659,22.659-22.659,22.659L341.2,915.03l17.372-17.371L341.2,880.287Z\" transform=\"translate(-341.2 -875)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:8px 8px;background-position:center}.arrow-up{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45.317\" height=\"27.946\" viewBox=\"0 0 45.317 27.946\">%0D%0A <path id=\"En_haut\" data-name=\"En haut\" d=\"M435.259,877l22.659,22.659-5.287,5.287-17.372-17.372-17.372,17.372-5.287-5.287Z\" transform=\"translate(-412.6 -877)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:8px 8px;background-position:center}.arrow-down{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45.317\" height=\"27.946\" viewBox=\"0 0 45.317 27.946\">%0D%0A <path id=\"En_bas\" data-name=\"En bas\" d=\"M489.53,877.6l5.287,5.287-22.659,22.659L449.5,882.887l5.287-5.287,17.372,17.371Z\" transform=\"translate(-449.5 -877.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:8px 8px;background-position:center}.toggle-btn{position:absolute;top:0;left:0;height:20px;width:20px}.mobile-editor-bar{display:none}.page-container.narrow .middle-panel-footer,.page-container.narrow .separator-container,.page-container.narrow .right-panel-container{display:none!important}.page-container.narrow .middle-panel{flex:1 1 auto!important;width:100%!important;max-width:100%!important}.page-container.narrow.mobile-editor-open{position:relative}.page-container.narrow.mobile-editor-open .right-panel-container{display:flex!important;flex-direction:column;position:absolute;inset:0;z-index:1040;width:100%!important;max-width:100%!important;height:100%!important;background:#fff;overflow:hidden;padding-bottom:env(safe-area-inset-bottom,0px)}.page-container.narrow.mobile-editor-open .right-panel-container ::ng-deep>:not(.mobile-editor-bar){flex:1 1 0;min-height:0;overflow:auto}.page-container.narrow.mobile-editor-open .mobile-editor-bar{display:flex;align-items:center;flex:none;position:relative;z-index:30;height:44px;gap:4px;padding:0 4px;background:var(--main-bg-color, #3b57b8)}.page-container.narrow.mobile-editor-open .mobile-editor-button{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:44px;height:40px;padding:0;touch-action:manipulation;border:none;border-radius:8px;font-size:18px!important;background:transparent;color:#fff;font:inherit;font-weight:600;cursor:pointer}.page-container.narrow.mobile-editor-open .mobile-editor-button:hover,.page-container.narrow.mobile-editor-open .mobile-editor-button:focus-visible{background:#ffffff29;outline:none}:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .mobile-editor-bar{position:absolute;top:0;left:0;z-index:30;height:42px;padding:6px 0 6px 8px;gap:6px;background:transparent}:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .mobile-editor-button{width:36px;height:30px;border-radius:5px;background:#dbe4ff;color:#4465c9;font-size:15px!important}:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .mobile-editor-button:hover,:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .mobile-editor-button:focus-visible{background:#4465c9;color:#f7faff}:host ::ng-deep .page-container.narrow.mobile-editor-open .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .property-grid-tabset>.tabset>.tabset-nav-frame{padding-left:44px}:host ::ng-deep .page-container.narrow.mobile-editor-open.editor-dirty .right-panel-container:has(.property-grid-tabset .tabset-nav-frame:not(.nav-none)) .property-grid-tabset>.tabset>.tabset-nav-frame{padding-left:86px}\n"]
21928
22404
  }]
21929
22405
  }],
@@ -22165,7 +22641,7 @@ var GridFieldComponent = class GridFieldComponent {
22165
22641
  }],
22166
22642
  ngImport: i0,
22167
22643
  template: "<div [formGroup]=\"form\" class=\"field-container\">\r\n <ng-container *ngIf=\"field\">\r\n <div [hidden]=\"!!field.IsHidden\" [ngSwitch]=\"field.FilterType\">\r\n <div class=\"label-group\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"field.FilterType != filterType.CheckBox && field.FilterType != filterType.HorizComboBox\"\r\n [htmlFor]=\"field.PropertyName\">\r\n {{ field.Label }}\r\n </label>\r\n <img\r\n *ngIf=\"field.Required\"\r\n class=\"required-icon\"\r\n [src]=\"this.getRequiredIcon()\"\r\n alt=\"obligatoire\"\r\n />\r\n </div>\r\n\r\n <!--String Input-->\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n [type]=\"field.InputType\"\r\n (change)=\"this.onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n focusable\r\n />\r\n <!-- [(ngModel)]=\"this.entity[field.PropertyName]\" -->\r\n </div>\r\n </div>\r\n\r\n <!--Number Input-->\r\n <div *ngSwitchCase=\"filterType.Integer\" class=\"form-group\">\r\n <div>\r\n <!-- [readonly]=\"field.ReadOnly\" -->\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"number\"\r\n focusable ng-pattern=\"/^[0-9]+$/\" tabindex=\"0\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--ComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n (change)=\"onValueChanged($event)\"\r\n [readonly]=\"field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!-- InputSelect -->\r\n <!-- <div *ngSwitchCase=\"this.filterType.Custom\" class=\"form-group input\">\r\n <alg-input-selector #inputSelector\r\n type=\"text\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"this.field.ModalPropertyValue\"\r\n [modalPropertyName]=\"this.field.ModalPropertyName\"\r\n [modalEntityKey]=\"this.field.ModalEntityKey\"\r\n [modalTitle]=\"this.field.ModalTitle\"\r\n [readonly]=\"this.field.ReadOnly\">\r\n </alg-input-selector>\r\n </div> -->\r\n\r\n <!-- InputSelector with button -->\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n <!-- <alg-selector\r\n #inputSelector\r\n type=\"text\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"field.ModalPropertyValue\"\r\n [modalPropertyName]=\"field.ModalPropertyName\"\r\n [modalEntityKey]=\"field.ModalEntityKey\"\r\n [modalTitle]=\"field.ModalTitle\">\r\n </alg-selector> -->\r\n\r\n <!-- *ngSwitchCase=\"filterType.Custom\" -->\r\n <ng-container *ngIf=\"field.ModalOnly\">\r\n <div class=\"pull-left input-select-default with-button\">\r\n <input\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n />\r\n </div> \r\n </ng-container>\r\n\r\n <alg-selector\r\n [field]=\"field\"\r\n [control]=\"this.control\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n \r\n >\r\n <!-- [control]=\"this.form.controls[field.PropertyName]\" -->\r\n </alg-selector>\r\n\r\n </ng-container>\r\n\r\n <!-- TreeSelector -->\r\n <ng-container *ngSwitchCase=\"this.filterType.TreeSelector\">\r\n <alg-input-tree-selector\r\n [items]=\"field.Data\"\r\n [id]=\"field.PropertyName\"\r\n [bindValue]=\"field.ValueMember\"\r\n [bindLabel]=\"field.DisplayMember\"\r\n childrenKey=\"children\"\r\n countKey=\"childrenCount\"\r\n [formControlName]=\"field.PropertyName\"\r\n placeholder=\"{{ field.Label }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </alg-input-tree-selector>\r\n </ng-container>\r\n\r\n <!-- TextWithbutton -->\r\n <ng-container\r\n *ngSwitchCase=\"this.filterType.TextWithButton\"\r\n class=\"form-group\"\r\n >\r\n <div class=\"input-with-button\">\r\n\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n (change)=\"onValueChanged($event)\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.field.ReadOnly\"\r\n />\r\n\r\n <button\r\n class=\"btn btn-secondary btn-32 btn-input-select\"\r\n (click)=\"onClick(field)\"\r\n >\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <!--HorizComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.HorizComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n class=\"horiz-combox-box\"\r\n placeholder=\"{{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!--Boolean Input-->\r\n <div *ngSwitchCase=\"filterType.CheckBox\" class=\"form-group\">\r\n <div class=\"checkbox-container\">\r\n <label class=\"switch\" [htmlFor]=\"field.PropertyName\">\r\n <input\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n type=\"checkbox\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <span class=\"slider round\"></span>\r\n </label>\r\n <span class=\"checkbox-label\">{{ field.Label }}</span>\r\n </div>\r\n </div>\r\n\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group\">\r\n <div class=\"radio-button-container\">\r\n <form [formGroup]=\"form\" class=\"radio-buttons\">\r\n <div\r\n *ngFor=\"let data of field.Data;let indexOfData = index\" class=\"radio-button\">\r\n <input\r\n type=\"radio\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"getRadioButtonId(field.PropertyName,indexOfData)\"\r\n [value]=\"indexOfData\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <!-- [formControl]=\"this.formControl\" -->\r\n <label class=\"radio-button-label\">{{ data }}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Text zone with button -->\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\"\r\n class=\"form-group\">\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea\r\n #textarea\r\n type=\"text\"\r\n class=\"text-area\"\r\n spellcheck=\"false\"\r\n [formControlName]=\"field.ValueMember\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </textarea>\r\n </div>\r\n <div class=\"feedback-and-button\">\r\n <div class=\"feedback\">\r\n <div\r\n class=\"feedback-green\"\r\n *ngIf=\"field.TextWithStyle.GreenText.length > 0\"\r\n >\r\n {{ field.TextWithStyle.GreenText }}\r\n </div>\r\n <div\r\n class=\"feedback-yellow\"\r\n *ngIf=\"\r\n field.TextWithStyle.YellowText.length > 0\r\n \"\r\n >\r\n {{ field.TextWithStyle.YellowText }}\r\n </div>\r\n <div\r\n class=\"feedback-red\"\r\n *ngIf=\"field.TextWithStyle.RedText.length > 0\"\r\n >\r\n {{ field.TextWithStyle.RedText }}\r\n </div>\r\n </div>\r\n <button\r\n type=\"button\"\r\n id=\"botton-compile\"\r\n class=\"btn btn-primary btn-flat pull-right button\"\r\n (click)=\"onClick(field)\"\r\n >\r\n {{ field.ButtonLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Date -->\r\n <div *ngSwitchCase=\"filterType.Date\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"text\"\r\n [class]=\"this.inputClass\"\r\n placeholder=\"Sélectionner une date\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [bsConfig]=\"bsConfig\"\r\n (bsValueChange)=\"onBsValueChanged($event)\"\r\n algDatepicker\r\n />\r\n <!-- (change)=\"onBsValueChanged($event)\" -->\r\n </div>\r\n </div>\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.DateTime\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [type]=\"field.InputType\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.Text\" class=\"form-group\">\r\n <div>\r\n <textarea\r\n type=\"text\"\r\n rows=\"5\"\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n >\r\n </textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- DropFileZone -->\r\n <div\r\n *ngSwitchCase=\"filterType.DropFileZone\"\r\n class=\"form-group ml-4\"\r\n >\r\n <fieldset>\r\n <input\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n type=\"file\"\r\n class=\"ml--3\"\r\n (change)=\"fileEvent($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n\r\n <!-- Password -->\r\n <div *ngSwitchCase=\"filterType.Password\" class=\"form-group\">\r\n <div class=\"d-flex\">\r\n <div class=\"w-100 ml-15px\">\r\n <input\r\n [type]=\"hidePassword ? 'password' : 'text'\"\r\n [formControl]=\"control\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n autocomplete=\"new-password\"\r\n />\r\n </div>\r\n <!-- btn-32 pull-right button -->\r\n <button class=\"btn btn-secondary\" (click)=\"showPassword()\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"this.hasValidationErrors()\">\r\n <div class=\"validation-message\">\r\n {{ this.getValidationErrors() }}\r\n </div>\r\n <!-- <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('required')\">\r\n Ce champ est obligatoire\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('min')\">\r\n Minimum: {{field.FieldValidators.MinValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('max')\">\r\n Maximum: {{field.FieldValidators.MaxValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('maxLength')\">\r\n Longueur maximale: {{field.FieldValidators.MaxLength}} caractères\r\n </ng-container> -->\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</div>\r\n",
22168
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{width:100%}.input-select-default{width:100%}.input-select-default.with-button{padding-right:35px;margin-right:-32px}.btn-input-select{padding:6px 10px 8px 8px;border-top-right-radius:0;border-bottom-right-radius:0;width:32px;border-color:#adb5bd}.form-group{display:flex;flex-direction:column}.field-container{margin-bottom:5px}.comboBox-icon-and-text{display:inline-block}.comboBox-icon{margin-right:5px;margin-bottom:5px}.comboBox-text{padding-right:10px}.checkbox-label{margin-left:5px;margin-top:5px;flex:1}.checkbox-input{width:17px;height:17px}.radio-button-container{border:1px solid #cbc8d0;border-radius:5px;width:100%;margin-top:5px;padding-top:12px;display:flex;flex-direction:row;flex-wrap:wrap}.under-line{margin:3px 10px 5px}.radio-buttons{margin:0;display:flex;flex-direction:column}.radio-button{margin-right:20px}.radio-buttons input{margin-right:0;margin-left:10px;margin-top:0;height:18px;width:18px;min-height:18px;flex-grow:0}.radio-button-label{margin-right:10px;margin-bottom:12px;margin-left:5px;vertical-align:middle}.text-zone-and-button{width:100%;display:flex;flex-direction:column}.text-area{background-color:#343a40;border-radius:5px;color:#e6e65f;caret-color:#ff0;font-family:monospace;font-weight:700;font-size:large;width:100%;height:200px;padding:10px;cursor:text}.feedback-and-button,.input-with-button{display:flex;flex-direction:row;width:100%}.input-with-button input{margin-right:3px}.button{margin-right:0;margin-top:5px;float:right}.feedback{width:100%;float:left;padding-left:10px}.feedback-green{float:left;width:90%;color:green;font-weight:700}.feedback-yellow{float:left;width:90%;color:orange;font-weight:700}.feedback-red{float:left;width:90%;color:var(--red-error);font-weight:700}.errorMessage{display:block;color:var(--red-error);width:100%}.validation-message{color:#a94442!important;display:inline-block;font-size:small;margin:3px}::ng-deep .ng-select.horiz-combox-box{height:30px;width:230px}::ng-deep .ng-select.horiz-combox-box .ng-select-container{height:30px;width:230px}.ng-select.horiz-combox-box ::ng-deep .ng-select-container .ng-placeholder{color:#3e4152}.input alg-input-selector{width:73.6%;margin:.75rem 0 .75rem .95rem}.ml-15px{margin-left:15px;margin-top:.4em}.textButton{margin-top:.4em;padding-bottom:.4em;margin-right:.8rem}fieldset input.ml--3{margin-left:-3%!important}.label-group{color:var(--main-bg-color)}.label-group span{padding-top:5px;display:inline-block;margin-right:5px}.label-group .required-icon{height:8px;margin:-6px 0 5px 5px;filter:invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}.checkbox-container{display:flex;flex-direction:row;align-items:center}.switch{position:relative;display:inline-block;width:48px;height:26px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#2196f3}input:focus+.slider{box-shadow:0 0 1px #2196f3}input:checked+.slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translate(22px)}.slider.round{border-radius:25px}.slider.round:before{border-radius:50%}\n"],
22644
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{width:100%}.input-select-default{width:100%}.input-select-default.with-button{padding-right:35px;margin-right:-32px}.btn-input-select{padding:6px 10px 8px 8px;border-top-right-radius:0;border-bottom-right-radius:0;width:32px;border-color:#adb5bd}.form-group{display:flex;flex-direction:column}.field-container{margin-bottom:5px}.comboBox-icon-and-text{display:inline-block}.comboBox-icon{margin-right:5px;margin-bottom:5px}.comboBox-text{padding-right:10px}.checkbox-label{margin-left:5px;margin-top:5px;flex:1}.checkbox-input{width:17px;height:17px}.radio-button-container{border:1px solid #cbc8d0;border-radius:5px;width:100%;margin-top:5px;padding-top:12px;display:flex;flex-direction:row;flex-wrap:wrap}.under-line{margin:3px 10px 5px}.radio-buttons{margin:0;display:flex;flex-direction:column}.radio-button{margin-right:20px}.radio-buttons input{margin-right:0;margin-left:10px;margin-top:0;height:18px;width:18px;min-height:18px;flex-grow:0}.radio-button-label{margin-right:10px;margin-bottom:12px;margin-left:5px;vertical-align:middle}.text-zone-and-button{width:100%;display:flex;flex-direction:column}.text-area{background-color:#343a40;border-radius:5px;color:#e6e65f;caret-color:#ff0;font-family:monospace;font-weight:700;font-size:large;width:100%;height:200px;padding:10px;cursor:text}.feedback-and-button,.input-with-button{display:flex;flex-direction:row;width:100%}.input-with-button input{margin-right:3px}.button{margin-right:0;margin-top:5px;float:right}.feedback{width:100%;float:left;padding-left:10px}.feedback-green{float:left;width:90%;color:green;font-weight:700}.feedback-yellow{float:left;width:90%;color:orange;font-weight:700}.feedback-red{float:left;width:90%;color:var(--red-error);font-weight:700}.errorMessage{display:block;color:var(--red-error);width:100%}.validation-message{color:#a94442!important;display:inline-block;font-size:small;margin:3px}::ng-deep .ng-select.horiz-combox-box{height:30px;width:230px}::ng-deep .ng-select.horiz-combox-box .ng-select-container{height:30px;width:230px}.ng-select.horiz-combox-box ::ng-deep .ng-select-container .ng-placeholder{color:#3e4152}.input alg-input-selector{width:73.6%;margin:.75rem 0 .75rem .95rem}.ml-15px{margin-left:15px;margin-top:.4em}.textButton{margin-top:.4em;padding-bottom:.4em;margin-right:.8rem}fieldset input.ml--3{margin-left:-3%!important}.label-group{color:var(--main-bg-color)}.label-group span{padding-top:5px;display:inline-block;margin-right:5px}.label-group .required-icon{height:8px;margin:-6px 0 5px 5px;filter:invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}.checkbox-container{display:flex;flex-direction:row;align-items:center}.switch{position:relative;display:inline-block;width:48px;height:26px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#4465c9}input:focus+.slider{box-shadow:0 0 1px #4465c9}input:checked+.slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translate(22px)}.slider.round{border-radius:25px}.slider.round:before{border-radius:50%}\n"],
22169
22645
  dependencies: [
22170
22646
  {
22171
22647
  kind: "directive",
@@ -22415,7 +22891,7 @@ i0.ɵɵngDeclareClassMetadata({
22415
22891
  changeDetection: ChangeDetectionStrategy.Eager,
22416
22892
  standalone: false,
22417
22893
  template: "<div [formGroup]=\"form\" class=\"field-container\">\r\n <ng-container *ngIf=\"field\">\r\n <div [hidden]=\"!!field.IsHidden\" [ngSwitch]=\"field.FilterType\">\r\n <div class=\"label-group\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"field.FilterType != filterType.CheckBox && field.FilterType != filterType.HorizComboBox\"\r\n [htmlFor]=\"field.PropertyName\">\r\n {{ field.Label }}\r\n </label>\r\n <img\r\n *ngIf=\"field.Required\"\r\n class=\"required-icon\"\r\n [src]=\"this.getRequiredIcon()\"\r\n alt=\"obligatoire\"\r\n />\r\n </div>\r\n\r\n <!--String Input-->\r\n <div *ngSwitchCase=\"filterType.String\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n [type]=\"field.InputType\"\r\n (change)=\"this.onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n focusable\r\n />\r\n <!-- [(ngModel)]=\"this.entity[field.PropertyName]\" -->\r\n </div>\r\n </div>\r\n\r\n <!--Number Input-->\r\n <div *ngSwitchCase=\"filterType.Integer\" class=\"form-group\">\r\n <div>\r\n <!-- [readonly]=\"field.ReadOnly\" -->\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n (input)=\"onValueInput($event)\"\r\n type=\"number\"\r\n focusable ng-pattern=\"/^[0-9]+$/\" tabindex=\"0\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--ComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.ComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n placeholder=\"Sélectionner {{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n [clearable]=\"field.IsClearable\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n [selectOnTab]=\"true\"\r\n (change)=\"onValueChanged($event)\"\r\n [readonly]=\"field.ReadOnly\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!-- InputSelect -->\r\n <!-- <div *ngSwitchCase=\"this.filterType.Custom\" class=\"form-group input\">\r\n <alg-input-selector #inputSelector\r\n type=\"text\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"this.field.ModalPropertyValue\"\r\n [modalPropertyName]=\"this.field.ModalPropertyName\"\r\n [modalEntityKey]=\"this.field.ModalEntityKey\"\r\n [modalTitle]=\"this.field.ModalTitle\"\r\n [readonly]=\"this.field.ReadOnly\">\r\n </alg-input-selector>\r\n </div> -->\r\n\r\n <!-- InputSelector with button -->\r\n <ng-container *ngSwitchCase=\"this.filterType.Custom\">\r\n <!-- <alg-selector\r\n #inputSelector\r\n type=\"text\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [modalPropertyValue]=\"field.ModalPropertyValue\"\r\n [modalPropertyName]=\"field.ModalPropertyName\"\r\n [modalEntityKey]=\"field.ModalEntityKey\"\r\n [modalTitle]=\"field.ModalTitle\">\r\n </alg-selector> -->\r\n\r\n <!-- *ngSwitchCase=\"filterType.Custom\" -->\r\n <ng-container *ngIf=\"field.ModalOnly\">\r\n <div class=\"pull-left input-select-default with-button\">\r\n <input\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n />\r\n </div> \r\n </ng-container>\r\n\r\n <alg-selector\r\n [field]=\"field\"\r\n [control]=\"this.control\"\r\n (change)=\"this.inputSelectorChanged($event)\"\r\n \r\n >\r\n <!-- [control]=\"this.form.controls[field.PropertyName]\" -->\r\n </alg-selector>\r\n\r\n </ng-container>\r\n\r\n <!-- TreeSelector -->\r\n <ng-container *ngSwitchCase=\"this.filterType.TreeSelector\">\r\n <alg-input-tree-selector\r\n [items]=\"field.Data\"\r\n [id]=\"field.PropertyName\"\r\n [bindValue]=\"field.ValueMember\"\r\n [bindLabel]=\"field.DisplayMember\"\r\n childrenKey=\"children\"\r\n countKey=\"childrenCount\"\r\n [formControlName]=\"field.PropertyName\"\r\n placeholder=\"{{ field.Label }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </alg-input-tree-selector>\r\n </ng-container>\r\n\r\n <!-- TextWithbutton -->\r\n <ng-container\r\n *ngSwitchCase=\"this.filterType.TextWithButton\"\r\n class=\"form-group\"\r\n >\r\n <div class=\"input-with-button\">\r\n\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n (change)=\"onValueChanged($event)\"\r\n [name]=\"this.field.PropertyName\"\r\n [id]=\"this.field.PropertyName\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"this.field.ReadOnly\"\r\n />\r\n\r\n <button\r\n class=\"btn btn-secondary btn-32 btn-input-select\"\r\n (click)=\"onClick(field)\"\r\n >\r\n <span class=\"fa fa-ellipsis-h\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <!--HorizComboBox Input-->\r\n <div *ngSwitchCase=\"filterType.HorizComboBox\" class=\"form-group\">\r\n <div>\r\n <ng-select\r\n appendTo=\"body\"\r\n class=\"horiz-combox-box\"\r\n placeholder=\"{{ field.Label }}\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [items]=\"field.Data\"\r\n [multiple]=\"field.MultipleSelection\"\r\n [hideSelected]=\"field.HideSelected\"\r\n bindValue=\"{{ field.ValueMember }}\"\r\n bindLabel=\"{{ field.DisplayMember }}\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <!--Boolean Input-->\r\n <div *ngSwitchCase=\"filterType.CheckBox\" class=\"form-group\">\r\n <div class=\"checkbox-container\">\r\n <label class=\"switch\" [htmlFor]=\"field.PropertyName\">\r\n <input\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n type=\"checkbox\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <span class=\"slider round\"></span>\r\n </label>\r\n <span class=\"checkbox-label\">{{ field.Label }}</span>\r\n </div>\r\n </div>\r\n\r\n <!--Enum Input-->\r\n <div *ngSwitchCase=\"filterType.RadioButton\" class=\"form-group\">\r\n <div class=\"radio-button-container\">\r\n <form [formGroup]=\"form\" class=\"radio-buttons\">\r\n <div\r\n *ngFor=\"let data of field.Data;let indexOfData = index\" class=\"radio-button\">\r\n <input\r\n type=\"radio\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"getRadioButtonId(field.PropertyName,indexOfData)\"\r\n [value]=\"indexOfData\"\r\n (change)=\"onValueChanged($event)\"\r\n />\r\n <!-- [formControl]=\"this.formControl\" -->\r\n <label class=\"radio-button-label\">{{ data }}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Text zone with button -->\r\n <div *ngSwitchCase=\"filterType.TextZoneWithButton\"\r\n class=\"form-group\">\r\n <div class=\"text-zone-and-button\">\r\n <div class=\"text-zone-container\">\r\n <textarea\r\n #textarea\r\n type=\"text\"\r\n class=\"text-area\"\r\n spellcheck=\"false\"\r\n [formControlName]=\"field.ValueMember\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n >\r\n </textarea>\r\n </div>\r\n <div class=\"feedback-and-button\">\r\n <div class=\"feedback\">\r\n <div\r\n class=\"feedback-green\"\r\n *ngIf=\"field.TextWithStyle.GreenText.length > 0\"\r\n >\r\n {{ field.TextWithStyle.GreenText }}\r\n </div>\r\n <div\r\n class=\"feedback-yellow\"\r\n *ngIf=\"\r\n field.TextWithStyle.YellowText.length > 0\r\n \"\r\n >\r\n {{ field.TextWithStyle.YellowText }}\r\n </div>\r\n <div\r\n class=\"feedback-red\"\r\n *ngIf=\"field.TextWithStyle.RedText.length > 0\"\r\n >\r\n {{ field.TextWithStyle.RedText }}\r\n </div>\r\n </div>\r\n <button\r\n type=\"button\"\r\n id=\"botton-compile\"\r\n class=\"btn btn-primary btn-flat pull-right button\"\r\n (click)=\"onClick(field)\"\r\n >\r\n {{ field.ButtonLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Date -->\r\n <div *ngSwitchCase=\"filterType.Date\" class=\"form-group\">\r\n <div>\r\n <input\r\n type=\"text\"\r\n [class]=\"this.inputClass\"\r\n placeholder=\"Sélectionner une date\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [bsConfig]=\"bsConfig\"\r\n (bsValueChange)=\"onBsValueChanged($event)\"\r\n algDatepicker\r\n />\r\n <!-- (change)=\"onBsValueChanged($event)\" -->\r\n </div>\r\n </div>\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.DateTime\" class=\"form-group\">\r\n <div>\r\n <input\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [id]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [type]=\"field.InputType\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Text input -->\r\n <div *ngSwitchCase=\"filterType.Text\" class=\"form-group\">\r\n <div>\r\n <textarea\r\n type=\"text\"\r\n rows=\"5\"\r\n [class]=\"this.inputClass\"\r\n [formControlName]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n >\r\n </textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- DropFileZone -->\r\n <div\r\n *ngSwitchCase=\"filterType.DropFileZone\"\r\n class=\"form-group ml-4\"\r\n >\r\n <fieldset>\r\n <input\r\n [id]=\"field.PropertyName\"\r\n (change)=\"onValueChanged($event)\"\r\n type=\"file\"\r\n class=\"ml--3\"\r\n (change)=\"fileEvent($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n\r\n <!-- Password -->\r\n <div *ngSwitchCase=\"filterType.Password\" class=\"form-group\">\r\n <div class=\"d-flex\">\r\n <div class=\"w-100 ml-15px\">\r\n <input\r\n [type]=\"hidePassword ? 'password' : 'text'\"\r\n [formControl]=\"control\"\r\n (change)=\"onValueChanged($event)\"\r\n [id]=\"field.PropertyName\"\r\n [name]=\"field.PropertyName\"\r\n [readonly]=\"field.ReadOnly\"\r\n autocomplete=\"new-password\"\r\n />\r\n </div>\r\n <!-- btn-32 pull-right button -->\r\n <button class=\"btn btn-secondary\" (click)=\"showPassword()\">\r\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"this.hasValidationErrors()\">\r\n <div class=\"validation-message\">\r\n {{ this.getValidationErrors() }}\r\n </div>\r\n <!-- <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('required')\">\r\n Ce champ est obligatoire\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('min')\">\r\n Minimum: {{field.FieldValidators.MinValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('max')\">\r\n Maximum: {{field.FieldValidators.MaxValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"this.form.controls[field.PropertyName]?.hasError('maxLength')\">\r\n Longueur maximale: {{field.FieldValidators.MaxLength}} caractères\r\n </ng-container> -->\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</div>\r\n",
22418
- styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{width:100%}.input-select-default{width:100%}.input-select-default.with-button{padding-right:35px;margin-right:-32px}.btn-input-select{padding:6px 10px 8px 8px;border-top-right-radius:0;border-bottom-right-radius:0;width:32px;border-color:#adb5bd}.form-group{display:flex;flex-direction:column}.field-container{margin-bottom:5px}.comboBox-icon-and-text{display:inline-block}.comboBox-icon{margin-right:5px;margin-bottom:5px}.comboBox-text{padding-right:10px}.checkbox-label{margin-left:5px;margin-top:5px;flex:1}.checkbox-input{width:17px;height:17px}.radio-button-container{border:1px solid #cbc8d0;border-radius:5px;width:100%;margin-top:5px;padding-top:12px;display:flex;flex-direction:row;flex-wrap:wrap}.under-line{margin:3px 10px 5px}.radio-buttons{margin:0;display:flex;flex-direction:column}.radio-button{margin-right:20px}.radio-buttons input{margin-right:0;margin-left:10px;margin-top:0;height:18px;width:18px;min-height:18px;flex-grow:0}.radio-button-label{margin-right:10px;margin-bottom:12px;margin-left:5px;vertical-align:middle}.text-zone-and-button{width:100%;display:flex;flex-direction:column}.text-area{background-color:#343a40;border-radius:5px;color:#e6e65f;caret-color:#ff0;font-family:monospace;font-weight:700;font-size:large;width:100%;height:200px;padding:10px;cursor:text}.feedback-and-button,.input-with-button{display:flex;flex-direction:row;width:100%}.input-with-button input{margin-right:3px}.button{margin-right:0;margin-top:5px;float:right}.feedback{width:100%;float:left;padding-left:10px}.feedback-green{float:left;width:90%;color:green;font-weight:700}.feedback-yellow{float:left;width:90%;color:orange;font-weight:700}.feedback-red{float:left;width:90%;color:var(--red-error);font-weight:700}.errorMessage{display:block;color:var(--red-error);width:100%}.validation-message{color:#a94442!important;display:inline-block;font-size:small;margin:3px}::ng-deep .ng-select.horiz-combox-box{height:30px;width:230px}::ng-deep .ng-select.horiz-combox-box .ng-select-container{height:30px;width:230px}.ng-select.horiz-combox-box ::ng-deep .ng-select-container .ng-placeholder{color:#3e4152}.input alg-input-selector{width:73.6%;margin:.75rem 0 .75rem .95rem}.ml-15px{margin-left:15px;margin-top:.4em}.textButton{margin-top:.4em;padding-bottom:.4em;margin-right:.8rem}fieldset input.ml--3{margin-left:-3%!important}.label-group{color:var(--main-bg-color)}.label-group span{padding-top:5px;display:inline-block;margin-right:5px}.label-group .required-icon{height:8px;margin:-6px 0 5px 5px;filter:invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}.checkbox-container{display:flex;flex-direction:row;align-items:center}.switch{position:relative;display:inline-block;width:48px;height:26px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#2196f3}input:focus+.slider{box-shadow:0 0 1px #2196f3}input:checked+.slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translate(22px)}.slider.round{border-radius:25px}.slider.round:before{border-radius:50%}\n"]
22894
+ styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}:host{width:100%}.input-select-default{width:100%}.input-select-default.with-button{padding-right:35px;margin-right:-32px}.btn-input-select{padding:6px 10px 8px 8px;border-top-right-radius:0;border-bottom-right-radius:0;width:32px;border-color:#adb5bd}.form-group{display:flex;flex-direction:column}.field-container{margin-bottom:5px}.comboBox-icon-and-text{display:inline-block}.comboBox-icon{margin-right:5px;margin-bottom:5px}.comboBox-text{padding-right:10px}.checkbox-label{margin-left:5px;margin-top:5px;flex:1}.checkbox-input{width:17px;height:17px}.radio-button-container{border:1px solid #cbc8d0;border-radius:5px;width:100%;margin-top:5px;padding-top:12px;display:flex;flex-direction:row;flex-wrap:wrap}.under-line{margin:3px 10px 5px}.radio-buttons{margin:0;display:flex;flex-direction:column}.radio-button{margin-right:20px}.radio-buttons input{margin-right:0;margin-left:10px;margin-top:0;height:18px;width:18px;min-height:18px;flex-grow:0}.radio-button-label{margin-right:10px;margin-bottom:12px;margin-left:5px;vertical-align:middle}.text-zone-and-button{width:100%;display:flex;flex-direction:column}.text-area{background-color:#343a40;border-radius:5px;color:#e6e65f;caret-color:#ff0;font-family:monospace;font-weight:700;font-size:large;width:100%;height:200px;padding:10px;cursor:text}.feedback-and-button,.input-with-button{display:flex;flex-direction:row;width:100%}.input-with-button input{margin-right:3px}.button{margin-right:0;margin-top:5px;float:right}.feedback{width:100%;float:left;padding-left:10px}.feedback-green{float:left;width:90%;color:green;font-weight:700}.feedback-yellow{float:left;width:90%;color:orange;font-weight:700}.feedback-red{float:left;width:90%;color:var(--red-error);font-weight:700}.errorMessage{display:block;color:var(--red-error);width:100%}.validation-message{color:#a94442!important;display:inline-block;font-size:small;margin:3px}::ng-deep .ng-select.horiz-combox-box{height:30px;width:230px}::ng-deep .ng-select.horiz-combox-box .ng-select-container{height:30px;width:230px}.ng-select.horiz-combox-box ::ng-deep .ng-select-container .ng-placeholder{color:#3e4152}.input alg-input-selector{width:73.6%;margin:.75rem 0 .75rem .95rem}.ml-15px{margin-left:15px;margin-top:.4em}.textButton{margin-top:.4em;padding-bottom:.4em;margin-right:.8rem}fieldset input.ml--3{margin-left:-3%!important}.label-group{color:var(--main-bg-color)}.label-group span{padding-top:5px;display:inline-block;margin-right:5px}.label-group .required-icon{height:8px;margin:-6px 0 5px 5px;filter:invert(25%) sepia(61%) saturate(2196%) hue-rotate(334deg) brightness(100%) contrast(94%)}.checkbox-container{display:flex;flex-direction:row;align-items:center}.switch{position:relative;display:inline-block;width:48px;height:26px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#4465c9}input:focus+.slider{box-shadow:0 0 1px #4465c9}input:checked+.slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translate(22px)}.slider.round{border-radius:25px}.slider.round:before{border-radius:50%}\n"]
22419
22895
  }]
22420
22896
  }],
22421
22897
  ctorParameters: () => [{ type: ValidationService }],
@@ -22975,7 +23451,8 @@ var CoreUxModule = class CoreUxModule {
22975
23451
  DatePickerDirective,
22976
23452
  GridStylePipe,
22977
23453
  RowRefDirective,
22978
- GridViewMenuComponent
23454
+ GridViewMenuComponent,
23455
+ GridDistinctFilterComponent
22979
23456
  ],
22980
23457
  exports: [
22981
23458
  ActionsComponent,
@@ -23171,7 +23648,8 @@ var CoreUxModule = class CoreUxModule {
23171
23648
  FormsModule,
23172
23649
  ReactiveFormsModule,
23173
23650
  NgSelectModule,
23174
- GridViewMenuComponent
23651
+ GridViewMenuComponent,
23652
+ GridDistinctFilterComponent
23175
23653
  ]
23176
23654
  });
23177
23655
  }
@@ -23194,7 +23672,8 @@ i0.ɵɵngDeclareClassMetadata({
23194
23672
  DatePickerDirective,
23195
23673
  GridStylePipe,
23196
23674
  RowRefDirective,
23197
- GridViewMenuComponent
23675
+ GridViewMenuComponent,
23676
+ GridDistinctFilterComponent
23198
23677
  ],
23199
23678
  declarations: [...components],
23200
23679
  exports: [...components, DatePickerDirective],