@supersoniks/concorde 4.9.98-visual-stack.1 → 4.9.98-visual-stack.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/.gitlab-ci.yml +0 -13
  2. package/build-infos.json +1 -1
  3. package/concorde-3d.bundle.js +1 -1
  4. package/concorde-3d.es.js +2 -2
  5. package/concorde-core.bundle.js +557 -622
  6. package/concorde-core.es.js +6025 -5575
  7. package/concorde-hugging-face-infer.bundle.js +1 -1
  8. package/concorde-hugging-face-infer.es.js +1 -1
  9. package/concorde-interactive.bundle.js +1162 -0
  10. package/concorde-interactive.es.js +10723 -0
  11. package/concorde-shader.bundle.js +1 -1
  12. package/concorde-shader.es.js +2 -2
  13. package/concorde-webgpu.bundle.js +1 -1
  14. package/concorde-webgpu.es.js +2 -2
  15. package/dist/concorde-3d.bundle.js +1 -1
  16. package/dist/concorde-3d.es.js +2 -2
  17. package/dist/concorde-core.bundle.js +557 -622
  18. package/dist/concorde-core.es.js +6025 -5575
  19. package/dist/concorde-hugging-face-infer.bundle.js +1 -1
  20. package/dist/concorde-hugging-face-infer.es.js +1 -1
  21. package/dist/concorde-interactive.bundle.js +1162 -0
  22. package/dist/concorde-interactive.es.js +10723 -0
  23. package/dist/concorde-shader.bundle.js +1 -1
  24. package/dist/concorde-shader.es.js +2 -2
  25. package/dist/concorde-webgpu.bundle.js +1 -1
  26. package/dist/concorde-webgpu.es.js +2 -2
  27. package/dist/docs-mock-api-sw.js +5 -1
  28. package/dist/docs-mock-api-sw.js.map +2 -2
  29. package/dist/js/addons/interactive.js +6 -0
  30. package/dist/js/addons/interactive.js.map +1 -0
  31. package/dist/js/core/components/functional/if/if.js +65 -7
  32. package/dist/js/core/components/functional/if/if.js.map +1 -1
  33. package/dist/js/core/components/functional/interactive/action.js +96 -0
  34. package/dist/js/core/components/functional/interactive/action.js.map +1 -0
  35. package/dist/js/core/components/functional/interactive/gamepad.js +206 -0
  36. package/dist/js/core/components/functional/interactive/gamepad.js.map +1 -0
  37. package/dist/js/core/components/functional/interactive/gesture.js +148 -0
  38. package/dist/js/core/components/functional/interactive/gesture.js.map +1 -0
  39. package/dist/js/core/components/functional/interactive/helpers.js +82 -0
  40. package/dist/js/core/components/functional/interactive/helpers.js.map +1 -0
  41. package/dist/js/core/components/functional/interactive/index.js +20 -0
  42. package/dist/js/core/components/functional/interactive/index.js.map +1 -0
  43. package/dist/js/core/components/functional/interactive/keyboard.js +183 -0
  44. package/dist/js/core/components/functional/interactive/keyboard.js.map +1 -0
  45. package/dist/js/core/components/functional/interactive/matrix.js +201 -0
  46. package/dist/js/core/components/functional/interactive/matrix.js.map +1 -0
  47. package/dist/js/core/components/functional/interactive/registry.js +28 -0
  48. package/dist/js/core/components/functional/interactive/registry.js.map +1 -0
  49. package/dist/js/core/components/functional/interactive/store.js +264 -0
  50. package/dist/js/core/components/functional/interactive/store.js.map +1 -0
  51. package/dist/js/core/components/functional/interactive/ticker.js +182 -0
  52. package/dist/js/core/components/functional/interactive/ticker.js.map +1 -0
  53. package/dist/js/core/components/functional/value/value.js +49 -4
  54. package/dist/js/core/components/functional/value/value.js.map +1 -1
  55. package/dist/js/core/components/ui/_css/rounded.js +34 -0
  56. package/dist/js/core/components/ui/_css/rounded.js.map +1 -0
  57. package/dist/js/core/components/ui/_css/type.js +44 -0
  58. package/dist/js/core/components/ui/_css/type.js.map +1 -1
  59. package/dist/js/core/components/ui/_i18n/ui-aria-labels.js +95 -0
  60. package/dist/js/core/components/ui/_i18n/ui-aria-labels.js.map +1 -0
  61. package/dist/js/core/components/ui/alert/alert.js +72 -87
  62. package/dist/js/core/components/ui/alert/alert.js.map +1 -1
  63. package/dist/js/core/components/ui/alert-messages/alert-messages.js +1 -0
  64. package/dist/js/core/components/ui/alert-messages/alert-messages.js.map +1 -1
  65. package/dist/js/core/components/ui/badge/badge.js +29 -80
  66. package/dist/js/core/components/ui/badge/badge.js.map +1 -1
  67. package/dist/js/core/components/ui/button/button.js +8 -7
  68. package/dist/js/core/components/ui/button/button.js.map +1 -1
  69. package/dist/js/core/components/ui/card/card-header.js +7 -2
  70. package/dist/js/core/components/ui/card/card-header.js.map +1 -1
  71. package/dist/js/core/components/ui/divider/divider.js +1 -1
  72. package/dist/js/core/components/ui/divider/divider.js.map +1 -1
  73. package/dist/js/core/components/ui/form/checkbox/checkbox.js +4 -20
  74. package/dist/js/core/components/ui/form/checkbox/checkbox.js.map +1 -1
  75. package/dist/js/core/components/ui/form/fieldset/legend-description.js +1 -1
  76. package/dist/js/core/components/ui/form/fieldset/legend.js +1 -1
  77. package/dist/js/core/components/ui/form/input/input.js +12 -15
  78. package/dist/js/core/components/ui/form/input/input.js.map +1 -1
  79. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js +363 -158
  80. package/dist/js/core/components/ui/form/input-autocomplete/input-autocomplete.js.map +1 -1
  81. package/dist/js/core/components/ui/form/radio/radio.js +1 -1
  82. package/dist/js/core/components/ui/form/select/select.js +3 -6
  83. package/dist/js/core/components/ui/form/select/select.js.map +1 -1
  84. package/dist/js/core/components/ui/form/textarea/textarea.js +1 -2
  85. package/dist/js/core/components/ui/form/textarea/textarea.js.map +1 -1
  86. package/dist/js/core/components/ui/image/image.js +9 -37
  87. package/dist/js/core/components/ui/image/image.js.map +1 -1
  88. package/dist/js/core/components/ui/link/link.js +25 -26
  89. package/dist/js/core/components/ui/link/link.js.map +1 -1
  90. package/dist/js/core/components/ui/modal/modal-close.js +3 -12
  91. package/dist/js/core/components/ui/modal/modal-close.js.map +1 -1
  92. package/dist/js/core/components/ui/modal/modal.js +18 -18
  93. package/dist/js/core/components/ui/modal/modal.js.map +1 -1
  94. package/dist/js/core/components/ui/pop/pop.js +131 -112
  95. package/dist/js/core/components/ui/pop/pop.js.map +1 -1
  96. package/dist/js/core/components/ui/table/table.js.map +1 -1
  97. package/dist/js/core/components/ui/theme/theme.js +1 -1
  98. package/dist/js/core/components/ui/toast/dismissed.js +9 -0
  99. package/dist/js/core/components/ui/toast/dismissed.js.map +1 -0
  100. package/dist/js/core/components/ui/toast/render-content.js +14 -0
  101. package/dist/js/core/components/ui/toast/render-content.js.map +1 -0
  102. package/dist/js/core/components/ui/toast/toast-item.js +150 -96
  103. package/dist/js/core/components/ui/toast/toast-item.js.map +1 -1
  104. package/dist/js/core/components/ui/toast/toast.js +41 -13
  105. package/dist/js/core/components/ui/toast/toast.js.map +1 -1
  106. package/dist/js/core/components/ui/tooltip/tooltip.js +144 -143
  107. package/dist/js/core/components/ui/tooltip/tooltip.js.map +1 -1
  108. package/dist/js/core/decorators/subscriber/ancestorAttribute.js.map +1 -1
  109. package/dist/js/core/decorators/subscriber/derive.js +3 -1
  110. package/dist/js/core/decorators/subscriber/derive.js.map +1 -1
  111. package/dist/js/core/mixins/Fetcher.js.map +1 -1
  112. package/dist/js/core/mixins/FormCheckable.js +1 -8
  113. package/dist/js/core/mixins/FormCheckable.js.map +1 -1
  114. package/dist/js/core/mixins/FormElement.js +26 -53
  115. package/dist/js/core/mixins/FormElement.js.map +1 -1
  116. package/dist/js/core/utils/AncestorAttributeObserver.js +130 -55
  117. package/dist/js/core/utils/AncestorAttributeObserver.js.map +1 -1
  118. package/dist/js/core/utils/LocationHandler.js +1 -1
  119. package/dist/js/core/utils/LocationHandler.js.map +1 -1
  120. package/dist/js/core/utils/dismissed.js +23 -0
  121. package/dist/js/core/utils/dismissed.js.map +1 -0
  122. package/dist/js/core/utils/positioning.js +110 -0
  123. package/dist/js/core/utils/positioning.js.map +1 -0
  124. package/dist/js/directives.js +1 -2
  125. package/dist/js/directives.js.map +1 -1
  126. package/dist/types/addons/interactive.d.ts +6 -0
  127. package/dist/types/addons/interactive.d.ts.map +1 -0
  128. package/dist/types/core/components/functional/if/if.d.ts +14 -5
  129. package/dist/types/core/components/functional/if/if.d.ts.map +1 -1
  130. package/dist/types/core/components/functional/interactive/action.d.ts +22 -0
  131. package/dist/types/core/components/functional/interactive/action.d.ts.map +1 -0
  132. package/dist/types/core/components/functional/interactive/gamepad.d.ts +37 -0
  133. package/dist/types/core/components/functional/interactive/gamepad.d.ts.map +1 -0
  134. package/dist/types/core/components/functional/interactive/gesture.d.ts +26 -0
  135. package/dist/types/core/components/functional/interactive/gesture.d.ts.map +1 -0
  136. package/dist/types/core/components/functional/interactive/helpers.d.ts +23 -0
  137. package/dist/types/core/components/functional/interactive/helpers.d.ts.map +1 -0
  138. package/dist/types/core/components/functional/interactive/index.d.ts +20 -0
  139. package/dist/types/core/components/functional/interactive/index.d.ts.map +1 -0
  140. package/dist/types/core/components/functional/interactive/keyboard.d.ts +37 -0
  141. package/dist/types/core/components/functional/interactive/keyboard.d.ts.map +1 -0
  142. package/dist/types/core/components/functional/interactive/matrix.d.ts +31 -0
  143. package/dist/types/core/components/functional/interactive/matrix.d.ts.map +1 -0
  144. package/dist/types/core/components/functional/interactive/registry.d.ts +23 -0
  145. package/dist/types/core/components/functional/interactive/registry.d.ts.map +1 -0
  146. package/dist/types/core/components/functional/interactive/store.d.ts +46 -0
  147. package/dist/types/core/components/functional/interactive/store.d.ts.map +1 -0
  148. package/dist/types/core/components/functional/interactive/ticker.d.ts +33 -0
  149. package/dist/types/core/components/functional/interactive/ticker.d.ts.map +1 -0
  150. package/dist/types/core/components/functional/value/value.d.ts +6 -0
  151. package/dist/types/core/components/functional/value/value.d.ts.map +1 -1
  152. package/dist/types/core/components/ui/_css/rounded.d.ts +3 -0
  153. package/dist/types/core/components/ui/_css/rounded.d.ts.map +1 -0
  154. package/dist/types/core/components/ui/_css/type.d.ts +13 -0
  155. package/dist/types/core/components/ui/_css/type.d.ts.map +1 -1
  156. package/dist/types/core/components/ui/_i18n/ui-aria-labels.d.ts +83 -0
  157. package/dist/types/core/components/ui/_i18n/ui-aria-labels.d.ts.map +1 -0
  158. package/dist/types/core/components/ui/alert/alert.d.ts +14 -12
  159. package/dist/types/core/components/ui/alert/alert.d.ts.map +1 -1
  160. package/dist/types/core/components/ui/alert-messages/alert-messages.d.ts.map +1 -1
  161. package/dist/types/core/components/ui/badge/badge.d.ts +1 -1
  162. package/dist/types/core/components/ui/badge/badge.d.ts.map +1 -1
  163. package/dist/types/core/components/ui/button/button.d.ts +13 -29
  164. package/dist/types/core/components/ui/button/button.d.ts.map +1 -1
  165. package/dist/types/core/components/ui/card/card-header.d.ts.map +1 -1
  166. package/dist/types/core/components/ui/divider/divider.d.ts +2 -1
  167. package/dist/types/core/components/ui/divider/divider.d.ts.map +1 -1
  168. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +25 -73
  169. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts.map +1 -1
  170. package/dist/types/core/components/ui/form/input/input.d.ts +14 -29
  171. package/dist/types/core/components/ui/form/input/input.d.ts.map +1 -1
  172. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +63 -65
  173. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts.map +1 -1
  174. package/dist/types/core/components/ui/form/radio/radio.d.ts +1 -1
  175. package/dist/types/core/components/ui/form/select/select.d.ts +3 -5
  176. package/dist/types/core/components/ui/form/select/select.d.ts.map +1 -1
  177. package/dist/types/core/components/ui/form/textarea/textarea.d.ts +12 -28
  178. package/dist/types/core/components/ui/form/textarea/textarea.d.ts.map +1 -1
  179. package/dist/types/core/components/ui/image/image.d.ts +2 -1
  180. package/dist/types/core/components/ui/image/image.d.ts.map +1 -1
  181. package/dist/types/core/components/ui/link/link.d.ts +10 -9
  182. package/dist/types/core/components/ui/link/link.d.ts.map +1 -1
  183. package/dist/types/core/components/ui/modal/modal-close.d.ts +2 -2
  184. package/dist/types/core/components/ui/modal/modal-close.d.ts.map +1 -1
  185. package/dist/types/core/components/ui/pop/pop.d.ts +12 -4
  186. package/dist/types/core/components/ui/pop/pop.d.ts.map +1 -1
  187. package/dist/types/core/components/ui/table/table.d.ts +2 -1
  188. package/dist/types/core/components/ui/table/table.d.ts.map +1 -1
  189. package/dist/types/core/components/ui/toast/dismissed.d.ts +3 -0
  190. package/dist/types/core/components/ui/toast/dismissed.d.ts.map +1 -0
  191. package/dist/types/core/components/ui/toast/render-content.d.ts +7 -0
  192. package/dist/types/core/components/ui/toast/render-content.d.ts.map +1 -0
  193. package/dist/types/core/components/ui/toast/toast-item.d.ts +26 -9
  194. package/dist/types/core/components/ui/toast/toast-item.d.ts.map +1 -1
  195. package/dist/types/core/components/ui/toast/toast.d.ts +6 -3
  196. package/dist/types/core/components/ui/toast/toast.d.ts.map +1 -1
  197. package/dist/types/core/components/ui/toast/types.d.ts +12 -2
  198. package/dist/types/core/components/ui/toast/types.d.ts.map +1 -1
  199. package/dist/types/core/components/ui/tooltip/tooltip.d.ts +19 -11
  200. package/dist/types/core/components/ui/tooltip/tooltip.d.ts.map +1 -1
  201. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts +3 -4
  202. package/dist/types/core/decorators/subscriber/ancestorAttribute.d.ts.map +1 -1
  203. package/dist/types/core/decorators/subscriber/derive.d.ts.map +1 -1
  204. package/dist/types/core/mixins/FormCheckable.d.ts +10 -27
  205. package/dist/types/core/mixins/FormCheckable.d.ts.map +1 -1
  206. package/dist/types/core/mixins/FormElement.d.ts +21 -10
  207. package/dist/types/core/mixins/FormElement.d.ts.map +1 -1
  208. package/dist/types/core/mixins/FormInput.d.ts +11 -27
  209. package/dist/types/core/mixins/FormInput.d.ts.map +1 -1
  210. package/dist/types/core/utils/AncestorAttributeObserver.d.ts +17 -9
  211. package/dist/types/core/utils/AncestorAttributeObserver.d.ts.map +1 -1
  212. package/dist/types/core/utils/LocationHandler.d.ts +3 -2
  213. package/dist/types/core/utils/LocationHandler.d.ts.map +1 -1
  214. package/dist/types/core/utils/dismissed.d.ts +3 -0
  215. package/dist/types/core/utils/dismissed.d.ts.map +1 -0
  216. package/dist/types/core/utils/positioning.d.ts +44 -0
  217. package/dist/types/core/utils/positioning.d.ts.map +1 -0
  218. package/dist/types/directives.d.ts +1 -3
  219. package/dist/types/directives.d.ts.map +1 -1
  220. package/dist/types/mixins.d.ts +22 -55
  221. package/dist/types/mixins.d.ts.map +1 -1
  222. package/docs/assets/{index-FmK4JaIM.js → index-D8MVWqY6.js} +946 -687
  223. package/docs/assets/index-DiD0qYvE.css +1 -0
  224. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +17 -85
  225. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +1 -1
  226. package/docs/crawl/hubs/form-components.html +13 -11
  227. package/docs/docs-mock-api-sw.js +5 -1
  228. package/docs/docs-mock-api-sw.js.map +2 -2
  229. package/docs/index.html +2 -2
  230. package/docs/llms-full.txt +12 -38
  231. package/docs/llms.txt +1 -1
  232. package/docs/src/core/components/functional/sdui/sdui.md +0 -0
  233. package/docs/src/core/components/ui/form/checkbox/checkbox.md +0 -0
  234. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +14 -118
  235. package/docs/src/docs/_getting-started/create-a-component.md +0 -0
  236. package/docs/src/docs/_misc/formelement-subscriber-removal.md +1 -1
  237. package/docs/src/docs/search/docs-search.json +195 -200
  238. package/docs/src/tsconfig.json +324 -0
  239. package/gitlab/job_tests.sh +25 -12
  240. package/index.html +3 -3
  241. package/package.json +181 -9
  242. package/public/docs-mock-api-sw.js +5 -1
  243. package/public/docs-mock-api-sw.js.map +2 -2
  244. package/scripts/build-addons.mjs +2 -2
  245. package/scripts/post-build.mjs +9 -0
  246. package/src/addons/interactive.ts +5 -0
  247. package/src/core/components/functional/if/if.ts +54 -7
  248. package/src/core/components/functional/interactive/action.ts +84 -0
  249. package/src/core/components/functional/interactive/gamepad.ts +197 -0
  250. package/src/core/components/functional/interactive/gesture.ts +136 -0
  251. package/src/core/components/functional/interactive/helpers.spec.ts +50 -0
  252. package/src/core/components/functional/interactive/helpers.ts +97 -0
  253. package/src/core/components/functional/interactive/index.ts +25 -0
  254. package/src/core/components/functional/interactive/interactive.md +33 -0
  255. package/src/core/components/functional/interactive/keyboard.ts +171 -0
  256. package/src/core/components/functional/interactive/matrix.ts +185 -0
  257. package/src/core/components/functional/interactive/registry.ts +46 -0
  258. package/src/core/components/functional/interactive/store.ts +264 -0
  259. package/src/core/components/functional/interactive/ticker.ts +171 -0
  260. package/src/core/components/functional/list/list.ts +0 -0
  261. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  262. package/src/core/components/functional/value/value.ts +44 -4
  263. package/src/core/components/ui/_css/rounded.ts +36 -0
  264. package/src/core/components/ui/_css/type.ts +49 -0
  265. package/src/core/components/ui/_i18n/ui-aria-labels.ts +104 -0
  266. package/src/core/components/ui/alert/alert.md +128 -72
  267. package/src/core/components/ui/alert/alert.spec.ts +145 -0
  268. package/src/core/components/ui/alert/alert.ts +86 -91
  269. package/src/core/components/ui/alert-messages/alert-messages.ts +1 -1
  270. package/src/core/components/ui/badge/badge.md +126 -78
  271. package/src/core/components/ui/badge/badge.ts +29 -81
  272. package/src/core/components/ui/button/button.md +1 -0
  273. package/src/core/components/ui/button/button.ts +12 -10
  274. package/src/core/components/ui/card/card-header.ts +7 -2
  275. package/src/core/components/ui/card/card.md +120 -65
  276. package/src/core/components/ui/divider/divider.ts +4 -9
  277. package/src/core/components/ui/form/checkbox/checkbox.md +1 -1
  278. package/src/core/components/ui/form/checkbox/checkbox.ts +4 -20
  279. package/src/core/components/ui/form/fieldset/legend-description.ts +1 -1
  280. package/src/core/components/ui/form/fieldset/legend.ts +1 -1
  281. package/src/core/components/ui/form/input/input.md +1 -1
  282. package/src/core/components/ui/form/input/input.ts +25 -27
  283. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +14 -118
  284. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.ts +419 -187
  285. package/src/core/components/ui/form/radio/radio.ts +1 -1
  286. package/src/core/components/ui/form/select/select.ts +3 -6
  287. package/src/core/components/ui/form/textarea/textarea.md +1 -1
  288. package/src/core/components/ui/form/textarea/textarea.ts +1 -2
  289. package/src/core/components/ui/image/image.md +147 -53
  290. package/src/core/components/ui/image/image.ts +10 -44
  291. package/src/core/components/ui/link/link.md +2 -2
  292. package/src/core/components/ui/link/link.ts +42 -37
  293. package/src/core/components/ui/modal/modal-close.ts +8 -12
  294. package/src/core/components/ui/modal/modal.ts +18 -18
  295. package/src/core/components/ui/pop/pop.md +105 -1
  296. package/src/core/components/ui/pop/pop.ts +145 -141
  297. package/src/core/components/ui/table/table.ts +2 -8
  298. package/src/core/components/ui/theme/theme.ts +1 -1
  299. package/src/core/components/ui/toast/dismissed.ts +14 -0
  300. package/src/core/components/ui/toast/render-content.ts +13 -0
  301. package/src/core/components/ui/toast/toast-item.ts +179 -103
  302. package/src/core/components/ui/toast/toast.ts +58 -21
  303. package/src/core/components/ui/toast/types.ts +14 -2
  304. package/src/core/components/ui/tooltip/tooltip.ts +176 -154
  305. package/src/core/decorators/subscriber/ancestorAttribute.spec.ts +26 -0
  306. package/src/core/decorators/subscriber/ancestorAttribute.ts +3 -4
  307. package/src/core/decorators/subscriber/derive.ts +3 -3
  308. package/src/core/mixins/Fetcher.ts +1 -1
  309. package/src/core/mixins/FormCheckable.ts +1 -8
  310. package/src/core/mixins/FormElement.ts +74 -76
  311. package/src/core/mixins/Subscriber.ts +0 -0
  312. package/src/core/utils/AncestorAttributeObserver.ts +183 -70
  313. package/src/core/utils/DataBindObserver.ts +0 -0
  314. package/src/core/utils/LocationHandler.ts +12 -5
  315. package/src/core/utils/Objects.ts +0 -0
  316. package/src/core/utils/dismissed.ts +22 -0
  317. package/src/core/utils/positioning.spec.ts +208 -0
  318. package/src/core/utils/positioning.ts +183 -0
  319. package/src/directives.ts +1 -3
  320. package/src/docs/_core-concept/dataFlow.md +1 -1
  321. package/src/docs/_decorators/ancestor-attribute.md +3 -2
  322. package/src/docs/_getting-started/concorde-outside.md +3 -3
  323. package/src/docs/_misc/formelement-subscriber-removal.md +115 -0
  324. package/src/docs/_misc/html-integration.md +2 -0
  325. package/src/docs/code.ts +3 -1
  326. package/src/docs/components/docs-demo-sources.ts +60 -0
  327. package/src/docs/docs.ts +1 -0
  328. package/src/docs/example/docs-input-autocomplete-demos.ts +110 -0
  329. package/src/docs/mock-api/router.ts +17 -1
  330. package/src/docs/navigation/navigation.ts +4 -0
  331. package/src/docs/search/docs-search.json +943 -2033
  332. package/src/docs/tailwind/css/tailwind.css +13 -6
  333. package/src/tsconfig.json +135 -6
  334. package/src/tsconfig.tsbuildinfo +1 -1
  335. package/tailwind.config.js +50 -3
  336. package/vite/config.js +23 -35
  337. package/vite.config.mts +5 -0
  338. package/vitest.setup.ts +49 -13
  339. package/docs/assets/index-BZiZXMU-.css +0 -1
