@mozaic-ds/web-components 1.0.0-beta.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. package/README.md +38 -70
  2. package/dist/Cross20.js +1 -1
  3. package/dist/Cross20.js.map +1 -1
  4. package/dist/Cross24.js +1 -1
  5. package/dist/CrossCircleFilled24.js +1 -1
  6. package/dist/attributes.js +1 -1
  7. package/dist/attributes.js.map +1 -1
  8. package/dist/bundle.d.ts +25 -23
  9. package/dist/bundle.d.ts.map +1 -1
  10. package/dist/bundle.js +25 -23
  11. package/dist/components/avatar/Avatar.js +2 -2
  12. package/dist/components/avatar/Avatar.js.map +1 -1
  13. package/dist/components/avatar/Avatar.spec.js +17 -0
  14. package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
  15. package/dist/components/avatar/Avatar.stories.js +4 -32
  16. package/dist/components/avatar/Avatar.svelte +7 -5
  17. package/dist/components/avatar/Avatar.svelte.d.ts +2 -0
  18. package/dist/components/avatar/Avatar.svelte.d.ts.map +1 -1
  19. package/dist/components/avatar/README.md +16 -0
  20. package/dist/components/breadcrumb/Breadcrumb.js +2 -2
  21. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  22. package/dist/components/breadcrumb/Breadcrumb.spec.js +42 -0
  23. package/dist/components/breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  24. package/dist/components/breadcrumb/Breadcrumb.stories.js +7 -39
  25. package/dist/components/breadcrumb/Breadcrumb.svelte +12 -20
  26. package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  27. package/dist/components/breadcrumb/README.md +11 -0
  28. package/dist/components/button/Button.js +2 -2
  29. package/dist/components/button/Button.js.map +1 -1
  30. package/dist/components/button/Button.spec.js +74 -0
  31. package/dist/components/button/Button.stories.d.ts +9 -13
  32. package/dist/components/button/Button.stories.d.ts.map +1 -1
  33. package/dist/components/button/Button.stories.js +46 -146
  34. package/dist/components/button/Button.svelte +70 -53
  35. package/dist/components/button/Button.svelte.d.ts +36 -8
  36. package/dist/components/button/Button.svelte.d.ts.map +1 -1
  37. package/dist/components/button/README.md +26 -0
  38. package/dist/components/callout/Callout.js +2 -5
  39. package/dist/components/callout/Callout.js.map +1 -1
  40. package/dist/components/callout/Callout.spec.js +33 -0
  41. package/dist/components/callout/Callout.stories.d.ts.map +1 -1
  42. package/dist/components/callout/Callout.stories.js +2 -55
  43. package/dist/components/callout/Callout.svelte +12 -15
  44. package/dist/components/callout/Callout.svelte.d.ts +4 -0
  45. package/dist/components/callout/Callout.svelte.d.ts.map +1 -1
  46. package/dist/components/callout/README.md +20 -0
  47. package/dist/components/checkbox/Checkbox.js +3 -3
  48. package/dist/components/checkbox/Checkbox.js.map +1 -1
  49. package/dist/components/checkbox/Checkbox.spec.js +70 -0
  50. package/dist/components/checkbox/Checkbox.stories.d.ts +11 -16
  51. package/dist/components/checkbox/Checkbox.stories.d.ts.map +1 -1
  52. package/dist/components/checkbox/Checkbox.stories.js +67 -124
  53. package/dist/components/checkbox/Checkbox.svelte +42 -22
  54. package/dist/components/checkbox/Checkbox.svelte.d.ts +31 -6
  55. package/dist/components/checkbox/Checkbox.svelte.d.ts.map +1 -1
  56. package/dist/components/checkbox/README.md +17 -0
  57. package/dist/components/checkboxgroup/CheckboxGroup.js +3 -3
  58. package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
  59. package/dist/components/checkboxgroup/CheckboxGroup.spec.js +111 -0
  60. package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts +5 -13
  61. package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts.map +1 -1
  62. package/dist/components/checkboxgroup/CheckboxGroup.stories.js +56 -140
  63. package/dist/components/checkboxgroup/CheckboxGroup.svelte +54 -49
  64. package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts +30 -6
  65. package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts.map +1 -1
  66. package/dist/components/checkboxgroup/README.md +14 -0
  67. package/dist/components/circularprogressbar/CircularProgressbar.js +2 -2
  68. package/dist/components/circularprogressbar/CircularProgressbar.js.map +1 -1
  69. package/dist/components/circularprogressbar/CircularProgressbar.spec.js +74 -0
  70. package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts +6 -6
  71. package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts.map +1 -1
  72. package/dist/components/circularprogressbar/CircularProgressbar.stories.js +29 -68
  73. package/dist/components/circularprogressbar/CircularProgressbar.svelte +20 -10
  74. package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts +18 -0
  75. package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts.map +1 -1
  76. package/dist/components/circularprogressbar/README.md +14 -0
  77. package/dist/components/datepicker/Datepicker.js +3 -3
  78. package/dist/components/datepicker/Datepicker.js.map +1 -1
  79. package/dist/components/datepicker/Datepicker.spec.js +95 -0
  80. package/dist/components/datepicker/Datepicker.stories.d.ts +7 -6
  81. package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
  82. package/dist/components/datepicker/Datepicker.stories.js +58 -75
  83. package/dist/components/datepicker/Datepicker.svelte +47 -33
  84. package/dist/components/datepicker/Datepicker.svelte.d.ts +31 -2
  85. package/dist/components/datepicker/Datepicker.svelte.d.ts.map +1 -1
  86. package/dist/components/datepicker/README.md +18 -0
  87. package/dist/components/drawer/Drawer.js +2 -2
  88. package/dist/components/drawer/Drawer.js.map +1 -1
  89. package/dist/components/drawer/Drawer.spec.js +101 -0
  90. package/dist/components/drawer/Drawer.stories.d.ts +29 -8
  91. package/dist/components/drawer/Drawer.stories.d.ts.map +1 -1
  92. package/dist/components/drawer/Drawer.stories.js +85 -87
  93. package/dist/components/drawer/Drawer.svelte +74 -38
  94. package/dist/components/drawer/Drawer.svelte.d.ts +34 -3
  95. package/dist/components/drawer/Drawer.svelte.d.ts.map +1 -1
  96. package/dist/components/drawer/README.md +31 -0
  97. package/dist/components/field/Field.js +2 -2
  98. package/dist/components/field/Field.js.map +1 -1
  99. package/dist/components/field/Field.spec.js +98 -0
  100. package/dist/components/field/Field.stories.d.ts +10 -15
  101. package/dist/components/field/Field.stories.d.ts.map +1 -1
  102. package/dist/components/field/Field.stories.js +100 -141
  103. package/dist/components/field/Field.svelte +55 -13
  104. package/dist/components/field/Field.svelte.d.ts +42 -7
  105. package/dist/components/field/Field.svelte.d.ts.map +1 -1
  106. package/dist/components/field/README.md +25 -0
  107. package/dist/components/flag/Flag.js +2 -2
  108. package/dist/components/flag/Flag.js.map +1 -1
  109. package/dist/components/flag/Flag.spec.js +30 -0
  110. package/dist/components/flag/Flag.stories.d.ts +8 -18
  111. package/dist/components/flag/Flag.stories.d.ts.map +1 -1
  112. package/dist/components/flag/Flag.stories.js +22 -103
  113. package/dist/components/flag/Flag.svelte +11 -9
  114. package/dist/components/flag/Flag.svelte.d.ts +10 -28
  115. package/dist/components/flag/Flag.svelte.d.ts.map +1 -1
  116. package/dist/components/flag/README.md +11 -0
  117. package/dist/components/iconbutton/IconButton.js +2 -2
  118. package/dist/components/iconbutton/IconButton.js.map +1 -1
  119. package/dist/components/iconbutton/IconButton.stories.d.ts +11 -11
  120. package/dist/components/iconbutton/IconButton.stories.d.ts.map +1 -1
  121. package/dist/components/iconbutton/IconButton.stories.js +51 -67
  122. package/dist/components/iconbutton/IconButton.svelte +41 -37
  123. package/dist/components/iconbutton/IconButton.svelte.d.ts +28 -7
  124. package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
  125. package/dist/components/iconbutton/README.md +21 -0
  126. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
  127. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js.map +1 -1
  128. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.spec.js +28 -0
  129. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts +5 -7
  130. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts.map +1 -1
  131. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.js +18 -49
  132. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte +12 -7
  133. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts +10 -1
  134. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts.map +1 -1
  135. package/dist/components/linearprogressbarbuffer/README.md +11 -0
  136. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
  137. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js.map +1 -1
  138. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.spec.js +26 -0
  139. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts +4 -5
  140. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts.map +1 -1
  141. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.js +15 -33
  142. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte +6 -0
  143. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts +6 -0
  144. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts.map +1 -1
  145. package/dist/components/linearprogressbarpercentage/README.md +10 -0
  146. package/dist/components/link/Link.js +2 -2
  147. package/dist/components/link/Link.js.map +1 -1
  148. package/dist/components/link/Link.spec.js +51 -0
  149. package/dist/components/link/Link.stories.d.ts +12 -12
  150. package/dist/components/link/Link.stories.d.ts.map +1 -1
  151. package/dist/components/link/Link.stories.js +61 -74
  152. package/dist/components/link/Link.svelte +45 -40
  153. package/dist/components/link/Link.svelte.d.ts +29 -8
  154. package/dist/components/link/Link.svelte.d.ts.map +1 -1
  155. package/dist/components/link/README.md +23 -0
  156. package/dist/components/loader/Loader.js +2 -2
  157. package/dist/components/loader/Loader.js.map +1 -1
  158. package/dist/components/loader/Loader.spec.js +73 -0
  159. package/dist/components/loader/Loader.stories.d.ts +8 -10
  160. package/dist/components/loader/Loader.stories.d.ts.map +1 -1
  161. package/dist/components/loader/Loader.stories.js +26 -42
  162. package/dist/components/loader/Loader.svelte +37 -35
  163. package/dist/components/loader/Loader.svelte.d.ts +14 -3
  164. package/dist/components/loader/Loader.svelte.d.ts.map +1 -1
  165. package/dist/components/loader/README.md +12 -0
  166. package/dist/components/loadingoverlay/LoadingOverlay.js +4 -0
  167. package/dist/components/loadingoverlay/LoadingOverlay.js.map +1 -0
  168. package/dist/components/loadingoverlay/LoadingOverlay.spec.js +38 -0
  169. package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts +7 -0
  170. package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts.map +1 -0
  171. package/dist/components/loadingoverlay/LoadingOverlay.stories.js +39 -0
  172. package/dist/components/loadingoverlay/LoadingOverlay.svelte +50 -0
  173. package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts +17 -0
  174. package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts.map +1 -0
  175. package/dist/components/loadingoverlay/README.md +11 -0
  176. package/dist/components/modal/Modal.js +2 -2
  177. package/dist/components/modal/Modal.js.map +1 -1
  178. package/dist/components/modal/Modal.spec.js +50 -0
  179. package/dist/components/modal/Modal.stories.d.ts +36 -9
  180. package/dist/components/modal/Modal.stories.d.ts.map +1 -1
  181. package/dist/components/modal/Modal.stories.js +52 -83
  182. package/dist/components/modal/Modal.svelte +42 -41
  183. package/dist/components/modal/Modal.svelte.d.ts +22 -5
  184. package/dist/components/modal/Modal.svelte.d.ts.map +1 -1
  185. package/dist/components/modal/README.md +28 -0
  186. package/dist/components/numberbadge/NumberBadge.js +2 -2
  187. package/dist/components/numberbadge/NumberBadge.js.map +1 -1
  188. package/dist/components/numberbadge/NumberBadge.spec.js +28 -0
  189. package/dist/components/numberbadge/NumberBadge.stories.d.ts +9 -13
  190. package/dist/components/numberbadge/NumberBadge.stories.d.ts.map +1 -1
  191. package/dist/components/numberbadge/NumberBadge.stories.js +28 -56
  192. package/dist/components/numberbadge/NumberBadge.svelte +18 -20
  193. package/dist/components/numberbadge/NumberBadge.svelte.d.ts +15 -4
  194. package/dist/components/numberbadge/NumberBadge.svelte.d.ts.map +1 -1
  195. package/dist/components/numberbadge/README.md +12 -0
  196. package/dist/components/overlay/Overlay.js +2 -2
  197. package/dist/components/overlay/Overlay.js.map +1 -1
  198. package/dist/components/overlay/Overlay.spec.js +29 -0
  199. package/dist/components/overlay/Overlay.stories.d.ts +5 -7
  200. package/dist/components/overlay/Overlay.stories.d.ts.map +1 -1
  201. package/dist/components/overlay/Overlay.stories.js +29 -40
  202. package/dist/components/overlay/Overlay.svelte +14 -4
  203. package/dist/components/overlay/Overlay.svelte.d.ts +11 -0
  204. package/dist/components/overlay/Overlay.svelte.d.ts.map +1 -1
  205. package/dist/components/overlay/README.md +17 -0
  206. package/dist/components/pagination/Pagination.js +6 -6
  207. package/dist/components/pagination/Pagination.js.map +1 -1
  208. package/dist/components/pagination/Pagination.spec.js +65 -0
  209. package/dist/components/pagination/Pagination.stories.d.ts +8 -11
  210. package/dist/components/pagination/Pagination.stories.d.ts.map +1 -1
  211. package/dist/components/pagination/Pagination.stories.js +37 -91
  212. package/dist/components/pagination/Pagination.svelte +37 -34
  213. package/dist/components/pagination/Pagination.svelte.d.ts +27 -4
  214. package/dist/components/pagination/Pagination.svelte.d.ts.map +1 -1
  215. package/dist/components/pagination/README.md +16 -0
  216. package/dist/components/passwordinput/PasswordInput.js +3 -4
  217. package/dist/components/passwordinput/PasswordInput.js.map +1 -1
  218. package/dist/components/passwordinput/PasswordInput.spec.js +84 -0
  219. package/dist/components/passwordinput/PasswordInput.stories.d.ts +10 -13
  220. package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
  221. package/dist/components/passwordinput/PasswordInput.stories.js +67 -124
  222. package/dist/components/passwordinput/PasswordInput.svelte +387 -28
  223. package/dist/components/passwordinput/PasswordInput.svelte.d.ts +33 -1
  224. package/dist/components/passwordinput/PasswordInput.svelte.d.ts.map +1 -1
  225. package/dist/components/passwordinput/README.md +19 -0
  226. package/dist/components/pincode/Pincode.js +2 -2
  227. package/dist/components/pincode/Pincode.js.map +1 -1
  228. package/dist/components/pincode/Pincode.spec.js +99 -0
  229. package/dist/components/pincode/Pincode.stories.d.ts +9 -13
  230. package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
  231. package/dist/components/pincode/Pincode.stories.js +62 -127
  232. package/dist/components/pincode/Pincode.svelte +56 -53
  233. package/dist/components/pincode/Pincode.svelte.d.ts +30 -24
  234. package/dist/components/pincode/Pincode.svelte.d.ts.map +1 -1
  235. package/dist/components/pincode/README.md +22 -0
  236. package/dist/components/quantityselector/QuantitySelector.js +2 -2
  237. package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
  238. package/dist/components/quantityselector/QuantitySelector.spec.js +104 -0
  239. package/dist/components/quantityselector/QuantitySelector.stories.d.ts +10 -15
  240. package/dist/components/quantityselector/QuantitySelector.stories.d.ts.map +1 -1
  241. package/dist/components/quantityselector/QuantitySelector.stories.js +72 -146
  242. package/dist/components/quantityselector/QuantitySelector.svelte +94 -77
  243. package/dist/components/quantityselector/QuantitySelector.svelte.d.ts +49 -17
  244. package/dist/components/quantityselector/QuantitySelector.svelte.d.ts.map +1 -1
  245. package/dist/components/quantityselector/README.md +21 -0
  246. package/dist/components/radio/README.md +15 -0
  247. package/dist/components/radio/Radio.js +2 -2
  248. package/dist/components/radio/Radio.js.map +1 -1
  249. package/dist/components/radio/Radio.spec.js +60 -0
  250. package/dist/components/radio/Radio.stories.d.ts +9 -13
  251. package/dist/components/radio/Radio.stories.d.ts.map +1 -1
  252. package/dist/components/radio/Radio.stories.js +54 -70
  253. package/dist/components/radio/Radio.svelte +35 -20
  254. package/dist/components/radio/Radio.svelte.d.ts +27 -5
  255. package/dist/components/radio/Radio.svelte.d.ts.map +1 -1
  256. package/dist/components/radiogroup/README.md +14 -0
  257. package/dist/components/radiogroup/RadioGroup.js +3 -3
  258. package/dist/components/radiogroup/RadioGroup.js.map +1 -1
  259. package/dist/components/radiogroup/RadioGroup.spec.js +65 -0
  260. package/dist/components/radiogroup/RadioGroup.stories.d.ts +5 -12
  261. package/dist/components/radiogroup/RadioGroup.stories.d.ts.map +1 -1
  262. package/dist/components/radiogroup/RadioGroup.stories.js +56 -151
  263. package/dist/components/radiogroup/RadioGroup.svelte +48 -47
  264. package/dist/components/radiogroup/RadioGroup.svelte.d.ts +28 -9
  265. package/dist/components/radiogroup/RadioGroup.svelte.d.ts.map +1 -1
  266. package/dist/components/segmentedcontrol/README.md +19 -0
  267. package/dist/components/segmentedcontrol/SegmentedControl.js +4 -0
  268. package/dist/components/segmentedcontrol/SegmentedControl.js.map +1 -0
  269. package/dist/components/segmentedcontrol/SegmentedControl.spec.js +52 -0
  270. package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts +8 -0
  271. package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts.map +1 -0
  272. package/dist/components/segmentedcontrol/SegmentedControl.stories.js +54 -0
  273. package/dist/components/segmentedcontrol/SegmentedControl.svelte +125 -0
  274. package/dist/components/segmentedcontrol/SegmentedControl.svelte.d.ts +32 -0
  275. package/dist/components/segmentedcontrol/SegmentedControl.svelte.d.ts.map +1 -0
  276. package/dist/components/select/README.md +18 -0
  277. package/dist/components/select/Select.js +2 -2
  278. package/dist/components/select/Select.js.map +1 -1
  279. package/dist/components/select/Select.spec.js +76 -0
  280. package/dist/components/select/Select.stories.d.ts +10 -14
  281. package/dist/components/select/Select.stories.d.ts.map +1 -1
  282. package/dist/components/select/Select.stories.js +87 -92
  283. package/dist/components/select/Select.svelte +57 -44
  284. package/dist/components/select/Select.svelte.d.ts +42 -11
  285. package/dist/components/select/Select.svelte.d.ts.map +1 -1
  286. package/dist/components/statusbadge/README.md +11 -0
  287. package/dist/components/statusbadge/StatusBadge.js +2 -2
  288. package/dist/components/statusbadge/StatusBadge.js.map +1 -1
  289. package/dist/components/statusbadge/StatusBadge.spec.js +31 -0
  290. package/dist/components/statusbadge/StatusBadge.stories.d.ts +9 -12
  291. package/dist/components/statusbadge/StatusBadge.stories.d.ts.map +1 -1
  292. package/dist/components/statusbadge/StatusBadge.stories.js +21 -44
  293. package/dist/components/statusbadge/StatusBadge.svelte +14 -6
  294. package/dist/components/statusbadge/StatusBadge.svelte.d.ts +13 -28
  295. package/dist/components/statusbadge/StatusBadge.svelte.d.ts.map +1 -1
  296. package/dist/components/statusdot/README.md +11 -0
  297. package/dist/components/statusdot/StatusDot.js +2 -2
  298. package/dist/components/statusdot/StatusDot.js.map +1 -1
  299. package/dist/components/statusdot/StatusDot.spec.js +36 -0
  300. package/dist/components/statusdot/StatusDot.stories.d.ts.map +1 -1
  301. package/dist/components/statusdot/StatusDot.stories.js +9 -37
  302. package/dist/components/statusdot/StatusDot.svelte +5 -9
  303. package/dist/components/statusdot/StatusDot.svelte.d.ts +2 -2
  304. package/dist/components/statusdot/StatusDot.svelte.d.ts.map +1 -1
  305. package/dist/components/statusnotification/README.md +25 -0
  306. package/dist/components/statusnotification/StatusNotification.js +2 -6
  307. package/dist/components/statusnotification/StatusNotification.js.map +1 -1
  308. package/dist/components/statusnotification/StatusNotification.spec.js +54 -0
  309. package/dist/components/statusnotification/StatusNotification.stories.d.ts +16 -14
  310. package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
  311. package/dist/components/statusnotification/StatusNotification.stories.js +53 -86
  312. package/dist/components/statusnotification/StatusNotification.svelte +53 -64
  313. package/dist/components/statusnotification/StatusNotification.svelte.d.ts +21 -18
  314. package/dist/components/statusnotification/StatusNotification.svelte.d.ts.map +1 -1
  315. package/dist/components/tab/README.md +20 -0
  316. package/dist/components/tab/Tab.js +4 -0
  317. package/dist/components/tab/Tab.js.map +1 -0
  318. package/dist/components/tab/Tab.spec.js +58 -0
  319. package/dist/components/{tabs → tab}/Tab.svelte +44 -30
  320. package/dist/components/{tabs → tab}/Tab.svelte.d.ts +20 -3
  321. package/dist/components/tab/Tab.svelte.d.ts.map +1 -0
  322. package/dist/components/tabs/README.md +18 -0
  323. package/dist/components/tabs/Tabs.js +2 -2
  324. package/dist/components/tabs/Tabs.js.map +1 -1
  325. package/dist/components/tabs/Tabs.spec.js +51 -0
  326. package/dist/components/tabs/Tabs.stories.d.ts +9 -6
  327. package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
  328. package/dist/components/tabs/Tabs.stories.js +59 -115
  329. package/dist/components/tabs/Tabs.svelte +27 -7
  330. package/dist/components/tabs/Tabs.svelte.d.ts +21 -7
  331. package/dist/components/tabs/Tabs.svelte.d.ts.map +1 -1
  332. package/dist/components/tags/README.md +9 -0
  333. package/dist/components/tags/Tag.js +1 -1
  334. package/dist/components/tags/TagContextualised.js +2 -2
  335. package/dist/components/tags/TagContextualised.js.map +1 -1
  336. package/dist/components/tags/TagContextualised.svelte +1 -5
  337. package/dist/components/tags/TagInteractive.js +1 -1
  338. package/dist/components/tags/TagRemovable.js +2 -2
  339. package/dist/components/tags/TagRemovable.js.map +1 -1
  340. package/dist/components/tags/TagRemovable.svelte +2 -12
  341. package/dist/components/tags/TagRemovable.svelte.d.ts.map +1 -1
  342. package/dist/components/tags/TagSelectable.js +2 -2
  343. package/dist/components/tags/TagSelectable.js.map +1 -1
  344. package/dist/components/tags/TagSelectable.svelte +1 -5
  345. package/dist/components/tags/Tags.stories.d.ts.map +1 -1
  346. package/dist/components/tags/Tags.stories.js +7 -1
  347. package/dist/components/tags/TagsContextualised.stories.d.ts.map +1 -1
  348. package/dist/components/tags/TagsContextualised.stories.js +7 -1
  349. package/dist/components/tags/TagsInteractive.stories.d.ts.map +1 -1
  350. package/dist/components/tags/TagsInteractive.stories.js +7 -1
  351. package/dist/components/tags/TagsRemovable.stories.d.ts.map +1 -1
  352. package/dist/components/tags/TagsRemovable.stories.js +8 -4
  353. package/dist/components/tags/TagsSelectable.stories.d.ts.map +1 -1
  354. package/dist/components/tags/TagsSelectable.stories.js +7 -1
  355. package/dist/components/textarea/README.md +19 -0
  356. package/dist/components/textarea/Textarea.js +2 -5
  357. package/dist/components/textarea/Textarea.js.map +1 -1
  358. package/dist/components/textarea/Textarea.spec.js +67 -0
  359. package/dist/components/textarea/Textarea.stories.d.ts +9 -13
  360. package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
  361. package/dist/components/textarea/Textarea.stories.js +61 -92
  362. package/dist/components/textarea/Textarea.svelte +51 -97
  363. package/dist/components/textarea/Textarea.svelte.d.ts +43 -13
  364. package/dist/components/textarea/Textarea.svelte.d.ts.map +1 -1
  365. package/dist/components/textinput/README.md +26 -0
  366. package/dist/components/textinput/Textinput.js +2 -2
  367. package/dist/components/textinput/Textinput.js.map +1 -1
  368. package/dist/components/textinput/Textinput.spec.js +89 -0
  369. package/dist/components/textinput/Textinput.stories.d.ts +11 -12
  370. package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
  371. package/dist/components/textinput/Textinput.stories.js +78 -137
  372. package/dist/components/textinput/Textinput.svelte +68 -118
  373. package/dist/components/textinput/Textinput.svelte.d.ts +47 -23
  374. package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
  375. package/dist/components/toaster/README.md +29 -0
  376. package/dist/components/toaster/Toaster.js +3 -7
  377. package/dist/components/toaster/Toaster.js.map +1 -1
  378. package/dist/components/toaster/Toaster.spec.js +100 -0
  379. package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
  380. package/dist/components/toaster/Toaster.stories.js +5 -73
  381. package/dist/components/toaster/Toaster.svelte +21 -14
  382. package/dist/components/toaster/Toaster.svelte.d.ts +7 -0
  383. package/dist/components/toaster/Toaster.svelte.d.ts.map +1 -1
  384. package/dist/components/toggle/README.md +15 -0
  385. package/dist/components/toggle/Toggle.js +2 -2
  386. package/dist/components/toggle/Toggle.js.map +1 -1
  387. package/dist/components/toggle/Toggle.spec.js +69 -0
  388. package/dist/components/toggle/Toggle.stories.d.ts +9 -14
  389. package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
  390. package/dist/components/toggle/Toggle.stories.js +55 -64
  391. package/dist/components/toggle/Toggle.svelte +33 -33
  392. package/dist/components/toggle/Toggle.svelte.d.ts +26 -7
  393. package/dist/components/toggle/Toggle.svelte.d.ts.map +1 -1
  394. package/dist/components/togglegroup/README.md +13 -0
  395. package/dist/components/togglegroup/ToggleGroup.js +3 -3
  396. package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
  397. package/dist/components/togglegroup/ToggleGroup.spec.js +50 -0
  398. package/dist/components/togglegroup/ToggleGroup.stories.d.ts +5 -13
  399. package/dist/components/togglegroup/ToggleGroup.stories.d.ts.map +1 -1
  400. package/dist/components/togglegroup/ToggleGroup.stories.js +56 -104
  401. package/dist/components/togglegroup/ToggleGroup.svelte +55 -58
  402. package/dist/components/togglegroup/ToggleGroup.svelte.d.ts +25 -14
  403. package/dist/components/togglegroup/ToggleGroup.svelte.d.ts.map +1 -1
  404. package/dist/components/tooltip/README.md +19 -0
  405. package/dist/components/tooltip/Tooltip.js +2 -2
  406. package/dist/components/tooltip/Tooltip.js.map +1 -1
  407. package/dist/components/tooltip/Tooltip.spec.js +38 -0
  408. package/dist/components/tooltip/Tooltip.stories.d.ts +6 -7
  409. package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
  410. package/dist/components/tooltip/Tooltip.stories.js +45 -59
  411. package/dist/components/tooltip/Tooltip.svelte +19 -14
  412. package/dist/components/tooltip/Tooltip.svelte.d.ts +17 -0
  413. package/dist/components/tooltip/Tooltip.svelte.d.ts.map +1 -1
  414. package/dist/custom-element-forward-events.js.map +1 -1
  415. package/dist/custom-element.js +3 -3
  416. package/dist/custom-element.js.map +1 -1
  417. package/dist/documentation/Contributing.mdx +1 -1
  418. package/dist/documentation/Introduction.mdx +54 -11
  419. package/dist/documentation/SupportAndOnboarding.mdx +2 -2
  420. package/dist/documentation/Svelte/Introduction.mdx +1 -1
  421. package/dist/documentation/Svelte/usingPresets.mdx +5 -6
  422. package/dist/documentation/WebComponents/Introduction.mdx +0 -1
  423. package/dist/documentation/WebComponents/usingIcons.mdx +2 -3
  424. package/dist/documentation/WebComponents/usingPresets.mdx +3 -4
  425. package/dist/each.js +1 -1
  426. package/dist/each.js.map +1 -1
  427. package/dist/if.js +1 -1
  428. package/dist/if.js.map +1 -1
  429. package/dist/input.js +1 -1
  430. package/dist/input.js.map +1 -1
  431. package/dist/legacy.js +1 -1
  432. package/dist/main.d.ts +25 -23
  433. package/dist/main.d.ts.map +1 -1
  434. package/dist/main.js +25 -23
  435. package/dist/slot.js +1 -1
  436. package/dist/slot.js.map +1 -1
  437. package/dist/this.js +2 -0
  438. package/dist/this.js.map +1 -0
  439. package/dist/utils/custom-element-forward-events.d.ts.map +1 -1
  440. package/package.json +32 -22
  441. package/dist/components/button/button.types.d.ts +0 -13
  442. package/dist/components/button/button.types.d.ts.map +0 -1
  443. package/dist/components/button/button.types.js +0 -1
  444. package/dist/components/checkboxgroup/checkboxgroup.types.d.ts +0 -9
  445. package/dist/components/checkboxgroup/checkboxgroup.types.d.ts.map +0 -1
  446. package/dist/components/checkboxgroup/checkboxgroup.types.js +0 -1
  447. package/dist/components/link/link.types.d.ts +0 -4
  448. package/dist/components/link/link.types.d.ts.map +0 -1
  449. package/dist/components/link/link.types.js +0 -1
  450. package/dist/components/loader/loader.types.d.ts +0 -3
  451. package/dist/components/loader/loader.types.d.ts.map +0 -1
  452. package/dist/components/loader/loader.types.js +0 -1
  453. package/dist/components/numberbadge/NumberBadge.types.d.ts +0 -3
  454. package/dist/components/numberbadge/NumberBadge.types.d.ts.map +0 -1
  455. package/dist/components/numberbadge/NumberBadge.types.js +0 -1
  456. package/dist/components/overlayloader/OverlayLoader.js +0 -27
  457. package/dist/components/overlayloader/OverlayLoader.js.map +0 -1
  458. package/dist/components/overlayloader/OverlayLoader.stories.d.ts +0 -8
  459. package/dist/components/overlayloader/OverlayLoader.stories.d.ts.map +0 -1
  460. package/dist/components/overlayloader/OverlayLoader.stories.js +0 -50
  461. package/dist/components/overlayloader/OverlayLoader.svelte +0 -160
  462. package/dist/components/overlayloader/OverlayLoader.svelte.d.ts +0 -9
  463. package/dist/components/overlayloader/OverlayLoader.svelte.d.ts.map +0 -1
  464. package/dist/components/quantityselector/quantitySelector.types.d.ts +0 -2
  465. package/dist/components/quantityselector/quantitySelector.types.d.ts.map +0 -1
  466. package/dist/components/quantityselector/quantitySelector.types.js +0 -1
  467. package/dist/components/radiogroup/radioGroup.types.d.ts +0 -9
  468. package/dist/components/radiogroup/radioGroup.types.d.ts.map +0 -1
  469. package/dist/components/radiogroup/radioGroup.types.js +0 -1
  470. package/dist/components/select/select.types.d.ts +0 -9
  471. package/dist/components/select/select.types.d.ts.map +0 -1
  472. package/dist/components/select/select.types.js +0 -1
  473. package/dist/components/statusbadge/StatusBadge.types.d.ts +0 -2
  474. package/dist/components/statusbadge/StatusBadge.types.d.ts.map +0 -1
  475. package/dist/components/statusbadge/StatusBadge.types.js +0 -1
  476. package/dist/components/statusdot/StatusDot.types.d.ts +0 -3
  477. package/dist/components/statusdot/StatusDot.types.d.ts.map +0 -1
  478. package/dist/components/statusdot/StatusDot.types.js +0 -1
  479. package/dist/components/tabs/Tab.js +0 -4
  480. package/dist/components/tabs/Tab.js.map +0 -1
  481. package/dist/components/tabs/Tab.svelte.d.ts.map +0 -1
  482. package/dist/components/textinput/textinput.types.d.ts +0 -3
  483. package/dist/components/textinput/textinput.types.d.ts.map +0 -1
  484. package/dist/components/textinput/textinput.types.js +0 -1
  485. package/dist/components/toggle/toggle.types.d.ts +0 -2
  486. package/dist/components/toggle/toggle.types.d.ts.map +0 -1
  487. package/dist/components/toggle/toggle.types.js +0 -1
  488. package/dist/index-client.js +0 -2
  489. package/dist/index-client.js.map +0 -1
  490. package/dist/snippet.js +0 -2
  491. package/dist/snippet.js.map +0 -1
