@dflat-core/web 1.7.2078 → 1.7.2080

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 (687) 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 +169 -169
  680. package/assets/theme-variables.scss +98 -98
  681. package/assets/variables.scss +93 -93
  682. package/fesm2022/dflat-core-web-core-ux.mjs +96 -23
  683. package/fesm2022/dflat-core-web-core-ux.mjs.map +1 -1
  684. package/fesm2022/dflat-core-web-system-data.mjs.map +1 -1
  685. package/fesm2022/dflat-core-web-system-ux.mjs.map +1 -1
  686. package/package.json +1 -1
  687. package/types/dflat-core-web-core-ux.d.ts +28 -0
@@ -9537,6 +9537,10 @@ var PageTabService = class PageTabService {
9537
9537
  this.router.navigateByUrl(tab.url);
9538
9538
  }
9539
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
+ }
9540
9544
  const tabs = this.tabs;
9541
9545
  const index = tabs.findIndex((t) => t.id === tab.id);
9542
9546
  if (index < 0) return;
@@ -9552,6 +9556,21 @@ var PageTabService = class PageTabService {
9552
9556
  this.router.navigateByUrl(neighbour.url);
9553
9557
  } else this.router.navigateByUrl("/");
9554
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
+ }
9555
9574
  move(id, position) {
9556
9575
  const tabs = [...this.tabs];
9557
9576
  const from = tabs.findIndex((t) => t.id === id);
@@ -9577,7 +9596,11 @@ var PageTabService = class PageTabService {
9577
9596
  id: this.nextId++,
9578
9597
  path: t.path,
9579
9598
  url: t.url || t.path,
9580
- title: t.title || t.path
9599
+ title: t.title || t.path,
9600
+ ...t.parentUrl ? {
9601
+ parentUrl: t.parentUrl,
9602
+ parentTitle: t.parentTitle
9603
+ } : {}
9581
9604
  }));
9582
9605
  if (tabs.length > 0) this.tabs$.next(tabs);
9583
9606
  }
@@ -9586,7 +9609,9 @@ var PageTabService = class PageTabService {
9586
9609
  localStorage.setItem(PageTabService.storageKey, JSON.stringify(tabs.map((t) => ({
9587
9610
  path: t.path,
9588
9611
  url: t.url,
9589
- title: t.title
9612
+ title: t.title,
9613
+ parentUrl: t.parentUrl,
9614
+ parentTitle: t.parentTitle
9590
9615
  }))));
9591
9616
  } catch {}
9592
9617
  }
@@ -9670,16 +9695,22 @@ var PageTabService = class PageTabService {
9670
9695
  id: this.toId ?? this.nextId++,
9671
9696
  path,
9672
9697
  url,
9673
- title: menuTitle || this.titleOf(path)
9698
+ ...this.titlesOf(path, menuTitle)
9674
9699
  };
9675
9700
  tabs.push(tab);
9676
- } else {
9677
- const changedPath = tab.path !== path;
9701
+ } else if (tab.path !== path) {
9702
+ const { parentUrl, parentTitle, ...previous } = tab;
9678
9703
  tab = {
9679
- ...tab,
9704
+ ...previous,
9680
9705
  path,
9681
9706
  url,
9682
- 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
9683
9714
  };
9684
9715
  tabs[tabs.findIndex((t) => t.id === tab.id)] = tab;
9685
9716
  }
@@ -9700,6 +9731,29 @@ var PageTabService = class PageTabService {
9700
9731
  if (handle?.componentRef) handle.componentRef.destroy();
9701
9732
  this.handles.delete(id);
9702
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
+ }
9703
9757
  titleOf(path) {
9704
9758
  if (path === "" || path === "/") return "Accueil";
9705
9759
  const item = PageTabService.findMenuItem(this.menuItems, path);
@@ -10076,6 +10130,9 @@ var PageTabsComponent = class PageTabsComponent {
10076
10130
  this.menuOpen = false;
10077
10131
  this.pageTabs.activate(tab);
10078
10132
  }
10133
+ closeTitle(tab) {
10134
+ return tab.parentUrl ? `Revenir à « ${tab.parentTitle} »` : "Fermer l'onglet";
10135
+ }
10079
10136
  onClose(tab, event) {
10080
10137
  event.stopPropagation();
10081
10138
  this.pageTabs.close(tab);
@@ -10182,7 +10239,7 @@ var PageTabsComponent = class PageTabsComponent {
10182
10239
  descendants: true
10183
10240
  }],
10184
10241
  ngImport: i0,
10185
- 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",
10186
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"],
10187
10244
  dependencies: [{
10188
10245
  kind: "pipe",
@@ -10204,7 +10261,7 @@ i0.ɵɵngDeclareClassMetadata({
10204
10261
  selector: "alg-page-tabs",
10205
10262
  changeDetection: ChangeDetectionStrategy.Eager,
10206
10263
  standalone: false,
10207
- 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",
10208
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"]
10209
10266
  }]
10210
10267
  }],
@@ -16785,7 +16842,7 @@ var MobileMenuComponent = class MobileMenuComponent {
16785
16842
  inline: "inline"
16786
16843
  },
16787
16844
  ngImport: i0,
16788
- 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",
16789
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"],
16790
16847
  dependencies: [
16791
16848
  {
@@ -16836,7 +16893,7 @@ i0.ɵɵngDeclareClassMetadata({
16836
16893
  selector: "alg-mobile-menu",
16837
16894
  changeDetection: ChangeDetectionStrategy.Eager,
16838
16895
  standalone: false,
16839
- 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",
16840
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"]
16841
16898
  }]
16842
16899
  }],
@@ -17282,7 +17339,7 @@ var CustomSortComponent = class CustomSortComponent {
17282
17339
  isStandalone: true,
17283
17340
  selector: "alg-custom-sort",
17284
17341
  ngImport: i0,
17285
- 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",
17286
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"],
17287
17344
  dependencies: [
17288
17345
  {
@@ -17356,7 +17413,7 @@ i0.ɵɵngDeclareClassMetadata({
17356
17413
  standalone: true,
17357
17414
  imports: [CommonModule, FormsModule],
17358
17415
  changeDetection: ChangeDetectionStrategy.Eager,
17359
- 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",
17360
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"]
17361
17418
  }]
17362
17419
  }]
@@ -20075,6 +20132,11 @@ const FilterOperators = {
20075
20132
  label: "n'est aucune de"
20076
20133
  }]
20077
20134
  };