@@ -1,97 +1,152 @@
1
1
  # Card
2
2
 
3
+ A **surface** for grouped content: padding, radius, shadow, and semantic **`type`** colors via shared theme tokens. Compose **`sonic-card-header`**, **`sonic-card-main`**, and **`sonic-card-footer`** inside the card, or put any markup in the default slot.
4
+
5
+ Default **`type`** is `base` (page background). Use `light` for a subtle gray panel, `invert` / `neutral` for high-contrast blocks, and `primary`, `info`, `success`, `warning`, or `danger` for tinted surfaces (divider tokens apply on colored types).
6
+
3
7
  ## Type
8
+
4
9
  <sonic-code>
5
10
  <template>
6
- <div class="grid grid-cols-3 gap-3">
7
- <sonic-card type="base">Base</sonic-card>
8
- <sonic-card type="light">Light</sonic-card>
9
- <sonic-card type="primary">Primary</sonic-card>
10
- <sonic-card type="warning">Warning</sonic-card>
11
- <sonic-card type="danger">Danger</sonic-card>
12
- <sonic-card type="success">Success</sonic-card>
13
- <sonic-card type="info">Info</sonic-card>
14
- <sonic-card type="neutral">Neutral</sonic-card>
15
- <sonic-card type="invert">Invert</sonic-card>
16
- </div>
11
+ <div class="flex flex-wrap gap-3">
12
+ <sonic-card type="base" class="min-w-[8rem]">Base</sonic-card>
13
+ <sonic-card type="light" class="min-w-[8rem]">Light</sonic-card>
14
+ <sonic-card type="primary" class="min-w-[8rem]">Primary</sonic-card>
15
+ <sonic-card type="info" class="min-w-[8rem]">Info</sonic-card>
16
+ <sonic-card type="success" class="min-w-[8rem]">Success</sonic-card>
17
+ <sonic-card type="warning" class="min-w-[8rem]">Warning</sonic-card>
18
+ <sonic-card type="danger" class="min-w-[8rem]">Danger</sonic-card>
19
+ <sonic-card type="neutral" class="min-w-[8rem]">Neutral</sonic-card>
20
+ <sonic-card type="invert" class="min-w-[8rem]">Invert</sonic-card>
21
+ </div>
17
22
  </template>