@@ -0,0 +1,99 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { render, fireEvent } from '@testing-library/svelte';
3
+ import Pincode from './Pincode.svelte';
4
+ describe('m-pincode component', () => {
5
+ const baseProps = {
6
+ id: 'test-pincode',
7
+ length: 4,
8
+ };
9
+ it('renders correct number of inputs', () => {
10
+ const { container } = render(Pincode, { props: baseProps });
11
+ const inputs = container.querySelectorAll('input');
12
+ expect(inputs.length).toBe(4);
13
+ });
14
+ it('displays initial value correctly', () => {
15
+ const value = '1234';
16
+ const { container } = render(Pincode, { props: { ...baseProps, value } });
17
+ const inputs = container.querySelectorAll('input');
18
+ inputs.forEach((input, i) => {
19
+ expect(input.value).toBe(value[i]);
20
+ });
21
+ });
22
+ it('focuses next input on input', async () => {
23
+ const { container } = render(Pincode, { props: baseProps });
24
+ const inputs = container.querySelectorAll('input');
25
+ await fireEvent.input(inputs[0], { target: { value: '5' } });
26
+ expect(document.activeElement).toBe(inputs[1]);
27
+ });
28
+ it('applies disabled and readonly props', () => {
29
+ const { container } = render(Pincode, {
30
+ props: { ...baseProps, disabled: true, readonly: true },
31
+ });
32
+ const inputs = container.querySelectorAll('input');
33
+ inputs.forEach((input) => {
34
+ expect(input).toBeDisabled();
35
+ expect(input).toHaveAttribute('readonly');
36
+ });
37
+ });
38
+ it('applies invalid class when isinvalid is true', () => {
39
+ const { container } = render(Pincode, {
40
+ props: { ...baseProps, isinvalid: true },
41
+ });
42
+ const inputs = container.querySelectorAll('input');
43
+ inputs.forEach((input) => {
44
+ expect(input.classList.contains('is-invalid')).toBe(true);
45
+ });
46
+ });
47
+ it('emits input event with concatenated value on input', async () => {
48
+ const { container } = render(Pincode, { props: baseProps });
49
+ const root = container.querySelector('.mc-pincode-input');
50
+ const inputHandler = vi.fn();
51
+ root.addEventListener('input', inputHandler);
52
+ const inputs = container.querySelectorAll('input');
53
+ await fireEvent.input(inputs[0], { target: { value: '1' } });
54
+ await fireEvent.input(inputs[1], { target: { value: '2' } });
55
+ expect(inputHandler).toHaveBeenCalled();
56
+ const lastEvent = inputHandler.mock.calls[inputHandler.mock.calls.length - 1][0];
57
+ expect(lastEvent.detail.value).toBe('12');
58
+ });
59
+ it('handles backspace key to clear previous input and focus', async () => {
60
+ const { container } = render(Pincode, { props: baseProps });
61
+ const inputs = container.querySelectorAll('input');
62
+ await fireEvent.input(inputs[0], { target: { value: '1' } });
63
+ await fireEvent.input(inputs[1], { target: { value: '' } });
64
+ await fireEvent.keyDown(inputs[1], { key: 'Backspace' });
65
+ expect(inputs[0].value).toBe('');
66
+ expect(document.activeElement).toBe(inputs[0]);
67
+ });
68
+ it('handles arrow navigation keys', async () => {
69
+ const { container } = render(Pincode, { props: baseProps });
70
+ const inputs = container.querySelectorAll('input');
71
+ inputs[1].focus();
72
+ await fireEvent.keyDown(inputs[1], { key: 'ArrowLeft' });
73
+ expect(document.activeElement).toBe(inputs[0]);
74
+ inputs[0].focus();
75
+ await fireEvent.keyDown(inputs[0], { key: 'ArrowRight' });
76
+ expect(document.activeElement).toBe(inputs[1]);
77
+ });
78
+ it('handles paste event correctly', async () => {
79
+ const { container } = render(Pincode, { props: baseProps });
80
+ const root = container.querySelector('.mc-pincode-input');
81
+ const inputHandler = vi.fn();
82
+ root.addEventListener('input', inputHandler);
83
+ const pasteEvent = new Event('paste', {
84
+ bubbles: true,
85
+ cancelable: true,
86
+ });
87
+ Object.defineProperty(pasteEvent, 'clipboardData', {
88
+ value: {
89
+ getData: () => '9876',
90
+ },
91
+ });
92
+ await root.dispatchEvent(pasteEvent);
93
+ expect(inputHandler).toHaveBeenCalled();
94
+ const inputs = container.querySelectorAll('input');
95
+ inputs.forEach((input, i) => {
96
+ expect(input.value).toBe('9876'[i]);
97
+ });
98
+ });
99
+ });
@@ -1,14 +1,10 @@
1
- import type { Meta } from '@storybook/html-vite';
2
- /**
3
- * The `MPincode` component is the **Svelte / WebComponent** implementation
4
- * of the Mozaic Pincode Input.
5
- */
6
- declare const _default: Meta;
7
- export default _default;
8
- export declare const Default: any;
9
- export declare const FourDigits: any;
10
- export declare const WithInitialValue: any;
11
- export declare const Disabled: any;
12
- export declare const Readonly: any;
13
- export declare const Invalid: any;
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ type Story = StoryObj;
5
+ export declare const WithValue: Story;
6
+ export declare const Default: Story;
7
+ export declare const Disabled: Story;
8
+ export declare const ReadOnly: Story;
9
+ export declare const Invalid: Story;
14
10
  //# sourceMappingURL=Pincode.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pincode.stories.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;;GAGG;wBA2DE,IAAI;AAzDT,wBAyDU;AAqBV,eAAO,MAAM,OAAO,KAAoB,CAAC;AAoBzC,eAAO,MAAM,UAAU,KAAoB,CAAC;AAe5C,eAAO,MAAM,gBAAgB,KAAoB,CAAC;AAclD,eAAO,MAAM,QAAQ,KAAoB,CAAC;AAW1C,eAAO,MAAM,QAAQ,KAAoB,CAAC;AAW1C,eAAO,MAAM,OAAO,KAAoB,CAAC"}
