@dflat-core/web 1.7.2072 → 1.7.2074

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 (710) hide show
  1. package/README.md +211 -207
  2. package/assets/components/bootstrap-lite.scss +1667 -0
  3. package/assets/components/icons.scss +723 -0
  4. package/assets/components/modals.scss +216 -62
  5. package/assets/images/icons/fa/500px.svg +6 -0
  6. package/assets/images/icons/fa/address-book-o.svg +4 -0
  7. package/assets/images/icons/fa/address-book.svg +3 -0
  8. package/assets/images/icons/fa/adjust.svg +1 -0
  9. package/assets/images/icons/fa/adn.svg +1 -0
  10. package/assets/images/icons/fa/align-center.svg +2 -0
  11. package/assets/images/icons/fa/align-justify.svg +2 -0
  12. package/assets/images/icons/fa/align-left.svg +2 -0
  13. package/assets/images/icons/fa/align-right.svg +2 -0
  14. package/assets/images/icons/fa/amazon.svg +5 -0
  15. package/assets/images/icons/fa/ambulance.svg +3 -0
  16. package/assets/images/icons/fa/anchor.svg +3 -0
  17. package/assets/images/icons/fa/android.svg +3 -0
  18. package/assets/images/icons/fa/angellist.svg +6 -0
  19. package/assets/images/icons/fa/angle-double-down.svg +2 -0
  20. package/assets/images/icons/fa/angle-double-left.svg +2 -0
  21. package/assets/images/icons/fa/angle-double-right.svg +2 -0
  22. package/assets/images/icons/fa/angle-double-up.svg +2 -0
  23. package/assets/images/icons/fa/angle-down.svg +1 -0
  24. package/assets/images/icons/fa/angle-left.svg +1 -0
  25. package/assets/images/icons/fa/angle-right.svg +1 -0
  26. package/assets/images/icons/fa/angle-up.svg +1 -0
  27. package/assets/images/icons/fa/apple.svg +2 -0
  28. package/assets/images/icons/fa/archive.svg +2 -0
  29. package/assets/images/icons/fa/area-chart.svg +1 -0
  30. package/assets/images/icons/fa/arrow-circle-down.svg +2 -0
  31. package/assets/images/icons/fa/arrow-circle-left.svg +2 -0
  32. package/assets/images/icons/fa/arrow-circle-o-down.svg +2 -0
  33. package/assets/images/icons/fa/arrow-circle-o-left.svg +2 -0
  34. package/assets/images/icons/fa/arrow-circle-o-right.svg +2 -0
  35. package/assets/images/icons/fa/arrow-circle-o-up.svg +2 -0
  36. package/assets/images/icons/fa/arrow-circle-right.svg +2 -0
  37. package/assets/images/icons/fa/arrow-circle-up.svg +2 -0
  38. package/assets/images/icons/fa/arrow-down.svg +1 -0
  39. package/assets/images/icons/fa/arrow-left.svg +2 -0
  40. package/assets/images/icons/fa/arrow-right.svg +1 -0
  41. package/assets/images/icons/fa/arrow-up.svg +2 -0
  42. package/assets/images/icons/fa/arrows-alt.svg +3 -0
  43. package/assets/images/icons/fa/arrows-h.svg +1 -0
  44. package/assets/images/icons/fa/arrows-v.svg +1 -0
  45. package/assets/images/icons/fa/arrows.svg +2 -0
  46. package/assets/images/icons/fa/asl-interpreting.svg +6 -0
  47. package/assets/images/icons/fa/assistive-listening-systems.svg +5 -0
  48. package/assets/images/icons/fa/asterisk.svg +2 -0
  49. package/assets/images/icons/fa/at.svg +4 -0
  50. package/assets/images/icons/fa/audio-description.svg +5 -0
  51. package/assets/images/icons/fa/automobile.svg +3 -0
  52. package/assets/images/icons/fa/backward.svg +1 -0
  53. package/assets/images/icons/fa/balance-scale.svg +4 -0
  54. package/assets/images/icons/fa/ban.svg +2 -0
  55. package/assets/images/icons/fa/bandcamp.svg +1 -0
  56. package/assets/images/icons/fa/bar-chart-o.svg +1 -0
  57. package/assets/images/icons/fa/barcode.svg +2 -0
  58. package/assets/images/icons/fa/bathtub.svg +6 -0
  59. package/assets/images/icons/fa/battery-0.svg +2 -0
  60. package/assets/images/icons/fa/battery-1.svg +2 -0
  61. package/assets/images/icons/fa/battery-2.svg +2 -0
  62. package/assets/images/icons/fa/battery-3.svg +2 -0
  63. package/assets/images/icons/fa/battery-4.svg +2 -0
  64. package/assets/images/icons/fa/beer.svg +1 -0
  65. package/assets/images/icons/fa/behance-square.svg +3 -0
  66. package/assets/images/icons/fa/behance.svg +3 -0
  67. package/assets/images/icons/fa/bell-o.svg +3 -0
  68. package/assets/images/icons/fa/bell-slash-o.svg +3 -0
  69. package/assets/images/icons/fa/bell-slash.svg +3 -0
  70. package/assets/images/icons/fa/bell.svg +2 -0
  71. package/assets/images/icons/fa/bicycle.svg +4 -0
  72. package/assets/images/icons/fa/binoculars.svg +2 -0
  73. package/assets/images/icons/fa/birthday-cake.svg +5 -0
  74. package/assets/images/icons/fa/bitbucket-square.svg +4 -0
  75. package/assets/images/icons/fa/bitbucket.svg +4 -0
  76. package/assets/images/icons/fa/bitcoin.svg +3 -0
  77. package/assets/images/icons/fa/black-tie.svg +1 -0
  78. package/assets/images/icons/fa/blind.svg +4 -0
  79. package/assets/images/icons/fa/bluetooth-b.svg +1 -0
  80. package/assets/images/icons/fa/bluetooth.svg +2 -0
  81. package/assets/images/icons/fa/bold.svg +4 -0
  82. package/assets/images/icons/fa/bomb.svg +4 -0
  83. package/assets/images/icons/fa/book.svg +4 -0
  84. package/assets/images/icons/fa/bookmark-o.svg +2 -0
  85. package/assets/images/icons/fa/bookmark.svg +1 -0
  86. package/assets/images/icons/fa/braille.svg +7 -0
  87. package/assets/images/icons/fa/briefcase.svg +2 -0
  88. package/assets/images/icons/fa/bug.svg +3 -0
  89. package/assets/images/icons/fa/building-o.svg +10 -0
  90. package/assets/images/icons/fa/building.svg +8 -0
  91. package/assets/images/icons/fa/bullhorn.svg +2 -0
  92. package/assets/images/icons/fa/bullseye.svg +3 -0
  93. package/assets/images/icons/fa/bus.svg +3 -0
  94. package/assets/images/icons/fa/buysellads.svg +1 -0
  95. package/assets/images/icons/fa/cab.svg +3 -0
  96. package/assets/images/icons/fa/calculator.svg +6 -0
  97. package/assets/images/icons/fa/calendar-check-o.svg +3 -0
  98. package/assets/images/icons/fa/calendar-minus-o.svg +3 -0
  99. package/assets/images/icons/fa/calendar-o.svg +2 -0
  100. package/assets/images/icons/fa/calendar-plus-o.svg +3 -0
  101. package/assets/images/icons/fa/calendar-times-o.svg +3 -0
  102. package/assets/images/icons/fa/calendar.svg +4 -0
  103. package/assets/images/icons/fa/camera-retro.svg +3 -0
  104. package/assets/images/icons/fa/camera.svg +2 -0
  105. package/assets/images/icons/fa/caret-down.svg +1 -0
  106. package/assets/images/icons/fa/caret-left.svg +1 -0
  107. package/assets/images/icons/fa/caret-right.svg +1 -0
  108. package/assets/images/icons/fa/caret-up.svg +1 -0
  109. package/assets/images/icons/fa/cart-arrow-down.svg +3 -0
  110. package/assets/images/icons/fa/cart-plus.svg +3 -0
  111. package/assets/images/icons/fa/cc-amex.svg +9 -0
  112. package/assets/images/icons/fa/cc-diners-club.svg +3 -0
  113. package/assets/images/icons/fa/cc-discover.svg +5 -0
  114. package/assets/images/icons/fa/cc-jcb.svg +4 -0
  115. package/assets/images/icons/fa/cc-mastercard.svg +11 -0
  116. package/assets/images/icons/fa/cc-paypal.svg +6 -0
  117. package/assets/images/icons/fa/cc-stripe.svg +5 -0
  118. package/assets/images/icons/fa/cc-visa.svg +3 -0
  119. package/assets/images/icons/fa/cc.svg +4 -0
  120. package/assets/images/icons/fa/certificate.svg +3 -0
  121. package/assets/images/icons/fa/chain.svg +4 -0
  122. package/assets/images/icons/fa/check-circle-o.svg +2 -0
  123. package/assets/images/icons/fa/check-circle.svg +2 -0
  124. package/assets/images/icons/fa/check-square-o.svg +3 -0
  125. package/assets/images/icons/fa/check-square.svg +2 -0
  126. package/assets/images/icons/fa/check.svg +1 -0
  127. package/assets/images/icons/fa/chevron-circle-down.svg +2 -0
  128. package/assets/images/icons/fa/chevron-circle-left.svg +2 -0
  129. package/assets/images/icons/fa/chevron-circle-right.svg +2 -0
  130. package/assets/images/icons/fa/chevron-circle-up.svg +2 -0
  131. package/assets/images/icons/fa/chevron-down.svg +1 -0
  132. package/assets/images/icons/fa/chevron-left.svg +1 -0
  133. package/assets/images/icons/fa/chevron-right.svg +1 -0
  134. package/assets/images/icons/fa/chevron-up.svg +1 -0
  135. package/assets/images/icons/fa/child.svg +2 -0
  136. package/assets/images/icons/fa/chrome.svg +2 -0
  137. package/assets/images/icons/fa/circle-o-notch.svg +2 -0
  138. package/assets/images/icons/fa/circle-o.svg +2 -0
  139. package/assets/images/icons/fa/circle-thin.svg +2 -0
  140. package/assets/images/icons/fa/circle.svg +1 -0
  141. package/assets/images/icons/fa/clock-o.svg +2 -0
  142. package/assets/images/icons/fa/clone.svg +2 -0
  143. package/assets/images/icons/fa/cloud-download.svg +2 -0
  144. package/assets/images/icons/fa/cloud-upload.svg +2 -0
  145. package/assets/images/icons/fa/cloud.svg +2 -0
  146. package/assets/images/icons/fa/cny.svg +2 -0
  147. package/assets/images/icons/fa/code-fork.svg +3 -0
  148. package/assets/images/icons/fa/code.svg +2 -0
  149. package/assets/images/icons/fa/codepen.svg +2 -0
  150. package/assets/images/icons/fa/codiepie.svg +3 -0
  151. package/assets/images/icons/fa/coffee.svg +2 -0
  152. package/assets/images/icons/fa/columns.svg +1 -0
  153. package/assets/images/icons/fa/comment-o.svg +3 -0
  154. package/assets/images/icons/fa/comment.svg +2 -0
  155. package/assets/images/icons/fa/commenting-o.svg +4 -0
  156. package/assets/images/icons/fa/commenting.svg +3 -0
  157. package/assets/images/icons/fa/comments-o.svg +4 -0
  158. package/assets/images/icons/fa/comments.svg +3 -0
  159. package/assets/images/icons/fa/compass.svg +2 -0
  160. package/assets/images/icons/fa/compress.svg +2 -0
  161. package/assets/images/icons/fa/connectdevelop.svg +7 -0
  162. package/assets/images/icons/fa/contao.svg +3 -0
  163. package/assets/images/icons/fa/copy.svg +2 -0
  164. package/assets/images/icons/fa/copyright.svg +3 -0
  165. package/assets/images/icons/fa/creative-commons.svg +5 -0
  166. package/assets/images/icons/fa/credit-card-alt.svg +1 -0
  167. package/assets/images/icons/fa/credit-card.svg +2 -0
  168. package/assets/images/icons/fa/crop.svg +2 -0
  169. package/assets/images/icons/fa/crosshairs.svg +3 -0
  170. package/assets/images/icons/fa/css3.svg +1 -0
  171. package/assets/images/icons/fa/cube.svg +2 -0
  172. package/assets/images/icons/fa/cubes.svg +3 -0
  173. package/assets/images/icons/fa/cut.svg +5 -0
  174. package/assets/images/icons/fa/cutlery.svg +2 -0
  175. package/assets/images/icons/fa/dashboard.svg +4 -0
  176. package/assets/images/icons/fa/dashcube.svg +1 -0
  177. package/assets/images/icons/fa/database.svg +3 -0
  178. package/assets/images/icons/fa/deafness.svg +4 -0
  179. package/assets/images/icons/fa/dedent.svg +3 -0
  180. package/assets/images/icons/fa/delicious.svg +2 -0
  181. package/assets/images/icons/fa/desktop.svg +2 -0
  182. package/assets/images/icons/fa/deviantart.svg +1 -0
  183. package/assets/images/icons/fa/diamond.svg +2 -0
  184. package/assets/images/icons/fa/digg.svg +2 -0
  185. package/assets/images/icons/fa/dollar.svg +4 -0
  186. package/assets/images/icons/fa/dot-circle-o.svg +2 -0
  187. package/assets/images/icons/fa/download.svg +2 -0
  188. package/assets/images/icons/fa/dribbble.svg +4 -0
  189. package/assets/images/icons/fa/drivers-license-o.svg +4 -0
  190. package/assets/images/icons/fa/drivers-license.svg +4 -0
  191. package/assets/images/icons/fa/dropbox.svg +1 -0
  192. package/assets/images/icons/fa/drupal.svg +5 -0
  193. package/assets/images/icons/fa/edge.svg +2 -0
  194. package/assets/images/icons/fa/edit.svg +3 -0
  195. package/assets/images/icons/fa/eercast.svg +5 -0
  196. package/assets/images/icons/fa/eject.svg +1 -0
  197. package/assets/images/icons/fa/ellipsis-h.svg +2 -0
  198. package/assets/images/icons/fa/ellipsis-v.svg +2 -0
  199. package/assets/images/icons/fa/envelope-o.svg +3 -0
  200. package/assets/images/icons/fa/envelope-open-o.svg +4 -0
  201. package/assets/images/icons/fa/envelope-open.svg +3 -0
  202. package/assets/images/icons/fa/envelope-square.svg +3 -0
  203. package/assets/images/icons/fa/envelope.svg +2 -0
  204. package/assets/images/icons/fa/envira.svg +3 -0
  205. package/assets/images/icons/fa/eraser.svg +1 -0
  206. package/assets/images/icons/fa/etsy.svg +3 -0
  207. package/assets/images/icons/fa/euro.svg +3 -0
  208. package/assets/images/icons/fa/exchange.svg +2 -0
  209. package/assets/images/icons/fa/exclamation-circle.svg +2 -0
  210. package/assets/images/icons/fa/exclamation.svg +1 -0
  211. package/assets/images/icons/fa/expand.svg +2 -0
  212. package/assets/images/icons/fa/expeditedssl.svg +5 -0
  213. package/assets/images/icons/fa/external-link-square.svg +2 -0
  214. package/assets/images/icons/fa/external-link.svg +2 -0
  215. package/assets/images/icons/fa/eye-slash.svg +4 -0
  216. package/assets/images/icons/fa/eye.svg +2 -0
  217. package/assets/images/icons/fa/eyedropper.svg +2 -0
  218. package/assets/images/icons/fa/fa.svg +2 -0
  219. package/assets/images/icons/fa/facebook-f.svg +1 -0
  220. package/assets/images/icons/fa/facebook-official.svg +1 -0
  221. package/assets/images/icons/fa/facebook-square.svg +2 -0
  222. package/assets/images/icons/fa/fast-backward.svg +2 -0
  223. package/assets/images/icons/fa/fast-forward.svg +2 -0
  224. package/assets/images/icons/fa/fax.svg +5 -0
  225. package/assets/images/icons/fa/feed.svg +3 -0
  226. package/assets/images/icons/fa/female.svg +2 -0
  227. package/assets/images/icons/fa/fighter-jet.svg +2 -0
  228. package/assets/images/icons/fa/file-code-o.svg +3 -0
  229. package/assets/images/icons/fa/file-excel-o.svg +3 -0
  230. package/assets/images/icons/fa/file-movie-o.svg +2 -0
  231. package/assets/images/icons/fa/file-o.svg +2 -0
  232. package/assets/images/icons/fa/file-pdf-o.svg +4 -0
  233. package/assets/images/icons/fa/file-photo-o.svg +2 -0
  234. package/assets/images/icons/fa/file-powerpoint-o.svg +2 -0
  235. package/assets/images/icons/fa/file-sound-o.svg +3 -0
  236. package/assets/images/icons/fa/file-text-o.svg +3 -0
  237. package/assets/images/icons/fa/file-text.svg +2 -0
  238. package/assets/images/icons/fa/file-word-o.svg +3 -0
  239. package/assets/images/icons/fa/file-zip-o.svg +3 -0
  240. package/assets/images/icons/fa/file.svg +1 -0
  241. package/assets/images/icons/fa/film.svg +5 -0
  242. package/assets/images/icons/fa/filter.svg +1 -0
  243. package/assets/images/icons/fa/fire-extinguisher.svg +3 -0
  244. package/assets/images/icons/fa/fire.svg +2 -0
  245. package/assets/images/icons/fa/firefox.svg +3 -0
  246. package/assets/images/icons/fa/first-order.svg +4 -0
  247. package/assets/images/icons/fa/flag-checkered.svg +4 -0
  248. package/assets/images/icons/fa/flag-o.svg +3 -0
  249. package/assets/images/icons/fa/flag.svg +2 -0
  250. package/assets/images/icons/fa/flash.svg +1 -0
  251. package/assets/images/icons/fa/flask.svg +1 -0
  252. package/assets/images/icons/fa/flickr.svg +2 -0
  253. package/assets/images/icons/fa/folder-o.svg +2 -0
  254. package/assets/images/icons/fa/folder-open-o.svg +3 -0
  255. package/assets/images/icons/fa/folder-open.svg +2 -0
  256. package/assets/images/icons/fa/folder.svg +1 -0
  257. package/assets/images/icons/fa/font.svg +3 -0
  258. package/assets/images/icons/fa/fonticons.svg +3 -0
  259. package/assets/images/icons/fa/fort-awesome.svg +4 -0
  260. package/assets/images/icons/fa/forumbee.svg +2 -0
  261. package/assets/images/icons/fa/forward.svg +1 -0
  262. package/assets/images/icons/fa/foursquare.svg +3 -0
  263. package/assets/images/icons/fa/free-code-camp.svg +7 -0
  264. package/assets/images/icons/fa/frown-o.svg +3 -0
  265. package/assets/images/icons/fa/gamepad.svg +3 -0
  266. package/assets/images/icons/fa/gbp.svg +2 -0
  267. package/assets/images/icons/fa/ge.svg +6 -0
  268. package/assets/images/icons/fa/gear.svg +4 -0
  269. package/assets/images/icons/fa/gears.svg +8 -0
  270. package/assets/images/icons/fa/genderless.svg +2 -0
  271. package/assets/images/icons/fa/get-pocket.svg +2 -0
  272. package/assets/images/icons/fa/gg-circle.svg +2 -0
  273. package/assets/images/icons/fa/gg.svg +1 -0
  274. package/assets/images/icons/fa/gift.svg +3 -0
  275. package/assets/images/icons/fa/git-square.svg +4 -0
  276. package/assets/images/icons/fa/git.svg +4 -0
  277. package/assets/images/icons/fa/github-alt.svg +4 -0
  278. package/assets/images/icons/fa/github-square.svg +5 -0
  279. package/assets/images/icons/fa/github.svg +5 -0
  280. package/assets/images/icons/fa/gitlab.svg +1 -0
  281. package/assets/images/icons/fa/gittip.svg +2 -0
  282. package/assets/images/icons/fa/glass.svg +1 -0
  283. package/assets/images/icons/fa/glide-g.svg +4 -0
  284. package/assets/images/icons/fa/glide.svg +4 -0
  285. package/assets/images/icons/fa/globe.svg +15 -0
  286. package/assets/images/icons/fa/google-plus-circle.svg +2 -0
  287. package/assets/images/icons/fa/google-plus-square.svg +2 -0
  288. package/assets/images/icons/fa/google-plus.svg +2 -0
  289. package/assets/images/icons/fa/google-wallet.svg +2 -0
  290. package/assets/images/icons/fa/google.svg +2 -0
  291. package/assets/images/icons/fa/grav.svg +7 -0
  292. package/assets/images/icons/fa/group.svg +4 -0
  293. package/assets/images/icons/fa/h-square.svg +2 -0
  294. package/assets/images/icons/fa/hand-grab-o.svg +4 -0
  295. package/assets/images/icons/fa/hand-lizard-o.svg +3 -0
  296. package/assets/images/icons/fa/hand-o-down.svg +4 -0
  297. package/assets/images/icons/fa/hand-o-left.svg +4 -0
  298. package/assets/images/icons/fa/hand-o-right.svg +4 -0
  299. package/assets/images/icons/fa/hand-o-up.svg +4 -0
  300. package/assets/images/icons/fa/hand-peace-o.svg +5 -0
  301. package/assets/images/icons/fa/hand-pointer-o.svg +4 -0
  302. package/assets/images/icons/fa/hand-scissors-o.svg +5 -0
  303. package/assets/images/icons/fa/hand-spock-o.svg +4 -0
  304. package/assets/images/icons/fa/hand-stop-o.svg +3 -0
  305. package/assets/images/icons/fa/handshake-o.svg +5 -0
  306. package/assets/images/icons/fa/hashtag.svg +3 -0
  307. package/assets/images/icons/fa/hdd-o.svg +3 -0
  308. package/assets/images/icons/fa/header.svg +5 -0
  309. package/assets/images/icons/fa/headphones.svg +3 -0
  310. package/assets/images/icons/fa/heart-o.svg +3 -0
  311. package/assets/images/icons/fa/heart.svg +2 -0
  312. package/assets/images/icons/fa/heartbeat.svg +3 -0
  313. package/assets/images/icons/fa/history.svg +3 -0
  314. package/assets/images/icons/fa/home.svg +2 -0
  315. package/assets/images/icons/fa/hospital-o.svg +8 -0
  316. package/assets/images/icons/fa/hotel.svg +2 -0
  317. package/assets/images/icons/fa/hourglass-1.svg +2 -0
  318. package/assets/images/icons/fa/hourglass-2.svg +2 -0
  319. package/assets/images/icons/fa/hourglass-3.svg +3 -0
  320. package/assets/images/icons/fa/hourglass-o.svg +3 -0
  321. package/assets/images/icons/fa/hourglass.svg +3 -0
  322. package/assets/images/icons/fa/houzz.svg +1 -0
  323. package/assets/images/icons/fa/html5.svg +1 -0
  324. package/assets/images/icons/fa/i-cursor.svg +1 -0
  325. package/assets/images/icons/fa/id-badge.svg +3 -0
  326. package/assets/images/icons/fa/imdb.svg +4 -0
  327. package/assets/images/icons/fa/inbox.svg +2 -0
  328. package/assets/images/icons/fa/indent.svg +3 -0
  329. package/assets/images/icons/fa/industry.svg +1 -0
  330. package/assets/images/icons/fa/info-circle.svg +2 -0
  331. package/assets/images/icons/fa/info.svg +2 -0
  332. package/assets/images/icons/fa/instagram.svg +4 -0
  333. package/assets/images/icons/fa/institution.svg +2 -0
  334. package/assets/images/icons/fa/internet-explorer.svg +3 -0
  335. package/assets/images/icons/fa/intersex.svg +3 -0
  336. package/assets/images/icons/fa/ioxhost.svg +3 -0
  337. package/assets/images/icons/fa/italic.svg +2 -0
  338. package/assets/images/icons/fa/joomla.svg +5 -0
  339. package/assets/images/icons/fa/jsfiddle.svg +3 -0
  340. package/assets/images/icons/fa/key.svg +3 -0
  341. package/assets/images/icons/fa/keyboard-o.svg +5 -0
  342. package/assets/images/icons/fa/language.svg +6 -0
  343. package/assets/images/icons/fa/laptop.svg +2 -0
  344. package/assets/images/icons/fa/lastfm-square.svg +4 -0
  345. package/assets/images/icons/fa/lastfm.svg +4 -0
  346. package/assets/images/icons/fa/leaf.svg +3 -0
  347. package/assets/images/icons/fa/leanpub.svg +3 -0
  348. package/assets/images/icons/fa/legal.svg +4 -0
  349. package/assets/images/icons/fa/lemon-o.svg +4 -0
  350. package/assets/images/icons/fa/level-down.svg +1 -0
  351. package/assets/images/icons/fa/level-up.svg +1 -0
  352. package/assets/images/icons/fa/life-bouy.svg +3 -0
  353. package/assets/images/icons/fa/lightbulb-o.svg +4 -0
  354. package/assets/images/icons/fa/line-chart.svg +2 -0
  355. package/assets/images/icons/fa/linkedin-square.svg +2 -0
  356. package/assets/images/icons/fa/linkedin.svg +2 -0
  357. package/assets/images/icons/fa/linode.svg +4 -0
  358. package/assets/images/icons/fa/linux.svg +16 -0
  359. package/assets/images/icons/fa/list-alt.svg +5 -0
  360. package/assets/images/icons/fa/list-ol.svg +4 -0
  361. package/assets/images/icons/fa/list-ul.svg +3 -0
  362. package/assets/images/icons/fa/list.svg +5 -0
  363. package/assets/images/icons/fa/location-arrow.svg +1 -0
  364. package/assets/images/icons/fa/lock.svg +1 -0
  365. package/assets/images/icons/fa/long-arrow-down.svg +1 -0
  366. package/assets/images/icons/fa/long-arrow-left.svg +1 -0
  367. package/assets/images/icons/fa/long-arrow-right.svg +1 -0
  368. package/assets/images/icons/fa/long-arrow-up.svg +1 -0
  369. package/assets/images/icons/fa/low-vision.svg +4 -0
  370. package/assets/images/icons/fa/magic.svg +2 -0
  371. package/assets/images/icons/fa/magnet.svg +2 -0
  372. package/assets/images/icons/fa/mail-forward.svg +2 -0
  373. package/assets/images/icons/fa/mail-reply-all.svg +2 -0
  374. package/assets/images/icons/fa/mail-reply.svg +2 -0
  375. package/assets/images/icons/fa/male.svg +2 -0
  376. package/assets/images/icons/fa/map-marker.svg +1 -0
  377. package/assets/images/icons/fa/map-o.svg +2 -0
  378. package/assets/images/icons/fa/map-pin.svg +2 -0
  379. package/assets/images/icons/fa/map-signs.svg +2 -0
  380. package/assets/images/icons/fa/map.svg +2 -0
  381. package/assets/images/icons/fa/mars-double.svg +4 -0
  382. package/assets/images/icons/fa/mars-stroke-h.svg +3 -0
  383. package/assets/images/icons/fa/mars-stroke-v.svg +3 -0
  384. package/assets/images/icons/fa/mars-stroke.svg +3 -0
  385. package/assets/images/icons/fa/mars.svg +2 -0
  386. package/assets/images/icons/fa/maxcdn.svg +1 -0
  387. package/assets/images/icons/fa/meanpath.svg +3 -0
  388. package/assets/images/icons/fa/medium.svg +2 -0
  389. package/assets/images/icons/fa/medkit.svg +2 -0
  390. package/assets/images/icons/fa/meetup.svg +9 -0
  391. package/assets/images/icons/fa/meh-o.svg +3 -0
  392. package/assets/images/icons/fa/mercury.svg +3 -0
  393. package/assets/images/icons/fa/microchip.svg +5 -0
  394. package/assets/images/icons/fa/microphone-slash.svg +3 -0
  395. package/assets/images/icons/fa/microphone.svg +2 -0
  396. package/assets/images/icons/fa/minus-circle.svg +2 -0
  397. package/assets/images/icons/fa/minus-square-o.svg +2 -0
  398. package/assets/images/icons/fa/minus-square.svg +2 -0
  399. package/assets/images/icons/fa/minus.svg +1 -0
  400. package/assets/images/icons/fa/mixcloud.svg +4 -0
  401. package/assets/images/icons/fa/mobile-phone.svg +2 -0
  402. package/assets/images/icons/fa/modx.svg +1 -0
  403. package/assets/images/icons/fa/money.svg +2 -0
  404. package/assets/images/icons/fa/moon-o.svg +2 -0
  405. package/assets/images/icons/fa/mortar-board.svg +2 -0
  406. package/assets/images/icons/fa/motorcycle.svg +4 -0
  407. package/assets/images/icons/fa/mouse-pointer.svg +1 -0
  408. package/assets/images/icons/fa/music.svg +2 -0
  409. package/assets/images/icons/fa/navicon.svg +2 -0
  410. package/assets/images/icons/fa/neuter.svg +2 -0
  411. package/assets/images/icons/fa/newspaper-o.svg +2 -0
  412. package/assets/images/icons/fa/object-group.svg +2 -0
  413. package/assets/images/icons/fa/object-ungroup.svg +2 -0
  414. package/assets/images/icons/fa/odnoklassniki-square.svg +3 -0
  415. package/assets/images/icons/fa/odnoklassniki.svg +3 -0
  416. package/assets/images/icons/fa/opencart.svg +3 -0
  417. package/assets/images/icons/fa/openid.svg +1 -0
  418. package/assets/images/icons/fa/opera.svg +3 -0
  419. package/assets/images/icons/fa/optin-monster.svg +17 -0
  420. package/assets/images/icons/fa/pagelines.svg +4 -0
  421. package/assets/images/icons/fa/paint-brush.svg +2 -0
  422. package/assets/images/icons/fa/paperclip.svg +3 -0
  423. package/assets/images/icons/fa/paragraph.svg +2 -0
  424. package/assets/images/icons/fa/paste.svg +2 -0
  425. package/assets/images/icons/fa/pause-circle-o.svg +2 -0
  426. package/assets/images/icons/fa/pause-circle.svg +2 -0
  427. package/assets/images/icons/fa/pause.svg +1 -0
  428. package/assets/images/icons/fa/paw.svg +4 -0
  429. package/assets/images/icons/fa/paypal.svg +3 -0
  430. package/assets/images/icons/fa/pencil-square.svg +2 -0
  431. package/assets/images/icons/fa/pencil.svg +2 -0
  432. package/assets/images/icons/fa/percent.svg +3 -0
  433. package/assets/images/icons/fa/phone-square.svg +4 -0
  434. package/assets/images/icons/fa/phone.svg +3 -0
  435. package/assets/images/icons/fa/photo.svg +2 -0
  436. package/assets/images/icons/fa/pie-chart.svg +1 -0
  437. package/assets/images/icons/fa/pied-piper-alt.svg +8 -0
  438. package/assets/images/icons/fa/pied-piper-pp.svg +3 -0
  439. package/assets/images/icons/fa/pied-piper.svg +3 -0
  440. package/assets/images/icons/fa/pinterest-p.svg +3 -0
  441. package/assets/images/icons/fa/pinterest-square.svg +3 -0
  442. package/assets/images/icons/fa/pinterest.svg +3 -0
  443. package/assets/images/icons/fa/plane.svg +2 -0
  444. package/assets/images/icons/fa/play-circle-o.svg +2 -0
  445. package/assets/images/icons/fa/play-circle.svg +2 -0
  446. package/assets/images/icons/fa/play.svg +1 -0
  447. package/assets/images/icons/fa/plug.svg +2 -0
  448. package/assets/images/icons/fa/plus-circle.svg +2 -0
  449. package/assets/images/icons/fa/plus-square-o.svg +2 -0
  450. package/assets/images/icons/fa/plus-square.svg +2 -0
  451. package/assets/images/icons/fa/plus.svg +1 -0
  452. package/assets/images/icons/fa/podcast.svg +5 -0
  453. package/assets/images/icons/fa/power-off.svg +2 -0
  454. package/assets/images/icons/fa/print.svg +2 -0
  455. package/assets/images/icons/fa/product-hunt.svg +2 -0
  456. package/assets/images/icons/fa/puzzle-piece.svg +4 -0
  457. package/assets/images/icons/fa/qq.svg +4 -0
  458. package/assets/images/icons/fa/qrcode.svg +2 -0
  459. package/assets/images/icons/fa/question-circle-o.svg +4 -0
  460. package/assets/images/icons/fa/question-circle.svg +3 -0
  461. package/assets/images/icons/fa/question.svg +2 -0
  462. package/assets/images/icons/fa/quora.svg +3 -0
  463. package/assets/images/icons/fa/quote-left.svg +2 -0
  464. package/assets/images/icons/fa/quote-right.svg +2 -0
  465. package/assets/images/icons/fa/ra.svg +4 -0
  466. package/assets/images/icons/fa/random.svg +4 -0
  467. package/assets/images/icons/fa/ravelry.svg +6 -0
  468. package/assets/images/icons/fa/recycle.svg +4 -0
  469. package/assets/images/icons/fa/reddit-alien.svg +4 -0
  470. package/assets/images/icons/fa/reddit-square.svg +4 -0
  471. package/assets/images/icons/fa/reddit.svg +4 -0
  472. package/assets/images/icons/fa/refresh.svg +3 -0
  473. package/assets/images/icons/fa/registered.svg +3 -0
  474. package/assets/images/icons/fa/remove.svg +2 -0
  475. package/assets/images/icons/fa/renren.svg +2 -0
  476. package/assets/images/icons/fa/retweet.svg +3 -0
  477. package/assets/images/icons/fa/road.svg +2 -0
  478. package/assets/images/icons/fa/rocket.svg +2 -0
  479. package/assets/images/icons/fa/rotate-left.svg +2 -0
  480. package/assets/images/icons/fa/rotate-right.svg +2 -0
  481. package/assets/images/icons/fa/rss-square.svg +3 -0
  482. package/assets/images/icons/fa/ruble.svg +2 -0
  483. package/assets/images/icons/fa/rupee.svg +2 -0
  484. package/assets/images/icons/fa/safari.svg +6 -0
  485. package/assets/images/icons/fa/save.svg +2 -0
  486. package/assets/images/icons/fa/scribd.svg +4 -0
  487. package/assets/images/icons/fa/search-minus.svg +3 -0
  488. package/assets/images/icons/fa/search-plus.svg +3 -0
  489. package/assets/images/icons/fa/search.svg +2 -0
  490. package/assets/images/icons/fa/sellsy.svg +3 -0
  491. package/assets/images/icons/fa/send-o.svg +2 -0
  492. package/assets/images/icons/fa/send.svg +1 -0
  493. package/assets/images/icons/fa/server.svg +2 -0
  494. package/assets/images/icons/fa/share-alt-square.svg +2 -0
  495. package/assets/images/icons/fa/share-alt.svg +2 -0
  496. package/assets/images/icons/fa/share-square-o.svg +3 -0
  497. package/assets/images/icons/fa/share-square.svg +2 -0
  498. package/assets/images/icons/fa/shekel.svg +2 -0
  499. package/assets/images/icons/fa/shield.svg +2 -0
  500. package/assets/images/icons/fa/ship.svg +5 -0
  501. package/assets/images/icons/fa/shirtsinbulk.svg +7 -0
  502. package/assets/images/icons/fa/shopping-bag.svg +2 -0
  503. package/assets/images/icons/fa/shopping-basket.svg +4 -0
  504. package/assets/images/icons/fa/shopping-cart.svg +2 -0
  505. package/assets/images/icons/fa/shower.svg +6 -0
  506. package/assets/images/icons/fa/sign-in.svg +2 -0
  507. package/assets/images/icons/fa/sign-out.svg +2 -0
  508. package/assets/images/icons/fa/signal.svg +2 -0
  509. package/assets/images/icons/fa/signing.svg +5 -0
  510. package/assets/images/icons/fa/simplybuilt.svg +2 -0
  511. package/assets/images/icons/fa/sitemap.svg +3 -0
  512. package/assets/images/icons/fa/skyatlas.svg +4 -0
  513. package/assets/images/icons/fa/skype.svg +4 -0
  514. package/assets/images/icons/fa/slack.svg +3 -0
  515. package/assets/images/icons/fa/sliders.svg +2 -0
  516. package/assets/images/icons/fa/slideshare.svg +4 -0
  517. package/assets/images/icons/fa/smile-o.svg +3 -0
  518. package/assets/images/icons/fa/snapchat-ghost.svg +3 -0
  519. package/assets/images/icons/fa/snapchat-square.svg +4 -0
  520. package/assets/images/icons/fa/snapchat.svg +4 -0
  521. package/assets/images/icons/fa/snowflake-o.svg +5 -0
  522. package/assets/images/icons/fa/soccer-ball-o.svg +2 -0
  523. package/assets/images/icons/fa/sort-alpha-asc.svg +3 -0
  524. package/assets/images/icons/fa/sort-alpha-desc.svg +3 -0
  525. package/assets/images/icons/fa/sort-amount-asc.svg +3 -0
  526. package/assets/images/icons/fa/sort-amount-desc.svg +3 -0
  527. package/assets/images/icons/fa/sort-down.svg +1 -0
  528. package/assets/images/icons/fa/sort-numeric-asc.svg +3 -0
  529. package/assets/images/icons/fa/sort-numeric-desc.svg +3 -0
  530. package/assets/images/icons/fa/sort-up.svg +1 -0
  531. package/assets/images/icons/fa/soundcloud.svg +7 -0
  532. package/assets/images/icons/fa/space-shuttle.svg +3 -0
  533. package/assets/images/icons/fa/spinner.svg +4 -0
  534. package/assets/images/icons/fa/spoon.svg +1 -0
  535. package/assets/images/icons/fa/spotify.svg +3 -0
  536. package/assets/images/icons/fa/square-o.svg +2 -0
  537. package/assets/images/icons/fa/square.svg +1 -0
  538. package/assets/images/icons/fa/stack-exchange.svg +2 -0
  539. package/assets/images/icons/fa/stack-overflow.svg +1 -0
  540. package/assets/images/icons/fa/star-half-empty.svg +2 -0
  541. package/assets/images/icons/fa/star-half.svg +1 -0
  542. package/assets/images/icons/fa/star-o.svg +2 -0
  543. package/assets/images/icons/fa/star.svg +2 -0
  544. package/assets/images/icons/fa/steam-square.svg +4 -0
  545. package/assets/images/icons/fa/steam.svg +3 -0
  546. package/assets/images/icons/fa/step-backward.svg +1 -0
  547. package/assets/images/icons/fa/step-forward.svg +1 -0
  548. package/assets/images/icons/fa/stethoscope.svg +3 -0
  549. package/assets/images/icons/fa/sticky-note-o.svg +2 -0
  550. package/assets/images/icons/fa/sticky-note.svg +1 -0
  551. package/assets/images/icons/fa/stop-circle-o.svg +2 -0
  552. package/assets/images/icons/fa/stop-circle.svg +2 -0
  553. package/assets/images/icons/fa/stop.svg +1 -0
  554. package/assets/images/icons/fa/street-view.svg +4 -0
  555. package/assets/images/icons/fa/strikethrough.svg +3 -0
  556. package/assets/images/icons/fa/stumbleupon-circle.svg +3 -0
  557. package/assets/images/icons/fa/stumbleupon.svg +2 -0
  558. package/assets/images/icons/fa/subscript.svg +3 -0
  559. package/assets/images/icons/fa/subway.svg +2 -0
  560. package/assets/images/icons/fa/suitcase.svg +2 -0
  561. package/assets/images/icons/fa/sun-o.svg +3 -0
  562. package/assets/images/icons/fa/superpowers.svg +2 -0
  563. package/assets/images/icons/fa/superscript.svg +3 -0
  564. package/assets/images/icons/fa/table.svg +5 -0
  565. package/assets/images/icons/fa/tablet.svg +2 -0
  566. package/assets/images/icons/fa/tag.svg +2 -0
  567. package/assets/images/icons/fa/tags.svg +2 -0
  568. package/assets/images/icons/fa/tasks.svg +2 -0
  569. package/assets/images/icons/fa/telegram.svg +2 -0
  570. package/assets/images/icons/fa/tencent-weibo.svg +3 -0
  571. package/assets/images/icons/fa/terminal.svg +2 -0
  572. package/assets/images/icons/fa/text-height.svg +4 -0
  573. package/assets/images/icons/fa/text-width.svg +5 -0
  574. package/assets/images/icons/fa/th-large.svg +2 -0
  575. package/assets/images/icons/fa/th-list.svg +3 -0
  576. package/assets/images/icons/fa/th.svg +4 -0
  577. package/assets/images/icons/fa/themeisle.svg +8 -0
  578. package/assets/images/icons/fa/thermometer-0.svg +2 -0
  579. package/assets/images/icons/fa/thermometer-1.svg +3 -0
  580. package/assets/images/icons/fa/thermometer-2.svg +3 -0
  581. package/assets/images/icons/fa/thermometer-3.svg +3 -0
  582. package/assets/images/icons/fa/thermometer-4.svg +3 -0
  583. package/assets/images/icons/fa/thumb-tack.svg +2 -0
  584. package/assets/images/icons/fa/thumbs-down.svg +3 -0
  585. package/assets/images/icons/fa/thumbs-o-down.svg +4 -0
  586. package/assets/images/icons/fa/thumbs-o-up.svg +4 -0
  587. package/assets/images/icons/fa/thumbs-up.svg +3 -0
  588. package/assets/images/icons/fa/ticket.svg +2 -0
  589. package/assets/images/icons/fa/times-circle-o.svg +3 -0
  590. package/assets/images/icons/fa/times-circle.svg +2 -0
  591. package/assets/images/icons/fa/times-rectangle-o.svg +2 -0
  592. package/assets/images/icons/fa/times-rectangle.svg +2 -0
  593. package/assets/images/icons/fa/tint.svg +2 -0
  594. package/assets/images/icons/fa/toggle-down.svg +2 -0
  595. package/assets/images/icons/fa/toggle-left.svg +2 -0
  596. package/assets/images/icons/fa/toggle-off.svg +3 -0
  597. package/assets/images/icons/fa/toggle-on.svg +2 -0
  598. package/assets/images/icons/fa/toggle-right.svg +2 -0
  599. package/assets/images/icons/fa/toggle-up.svg +2 -0
  600. package/assets/images/icons/fa/trademark.svg +3 -0
  601. package/assets/images/icons/fa/train.svg +2 -0
  602. package/assets/images/icons/fa/transgender-alt.svg +4 -0
  603. package/assets/images/icons/fa/trash-o.svg +3 -0
  604. package/assets/images/icons/fa/trash.svg +3 -0
  605. package/assets/images/icons/fa/tree.svg +2 -0
  606. package/assets/images/icons/fa/trello.svg +2 -0
  607. package/assets/images/icons/fa/tripadvisor.svg +6 -0
  608. package/assets/images/icons/fa/trophy.svg +3 -0
  609. package/assets/images/icons/fa/truck.svg +3 -0
  610. package/assets/images/icons/fa/tty.svg +5 -0
  611. package/assets/images/icons/fa/tumblr-square.svg +2 -0
  612. package/assets/images/icons/fa/tumblr.svg +2 -0
  613. package/assets/images/icons/fa/turkish-lira.svg +2 -0
  614. package/assets/images/icons/fa/tv.svg +2 -0
  615. package/assets/images/icons/fa/twitch.svg +1 -0
  616. package/assets/images/icons/fa/twitter-square.svg +3 -0
  617. package/assets/images/icons/fa/twitter.svg +2 -0
  618. package/assets/images/icons/fa/umbrella.svg +3 -0
  619. package/assets/images/icons/fa/underline.svg +4 -0
  620. package/assets/images/icons/fa/universal-access.svg +4 -0
  621. package/assets/images/icons/fa/unlink.svg +4 -0
  622. package/assets/images/icons/fa/unlock-alt.svg +2 -0
  623. package/assets/images/icons/fa/unlock.svg +2 -0
  624. package/assets/images/icons/fa/unsorted.svg +1 -0
  625. package/assets/images/icons/fa/upload.svg +2 -0
  626. package/assets/images/icons/fa/usb.svg +3 -0
  627. package/assets/images/icons/fa/user-circle-o.svg +2 -0
  628. package/assets/images/icons/fa/user-circle.svg +2 -0
  629. package/assets/images/icons/fa/user-md.svg +4 -0
  630. package/assets/images/icons/fa/user-o.svg +3 -0
  631. package/assets/images/icons/fa/user-plus.svg +3 -0
  632. package/assets/images/icons/fa/user-secret.svg +4 -0
  633. package/assets/images/icons/fa/user-times.svg +3 -0
  634. package/assets/images/icons/fa/user.svg +2 -0
  635. package/assets/images/icons/fa/vcard-o.svg +5 -0
  636. package/assets/images/icons/fa/vcard.svg +4 -0
  637. package/assets/images/icons/fa/venus-double.svg +4 -0
  638. package/assets/images/icons/fa/venus-mars.svg +4 -0
  639. package/assets/images/icons/fa/venus.svg +2 -0
  640. package/assets/images/icons/fa/viacoin.svg +1 -0
  641. package/assets/images/icons/fa/viadeo-square.svg +4 -0
  642. package/assets/images/icons/fa/viadeo.svg +3 -0
  643. package/assets/images/icons/fa/video-camera.svg +2 -0
  644. package/assets/images/icons/fa/vimeo-square.svg +2 -0
  645. package/assets/images/icons/fa/vimeo.svg +2 -0
  646. package/assets/images/icons/fa/vine.svg +2 -0
  647. package/assets/images/icons/fa/vk.svg +5 -0
  648. package/assets/images/icons/fa/volume-control-phone.svg +5 -0
  649. package/assets/images/icons/fa/volume-down.svg +2 -0
  650. package/assets/images/icons/fa/volume-off.svg +1 -0
  651. package/assets/images/icons/fa/volume-up.svg +4 -0
  652. package/assets/images/icons/fa/warning.svg +2 -0
  653. package/assets/images/icons/fa/wechat.svg +4 -0
  654. package/assets/images/icons/fa/weibo.svg +5 -0
  655. package/assets/images/icons/fa/whatsapp.svg +3 -0
  656. package/assets/images/icons/fa/wheelchair-alt.svg +3 -0
  657. package/assets/images/icons/fa/wheelchair.svg +2 -0
  658. package/assets/images/icons/fa/wifi.svg +3 -0
  659. package/assets/images/icons/fa/wikipedia-w.svg +3 -0
  660. package/assets/images/icons/fa/window-maximize.svg +1 -0
  661. package/assets/images/icons/fa/window-minimize.svg +1 -0
  662. package/assets/images/icons/fa/window-restore.svg +2 -0
  663. package/assets/images/icons/fa/windows.svg +1 -0
  664. package/assets/images/icons/fa/won.svg +3 -0
  665. package/assets/images/icons/fa/wordpress.svg +5 -0
  666. package/assets/images/icons/fa/wpbeginner.svg +2 -0
  667. package/assets/images/icons/fa/wpexplorer.svg +3 -0
  668. package/assets/images/icons/fa/wpforms.svg +2 -0
  669. package/assets/images/icons/fa/wrench.svg +2 -0
  670. package/assets/images/icons/fa/xing-square.svg +2 -0
  671. package/assets/images/icons/fa/xing.svg +2 -0
  672. package/assets/images/icons/fa/y-combinator-square.svg +1 -0
  673. package/assets/images/icons/fa/yahoo.svg +2 -0
  674. package/assets/images/icons/fa/yc.svg +1 -0
  675. package/assets/images/icons/fa/yelp.svg +4 -0
  676. package/assets/images/icons/fa/yoast.svg +2 -0
  677. package/assets/images/icons/fa/youtube-play.svg +3 -0
  678. package/assets/images/icons/fa/youtube-square.svg +6 -0
  679. package/assets/images/icons/fa/youtube.svg +5 -0
  680. package/assets/site.scss +375 -374
  681. package/assets/{bootswatch.scss → theme-variables.scss} +100 -100
  682. package/assets/theme.scss +146 -0
  683. package/assets/variables.scss +93 -93
  684. package/fesm2022/dflat-core-web-core-data.mjs +6 -10
  685. package/fesm2022/dflat-core-web-core-data.mjs.map +1 -1
  686. package/fesm2022/dflat-core-web-core-model.mjs.map +1 -1
  687. package/fesm2022/dflat-core-web-core-ux-testing.mjs +5 -1
  688. package/fesm2022/dflat-core-web-core-ux-testing.mjs.map +1 -1
  689. package/fesm2022/dflat-core-web-core-ux.mjs +4329 -987
  690. package/fesm2022/dflat-core-web-core-ux.mjs.map +1 -1
  691. package/fesm2022/dflat-core-web-core.mjs +102 -7
  692. package/fesm2022/dflat-core-web-core.mjs.map +1 -1
  693. package/fesm2022/dflat-core-web-system-data.mjs +35 -0
  694. package/fesm2022/dflat-core-web-system-data.mjs.map +1 -1
  695. package/fesm2022/dflat-core-web-system-model.mjs +11 -1
  696. package/fesm2022/dflat-core-web-system-model.mjs.map +1 -1
  697. package/fesm2022/dflat-core-web-system-root.mjs +2 -2
  698. package/fesm2022/dflat-core-web-system-root.mjs.map +1 -1
  699. package/fesm2022/dflat-core-web-system-ux.mjs +3201 -1064
  700. package/fesm2022/dflat-core-web-system-ux.mjs.map +1 -1
  701. package/package.json +1 -8
  702. package/scss/dflat-app.scss +10 -11
  703. package/types/dflat-core-web-core-data.d.ts +11 -3
  704. package/types/dflat-core-web-core-model.d.ts +6 -9
  705. package/types/dflat-core-web-core-ux-testing.d.ts +6 -2
  706. package/types/dflat-core-web-core-ux.d.ts +1525 -98
  707. package/types/dflat-core-web-core.d.ts +58 -0
  708. package/types/dflat-core-web-system-data.d.ts +8 -1
  709. package/types/dflat-core-web-system-model.d.ts +466 -2
  710. package/types/dflat-core-web-system-ux.d.ts +292 -48