18
23
  </sonic-code>
19
24
 
20
25
  ## Header
26
+
27
+ Quick titles with **`label`** and **`description`** attributes, or full control through the default slot. **`slot="suffix"`** aligns badges or actions on the right; suffix content does not shrink when the title wraps.
28
+
21
29
  <sonic-code>
22
30
  <template>
23
- <div class="grid grid-cols-1 gap-3">
24
- <sonic-card >
25
- <sonic-card-header label="Header simple, titre géré via l'attribut : label" description="Description via l'attribut : description">
26
- </sonic-card-header>
27
- </sonic-card>
28
- <sonic-card type="neutral">
29
- <sonic-card-header label="Header composé">
30
- <sonic-card-header-description>Description rendu via le composant : "sonic-card-header-description"</sonic-card-header-description>
31
- <div slot="suffix" class="flex">
32
- Suffix
33
- </div>
34
- </sonic-card-header>
35
- </sonic-card>
36
- <sonic-card type="invert">
37
- <sonic-card-header>
38
- <div>Header custom</div>
39
- <div class="text-lg text-danger">Tout le contenu excepté l'icône ✈ passe par le slot du header</div>
40
- <span slot="suffix" >✈</span>
41
- </sonic-card-header>
42
- </sonic-card>
43
- </div>
31
+ <div class="grid gap-4 max-w-xl">
32
+ <sonic-card>
33
+ <sonic-card-header
34
+ label="Account settings"
35
+ description="Manage your profile and preferences."
36
+ ></sonic-card-header>
37
+ <p class="m-0 text-sm opacity-80">Body content goes in the card slot or in <code>sonic-card-main</code>.</p>
38
+ </sonic-card>
39
+
40
+ <sonic-card type="neutral">
41
+ <sonic-card-header label="Notifications">
42
+ <sonic-card-header-description>
43
+ Choose what we email you about.
44
+ </sonic-card-header-description>
45
+ <sonic-badge slot="suffix" type="warning" size="xs">3 new</sonic-badge>
46
+ </sonic-card-header>
47
+ </sonic-card>
48
+
49
+ <sonic-card>
50
+ <sonic-card-header label="Team workspace" description="Shared with 12 members">
51
+ <sonic-button
52
+ slot="suffix"
53
+ shape="circle"
54
+ variant="outline"
55
+ size="sm"
56
+ type="default"
57
+ icon
58
+ data-aria-label="Workspace settings"
59
+ >
60
+ <sonic-icon library="iconoir" name="settings"></sonic-icon>
61
+ </sonic-button>
62
+ </sonic-card-header>
63
+ </sonic-card>
64
+
65
+ <sonic-card type="primary">
66
+ <sonic-card-header>
67
+ <div>Custom header</div>
68
+ <sonic-card-header-description>
69
+ Use the header slot when attributes are not enough.
70
+ </sonic-card-header-description>
71
+ <sonic-button slot="suffix" shape="circle" variant="ghost" size="sm" type="primary" icon>
72
+ <sonic-icon library="iconoir" name="nav-arrow-right"></sonic-icon>
73
+ </sonic-button>
74
+ </sonic-card-header>
75
+ </sonic-card>
76
+ </div>
44
77
  </template>