1
+ {"version":3,"file":"Pincode.stories.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKrE,QAAA,MAAM,IAAI,EAAE,IA6CX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC"}
@@ -1,140 +1,75 @@
1
- import { userEvent, expect, within } from 'storybook/test';
1
+ import { html } from 'lit';
2
+ import { ifDefined } from 'lit-html/directives/if-defined.js';
2
3
  import { action } from 'storybook/actions';
3
- /**
4
- * The `MPincode` component is the **Svelte / WebComponent** implementation
5
- * of the Mozaic Pincode Input.
6
- */
7
- export default {
4
+ const meta = {
8
5
  title: 'Form Elements/Pincode',
9
- tags: ['autodocs', 'beta', 'version:2.0.0'],
10
- context: 'sidebar',
11
- args: {
12
- id: 'pincode-demo',
13
- name: 'otp',
14
- length: 6,
15
- value: '',
16
- isInvalid: false,
17
- disabled: false,
18
- readonly: false,
19
- },
6
+ component: 'm-pincode',
7
+ tags: ['v2'],
20
8
  argTypes: {
21
- id: {
22
- description: 'Identifiant unique du pincode',
23
- control: 'text',
24
- },
25
- name: {
26
- description: 'Attribut name pour la soumission de formulaire',
27
- control: 'text',
28
- },
29
9
  length: {
30
- description: 'Nombre de cases du pincode',
31
- control: { type: 'radio' },
32
- options: [4, 5, 6],
33
- },
34
- value: {
35
- description: 'Valeur initiale/contrôlée du pincode',
36
- control: 'text',
37
- },
38
- isInvalid: {
39
- description: 'Applique l’état invalide',
40
- control: 'boolean',
41
- table: { category: 'State' },
42
- },
43
- disabled: {
44
- description: 'Désactive le pincode',
45
- control: 'boolean',
46
- table: { category: 'State' },
47
- },
48
- readonly: {
49
- description: 'Lecture seule',
50
- control: 'boolean',
51
- table: { category: 'State' },
10
+ control: {
11
+ type: 'number',
12
+ min: 4,
13
+ max: 6,
14
+ },
52
15
  },
53
16
  input: {
54
- description: 'Émis à la saisie (CustomEvent<{ value: string }>)',
55
- table: { category: 'Events' },
56
- action: 'input',
57
- },
58
- change: {
59
- description: 'Émis à chaque changement (CustomEvent<{ value: string }>)',
60
- table: { category: 'Events' },
61
- action: 'change',
17
+ control: false,
62
18
  },
63
19
  },
20
+ args: {
21
+ id: 'pincodeId',
22
+ },
23
+ render: (args) => {
24
+ const onInput = action('input');
25
+ const onFocus = action('focus');
26
+ const onBlur = action('blur');
27
+ return html `
28
+ <m-pincode
29
+ id=${ifDefined(args.id)}
30
+ name=${ifDefined(args.name)}
31
+ value=${ifDefined(args.value)}
32
+ length=${ifDefined(args.length)}
33
+ isinvalid=${ifDefined(args.isinvalid)}
34
+ disabled=${ifDefined(args.disabled)}
35
+ readonly=${ifDefined(args.readonly)}
36
+ @input=${(event) => {
37
+ onInput(event);
38
+ }}
39
+ @focus=${(event) => {
40
+ onFocus(event);
41
+ }}
42
+ @blur=${(event) => {
43
+ onBlur(event);
44
+ }}
45
+ ></m-pincode>
46
+ `;
47
+ },
64
48
  };
65
- const Template = (args) => {
66
- const el = document.createElement('m-pincode');
67
- // Attributs (kebab-case pour WC)
68
- if (args.id)
69
- el.setAttribute('id', args.id);
70
- if (args.name)
71
- el.setAttribute('name', args.name);
72
- if (args.length)
73
- el.setAttribute('length', String(args.length));
74
- if (args.value)
75
- el.setAttribute('value', String(args.value));
76
- if (args.isInvalid)
77
- el.setAttribute('isinvalid', 'true');
78
- if (args.disabled)
79
- el.setAttribute('disabled', 'true');
80
- if (args.readonly)
81
- el.setAttribute('readonly', 'true');
82
- // Actions Storybook
83
- el.addEventListener('input', action('input'));
84
- el.addEventListener('change', action('change'));
85
- return el;
86
- };
87
- export const Default = Template.bind({});
88
- Default.args = {};
89
- Default.play = async ({ canvasElement }) => {
90
- const host = canvasElement.querySelector('m-pincode');
91
- const root = host.shadowRoot;
92
- const inputs = root.querySelectorAll('.mc-pincode-input__control');
93
- expect(inputs.length).toBe(6);
94
- await userEvent.click(inputs[0]);
95
- await userEvent.type(inputs[0], '123456');
96
- const joined = Array.from(inputs)
97
- .map((i) => i.value)
98
- .join('');
99
- expect(joined).toBe('123456');
100
- };
101
- export const FourDigits = Template.bind({});
102
- FourDigits.args = { length: 4 };
103
- FourDigits.play = async ({ canvasElement }) => {
104
- const host = canvasElement.querySelector('m-pincode');
105
- const vals = Array.from(host.shadowRoot.querySelectorAll('.mc-pincode-input__control'));
106
- expect(vals.length).toBe(4);
107
- await userEvent.type(vals[0], '9876');
108
- expect(vals.map((i) => i.value).join('')).toBe('9876');
109
- };
110
- export const WithInitialValue = Template.bind({});
111
- WithInitialValue.args = { length: 4, value: '2468' };
112
- WithInitialValue.play = async ({ canvasElement }) => {
113
- const host = canvasElement.querySelector('m-pincode');
114
- const inputs = host.shadowRoot.querySelectorAll('.mc-pincode-input__control');
115
- const joined = Array.from(inputs)
116
- .map((i) => i.value)
117
- .join('');
118
- expect(joined).toBe('2468'.padEnd(inputs.length, ''));
49
+ export default meta;
50
+ export const WithValue = {
51
+ args: {
52
+ id: 'valueId',
53
+ value: '123098',
54
+ },
119
55
  };
120
- export const Disabled = Template.bind({});
121
- Disabled.args = { disabled: true };
122
- Disabled.play = async ({ canvasElement }) => {
123
- const host = canvasElement.querySelector('m-pincode');
124
- const inputs = host.shadowRoot.querySelectorAll('.mc-pincode-input__control');
125
- inputs.forEach((i) => expect(i.disabled).toBe(true));
56
+ export const Default = {};
57
+ export const Disabled = {
58
+ args: {
59
+ id: 'disableId',
60
+ disabled: true,
61
+ },
126
62
  };
127
- export const Readonly = Template.bind({});
128
- Readonly.args = { readonly: true, length: 4, value: '2468' };
129
- Readonly.play = async ({ canvasElement }) => {
130
- const host = canvasElement.querySelector('m-pincode');
131
- const inputs = host.shadowRoot.querySelectorAll('.mc-pincode-input__control');
132
- inputs.forEach((i) => expect(i.readOnly).toBe(true));
63
+ export const ReadOnly = {
64
+ args: {
65
+ id: 'readonlyId',
66
+ value: '123098',
67
+ readonly: true,
68
+ },
133
69
  };
134
- export const Invalid = Template.bind({});
135
- Invalid.args = { isInvalid: true };
136
- Invalid.play = async ({ canvasElement }) => {
137
- const host = canvasElement.querySelector('m-pincode');
138
- const container = host.shadowRoot.querySelector('.mc-pincode-input');
139
- expect(container.classList.contains('is-invalid')).toBe(true);
70
+ export const Invalid = {
71
+ args: {
72
+ id: 'invalidId',
73
+ isinvalid: true,
74
+ },
140
75
  };
@@ -1,67 +1,78 @@
1
1
  <svelte:options customElement={{ tag: 'm-pincode' }} />
2
2
 
3
3
  <script lang="ts">
4
- import { createEventDispatcher } from 'svelte';
5
-
6
- type PincodeLen = 4 | 5 | 6;
4
+ /**
5
+ * A pincode input is a specialized input field used to enter short numeric codes, such as verification codes, security PINs, or authentication tokens. It typically separates each digit into individual fields to improve readability and ease of entry. This component is commonly used in two-factor authentication (2FA), password recovery, and secure access flows, ensuring a structured and user-friendly experience.
6
+ *
7
+ * @event input {CustomEvent<{ value: string }>} - Emits when the pincode value changes.
8
+ */
7
9
  interface Props {
10
+ /**
11
+ * A unique identifier for the pincode element, used to associate the label with the form element.
12
+ */
8
13
  id: string;
9
- length?: PincodeLen | string; // <- peut arriver en string via l'attribut
14
+ /**
15
+ * The number of input displayed in the pincode element.
16
+ */
17
+ length?: 4 | 5 | 6;
18
+ /**
19
+ * The name attribute for the pincode element, typically used for form submission.
20
+ */
10
21
  name?: string;
22
+ /**
23
+ * The current value of the pincode field.
24
+ */
11
25
  value?: string | number;
12
- isInvalid?: boolean;
26
+ /**
27
+ * If `true`, applies an invalid state to the pincode.
28
+ */
29
+ isinvalid?: boolean;
30
+ /**
31
+ * If `true`, disables the pincode, making it non-interactive.
32
+ */
13
33
  disabled?: boolean;
34
+ /**
35
+ * If `true`, the pincode is read-only (cannot be edited).
36
+ */
14
37
  readonly?: boolean;
15
- [key: string]: any;
16
38
  }
17
39
 
18
- const dispatch = createEventDispatcher();
19
-
20
- let {
21
- id,
22
- length = 6,
23
- name,
24
- value = '',
25
- isInvalid = false,
26
- disabled = false,
27
- readonly = false,
28
- ...attrsAndEvents
29
- }: Props = $props();
40
+ let { id, length = 6, name, value, isinvalid, disabled, readonly }: Props = $props();
30
41
 
31
- // Normalisation: length numérique (ex. "6" -> 6)
32
- const L = $derived(
33
- typeof length === 'string' ? parseInt(length, 10) || 6 : length,
34
- );
42
+ const L = $derived(typeof length === 'string' ? parseInt(length, 10) || 6 : length);
35
43
 
36
- // État minimal
37
44
  let otp = $state<string[]>(Array(L).fill(''));
38
45
  let inputs = $state<HTMLInputElement[]>([]);
46
+ let element: HTMLElement;
39
47
 
40
- // Sync depuis props (value/length normalisé)
41
48
  $effect(() => {
42
49
  const incoming = String(value ?? '');
43
50
  otp = Array.from({ length: L }, (_, i) => incoming[i] ?? '');
44
51
  });
45
52
 
46
- function focusInput(i: number) {
53
+ const focusInput = (i: number) => {
47
54
  queueMicrotask(() => inputs?.[i]?.focus());
48
- }
55
+ };
49
56
 
50
- function emit() {
57
+ const emitInput = () => {
51
58
  const joined = otp.join('');
52
- dispatch('input', { value: joined });
53
- dispatch('change', { value: joined });
54
- }
59
+ const event = new CustomEvent('input', {
60
+ detail: { value: joined },
61
+ bubbles: true,
62
+ composed: true,
63
+ });
64
+ element.dispatchEvent(event);
65
+ };
55
66
 
56
- function onInput(e: Event, index: number) {
67
+ const onInput = (e: Event, index: number) => {
57
68
  const el = e.target as HTMLInputElement;
58
69
  const digit = el.value.replace(/\D/g, '').slice(0, 1);
59
70
  otp[index] = digit;
60
- emit();
71
+ emitInput();
61
72
  if (digit && index + 1 < L) focusInput(index + 1);
62
- }
73
+ };
63
74
 
64
- function onKeyDown(e: KeyboardEvent, index: number) {
75
+ const onKeyDown = (e: KeyboardEvent, index: number) => {
65
76
  if (e.key === 'ArrowLeft' && index > 0) {
66
77
  e.preventDefault();
67
78
  focusInput(index - 1);
@@ -70,34 +81,26 @@
70
81
  focusInput(index + 1);
71
82
  } else if (e.key === 'Backspace' && otp[index] === '' && index > 0) {
72
83
  otp[index - 1] = '';
73
- emit();
84
+ emitInput();
74
85
  focusInput(index - 1);
75
86
  }
76
- }
87
+ };
77
88
 
78
- function onPaste(e: ClipboardEvent) {
89
+ const onPaste = (e: ClipboardEvent) => {
79
90
  e.preventDefault();
80
- const pasted = (e.clipboardData?.getData('text') ?? '')
81
- .replace(/\D/g, '')
82
- .slice(0, L);
91
+ const pasted = (e.clipboardData?.getData('text') ?? '').replace(/\D/g, '').slice(0, L);
83
92
  otp = Array.from({ length: L }, (_, i) => pasted[i] ?? '');
84
- emit();
93
+ emitInput();
85
94
  focusInput(Math.min(pasted.length, L - 1));
86
- }
95
+ };
87
96
  </script>
88
97
 
89
- <div
90
- class="mc-pincode-input"
91
- on:paste|preventDefault={onPaste}
92
- class:is-invalid={isInvalid}
93
- {...attrsAndEvents}
94
- >
95
- {#each Array(L) as _, i}
98
+ <div class="mc-pincode-input" onpaste={onPaste} bind:this={element}>
99
+ {#each [...Array(L).keys()] as i (i)}
96
100
  <input
97
101
  id={`pincodeItem${i}`}
98
102
  bind:this={inputs[i]}
99
- class="mc-pincode-input__control"
100
- class:is-invalid={isInvalid}
103
+ class={['mc-pincode-input__control', isinvalid && 'is-invalid']}
101
104
  type="text"
102
105
  inputmode="numeric"
103
106
  maxlength="1"
@@ -107,8 +110,8 @@
107
110
  {disabled}
108
111
  {readonly}
109
112
  value={otp[i]}
110
- on:input={(e) => onInput(e, i)}
111
- on:keydown={(e) => onKeyDown(e as KeyboardEvent, i)}
113
+ oninput={(e) => onInput(e, i)}
114
+ onkeydown={(e) => onKeyDown(e as KeyboardEvent, i)}
112
115
  />
113
116
  {/each}
114
117
  </div>
@@ -1,33 +1,39 @@
1
- type PincodeLen = 4 | 5 | 6;
1
+ /**
2
+ * A pincode input is a specialized input field used to enter short numeric codes, such as verification codes, security PINs, or authentication tokens. It typically separates each digit into individual fields to improve readability and ease of entry. This component is commonly used in two-factor authentication (2FA), password recovery, and secure access flows, ensuring a structured and user-friendly experience.
3
+ *
4
+ * @event input {CustomEvent<{ value: string }>} - Emits when the pincode value changes.
5
+ */
2
6
  interface Props {
7
+ /**
8
+ * A unique identifier for the pincode element, used to associate the label with the form element.
9
+ */
3
10
  id: string;
4
- length?: PincodeLen | string;
11
+ /**
12
+ * The number of input displayed in the pincode element.
13
+ */
14
+ length?: 4 | 5 | 6;
15
+ /**
16
+ * The name attribute for the pincode element, typically used for form submission.
17
+ */
5
18
  name?: string;
19
+ /**
20
+ * The current value of the pincode field.
21
+ */
6
22
  value?: string | number;
7
- isInvalid?: boolean;
23
+ /**
24
+ * If `true`, applies an invalid state to the pincode.
25
+ */
26
+ isinvalid?: boolean;
27
+ /**
28
+ * If `true`, disables the pincode, making it non-interactive.
29
+ */
8
30
  disabled?: boolean;
31
+ /**
32
+ * If `true`, the pincode is read-only (cannot be edited).
33
+ */
9
34
  readonly?: boolean;
10
- [key: string]: any;
11
35
  }
12
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
13
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
14
- $$bindings?: Bindings;
15
- } & Exports;
16
- (internal: unknown, props: Props & {
17
- $$events?: Events;
18
- $$slots?: Slots;
19
- }): Exports & {
20
- $set?: any;
21
- $on?: any;
22
- };
23
- z_$$bindings?: Bindings;
24
- }
25
- declare const Pincode: $$__sveltets_2_IsomorphicComponent<Props, {
26
- input: CustomEvent<any>;
27
- change: CustomEvent<any>;
28
- } & {
29
- [evt: string]: CustomEvent<any>;
30
- }, {}, {}, "">;
31
- type Pincode = InstanceType<typeof Pincode>;
36
+ declare const Pincode: import("svelte").Component<Props, {}, "">;
37
+ type Pincode = ReturnType<typeof Pincode>;
32
38
  export default Pincode;
33
39
  //# sourceMappingURL=Pincode.svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pincode.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.svelte.ts"],"names":[],"mappings":"AAME,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAyFH,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,OAAO;;;;;cAA+E,CAAC;AAC3E,KAAK,OAAO,GAAG,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Pincode.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.svelte.ts"],"names":[],"mappings":"AAGE;;;;GAIG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA0EH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
@@ -0,0 +1,22 @@
1
+ # `m-pincode`
2
+
3
+ A pincode input is a specialized input field used to enter short numeric codes, such as verification codes, security PINs, or authentication tokens. It typically separates each digit into individual fields to improve readability and ease of entry. This component is commonly used in two-factor authentication (2FA), password recovery, and secure access flows, ensuring a structured and user-friendly experience.
4
+
5
+ ## Props
6
+
7
+ | Name | Description | Type | Default |
8
+ |------|-------------|------|---------|
9
+ | `id*` | A unique identifier for the pincode element, used to associate the label with the form element. | `string` | |
10
+ | `length` | The number of input displayed in the pincode element. | `4` `5` `6` | `6` |
11
+ | `name` | The name attribute for the pincode element, typically used for form submission. | `string` | |
12
+ | `value` | The current value of the pincode field. | `string` `number` | |
13
+ | `isinvalid` | If `true`, applies an invalid state to the pincode. | `boolean` | |
14
+ | `disabled` | If `true`, disables the pincode, making it non-interactive. | `boolean` | |
15
+ | `readonly` | If `true`, the pincode is read-only (cannot be edited). | `boolean` | |
16
+
17
+ ## Events
18
+
19
+ | Name | Description | Type |
20
+ |------|------|-------------|
21
+ | `input` | Emits when the pincode value changes. | `CustomEvent<{ value: string }>` |
22
+