@@ -1,30 +1,35 @@
1
1
  import * as i0 from "@angular/core";
2
- import { AfterContentInit, AfterViewChecked, AfterViewInit, ChangeDetectorRef, ComponentRef, ElementRef, EventEmitter, InjectionToken, Injector, IterableDiffers, NgZone, OnChanges, OnDestroy, OnInit, PipeTransform, QueryList, Renderer2, SimpleChanges, TemplateRef, Type, ViewContainerRef } from "@angular/core";
3
- import * as i91 from "@dflat-core/web/core-model";
4
- import { ActionDescriptor, AggregateFunction, AggregationValue, ColumnDescriptor, DictionnaryWrapper, EntityConfig, EntityViewModel, EntityViewModelWithFields, ExtendedProperty, FieldDescriptor, FieldEvent, FieldValidators, FilterDescriptor, FilterQuery, FilterRow, FilterType, FilterViewModel, IFilterDescriptorExtra, Notification, PagedList, PropertyEditorEvent, RunActionContext, SaveResult, SaveResults, Section, SectionError, SpecificSection, TextZoneButtonEvent, TrackRecordProperty, User } from "@dflat-core/web/core-model";
2
+ import { AfterContentInit, AfterViewChecked, AfterViewInit, ChangeDetectorRef, ComponentRef, DoCheck, ElementRef, EventEmitter, InjectionToken, Injector, IterableDiffers, NgZone, OnChanges, OnDestroy, OnInit, PipeTransform, QueryList, Renderer2, SimpleChanges, TemplateRef, Type, ViewContainerRef } from "@angular/core";
3
+ import * as i93 from "@dflat-core/web/core-model";
4
+ import { ActionDescriptor, AggregateFunction, AggregationValue, ColumnDescriptor, DictionnaryWrapper, EntityConfig, EntityViewModel, EntityViewModelWithFields, ExtendedProperty, FieldDescriptor, FieldEvent, FieldValidators, FilterDescriptor, FilterQuery, FilterRow, FilterType, FilterViewModel, IFilterDescriptorExtra, Notification, PagedList, PropertyEditorEvent, RunActionContext, SaveResult, SaveResults, Section, SectionError, SpecificSection, TextZoneButtonEvent, User } from "@dflat-core/web/core-model";
5
5
  import { AuthService, BreadcrumbService, BusMessageService, FilterService, HubService, LocalStoreManager, MenuItem, MenuService, NotificationMqService, UserService } from "@dflat-core/web/core-services";