45
78
  </sonic-code>
46
79
 
80
+ `label` and `description` accept HTML (rendered as markup). Prefer plain text when possible; use the slot for structured content.
81
+
47
82
  ## Main
83
+
84
+ Optional wrapper for the primary content area (typography, media, forms).
85
+
48
86
  <sonic-code>
49
87
  <template>
50
- <sonic-card >
51
- <sonic-card-main >
52
- <h3>Main area</h3>
53
- <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iure id dolor debitis deleniti eligendi natus dolorem a commodi sunt dicta? Ipsa asperiores magni consequuntur dolor voluptatibus. Maxime, nemo? Facere, odio.</p>
54
- <iframe width="560" height="315" src="https://www.youtube.com/embed/aqz-KE-bpKQ" title="Big Buck Bunny (Blender Foundation)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
55
- </sonic-card-main>
56
- </sonic-card>
88
+ <sonic-card class="max-w-xl">
89
+ <sonic-card-header label="Release notes" description="Version 2.4"></sonic-card-header>
90
+ <sonic-card-main>
91
+ <p class="mt-0">
92
+ Improved performance on large lists and fixed an issue with keyboard navigation in menus.
93
+ </p>
94
+ <sonic-divider></sonic-divider>
95
+ <p class="mb-0 text-sm opacity-80">See the changelog for details.</p>
96
+ </sonic-card-main>
97
+ </sonic-card>
57
98
  </template>