20135
+ const EditorOperators = {
20136
+ ...FilterOperators,
20137
+ text: [...FilterOperators.text, ...FilterOperators.list],
20138
+ number: [...FilterOperators.number, ...FilterOperators.list]
20139
+ };
20078
20140
  var FilterEditorComponent = class FilterEditorComponent {
20079
20141
  constructor() {
20080
20142
  this.columns = [];
@@ -20150,7 +20212,18 @@ var FilterEditorComponent = class FilterEditorComponent {
20150
20212
  return this.columns.find((c) => c.key === key);
20151
20213
  }
20152
20214
  operatorsOf(condition) {
20153
- return FilterOperators[this.columnOf(condition.Property)?.type ?? "text"];
20215
+ return EditorOperators[this.columnOf(condition.Property)?.type ?? "text"];
20216
+ }
20217
+ hasKnownValues(condition) {
20218
+ return !!this.columnOf(condition.Property)?.values?.length;
20219
+ }
20220
+ addValue(condition, input) {
20221
+ const value = (input.value ?? "").trim();
20222
+ input.value = "";
20223
+ if (value && !(condition.Values ?? []).includes(value)) condition.Values = [...condition.Values ?? [], value];
20224
+ }
20225
+ removeValue(condition, value) {
20226
+ condition.Values = (condition.Values ?? []).filter((v) => v !== value);
20154
20227
  }
20155
20228
  hasValue(condition) {
20156
20229
  return !ViewFilterNoValueOperators.includes(condition.Operator);
@@ -20235,7 +20308,7 @@ var FilterEditorComponent = class FilterEditorComponent {
20235
20308
  summary(group = this.filter) {
20236
20309
  return [...group.Conditions.map((c) => {
20237
20310
  const column = this.columnOf(c.Property);
20238
- const operator = FilterOperators[column?.type ?? "text"].find((o) => o.value === c.Operator)?.label ?? c.Operator;
20311
+ const operator = this.operatorsOf(c).find((o) => o.value === c.Operator)?.label ?? c.Operator;
20239
20312
  const values = this.isList(c) ? (c.Values ?? []).map((v) => column?.values?.find((x) => x.value === v)?.label ?? v).join(", ") : !this.hasValue(c) ? "" : this.hasSecondValue(c) ? `${c.Value ?? "…"} et ${c.Value2 ?? "…"}` : c.Value ?? "…";
20240
20313
  return `${column?.label ?? c.Property} ${operator}${values ? " « " + values + " »" : ""}`;
20241
20314
  }), ...(group.Groups ?? []).map((g) => `(${this.summary(g)})`)].join(group.Logic === "or" ? " OU " : " ET ") || "Aucun filtre";
@@ -20266,8 +20339,8 @@ var FilterEditorComponent = class FilterEditorComponent {
20266
20339
  panelFields: "panelFields"
20267
20340
  },
20268
20341
  ngImport: i0,
20269
- template: "<div class=\"fe\">\n <div class=\"fe-tabs\" role=\"tablist\" *ngIf=\"!section\">\n <button type=\"button\" class=\"fe-tab\" [class.active]=\"tab === 'filters'\" (click)=\"tab = 'filters'\">Filtres</button>\n <button type=\"button\" class=\"fe-tab\" [class.active]=\"tab === 'sort'\" (click)=\"tab = 'sort'\">Tri</button>\n </div>\n\n <div class=\"fe-body\" *ngIf=\"shownTab === 'filters'\">\n <!-- Filtres de l'écran (FilterPanel) : valeurs enregistrées avec la vue, appliquées au FilterPanel. -->\n <div class=\"fe-panel\" *ngIf=\"panelFields.length || shownPanelFields().length\">\n <div class=\"fe-panel-title\">Filtres de l'écran</div>\n <div class=\"fe-panel-field\" *ngFor=\"let field of shownPanelFields(); trackBy: trackKey\">\n <span [title]=\"field.label\">{{ field.label }}</span>\n <ng-container [ngSwitch]=\"field.type\">\n <select *ngSwitchCase=\"'list'\" class=\"form-control\" [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\">\n <option value=\"\">Choisir…</option>\n <option *ngFor=\"let option of field.values\" [value]=\"option.value\">{{ option.label }}</option>\n </select>\n <select *ngSwitchCase=\"'bool'\" class=\"form-control\" [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\">\n <option value=\"\">Choisir…</option>\n <option value=\"true\">Oui</option>\n <option value=\"false\">Non</option>\n </select>\n <input *ngSwitchDefault class=\"form-control\" [type]=\"field.type === 'number' ? 'number' : field.type === 'date' ? 'date' : 'text'\"\n [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\" />\n </ng-container>\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer le filtre de l'écran\" (click)=\"removePanelField(field)\"><i class=\"fa fa-times\"></i></button>\n </div>\n <!-- Ajout d'un filtre de l'écran : les champs du FilterPanel pas encore utilisés. -->\n <div class=\"fe-adds\" *ngIf=\"availablePanelFields().length\">\n <select class=\"form-control fe-add-panel\" [ngModel]=\"''\" (ngModelChange)=\"addPanelField($event)\">\n <option value=\"\">+ Filtre de l'écran</option>\n <option *ngFor=\"let field of availablePanelFields(); trackBy: trackKey\" [value]=\"field.key\">{{ field.label }}</option>\n </select>\n </div>\n </div>\n <div class=\"fe-panel-title\" *ngIf=\"panelFields.length || shownPanelFields().length\">Filtre additionnel</div>\n <ng-container *ngTemplateOutlet=\"groupTpl; context: { group: filter, parent: null, index: 0, depth: 0 }\"></ng-container>\n <div class=\"fe-summary\">{{ summary() }}</div>\n </div>\n\n <div class=\"fe-body\" *ngIf=\"shownTab === 'sort'\">\n <div class=\"fe-sort\" *ngFor=\"let level of sort; let i = index; trackBy: trackIndex\">\n <span class=\"fe-sort-label\">{{ i === 0 ? 'Trier par' : 'Puis par' }}</span>\n <select class=\"form-control\" [(ngModel)]=\"level.property\">\n <option *ngFor=\"let column of columns\" [value]=\"column.key\">{{ column.label }}</option>\n </select>\n <select class=\"form-control fe-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=\"fe-icon\" title=\"Monter\" [disabled]=\"i === 0\" (click)=\"moveSort(i, -1)\"><i class=\"fa fa-arrow-up\"></i></button>\n <button type=\"button\" class=\"fe-icon\" title=\"Descendre\" [disabled]=\"i === sort.length - 1\" (click)=\"moveSort(i, 1)\"><i class=\"fa fa-arrow-down\"></i></button>\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer\" (click)=\"removeSort(i)\"><i class=\"fa fa-times\"></i></button>\n </div>\n <div class=\"fe-adds\"><button type=\"button\" class=\"fe-add\" (click)=\"addSort()\">+ Niveau</button></div>\n </div>\n\n <div class=\"fe-foot\">\n <label class=\"fe-save\" *ngIf=\"!embedded\" [class.disabled]=\"!canSaveInView\"\n [title]=\"canSaveInView ? '' : 'La vue par défaut est en lecture seule : dupliquez-la pour y enregistrer un filtre'\">\n <input type=\"checkbox\" [(ngModel)]=\"saveInView\" [disabled]=\"!canSaveInView\" />\n <span>Enregistrer dans la vue{{ viewLabel ? ' « ' + viewLabel + ' »' : '' }}</span>\n </label>\n <button type=\"button\" class=\"fe-clear\" (click)=\"clear()\">Tout effacer</button>\n </div>\n</div>\n\n<!-- Groupe : relation ET / OU, conditions, groupes imbriqués. -->\n<ng-template #groupTpl let-group=\"group\" let-parent=\"parent\" let-index=\"index\" let-depth=\"depth\">\n <div class=\"fe-group\" [class.or]=\"group.Logic === 'or'\" [class.nested]=\"depth > 0\">\n <div class=\"fe-group-head\">\n <span class=\"fe-logic\">\n <button type=\"button\" [class.on]=\"group.Logic === 'and'\" class=\"and\" (click)=\"setLogic(group, 'and')\">ET</button>\n <button type=\"button\" [class.on]=\"group.Logic === 'or'\" class=\"or\" (click)=\"setLogic(group, 'or')\">OU</button>\n </span>\n <span class=\"fe-group-hint\">{{ group.Logic === 'and' ? 'Toutes les conditions' : 'Au moins une condition' }}</span>\n <button type=\"button\" *ngIf=\"parent\" class=\"fe-icon fe-group-remove\" title=\"Retirer le groupe\" (click)=\"removeGroup(parent, index)\">\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <div class=\"fe-cond\" *ngFor=\"let condition of group.Conditions; let i = index; trackBy: trackIndex\">\n <select class=\"form-control\" [(ngModel)]=\"condition.Property\" (ngModelChange)=\"onColumnChange(condition)\">\n <option *ngFor=\"let column of columns\" [value]=\"column.key\">{{ column.label }}</option>\n </select>\n <select class=\"form-control\" [(ngModel)]=\"condition.Operator\" (ngModelChange)=\"onOperatorChange(condition)\">\n <option *ngFor=\"let op of operatorsOf(condition)\" [value]=\"op.value\">{{ op.label }}</option>\n </select>\n <span class=\"fe-value\">\n <ng-container *ngIf=\"isList(condition); else valueTpl\">\n <span class=\"fe-chips\">\n <button type=\"button\" *ngFor=\"let option of columnOf(condition.Property)?.values\" class=\"fe-chip\"\n [class.on]=\"condition.Values?.includes(option.value)\" (click)=\"toggleValue(condition, option.value)\">{{ option.label }}</button>\n </span>\n </ng-container>\n <ng-template #valueTpl>\n <ng-container *ngIf=\"hasValue(condition)\">\n <input class=\"form-control\" [type]=\"inputType(condition)\" [(ngModel)]=\"condition.Value\" />\n <input *ngIf=\"hasSecondValue(condition)\" class=\"form-control\" [type]=\"inputType(condition)\" [(ngModel)]=\"condition.Value2\" />\n </ng-container>\n </ng-template>\n </span>\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer la condition\" (click)=\"removeCondition(group, i)\"><i class=\"fa fa-times\"></i></button>\n </div>\n\n <ng-container *ngFor=\"let sub of group.Groups; let gi = index; trackBy: trackIndex\">\n <ng-container *ngTemplateOutlet=\"groupTpl; context: { group: sub, parent: group, index: gi, depth: depth + 1 }\"></ng-container>\n </ng-container>\n\n <div class=\"fe-adds\">\n <button type=\"button\" class=\"fe-add\" (click)=\"addCondition(group)\">+ Condition</button>\n <button type=\"button\" class=\"fe-add\" *ngIf=\"depth < maxDepth - 1\" (click)=\"addGroup(group)\">+ Groupe</button>\n </div>\n </div>\n</ng-template>\n",
20270
- 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}.fe-panel{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:6px 12px;margin-bottom:12px}.fe-panel .fe-adds{grid-column:1/-1}.fe-add-panel{width:auto;border-style:dashed;color:#4465c9}.fe-panel-title{grid-column:1/-1;margin:4px 0 2px;font-weight:600}.fe-panel-field{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:8px;margin:0;font-weight:400}.fe-panel-field>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe{display:flex;flex-direction:column;color:#4d5a81;font-size:13px}.fe-tabs{display:flex;gap:4px;padding:8px 14px 0;border-bottom:1px solid #DBE4FF}.fe-tab{padding:6px 12px;border:none;border-bottom:2px solid transparent;background:none;color:#9fa9c7;font:inherit;font-weight:700;cursor:pointer}.fe-tab.active{color:#4465c9;border-bottom-color:#5272d3}.fe-body{display:flex;flex-direction:column;gap:10px;max-height:60vh;overflow-y:auto;padding:12px 14px}.fe-group{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid #DBE4FF;border-left:4px solid #3b57b8;border-radius:0 4px 4px 0;background:#fff}.fe-group.or{border-left-color:#e07b12}.fe-group.nested{background:#f6f8fd}.fe-group-head{display:flex;align-items:center;gap:8px;font-size:12px;color:#9fa9c7}.fe-group-remove{margin-left:auto}.fe-logic{display:inline-flex;border:1px solid #DBE4FF;border-radius:999px;overflow:hidden}.fe-logic button{padding:2px 10px;border:none;background:none;color:#9fa9c7;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.fe-logic button.on.and{background:#3b57b8;color:#fff}.fe-logic button.on.or{background:#e07b12;color:#fff}.fe-cond{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.4fr) 28px;gap:6px;align-items:center;padding:4px 6px;border:1px solid #DBE4FF;border-left:3px solid #3b57b8;border-radius:0 4px 4px 0;background:#fff}.fe-group.or>.fe-cond{border-left-color:#e07b12}@media(max-width:600px){.fe-cond{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 28px}.fe-cond .fe-value{grid-column:1/3}}select.form-control,input.form-control{height:30px;min-width:0;padding:2px 6px;font-size:13px}.fe-value{display:flex;gap:6px;min-width:0}.fe-value input{flex:1}.fe-chips{display:flex;flex-wrap:wrap;gap:4px}.fe-chip{padding:2px 8px;border:1px solid #C1D0FD;border-radius:999px;background:#fff;color:#4d5a81;font:inherit;font-size:12px;cursor:pointer}.fe-chip.on{background:#5272d3;border-color:#5272d3;color:#fff}.fe-icon{width:28px;height:28px;padding:0;border:none;border-radius:6px;background:none;color:#9fa9c7;cursor:pointer}.fe-icon:hover:not(:disabled){background:#ebf0ff;color:#4d5a81}.fe-icon:disabled{opacity:.3;cursor:default}.fe-adds{display:flex;gap:8px;flex-wrap:wrap}.fe-add{padding:3px 10px;border:1px dashed #C1D0FD;border-radius:6px;background:none;color:#4465c9;font:inherit;font-size:12px;cursor:pointer}.fe-summary{padding:8px 10px;border-radius:6px;background:#ebf0ff;font-size:12px;word-break:break-word}.fe-sort{display:grid;grid-template-columns:64px minmax(0,1fr) 120px 28px 28px 28px;gap:6px;align-items:center}.fe-sort-label{font-size:12px;color:#9fa9c7}.fe-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 14px;border-top:1px solid #DBE4FF}.fe-save{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:400;cursor:pointer}.fe-save.disabled{opacity:.55;cursor:default}.fe-save input{margin:0}.fe-clear{border:none;background:none;color:#4465c9;font:inherit;cursor:pointer}\n"],
20342
+ template: "<div class=\"fe\">\r\n <div class=\"fe-tabs\" role=\"tablist\" *ngIf=\"!section\">\r\n <button type=\"button\" class=\"fe-tab\" [class.active]=\"tab === 'filters'\" (click)=\"tab = 'filters'\">Filtres</button>\r\n <button type=\"button\" class=\"fe-tab\" [class.active]=\"tab === 'sort'\" (click)=\"tab = 'sort'\">Tri</button>\r\n </div>\r\n\r\n <div class=\"fe-body\" *ngIf=\"shownTab === 'filters'\">\r\n <!-- Filtres de l'écran (FilterPanel) : valeurs enregistrées avec la vue, appliquées au FilterPanel. -->\r\n <div class=\"fe-panel\" *ngIf=\"panelFields.length || shownPanelFields().length\">\r\n <div class=\"fe-panel-title\">Filtres de l'écran</div>\r\n <div class=\"fe-panel-field\" *ngFor=\"let field of shownPanelFields(); trackBy: trackKey\">\r\n <span [title]=\"field.label\">{{ field.label }}</span>\r\n <ng-container [ngSwitch]=\"field.type\">\r\n <select *ngSwitchCase=\"'list'\" class=\"form-control\" [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\">\r\n <option value=\"\">Choisir…</option>\r\n <option *ngFor=\"let option of field.values\" [value]=\"option.value\">{{ option.label }}</option>\r\n </select>\r\n <select *ngSwitchCase=\"'bool'\" class=\"form-control\" [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\">\r\n <option value=\"\">Choisir…</option>\r\n <option value=\"true\">Oui</option>\r\n <option value=\"false\">Non</option>\r\n </select>\r\n <input *ngSwitchDefault class=\"form-control\" [type]=\"field.type === 'number' ? 'number' : field.type === 'date' ? 'date' : 'text'\"\r\n [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\" />\r\n </ng-container>\r\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer le filtre de l'écran\" (click)=\"removePanelField(field)\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n <!-- Ajout d'un filtre de l'écran : les champs du FilterPanel pas encore utilisés. -->\r\n <div class=\"fe-adds\" *ngIf=\"availablePanelFields().length\">\r\n <select class=\"form-control fe-add-panel\" [ngModel]=\"''\" (ngModelChange)=\"addPanelField($event)\">\r\n <option value=\"\">+ Filtre de l'écran</option>\r\n <option *ngFor=\"let field of availablePanelFields(); trackBy: trackKey\" [value]=\"field.key\">{{ field.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"fe-panel-title\" *ngIf=\"panelFields.length || shownPanelFields().length\">Filtre additionnel</div>\r\n <ng-container *ngTemplateOutlet=\"groupTpl; context: { group: filter, parent: null, index: 0, depth: 0 }\"></ng-container>\r\n <div class=\"fe-summary\">{{ summary() }}</div>\r\n </div>\r\n\r\n <div class=\"fe-body\" *ngIf=\"shownTab === 'sort'\">\r\n <div class=\"fe-sort\" *ngFor=\"let level of sort; let i = index; trackBy: trackIndex\">\r\n <span class=\"fe-sort-label\">{{ i === 0 ? 'Trier par' : 'Puis par' }}</span>\r\n <select class=\"form-control\" [(ngModel)]=\"level.property\">\r\n <option *ngFor=\"let column of columns\" [value]=\"column.key\">{{ column.label }}</option>\r\n </select>\r\n <select class=\"form-control fe-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=\"fe-icon\" title=\"Monter\" [disabled]=\"i === 0\" (click)=\"moveSort(i, -1)\"><i class=\"fa fa-arrow-up\"></i></button>\r\n <button type=\"button\" class=\"fe-icon\" title=\"Descendre\" [disabled]=\"i === sort.length - 1\" (click)=\"moveSort(i, 1)\"><i class=\"fa fa-arrow-down\"></i></button>\r\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer\" (click)=\"removeSort(i)\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n <div class=\"fe-adds\"><button type=\"button\" class=\"fe-add\" (click)=\"addSort()\">+ Niveau</button></div>\r\n </div>\r\n\r\n <div class=\"fe-foot\">\r\n <label class=\"fe-save\" *ngIf=\"!embedded\" [class.disabled]=\"!canSaveInView\"\r\n [title]=\"canSaveInView ? '' : 'La vue par défaut est en lecture seule : dupliquez-la pour y enregistrer un filtre'\">\r\n <input type=\"checkbox\" [(ngModel)]=\"saveInView\" [disabled]=\"!canSaveInView\" />\r\n <span>Enregistrer dans la vue{{ viewLabel ? ' « ' + viewLabel + ' »' : '' }}</span>\r\n </label>\r\n <button type=\"button\" class=\"fe-clear\" (click)=\"clear()\">Tout effacer</button>\r\n </div>\r\n</div>\r\n\r\n<!-- Groupe : relation ET / OU, conditions, groupes imbriqués. -->\r\n<ng-template #groupTpl let-group=\"group\" let-parent=\"parent\" let-index=\"index\" let-depth=\"depth\">\r\n <div class=\"fe-group\" [class.or]=\"group.Logic === 'or'\" [class.nested]=\"depth > 0\">\r\n <div class=\"fe-group-head\">\r\n <span class=\"fe-logic\">\r\n <button type=\"button\" [class.on]=\"group.Logic === 'and'\" class=\"and\" (click)=\"setLogic(group, 'and')\">ET</button>\r\n <button type=\"button\" [class.on]=\"group.Logic === 'or'\" class=\"or\" (click)=\"setLogic(group, 'or')\">OU</button>\r\n </span>\r\n <span class=\"fe-group-hint\">{{ group.Logic === 'and' ? 'Toutes les conditions' : 'Au moins une condition' }}</span>\r\n <button type=\"button\" *ngIf=\"parent\" class=\"fe-icon fe-group-remove\" title=\"Retirer le groupe\" (click)=\"removeGroup(parent, index)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n\r\n <div class=\"fe-cond\" *ngFor=\"let condition of group.Conditions; let i = index; trackBy: trackIndex\">\r\n <select class=\"form-control\" [(ngModel)]=\"condition.Property\" (ngModelChange)=\"onColumnChange(condition)\">\r\n <option *ngFor=\"let column of columns\" [value]=\"column.key\">{{ column.label }}</option>\r\n </select>\r\n <select class=\"form-control\" [(ngModel)]=\"condition.Operator\" (ngModelChange)=\"onOperatorChange(condition)\">\r\n <option *ngFor=\"let op of operatorsOf(condition)\" [value]=\"op.value\">{{ op.label }}</option>\r\n </select>\r\n <span class=\"fe-value\">\r\n <ng-container *ngIf=\"isList(condition); else valueTpl\">\r\n <span class=\"fe-chips\" *ngIf=\"hasKnownValues(condition); else typedValuesTpl\">\r\n <button type=\"button\" *ngFor=\"let option of columnOf(condition.Property)?.values\" class=\"fe-chip\"\r\n [class.on]=\"condition.Values?.includes(option.value)\" (click)=\"toggleValue(condition, option.value)\">{{ option.label }}</button>\r\n </span>\r\n <!-- Texte, nombre : valeurs saisies une à une (ou cochées par le « Filtre avancé » de la grille). -->\r\n <ng-template #typedValuesTpl>\r\n <span class=\"fe-chips\">\r\n <button type=\"button\" *ngFor=\"let value of condition.Values\" class=\"fe-chip on\" title=\"Retirer cette valeur\"\r\n (click)=\"removeValue(condition, value)\">{{ value }} <i class=\"fa fa-times\"></i></button>\r\n <input #valueInput class=\"form-control fe-chip-input\" [type]=\"inputType(condition)\" placeholder=\"Ajouter une valeur\"\r\n (keydown.enter)=\"addValue(condition, valueInput); $event.preventDefault()\" (blur)=\"addValue(condition, valueInput)\" />\r\n </span>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #valueTpl>\r\n <ng-container *ngIf=\"hasValue(condition)\">\r\n <input class=\"form-control\" [type]=\"inputType(condition)\" [(ngModel)]=\"condition.Value\" />\r\n <input *ngIf=\"hasSecondValue(condition)\" class=\"form-control\" [type]=\"inputType(condition)\" [(ngModel)]=\"condition.Value2\" />\r\n </ng-container>\r\n </ng-template>\r\n </span>\r\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer la condition\" (click)=\"removeCondition(group, i)\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let sub of group.Groups; let gi = index; trackBy: trackIndex\">\r\n <ng-container *ngTemplateOutlet=\"groupTpl; context: { group: sub, parent: group, index: gi, depth: depth + 1 }\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"fe-adds\">\r\n <button type=\"button\" class=\"fe-add\" (click)=\"addCondition(group)\">+ Condition</button>\r\n <button type=\"button\" class=\"fe-add\" *ngIf=\"depth < maxDepth - 1\" (click)=\"addGroup(group)\">+ Groupe</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
20343
+ 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}.fe-panel{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:6px 12px;margin-bottom:12px}.fe-panel .fe-adds{grid-column:1/-1}.fe-add-panel{width:auto;border-style:dashed;color:#4465c9}.fe-panel-title{grid-column:1/-1;margin:4px 0 2px;font-weight:600}.fe-panel-field{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:8px;margin:0;font-weight:400}.fe-panel-field>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe{display:flex;flex-direction:column;color:#4d5a81;font-size:13px}.fe-tabs{display:flex;gap:4px;padding:8px 14px 0;border-bottom:1px solid #DBE4FF}.fe-tab{padding:6px 12px;border:none;border-bottom:2px solid transparent;background:none;color:#9fa9c7;font:inherit;font-weight:700;cursor:pointer}.fe-tab.active{color:#4465c9;border-bottom-color:#5272d3}.fe-body{display:flex;flex-direction:column;gap:10px;max-height:60vh;overflow-y:auto;padding:12px 14px}.fe-group{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid #DBE4FF;border-left:4px solid #3b57b8;border-radius:0 4px 4px 0;background:#fff}.fe-group.or{border-left-color:#e07b12}.fe-group.nested{background:#f6f8fd}.fe-group-head{display:flex;align-items:center;gap:8px;font-size:12px;color:#9fa9c7}.fe-group-remove{margin-left:auto}.fe-logic{display:inline-flex;border:1px solid #DBE4FF;border-radius:999px;overflow:hidden}.fe-logic button{padding:2px 10px;border:none;background:none;color:#9fa9c7;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.fe-logic button.on.and{background:#3b57b8;color:#fff}.fe-logic button.on.or{background:#e07b12;color:#fff}.fe-cond{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.4fr) 28px;gap:6px;align-items:center;padding:4px 6px;border:1px solid #DBE4FF;border-left:3px solid #3b57b8;border-radius:0 4px 4px 0;background:#fff}.fe-group.or>.fe-cond{border-left-color:#e07b12}@media(max-width:600px){.fe-cond{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 28px}.fe-cond .fe-value{grid-column:1/3}}select.form-control,input.form-control{height:30px;min-width:0;padding:2px 6px;font-size:13px}.fe-value{display:flex;gap:6px;min-width:0}.fe-value input{flex:1}.fe-chips{display:flex;flex-wrap:wrap;gap:4px}.fe-chip{padding:2px 8px;border:1px solid #C1D0FD;border-radius:999px;background:#fff;color:#4d5a81;font:inherit;font-size:12px;cursor:pointer}.fe-chip.on{background:#5272d3;border-color:#5272d3;color:#fff}.fe-chip i{margin-left:2px;font-size:10px}.fe-chip-input{flex:1;min-width:120px}.fe-icon{width:28px;height:28px;padding:0;border:none;border-radius:6px;background:none;color:#9fa9c7;cursor:pointer}.fe-icon:hover:not(:disabled){background:#ebf0ff;color:#4d5a81}.fe-icon:disabled{opacity:.3;cursor:default}.fe-adds{display:flex;gap:8px;flex-wrap:wrap}.fe-add{padding:3px 10px;border:1px dashed #C1D0FD;border-radius:6px;background:none;color:#4465c9;font:inherit;font-size:12px;cursor:pointer}.fe-summary{padding:8px 10px;border-radius:6px;background:#ebf0ff;font-size:12px;word-break:break-word}.fe-sort{display:grid;grid-template-columns:64px minmax(0,1fr) 120px 28px 28px 28px;gap:6px;align-items:center}.fe-sort-label{font-size:12px;color:#9fa9c7}.fe-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 14px;border-top:1px solid #DBE4FF}.fe-save{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:400;cursor:pointer}.fe-save.disabled{opacity:.55;cursor:default}.fe-save input{margin:0}.fe-clear{border:none;background:none;color:#4465c9;font:inherit;cursor:pointer}\n"],
20271
20344
  dependencies: [
20272
20345
  {
20273
20346
  kind: "ngmodule",
@@ -20387,8 +20460,8 @@ i0.ɵɵngDeclareClassMetadata({
20387
20460
  standalone: true,
20388
20461
  imports: [CommonModule, FormsModule],
20389
20462
  changeDetection: ChangeDetectionStrategy.Eager,
20390
- template: "<div class=\"fe\">\n <div class=\"fe-tabs\" role=\"tablist\" *ngIf=\"!section\">\n <button type=\"button\" class=\"fe-tab\" [class.active]=\"tab === 'filters'\" (click)=\"tab = 'filters'\">Filtres</button>\n <button type=\"button\" class=\"fe-tab\" [class.active]=\"tab === 'sort'\" (click)=\"tab = 'sort'\">Tri</button>\n </div>\n\n <div class=\"fe-body\" *ngIf=\"shownTab === 'filters'\">\n <!-- Filtres de l'écran (FilterPanel) : valeurs enregistrées avec la vue, appliquées au FilterPanel. -->\n <div class=\"fe-panel\" *ngIf=\"panelFields.length || shownPanelFields().length\">\n <div class=\"fe-panel-title\">Filtres de l'écran</div>\n <div class=\"fe-panel-field\" *ngFor=\"let field of shownPanelFields(); trackBy: trackKey\">\n <span [title]=\"field.label\">{{ field.label }}</span>\n <ng-container [ngSwitch]=\"field.type\">\n <select *ngSwitchCase=\"'list'\" class=\"form-control\" [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\">\n <option value=\"\">Choisir…</option>\n <option *ngFor=\"let option of field.values\" [value]=\"option.value\">{{ option.label }}</option>\n </select>\n <select *ngSwitchCase=\"'bool'\" class=\"form-control\" [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\">\n <option value=\"\">Choisir…</option>\n <option value=\"true\">Oui</option>\n <option value=\"false\">Non</option>\n </select>\n <input *ngSwitchDefault class=\"form-control\" [type]=\"field.type === 'number' ? 'number' : field.type === 'date' ? 'date' : 'text'\"\n [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\" />\n </ng-container>\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer le filtre de l'écran\" (click)=\"removePanelField(field)\"><i class=\"fa fa-times\"></i></button>\n </div>\n <!-- Ajout d'un filtre de l'écran : les champs du FilterPanel pas encore utilisés. -->\n <div class=\"fe-adds\" *ngIf=\"availablePanelFields().length\">\n <select class=\"form-control fe-add-panel\" [ngModel]=\"''\" (ngModelChange)=\"addPanelField($event)\">\n <option value=\"\">+ Filtre de l'écran</option>\n <option *ngFor=\"let field of availablePanelFields(); trackBy: trackKey\" [value]=\"field.key\">{{ field.label }}</option>\n </select>\n </div>\n </div>\n <div class=\"fe-panel-title\" *ngIf=\"panelFields.length || shownPanelFields().length\">Filtre additionnel</div>\n <ng-container *ngTemplateOutlet=\"groupTpl; context: { group: filter, parent: null, index: 0, depth: 0 }\"></ng-container>\n <div class=\"fe-summary\">{{ summary() }}</div>\n </div>\n\n <div class=\"fe-body\" *ngIf=\"shownTab === 'sort'\">\n <div class=\"fe-sort\" *ngFor=\"let level of sort; let i = index; trackBy: trackIndex\">\n <span class=\"fe-sort-label\">{{ i === 0 ? 'Trier par' : 'Puis par' }}</span>\n <select class=\"form-control\" [(ngModel)]=\"level.property\">\n <option *ngFor=\"let column of columns\" [value]=\"column.key\">{{ column.label }}</option>\n </select>\n <select class=\"form-control fe-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=\"fe-icon\" title=\"Monter\" [disabled]=\"i === 0\" (click)=\"moveSort(i, -1)\"><i class=\"fa fa-arrow-up\"></i></button>\n <button type=\"button\" class=\"fe-icon\" title=\"Descendre\" [disabled]=\"i === sort.length - 1\" (click)=\"moveSort(i, 1)\"><i class=\"fa fa-arrow-down\"></i></button>\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer\" (click)=\"removeSort(i)\"><i class=\"fa fa-times\"></i></button>\n </div>\n <div class=\"fe-adds\"><button type=\"button\" class=\"fe-add\" (click)=\"addSort()\">+ Niveau</button></div>\n </div>\n\n <div class=\"fe-foot\">\n <label class=\"fe-save\" *ngIf=\"!embedded\" [class.disabled]=\"!canSaveInView\"\n [title]=\"canSaveInView ? '' : 'La vue par défaut est en lecture seule : dupliquez-la pour y enregistrer un filtre'\">\n <input type=\"checkbox\" [(ngModel)]=\"saveInView\" [disabled]=\"!canSaveInView\" />\n <span>Enregistrer dans la vue{{ viewLabel ? ' « ' + viewLabel + ' »' : '' }}</span>\n </label>\n <button type=\"button\" class=\"fe-clear\" (click)=\"clear()\">Tout effacer</button>\n </div>\n</div>\n\n<!-- Groupe : relation ET / OU, conditions, groupes imbriqués. -->\n<ng-template #groupTpl let-group=\"group\" let-parent=\"parent\" let-index=\"index\" let-depth=\"depth\">\n <div class=\"fe-group\" [class.or]=\"group.Logic === 'or'\" [class.nested]=\"depth > 0\">\n <div class=\"fe-group-head\">\n <span class=\"fe-logic\">\n <button type=\"button\" [class.on]=\"group.Logic === 'and'\" class=\"and\" (click)=\"setLogic(group, 'and')\">ET</button>\n <button type=\"button\" [class.on]=\"group.Logic === 'or'\" class=\"or\" (click)=\"setLogic(group, 'or')\">OU</button>\n </span>\n <span class=\"fe-group-hint\">{{ group.Logic === 'and' ? 'Toutes les conditions' : 'Au moins une condition' }}</span>\n <button type=\"button\" *ngIf=\"parent\" class=\"fe-icon fe-group-remove\" title=\"Retirer le groupe\" (click)=\"removeGroup(parent, index)\">\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <div class=\"fe-cond\" *ngFor=\"let condition of group.Conditions; let i = index; trackBy: trackIndex\">\n <select class=\"form-control\" [(ngModel)]=\"condition.Property\" (ngModelChange)=\"onColumnChange(condition)\">\n <option *ngFor=\"let column of columns\" [value]=\"column.key\">{{ column.label }}</option>\n </select>\n <select class=\"form-control\" [(ngModel)]=\"condition.Operator\" (ngModelChange)=\"onOperatorChange(condition)\">\n <option *ngFor=\"let op of operatorsOf(condition)\" [value]=\"op.value\">{{ op.label }}</option>\n </select>\n <span class=\"fe-value\">\n <ng-container *ngIf=\"isList(condition); else valueTpl\">\n <span class=\"fe-chips\">\n <button type=\"button\" *ngFor=\"let option of columnOf(condition.Property)?.values\" class=\"fe-chip\"\n [class.on]=\"condition.Values?.includes(option.value)\" (click)=\"toggleValue(condition, option.value)\">{{ option.label }}</button>\n </span>\n </ng-container>\n <ng-template #valueTpl>\n <ng-container *ngIf=\"hasValue(condition)\">\n <input class=\"form-control\" [type]=\"inputType(condition)\" [(ngModel)]=\"condition.Value\" />\n <input *ngIf=\"hasSecondValue(condition)\" class=\"form-control\" [type]=\"inputType(condition)\" [(ngModel)]=\"condition.Value2\" />\n </ng-container>\n </ng-template>\n </span>\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer la condition\" (click)=\"removeCondition(group, i)\"><i class=\"fa fa-times\"></i></button>\n </div>\n\n <ng-container *ngFor=\"let sub of group.Groups; let gi = index; trackBy: trackIndex\">\n <ng-container *ngTemplateOutlet=\"groupTpl; context: { group: sub, parent: group, index: gi, depth: depth + 1 }\"></ng-container>\n </ng-container>\n\n <div class=\"fe-adds\">\n <button type=\"button\" class=\"fe-add\" (click)=\"addCondition(group)\">+ Condition</button>\n <button type=\"button\" class=\"fe-add\" *ngIf=\"depth < maxDepth - 1\" (click)=\"addGroup(group)\">+ Groupe</button>\n </div>\n </div>\n</ng-template>\n",
20391
- 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}.fe-panel{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:6px 12px;margin-bottom:12px}.fe-panel .fe-adds{grid-column:1/-1}.fe-add-panel{width:auto;border-style:dashed;color:#4465c9}.fe-panel-title{grid-column:1/-1;margin:4px 0 2px;font-weight:600}.fe-panel-field{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:8px;margin:0;font-weight:400}.fe-panel-field>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe{display:flex;flex-direction:column;color:#4d5a81;font-size:13px}.fe-tabs{display:flex;gap:4px;padding:8px 14px 0;border-bottom:1px solid #DBE4FF}.fe-tab{padding:6px 12px;border:none;border-bottom:2px solid transparent;background:none;color:#9fa9c7;font:inherit;font-weight:700;cursor:pointer}.fe-tab.active{color:#4465c9;border-bottom-color:#5272d3}.fe-body{display:flex;flex-direction:column;gap:10px;max-height:60vh;overflow-y:auto;padding:12px 14px}.fe-group{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid #DBE4FF;border-left:4px solid #3b57b8;border-radius:0 4px 4px 0;background:#fff}.fe-group.or{border-left-color:#e07b12}.fe-group.nested{background:#f6f8fd}.fe-group-head{display:flex;align-items:center;gap:8px;font-size:12px;color:#9fa9c7}.fe-group-remove{margin-left:auto}.fe-logic{display:inline-flex;border:1px solid #DBE4FF;border-radius:999px;overflow:hidden}.fe-logic button{padding:2px 10px;border:none;background:none;color:#9fa9c7;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.fe-logic button.on.and{background:#3b57b8;color:#fff}.fe-logic button.on.or{background:#e07b12;color:#fff}.fe-cond{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.4fr) 28px;gap:6px;align-items:center;padding:4px 6px;border:1px solid #DBE4FF;border-left:3px solid #3b57b8;border-radius:0 4px 4px 0;background:#fff}.fe-group.or>.fe-cond{border-left-color:#e07b12}@media(max-width:600px){.fe-cond{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 28px}.fe-cond .fe-value{grid-column:1/3}}select.form-control,input.form-control{height:30px;min-width:0;padding:2px 6px;font-size:13px}.fe-value{display:flex;gap:6px;min-width:0}.fe-value input{flex:1}.fe-chips{display:flex;flex-wrap:wrap;gap:4px}.fe-chip{padding:2px 8px;border:1px solid #C1D0FD;border-radius:999px;background:#fff;color:#4d5a81;font:inherit;font-size:12px;cursor:pointer}.fe-chip.on{background:#5272d3;border-color:#5272d3;color:#fff}.fe-icon{width:28px;height:28px;padding:0;border:none;border-radius:6px;background:none;color:#9fa9c7;cursor:pointer}.fe-icon:hover:not(:disabled){background:#ebf0ff;color:#4d5a81}.fe-icon:disabled{opacity:.3;cursor:default}.fe-adds{display:flex;gap:8px;flex-wrap:wrap}.fe-add{padding:3px 10px;border:1px dashed #C1D0FD;border-radius:6px;background:none;color:#4465c9;font:inherit;font-size:12px;cursor:pointer}.fe-summary{padding:8px 10px;border-radius:6px;background:#ebf0ff;font-size:12px;word-break:break-word}.fe-sort{display:grid;grid-template-columns:64px minmax(0,1fr) 120px 28px 28px 28px;gap:6px;align-items:center}.fe-sort-label{font-size:12px;color:#9fa9c7}.fe-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 14px;border-top:1px solid #DBE4FF}.fe-save{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:400;cursor:pointer}.fe-save.disabled{opacity:.55;cursor:default}.fe-save input{margin:0}.fe-clear{border:none;background:none;color:#4465c9;font:inherit;cursor:pointer}\n"]
20463
+ template: "<div class=\"fe\">\r\n <div class=\"fe-tabs\" role=\"tablist\" *ngIf=\"!section\">\r\n <button type=\"button\" class=\"fe-tab\" [class.active]=\"tab === 'filters'\" (click)=\"tab = 'filters'\">Filtres</button>\r\n <button type=\"button\" class=\"fe-tab\" [class.active]=\"tab === 'sort'\" (click)=\"tab = 'sort'\">Tri</button>\r\n </div>\r\n\r\n <div class=\"fe-body\" *ngIf=\"shownTab === 'filters'\">\r\n <!-- Filtres de l'écran (FilterPanel) : valeurs enregistrées avec la vue, appliquées au FilterPanel. -->\r\n <div class=\"fe-panel\" *ngIf=\"panelFields.length || shownPanelFields().length\">\r\n <div class=\"fe-panel-title\">Filtres de l'écran</div>\r\n <div class=\"fe-panel-field\" *ngFor=\"let field of shownPanelFields(); trackBy: trackKey\">\r\n <span [title]=\"field.label\">{{ field.label }}</span>\r\n <ng-container [ngSwitch]=\"field.type\">\r\n <select *ngSwitchCase=\"'list'\" class=\"form-control\" [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\">\r\n <option value=\"\">Choisir…</option>\r\n <option *ngFor=\"let option of field.values\" [value]=\"option.value\">{{ option.label }}</option>\r\n </select>\r\n <select *ngSwitchCase=\"'bool'\" class=\"form-control\" [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\">\r\n <option value=\"\">Choisir…</option>\r\n <option value=\"true\">Oui</option>\r\n <option value=\"false\">Non</option>\r\n </select>\r\n <input *ngSwitchDefault class=\"form-control\" [type]=\"field.type === 'number' ? 'number' : field.type === 'date' ? 'date' : 'text'\"\r\n [ngModel]=\"panelValue(field)\" (ngModelChange)=\"setPanelValue(field, $event)\" />\r\n </ng-container>\r\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer le filtre de l'écran\" (click)=\"removePanelField(field)\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n <!-- Ajout d'un filtre de l'écran : les champs du FilterPanel pas encore utilisés. -->\r\n <div class=\"fe-adds\" *ngIf=\"availablePanelFields().length\">\r\n <select class=\"form-control fe-add-panel\" [ngModel]=\"''\" (ngModelChange)=\"addPanelField($event)\">\r\n <option value=\"\">+ Filtre de l'écran</option>\r\n <option *ngFor=\"let field of availablePanelFields(); trackBy: trackKey\" [value]=\"field.key\">{{ field.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"fe-panel-title\" *ngIf=\"panelFields.length || shownPanelFields().length\">Filtre additionnel</div>\r\n <ng-container *ngTemplateOutlet=\"groupTpl; context: { group: filter, parent: null, index: 0, depth: 0 }\"></ng-container>\r\n <div class=\"fe-summary\">{{ summary() }}</div>\r\n </div>\r\n\r\n <div class=\"fe-body\" *ngIf=\"shownTab === 'sort'\">\r\n <div class=\"fe-sort\" *ngFor=\"let level of sort; let i = index; trackBy: trackIndex\">\r\n <span class=\"fe-sort-label\">{{ i === 0 ? 'Trier par' : 'Puis par' }}</span>\r\n <select class=\"form-control\" [(ngModel)]=\"level.property\">\r\n <option *ngFor=\"let column of columns\" [value]=\"column.key\">{{ column.label }}</option>\r\n </select>\r\n <select class=\"form-control fe-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=\"fe-icon\" title=\"Monter\" [disabled]=\"i === 0\" (click)=\"moveSort(i, -1)\"><i class=\"fa fa-arrow-up\"></i></button>\r\n <button type=\"button\" class=\"fe-icon\" title=\"Descendre\" [disabled]=\"i === sort.length - 1\" (click)=\"moveSort(i, 1)\"><i class=\"fa fa-arrow-down\"></i></button>\r\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer\" (click)=\"removeSort(i)\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n <div class=\"fe-adds\"><button type=\"button\" class=\"fe-add\" (click)=\"addSort()\">+ Niveau</button></div>\r\n </div>\r\n\r\n <div class=\"fe-foot\">\r\n <label class=\"fe-save\" *ngIf=\"!embedded\" [class.disabled]=\"!canSaveInView\"\r\n [title]=\"canSaveInView ? '' : 'La vue par défaut est en lecture seule : dupliquez-la pour y enregistrer un filtre'\">\r\n <input type=\"checkbox\" [(ngModel)]=\"saveInView\" [disabled]=\"!canSaveInView\" />\r\n <span>Enregistrer dans la vue{{ viewLabel ? ' « ' + viewLabel + ' »' : '' }}</span>\r\n </label>\r\n <button type=\"button\" class=\"fe-clear\" (click)=\"clear()\">Tout effacer</button>\r\n </div>\r\n</div>\r\n\r\n<!-- Groupe : relation ET / OU, conditions, groupes imbriqués. -->\r\n<ng-template #groupTpl let-group=\"group\" let-parent=\"parent\" let-index=\"index\" let-depth=\"depth\">\r\n <div class=\"fe-group\" [class.or]=\"group.Logic === 'or'\" [class.nested]=\"depth > 0\">\r\n <div class=\"fe-group-head\">\r\n <span class=\"fe-logic\">\r\n <button type=\"button\" [class.on]=\"group.Logic === 'and'\" class=\"and\" (click)=\"setLogic(group, 'and')\">ET</button>\r\n <button type=\"button\" [class.on]=\"group.Logic === 'or'\" class=\"or\" (click)=\"setLogic(group, 'or')\">OU</button>\r\n </span>\r\n <span class=\"fe-group-hint\">{{ group.Logic === 'and' ? 'Toutes les conditions' : 'Au moins une condition' }}</span>\r\n <button type=\"button\" *ngIf=\"parent\" class=\"fe-icon fe-group-remove\" title=\"Retirer le groupe\" (click)=\"removeGroup(parent, index)\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n\r\n <div class=\"fe-cond\" *ngFor=\"let condition of group.Conditions; let i = index; trackBy: trackIndex\">\r\n <select class=\"form-control\" [(ngModel)]=\"condition.Property\" (ngModelChange)=\"onColumnChange(condition)\">\r\n <option *ngFor=\"let column of columns\" [value]=\"column.key\">{{ column.label }}</option>\r\n </select>\r\n <select class=\"form-control\" [(ngModel)]=\"condition.Operator\" (ngModelChange)=\"onOperatorChange(condition)\">\r\n <option *ngFor=\"let op of operatorsOf(condition)\" [value]=\"op.value\">{{ op.label }}</option>\r\n </select>\r\n <span class=\"fe-value\">\r\n <ng-container *ngIf=\"isList(condition); else valueTpl\">\r\n <span class=\"fe-chips\" *ngIf=\"hasKnownValues(condition); else typedValuesTpl\">\r\n <button type=\"button\" *ngFor=\"let option of columnOf(condition.Property)?.values\" class=\"fe-chip\"\r\n [class.on]=\"condition.Values?.includes(option.value)\" (click)=\"toggleValue(condition, option.value)\">{{ option.label }}</button>\r\n </span>\r\n <!-- Texte, nombre : valeurs saisies une à une (ou cochées par le « Filtre avancé » de la grille). -->\r\n <ng-template #typedValuesTpl>\r\n <span class=\"fe-chips\">\r\n <button type=\"button\" *ngFor=\"let value of condition.Values\" class=\"fe-chip on\" title=\"Retirer cette valeur\"\r\n (click)=\"removeValue(condition, value)\">{{ value }} <i class=\"fa fa-times\"></i></button>\r\n <input #valueInput class=\"form-control fe-chip-input\" [type]=\"inputType(condition)\" placeholder=\"Ajouter une valeur\"\r\n (keydown.enter)=\"addValue(condition, valueInput); $event.preventDefault()\" (blur)=\"addValue(condition, valueInput)\" />\r\n </span>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #valueTpl>\r\n <ng-container *ngIf=\"hasValue(condition)\">\r\n <input class=\"form-control\" [type]=\"inputType(condition)\" [(ngModel)]=\"condition.Value\" />\r\n <input *ngIf=\"hasSecondValue(condition)\" class=\"form-control\" [type]=\"inputType(condition)\" [(ngModel)]=\"condition.Value2\" />\r\n </ng-container>\r\n </ng-template>\r\n </span>\r\n <button type=\"button\" class=\"fe-icon\" title=\"Retirer la condition\" (click)=\"removeCondition(group, i)\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let sub of group.Groups; let gi = index; trackBy: trackIndex\">\r\n <ng-container *ngTemplateOutlet=\"groupTpl; context: { group: sub, parent: group, index: gi, depth: depth + 1 }\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"fe-adds\">\r\n <button type=\"button\" class=\"fe-add\" (click)=\"addCondition(group)\">+ Condition</button>\r\n <button type=\"button\" class=\"fe-add\" *ngIf=\"depth < maxDepth - 1\" (click)=\"addGroup(group)\">+ Groupe</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
20464
+ 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}.fe-panel{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:6px 12px;margin-bottom:12px}.fe-panel .fe-adds{grid-column:1/-1}.fe-add-panel{width:auto;border-style:dashed;color:#4465c9}.fe-panel-title{grid-column:1/-1;margin:4px 0 2px;font-weight:600}.fe-panel-field{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:8px;margin:0;font-weight:400}.fe-panel-field>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe{display:flex;flex-direction:column;color:#4d5a81;font-size:13px}.fe-tabs{display:flex;gap:4px;padding:8px 14px 0;border-bottom:1px solid #DBE4FF}.fe-tab{padding:6px 12px;border:none;border-bottom:2px solid transparent;background:none;color:#9fa9c7;font:inherit;font-weight:700;cursor:pointer}.fe-tab.active{color:#4465c9;border-bottom-color:#5272d3}.fe-body{display:flex;flex-direction:column;gap:10px;max-height:60vh;overflow-y:auto;padding:12px 14px}.fe-group{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid #DBE4FF;border-left:4px solid #3b57b8;border-radius:0 4px 4px 0;background:#fff}.fe-group.or{border-left-color:#e07b12}.fe-group.nested{background:#f6f8fd}.fe-group-head{display:flex;align-items:center;gap:8px;font-size:12px;color:#9fa9c7}.fe-group-remove{margin-left:auto}.fe-logic{display:inline-flex;border:1px solid #DBE4FF;border-radius:999px;overflow:hidden}.fe-logic button{padding:2px 10px;border:none;background:none;color:#9fa9c7;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.fe-logic button.on.and{background:#3b57b8;color:#fff}.fe-logic button.on.or{background:#e07b12;color:#fff}.fe-cond{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.4fr) 28px;gap:6px;align-items:center;padding:4px 6px;border:1px solid #DBE4FF;border-left:3px solid #3b57b8;border-radius:0 4px 4px 0;background:#fff}.fe-group.or>.fe-cond{border-left-color:#e07b12}@media(max-width:600px){.fe-cond{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 28px}.fe-cond .fe-value{grid-column:1/3}}select.form-control,input.form-control{height:30px;min-width:0;padding:2px 6px;font-size:13px}.fe-value{display:flex;gap:6px;min-width:0}.fe-value input{flex:1}.fe-chips{display:flex;flex-wrap:wrap;gap:4px}.fe-chip{padding:2px 8px;border:1px solid #C1D0FD;border-radius:999px;background:#fff;color:#4d5a81;font:inherit;font-size:12px;cursor:pointer}.fe-chip.on{background:#5272d3;border-color:#5272d3;color:#fff}.fe-chip i{margin-left:2px;font-size:10px}.fe-chip-input{flex:1;min-width:120px}.fe-icon{width:28px;height:28px;padding:0;border:none;border-radius:6px;background:none;color:#9fa9c7;cursor:pointer}.fe-icon:hover:not(:disabled){background:#ebf0ff;color:#4d5a81}.fe-icon:disabled{opacity:.3;cursor:default}.fe-adds{display:flex;gap:8px;flex-wrap:wrap}.fe-add{padding:3px 10px;border:1px dashed #C1D0FD;border-radius:6px;background:none;color:#4465c9;font:inherit;font-size:12px;cursor:pointer}.fe-summary{padding:8px 10px;border-radius:6px;background:#ebf0ff;font-size:12px;word-break:break-word}.fe-sort{display:grid;grid-template-columns:64px minmax(0,1fr) 120px 28px 28px 28px;gap:6px;align-items:center}.fe-sort-label{font-size:12px;color:#9fa9c7}.fe-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 14px;border-top:1px solid #DBE4FF}.fe-save{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:400;cursor:pointer}.fe-save.disabled{opacity:.55;cursor:default}.fe-save input{margin:0}.fe-clear{border:none;background:none;color:#4465c9;font:inherit;cursor:pointer}\n"]
20392
20465
  }]
20393
20466
  }],
20394
20467
  propDecorators: {
@@ -21944,7 +22017,7 @@ var CardListComponent = class CardListComponent {
21944
22017
  guid: "guid"
21945
22018
  },
21946
22019
  ngImport: i0,
21947
- 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",
22020
+ 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",
21948
22021
  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"],
21949
22022
  dependencies: [{
21950
22023
  kind: "directive",
@@ -21980,7 +22053,7 @@ i0.ɵɵngDeclareClassMetadata({
21980
22053
  selector: "alg-card-list",
21981
22054
  changeDetection: ChangeDetectionStrategy.Eager,
21982
22055
  standalone: false,
21983
- 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",
22056
+ 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",
21984
22057
  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"]
21985
22058
  }]
21986
22059
  }],
@@ -22289,7 +22362,7 @@ var StandardPageLayoutComponent = class StandardPageLayoutComponent {
22289
22362
  }
22290
22363
  ],
22291
22364
  ngImport: i0,
22292
- 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",
22365
+ 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",
22293
22366
  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"],
22294
22367
  dependencies: [
22295
22368
  {
@@ -22342,7 +22415,7 @@ i0.ɵɵngDeclareClassMetadata({
22342
22415
  selector: "alg-standard-page-layout",
22343
22416
  changeDetection: ChangeDetectionStrategy.Eager,
22344
22417
  standalone: false,
22345
- 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",
22418
+ 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",
22346
22419
  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"]
22347
22420
  }]
22348
22421
  }],