6
- import * as i92 from "@angular/forms";
6
+ import * as i94 from "@angular/forms";
7
7
  import { AbstractControl, ControlValueAccessor, FormBuilder, FormControl, FormGroup, NgForm, UntypedFormControl, UntypedFormGroup, ValidationErrors, Validator, ValidatorFn } from "@angular/forms";
8
8
  import { BehaviorSubject, Observable, Subject, Subscription } from "rxjs";
9
9
  import { DataService, EntityDataService } from "@dflat-core/web/core-data";
10
10
  import { ActionDataService, FilesDataService } from "@dflat-core/web/system-data";
11
- import * as i90 from "@angular/common";
11
+ import * as i92 from "@angular/common";
12
12
  import { DatePipe, Location } from "@angular/common";
13
- import * as i89 from "@angular/router";
13
+ import * as i91 from "@angular/router";
14
14
  import { ActivatedRoute, ActivatedRouteSnapshot, BaseRouteReuseStrategy, DetachedRouteHandle, Router, RouterStateSnapshot } from "@angular/router";
15
- import { SelectionType, TableColumn } from "@swimlane/ngx-datatable";
16
15
  import { ActiveToast, IndividualConfig, ToastrService } from "ngx-toastr";
17
16
  import { Guid } from "guid-typescript";
18
- import * as i95 from "ngx-bootstrap/modal";
19
- import { BsModalRef, BsModalService, ModalOptions } from "ngx-bootstrap/modal";
20
- import * as i94 from "ngx-bootstrap/datepicker";
21
- import { BsDatepickerConfig, BsLocaleService } from "ngx-bootstrap/datepicker";
22
17
  import { EnvironmentBase } from "@dflat-core/web/core";
23
18
  import { AnimationBuilder } from "@angular/animations";
24
19
  import { DomSanitizer, SafeUrl } from "@angular/platform-browser";
25
- import * as i93 from "@ng-select/ng-select";
26
- import * as i98 from "ngx-bootstrap/focus-trap";
20
+ import * as i95 from "@ng-select/ng-select";
27
21
  import { CdkDragDrop } from "@angular/cdk/drag-drop";
22
+ /**
23
+ * Mode de sélection des lignes d'une grille (mêmes valeurs que SelectionType de @swimlane/ngx-datatable,
24
+ * dont le package ne dépend plus).
25
+ */
26
+ export declare enum SelectionType {
27
+ single = "single",
28
+ multi = "multi",
29
+ multiClick = "multiClick",
30
+ cell = "cell",
31
+ checkbox = "checkbox"
32
+ }
28
33
  export type FacadeAction = ((param?: any) => void) | ((param?: any) => Observable<ActionResult<any>>);