58
99
  </sonic-code>
59
100
 
60
101
  ## Footer
102
+
103
+ Optional footer for actions, metadata, or secondary text.
104
+
61
105
  <sonic-code>
62
106
  <template>
63
- <sonic-card >
64
- <sonic-card-footer >
65
- <div >
66
- <h4 class="mb-0">Footer area</h4>
67
- <small>Debitis deleniti eligendi natus dolorem aufdh.</small>
68
- <div>
69
- 🛫 ✈ ✈ ✈ ✈ ✈ 🛬
107
+ <sonic-card class="max-w-xl">
108
+ <sonic-card-header label="Confirm deletion"></sonic-card-header>
109
+ <sonic-card-main>
110
+ <p class="m-0">This project and all of its data will be removed permanently.</p>
111
+ </sonic-card-main>
112
+ <sonic-card-footer>
113
+ <sonic-divider></sonic-divider>
114
+ <div class="flex flex-wrap gap-2 justify-end">
115
+ <sonic-button variant="ghost" size="sm">Cancel</sonic-button>
116
+ <sonic-button type="danger" size="sm">Delete</sonic-button>
70
117
  </div>
71
- </div>
72
- </sonic-card-footer>
73
- </sonic-card>
118
+ </sonic-card-footer>
119
+ </sonic-card>
74
120
  </template>
75
121
  </sonic-code>
76
122
 
123
+ ## Full example
124
+
125
+ Header, media, body, and footer together.
77
126
 
78
- ## Example of use
79
127
  <sonic-code>
80
128
  <template>
81
- <sonic-card >
82
- <sonic-card-header label="Header" description="Header description">
83
- <sonic-icon library="iconoir" name="nav-arrow-right" slot="suffix" ></sonic-icon>
84
- </sonic-card-header>
85
- <sonic-card-main >
86
- <sonic-image rounded ratio="11/4" src="https://thegoodlife.fr/wp-content/uploads/sites/2/2022/03/compagnies-aeriennes-nostalgie-coeur-insert-03-dr.jpg">
87
- </sonic-image>
88
- <p><b>Main</b> - Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iure id dolor debitis deleniti eligendi natus dolorem a commodi sunt dicta? Ipsa asperiores magni consequuntur dolor voluptatibus. Maxime, nemo? Facere, odio.</p>
89
- </sonic-card-main>
90
- <sonic-card-footer>
91
- <div>
92
- <i>Footer</i> - Amet consectetur adipisicing
93
- </div>
94
- </sonic-card-footer>
95
- </sonic-card>
129
+ <sonic-card class="max-w-md">
130
+ <sonic-card-header label="Featured route" description="San Francisco → New York">
131
+ <sonic-icon slot="suffix" library="iconoir" name="airplane"></sonic-icon>
132
+ </sonic-card-header>
133
+ <sonic-card-main>
134
+ <sonic-image
135
+ rounded
136
+ ratio="16/9"
137
+ src="https://images.unsplash.com/photo-1436491865332-7a61a109cc05?w=800&q=80"
138
+ alt=""
139
+ ></sonic-image>
140
+ <p class="mb-0">
141
+ Nonstop flight with flexible dates. Prices shown include taxes and fees.
142
+ </p>
143
+ </sonic-card-main>
144
+ <sonic-card-footer>
145
+ <div class="flex items-center justify-between gap-3 flex-wrap">
146
+ <span class="text-sm font-semibold">From $249</span>
147
+ <sonic-button type="primary" size="sm">Book</sonic-button>
148
+ </div>
149
+ </sonic-card-footer>
150
+ </sonic-card>
96
151
  </template>
97
152
  </sonic-code>
@@ -6,12 +6,13 @@ import {
6
6
  query,
7
7
  } from "lit/decorators.js";
8
8
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
9
+ import { Size } from "@supersoniks/concorde/core/components/ui/_css/size";
9
10
  const tagName = "sonic-divider";
10
11
  @customElement(tagName)