29
34
  export declare class ActionDefinition {
30
35
  readonly name: string;
@@ -96,6 +101,154 @@ export declare class FacadeLoadGuard {
96
101
  markFacadeReady(): void;
97
102
  markComponentInitReady(): void;
98
103
  }
104
+ /**
105
+ * Filtre additionnel structuré d'une recherche (FilterViewModel.AdditionalQuery) : des groupes reliés
106
+ * par OU, chacun fait de conditions reliées par ET. Le serveur en écrit la clause SQL
107
+ * (AdditionalQueryBuilder) ; le client n'envoie jamais de SQL.
108
+ */
109
+ /** Opérateurs d'une condition : motif (* pour n'importe quelle suite), égal, différent, dans la liste, hors de la liste. */
110
+ export type AdditionalFilterOperator = 'like' | 'eq' | 'ne' | 'in' | 'notin';
111
+ /** Condition d'un filtre additionnel : propriété (colonne de la grille), opérateur et valeur(s). */
112
+ export interface AdditionalFilterCondition {
113
+ Property: string;
114
+ Operator: AdditionalFilterOperator;
115
+ /** Valeur comparée (like, eq, ne). */
116
+ Value?: string | number | boolean | null;
117
+ /** Valeurs comparées (in, notin). */
118
+ Values?: (string | number)[];
119
+ }
120
+ /** Groupe de conditions, toutes vérifiées. */
121
+ export interface AdditionalFilterGroup {
122
+ Conditions: AdditionalFilterCondition[];
123
+ }
124
+ /**
125
+ * Valeur de FilterViewModel.AdditionalQuery : les groupes en JSON, valeurs converties en texte ;
126
+ * undefined sans condition.
127
+ */
128
+ export declare function toAdditionalQuery(groups: AdditionalFilterGroup[]): string | undefined;
129
+ /** Filtre d'une seule condition, prêt pour FilterViewModel.AdditionalQuery. */
130
+ export declare function additionalQueryOf(condition: AdditionalFilterCondition): string | undefined;
131
+ /**
132
+ * Opérateurs d'une condition du filtre d'une vue : ceux du filtre additionnel, et les comparaisons de
133
+ * la fenêtre « Filtres et tri » (texte, nombres, dates, oui / non, vide).
134
+ */
135
+ export type ViewFilterOperator = AdditionalFilterOperator | 'contains' | 'notcontains' | 'startswith' | 'endswith' | 'gt' | 'ge' | 'lt' | 'le' | 'between' | 'isnull' | 'notnull' | 'true' | 'false' | 'on' | 'before' | 'after' | 'datebetween' | 'today' | 'thismonth';
136
+ /** Condition du filtre d'une vue. */
137
+ export interface ViewFilterCondition {
138
+ Property: string;
139
+ Operator: ViewFilterOperator;
140
+ Value?: string | null;
141
+ /** Borne haute (between, datebetween). */
142
+ Value2?: string | null;
143
+ /** Valeurs (in, notin). */
144
+ Values?: string[];
145
+ }
146
+ /** Groupe du filtre d'une vue : conditions et groupes imbriqués, reliés par ET ou par OU. */
147
+ export interface ViewFilterGroup {
148
+ Logic: 'and' | 'or';
149
+ Conditions: ViewFilterCondition[];
150
+ Groups?: ViewFilterGroup[];
151
+ }
152
+ /** Opérateurs sans valeur. */
153
+ export declare const ViewFilterNoValueOperators: ViewFilterOperator[];
154
+ /** Groupe sans condition vide ni groupe vide ; null s'il ne reste rien. */
155
+ export declare function normalizeViewFilter(group: ViewFilterGroup | null | undefined): ViewFilterGroup | null;
156
+ /** Valeur de FilterViewModel.ViewQuery (et de PresentationProfile.FilterQuery) : le groupe en JSON, ou null. */
157
+ export declare function toViewQuery(group: ViewFilterGroup | null | undefined): string | null;
158
+ /** Groupe d'un JSON de filtre de vue ; null s'il est vide ou illisible. */
159
+ export declare function parseViewQuery(json: string | null | undefined): ViewFilterGroup | null;
160
+ /** Vue personnalisée proposée par le menu « Affichage » d'une grille. */
161
+ export interface GridView {
162
+ /** Identifiant de la vue. */
163
+ id: number;
164
+ /** Libellé de la vue. */
165
+ label: string;
166
+ /** Vue par défaut de la table (lecture seule, sauf pour un administrateur). */
167
+ isDefault: boolean;
168
+ /** Tri de la vue, en JSON (niveaux : propriété, sens), ou rien. */
169
+ sortQuery?: string | null;
170
+ /** Filtre de la vue, en JSON (groupe ET / OU), ou rien. */
171
+ filterQuery?: string | null;
172
+ }
173
+ /** Vues personnalisées d'une grille : la vue par défaut, puis celles de l'utilisateur. */
174
+ export interface GridViewList {
175
+ views: GridView[];
176
+ /** Vue affichée par la grille. */
177
+ selectedId: number | null;
178
+ /** Indique si l'utilisateur peut modifier la vue par défaut (administrateur). */
179
+ canEditDefault: boolean;
180
+ }
181
+ /** Carte d'une grille (vue Carte liée à la vue Grille affichée) : colonne de chaque emplacement. */
182
+ export interface GridCard {
183
+ /** Vue Carte appliquée. */
184
+ id: number | null;
185
+ label: string;
186
+ title?: ColumnDescriptor;
187
+ text?: ColumnDescriptor;
188
+ detail?: ColumnDescriptor;
189
+ badge?: ColumnDescriptor;
190
+ /** Image : colonne (icône d'un type énuméré, image), ou image par défaut de l'élément (entityImage). */
191
+ image?: ColumnDescriptor;
192
+ entityImage?: boolean;
193
+ }
194
+ /** Source de la carte d'une grille : la carte, et les images des éléments. */
195
+ export interface GridCardSource {
196
+ /** Carte de la vue Grille affichée (à défaut la vue Carte par défaut), ou null si la table n'en a pas. */
197
+ loadCard(): Observable<GridCard | null>;
198
+ /** Adresse de l'image par défaut des éléments donnés, par identifiant. */
199
+ loadEntityImages(ids: number[]): Observable<Record<number, string>>;
200
+ }
201
+ /** Colonne proposée par le sous-menu « Colonnes » du menu « Affichage ». */
202
+ export interface GridColumnChoice {
203
+ /** Clé de la colonne (propriété, ou attribut). */
204
+ key: string;
205
+ /** Libellé de la colonne. */
206
+ label: string;
207
+ /** Colonne affichée par la vue. */
208
+ visible: boolean;
209
+ }
210
+ /** Choix de la vue personnalisée d'une grille (menu « Affichage »). */
211
+ export interface GridViewChooser {
212
+ /** Vues proposées à l'utilisateur, avec la vue affichée. */
213
+ loadViews(): Observable<GridViewList>;
214
+ /** Affiche la vue donnée ; null revient à la vue par défaut. */
215
+ select(id: number | null): void;
216
+ /** Ouvre l'éditeur des vues personnalisées sur la vue donnée. */
217
+ edit(id: number | null): void;
218
+ /** Vue affichée modifiée dans la grille (colonnes déplacées) et pas encore enregistrée. */
219
+ isModified?(): boolean;
220
+ /** Enregistre la vue affichée telle qu'elle est dans la grille (bouton de la barre du bas). */
221
+ saveCurrent?(): void;
222
+ /** « Nouvelle vue » : copie de la vue affichée, qui devient la vue affichée. */
223
+ create?(): void;
224
+ /** Colonnes disponibles de la table (attributs compris), affichées ou non par la vue affichée. */
225
+ loadColumns?(): Observable<GridColumnChoice[]>;
226
+ /**
227
+ * Ajoute ou retire une colonne de la grille, sans enregistrer : la vue affichée devient modifiée
228
+ * (bouton d'enregistrement, question à l'abandon de l'écran) ; émet true une fois la grille changée.
229
+ */
230
+ toggleColumn?(key: string, visible: boolean): Observable<boolean>;
231
+ /** Colonnes affichées par la grille, dans leur ordre. */
232
+ displayedColumns?(): string[];
233
+ /** Vues Carte proposées, avec celle liée à la vue Grille affichée. */
234
+ loadCards?(): Observable<{
235
+ cards: {
236
+ id: number;
237
+ label: string;
238
+ isDefault: boolean;
239
+ }[];
240
+ linkedId: number | null;
241
+ canLink: boolean;
242
+ }>;
243
+ /** Lie la vue Grille affichée à la vue Carte donnée. */
244
+ linkCard?(id: number | null): void;
245
+ /** Personnalise la carte (fenêtre standard). */
246
+ editCard?(): void;
247
+ /** Fenêtre « Filtres et tri » : filtre et tri de la grille, enregistrables dans la vue. */
248
+ editFilters?(): void;
249
+ /** Déplace une colonne de la grille avant ou après une autre, sans enregistrer. */
250
+ moveColumn?(key: string, targetKey: string, before: boolean): void;
251
+ }
99
252
  export declare class EntityConfigContext<TData extends EntityViewModel, TFilter extends FilterViewModel> {
100
253
  private dataService;
101
254
  private entityKey;
@@ -107,7 +260,39 @@ export declare class EntityConfigContext<TData extends EntityViewModel, TFilter
107
260
  */
108
261
  reloadColumns(): void;
109
262
  private readonly alteredColumns$;
263
+ /** Ordre des colonnes choisi dans la grille (glisser-déposer des en-têtes), par propriété. */
264
+ private readonly columnOrder$;
110
265
  readonly columns$: Observable<ColumnDescriptor[]>;
266
+ /** Dernières colonnes produites pour la grille, dans leur ordre. */
267
+ private lastColumns;
268
+ /** Colonnes ajoutées ou retirées dans la grille (menu « Affichage », « Colonnes ») depuis le chargement de la vue. */
269
+ private columnSetChanged;
270
+ /** Propriétés des colonnes affichées par la grille, dans leur ordre. */
271
+ getDisplayedColumnKeys(): string[];
272
+ /** Ajoute à la grille des colonnes décrites par le serveur, sans enregistrer la vue. */
273
+ showColumns(descriptors: ColumnDescriptor[]): void;
274
+ /** Retire des colonnes de la grille, sans enregistrer la vue. */
275
+ hideColumns(propertyNames: string[]): void;
276
+ /** Déplace une colonne affichée avant ou après une autre (sous-menu « Colonnes »), sans enregistrer. */
277
+ moveDisplayedColumn(property: string, targetProperty: string, before: boolean): void;
278
+ /** Vue de la grille modifiée depuis son chargement : colonnes déplacées, ajoutées ou retirées. */
279
+ isColumnLayoutModified(): boolean;
280
+ /** Déplace une colonne de la grille avant ou après une autre, par propriété. */
281
+ moveColumn(current: ColumnDescriptor[], property: string, targetProperty: string, before: boolean): void;
282
+ /**
283
+ * Ordre des colonnes choisi dans la grille depuis le chargement de la vue (glisser-déposer des
284
+ * en-têtes) : vide tant que l'utilisateur n'a déplacé aucune colonne.
285
+ */
286
+ getColumnOrder(): string[];
287
+ /** Oublie l'ordre des colonnes choisi dans la grille (changement de vue). */
288
+ clearColumnOrder(): void;
289
+ /**
290
+ * Choix de la vue personnalisée de la grille (menu « Affichage ») : renseigné par l'écran quand
291
+ * il a des vues personnalisées (BaseComponent), absent sinon.
292
+ */
293
+ viewChooser?: GridViewChooser;
294
+ /** Carte de la grille (affichage en cartes) : renseignée par l'écran quand il a des vues (BaseComponent). */
295
+ cardSource?: GridCardSource;
111
296
  private readonly viewModelSource$;
112
297
  setviewModelSource(factory: () => Observable<EntityViewModelWithFields<TData>>): void;
113
298
  /**
@@ -185,15 +370,55 @@ export declare class FilterContext<TData extends EntityViewModel, TFilter extend
185
370
  triggerSearch(): void;
186
371
  setFilter(filter: Partial<TFilter>, pageNumber?: number): void;
187
372
  setKeyword(keyword: string): void;
373
+ /**
374
+ * Tri en cours, colonne par colonne, dans l'ordre de priorité. Un tri combiné (tri personnalisé)
375
+ * met plusieurs colonnes et autant de sens, séparés par des virgules, dans `SortColumn` et
376
+ * `SortDirection` : le serveur les résout un par un (`BaseController.GetSortClauseFromAttribute`).
377
+ */
378
+ getSortList(): {
379
+ property: string;
380
+ direction: 'asc' | 'desc';
381
+ }[];
382
+ /** Tri par défaut de l'écran (filtre par défaut), sans tri choisi. */
383
+ getDefaultSortList(): {
384
+ property: string;
385
+ direction: 'asc' | 'desc';
386
+ }[];
387
+ private static sortListOf;
388
+ /** Filtre de la vue personnalisée (groupes ET / OU), ou null. */
389
+ getViewQuery(): ViewFilterGroup | null;
390
+ /** Filtre de la vue personnalisée : ajouté (ET) aux filtres de la grille ; null l'efface. */
391
+ setViewQuery(group: ViewFilterGroup | null): void;
392
+ /** Tri combiné sur plusieurs colonnes ; une liste vide annule le tri. */
393
+ setSortList(sorts: {
394
+ property: string;
395
+ direction: 'asc' | 'desc';
396
+ }[]): void;
397
+ /** Rang de la colonne dans un tri combiné (1, 2...), ou 0 si elle n'est pas triée ou seule triée. */
398
+ sortRank(property?: string): number;
188
399
  isSorting(property?: string): boolean;
189
400
  isAsc(property?: string): boolean;
190
401
  isDesc(property?: string): boolean;
191
402
  setSorting(property: keyof TData, dir?: 'asc' | 'desc'): void;
403
+ /** Annule le tri choisi : retour au tri du filtre par défaut, ou au tri du serveur. */
404
+ clearSorting(): void;
192
405
  setPage(page: number): void;
193
406
  setPageSize(ps: number): void;
194
407
  updateStates(totalCount: number, execMs: number, take: number): void;
195
408
  addNewQuery(): void;
409
+ /** Ligne de filtres composés vide : une condition par colonne de la grille. */
410
+ private newFilterRow;
411
+ /**
412
+ * Filtre sur la valeur d'une cellule (clic droit) : la valeur devient la condition de la colonne dans
413
+ * la première ligne des filtres composés, créée s'il n'y en a pas, puis la recherche est relancée.
414
+ */
415
+ addFilterOnValue(property: string, value: string): void;
196
416
  removeQueryAtIndex(index: number): void;
417
+ /**
418
+ * Filtres composés de la grille : une ligne par groupe (lignes reliées par OU), une condition « ressemble
419
+ * à » par cellule renseignée (reliées par ET, * pour n'importe quelle suite). Envoyés structurés
420
+ * (AdditionalQuery) : le serveur résout chaque propriété et écrit la clause SQL.
421
+ */
197
422
  applyAdditionalQuery(): void;
198
423
  setAggregateClause(aggregationRequest: any): void;
199
424
  }
@@ -361,6 +586,100 @@ export declare class EditorContext {
361
586
  getField(prop?: string): FieldDescriptor;
362
587
  destroy(): void;
363
588
  }
589
+ /**
590
+ * Options d'ouverture d'une fenêtre (DflatModalService.show), reprises de ModalOptions de
591
+ * ngx-bootstrap pour que les appels existants restent valables.
592
+ */
593
+ export declare class DflatModalOptions<T = any> {
594
+ /** Classes du cadre de la fenêtre (taille : modal-sm, modal-md, modal-lg, modal-xl, modal-xlg). */
595
+ class?: string;
596
+ /** Propriétés affectées au composant de la fenêtre avant son initialisation. */
597
+ initialState?: Partial<T> | Record<string, any>;
598
+ /** Échap ferme la fenêtre (vrai par défaut). */
599
+ keyboard?: boolean;
600
+ /** Un clic sur le fond ne ferme pas la fenêtre (faux par défaut). */
601
+ ignoreBackdropClick?: boolean;
602
+ /** Fond grisé derrière la fenêtre (vrai par défaut) ; 'static' : fond sans fermeture au clic. */
603
+ backdrop?: boolean | 'static';
604
+ /** Repris de ngx-bootstrap, sans effet : l'ouverture n'est pas animée. */
605
+ animated?: boolean;
606
+ /** Identifiant de la fenêtre (DflatModalService.hide(id)). */
607
+ id?: number | string;
608
+ /** Classe ajoutée au cadre de la fenêtre, en plus de class (compatibilité). */
609
+ containerClass?: string;
610
+ }
611
+ /**
612
+ * Fenêtre ouverte par DflatModalService : son composant (content), sa fermeture (hide) et les
613
+ * événements de fermeture. Injectable dans le composant de la fenêtre (à la place de BsModalRef).
614
+ */
615
+ export declare class DflatModalRef<T = any> {
616
+ /** Identifiant de la fenêtre. */
617
+ id: number | string | undefined;
618
+ /** Composant affiché dans la fenêtre. */
619
+ content: T | undefined;
620
+ /** Émis à la demande de fermeture, avec sa raison. */
621
+ readonly onHide: EventEmitter<any>;
622
+ /** Émis une fois la fenêtre fermée, avec la raison de la fermeture. */
623
+ readonly onHidden: EventEmitter<any>;
624
+ /** Fermeture (renseignée par le service). */
625
+ private closer;
626
+ /** Changement des classes du cadre (renseigné par le service). */
627
+ private classSetter;
628
+ /** @internal */
629
+ bind(closer: (reason?: any) => void, classSetter: (cls: string) => void): void;
630
+ /** Ferme la fenêtre. */
631
+ hide(reason?: any): void;
632
+ /** Remplace les classes du cadre de la fenêtre (taille). */
633
+ setClass(cls: string): void;
634
+ }
635
+ /**
636
+ * Cadre d'une fenêtre ouverte par DflatModalService : reprend la structure de Bootstrap
637
+ * (.modal-dialog, .modal-content), que suivent les styles des fenêtres (taille, en-tête, corps,
638
+ * pied). Le composant de la fenêtre, créé par le service, est placé dans .modal-content.
639
+ */
640
+ export declare class DflatModalFrameComponent implements AfterViewInit {
641
+ /** Classes du cadre (taille de la fenêtre). */
642
+ dialogClass: string;
643
+ /** Élément du composant de la fenêtre, à placer dans .modal-content. */
644
+ contentElement: HTMLElement | undefined;
645
+ private content;
646
+ ngAfterViewInit(): void;
647
+ static ɵfac: i0.ɵɵFactoryDeclaration<DflatModalFrameComponent, never>;
648
+ static ɵcmp: i0.ɵɵComponentDeclaration<DflatModalFrameComponent, "alg-dflat-modal-frame", never, {}, {}, never, never, true, never>;
649
+ }
650
+ /**
651
+ * Fenêtres du package, sans ngx-bootstrap : la couche, le fond, la touche Échap, le focus gardé dans
652
+ * la fenêtre et les fenêtres empilées viennent du Dialog du CDK d'Angular ; le cadre reprend la
653
+ * structure des fenêtres de Bootstrap (DflatModalFrameComponent). Même forme que BsModalService :
654
+ * show(composant, { class, initialState, keyboard, ignoreBackdropClick, backdrop }) renvoie une
655
+ * référence (content, hide, onHide, onHidden) ; le composant de la fenêtre injecte DflatModalRef.
656
+ */
657
+ export declare class DflatModalService {
658
+ private readonly dialog;
659
+ private readonly overlay;
660
+ private readonly appRef;
661
+ private readonly environmentInjector;
662
+ private readonly injector;
663
+ private readonly opened;
664
+ private lastId;
665
+ /** Émis à la demande de fermeture d'une fenêtre, avec sa raison. */
666
+ readonly onHide: Subject<any>;
667
+ /** Émis une fois une fenêtre fermée, avec sa raison. */
668
+ readonly onHidden: Subject<any>;
669
+ /**
670
+ * Ouvre le composant (ou le modèle) dans une fenêtre ; les propriétés initialState sont affectées
671
+ * au composant avant son initialisation.
672
+ */
673
+ show<T>(component: Type<T> | TemplateRef<any>, config?: DflatModalOptions<T>): DflatModalRef<T>;
674
+ /** Ferme la fenêtre d'identifiant donné, sinon la dernière ouverte. */
675
+ hide(id?: number | string): void;
676
+ /** Nombre de fenêtres ouvertes. */
677
+ getModalsCount(): number;
678
+ private isTop;
679
+ private close;
680
+ static ɵfac: i0.ɵɵFactoryDeclaration<DflatModalService, never>;
681
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
682
+ }
364
683
  export declare class TestService {
365
684
  constructor();
366
685
  test(loc: string): void;
@@ -641,6 +960,101 @@ export declare class DynamicFormComponent implements OnChanges, OnInit {
641
960
  "dropZone": "dropZone";
642
961
  }, never, never, false, never>;
643
962
  }
963
+ declare namespace date_picker_directive_d_exports {
964
+ export { DatePickerDirective, DatepickerConfig };
965
+ }
966
+ /**
967
+ * Options du calendrier d'un champ de date (mêmes noms que BsDatepickerConfig de ngx-bootstrap,
968
+ * pour que les configurations existantes restent valables ; les autres options sont ignorées).
969
+ */
970
+ export interface DatepickerConfig {
971
+ showTodayButton?: boolean;
972
+ showClearButton?: boolean;
973
+ todayButtonLabel?: string;
974
+ clearButtonLabel?: string;
975
+ showWeekNumbers?: boolean;
976
+ minDate?: Date;
977
+ maxDate?: Date;
978
+ [option: string]: any;
979
+ }
980
+ /**
981
+ * Champ de date du package (remplace bsDatepicker de ngx-bootstrap, dont il reprend les noms :
982
+ * bsDatepicker, [bsConfig], [bsValue], (bsValueChange), [isDisabled], [minDate], [maxDate]) : le champ
983
+ * affiche la date en JJ/MM/AAAA et accepte la saisie (JJ/MM/AAAA, sinon AAAA-MM-JJ) ; un clic, ou
984
+ * Alt+Bas, ouvre le calendrier (CalendarComponent) sous le champ, dans la couche du CDK. S'utilise
985
+ * avec ngModel ou un contrôle de formulaire (la valeur est une Date à minuit, ou null).
986
+ */
987
+ export declare class DatePickerDirective implements ControlValueAccessor, OnDestroy {
988
+ private readonly element;
989
+ private readonly overlay;
990
+ private readonly viewContainer;
991
+ bsConfig: Partial<DatepickerConfig> | null | undefined;
992
+ minDate: Date | null | undefined;
993
+ maxDate: Date | null | undefined;
994
+ /** Champ désactivé (en plus de disabled et readonly). */
995
+ isDisabled: boolean;
996
+ /** Valeur du champ, sans passer par un formulaire. */
997
+ set bsValue(value: unknown);
998
+ /** Date choisie ou saisie (null : effacée). */
999
+ readonly bsValueChange: EventEmitter<Date>;
1000
+ private value;
1001
+ private disabled;
1002
+ private overlayRef;
1003
+ private calendarRef;
1004
+ private subscriptions;
1005
+ private onChange;
1006
+ private onTouched;
1007
+ private static readonly Positions;
1008
+ writeValue(value: unknown): void;
1009
+ registerOnChange(fn: (value: Date | null) => void): void;
1010
+ registerOnTouched(fn: () => void): void;
1011
+ setDisabledState(isDisabled: boolean): void;
1012
+ onClick(): void;
1013
+ onKeydown(event: KeyboardEvent): void;
1014
+ /** Saisie terminée (sortie du champ) : la date tapée remplace la valeur. */
1015
+ onTextChange(): void;
1016
+ onBlur(): void;
1017
+ private commitText;
1018
+ private apply;
1019
+ private render;
1020
+ private get isLocked();
1021
+ /** Ouvre le calendrier sous le champ (au-dessus s'il n'y a pas la place). */
1022
+ open(): void;
1023
+ /** Ferme le calendrier. */
1024
+ close(): void;
1025
+ /** Indique si le calendrier est ouvert. */
1026
+ get isOpen(): boolean;
1027
+ /** Ouvre ou ferme le calendrier (compatibilité : dp.toggle()). */
1028
+ toggle(): void;
1029
+ show(): void;
1030
+ hide(): void;
1031
+ ngOnDestroy(): void;
1032
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerDirective, never>;
1033
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DatePickerDirective, "input[algDatepicker], input[bsDatepicker]", ["algDatepicker", "bsDatepicker"], {
1034
+ "bsConfig": {
1035
+ "alias": "bsConfig";
1036
+ "required": false;
1037
+ };
1038
+ "minDate": {
1039
+ "alias": "minDate";
1040
+ "required": false;
1041
+ };
1042
+ "maxDate": {
1043
+ "alias": "maxDate";
1044
+ "required": false;
1045
+ };
1046
+ "isDisabled": {
1047
+ "alias": "isDisabled";
1048
+ "required": false;
1049
+ };
1050
+ "bsValue": {
1051
+ "alias": "bsValue";
1052
+ "required": false;
1053
+ };
1054
+ }, {
1055
+ "bsValueChange": "bsValueChange";
1056
+ }, never, never, true, never>;
1057
+ }
644
1058
  /**
645
1059
  * Pagination information
646
1060
  *
@@ -800,6 +1214,13 @@ export interface IDisplayDecimal {
800
1214
  * @interface IDisplayTableColumn
801
1215
  * @extends {TableColumn}
802
1216
  */
1217
+ /** Colonne de table (forme de TableColumn de @swimlane/ngx-datatable, dont le package ne dépend plus). */
1218
+ export interface TableColumn {
1219
+ name?: string;
1220
+ prop?: string | number;
1221
+ width?: number;
1222
+ [key: string]: any;
1223
+ }
803
1224
  export interface IDisplayTableColumn extends TableColumn {
804
1225
  /**
805
1226
  * Display informations for the current columns
@@ -893,6 +1314,12 @@ export declare class DatagridCellComponent<TData extends EntityViewModel> {
893
1314
  update: EventEmitter<any>;
894
1315
  viewModeTpl: ViewModeDirective;
895
1316
  editModeTpl: EditModeDirective;
1317
+ /**
1318
+ * Vrai quand la grille pilote elle-même le mode de la cellule (DataGridComponent : curseur
1319
+ * d'édition) : la cellule ne passe plus seule en édition au double clic, ni en lecture au
1320
+ * clic hors d'elle.
1321
+ */
1322
+ managed: boolean;
896
1323
  mode: 'view' | 'edit';
897
1324
  constructor(host: ElementRef, renderer: Renderer2);
898
1325
  private destroy;
@@ -921,6 +1348,14 @@ export declare class DatagridCellComponent<TData extends EntityViewModel> {
921
1348
  "alias": "isEditable";
922
1349
  "required": false;
923
1350
  };
1351
+ "managed": {
1352
+ "alias": "managed";
1353
+ "required": false;
1354
+ };
1355
+ "mode": {
1356
+ "alias": "mode";
1357
+ "required": false;
1358
+ };
924
1359
  }, {
925
1360
  "update": "update";
926
1361
  }, ["viewModeTpl", "editModeTpl"], never, false, never>;
@@ -1069,7 +1504,7 @@ export declare class DatagridCustomComponent<TData extends EntityViewModel> impl
1069
1504
  emitOnEnter(currentCell: DatagridCellComponent<TData>): void;
1070
1505
  updateEntity(event: any, prop: any): void;
1071
1506
  filterType: typeof FilterType;
1072
- bsConfig: Partial<BsDatepickerConfig>;
1507
+ bsConfig: Partial<DatepickerConfig>;
1073
1508
  viewModel: EntityViewModelWithFields<TData>;
1074
1509
  enableEdit(column: string, row: EntityViewModel): boolean;
1075
1510
  getHeaderStyle(colProperty: string): string;
@@ -1742,6 +2177,37 @@ export declare class LayoutContext {
1742
2177
  private entityKey;
1743
2178
  private selection;
1744
2179
  layoutService: LayoutService;
2180
+ /**
2181
+ * Clic droit hors de la grille dans l'écran (barre d'actions, barre de navigation du bas) : la grille
2182
+ * ouvre son menu, comme pour un clic droit sous sa dernière ligne.
2183
+ */
2184
+ readonly gridContextMenu$: Subject<MouseEvent>;
2185
+ /** Demande à la grille d'ouvrir son menu au point du clic droit. */
2186
+ openGridContextMenu(event: MouseEvent): void;
2187
+ /** Largeur sous laquelle l'écran est étroit (téléphone) : cartes, éditeur en plein écran. */
2188
+ static readonly NarrowWidth = 768;
2189
+ private readonly _cardMode$;
2190
+ private readonly _narrow$;
2191
+ private readonly _mobileEditorOpen$;
2192
+ /** Cartes choisies par l'utilisateur (bouton de la barre du bas). */
2193
+ readonly cardMode$: import("rxjs").Observable<boolean>;
2194
+ /** Écran étroit (téléphone). */
2195
+ readonly narrow$: import("rxjs").Observable<boolean>;
2196
+ /** Liste de cartes affichée à la place de la grille : choisie, ou écran étroit. */
2197
+ readonly cardDisplay$: import("rxjs").Observable<boolean>;
2198
+ /** Éditeur ouvert en plein écran (écran étroit). */
2199
+ readonly mobileEditorOpen$: import("rxjs").Observable<boolean>;
2200
+ get cardMode(): boolean;
2201
+ get narrow(): boolean;
2202
+ setCardMode(card: boolean): void;
2203
+ toggleCardMode(): void;
2204
+ /** Largeur de la fenêtre changée : écran étroit ou non ; l'éditeur plein écran se referme en grand écran. */
2205
+ updateScreenWidth(width?: number): void;
2206
+ /** Ouvre l'éditeur en plein écran (carte touchée sur un écran étroit). */
2207
+ openMobileEditor(): void;
2208
+ /** Referme l'éditeur plein écran : retour à la liste de cartes. */
2209
+ closeMobileEditor(): void;
2210
+ private static isNarrowScreen;
1745
2211
  private _propertyPanelState$;
1746
2212
  propertyPanelVisible$: import("rxjs").Observable<boolean>;
1747
2213
  setShowPropertyPanel(visible: boolean): void;
@@ -1848,17 +2314,56 @@ export declare class EditorTabComponent {
1848
2314
  declare namespace editor_tabset_component_d_exports {
1849
2315
  export { EditorTabSetComponent };
1850
2316
  }
1851
- export declare class EditorTabSetComponent {
1852
- constructor();
2317
+ /**
2318
+ * Onglets des formulaires de l'éditeur, au style des onglets de la barre du haut
2319
+ * (PageTabsComponent) : même police, même hauteur, même largeur. Seuls les onglets qui tiennent
2320
+ * entièrement dans la barre sont affichés ; les suivants sont masqués et listés dans un menu
2321
+ * déroulant, au bout de la barre. L'onglet actif reste toujours visible.
2322
+ */
2323
+ export declare class EditorTabSetComponent implements AfterViewInit, DoCheck, OnDestroy {
2324
+ private host;
2325
+ private cd;
2326
+ /** Largeur réservée au bouton du menu des onglets masqués, marges comprises (8 + 30 + 4). */
2327
+ private static readonly MoreButtonWidth;
2328
+ /** Espacement entre deux onglets (gap de la barre). */
2329
+ private static readonly Gap;
2330
+ constructor(host: ElementRef<HTMLElement>, cd: ChangeDetectorRef);
1853
2331
  sectionContext: SectionContext<any>;
1854
2332
  showNavs: boolean;
1855
2333
  pills: boolean;
1856
2334
  isVertical: boolean;
1857
2335
  tabs: QueryList<EditorTabComponent>;
2336
+ private strip;
2337
+ /** Onglets masqués faute de place, par indice. */
2338
+ overflowIndexes: Set<number>;
2339
+ /** Vrai quand le menu des onglets masqués est ouvert. */
2340
+ menuOpen: boolean;
2341
+ private resizeObserver;
2342
+ private tabsSubscription;
2343
+ private lastActive;
2344
+ ngAfterViewInit(): void;
2345
+ ngOnDestroy(): void;
1858
2346
  activate(tab: EditorTabComponent): void;
1859
2347
  onTabClick(tabIndex: number): void;
1860
2348
  activateByIndex(realIndex: number): void;
2349
+ /** Un seul onglet affiché (le formulaire, onglet crayon) : pas de barre d'onglets. */
2350
+ isNavHidden(): boolean;
1861
2351
  getNavClass(): string;
2352
+ isOverflow(index: number): boolean;
2353
+ toggleMenu(event: Event): void;
2354
+ onMenuClick(index: number): void;
2355
+ /** Un clic hors des onglets ferme le menu des onglets masqués. */
2356
+ onDocumentClick(event: MouseEvent): void;
2357
+ /** L'onglet actif a changé (section activée) : il doit rester visible. */
2358
+ ngDoCheck(): void;
2359
+ /** Après le rendu : répartition recalculée. */
2360
+ private refresh;
2361
+ /**
2362
+ * Répartit les onglets entre visibles et masqués. Les onglets masqués restent dans la page,
2363
+ * hors du flux et invisibles, pour que leur largeur reste mesurable. Disposition verticale :
2364
+ * aucun onglet masqué.
2365
+ */
2366
+ private layout;
1862
2367
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorTabSetComponent, never>;
1863
2368
  static ɵcmp: i0.ɵɵComponentDeclaration<EditorTabSetComponent, "alg-editor-tabset", never, {
1864
2369
  "sectionContext": {
@@ -2292,6 +2797,72 @@ export declare abstract class BaseComponent<TFilter extends FilterViewModel, TDa
2292
2797
  private CopyFilterProperties;
2293
2798
  protected readonly ppService: import("@dflat-core/web/core-ux").IPpService;
2294
2799
  private registerSelectColumnsAction;
2800
+ /**
2801
+ * Carte de la grille (affichage en cartes) : vue Carte liée à la vue Grille affichée, dont les
2802
+ * colonnes sont décrites par le serveur comme celles de la grille (GetGridColumnsFor) ; image par
2803
+ * défaut des éléments (GetEntityImages) quand la carte l'affiche.
2804
+ */
2805
+ private registerCardSource;
2806
+ /** Largeur de la fenêtre : affichage en cartes et éditeur plein écran sur un écran étroit. */
2807
+ onWindowResizeForCards(): void;
2808
+ /**
2809
+ * Menu « Affichage » des grilles : vues personnalisées de l'utilisateur (vue affichée cochée), choix
2810
+ * d'une autre vue (décocher revient à la vue par défaut) et « Modifier… », qui ouvre l'éditeur des
2811
+ * vues sur la vue affichée. Les colonnes d'une vue sont celles du serveur (GetGridColumns).
2812
+ */
2813
+ private registerViewChooser;
2814
+ /** Tri et filtre de la vue affichée, tels qu'enregistrés (repère de la vue modifiée). */
2815
+ private savedViewQueries;
2816
+ /** Tri et filtre en cours de la grille, en JSON (chaîne vide : aucun). */
2817
+ private currentViewQueries;
2818
+ /**
2819
+ * Tri ou filtre changés depuis le chargement de la vue. Une vue sans tri enregistré a le tri par
2820
+ * défaut de l'écran : ce tri-là ne la rend pas modifiée.
2821
+ */
2822
+ private viewQueriesModified;
2823
+ /**
2824
+ * Applique le tri et le filtre de la vue affichée. Au chargement de l'écran, un tri ou un filtre
2825
+ * déjà dans l'adresse (lien, retour) est gardé ; il sert alors de repère.
2826
+ */
2827
+ private applyCurrentViewQueries;
2828
+ private static parseSort;
2829
+ /**
2830
+ * Éditeur des vues personnalisées sur la vue donnée (à défaut la vue affichée), à l'onglet donné :
2831
+ * colonnes, ou filtres et tri ; le filtre reçoit les colonnes de la grille (types, valeurs des
2832
+ * types énumérés). « Appliquer » enregistre la vue et la grille la relit (gridSelectionConfirmed$).
2833
+ */
2834
+ private openViewEditor;
2835
+ /** Colonne de la fenêtre « Filtres et tri » : type d'après son affichage, valeurs d'un type énuméré. */
2836
+ private static filterColumnOf;
2837
+ private readonly hostElement;
2838
+ /** Ordre des colonnes déjà proposé à l'enregistrement : la question n'est reposée qu'après un nouveau déplacement. */
2839
+ private proposedColumnOrder;
2840
+ /** Colonnes affichées par la grille quand la vue y a été modifiée (déplacées, ajoutées, retirées). */
2841
+ private unsavedLayout;
2842
+ /** Vue modifiée dans la grille et pas encore proposée à l'enregistrement. */
2843
+ private unsavedColumnOrder;
2844
+ /**
2845
+ * Abandon de l'écran après un déplacement de colonnes (onglet fermé, autre onglet, autre écran) :
2846
+ * le service des vues propose d'enregistrer l'ordre des colonnes, à chaque fois.
2847
+ */
2848
+ private saveColumnOrderOnLeave;
2849
+ /**
2850
+ * Changement d'onglet : l'écran quitté n'est pas détruit (il est gardé pour le retour), la
2851
+ * question est donc posée au début de la navigation vers un autre écran, si cet écran est celui
2852
+ * affiché (un écran gardé d'un autre onglet n'est plus dans la page). Une navigation qui reste
2853
+ * sur l'écran (filtre dans l'adresse) ne pose pas la question.
2854
+ */
2855
+ private watchLeaveForColumnOrder;
2856
+ /** Écran affiché dans la page (et non gardé, détaché, pour un autre onglet). */
2857
+ private isDisplayed;
2858
+ /**
2859
+ * Fermeture ou rechargement du navigateur avec un ordre de colonnes non enregistré : le navigateur
2860
+ * demande confirmation (sa propre fenêtre ; une page ne peut pas en afficher d'autre à ce moment).
2861
+ * Complète l'écouteur de DflatBaseComponent (un seul écouteur par événement).
2862
+ */
2863
+ unloadNotification(event: any): void;
2864
+ /** Oublie les colonnes choisies pour l'écran ouvert et relit celles de la vue sur le serveur. */
2865
+ private resetColumns;
2295
2866
  protected openColumnSelector(): void;
2296
2867
  protected getPpMetaEntityKey(): string | null;
2297
2868
  protected getPpConfig(): {
@@ -2328,12 +2899,12 @@ export declare abstract class BaseComponent<TFilter extends FilterViewModel, TDa
2328
2899
  }
2329
2900
  export declare class FacadeModalService {
2330
2901
  private modalService;
2331
- constructor(modalService: BsModalService);
2332
- openSelectorModal<TData, TFilter>(selectionTitle?: string, selectionComponent?: Type<any>, initFn?: (component: BaseComponent<TData, TFilter> | NewEditorComponent<TData>) => void, modalOptions?: ModalOptions, modalConfig?: ModalConfig): Observable<TData[]>;
2902
+ constructor(modalService: DflatModalService);
2903
+ openSelectorModal<TData, TFilter>(selectionTitle?: string, selectionComponent?: Type<any>, initFn?: (component: BaseComponent<TData, TFilter> | NewEditorComponent<TData>) => void, modalOptions?: DflatModalOptions, modalConfig?: ModalConfig): Observable<TData[]>;
2333
2904
  openComponentModal<TData, TFilter>(selectionTitle?: string, selectionComponent?: Type<any> // BaseComponent<any,any>,
2334
- , initFn?: (component: BaseComponent<TData, TFilter> | NewEditorComponent<TData>) => void, callback?: (component: IIsCancel | BaseComponent<TData, TFilter>) => void, modalOptions?: ModalOptions, modalConfig?: ModalConfig): Observable<any>;
2335
- openEditorModal<TData extends EntityViewModel>(creationTitle?: string, creationComponent?: Type<any>, initFn?: (comp: NewEditorComponent<TData>) => void, modalConfig?: ModalOptions): Observable<NewEditorComponent<TData>>;
2336
- getSelectorModal(modalOptions?: ModalOptions<DialogComponentParameter>, dialogOptions?: IDialogOptions, modalConfig?: ModalConfig): BsModalRef;
2905
+ , initFn?: (component: BaseComponent<TData, TFilter> | NewEditorComponent<TData>) => void, callback?: (component: IIsCancel | BaseComponent<TData, TFilter>) => void, modalOptions?: DflatModalOptions, modalConfig?: ModalConfig): Observable<any>;
2906
+ openEditorModal<TData extends EntityViewModel>(creationTitle?: string, creationComponent?: Type<any>, initFn?: (comp: NewEditorComponent<TData>) => void, modalConfig?: DflatModalOptions): Observable<NewEditorComponent<TData>>;
2907
+ getSelectorModal(modalOptions?: DflatModalOptions<DialogComponentParameter>, dialogOptions?: IDialogOptions, modalConfig?: ModalConfig): DflatModalRef;
2337
2908
  static ɵfac: i0.ɵɵFactoryDeclaration<FacadeModalService, never>;
2338
2909
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
2339
2910
  }
@@ -2428,7 +2999,6 @@ declare namespace property_grid_component_d_exports {
2428
2999
  export declare class PropertyGridComponent<TData extends EntityViewModel> implements AfterViewInit {
2429
3000
  private modalService;
2430
3001
  private dataService;
2431
- private localeService;
2432
3002
  private toastrService;
2433
3003
  elementRef: ElementRef;
2434
3004
  validateAfterEachChange: boolean;
@@ -2459,8 +3029,8 @@ export declare class PropertyGridComponent<TData extends EntityViewModel> implem
2459
3029
  selected: TData[];
2460
3030
  isDirty: boolean;
2461
3031
  filterType: typeof FilterType;
2462
- bsConfig: Partial<BsDatepickerConfig>;
2463
- bsTimeConfig: Partial<BsDatepickerConfig>;
3032
+ bsConfig: Partial<DatepickerConfig>;
3033
+ bsTimeConfig: Partial<DatepickerConfig>;
2464
3034
  bsValue: Date;
2465
3035
  locale: string;
2466
3036
  selectionHelper: DictionnaryWrapper<any>;
@@ -2482,7 +3052,7 @@ export declare class PropertyGridComponent<TData extends EntityViewModel> implem
2482
3052
  fieldSection: Section[];
2483
3053
  get ViewModel(): EntityViewModelWithFields<TData>;
2484
3054
  set ViewModel(value: EntityViewModelWithFields<TData>);
2485
- constructor(modalService: ModalService, dataService: DataService, localeService: BsLocaleService, toastrService: ToastrService, elementRef: ElementRef);
3055
+ constructor(modalService: ModalService, dataService: DataService, toastrService: ToastrService, elementRef: ElementRef);
2486
3056
  ngAfterViewInit(): void;
2487
3057
  buildForm(): void;
2488
3058
  changeActivTab(tabIndex: number): void;
@@ -2687,6 +3257,14 @@ export declare abstract class SelectorMapperServiceBase {
2687
3257
  protected modalService: ModalService;
2688
3258
  private readonly injector;
2689
3259
  constructor(modalService: ModalService);
3260
+ /**
3261
+ * Titre d'une fenêtre de sélection : « Sélectionner : <titre> » (le titre seul est déjà celui de
3262
+ * la liste) ; un titre qui commence par « Sélection » ou par un verbe d'action (« Ajouter ») est
3263
+ * gardé tel quel.
3264
+ */
3265
+ static selectionTitle(title: string | null | undefined): string | null | undefined;
3266
+ /** Titre qui décrit déjà l'action (« Sélectionner… », « Ajouter… »), et non le seul nom de la liste. */
3267
+ static isActionTitle(title: string | null | undefined): boolean;
2690
3268
  getInputSelectorContext(key: string, title: string, filter?: FilterViewModel, params?: any): IInputSelectorContext;
2691
3269
  /**
2692
3270
  * Composants et recherche du sélecteur de l'entité de clé `key` : par défaut, le sélecteur
@@ -2702,12 +3280,12 @@ export declare abstract class SelectorMapperServiceBase {
2702
3280
  };
2703
3281
  getDialogOptions(context: IInputSelectorContext, choice: ContextChoice): IDialogOptions;
2704
3282
  openSelectionModal(modalEntityKey: string, modalTitle: string, filter: FilterViewModel): Observable<any>;
2705
- openEditionModal<TData extends EntityViewModel>(modalEntityKey: string, modalTitle: string, dataInit?: TData, callBackAction?: ((component?: BaseEditorComponent<TData>) => void), forceDataInit?: boolean, modalConfig?: ModalOptions): Observable<BaseEditorComponent<TData>>;
2706
- openSelectorModal<TData, TFilter>(modalEntityKey: string, modalTitle: string, filter: FilterViewModel, initFn?: (component: BaseComponent<TData, TFilter>) => void, modalOptions?: ModalOptions, modalConfig?: ModalConfig): Observable<TData[]>;
3283
+ openEditionModal<TData extends EntityViewModel>(modalEntityKey: string, modalTitle: string, dataInit?: TData, callBackAction?: ((component?: BaseEditorComponent<TData>) => void), forceDataInit?: boolean, modalConfig?: DflatModalOptions): Observable<BaseEditorComponent<TData>>;
3284
+ openSelectorModal<TData, TFilter>(modalEntityKey: string, modalTitle: string, filter: FilterViewModel, initFn?: (component: BaseComponent<TData, TFilter>) => void, modalOptions?: DflatModalOptions, modalConfig?: ModalConfig): Observable<TData[]>;
2707
3285
  openComponentModal<TData, TFilter>(selectionTitle?: string, selectionComponent?: Type<any> // BaseComponent<any,any>,
2708
- , initFn?: (component: BaseComponent<TData, TFilter>) => void, callback?: (component: IIsCancel | BaseComponent<TData, TFilter>) => void, modalOptions?: ModalOptions, modalConfig?: ModalConfig): Observable<any>;
2709
- openEditorModal<TData extends EntityViewModel>(creationTitle?: string, creationComponent?: Type<any>, initFn?: (comp: NewEditorComponent<TData>) => void, modalConfig?: ModalOptions): Observable<NewEditorComponent<TData>>;
2710
- getSelectorModal(modalOptions?: ModalOptions<DialogComponentParameter>, dialogOptions?: IDialogOptions, modalConfig?: ModalConfig): BsModalRef;
3286
+ , initFn?: (component: BaseComponent<TData, TFilter>) => void, callback?: (component: IIsCancel | BaseComponent<TData, TFilter>) => void, modalOptions?: DflatModalOptions, modalConfig?: ModalConfig): Observable<any>;
3287
+ openEditorModal<TData extends EntityViewModel>(creationTitle?: string, creationComponent?: Type<any>, initFn?: (comp: NewEditorComponent<TData>) => void, modalConfig?: DflatModalOptions): Observable<NewEditorComponent<TData>>;
3288
+ getSelectorModal(modalOptions?: DflatModalOptions<DialogComponentParameter>, dialogOptions?: IDialogOptions, modalConfig?: ModalConfig): DflatModalRef;
2711
3289
  }
2712
3290
  declare class LogService {
2713
3291
  constructor();
@@ -2728,10 +3306,10 @@ export declare class ActionService {
2728
3306
  constructor(modalService: ModalService, actionDataService: ActionDataService, mqService: NotificationMqService, fileService: FilesDataService, logService: LogService, extendedActionComponentType: Type<ExtendedActionComponent>);
2729
3307
  guid: Guid;
2730
3308
  fileId: number;
2731
- firstModalRef: BsModalRef | undefined;
3309
+ firstModalRef: DflatModalRef | undefined;
2732
3310
  entityNotificationSubscription: Subscription | undefined;
2733
3311
  requestNotificationSubscription: Subscription | undefined;
2734
- logmodal: BsModalRef | undefined;
3312
+ logmodal: DflatModalRef | undefined;
2735
3313
  setIsLoading(value: boolean): void;
2736
3314
  executeExtendedAction(actionDescriptor: ActionDescriptor, entityKey: string, entityIds: number[]): void;
2737
3315
  executeExtendedActionCallBack(component: ExtendedActionComponent): void;
@@ -2913,7 +3491,7 @@ export declare class DialogComponentParameter implements IDialogComponentPameter
2913
3491
  constructor();
2914
3492
  }
2915
3493
  export declare class DialogComponent implements AfterViewInit, OnDestroy, IDialogComponentPameter, IIsCancel, OnInit {
2916
- bsModalRef: BsModalRef;
3494
+ bsModalRef: DflatModalRef;
2917
3495
  private cd;
2918
3496
  private extendedActionComponentType;
2919
3497
  insertionPoint: InsertionDirective;
@@ -2932,7 +3510,7 @@ export declare class DialogComponent implements AfterViewInit, OnDestroy, IDialo
2932
3510
  private readonly _onClose;
2933
3511
  onClose: import("rxjs").Observable<any>;
2934
3512
  isInvalid: boolean;
2935
- constructor(bsModalRef: BsModalRef, cd: ChangeDetectorRef, extendedActionComponentType: Type<ExtendedActionComponent>);
3513
+ constructor(bsModalRef: DflatModalRef, cd: ChangeDetectorRef, extendedActionComponentType: Type<ExtendedActionComponent>);
2936
3514
  ngOnInit(): void;
2937
3515
  ngAfterViewInit(): void;
2938
3516
  ngOnDestroy(): void;
@@ -2957,7 +3535,7 @@ export declare class ModalStateService {
2957
3535
  /**
2958
3536
  * The last opened confirmation modal
2959
3537
  */
2960
- modal: BsModalRef;
3538
+ modal: DflatModalRef;
2961
3539
  /**
2962
3540
  * The template containing the confirmation modal component
2963
3541
  */
@@ -2966,7 +3544,7 @@ export declare class ModalStateService {
2966
3544
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
2967
3545
  }
2968
3546
  export declare class ModalService {
2969
- modalService: BsModalService;
3547
+ modalService: DflatModalService;
2970
3548
  private state;
2971
3549
  injector: Injector;
2972
3550
  modalConfig: {
@@ -2975,14 +3553,14 @@ export declare class ModalService {
2975
3553
  keyboard: boolean;
2976
3554
  ignoreBackdropClick: boolean;
2977
3555
  };
2978
- constructor(modalService: BsModalService, state: ModalStateService, injector: Injector);
3556
+ constructor(modalService: DflatModalService, state: ModalStateService, injector: Injector);
2979
3557
  openTemplate(options: IModalOptions): Promise<any>;
2980
3558
  openComponent<TComponent>(component: any, modalConfig?: any): TComponent;
2981
3559
  openComponentWithState(component: any, modalConfig?: any, initialState?: any): any;
2982
- openComponentCustomModal(modalConfig?: ModalOptions<DialogComponentParameter>, dialogOptions?: IDialogOptions, showButtons?: boolean, canClose?: boolean): BsModalRef;
2983
- openComponentCustom(modalConfig?: ModalOptions, dialogOptions?: IDialogOptions, showButtons?: boolean, canClose?: boolean): Observable<any>;
2984
- openComponentModal(modalConfig?: ModalOptions, dialogOptions?: IDialogOptions, showButtons?: boolean, canClose?: boolean): BsModalRef;
2985
- openComponentSimple(modalConfig?: any, dialogOptions?: IDialogOptions, showButtons?: boolean): BsModalRef;
3560
+ openComponentCustomModal(modalConfig?: DflatModalOptions<DialogComponentParameter>, dialogOptions?: IDialogOptions, showButtons?: boolean, canClose?: boolean): DflatModalRef;
3561
+ openComponentCustom(modalConfig?: DflatModalOptions, dialogOptions?: IDialogOptions, showButtons?: boolean, canClose?: boolean): Observable<any>;
3562
+ openComponentModal(modalConfig?: DflatModalOptions, dialogOptions?: IDialogOptions, showButtons?: boolean, canClose?: boolean): DflatModalRef;
3563
+ openComponentSimple(modalConfig?: any, dialogOptions?: IDialogOptions, showButtons?: boolean): DflatModalRef;
2986
3564
  confirmModal(text?: string, actionCallback?: () => any, isCancelVisible?: boolean): Observable<ConfirmOptions>;
2987
3565
  close(modal?: any): void;
2988
3566
  static ɵfac: i0.ɵɵFactoryDeclaration<ModalService, never>;
@@ -3538,14 +4116,14 @@ declare namespace confirm_modal_component_d_exports {
3538
4116
  export { ConfirmModalComponent };
3539
4117
  }
3540
4118
  export declare class ConfirmModalComponent {
3541
- bsModalRef: BsModalRef;
4119
+ bsModalRef: DflatModalRef;
3542
4120
  severityClass: string;
3543
4121
  subject: Subject<ConfirmOptions>;
3544
4122
  text: string;
3545
4123
  callBackAction: ((value: ConfirmOptions) => void);
3546
4124
  isCancelVisible: boolean;
3547
4125
  ConfirmOptions: ConfirmOptions;
3548
- constructor(bsModalRef: BsModalRef);
4126
+ constructor(bsModalRef: DflatModalRef);
3549
4127
  action(value: ConfirmOptions): void;
3550
4128
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmModalComponent, never>;
3551
4129
  static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmModalComponent, "alg-confirm-modal", never, {}, {}, never, never, false, never>;
@@ -3580,7 +4158,7 @@ export declare class SelectionStyler<TData extends EntityViewModel> {
3580
4158
  declare namespace data_grid_component_d_exports {
3581
4159
  export { DataGridComponent };
3582
4160
  }
3583
- export declare class DataGridComponent<TData extends EntityViewModel> implements OnInit, AfterViewInit {
4161
+ export declare class DataGridComponent<TData extends EntityViewModel> implements OnInit, AfterViewInit, DoCheck {
3584
4162
  private elRef;
3585
4163
  private renderer;
3586
4164
  private imageService;
@@ -3588,7 +4166,10 @@ export declare class DataGridComponent<TData extends EntityViewModel> implements
3588
4166
  private ngZone;
3589
4167
  protected entityFacadeRegistryService: EntityFacadeRegistryService;
3590
4168
  validationService: ValidationService;
3591
- constructor(elRef: ElementRef, renderer: Renderer2, imageService: ImageService, cd: ChangeDetectorRef, ngZone: NgZone, entityFacadeRegistryService: EntityFacadeRegistryService, validationService: ValidationService);
4169
+ private selectorMapperService;
4170
+ private actionService;
4171
+ private authService;
4172
+ constructor(elRef: ElementRef, renderer: Renderer2, imageService: ImageService, cd: ChangeDetectorRef, ngZone: NgZone, entityFacadeRegistryService: EntityFacadeRegistryService, validationService: ValidationService, selectorMapperService: SelectorMapperServiceBase, actionService: ActionService, authService: AuthService);
3592
4173
  datagridClass: string;
3593
4174
  rowRefs: QueryList<ElementRef>;
3594
4175
  thHeaders: QueryList<ElementRef>;
@@ -3615,6 +4196,15 @@ export declare class DataGridComponent<TData extends EntityViewModel> implements
3615
4196
  ngAfterViewInit(): void;
3616
4197
  private initViewReady;
3617
4198
  private bindColumns;
4199
+ /** Identifiants des lignes sélectionnées, recalculés à chaque détection de changements (ngDoCheck). */
4200
+ private selectedIds;
4201
+ ngDoCheck(): void;
4202
+ /**
4203
+ * Ligne sélectionnée : liée dans le gabarit (ligne et cellules), pour que la sélection reste
4204
+ * affichée quand les cellules sont recréées (colonnes déplacées, autre vue). Les classes posées
4205
+ * par le SelectionStyler, seules, se perdaient avec les cellules recréées.
4206
+ */
4207
+ isRowSelected(row: TData): boolean;
3618
4208
  private bindSelection;
3619
4209
  private bindRowRendering;
3620
4210
  private bindStyleUpdates;
@@ -3635,47 +4225,298 @@ export declare class DataGridComponent<TData extends EntityViewModel> implements
3635
4225
  getHeaderLabel(column: ColumnDescriptor): string;
3636
4226
  getEnumImageUrl(row: TData, column: ColumnDescriptor): string;
3637
4227
  getImageUrl(row: TData, column: ColumnDescriptor): string;
3638
- private getNextEditableColumn;
3639
- private getPrevEditableColumn;
3640
- private getFirstEditableColumn;
3641
- private getLastEditableColumn;
3642
- private getNextEditableRow;
3643
- private getPrevEditableRow;
3644
- private moveToCell;
3645
- onKeyDown(event: KeyboardEvent): void;
3646
- updateSelected(id: number): void;
4228
+ /** Cellule du curseur d'édition ; aucune hors édition. */
4229
+ editCursor: {
4230
+ row: TData;
4231
+ column: ColumnDescriptor;
4232
+ } | undefined;
4233
+ /** Formulaires des lignes éditées dans la grille, par identifiant de ligne. */
3647
4234
  private rowForms;
3648
- getRowForm(row: any): FormGroup;
3649
- emitOnEnter(currentCell: DatagridCellComponent<TData>): void;
3650
- updateEntity(event: any, prop: any): void;
4235
+ /**
4236
+ * Champ du formulaire qui édite la colonne, d'après la propriété liée à la colonne : même
4237
+ * propriété, sinon champ dont la colonne affiche le libellé (ExportPropertyName, ou
4238
+ * DisplayMember d'une liste).
4239
+ */
4240
+ getColumnField(column: ColumnDescriptor): FieldDescriptor | undefined;
4241
+ /** Copies d'une ligne des zones de texte du formulaire, par propriété. */
4242
+ private singleLineFields;
4243
+ /**
4244
+ * Champ qui édite la cellule : seulement celui du formulaire (getColumnField). Une colonne
4245
+ * sans éditeur dans le formulaire n'est pas modifiable dans la grille.
4246
+ */
4247
+ getEditField(column: ColumnDescriptor): FieldDescriptor | undefined;
4248
+ /**
4249
+ * Zone de texte du formulaire (plusieurs lignes, valeur transmise seulement à la sortie du
4250
+ * champ) : éditée dans la grille comme une saisie d'une ligne, transmise à chaque frappe.
4251
+ */
4252
+ private getSingleLineField;
4253
+ /** Liste ou sélecteur : la valeur éditée n'est pas celle qu'affiche la grille. */
4254
+ private static isListField;
4255
+ /** Vrai si la cellule a un éditeur : champ modifiable, ligne modifiable. */
4256
+ canEditCell(row: TData, column: ColumnDescriptor): boolean;
4257
+ isCursorCell(row: TData, column: ColumnDescriptor): boolean;
4258
+ /** La cellule du curseur affiche l'éditeur de son champ, s'il en a un. */
4259
+ showEditor(row: TData, column: ColumnDescriptor): boolean;
4260
+ cellId(row: TData, column: ColumnDescriptor): string;
4261
+ /** Formulaire de la ligne, avec un contrôle par champ des colonnes. */
4262
+ getRowForm(row: TData): FormGroup;
4263
+ onCellDblClick(row: TData, column: ColumnDescriptor): void;
4264
+ /** En édition, un clic sur une cellule y déplace le curseur. */
4265
+ onCellClick(row: TData, column: ColumnDescriptor): void;
4266
+ /** Place le curseur d'édition sur la cellule. */
4267
+ startEdit(row: TData, column: ColumnDescriptor): void;
4268
+ /** Quitte l'édition : les valeurs saisies sont gardées, la plage de cellules est annulée. */
4269
+ stopEdit(): void;
4270
+ /** Annule la plage de cellules sélectionnée. */
4271
+ private clearRange;
4272
+ private setCursor;
4273
+ /** Déplace le curseur : les lignes et colonnes hors du tableau sont ignorées. */
4274
+ private moveCursor;
4275
+ /** Après le rendu : focus dans l'éditeur de la cellule, sinon sur la grille (touches du curseur). */
4276
+ private focusCursor;
4277
+ /** Touches du curseur d'édition, comme dans Excel. */
4278
+ onGridKeyDown(event: KeyboardEvent): void;
4279
+ /**
4280
+ * Vrai si la flèche gauche (début) ou droite (fin) quitte la cellule : hors d'une zone de
4281
+ * saisie, texte entièrement sélectionné, ou curseur de texte au bord de la saisie.
4282
+ */
4283
+ private static caretAtEdge;
4284
+ /** Un clic hors de la grille et de ses fenêtres (liste, calendrier, sélecteur) quitte l'édition. */
4285
+ onDocumentMouseDown(event: MouseEvent): void;
4286
+ /**
4287
+ * Valeur changée dans la grille : appliquée à l'entité de la ligne par le service d'édition
4288
+ * (ChangeDetectionContext.updateEntity). La ligne modifiée est sélectionnée, le formulaire suit.
4289
+ */
4290
+ onCellChanged(row: TData, event: PropertyEditorEvent): void;
4291
+ /**
4292
+ * Valeur changée d'une liste ou d'un sélecteur, depuis la grille ou le formulaire : la colonne
4293
+ * qui en affiche le libellé est mise à jour sur les lignes sélectionnées (sur la ligne collée
4294
+ * pendant un collé depuis Excel), et sur leur copie modifiée.
4295
+ */
4296
+ private applyDisplayValue;
4297
+ /** Libellé de la valeur choisie dans une liste ou un sélecteur ; undefined s'il est inconnu. */
4298
+ private static displayLabel;
4299
+ /** Cellule de départ et cellule de fin de la plage (indices de ligne et de colonne). */
4300
+ rangeAnchor: {
4301
+ r: number;
4302
+ c: number;
4303
+ } | undefined;
4304
+ rangeEnd: {
4305
+ r: number;
4306
+ c: number;
4307
+ } | undefined;
4308
+ private rangeDragging;
4309
+ /** Ligne en cours de collé : reçoit le libellé des listes (applyDisplayValue). */
4310
+ private pastedRow;
4311
+ private cellPosition;
4312
+ /** Limites de la plage, ou undefined sans plage. */
4313
+ private getRangeArea;
4314
+ /** Cellule dans une plage de plusieurs cellules (une seule cellule : cadre du curseur). */
4315
+ isInRange(r: number, c: number): boolean;
4316
+ onCellMouseDown(r: number, c: number, event: MouseEvent): void;
4317
+ onCellMouseEnter(r: number, c: number, event?: MouseEvent): void;
4318
+ /**
4319
+ * Bouton relâché : fin du cliqué-glissé de la plage et du redimensionnement d'une colonne. Un seul
4320
+ * écouteur par événement : Angular ne garde que le dernier @HostListener d'un même événement.
4321
+ */
4322
+ onDocumentMouseUp(): void;
4323
+ /** Ctrl+C : la plage en texte tabulé ; le texte sélectionné d'un éditeur garde la copie normale. */
4324
+ onCopy(event: ClipboardEvent): void;
4325
+ /** Ctrl+V : texte tabulé collé à partir du coin haut gauche de la plage. */
4326
+ onPaste(event: ClipboardEvent): void;
4327
+ /** Applique les valeurs collées ; les sélecteurs cherchent l'élément dont le libellé est collé. */
4328
+ private pasteCells;
4329
+ /** Valeur collée dans une cellule : contrôle de la ligne, puis service d'édition. */
4330
+ private pasteValue;
4331
+ /**
4332
+ * Élément d'un sélecteur dont le libellé (ModalPropertyName) est le texte collé : null pour un
4333
+ * texte vide, undefined s'il n'est pas trouvé.
4334
+ */
4335
+ private findSelectorItem;
4336
+ /** Texte d'une cellule copiée vers Excel. */
4337
+ private static toClipboardText;
4338
+ /** Texte tabulé copié d'Excel : lignes de cellules (cellules entre guillemets comprises). */
4339
+ private static parseClipboardText;
4340
+ /** Valeur d'un texte collé pour l'éditeur du champ ; undefined si elle n'est pas reconnue. */
4341
+ private static fromClipboardText;
4342
+ private static hasTextSelection;
4343
+ /** Lignes modifiées depuis le formulaire : leurs valeurs passent dans les éditeurs de la grille. */
4344
+ private patchRowForms;
4345
+ updateSelected(id: number): void;
3651
4346
  toggleDetail(row: TData): void;
3652
4347
  addFilterQuery(): void;
3653
4348
  removeFilterQuery(index: number): void;
3654
4349
  handleFilterChanged(event: any, filterRow: FilterRow, propertyName?: string): void;
3655
4350
  validateFilterChanged(event: any, filterRow: FilterRow, propertyName?: string): void;
3656
- contextMenuVisible: boolean;
3657
- contextMenuPosition: {
4351
+ /**
4352
+ * Clic droit sur une cellule : menu de sa colonne, à la position de la souris. La ligne est
4353
+ * sélectionnée si elle ne l'est pas déjà, pour que les actions du menu portent sur elle.
4354
+ */
4355
+ openContextMenu(event: MouseEvent, row: TData, column: ColumnDescriptor): void;
4356
+ /**
4357
+ * Clic droit ailleurs que sur une cellule (sous la dernière ligne, dans une grille vide) : menu de la
4358
+ * colonne dont l'en-tête est au-dessus du point cliqué, à défaut de la dernière colonne ; sans ligne,
4359
+ * le menu ne propose pas de filtrer sur une valeur.
4360
+ */
4361
+ openEmptyAreaContextMenu(event: MouseEvent): void;
4362
+ /** Clic droit dans l'en-tête (colonne vide de fin) : menu de la colonne donnée. */
4363
+ openHeaderContextMenu(event: MouseEvent, column: ColumnDescriptor): void;
4364
+ closeContextMenu(): void;
4365
+ /** Menu ouvert d'une colonne, sa position à l'écran et son sous-menu ouvert. */
4366
+ headerMenu: {
4367
+ column: ColumnDescriptor;
3658
4368
  x: number;
3659
4369
  y: number;
3660
- };
3661
- selectedCell: DatagridCellComponent<TData>;
3662
- openContextMenu(event: MouseEvent, cell: DatagridCellComponent<TData>): void;
3663
- copyValue(): void;
3664
- editValue(): void;
3665
- closeContextMenu(): void;
3666
- getSelectedValue(): any;
3667
- searchValue(): void;
4370
+ /** Ligne de la cellule (clic droit sur une cellule), pour filtrer sur sa valeur. */
4371
+ row?: TData;
4372
+ submenu?: 'display' | 'columns';
4373
+ submenuLeft?: boolean;
4374
+ submenuUp?: boolean;
4375
+ ready?: boolean;
4376
+ } | undefined;
4377
+ /** Actions de l'écran (panneau des actions), proposées dans le menu des colonnes. */
4378
+ actions: Action[];
4379
+ /** Colonne déplacée, colonne survolée, et côté où la poser. */
4380
+ draggedColumn: string | undefined;
4381
+ dropColumn: string | undefined;
4382
+ dropBefore: boolean;
4383
+ private static readonly NumericTypes;
4384
+ toggleHeaderMenu(column: ColumnDescriptor, event: MouseEvent): void;
4385
+ /**
4386
+ * Ouvre le menu de la colonne au point donné, puis, une fois affiché, le garde entier dans la
4387
+ * grille : décalé à gauche s'il dépasse à droite, ouvert vers le haut s'il dépasse en bas.
4388
+ */
4389
+ private openColumnMenu;
4390
+ /**
4391
+ * Valeur de filtre de la cellule du menu (clic droit sur une cellule d'une colonne filtrable) :
4392
+ * la valeur elle-même, 1 ou 0 pour un booléen, le jour suivi de * pour une date ; undefined sans
4393
+ * cellule, sans valeur ou pour une colonne non filtrable.
4394
+ */
4395
+ cellFilterValue(): string | undefined;
4396
+ /** Texte de la cellule du menu, tel qu'affiché dans l'option « Filtrer sur ». */
4397
+ cellFilterLabel(): string;
4398
+ /**
4399
+ * « Filtrer sur cette valeur » : condition de la colonne dans la première ligne des filtres composés,
4400
+ * créée si elle n'existe pas.
4401
+ */
4402
+ filterOnCell(): void;
4403
+ /**
4404
+ * Zone où garder le menu : la grille, dans la limite de la fenêtre. Une grille trop petite pour
4405
+ * le menu (peu de lignes) laisse la place à la fenêtre entière.
4406
+ */
4407
+ private menuBounds;
4408
+ /** Place le menu ouvert au point (x, y) pour qu'il tienne entier dans la grille. */
4409
+ private fitColumnMenu;
4410
+ setSubmenu(submenu: 'display' | 'columns' | undefined): void;
4411
+ /** Action faite dans le menu « Affichage » (alg-grid-view-menu) : menu fermé. */
4412
+ closeViewMenu(): void;
4413
+ /** Vues ou colonnes chargées dans le menu « Affichage » : sous-menu replacé dans la grille. */
4414
+ onViewMenuLoaded(): void;
4415
+ /**
4416
+ * Sous-menu « Fonctions » : à droite du menu, ou à gauche s'il dépasse de la grille ; vers le bas,
4417
+ * ou vers le haut s'il n'y a pas la place en dessous.
4418
+ */
4419
+ private fitSubmenu;
4420
+ /** Actions visibles de l'écran, comme dans le panneau des actions. */
4421
+ get visibleActions(): Action[];
4422
+ getActionImageUrl(icon: string): string;
4423
+ /**
4424
+ * Action choisie dans le menu : exécutée comme depuis le panneau des actions (action étendue
4425
+ * par le service des actions, sinon par la façade), sur les lignes sélectionnées.
4426
+ */
4427
+ executeMenuAction(a: Action, disabled: boolean): void;
4428
+ private readonly modalService;
4429
+ /**
4430
+ * Tri personnalisé : fenêtre standard des popups (DialogComponent), avec les niveaux du tri en
4431
+ * cours (à défaut la colonne du menu) ; « Appliquer » trie la grille.
4432
+ */
4433
+ openCustomSort(): void;
4434
+ closeHeaderMenu(): void;
4435
+ onWindowChange(): void;
4436
+ /** Tri choisi dans le menu ; le tri déjà en cours (même colonne, même sens) est annulé. */
4437
+ sortColumn(direction: 'asc' | 'desc'): void;
4438
+ /** Fonctions d'agrégation proposées selon le type de la colonne. */
4439
+ getAggregationOptions(column: ColumnDescriptor): string[];
4440
+ aggregationLabel(op: string): string;
4441
+ /** Fonction d'agrégation de la colonne du menu ; null la retire. */
4442
+ aggregateColumn(op: string | null): void;
4443
+ /** Poignée enfoncée : colonne et point de départ, avant que la souris ait assez bougé. */
4444
+ private pendingDrag;
4445
+ /** Copie de la colonne déplacée (en-tête et cellules visibles), qui suit la souris horizontalement. */
4446
+ private dragGhost;
4447
+ private static readonly DragThreshold;
4448
+ private static readonly DraggingBodyClass;
4449
+ private static readonly DropIndicatorWidth;
4450
+ /** Position à l'écran du trait de l'emplacement visé. */
4451
+ dropIndicator: {
4452
+ left: number;
4453
+ top: number;
4454
+ height: number;
4455
+ } | undefined;
4456
+ onHeaderMouseDown(column: ColumnDescriptor, event: MouseEvent): void;
4457
+ /** Souris déplacée pendant un déplacement de colonne : emplacement visé, avant ou après la colonne survolée. */
4458
+ private onHeaderDragMove;
4459
+ /** En-tête affiché d'une colonne (identifiant <guid>-col-<propriété>). */
4460
+ private headerCell;
4461
+ /** Partie visible du tableau à l'écran : du haut de l'en-tête au bas des lignes affichées. */
4462
+ private visibleTableArea;
4463
+ /**
4464
+ * Copie de la colonne déplacée, au-dessus de la page : son en-tête (intitulé et lignes de filtre)
4465
+ * et ses cellules visibles, aux mêmes hauteurs que dans le tableau. Le conteneur et le tableau
4466
+ * sont recopiés sans leur contenu, pour que les cellules copiées gardent le style de la grille.
4467
+ */
4468
+ private createDragGhost;
4469
+ private removeDragGhost;
4470
+ /** Bouton relâché : fin du déplacement (l'ordre des colonnes a été appliqué au fil du déplacement). */
4471
+ onHeaderDragEnd(_drop?: boolean): void;
4472
+ /** Largeur choisie par colonne (propriété), en pixels. */
4473
+ columnWidths: Record<string, number>;
4474
+ private resizing;
4475
+ private static readonly MinColumnWidth;
4476
+ colWidth(column: ColumnDescriptor): number | null;
4477
+ startResize(column: ColumnDescriptor, event: MouseEvent): void;
4478
+ /**
4479
+ * Souris déplacée : redimensionnement ou déplacement d'une colonne. Un seul écouteur par événement :
4480
+ * Angular ne garde que le dernier @HostListener d'un même événement.
4481
+ */
4482
+ onResizeMove(event: MouseEvent): void;
4483
+ /** Fin du redimensionnement d'une colonne (appelée par onDocumentMouseUp). */
4484
+ private onResizeEnd;
4485
+ /** Double clic sur le bord de l'en-tête : largeur ajustée au contenu de la colonne. */
4486
+ autoFitColumn(column: ColumnDescriptor, event: MouseEvent): void;
4487
+ /** Index de la dernière colonne figée, ou undefined. */
4488
+ frozenUntil: number | undefined;
4489
+ /** Position gauche de chaque colonne figée (en-tête de l'état de ligne compris). */
4490
+ private frozenLefts;
4491
+ columnIndex(column: ColumnDescriptor): number;
4492
+ isFrozen(index: number): boolean;
4493
+ frozenLeft(index: number): number | null;
4494
+ /** Colonne du menu figée ou libérée (la colonne du menu déjà dernière figée : libérer). */
4495
+ toggleFrozen(): void;
4496
+ unfreezeColumns(): void;
4497
+ /** Positions des colonnes figées, mesurées après le rendu. */
4498
+ private scheduleFrozenOffsets;
3668
4499
  _aggregates: AggregationValue[];
3669
4500
  hasAggregates: boolean;
3670
4501
  columnAggregates: Record<string, any[]>;
3671
4502
  activeAggregations: Record<string, string>;
3672
- clearAggregation(): void;
4503
+ /**
4504
+ * Ligne des agrégations, en bas de la grille : agrégats renvoyés par le serveur
4505
+ * (`PagedList.Aggregates`, clés `<Fonction>_<Propriété>`), pour les fonctions choisies dans le
4506
+ * menu des en-têtes (`FilterViewModel.AggregateClause`).
4507
+ */
3673
4508
  private buildColumnAggregates;
3674
- setAggregation(op: string): void;
3675
4509
  getColCurrency(column: ColumnDescriptor): string;
4510
+ /** Fonctions d'agrégation choisies : demandées au serveur avec la recherche. */
3676
4511
  private applyAggregations;
3677
4512
  private mapToEnum;
3678
- static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent<any>, never>;
4513
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent<any>, [null, null, null, null, null, null, null, {
4514
+ optional: true;
4515
+ }, {
4516
+ optional: true;
4517
+ }, {
4518
+ optional: true;
4519
+ }]>;
3679
4520
  static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent<any>, "alg-data-grid", never, {
3680
4521
  "datagridClass": {
3681
4522
  "alias": "datagridClass";
@@ -3757,7 +4598,6 @@ declare namespace dynamic_field_component_d_exports {
3757
4598
  export { DynamicFieldComponent };
3758
4599
  }
3759
4600
  export declare class DynamicFieldComponent implements OnChanges {
3760
- private localeService;
3761
4601
  field: FilterDescriptor;
3762
4602
  form: UntypedFormGroup;
3763
4603
  submitted: boolean;
@@ -3771,13 +4611,13 @@ export declare class DynamicFieldComponent implements OnChanges {
3771
4611
  horizSelect: any;
3772
4612
  value: any;
3773
4613
  filterType: typeof FilterType;
3774
- bsConfig: Partial<BsDatepickerConfig>;
4614
+ bsConfig: Partial<DatepickerConfig>;
3775
4615
  locale: string;
3776
4616
  uploadForm: UntypedFormGroup;
3777
4617
  get isValid(): boolean;
3778
4618
  notlog: boolean;
3779
4619
  log(propname: string): string;
3780
- constructor(localeService: BsLocaleService);
4620
+ constructor();
3781
4621
  onValueChanged(event: Event): void;
3782
4622
  onBsValueChanged(event: any): void;
3783
4623
  filedata: any;
@@ -3880,28 +4720,39 @@ export declare class ExportDataModalComponent {
3880
4720
  static ɵcmp: i0.ɵɵComponentDeclaration<ExportDataModalComponent, "alg-export-data-modal", never, {}, {}, never, never, false, never>;
3881
4721
  }
3882
4722
  declare namespace track_record_modal_component_d_exports {
3883
- export { TrackRecordModalComponent };
4723
+ export { TrackRecordModalComponent, TrackRecordProperty };
3884
4724
  }
4725
+ /** Colonnes système d'une entité et leurs dates mises en forme, affichées par l'historique. */
4726
+ export interface TrackRecordProperty {
4727
+ Id?: number;
4728
+ CreatedBy?: string;
4729
+ CreationDate?: Date;
4730
+ CreationDateString?: string;
4731
+ ModifiedBy?: string;
4732
+ ModificationDate?: Date;
4733
+ ModificationDateString?: string;
4734
+ }
4735
+ /**
4736
+ * Historique d'une entité (action « Historique ») : création et dernière modification, lues dans
4737
+ * les colonnes système de l'entité affichée (CreatedBy, CreationDate, ModifiedBy, ModificationDate),
4738
+ * que renvoient les fonctions de recherche ; aucun appel au serveur.
4739
+ */
3885
4740
  export declare class TrackRecordModalComponent implements OnInit, IIsCancel {
3886
- private dataService;
3887
4741
  private datePipe;
3888
4742
  isCancel?: boolean;
3889
- entityKey: string;
3890
- entityId: number;
4743
+ /** Entité dont l'historique est affiché. */
4744
+ entity: EntityViewModel;
3891
4745
  ngOnInit(): void;
4746
+ private formatDate;
3892
4747
  callBackAction: (component: IIsCancel) => void;
3893
4748
  viewModel: TrackRecordProperty;
3894
4749
  TrackRecordSections: Section[];
3895
4750
  getTrackRecordSection(): void;
3896
- constructor(dataService: DataService, datePipe: DatePipe);
4751
+ constructor(datePipe: DatePipe);
3897
4752
  static ɵfac: i0.ɵɵFactoryDeclaration<TrackRecordModalComponent, never>;
3898
4753
  static ɵcmp: i0.ɵɵComponentDeclaration<TrackRecordModalComponent, "alg-track-record-modal", never, {
3899
- "entityKey": {
3900
- "alias": "entityKey";
3901
- "required": false;
3902
- };
3903
- "entityId": {
3904
- "alias": "entityId";
4754
+ "entity": {
4755
+ "alias": "entity";
3905
4756
  "required": false;
3906
4757
  };
3907
4758
  }, {}, never, never, false, never>;
@@ -4054,7 +4905,13 @@ export declare class MenuComponent implements OnInit, AfterViewInit {
4054
4905
  ngAfterViewInit(): void;
4055
4906
  ngOnInit(): void;
4056
4907
  toggleMenu(itemId: number, clicked: boolean, eventType: string): void;
4908
+ /** Vrai pour l'entrée de l'écran affiché : même chemin, paramètres de requête ignorés. */
4057
4909
  isItemActive(subitem: MenuItem): boolean;
4910
+ /**
4911
+ * Déplie le thème de l'entrée de l'écran affiché, comme après un clic sur cette entrée : au
4912
+ * rechargement de la page, ou au retour sur un onglet ouvert depuis un autre thème.
4913
+ */
4914
+ private revealActiveItem;
4058
4915
  lockToggle: boolean;
4059
4916
  subItemClick(item: MenuItem, subitem: MenuItem): void;
4060
4917
  getSubtreeClass(nb: number): string;
@@ -4255,6 +5112,13 @@ export declare class PageTabsComponent implements OnInit, AfterViewInit, OnDestr
4255
5112
  hiddenIds: Set<number>;
4256
5113
  /** Vrai quand le menu des onglets masqués est ouvert. */
4257
5114
  menuOpen: boolean;
5115
+ /**
5116
+ * Écran étroit (téléphone) : pas d'onglets dans la barre, tous les écrans ouverts (l'historique)
5117
+ * sont dans le menu déroulant, au bout de la barre.
5118
+ */
5119
+ narrow: boolean;
5120
+ private static readonly NarrowWidth;
5121
+ onResize(): void;
4258
5122
  private frame;
4259
5123
  private strip;
4260
5124
  private resizeObserver;
@@ -4958,9 +5822,8 @@ declare namespace parameter_type_date_component_d_exports {
4958
5822
  }
4959
5823
  export declare class ParameterTypeDateComponent extends BaseParameterTypeComponent {
4960
5824
  private datepipe;
4961
- private localeService;
4962
- constructor(datepipe: DatePipe, localeService: BsLocaleService);
4963
- bsConfig: Partial<BsDatepickerConfig>;
5825
+ constructor(datepipe: DatePipe);
5826
+ bsConfig: Partial<DatepickerConfig>;
4964
5827
  today: Date;
4965
5828
  displayedDate: Date;
4966
5829
  ngAfterContentInit(): void;
@@ -4999,7 +5862,7 @@ export declare class ParameterTypeDateArrayComponent extends BaseArrayParameterT
4999
5862
  renderer: Renderer2;
5000
5863
  private datepipe;
5001
5864
  constructor(renderer: Renderer2, datepipe: DatePipe);
5002
- bsConfig: Partial<BsDatepickerConfig>;
5865
+ bsConfig: Partial<DatepickerConfig>;
5003
5866
  today: Date;
5004
5867
  displayedDate: Date;
5005
5868
  ngAfterViewInit(): void;
@@ -5246,7 +6109,6 @@ declare namespace field_component_d_exports {
5246
6109
  }
5247
6110
  export declare class FieldComponent implements OnInit {
5248
6111
  validationService: ValidationService;
5249
- private localeService;
5250
6112
  showLabel: boolean;
5251
6113
  entity: EntityViewModel;
5252
6114
  field: FilterDescriptor;
@@ -5260,7 +6122,7 @@ export declare class FieldComponent implements OnInit {
5260
6122
  Changes$: import("rxjs").Observable<PropertyEditorEvent>;
5261
6123
  horizSelect: any;
5262
6124
  filterType: typeof FilterType;
5263
- bsConfig: Partial<BsDatepickerConfig>;
6125
+ bsConfig: Partial<DatepickerConfig>;
5264
6126
  locale: string;
5265
6127
  hidePassword: boolean;
5266
6128
  showPassword(): void;
@@ -5270,7 +6132,7 @@ export declare class FieldComponent implements OnInit {
5270
6132
  get isValid(): boolean;
5271
6133
  notlog: boolean;
5272
6134
  log(propname: string): void;
5273
- constructor(validationService: ValidationService, localeService: BsLocaleService);
6135
+ constructor(validationService: ValidationService);
5274
6136
  private internalForm;
5275
6137
  get control(): FormControl;
5276
6138
  ngOnInit(): void;
@@ -5330,6 +6192,7 @@ declare namespace new_paginator_component_d_exports {
5330
6192
  }
5331
6193
  export declare class NewPaginatorComponent<TData extends EntityViewModel> {
5332
6194
  private facadeService;
6195
+ private cd;
5333
6196
  guid: Guid;
5334
6197
  log: any;
5335
6198
  displayInfo: boolean;
@@ -5340,7 +6203,7 @@ export declare class NewPaginatorComponent<TData extends EntityViewModel> {
5340
6203
  getImageUrl(icon: string): string;
5341
6204
  entityKey: string;
5342
6205
  protected facade: EntityFacade<TData>;
5343
- constructor(facadeService: EntityFacadeRegistryService);
6206
+ constructor(facadeService: EntityFacadeRegistryService, cd: ChangeDetectorRef);
5344
6207
  ngOnInit(): void;
5345
6208
  first(): void;
5346
6209
  prev(): void;
@@ -5349,6 +6212,20 @@ export declare class NewPaginatorComponent<TData extends EntityViewModel> {
5349
6212
  updatePageNumber(page: number): void;
5350
6213
  onInputChange(event: any): void;
5351
6214
  onRowsChange(event: any): void;
6215
+ /** Vues proposées à l'utilisateur, avec la vue affichée. */
6216
+ viewList: GridViewList | undefined;
6217
+ viewMenuOpen: boolean;
6218
+ private loadViews;
6219
+ /** Nom de la vue affichée par la grille. */
6220
+ currentViewLabel(): string;
6221
+ /** Position à l'écran de la liste des vues : au-dessus du bouton (la barre du bas ne la coupe pas). */
6222
+ viewMenuPosition: {
6223
+ [key: string]: string;
6224
+ };
6225
+ toggleViewMenu(event?: MouseEvent): void;
6226
+ /** Bouton d'enregistrement : la vue affichée est enregistrée telle qu'elle est dans la grille. */
6227
+ saveView(): void;
6228
+ closeViewMenu(): void;
5352
6229
  ngOnDestroy(): void;
5353
6230
  onAgentIdClick(item: any): void;
5354
6231
  static ɵfac: i0.ɵɵFactoryDeclaration<NewPaginatorComponent<any>, never>;
@@ -5375,6 +6252,135 @@ export declare class NewPaginatorComponent<TData extends EntityViewModel> {
5375
6252
  };
5376
6253
  }, {}, never, never, false, never>;
5377
6254
  }
6255
+ declare namespace card_list_component_d_exports {
6256
+ export { CardListComponent };
6257
+ }
6258
+ /**
6259
+ * Liste de cartes d'un écran (vue Carte liée à la vue Grille affichée), à la place de la grille :
6260
+ * sur un écran étroit (téléphone), ou quand l'utilisateur le choisit. Chaque carte montre les
6261
+ * colonnes de ses emplacements (titre, texte, détail, badge, image à gauche : icône d'un type
6262
+ * énuméré, image, ou image par défaut de l'élément). Toucher une carte la sélectionne : l'éditeur
6263
+ * l'affiche (en plein écran sur un téléphone). Défilement continu : la page suivante s'ajoute
6264
+ * quand on approche du bas, avec la même recherche et les mêmes filtres.
6265
+ */
6266
+ export declare class CardListComponent<TData extends EntityViewModel> implements OnInit, OnDestroy {
6267
+ private readonly facadeService;
6268
+ private readonly imageService;
6269
+ private readonly cd;
6270
+ entityKey: string;
6271
+ guid: Guid;
6272
+ facade: EntityFacade<TData>;
6273
+ card: GridCard | null | undefined;
6274
+ items: TData[];
6275
+ /** Adresse de l'image par défaut des éléments affichés, par identifiant. */
6276
+ images: Record<number, string>;
6277
+ loading: boolean;
6278
+ /** Colonnes de la vue Grille affichée : colonnes de secours d'une carte sans emplacement rempli. */
6279
+ private columns;
6280
+ /** Page suivante demandée par le défilement : ses lignes s'ajoutent aux cartes affichées. */
6281
+ private appending;
6282
+ private readonly destroy$;
6283
+ /** Distance au bas de la liste à laquelle la page suivante est demandée. */
6284
+ private static readonly LoadThreshold;
6285
+ constructor(facadeService: EntityFacadeRegistryService, imageService: ImageService, cd: ChangeDetectorRef);
6286
+ ngOnInit(): void;
6287
+ ngOnDestroy(): void;
6288
+ private loadCard;
6289
+ private onData;
6290
+ private loadImages;
6291
+ /**
6292
+ * Carte sans titre, ni texte, ni détail (table sans UniqueName, Code, Label ni Description) :
6293
+ * les premières colonnes de la vue Grille, sauf Id et les images, en titre, texte et détail.
6294
+ */
6295
+ static withFallback(card: GridCard | null, columns: ColumnDescriptor[]): GridCard | null;
6296
+ get hasMore(): boolean;
6297
+ onScroll(event: Event): void;
6298
+ loadMore(): void;
6299
+ trackById: (_: number, row: TData) => number;
6300
+ isSelected(row: TData): boolean;
6301
+ /** Carte touchée : sélectionnée (l'éditeur l'affiche), en plein écran sur un écran étroit. */
6302
+ open(row: TData): void;
6303
+ hasImage(): boolean;
6304
+ imageUrl(row: TData): string | null;
6305
+ /** Initiales du titre de la carte, à la place d'une image absente. */
6306
+ initials(row: TData): string;
6307
+ /** Valeur affichée d'une colonne : date, nombre, montant, oui ou non, sinon le texte. */
6308
+ valueOf(row: TData, column: ColumnDescriptor | undefined): string;
6309
+ private static date;
6310
+ static ɵfac: i0.ɵɵFactoryDeclaration<CardListComponent<any>, never>;
6311
+ static ɵcmp: i0.ɵɵComponentDeclaration<CardListComponent<any>, "alg-card-list", never, {
6312
+ "entityKey": {
6313
+ "alias": "entityKey";
6314
+ "required": true;
6315
+ };
6316
+ "guid": {
6317
+ "alias": "guid";
6318
+ "required": false;
6319
+ };
6320
+ }, {}, never, never, false, never>;
6321
+ }
6322
+ declare namespace mobile_menu_component_d_exports {
6323
+ export { MobileMenuComponent, OpenNavigationMenuEvent };
6324
+ }
6325
+ /** Événement de la fenêtre qui ouvre le menu de navigation de l'application (DFlatLayoutComponent). */
6326
+ export declare const OpenNavigationMenuEvent = "dflat:open-menu";
6327
+ /**
6328
+ * Menu d'un écran sur téléphone, à la place des actions de la barre d'actions : trois points blancs à
6329
+ * droite de la recherche (inline), ou un bouton rond en bas à droite sans barre d'actions, ouvre un panneau avec la navigation (menu de l'application, accueil), les actions de l'écran
6330
+ * (comme le panneau des actions) et le menu « Affichage » (vues, colonnes, filtres et tri, carte).
6331
+ */
6332
+ export declare class MobileMenuComponent<TData extends EntityViewModel> implements OnInit, OnDestroy {
6333
+ private readonly facadeService;
6334
+ private readonly router;
6335
+ private readonly cd;
6336
+ private readonly actionService;
6337
+ private readonly authService;
6338
+ entityKey: string;
6339
+ guid: Guid;
6340
+ /** Titre de l'écran, en tête du panneau. */
6341
+ title: string;
6342
+ /** Bouton dans la barre d'actions (trois points blancs), au lieu du bouton rond en bas à droite. */
6343
+ inline: boolean;
6344
+ facade: EntityFacade<TData>;
6345
+ actions: Action[];
6346
+ open: boolean;
6347
+ private readonly destroy$;
6348
+ constructor(facadeService: EntityFacadeRegistryService, router: Router, cd: ChangeDetectorRef, actionService: ActionService, authService: AuthService);
6349
+ ngOnInit(): void;
6350
+ ngOnDestroy(): void;
6351
+ get visibleActions(): Action[];
6352
+ toggle(): void;
6353
+ close(): void;
6354
+ getActionImageUrl(icon: string): string;
6355
+ /** Action de l'écran, exécutée comme depuis le panneau des actions, sur les lignes sélectionnées. */
6356
+ execute(a: Action, disabled: boolean): void;
6357
+ /** Menu de navigation de l'application (panneau de gauche). */
6358
+ openNavigation(): void;
6359
+ goHome(): void;
6360
+ static ɵfac: i0.ɵɵFactoryDeclaration<MobileMenuComponent<any>, [null, null, null, {
6361
+ optional: true;
6362
+ }, {
6363
+ optional: true;
6364
+ }]>;
6365
+ static ɵcmp: i0.ɵɵComponentDeclaration<MobileMenuComponent<any>, "alg-mobile-menu", never, {
6366
+ "entityKey": {
6367
+ "alias": "entityKey";
6368
+ "required": true;
6369
+ };
6370
+ "guid": {
6371
+ "alias": "guid";
6372
+ "required": false;
6373
+ };
6374
+ "title": {
6375
+ "alias": "title";
6376
+ "required": false;
6377
+ };
6378
+ "inline": {
6379
+ "alias": "inline";
6380
+ "required": false;
6381
+ };
6382
+ }, {}, never, never, false, never>;
6383
+ }
5378
6384
  declare namespace filter_summary_component_d_exports {
5379
6385
  export { FilterSummaryPanelComponent };
5380
6386
  }
@@ -5511,6 +6517,24 @@ export declare class StandardPageLayoutComponent implements OnInit, OnDestroy {
5511
6517
  ngOnDestroy(): void;
5512
6518
  onBeforeUnload(): void;
5513
6519
  ngOnInit(): void;
6520
+ /** Clé de l'entrée d'historique de l'éditeur plein écran. */
6521
+ private static readonly MobileEditorState;
6522
+ private mobileHistoryPushed;
6523
+ /** Modifications en cours dans l'éditeur (disquette affichée, question avant de revenir à la liste). */
6524
+ get editorDirty(): boolean;
6525
+ /** Disquette de l'éditeur plein écran : enregistre les modifications en cours. */
6526
+ saveMobileEditor(event?: Event): void;
6527
+ /**
6528
+ * Flèche de l'éditeur plein écran : retour à la liste. Avec des modifications en cours, la fenêtre
6529
+ * standard demande avant : enregistrer (puis revenir si l'enregistrement a réussi), ne pas
6530
+ * enregistrer, ou continuer à modifier.
6531
+ */
6532
+ backToList(event?: Event): void;
6533
+ private askSaveBeforeLeaving;
6534
+ /** Retour à la liste, en reprenant l'entrée d'historique de l'éditeur plein écran. */
6535
+ closeMobileEditor(): void;
6536
+ /** Retour du téléphone ou du navigateur : l'éditeur plein écran se referme. */
6537
+ onPopState(): void;
5514
6538
  ngAfterViewInit(): void;
5515
6539
  toggleLayout(): void;
5516
6540
  static ɵfac: i0.ɵɵFactoryDeclaration<StandardPageLayoutComponent, never>;
@@ -5636,7 +6660,6 @@ declare namespace grid_field_component_d_exports {
5636
6660
  }
5637
6661
  export declare class GridFieldComponent implements OnInit {
5638
6662
  validationService: ValidationService;
5639
- private localeService;
5640
6663
  showLabel: boolean;
5641
6664
  entity: EntityViewModel;
5642
6665
  field: FilterDescriptor;
@@ -5649,7 +6672,7 @@ export declare class GridFieldComponent implements OnInit {
5649
6672
  Changes$: import("rxjs").Observable<PropertyEditorEvent>;
5650
6673
  horizSelect: any;
5651
6674
  filterType: typeof FilterType;
5652
- bsConfig: Partial<BsDatepickerConfig>;
6675
+ bsConfig: Partial<DatepickerConfig>;
5653
6676
  locale: string;
5654
6677
  hidePassword: boolean;
5655
6678
  showPassword(): void;
@@ -5659,7 +6682,7 @@ export declare class GridFieldComponent implements OnInit {
5659
6682
  get isValid(): boolean;
5660
6683
  notlog: boolean;
5661
6684
  log(propname: string): void;
5662
- constructor(validationService: ValidationService, localeService: BsLocaleService);
6685
+ constructor(validationService: ValidationService);
5663
6686
  private internalForm;
5664
6687
  get control(): FormControl;
5665
6688
  ngOnInit(): void;
@@ -5747,9 +6770,123 @@ export declare class RowRefDirective implements AfterViewInit, OnDestroy {
5747
6770
  };
5748
6771
  }, {}, never, never, true, never>;
5749
6772
  }
6773
+ declare namespace grid_view_menu_component_d_exports {
6774
+ export { GridViewMenuComponent };
6775
+ }
6776
+ /**
6777
+ * Contenu du menu « Affichage » d'une grille, commun au menu de la grille et à la liste des vues de
6778
+ * la barre du bas : vues personnalisées (cochée = affichée, décocher revient à la vue par défaut),
6779
+ * « Nouvelle vue », sous-menu « Colonnes » (colonnes disponibles par ordre alphabétique, cochées si
6780
+ * affichées, recherche par mot-clé) et « Modifier… ».
6781
+ *
6782
+ * Le composant donne des éléments de liste (li) : il se place dans la liste (ul) du menu qui l'ouvre.
6783
+ */
6784
+ export declare class GridViewMenuComponent implements OnInit {
6785
+ private readonly cd;
6786
+ /** Choix de la vue de la grille (BaseComponent). */
6787
+ chooser: GridViewChooser;
6788
+ /** Action faite : le menu qui contient ce contenu se ferme. */
6789
+ readonly done: EventEmitter<void>;
6790
+ /**
6791
+ * Téléphone : pas de sous-menu « Colonnes » (la liste de cartes n'utilise pas les colonnes de la
6792
+ * vue) ; le sous-menu « Carte » s'ouvre en plein écran, au-dessus du menu, avec un retour.
6793
+ */
6794
+ mobile: boolean;
6795
+ /** Vues chargées (ou colonnes affichées) : le menu peut se replacer. */
6796
+ readonly loaded: EventEmitter<void>;
6797
+ viewList: GridViewList | undefined;
6798
+ columnsOpen: boolean;
6799
+ columns: GridColumnChoice[] | undefined;
6800
+ search: string;
6801
+ /** Colonne en cours d'ajout ou de retrait. */
6802
+ pendingColumn: string | undefined;
6803
+ constructor(cd: ChangeDetectorRef);
6804
+ ngOnInit(): void;
6805
+ isSelected(id: number): boolean;
6806
+ /** Cocher une vue l'affiche ; décocher la vue affichée revient à la vue par défaut. */
6807
+ toggleView(id: number): void;
6808
+ /** « Nouvelle vue » : copie de la vue affichée, qui devient la vue affichée. */
6809
+ createView(): void;
6810
+ /** « Modifier… » : éditeur des vues personnalisées, sur la vue affichée. */
6811
+ editView(): void;
6812
+ /** Position à l'écran du sous-menu « Colonnes ». */
6813
+ columnsPosition: {
6814
+ [key: string]: string;
6815
+ };
6816
+ /**
6817
+ * Sous-menu « Colonnes », hors du menu : à droite de l'entrée, ou à gauche s'il dépasse de la
6818
+ * fenêtre ; aligné sur l'entrée, remonté s'il dépasse en bas. Les colonnes sont relues à l'ouverture.
6819
+ */
6820
+ openColumns(event?: Event): void;
6821
+ closeColumns(): void;
6822
+ cardsOpen: boolean;
6823
+ cardsPosition: {
6824
+ [key: string]: string;
6825
+ };
6826
+ cards: {
6827
+ cards: {
6828
+ id: number;
6829
+ label: string;
6830
+ isDefault: boolean;
6831
+ }[];
6832
+ linkedId: number | null;
6833
+ canLink: boolean;
6834
+ } | undefined;
6835
+ /** Sous-menu « Carte », hors du menu, placé comme « Colonnes » ; les cartes sont relues à l'ouverture. */
6836
+ openCards(event?: Event): void;
6837
+ closeCards(): void;
6838
+ /** Coche une carte : elle est liée à la vue Grille affichée (une vue de l'utilisateur). */
6839
+ linkCard(id: number): void;
6840
+ /** « Filtres et tri… » : fenêtre de paramétrage du filtre et du tri. */
6841
+ editFilters(): void;
6842
+ /** « Personnaliser la carte… » : fenêtre de la carte. */
6843
+ editCard(): void;
6844
+ /** Largeur et hauteur maximale du sous-menu « Colonnes ». */
6845
+ private static readonly ColumnsWidth;
6846
+ private static readonly ColumnsHeight;
6847
+ /** Ordre des colonnes affichées, tenu à jour à chaque action (la grille suit). */
6848
+ private visibleOrder;
6849
+ private loadColumns;
6850
+ /** Colonnes dont le libellé ou la clé contient le mot-clé (sans tenir compte de la casse ni des accents). */
6851
+ filteredColumns(): GridColumnChoice[];
6852
+ /** Colonnes affichées, dans l'ordre de la grille. */
6853
+ visibleColumns(): GridColumnChoice[];
6854
+ /** Colonnes non affichées, par ordre alphabétique. */
6855
+ hiddenColumns(): GridColumnChoice[];
6856
+ private matches;
6857
+ /** Colonne déplacée, et emplacement visé (avant ou après une colonne affichée). */
6858
+ dragKey: string | undefined;
6859
+ dropTarget: {
6860
+ key: string;
6861
+ before: boolean;
6862
+ } | undefined;
6863
+ onDragStart(event: DragEvent, column: GridColumnChoice): void;
6864
+ onDragOver(event: DragEvent, column: GridColumnChoice): void;
6865
+ onDrop(event: DragEvent): void;
6866
+ onDragEnd(): void;
6867
+ /** Déplace une colonne affichée avant ou après une autre : la grille suit aussitôt. */
6868
+ moveColumn(key: string, targetKey: string, before: boolean): void;
6869
+ /** Cocher une colonne l'ajoute à la vue affichée, la décocher la retire. */
6870
+ toggleColumn(column: GridColumnChoice): void;
6871
+ private static normalize;
6872
+ static ɵfac: i0.ɵɵFactoryDeclaration<GridViewMenuComponent, never>;
6873
+ static ɵcmp: i0.ɵɵComponentDeclaration<GridViewMenuComponent, "alg-grid-view-menu", never, {
6874
+ "chooser": {
6875
+ "alias": "chooser";
6876
+ "required": true;
6877
+ };
6878
+ "mobile": {
6879
+ "alias": "mobile";
6880
+ "required": false;
6881
+ };
6882
+ }, {
6883
+ "done": "done";
6884
+ "loaded": "loaded";
6885
+ }, never, never, true, never>;
6886
+ }
5750
6887
  export declare class CoreUxModule {
5751
6888
  static ɵfac: i0.ɵɵFactoryDeclaration<CoreUxModule, never>;
5752
- static ɵmod: i0.ɵɵNgModuleDeclaration<CoreUxModule, [typeof ActionsComponent, typeof ActionsContentComponent, typeof BreadcrumbComponent, typeof CollapseDirective, typeof ConfirmModalComponent, typeof DatagridCustomComponent, typeof DataGridComponent, typeof OldDataPageComponent, typeof DefaultLayoutComponent, typeof DialogComponent, typeof DynamicFieldComponent, typeof DynamicFilterComponent, typeof DynamicFilterExtraComponent, typeof DynamicFilterPanel, typeof DynamicFormComponent, typeof ImageComponent, typeof ExportDataModalComponent, typeof TrackRecordModalComponent, typeof FilterSummaryComponent, typeof GridRowComponent, typeof DatagridCellComponent, typeof InputSelectorComponent, typeof InputTreeSelectorComponent, typeof InsertionDirective, typeof LoginLayoutComponent, typeof LogsComponent, typeof MenuComponent, typeof MenuDashboardComponent, typeof PageTabsComponent, typeof PaginatorComponent, typeof PropertyGridComponent, typeof Tab, typeof TabHeadingDirective, typeof Tabset, typeof TabTranscludeDirective, typeof ToDefinePipe, typeof ToFixedSizeIntegerPipe, typeof ValidateOnEnterDirective, typeof ValidationErrorComponent, typeof ValidationModalComponent, typeof TextViewerComponent, typeof EditModeDirective, typeof ViewModeDirective, typeof FocusableDirective, typeof OnEnterDirective, typeof TextViewerComponent, typeof WizardComponent, typeof WizardStepComponent, typeof TooltipDirective, typeof AddclassDirective, typeof BaseItemListComponent, typeof DroppableDirective, typeof DraggableDirective, typeof ParameterFieldComponent, typeof BaseParameterTypeComponent, typeof BaseArrayParameterTypeComponent, typeof ParameterTypeTextComponent, typeof ParameterTypeNumberComponent, typeof ParameterTypeBoolComponent, typeof ParameterTypeDateComponent, typeof ParameterTypePasswordComponent, typeof ParameterTypeTextArrayComponent, typeof ParameterTypeNumberArrayComponent, typeof ParameterTypeDateArrayComponent, typeof ParameterTypeBoolArrayComponent, typeof TimePickerComponent, typeof ExtendedActionComponent, typeof FormPasswordComponent, typeof SearchResultsComponent, typeof LayoutHandlerDirective, typeof OldLayoutHandlerDirective, typeof PageLayoutComponent, typeof HideOnThresholdDirective, typeof BaseShortcutsDirective, typeof DecimalInputDirective, typeof NewEditorComponent, typeof PropertyEditorComponent, typeof FieldComponent, typeof EditorTabSetComponent, typeof EditorTabComponent, typeof BreadcrumbComponent, typeof NewPaginatorComponent, typeof FilterSummaryPanelComponent, typeof ActionPanelComponent, typeof StandardPageLayoutComponent, typeof DataListComponent, typeof CellRendererComponent, typeof SelectorComponent, typeof CellRendererComponent, typeof FilterFormModalComponent, typeof GridFieldComponent], [typeof i89.RouterModule, typeof i90.CommonModule, typeof i91.CoreModelModule, typeof i92.FormsModule, typeof i92.ReactiveFormsModule, typeof i93.NgSelectModule, typeof i94.BsDatepickerModule, typeof i95.ModalModule, typeof i92.ReactiveFormsModule, typeof GridStylePipe, typeof RowRefDirective, typeof i98.FocusTrapDirective], [typeof ActionsComponent, typeof ActionsContentComponent, typeof BreadcrumbComponent, typeof CollapseDirective, typeof ConfirmModalComponent, typeof DatagridCustomComponent, typeof DataGridComponent, typeof OldDataPageComponent, typeof DefaultLayoutComponent, typeof DialogComponent, typeof DynamicFieldComponent, typeof DynamicFilterComponent, typeof DynamicFilterExtraComponent, typeof DynamicFilterPanel, typeof DynamicFormComponent, typeof ImageComponent, typeof ExportDataModalComponent, typeof TrackRecordModalComponent, typeof FilterSummaryComponent, typeof GridRowComponent, typeof DatagridCellComponent, typeof InputSelectorComponent, typeof InputTreeSelectorComponent, typeof InsertionDirective, typeof LoginLayoutComponent, typeof LogsComponent, typeof MenuComponent, typeof MenuDashboardComponent, typeof PageTabsComponent, typeof PaginatorComponent, typeof PropertyGridComponent, typeof Tab, typeof TabHeadingDirective, typeof Tabset, typeof TabTranscludeDirective, typeof ToDefinePipe, typeof ToFixedSizeIntegerPipe, typeof ValidateOnEnterDirective, typeof ValidationErrorComponent, typeof ValidationModalComponent, typeof TextViewerComponent, typeof EditModeDirective, typeof ViewModeDirective, typeof FocusableDirective, typeof OnEnterDirective, typeof TextViewerComponent, typeof WizardComponent, typeof WizardStepComponent, typeof TooltipDirective, typeof AddclassDirective, typeof BaseItemListComponent, typeof DroppableDirective, typeof DraggableDirective, typeof ParameterFieldComponent, typeof BaseParameterTypeComponent, typeof BaseArrayParameterTypeComponent, typeof ParameterTypeTextComponent, typeof ParameterTypeNumberComponent, typeof ParameterTypeBoolComponent, typeof ParameterTypeDateComponent, typeof ParameterTypePasswordComponent, typeof ParameterTypeTextArrayComponent, typeof ParameterTypeNumberArrayComponent, typeof ParameterTypeDateArrayComponent, typeof ParameterTypeBoolArrayComponent, typeof TimePickerComponent, typeof ExtendedActionComponent, typeof FormPasswordComponent, typeof SearchResultsComponent, typeof LayoutHandlerDirective, typeof OldLayoutHandlerDirective, typeof PageLayoutComponent, typeof HideOnThresholdDirective, typeof BaseShortcutsDirective, typeof DecimalInputDirective, typeof NewEditorComponent, typeof PropertyEditorComponent, typeof FieldComponent, typeof EditorTabSetComponent, typeof EditorTabComponent, typeof BreadcrumbComponent, typeof NewPaginatorComponent, typeof FilterSummaryPanelComponent, typeof ActionPanelComponent, typeof StandardPageLayoutComponent, typeof DataListComponent, typeof CellRendererComponent, typeof SelectorComponent, typeof CellRendererComponent, typeof FilterFormModalComponent, typeof GridFieldComponent]>;
6889
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CoreUxModule, [typeof ActionsComponent, typeof ActionsContentComponent, typeof BreadcrumbComponent, typeof CollapseDirective, typeof ConfirmModalComponent, typeof DatagridCustomComponent, typeof DataGridComponent, typeof OldDataPageComponent, typeof DefaultLayoutComponent, typeof DialogComponent, typeof DynamicFieldComponent, typeof DynamicFilterComponent, typeof DynamicFilterExtraComponent, typeof DynamicFilterPanel, typeof DynamicFormComponent, typeof ImageComponent, typeof ExportDataModalComponent, typeof TrackRecordModalComponent, typeof FilterSummaryComponent, typeof GridRowComponent, typeof DatagridCellComponent, typeof InputSelectorComponent, typeof InputTreeSelectorComponent, typeof InsertionDirective, typeof LoginLayoutComponent, typeof LogsComponent, typeof MenuComponent, typeof MenuDashboardComponent, typeof PageTabsComponent, typeof PaginatorComponent, typeof PropertyGridComponent, typeof Tab, typeof TabHeadingDirective, typeof Tabset, typeof TabTranscludeDirective, typeof ToDefinePipe, typeof ToFixedSizeIntegerPipe, typeof ValidateOnEnterDirective, typeof ValidationErrorComponent, typeof ValidationModalComponent, typeof TextViewerComponent, typeof EditModeDirective, typeof ViewModeDirective, typeof FocusableDirective, typeof OnEnterDirective, typeof TextViewerComponent, typeof WizardComponent, typeof WizardStepComponent, typeof TooltipDirective, typeof AddclassDirective, typeof BaseItemListComponent, typeof DroppableDirective, typeof DraggableDirective, typeof ParameterFieldComponent, typeof BaseParameterTypeComponent, typeof BaseArrayParameterTypeComponent, typeof ParameterTypeTextComponent, typeof ParameterTypeNumberComponent, typeof ParameterTypeBoolComponent, typeof ParameterTypeDateComponent, typeof ParameterTypePasswordComponent, typeof ParameterTypeTextArrayComponent, typeof ParameterTypeNumberArrayComponent, typeof ParameterTypeDateArrayComponent, typeof ParameterTypeBoolArrayComponent, typeof TimePickerComponent, typeof ExtendedActionComponent, typeof FormPasswordComponent, typeof SearchResultsComponent, typeof LayoutHandlerDirective, typeof OldLayoutHandlerDirective, typeof PageLayoutComponent, typeof HideOnThresholdDirective, typeof BaseShortcutsDirective, typeof DecimalInputDirective, typeof NewEditorComponent, typeof PropertyEditorComponent, typeof FieldComponent, typeof EditorTabSetComponent, typeof EditorTabComponent, typeof BreadcrumbComponent, typeof NewPaginatorComponent, typeof CardListComponent, typeof MobileMenuComponent, typeof FilterSummaryPanelComponent, typeof ActionPanelComponent, typeof StandardPageLayoutComponent, typeof DataListComponent, typeof CellRendererComponent, typeof SelectorComponent, typeof CellRendererComponent, typeof FilterFormModalComponent, typeof GridFieldComponent], [typeof i91.RouterModule, typeof i92.CommonModule, typeof i93.CoreModelModule, typeof i94.FormsModule, typeof i94.ReactiveFormsModule, typeof i95.NgSelectModule, typeof DatePickerDirective, typeof GridStylePipe, typeof RowRefDirective, typeof GridViewMenuComponent], [typeof ActionsComponent, typeof ActionsContentComponent, typeof BreadcrumbComponent, typeof CollapseDirective, typeof ConfirmModalComponent, typeof DatagridCustomComponent, typeof DataGridComponent, typeof OldDataPageComponent, typeof DefaultLayoutComponent, typeof DialogComponent, typeof DynamicFieldComponent, typeof DynamicFilterComponent, typeof DynamicFilterExtraComponent, typeof DynamicFilterPanel, typeof DynamicFormComponent, typeof ImageComponent, typeof ExportDataModalComponent, typeof TrackRecordModalComponent, typeof FilterSummaryComponent, typeof GridRowComponent, typeof DatagridCellComponent, typeof InputSelectorComponent, typeof InputTreeSelectorComponent, typeof InsertionDirective, typeof LoginLayoutComponent, typeof LogsComponent, typeof MenuComponent, typeof MenuDashboardComponent, typeof PageTabsComponent, typeof PaginatorComponent, typeof PropertyGridComponent, typeof Tab, typeof TabHeadingDirective, typeof Tabset, typeof TabTranscludeDirective, typeof ToDefinePipe, typeof ToFixedSizeIntegerPipe, typeof ValidateOnEnterDirective, typeof ValidationErrorComponent, typeof ValidationModalComponent, typeof TextViewerComponent, typeof EditModeDirective, typeof ViewModeDirective, typeof FocusableDirective, typeof OnEnterDirective, typeof TextViewerComponent, typeof WizardComponent, typeof WizardStepComponent, typeof TooltipDirective, typeof AddclassDirective, typeof BaseItemListComponent, typeof DroppableDirective, typeof DraggableDirective, typeof ParameterFieldComponent, typeof BaseParameterTypeComponent, typeof BaseArrayParameterTypeComponent, typeof ParameterTypeTextComponent, typeof ParameterTypeNumberComponent, typeof ParameterTypeBoolComponent, typeof ParameterTypeDateComponent, typeof ParameterTypePasswordComponent, typeof ParameterTypeTextArrayComponent, typeof ParameterTypeNumberArrayComponent, typeof ParameterTypeDateArrayComponent, typeof ParameterTypeBoolArrayComponent, typeof TimePickerComponent, typeof ExtendedActionComponent, typeof FormPasswordComponent, typeof SearchResultsComponent, typeof LayoutHandlerDirective, typeof OldLayoutHandlerDirective, typeof PageLayoutComponent, typeof HideOnThresholdDirective, typeof BaseShortcutsDirective, typeof DecimalInputDirective, typeof NewEditorComponent, typeof PropertyEditorComponent, typeof FieldComponent, typeof EditorTabSetComponent, typeof EditorTabComponent, typeof BreadcrumbComponent, typeof NewPaginatorComponent, typeof CardListComponent, typeof MobileMenuComponent, typeof FilterSummaryPanelComponent, typeof ActionPanelComponent, typeof StandardPageLayoutComponent, typeof DataListComponent, typeof CellRendererComponent, typeof SelectorComponent, typeof CellRendererComponent, typeof FilterFormModalComponent, typeof GridFieldComponent, typeof DatePickerDirective]>;
5753
6890
  static ɵinj: i0.ɵɵInjectorDeclaration<CoreUxModule>;
5754
6891
  }
5755
6892
  export declare class CanDeactivateGuard {
@@ -5767,6 +6904,136 @@ export declare class FireAuthService {
5767
6904
  static ɵfac: i0.ɵɵFactoryDeclaration<FireAuthService, never>;
5768
6905
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
5769
6906
  }
6907
+ /** Jour affiché dans la grille du mois. */
6908
+ interface CalendarDay {
6909
+ date: Date;
6910
+ day: number;
6911
+ inMonth: boolean;
6912
+ isToday: boolean;
6913
+ isSelected: boolean;
6914
+ isDisabled: boolean;
6915
+ }
6916
+ /** Vue du calendrier : jours d'un mois, mois d'une année, ou années d'une période de 16 ans. */
6917
+ type CalendarView = 'days' | 'months' | 'years';
6918
+ /**
6919
+ * Calendrier du package (remplace celui de ngx-bootstrap) : grille du mois commençant le lundi,
6920
+ * en français ; un clic sur le titre passe aux mois de l'année, puis aux années ; boutons
6921
+ * « Aujourd'hui » et « Effacer » au choix. Émet le jour choisi, à minuit en heure locale, ou null.
6922
+ */
6923
+ export declare class CalendarComponent implements OnInit {
6924
+ /** Jour choisi, mis en évidence ; le calendrier s'ouvre sur son mois. */
6925
+ value: Date | null;
6926
+ minDate: Date | null | undefined;
6927
+ maxDate: Date | null | undefined;
6928
+ showTodayButton: boolean;
6929
+ showClearButton: boolean;
6930
+ todayButtonLabel: string;
6931
+ clearButtonLabel: string;
6932
+ /** Numéro de semaine (ISO 8601) devant chaque semaine. */
6933
+ showWeekNumbers: boolean;
6934
+ /** Jour choisi (null : effacé). */
6935
+ readonly dateSelected: EventEmitter<Date>;
6936
+ readonly weekDays: string[];
6937
+ readonly monthsShort: string[];
6938
+ view: CalendarView;
6939
+ /** Mois affiché (premier jour). */
6940
+ visibleMonth: Date;
6941
+ weeks: {
6942
+ number: number;
6943
+ days: CalendarDay[];
6944
+ }[];
6945
+ years: number[];
6946
+ ngOnInit(): void;
6947
+ get title(): string;
6948
+ /** Titre cliqué : jours → mois → années. */
6949
+ zoomOut(): void;
6950
+ previous(): void;
6951
+ next(): void;
6952
+ private shift;
6953
+ selectDay(day: CalendarDay): void;
6954
+ selectMonth(month: number): void;
6955
+ selectYear(year: number): void;
6956
+ today(): void;
6957
+ clear(): void;
6958
+ isCurrentMonth(month: number): boolean;
6959
+ isCurrentYear(year: number): boolean;
6960
+ private build;
6961
+ private static firstOfMonth;
6962
+ private static startOfDay;
6963
+ private static sameDay;
6964
+ /** Numéro de semaine ISO 8601 du lundi donné. */
6965
+ static isoWeek(monday: Date): number;
6966
+ static ɵfac: i0.ɵɵFactoryDeclaration<CalendarComponent, never>;
6967
+ static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent, "alg-calendar", never, {
6968
+ "value": {
6969
+ "alias": "value";
6970
+ "required": false;
6971
+ };
6972
+ "minDate": {
6973
+ "alias": "minDate";
6974
+ "required": false;
6975
+ };
6976
+ "maxDate": {
6977
+ "alias": "maxDate";
6978
+ "required": false;
6979
+ };
6980
+ "showTodayButton": {
6981
+ "alias": "showTodayButton";
6982
+ "required": false;
6983
+ };
6984
+ "showClearButton": {
6985
+ "alias": "showClearButton";
6986
+ "required": false;
6987
+ };
6988
+ "todayButtonLabel": {
6989
+ "alias": "todayButtonLabel";
6990
+ "required": false;
6991
+ };
6992
+ "clearButtonLabel": {
6993
+ "alias": "clearButtonLabel";
6994
+ "required": false;
6995
+ };
6996
+ "showWeekNumbers": {
6997
+ "alias": "showWeekNumbers";
6998
+ "required": false;
6999
+ };
7000
+ }, {
7001
+ "dateSelected": "dateSelected";
7002
+ }, never, never, true, never>;
7003
+ }
7004
+ /** Table d'une grille et, le cas échéant, source de données ou rôle de ses vues. */
7005
+ export interface PpGridConfig {
7006
+ metaEntityKey: string;
7007
+ supplierId?: number | null;
7008
+ roleId?: number | null;
7009
+ }
7010
+ /** Vue Carte d'une grille : ses colonnes, avec leur emplacement dans la carte. */
7011
+ export interface PpCardView {
7012
+ id: number | null;
7013
+ label: string;
7014
+ /** Colonnes : clé, emplacement (0 titre, 1 texte, 2 détail, 3 badge, 4 image), source (3 : image de l'élément). */
7015
+ items: {
7016
+ key: string;
7017
+ slot: number;
7018
+ sourceType: number;
7019
+ }[];
7020
+ }
7021
+ /** Vues Carte proposées pour la grille : la vue Carte liée à la vue Grille affichée est cochée. */
7022
+ export interface PpCardViews {
7023
+ cards: {
7024
+ id: number;
7025
+ label: string;
7026
+ isDefault: boolean;
7027
+ }[];
7028
+ linkedId: number | null;
7029
+ /** La vue Grille affichée est une vue de l'utilisateur : sa carte peut changer. */
7030
+ canLink: boolean;
7031
+ }
7032
+ /** Tri et filtre enregistrés avec une vue, en JSON ; chaîne vide : aucun. */
7033
+ export interface PpViewQueries {
7034
+ sortQuery: string;
7035
+ filterQuery: string;
7036
+ }
5770
7037
  export interface IPpService {
5771
7038
  /** Opens the column selector modal for Grid purpose. */
5772
7039
  openColumnSelector(config: {
@@ -5774,7 +7041,69 @@ export interface IPpService {
5774
7041
  metaEntityKey: string;
5775
7042
  supplierId?: number | null;
5776
7043
  roleId?: number | null;
7044
+ viewId?: number | null;
7045
+ tab?: 'columns' | 'filters';
7046
+ filterColumns?: {
7047
+ key: string;
7048
+ label: string;
7049
+ type: string;
7050
+ values?: {
7051
+ value: string;
7052
+ label: string;
7053
+ }[];
7054
+ }[];
5777
7055
  }): void;
7056
+ /**
7057
+ * Ouvre l'éditeur des vues personnalisées (écran des vues, filtré sur la table de la grille et
7058
+ * positionné sur la vue donnée), dans une fenêtre ; émet à la fermeture de la fenêtre.
7059
+ */
7060
+ openProfileEditor(config: {
7061
+ title: string;
7062
+ metaEntityKey: string;
7063
+ viewId?: number | null;
7064
+ }): Observable<unknown>;
7065
+ /** Vues personnalisées proposées à l'utilisateur pour la table (menu « Affichage » des grilles). */
7066
+ loadViews(config: PpGridConfig): Observable<GridViewList>;
7067
+ /** Choisit la vue affichée par la grille de l'utilisateur ; null revient à la vue par défaut. */
7068
+ selectView(config: PpGridConfig, viewId: number | null): Observable<unknown>;
7069
+ /**
7070
+ * Vue modifiée dans la grille (colonnes déplacées, ajoutées ou retirées), à l'abandon de l'écran :
7071
+ * propose d'enregistrer les colonnes données, dans leur ordre, dans une nouvelle vue (vue par
7072
+ * défaut affichée) ou dans la vue de l'utilisateur.
7073
+ */
7074
+ saveColumnOrder(config: PpGridConfig & {
7075
+ title: string;
7076
+ }, columnOrder: string[], queries?: PpViewQueries): void;
7077
+ /**
7078
+ * Bouton d'enregistrement de la barre du bas de la grille : enregistre les colonnes données dans la
7079
+ * vue de l'utilisateur affichée, sans demander ; la vue par défaut affichée, elle, demande le nom
7080
+ * de la nouvelle vue. Émet true une fois l'ordre enregistré (la vue enregistrée devient la vue
7081
+ * affichée), false sinon.
7082
+ */
7083
+ saveCurrentColumnOrder(config: PpGridConfig & {
7084
+ title: string;
7085
+ }, columnOrder: string[], queries?: PpViewQueries): Observable<boolean>;
7086
+ /** « Nouvelle vue » : copie la vue affichée en une nouvelle vue de l'utilisateur, qui devient la vue affichée. */
7087
+ createView(config: PpGridConfig): Observable<boolean>;
7088
+ /**
7089
+ * Vue Carte de la vue Grille affichée (à défaut la vue Carte par défaut) : colonne de chaque
7090
+ * emplacement (clé, emplacement EnumCardSlots, source), ou null si la table n'en a pas.
7091
+ */
7092
+ loadCardView(config: PpGridConfig): Observable<PpCardView | null>;
7093
+ /** Vues Carte proposées pour la grille, avec celle liée à la vue Grille affichée. */
7094
+ loadCardViews(config: PpGridConfig): Observable<PpCardViews>;
7095
+ /** Lie la vue Grille affichée (une vue de l'utilisateur) à la vue Carte donnée ; émet true une fois liée. */
7096
+ linkCardView(config: PpGridConfig, cardId: number | null): Observable<boolean>;
7097
+ /**
7098
+ * Personnalisation de la carte (fenêtre standard) : la carte de l'utilisateur est modifiée, une
7099
+ * carte par défaut donne une nouvelle carte, liée à la vue Grille affichée ; émet true une fois
7100
+ * enregistrée.
7101
+ */
7102
+ editCardView(config: PpGridConfig & {
7103
+ title: string;
7104
+ }): Observable<boolean>;
7105
+ /** Colonnes disponibles de la table (catalogue, attributs compris), avec celles de la vue affichée. */
7106
+ loadViewColumns(config: PpGridConfig): Observable<GridColumnChoice[]>;
5778
7107
  /** Opens the column selector modal for Export purpose. */
5779
7108
  openExportSelector(config: {
5780
7109
  title: string;
@@ -6192,7 +7521,6 @@ export declare class ChangeUtilities {
6192
7521
  static deepComparer(current: any, original: any, depth?: number, maxDepth?: number): boolean;
6193
7522
  private static compareArrays;
6194
7523
  private static compareDates;
6195
- private static toMomentDate;
6196
7524
  private static isObject;
6197
7525
  private static isDate;
6198
7526
  private static isBoolean;
@@ -6311,11 +7639,110 @@ export declare class OrderableModalComponent<T extends OrderableItem> implements
6311
7639
  }
6312
7640
  export declare class OrderableModalService {
6313
7641
  private readonly modalService;
6314
- open<T extends OrderableItem>(config: OrderableModalConfig<T>, options?: ModalOptions): Promise<OrderableModalResult<T> | null>;
7642
+ open<T extends OrderableItem>(config: OrderableModalConfig<T>, options?: DflatModalOptions): Promise<OrderableModalResult<T> | null>;
6315
7643
  private buildBsConfig;
6316
7644
  private wireResultEmitter;
6317
7645
  static ɵfac: i0.ɵɵFactoryDeclaration<OrderableModalService, never>;
6318
7646
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
6319
7647
  }
7648
+ /** Type d'une colonne pour les comparaisons proposées. */
7649
+ export type FilterColumnType = 'text' | 'number' | 'date' | 'bool' | 'list';
7650
+ /** Colonne proposée par la fenêtre « Filtres et tri ». */
7651
+ export interface FilterEditorColumn {
7652
+ key: string;
7653
+ label: string;
7654
+ type: FilterColumnType;
7655
+ /** Valeurs d'une liste (type énuméré) : valeur envoyée et libellé. */
7656
+ values?: {
7657
+ value: string;
7658
+ label: string;
7659
+ }[];
7660
+ }
7661
+ /** Niveau du tri. */
7662
+ export interface FilterEditorSort {
7663
+ property: string;
7664
+ direction: 'asc' | 'desc';
7665
+ }
7666
+ /** Résultat de la fenêtre : filtre, tri, et enregistrement dans la vue. */
7667
+ export interface FilterEditorResult {
7668
+ filter: ViewFilterGroup;
7669
+ sort: FilterEditorSort[];
7670
+ saveInView: boolean;
7671
+ }
7672
+ /** Comparaisons proposées selon le type de la colonne. */
7673
+ export declare const FilterOperators: Record<FilterColumnType, {
7674
+ value: ViewFilterOperator;
7675
+ label: string;
7676
+ }[]>;
7677
+ /**
7678
+ * Fenêtre « Filtres et tri » d'une grille (contenu de la fenêtre standard, DialogComponent) :
7679
+ * filtre en groupes ET / OU imbriqués, comparaisons selon le type de la colonne, et tri sur plusieurs
7680
+ * niveaux ; « Enregistrer dans la vue » enregistre le filtre et le tri dans la vue personnalisée. Le
7681
+ * résultat est lu par propertyCallback (« result »). Sert aussi sur téléphone, en plein écran.
7682
+ */
7683
+ export declare class FilterEditorComponent {
7684
+ /** Colonnes proposées (celles de la grille), par ordre alphabétique. */
7685
+ columns: FilterEditorColumn[];
7686
+ /** Filtre en cours (groupe racine), modifié en place. */
7687
+ filter: ViewFilterGroup;
7688
+ /** Niveaux du tri, modifiés en place. */
7689
+ sort: FilterEditorSort[];
7690
+ /** Intégré à l'éditeur des vues : pas de case « Enregistrer dans la vue » (« Appliquer » enregistre la vue). */
7691
+ embedded: boolean;
7692
+ /** Vue où enregistrer ; la case est grisée sans vue modifiable. */
7693
+ viewLabel: string;
7694
+ canSaveInView: boolean;
7695
+ saveInView: boolean;
7696
+ tab: 'filters' | 'sort';
7697
+ /** Profondeur maximale des groupes imbriqués proposée. */
7698
+ readonly maxDepth = 3;
7699
+ get result(): FilterEditorResult;
7700
+ columnOf(key: string): FilterEditorColumn | undefined;
7701
+ operatorsOf(condition: ViewFilterCondition): {
7702
+ value: ViewFilterOperator;
7703
+ label: string;
7704
+ }[];
7705
+ hasValue(condition: ViewFilterCondition): boolean;
7706
+ hasSecondValue(condition: ViewFilterCondition): boolean;
7707
+ isList(condition: ViewFilterCondition): boolean;
7708
+ inputType(condition: ViewFilterCondition): string;
7709
+ /** Colonne changée : première comparaison de son type, valeur effacée. */
7710
+ onColumnChange(condition: ViewFilterCondition): void;
7711
+ onOperatorChange(condition: ViewFilterCondition): void;
7712
+ toggleValue(condition: ViewFilterCondition, value: string): void;
7713
+ setLogic(group: ViewFilterGroup, logic: 'and' | 'or'): void;
7714
+ addCondition(group: ViewFilterGroup): void;
7715
+ removeCondition(group: ViewFilterGroup, index: number): void;
7716
+ /** Groupe imbriqué, relié à l'inverse de son parent (un ET dans un OU, un OU dans un ET). */
7717
+ addGroup(group: ViewFilterGroup): void;
7718
+ removeGroup(parent: ViewFilterGroup, index: number): void;
7719
+ /** Efface le filtre et le tri, en place (l'éditeur des vues garde les mêmes objets). */
7720
+ clear(): void;
7721
+ addSort(): void;
7722
+ removeSort(index: number): void;
7723
+ moveSort(index: number, offset: number): void;
7724
+ /** Résumé lisible du filtre (« Libellé contient « a » ET (… OU …) »). */
7725
+ summary(group?: ViewFilterGroup): string;
7726
+ trackIndex: (index: number) => number;
7727
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterEditorComponent, never>;
7728
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterEditorComponent, "alg-filter-editor", never, {
7729
+ "columns": {
7730
+ "alias": "columns";
7731
+ "required": false;
7732
+ };
7733
+ "filter": {
7734
+ "alias": "filter";
7735
+ "required": false;
7736
+ };
7737
+ "sort": {
7738
+ "alias": "sort";
7739
+ "required": false;
7740
+ };
7741
+ "embedded": {
7742
+ "alias": "embedded";
7743
+ "required": false;
7744
+ };
7745
+ }, {}, never, never, true, never>;
7746
+ }
6320
7747
  export declare const EXTENDED_ACTION_COMPONENT: InjectionToken<Type<unknown>>;
6321
7748
  export declare const TRACK_RECORD_MODAL_COMPONENT: InjectionToken<Type<unknown>>;