11
12
  export class Divider extends LitElement {
12
13
  static styles = [
13
14
  css`
14
- :host {
15
+ :host {
15
16
  --sc-divider-my: 0.5rem;
16
17
  --sc-divider-mx: 0;
17
18
  --sc-divider-border-width: max(
@@ -150,14 +151,8 @@ export class Divider extends LitElement {
150
151
  divider!: HTMLDivElement;
151
152
 
152
153
  @property({ type: String }) label = "";
153
- @property({ type: String, reflect: true }) size?:
154
- | "2xs"
155
- | "xs"
156
- | "sm"
157
- | "md"
158
- | "lg"
159
- | "xl"
160
- | "2xl";
154
+ @property({ type: String, reflect: true }) size?: Size;
155
+
161
156
  @property({ type: String, reflect: true }) align:
162
157
  | "left"
163
158
  | "right"
@@ -52,7 +52,7 @@
52
52
  ## Check all checkbox
53
53
  <sonic-code>
54
54
  <template>
55
- <div formDataProvider="checkbox-check-all-demo" dataProvider="checkbox-check-all-demo">
55
+ <div formDataProvider="checkbox-check-all-demo">
56
56
  <sonic-checkbox name='someSharedName' value="all" checksAll>All</sonic-checkbox>
57
57
  <sonic-divider></sonic-divider>
58
58
  <div class="grid gap-2">
@@ -1,7 +1,6 @@
1
1
  import { html, LitElement, css, CSSResultGroup, PropertyValues } from "lit";
2
2
  import { customElement, property, queryAssignedNodes } from "lit/decorators.js";
3
3
  import { ifDefined } from "lit/directives/if-defined.js";
4
- import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
5
4
  import FormElement from "@supersoniks/concorde/core/mixins/FormElement";
6
5
  import FormInput from "@supersoniks/concorde/core/mixins/FormInput";
7
6
  import FormCheckable from "@supersoniks/concorde/core/mixins/FormCheckable";
@@ -11,29 +10,14 @@ import { fontSize } from "@supersoniks/concorde/core/components/ui/_css/size";
11
10
 
12
11
  const tagName = "sonic-checkbox";
13
12
  /**
14
- * ### Le composent sonic-checkbox étend les mixins FormCheckable, FormInput, FormElement et Subscriber
15
- * **FormElement :**
16
- * * La propriété value est remplie automatiquement a l'aide de l'attribut name renseigné, ceci en prenant la valeur de la propriété du même nom dans les données du dataprovider associé.
17
- * * Par défault lorsque modifie l'input, la valeur est également mise à jour via le même dataprovider
18
- * * On peut cependant décider de mettre à jour la donnée à une autre adresse en renseigne l'attribut *formDataProvider*.
19
- * * Par conséquent on peut par exemple le lier à un composant *queue* (via sa propriété *dataFilterProvider*) de manière à appeller en auto une api avec des filtres.
20
- * * **FormInput **
21
- * Uniquement des propriétés classiques d'un input HTML. La prise en compte est ici partielle, par exemple les propriétés *placeholder*, *readonly*, *pattern*, *min* et *max* n'ont pas de sens pour un checkbox.
22
- * **FormCheckable :**
23
- * * La propriété checked mise à true si la valeur de la propriété du même nom dans les données du dataprovider associé contient un propriété checked.
24
- * **Comportements :**
25
- * * multiple (par défaut):
26
- * - on peut cocher plusieurs checkbox ayant le même *name*.
27
- * - la valeur enregistrée dans la propriété nommé du même nom dans formDataProvider est un tableau avec les *value* des cases cochées ayant le même *name*.
28
- * * unique (Ajouter l'attribute unique au composant a l'intégration):
29
- * - on ne peut cocher qu'une seule checkbox ayant le même *name*.
30
- * * radio (Ajouter l'attribute radio au composant a l'intégration):
31
- * Comme unique, mais on ne peut pas décocher la case sauf en en cochant une autre, comme un bouton radio.
13
+ * ### sonic-checkbox — FormCheckable + FormInput + FormElement
14
+ * Synchronise l'état coché via `formDataProvider` + `name`.
15
+ * Modes : multiple (défaut), `unique`, `radio`.
32
16
  */
33
17
 
34
18
  @customElement(tagName)
35
19
  export class Checkbox extends FormCheckable(
36
- FormInput(FormElement(Subscriber(LitElement)))
20
+ FormInput(FormElement(LitElement))
37
21
  ) {
38
22
  static styles = [
39
23
  fontSize,
@@ -6,7 +6,7 @@ export class LegendDescription extends LitElement {
6
6
  static styles = [
7
7
  css`
8
8
  :host {
9
- font-size: 1.15rem;
9
+ font-size: 1.125rem;
10
10
  line-height: 1.2;
11
11
  display: block;
12
12
  color: var(--sc-base-500, var(--sc-base-content, #000));
@@ -11,7 +11,7 @@ export class Legend extends LitElement {
11
11
  static styles = [
12
12
  css`
13
13
  :host {
14
- --sc-legend-font-size: 1.5rem;
14
+ --sc-legend-font-size: 1.25rem;
15
15
  --sc-legend-font-weight: var(--sc-font-weight-base, 400);
16
16
  --sc-legend-font-style: var(--sc-headings-font-style, normal);
17
17
  --sc-legend-family: var(
@@ -2,7 +2,7 @@
2
2
 
3
3
  <sonic-button type="info" size="sm" target="_blank" href="https://www.w3schools.com/tags/tag_input.asp#midcontentadcontainer">
4
4
  <sonic-icon library="iconoir" name="open-new-window" slot="prefix" ></sonic-icon>
5
- Native attibutes list
5
+ Native attributes list
6
6
  </sonic-button>
7
7
 
8
8
  ## Label
@@ -13,27 +13,28 @@ import {
13
13
  description,
14
14
  passwordToggle,
15
15
  } from "@supersoniks/concorde/core/components/ui/form/css/form-control";
16
- import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
17
16
  import FormElement from "@supersoniks/concorde/core/mixins/FormElement";
18
17
  import FormInput from "@supersoniks/concorde/core/mixins/FormInput";
19
18
  import { classMap } from "lit/directives/class-map.js";
20
- import { fontSize } from "@supersoniks/concorde/core/components/ui/_css/size";
19
+ import {
20
+ fontSize,
21
+ Size,
22
+ } from "@supersoniks/concorde/core/components/ui/_css/size";
23
+ import {
24
+ resolveUiLabel,
25
+ uiAriaLabels,
26
+ } from "@supersoniks/concorde/core/components/ui/_i18n/ui-aria-labels";
21
27
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
22
28
 
23
29
  /**
24
- * ### Le composent sonic-input étend les mixins FormInput, FormElement et Subscriber
25
- * **FormElement :**
26
- * * La propriété value est remplie automatiquement a l'aide de l'attribut name renseigné, ceci en prenant la valeur de la propriété du même nom dans les données du dataprovider associé.
27
- * * Par défault lorsque l'on édite l'input, la valeur est également mise à jour via le même dataprovider
28
- * * On peut cependant décider de mettre à jour la donnée à une autre adresse en renseigne l'attribut *formDataProvider*.
29
- * * Par conséquent on peut par exemple le lier à un composant *queue* (via sa propriété *dataFilterProvider*) de manière à appeller en auto une api avec des filtres.
30
- * **FormInput :**
31
- * Uniquement des propriétés classiques d'un input HTML.
30
+ * ### sonic-input — FormInput + FormElement
31
+ * Synchronise `value` via `formDataProvider` + `name`.
32
+ * Peut alimenter un `sonic-queue` via `dataFilterProvider` pointant sur le même store.
32
33
  */
33
34
  const tagName = "sonic-input";
34
35
 
35
36
  @customElement(tagName)
36
- export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
37
+ export class Input extends FormInput(FormElement(LitElement)) {
37
38
  static styles = [
38
39
  fontSize,
39
40
  formControl,
@@ -54,14 +55,7 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
54
55
  /**
55
56
  * Taille du composant, implique notamment des modifications de typo et de marge interne
56
57
  */
57
- @property({ type: String, reflect: true }) size?:
58
- | "2xs"
59
- | "xs"
60
- | "sm"
61
- | "md"
62
- | "lg"
63
- | "xl"
64
- | "2xl";
58
+ @property({ type: String, reflect: true }) size?: Size;
65
59
  @property({ type: String }) inputmode?: string;
66
60
  @property({ type: String }) list?: string;
67
61
  @property({ type: String }) placeholder?: string;
@@ -108,11 +102,11 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
108
102
  super.connectedCallback();
109
103
  this.hasSlotOrProps();
110
104
  if (this.hasAttribute("sameValueAs")) {
111
- this.sameValueAsName = this.getAttribute("sameValueAs");
105
+ this.sameValueAsName = this.getAttribute("sameValueAs") || undefined;
112
106
  this.sameValueAsHandle = (v: string) =>
113
107
  (this.pattern = this.escapeRegExp(v));
114
108
  const formPublisher = this.getFormPublisher();
115
- if (!formPublisher) return;
109
+ if (!formPublisher || !this.sameValueAsName) return;
116
110
  formPublisher[this.sameValueAsName].onAssign(this.sameValueAsHandle);
117
111
  }
118
112
  if (this.type == "password") {
@@ -169,7 +163,7 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
169
163
  if (this.changeTimeoutId) clearTimeout(this.changeTimeoutId);
170
164
  this.changeTimeoutId = setTimeout(
171
165
  () => super.handleChange(e),
172
- parseInt(this.getAttribute("inputDelayMs"))
166
+ parseInt(this.getAttribute("inputDelayMs") || "0"),
173
167
  );
174
168
  }
175
169
 
@@ -218,8 +212,8 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
218
212
  //let labelStarSuffix = this.label && this.required && this.label.indexOf("*") == -1 ? " *" : "";
219
213
  return html`
220
214
  <label for="${this.id || "form-element"}" class="${
221
- this.hasLabel ? "form-label" : "hidden"
222
- }"
215
+ this.hasLabel ? "form-label" : "hidden"
216
+ }"
223
217
  >${this.label ? unsafeHTML(this.label /*+ labelStarSuffix*/) : ""}<slot
224
218
  name="label"
225
219
  @slotchange=${this.hasSlotOrProps}
@@ -227,8 +221,8 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
227
221
  ></label>
228
222
 
229
223
  <div @click=${this.inlineContentFocus} class="form-control ${classMap(
230
- slotClasses
231
- )}">
224
+ slotClasses,
225
+ )}">
232
226
  <div part="content" class="${
233
227
  this.inlineContent ? "form-element form-element-wrapper" : "contents"
234
228
  }">
@@ -269,7 +263,11 @@ export class Input extends FormInput(FormElement(Subscriber(LitElement))) {
269
263
  shape="circle"
270
264
  class="password-toggle"
271
265
  @click=${this.togglePasswordVisibility}
272
- data-aria-label="Toggle password visibility"
266
+ .ariaLabel=${resolveUiLabel(
267
+ this.isPassword
268
+ ? uiAriaLabels.showPassword
269
+ : uiAriaLabels.hidePassword,
270
+ )}
273
271
  variant="unstyled"
274
272
  >
275
273
  <sonic-icon
@@ -1,133 +1,29 @@
1
1
  # Input-autocomplete
2
2
 
3
- The input-autocomplete component brings input and queue together in order to create a suggest behavior. This is why this component is partially configured as a form [input](#core/components/ui/form/input/input.md/input) and as a [queue](#core/components/functional/queue/queue.md/queue).
3
+ Champ formulaire + suggestions via [queue](#core/components/functional/queue/queue.md/queue). Valeur via `formDataProvider` + `name` ; la recherche filtre la queue (store interne).
4
4
 
5
- Please note that only basic text input params and methods are implemented at this time. You should also be sure to understand the behavior of a [queue](#core/components/functional/queue/queue.md/queue) in order to take full advantage of the input-autocomplete component.
5
+ Rendu des lignes : propriété **`.items`** (callback Lit) — voir les démos ci-dessous. Mock : `serviceURL="/docs-mock-api/geo/"`.
6
6
 
7
- Here are some of the features of the input-autocomplete component:
7
+ ## Simple
8
8
 
9
- Doc examples below use HTML binding on suggestion rows. The Lit equivalent uses an **`items`** callback with the row object (see `docs-queue-geo-demo` in `src/docs/example/docs-queue-demos.ts`). Embedding without Lit: [HTML integration](#docs/_misc/html-integration.md/html-integration).
9
+ `name` = paramètre de recherche = valeur formulaire.
10
10
 
11
- * It provides a suggest behavior, where the user can type a few letters and the component will suggest possible matches.
12
- * It can be used with a variety of data providers, such as an API.
13
- * It is fully customizable, so you can change the look and feel of the component to match your needs.
11
+ <docs-lit-demo for="docs-input-autocomplete-basic-demo"></docs-lit-demo>
14
12
 
15
- If you are looking for a component to provide a suggest behavior, the input-autocomplete component is a good option.
13
+ ## Valeur ≠ paramètre de recherche
16
14
 
15
+ Recherche sur `nom`, valeur formulaire = `code`. Préremplissage via `value`.
17
16
 
17
+ <docs-lit-demo for="docs-input-autocomplete-code-demo"></docs-lit-demo>
18
18
 
19
- ## Simple Example
19
+ ## Mode select
20
20
 
21
- In this example, the input will use its name as the search parameter when calling the service responsible for autocompletion.
21
+ À la fermeture du pop, seule une valeur de la liste (ou vide) est conservée.
22
22
 
23
- The template is used to render the list items of results.
24
- The list items are responsible for making a selection.
23
+ <docs-lit-demo for="docs-input-autocomplete-select-demo"></docs-lit-demo>
25
24
 
26
- This time, we added buttons with the same name as the input while keeping the same data provider.
27
- The result is that when you select an item, the input takes the value of the selected item, completing the classic suggest behavior.
25
+ ## Navigation clavier
28
26
 
27
+ `data-keyboard-nav` sur le champ et les items (flèches haut / bas).
29
28
 
30
- <sonic-code>
31
- <template>
32
- <sonic-input-autocomplete
33
- class="w-64"
34
- label="A french city name"
35
- formDataProvider="autoComplete-example-base"
36
- name="nom"
37
- propertyName="bloop"
38
- placeholder="Paris, Lyon, Tours, ..."
39
- serviceurl="/docs-mock-api/geo"
40
- dataproviderexpression="communes?limit=5&boost=population"
41
- >
42
- <template>
43
- <sonic-menu-item debug radio name="nom" data-bind ::inner-html="$nom" ::value="$nom"></sonic-menu-item>
44
- </template>
45
- </sonic-input-autocomplete>
46
- </template>
47
- </sonic-code>
48
-
49
-
50
- ## Value different from search parameter
51
-
52
- In this example, the search parameter is separated from the name of the input. This means that the input will use the name "nom" as the search parameter, but the form data provider will be filled with the data named "siren" from the selected list item.
53
-
54
- To do this, we need to use the `searchParam` attribute on the input element. This attribute specifies the name of the search parameter that will be used.
55
-
56
- We also need to use the `name` and `value` attribute on the list items. This attribute specifies the value of the data provider that will be used for the selected list item.
57
-
58
- By using these attributes, we can separate the search parameter from the name of the input and still fill the form data provider with the data from the selected list item.
59
-
60
-
61
- <sonic-code>
62
- <template>
63
- <sonic-input-autocomplete
64
- class="w-64"
65
- label="A french city name"
66
- formDataProvider="autoComplete-example"
67
- name="siren"
68
- value="212703771"
69
- placeholder="Paris, Lyon, Tours, ..."
70
- serviceurl="/docs-mock-api/geo"
71
- dataproviderexpression="communes?limit=5&boost=population"
72
- searchParameter="nom"
73
- >
74
- <template>
75
- <sonic-menu-item debug radio name="siren" data-bind ::inner-html="$nom" ::value="$siren"></sonic-menu-item>
76
- </template>
77
- </sonic-input-autocomplete>
78
- </template>
79
- </sonic-code>
80
-
81
-
82
- ## Select autocomplete / value different from search parameter
83
-
84
- This example is the same as the previous one, except that the `select` attribute is used. This attribute changes the look and feel of the component slightly.
85
-
86
- Now the text is less free because, you must select either something from the list given by the service, or nothing else.
87
-
88
- The following code shows how to use the `select` attribute in an autocomplete input:
89
-
90
- <sonic-code>
91
- <template>
92
- <sonic-input-autocomplete
93
- select
94
- class="w-64"
95
- label="A french city name"
96
- formDataProvider="autoComplete-example2"
97
- name="siren"
98
- value="212703771"
99
- placeholder="Paris, Lyon, Tours, ..."
100
- serviceurl="/docs-mock-api/geo"
101
- dataproviderexpression="communes?limit=5&boost=population"
102
- searchParameter="nom"
103
- >
104
- <template>
105
- <sonic-menu-item debug radio name="siren" data-bind ::inner-html="$nom" ::value="$siren"></sonic-menu-item>
106
- </template>
107
- </sonic-input-autocomplete>
108
- </template>
109
- </sonic-code>
110
-
111
- ## keyboard navigation
112
-
113
- At the moment you can enable keyboard up/down by adding an attribut "data-keyboard-nav" on the component and its listItems
114
-
115
- <sonic-code>
116
- <template>
117
- <sonic-input-autocomplete
118
- class="w-64"
119
- label="A french city name"
120
- formDataProvider="autoComplete-example-keyboard"
121
- name="nom"
122
- data-keyboard-nav="nav-autocomplete"
123
- placeholder="Paris, Lyon, Tours, ..."
124
- serviceurl="/docs-mock-api/geo"
125
- dataproviderexpression="communes?limit=60&boost=population"
126
- >
127
- <template>
128
- <sonic-menu-item debug radio name="nom" data-keyboard-nav="nav-autocomplete" data-bind ::inner-html="$nom" ::value="$nom"></sonic-menu-item>
129
- </template>
130
- </sonic-input-autocomplete>
131
- </template>
132
- </sonic-code>
133
-
29
+ <docs-lit-demo for="docs-input-autocomplete-keyboard-demo"></docs-lit-demo>