@roadtrip/components 3.32.4 → 3.33.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 (284) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/road-badge_14.cjs.entry.js +17 -15
  3. package/dist/cjs/road-badge_14.cjs.entry.js.map +1 -1
  4. package/dist/cjs/road-dropdown.cjs.entry.js +1 -1
  5. package/dist/cjs/road-dropdown.cjs.entry.js.map +1 -1
  6. package/dist/cjs/road-phone-number-input.cjs.entry.js +26 -61
  7. package/dist/cjs/road-phone-number-input.cjs.entry.js.map +1 -1
  8. package/dist/cjs/road-plate-number.cjs.entry.js +2 -2
  9. package/dist/cjs/road-profil-dropdown.cjs.entry.js +1 -1
  10. package/dist/cjs/road-progress-indicator-horizontal.cjs.entry.js +1 -1
  11. package/dist/cjs/road-progress-indicator-vertical-item.cjs.entry.js +1 -1
  12. package/dist/cjs/road-progress-indicator-vertical.cjs.entry.js +1 -1
  13. package/dist/cjs/road-progress-tracker-item.cjs.entry.js +1 -1
  14. package/dist/cjs/road-progress-tracker.cjs.entry.js +1 -1
  15. package/dist/cjs/road-progress.cjs.entry.js +1 -1
  16. package/dist/cjs/road-radio-group.cjs.entry.js +1 -1
  17. package/dist/cjs/road-radio.cjs.entry.js +1 -1
  18. package/dist/cjs/road-range.cjs.entry.js +2 -2
  19. package/dist/cjs/road-rating.cjs.entry.js +1 -1
  20. package/dist/cjs/road-segmented-button-bar.cjs.entry.js +1 -1
  21. package/dist/cjs/road-segmented-button.cjs.entry.js +2 -2
  22. package/dist/cjs/road-segmented-buttons.cjs.entry.js +1 -1
  23. package/dist/cjs/road-select-filter.cjs.entry.js +2 -2
  24. package/dist/cjs/road-select.cjs.entry.js +1 -1
  25. package/dist/cjs/road-skeleton.cjs.entry.js +1 -1
  26. package/dist/cjs/road-spinner.cjs.entry.js +1 -1
  27. package/dist/cjs/road-switch.cjs.entry.js +2 -2
  28. package/dist/cjs/road-tab-bar.cjs.entry.js +2 -2
  29. package/dist/cjs/road-tab-button.cjs.entry.js +2 -2
  30. package/dist/cjs/road-tab.cjs.entry.js +2 -2
  31. package/dist/cjs/road-table.cjs.entry.js +1 -1
  32. package/dist/cjs/road-tabs.cjs.entry.js +1 -1
  33. package/dist/cjs/road-tag.cjs.entry.js +1 -1
  34. package/dist/cjs/road-text.cjs.entry.js +1 -1
  35. package/dist/cjs/road-textarea.cjs.entry.js +1 -1
  36. package/dist/cjs/road-toast.cjs.entry.js +1 -1
  37. package/dist/cjs/road-toggle.cjs.entry.js +2 -2
  38. package/dist/cjs/road-toolbar-title-page.cjs.entry.js +1 -1
  39. package/dist/cjs/road-toolbar-title.cjs.entry.js +1 -1
  40. package/dist/cjs/road-toolbar-v2.cjs.entry.js +1 -1
  41. package/dist/cjs/road-tooltip.cjs.entry.js +3 -3
  42. package/dist/cjs/roadtrip.cjs.js +1 -1
  43. package/dist/collection/components/accordion/accordion.stories.js +38 -4
  44. package/dist/collection/components/alert/alert.stories.js +7 -0
  45. package/dist/collection/components/asset/asset.stories.js +6 -0
  46. package/dist/collection/components/autocomplete/autocomplete.stories.js +43 -47
  47. package/dist/collection/components/avatar/avatar.stories.js +6 -0
  48. package/dist/collection/components/badge/badge.stories.js +6 -0
  49. package/dist/collection/components/banner/banner.stories.js +33 -3
  50. package/dist/collection/components/button/button.stories.js +58 -67
  51. package/dist/collection/components/button-floating/button-floating.stories.js +32 -23
  52. package/dist/collection/components/card/card.stories.js +25 -15
  53. package/dist/collection/components/carousel/carousel.stories.js +72 -280
  54. package/dist/collection/components/checkbox/checkbox.stories.js +54 -33
  55. package/dist/collection/components/chip/chip.stories.js +32 -47
  56. package/dist/collection/components/collapse/collapse.stories.js +88 -78
  57. package/dist/collection/components/content-card/content-card.stories.js +30 -11
  58. package/dist/collection/components/counter/counter.stories.js +40 -11
  59. package/dist/collection/components/dialog/dialog.stories.js +37 -51
  60. package/dist/collection/components/drawer/drawer.css +9 -0
  61. package/dist/collection/components/drawer/drawer.js +34 -12
  62. package/dist/collection/components/drawer/drawer.js.map +1 -1
  63. package/dist/collection/components/drawer/drawer.stories.js +70 -134
  64. package/dist/collection/components/dropdown/dropdown.css +1 -1
  65. package/dist/collection/components/dropdown/dropdown.stories.js +69 -53
  66. package/dist/collection/components/duration/duration.stories.js +49 -45
  67. package/dist/collection/components/flap/flap.stories.js +22 -10
  68. package/dist/collection/components/input/input.stories.js +33 -0
  69. package/dist/collection/components/item/item.stories.js +25 -0
  70. package/dist/collection/components/list/list.stories.js +2 -0
  71. package/dist/collection/components/modal/modal.stories.js +14 -0
  72. package/dist/collection/components/navbar/navbar.stories.js +3 -0
  73. package/dist/collection/components/navbar-v2/navbar-v2.stories.js +4 -0
  74. package/dist/collection/components/phone-number-input/constants.js +3 -0
  75. package/dist/collection/components/phone-number-input/constants.js.map +1 -0
  76. package/dist/collection/components/phone-number-input/phone-number-input.css +198 -129
  77. package/dist/collection/components/phone-number-input/phone-number-input.js +23 -63
  78. package/dist/collection/components/phone-number-input/phone-number-input.js.map +1 -1
  79. package/dist/collection/components/phone-number-input/phone-number-input.stories.js +15 -1
  80. package/dist/collection/components/plate-number/plate-number.js +2 -2
  81. package/dist/collection/components/plate-number/plate-number.stories.js +13 -0
  82. package/dist/collection/components/profil-dropdown/profil-dropdown.js +1 -1
  83. package/dist/collection/components/profil-dropdown/profil-dropdown.stories.js +8 -0
  84. package/dist/collection/components/progress/progress.js +1 -1
  85. package/dist/collection/components/progress/progress.stories.js +12 -0
  86. package/dist/collection/components/progress-indicator-horizontal/progress-indicator-horizontal.js +1 -1
  87. package/dist/collection/components/progress-indicator-horizontal/progress-indicator-horizontal.stories.js +8 -0
  88. package/dist/collection/components/progress-indicator-vertical/progress-indicator-vertical.js +1 -1
  89. package/dist/collection/components/progress-indicator-vertical/progress-indicator-vertical.stories.js +1 -0
  90. package/dist/collection/components/progress-indicator-vertical-item/progress-indicator-vertical-item.js +1 -1
  91. package/dist/collection/components/progress-tracker/progress-tracker.js +1 -1
  92. package/dist/collection/components/progress-tracker/progress-tracker.stories.js +1 -0
  93. package/dist/collection/components/progress-tracker-item/progress-tracker-item.js +1 -1
  94. package/dist/collection/components/radio/radio.js +1 -1
  95. package/dist/collection/components/radio/radio.stories.js +13 -0
  96. package/dist/collection/components/radio-group/radio-group.js +1 -1
  97. package/dist/collection/components/range/range.js +2 -2
  98. package/dist/collection/components/range/range.stories.js +11 -0
  99. package/dist/collection/components/rating/rating.js +1 -1
  100. package/dist/collection/components/rating/rating.stories.js +7 -0
  101. package/dist/collection/components/row/row.js +1 -1
  102. package/dist/collection/components/segmented-button/segmented-button.js +2 -2
  103. package/dist/collection/components/segmented-button-bar/segmented-button-bar.js +1 -1
  104. package/dist/collection/components/segmented-buttons/segmented-buttons.js +1 -1
  105. package/dist/collection/components/segmented-buttons/segmented-buttons.stories.js +2 -0
  106. package/dist/collection/components/select/select.js +1 -1
  107. package/dist/collection/components/select/select.stories.js +13 -0
  108. package/dist/collection/components/select-filter/select-filter.js +2 -2
  109. package/dist/collection/components/select-filter/select-filter.stories.js +5 -0
  110. package/dist/collection/components/skeleton/skeleton.js +1 -1
  111. package/dist/collection/components/skeleton/skeleton.stories.js +2 -0
  112. package/dist/collection/components/spinner/spinner.js +1 -1
  113. package/dist/collection/components/spinner/spinner.stories.js +2 -0
  114. package/dist/collection/components/switch/switch.js +2 -2
  115. package/dist/collection/components/tab/tab.js +2 -2
  116. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  117. package/dist/collection/components/tab-button/tab-button.js +2 -2
  118. package/dist/collection/components/table/table.js +1 -1
  119. package/dist/collection/components/table/table.stories.js +1 -0
  120. package/dist/collection/components/tabs/tabs.js +1 -1
  121. package/dist/collection/components/tabs/tabs.stories.js +2 -0
  122. package/dist/collection/components/tag/tag.js +1 -1
  123. package/dist/collection/components/tag/tag.stories.js +3 -0
  124. package/dist/collection/components/text/text.js +1 -1
  125. package/dist/collection/components/text/text.stories.js +2 -0
  126. package/dist/collection/components/textarea/textarea.js +1 -1
  127. package/dist/collection/components/textarea/textarea.stories.js +26 -0
  128. package/dist/collection/components/toast/toast.js +1 -1
  129. package/dist/collection/components/toast/toast.stories.js +6 -0
  130. package/dist/collection/components/toggle/toggle.js +2 -2
  131. package/dist/collection/components/toggle/toggle.stories.js +14 -0
  132. package/dist/collection/components/toolbar/toolbar.js +1 -1
  133. package/dist/collection/components/toolbar/toolbar.stories.js +6 -0
  134. package/dist/collection/components/toolbar-title/toolbar-title.js +1 -1
  135. package/dist/collection/components/toolbar-title-page/toolbar-title-page.js +1 -1
  136. package/dist/collection/components/toolbar-v2/toolbar-v2.js +1 -1
  137. package/dist/collection/components/toolbar-v2/toolbar-v2.stories.js +5 -0
  138. package/dist/collection/components/tooltip/tooltip.js +3 -3
  139. package/dist/collection/components/tooltip/tooltip.stories.js +11 -0
  140. package/dist/collection/components/utilities/text.stories.js +2 -0
  141. package/dist/collection/fonts/Muli-Black.woff +0 -0
  142. package/dist/collection/fonts/Muli-Black.woff2 +0 -0
  143. package/dist/collection/fonts/Muli-SemiBold.woff +0 -0
  144. package/dist/collection/fonts/Muli-SemiBold.woff2 +0 -0
  145. package/dist/esm/loader.js +1 -1
  146. package/dist/esm/road-badge_14.entry.js +17 -15
  147. package/dist/esm/road-badge_14.entry.js.map +1 -1
  148. package/dist/esm/road-dropdown.entry.js +1 -1
  149. package/dist/esm/road-dropdown.entry.js.map +1 -1
  150. package/dist/esm/road-phone-number-input.entry.js +26 -61
  151. package/dist/esm/road-phone-number-input.entry.js.map +1 -1
  152. package/dist/esm/road-plate-number.entry.js +2 -2
  153. package/dist/esm/road-profil-dropdown.entry.js +1 -1
  154. package/dist/esm/road-progress-indicator-horizontal.entry.js +1 -1
  155. package/dist/esm/road-progress-indicator-vertical-item.entry.js +1 -1
  156. package/dist/esm/road-progress-indicator-vertical.entry.js +1 -1
  157. package/dist/esm/road-progress-tracker-item.entry.js +1 -1
  158. package/dist/esm/road-progress-tracker.entry.js +1 -1
  159. package/dist/esm/road-progress.entry.js +1 -1
  160. package/dist/esm/road-radio-group.entry.js +1 -1
  161. package/dist/esm/road-radio.entry.js +1 -1
  162. package/dist/esm/road-range.entry.js +2 -2
  163. package/dist/esm/road-rating.entry.js +1 -1
  164. package/dist/esm/road-segmented-button-bar.entry.js +1 -1
  165. package/dist/esm/road-segmented-button.entry.js +2 -2
  166. package/dist/esm/road-segmented-buttons.entry.js +1 -1
  167. package/dist/esm/road-select-filter.entry.js +2 -2
  168. package/dist/esm/road-select.entry.js +1 -1
  169. package/dist/esm/road-skeleton.entry.js +1 -1
  170. package/dist/esm/road-spinner.entry.js +1 -1
  171. package/dist/esm/road-switch.entry.js +2 -2
  172. package/dist/esm/road-tab-bar.entry.js +2 -2
  173. package/dist/esm/road-tab-button.entry.js +2 -2
  174. package/dist/esm/road-tab.entry.js +2 -2
  175. package/dist/esm/road-table.entry.js +1 -1
  176. package/dist/esm/road-tabs.entry.js +1 -1
  177. package/dist/esm/road-tag.entry.js +1 -1
  178. package/dist/esm/road-text.entry.js +1 -1
  179. package/dist/esm/road-textarea.entry.js +1 -1
  180. package/dist/esm/road-toast.entry.js +1 -1
  181. package/dist/esm/road-toggle.entry.js +2 -2
  182. package/dist/esm/road-toolbar-title-page.entry.js +1 -1
  183. package/dist/esm/road-toolbar-title.entry.js +1 -1
  184. package/dist/esm/road-toolbar-v2.entry.js +1 -1
  185. package/dist/esm/road-tooltip.entry.js +3 -3
  186. package/dist/esm/roadtrip.js +1 -1
  187. package/dist/html.html-data.json +4 -0
  188. package/dist/roadtrip/fonts/Muli-Black.woff +0 -0
  189. package/dist/roadtrip/fonts/Muli-Black.woff2 +0 -0
  190. package/dist/roadtrip/fonts/Muli-SemiBold.woff +0 -0
  191. package/dist/roadtrip/fonts/Muli-SemiBold.woff2 +0 -0
  192. package/dist/roadtrip/{p-c1e2aa67.entry.js → p-04913d58.entry.js} +2 -2
  193. package/dist/roadtrip/{p-494aab48.entry.js → p-06fbd2ea.entry.js} +2 -2
  194. package/dist/roadtrip/{p-2a4a0928.entry.js → p-167cd2fc.entry.js} +2 -2
  195. package/dist/roadtrip/p-215afdbd.entry.js +2 -0
  196. package/dist/roadtrip/{p-8f7375bc.entry.js → p-2e049c8e.entry.js} +2 -2
  197. package/dist/roadtrip/{p-8ca23318.entry.js → p-37430583.entry.js} +2 -2
  198. package/dist/roadtrip/{p-9fce16aa.entry.js → p-3dcaa947.entry.js} +2 -2
  199. package/dist/roadtrip/{p-1e61ca1f.entry.js → p-3f5dff96.entry.js} +2 -2
  200. package/dist/roadtrip/{p-f8817c0e.entry.js → p-449affa6.entry.js} +2 -2
  201. package/dist/roadtrip/p-4675ea6d.entry.js +2 -0
  202. package/dist/roadtrip/{p-4a47999a.entry.js → p-5fea6a74.entry.js} +2 -2
  203. package/dist/roadtrip/{p-f9754547.entry.js → p-60bd73ad.entry.js} +2 -2
  204. package/dist/roadtrip/p-65f9bd9c.entry.js +2 -0
  205. package/dist/roadtrip/{p-c68fc795.entry.js → p-6c617506.entry.js} +2 -2
  206. package/dist/roadtrip/{p-4e779fd6.entry.js → p-6ff3b37c.entry.js} +2 -2
  207. package/dist/roadtrip/p-85b1e505.entry.js +2 -0
  208. package/dist/roadtrip/{p-a990a8b6.entry.js → p-862c1831.entry.js} +2 -2
  209. package/dist/roadtrip/{p-a990a8b6.entry.js.map → p-862c1831.entry.js.map} +1 -1
  210. package/dist/roadtrip/p-8b04fc62.entry.js +2 -0
  211. package/dist/roadtrip/{p-e2a00f9c.entry.js → p-913b72de.entry.js} +3 -3
  212. package/dist/roadtrip/p-913b72de.entry.js.map +1 -0
  213. package/dist/roadtrip/{p-87c1ff76.entry.js → p-99a6faae.entry.js} +2 -2
  214. package/dist/roadtrip/{p-bba18327.entry.js → p-b5fa8c5a.entry.js} +2 -2
  215. package/dist/roadtrip/{p-db243855.entry.js → p-b8c5d292.entry.js} +2 -2
  216. package/dist/roadtrip/{p-d68e64a8.entry.js → p-c28e7add.entry.js} +2 -2
  217. package/dist/roadtrip/{p-10e65612.entry.js → p-c47ccbf2.entry.js} +2 -2
  218. package/dist/roadtrip/{p-c3ef32ef.entry.js → p-c6824205.entry.js} +2 -2
  219. package/dist/roadtrip/{p-833c1e78.entry.js → p-cfd2919e.entry.js} +2 -2
  220. package/dist/roadtrip/{p-a0a95c0a.entry.js → p-d80e7563.entry.js} +2 -2
  221. package/dist/roadtrip/p-db77c354.entry.js +2 -0
  222. package/dist/roadtrip/{p-5fab1bc3.entry.js.map → p-db77c354.entry.js.map} +1 -1
  223. package/dist/roadtrip/{p-0cacf829.entry.js → p-ddfe088f.entry.js} +2 -2
  224. package/dist/roadtrip/p-ddfe088f.entry.js.map +1 -0
  225. package/dist/roadtrip/{p-4bbc889b.entry.js → p-e6c4c576.entry.js} +2 -2
  226. package/dist/roadtrip/{p-01be5517.entry.js → p-e6e9882b.entry.js} +2 -2
  227. package/dist/roadtrip/{p-5a6fbd7f.entry.js → p-e75ec60f.entry.js} +2 -2
  228. package/dist/roadtrip/{p-edbbe884.entry.js → p-ea1a175d.entry.js} +2 -2
  229. package/dist/roadtrip/{p-2903bdc0.entry.js → p-eac313e4.entry.js} +2 -2
  230. package/dist/roadtrip/{p-fb26ed7e.entry.js → p-f1b53143.entry.js} +2 -2
  231. package/dist/roadtrip/{p-b18cda16.entry.js → p-fd3c58b6.entry.js} +2 -2
  232. package/dist/roadtrip/{p-32845e72.entry.js → p-fe40ab3d.entry.js} +2 -2
  233. package/dist/roadtrip/roadtrip.css +1 -1
  234. package/dist/roadtrip/roadtrip.esm.js +1 -1
  235. package/dist/roadtrip/roadtrip.esm.js.map +1 -1
  236. package/dist/types/components/drawer/drawer.d.ts +4 -1
  237. package/dist/types/components/phone-number-input/constants.d.ts +1 -0
  238. package/dist/types/components/phone-number-input/phone-number-input.d.ts +3 -9
  239. package/dist/types/components-react.d.ts +4 -4
  240. package/dist/types/components.d.ts +16 -0
  241. package/hydrate/index.js +305 -318
  242. package/hydrate/index.mjs +305 -318
  243. package/package.json +1 -1
  244. package/dist/roadtrip/p-0cacf829.entry.js.map +0 -1
  245. package/dist/roadtrip/p-427bd935.entry.js +0 -2
  246. package/dist/roadtrip/p-5fab1bc3.entry.js +0 -2
  247. package/dist/roadtrip/p-78b51033.entry.js +0 -2
  248. package/dist/roadtrip/p-9737182c.entry.js +0 -2
  249. package/dist/roadtrip/p-a925ff64.entry.js +0 -2
  250. package/dist/roadtrip/p-e2a00f9c.entry.js.map +0 -1
  251. package/dist/roadtrip/p-ee92b78d.entry.js +0 -2
  252. /package/dist/roadtrip/{p-c1e2aa67.entry.js.map → p-04913d58.entry.js.map} +0 -0
  253. /package/dist/roadtrip/{p-494aab48.entry.js.map → p-06fbd2ea.entry.js.map} +0 -0
  254. /package/dist/roadtrip/{p-2a4a0928.entry.js.map → p-167cd2fc.entry.js.map} +0 -0
  255. /package/dist/roadtrip/{p-427bd935.entry.js.map → p-215afdbd.entry.js.map} +0 -0
  256. /package/dist/roadtrip/{p-8f7375bc.entry.js.map → p-2e049c8e.entry.js.map} +0 -0
  257. /package/dist/roadtrip/{p-8ca23318.entry.js.map → p-37430583.entry.js.map} +0 -0
  258. /package/dist/roadtrip/{p-9fce16aa.entry.js.map → p-3dcaa947.entry.js.map} +0 -0
  259. /package/dist/roadtrip/{p-1e61ca1f.entry.js.map → p-3f5dff96.entry.js.map} +0 -0
  260. /package/dist/roadtrip/{p-f8817c0e.entry.js.map → p-449affa6.entry.js.map} +0 -0
  261. /package/dist/roadtrip/{p-ee92b78d.entry.js.map → p-4675ea6d.entry.js.map} +0 -0
  262. /package/dist/roadtrip/{p-4a47999a.entry.js.map → p-5fea6a74.entry.js.map} +0 -0
  263. /package/dist/roadtrip/{p-f9754547.entry.js.map → p-60bd73ad.entry.js.map} +0 -0
  264. /package/dist/roadtrip/{p-a925ff64.entry.js.map → p-65f9bd9c.entry.js.map} +0 -0
  265. /package/dist/roadtrip/{p-c68fc795.entry.js.map → p-6c617506.entry.js.map} +0 -0
  266. /package/dist/roadtrip/{p-4e779fd6.entry.js.map → p-6ff3b37c.entry.js.map} +0 -0
  267. /package/dist/roadtrip/{p-9737182c.entry.js.map → p-85b1e505.entry.js.map} +0 -0
  268. /package/dist/roadtrip/{p-78b51033.entry.js.map → p-8b04fc62.entry.js.map} +0 -0
  269. /package/dist/roadtrip/{p-87c1ff76.entry.js.map → p-99a6faae.entry.js.map} +0 -0
  270. /package/dist/roadtrip/{p-bba18327.entry.js.map → p-b5fa8c5a.entry.js.map} +0 -0
  271. /package/dist/roadtrip/{p-db243855.entry.js.map → p-b8c5d292.entry.js.map} +0 -0
  272. /package/dist/roadtrip/{p-d68e64a8.entry.js.map → p-c28e7add.entry.js.map} +0 -0
  273. /package/dist/roadtrip/{p-10e65612.entry.js.map → p-c47ccbf2.entry.js.map} +0 -0
  274. /package/dist/roadtrip/{p-c3ef32ef.entry.js.map → p-c6824205.entry.js.map} +0 -0
  275. /package/dist/roadtrip/{p-833c1e78.entry.js.map → p-cfd2919e.entry.js.map} +0 -0
  276. /package/dist/roadtrip/{p-a0a95c0a.entry.js.map → p-d80e7563.entry.js.map} +0 -0
  277. /package/dist/roadtrip/{p-4bbc889b.entry.js.map → p-e6c4c576.entry.js.map} +0 -0
  278. /package/dist/roadtrip/{p-01be5517.entry.js.map → p-e6e9882b.entry.js.map} +0 -0
  279. /package/dist/roadtrip/{p-5a6fbd7f.entry.js.map → p-e75ec60f.entry.js.map} +0 -0
  280. /package/dist/roadtrip/{p-edbbe884.entry.js.map → p-ea1a175d.entry.js.map} +0 -0
  281. /package/dist/roadtrip/{p-2903bdc0.entry.js.map → p-eac313e4.entry.js.map} +0 -0
  282. /package/dist/roadtrip/{p-fb26ed7e.entry.js.map → p-f1b53143.entry.js.map} +0 -0
  283. /package/dist/roadtrip/{p-b18cda16.entry.js.map → p-fd3c58b6.entry.js.map} +0 -0
  284. /package/dist/roadtrip/{p-32845e72.entry.js.map → p-fe40ab3d.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"drawer.js","sourceRoot":"","sources":["../../../src/components/drawer/drawer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Listen, Method, Prop, h, Host, Watch } from '@stencil/core';\nimport { navigationClose, navigationChevron } from '../../../icons';\n\n/**\n * @slot - Content of the drawer.\n * @slot title - replace the title with a custom title section when `'drawerTitle'` is not set\n * @slot footer - footer of the drawer\n * `<div slot=\"footer\">`\n `<road-button color=\"primary\" outline=\"true\" expand=\"true\">Annuler</road-button>`\n `<road-button color=\"primary\" expand=\"true\" class=\"mb-0\">Valider</road-button>`\n ` </div>`\n */\n\n\n@Component({\n tag: 'road-drawer',\n styleUrl: 'drawer.css',\n shadow: true,\n})\nexport class Drawer {\n\n /**\n * Current reference of the drawer\n */\n @Element() el!: HTMLRoadDrawerElement;\n\n /**\n * Set isOpen property to true to open the drawer\n */\n @Prop({ mutable: true }) isOpen: boolean = false;\n\n /**\n * position of the drawer. e.g. left, right, bottom\n */\n @Prop() position: string = 'left';\n\n /**\n * Width of the drawer\n */\n @Prop() drawerWidth: number = 480;\n\n /**\n * Inverse header colors\n */\n @Prop() hasInverseHeader: boolean = false;\n\n /**\n * Show / hide back icon\n */\n @Prop() hasBackIcon: boolean = false;\n\n /**\n * Show / hide back icon\n */\n @Prop() backText?: string;\n\n /**\n * Title of the drawer in the header bar\n */\n @Prop() drawerTitle?: string;\n\n /**\n * Aria label of the drawer\n */\n @Prop() ariaLabel?: string;\n\n /**\n * Aria label of the drawer\n */\n @Prop() ariaLabelBack?: string;\n\n /**\n * Aria label of the drawer\n */\n @Prop() ariaLabelClose?: string;\n\n /**\n * Show / hide close icon\n */\n @Prop() hasCloseIcon: boolean = true;\n\n /**\n * Indicate when opening the drawer\n */\n @Event({ eventName: 'open' }) onOpen!: EventEmitter<void>;\n\n /**\n * Indicate when closing the drawer\n */\n @Event({ eventName: 'close' }) onClose!: EventEmitter<void>;\n\n /**\n * Indicate when return to previous state of the drawer content\n */\n @Event({ eventName: 'back' }) onBack!: EventEmitter<void>;\n\n /**\n * Open the drawer\n */\n @Method()\n async open() {\n this.isOpen = true;\n }\n\n /**\n * Close the drawer\n */\n @Method()\n async close() {\n this.isOpen = false;\n }\n\n /**\n * Return to previous state of the drawer content\n */\n @Method()\n async back() {\n this.onBack.emit();\n }\n\n // @Watch('isOpen')\n // handleOpen(openValue: boolean) {\n // if(openValue === true) {\n // this.onOpen.emit();\n // } else {\n // this.el.addEventListener('transitionend', () => {\n // this.onClose.emit();\n // this.el.shadowRoot && ((this.el.shadowRoot.querySelector('.drawer-body') as HTMLElement).scrollTop = 0);\n // }, { once: true});\n // }\n // }\n\n\n @Watch('isOpen')\n handleOpen(openValue: boolean) {\n if(openValue === true) {\n this.onOpen.emit();\n // Focus the first button element after the drawer is opened\n setTimeout(() => this.focusFirstButton(), 50); // Add a slight delay to ensure the element is rendered\n } else {\n this.el.addEventListener('transitionend', () => {\n this.onClose.emit();\n this.el.shadowRoot && ((this.el.shadowRoot.querySelector('.drawer-body') as HTMLElement).scrollTop = 0);\n }, { once: true });\n }\n }\n \n /**\n * Find and focus the first button element in the drawer\n */\n private focusFirstButton() {\n const buttonElement = this.el.shadowRoot?.querySelector('button') as HTMLElement;\n \n if (buttonElement) {\n buttonElement.focus(); // Focus the first button element\n }\n }\n \n\n /**\n * Close the dialog when clicking on the cross or layer\n */\n private onClick = (ev: UIEvent) => {\n ev.stopPropagation();\n ev.preventDefault();\n\n this.close();\n };\n\n /**\n * Close the dialog when clicking on the cross or layer\n */\n private onClickBack = (event: MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n\n this.back();\n };\n\n /**\n * Close the dialog when press Escape key\n */\n @Listen('keyup', { target: 'document' })\n onEscape(event: KeyboardEvent) {\n if (event.key === 'Escape' || event.key === \"Esc\") {\n this.close();\n }\n }\n\n /**\n * Call close function when clicking an element with data-dismiss=\"modal\" attribute\n */\n componentDidLoad() {\n this.el.querySelectorAll('[data-dismiss=\"modal\"]').forEach(item => {\n item.addEventListener('click', () => this.close());\n });\n }\n\n private hasFooterContent(): boolean {\n const footerSlot = this.el.querySelector('[slot=\"footer\"]');\n return footerSlot !== null && footerSlot.childElementCount > 0;\n }\n\n render() {\n const drawerIsOpenClass = this.isOpen ? 'drawer-open' : '';\n const inverseHeaderClass = this.hasInverseHeader ? 'drawer-header-inverse' : '';\n const ariaLabel = this.ariaLabel !== undefined ? this.ariaLabel : 'drawer';\n const ariaLabelBack = this.ariaLabelBack !== undefined ? this.ariaLabelBack : 'Back';\n const ariaLabelClose = this.ariaLabelClose !== undefined ? this.ariaLabelClose : 'Close';\n const drawerDelimiterClass = this.drawerTitle !== undefined && !this.hasInverseHeader ? 'drawer-delimiter' : '';\n const backIconElement = this.hasBackIcon ? <button type=\"button\" class=\"drawer-action\" aria-label={`${ariaLabelBack}`} onClick={this.onClickBack}><road-icon icon={navigationChevron} rotate=\"180\"></road-icon>{this.backText}</button> : '';\n const closeIconElement = this.hasCloseIcon ? <button type=\"button\" class=\"drawer-close\" onClick={this.onClick} aria-label={`${ariaLabelClose}`}><road-icon icon={navigationClose} aria-hidden=\"true\"></road-icon></button> : '';\n const drawerWidthValue = this.position === 'bottom' ? '100%' : this.drawerWidth + 'px';\n\n return (\n <Host class={`${drawerIsOpenClass} drawer-${this.position}`} tabindex=\"0\" role=\"dialog\" aria-label={`${ariaLabel}`}>\n <div class=\"drawer-overlay\" onClick={this.onClick} tabindex=\"-1\"></div>\n <div class=\"drawer-dialog\" style={{ maxWidth: `${drawerWidthValue}` }} role=\"document\" tabindex=\"0\">\n <div class=\"drawer-content\">\n <header class={`drawer-header ${inverseHeaderClass} ${drawerDelimiterClass}`}>\n {backIconElement}\n {this.drawerTitle !== undefined ? <h2 class=\"drawer-title\">{this.drawerTitle}</h2> : <div class=\"drawer-title\"><slot name=\"title\" /></div>}\n {closeIconElement}\n </header>\n <div class=\"drawer-body\">\n <slot/>\n </div>\n {this.hasFooterContent() && (\n <footer class=\"drawer-footer\">\n <slot name=\"footer\"/>\n </footer>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}"]}
1
+ {"version":3,"file":"drawer.js","sourceRoot":"","sources":["../../../src/components/drawer/drawer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Listen, Method, Prop, h, Host, Watch } from '@stencil/core';\nimport { navigationClose, navigationChevron } from '../../../icons';\n\n/**\n * @slot - Content of the drawer.\n * @slot title - replace the title with a custom title section when `'drawerTitle'` is not set\n * @slot footer - footer of the drawer\n * `<div slot=\"footer\">`\n `<road-button color=\"primary\" outline=\"true\" expand=\"true\">Annuler</road-button>`\n `<road-button color=\"primary\" expand=\"true\" class=\"mb-0\">Valider</road-button>`\n ` </div>`\n */\n\n\n@Component({\n tag: 'road-drawer',\n styleUrl: 'drawer.css',\n shadow: true,\n})\nexport class Drawer {\n\n /**\n * Current reference of the drawer\n */\n @Element() el!: HTMLRoadDrawerElement;\n\n /**\n * Set isOpen property to true to open the drawer\n */\n @Prop({ mutable: true }) isOpen: boolean = false;\n\n /**\n * Set removePadding property to true to remove padding for drawer body\n */\n @Prop({ mutable: true }) removePadding: boolean = false;\n\n /**\n * position of the drawer. e.g. left, right, bottom\n */\n @Prop() position: string = 'left';\n\n /**\n * Width of the drawer\n */\n @Prop() drawerWidth: number = 480;\n\n /**\n * Inverse header colors\n */\n @Prop() hasInverseHeader: boolean = false;\n\n /**\n * Show / hide back icon\n */\n @Prop() hasBackIcon: boolean = false;\n\n /**\n * Show / hide back icon\n */\n @Prop() backText?: string;\n\n /**\n * Title of the drawer in the header bar\n */\n @Prop() drawerTitle?: string;\n\n /**\n * Aria label of the drawer\n */\n @Prop() ariaLabel?: string;\n\n /**\n * Aria label of the drawer\n */\n @Prop() ariaLabelBack?: string;\n\n /**\n * Aria label of the drawer\n */\n @Prop() ariaLabelClose?: string;\n\n /**\n * Show / hide close icon\n */\n @Prop() hasCloseIcon: boolean = true;\n\n /**\n * Indicate when opening the drawer\n */\n @Event({ eventName: 'open' }) onOpen!: EventEmitter<void>;\n\n /**\n * Indicate when closing the drawer\n */\n @Event({ eventName: 'close' }) onClose!: EventEmitter<void>;\n\n /**\n * Indicate when return to previous state of the drawer content\n */\n @Event({ eventName: 'back' }) onBack!: EventEmitter<void>;\n\n /**\n * Open the drawer\n */\n @Method()\n async open() {\n this.isOpen = true;\n }\n\n /**\n * Close the drawer\n */\n @Method()\n async close() {\n this.isOpen = false;\n }\n\n /**\n * Return to previous state of the drawer content\n */\n @Method()\n async back() {\n this.onBack.emit();\n }\n\n // @Watch('isOpen')\n // handleOpen(openValue: boolean) {\n // if(openValue === true) {\n // this.onOpen.emit();\n // } else {\n // this.el.addEventListener('transitionend', () => {\n // this.onClose.emit();\n // this.el.shadowRoot && ((this.el.shadowRoot.querySelector('.drawer-body') as HTMLElement).scrollTop = 0);\n // }, { once: true});\n // }\n // }\n\n\n @Watch('isOpen')\n handleOpen(openValue: boolean) {\n if(openValue === true) {\n this.onOpen.emit();\n // Focus the first button element after the drawer is opened\n setTimeout(() => this.focusFirstButton(), 50); // Add a slight delay to ensure the element is rendered\n } else {\n this.el.addEventListener('transitionend', () => {\n this.onClose.emit();\n this.el.shadowRoot && ((this.el.shadowRoot.querySelector('.drawer-body') as HTMLElement).scrollTop = 0);\n }, { once: true });\n }\n }\n \n /**\n * Find and focus the first button element in the drawer\n */\n private focusFirstButton() {\n const buttonElement = this.el.shadowRoot?.querySelector('button') as HTMLElement;\n \n if (buttonElement) {\n buttonElement.focus(); // Focus the first button element\n }\n }\n \n\n /**\n * Close the dialog when clicking on the cross or layer\n */\n private onClick = (ev: UIEvent) => {\n ev.stopPropagation();\n ev.preventDefault();\n\n this.close();\n };\n\n /**\n * Close the dialog when clicking on the cross or layer\n */\n private onClickBack = (event: MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n\n this.back();\n };\n\n /**\n * Close the dialog when press Escape key\n */\n @Listen('keyup', { target: 'document' })\n onEscape(event: KeyboardEvent) {\n if (event.key === 'Escape' || event.key === \"Esc\") {\n this.close();\n }\n }\n\n /**\n * Call close function when clicking an element with data-dismiss=\"modal\" attribute\n */\n componentDidLoad() {\n this.el.querySelectorAll('[data-dismiss=\"modal\"]').forEach(item => {\n item.addEventListener('click', () => this.close());\n });\n }\n\n render() {\n const drawerIsOpenClass = this.isOpen ? 'drawer-open' : '';\n const removePaddingClass = this.removePadding ? 'remove-padding' : '';\n const inverseHeaderClass = this.hasInverseHeader ? 'drawer-header-inverse' : '';\n const ariaLabel = this.ariaLabel ?? 'drawer';\n const ariaLabelBack = this.ariaLabelBack ?? 'Back';\n const ariaLabelClose = this.ariaLabelClose ?? 'Close';\n const drawerDelimiterClass = this.drawerTitle && !this.hasInverseHeader ? 'drawer-delimiter' : '';\n const backIconElement = this.hasBackIcon ? (\n <button type=\"button\" class=\"drawer-action\" aria-label={ariaLabelBack} onClick={this.onClickBack}>\n <road-icon icon={navigationChevron} rotate=\"180\"></road-icon>\n {this.backText}\n </button>\n ) : null;\n const closeIconElement = this.hasCloseIcon ? (\n <button type=\"button\" class=\"drawer-close\" onClick={this.onClick} aria-label={ariaLabelClose}>\n <road-icon icon={navigationClose} aria-hidden=\"true\"></road-icon>\n </button>\n ) : null;\n const drawerWidthValue = this.position === 'bottom' ? '100%' : `${this.drawerWidth}px`;\n \n return (\n <Host class={`${drawerIsOpenClass} drawer-${this.position}`} tabindex=\"0\" role=\"dialog\" aria-label={ariaLabel}>\n <div class=\"drawer-overlay\" onClick={this.onClick} tabindex=\"-1\"></div>\n <div class=\"drawer-dialog\" style={{ maxWidth: drawerWidthValue }} role=\"document\" tabindex=\"0\">\n <div class=\"drawer-content\">\n <header class={`drawer-header ${inverseHeaderClass} ${drawerDelimiterClass}`}>\n {backIconElement}\n {this.drawerTitle ? (\n <h2 class=\"drawer-title\">{this.drawerTitle}</h2>\n ) : (\n <div class=\"drawer-title\">\n <slot name=\"title\" />\n </div>\n )}\n {closeIconElement}\n </header>\n <div class={`drawer-body ${removePaddingClass}`}>\n <slot />\n </div>\n <footer class=\"drawer-footer\">\n <slot name=\"footer\" />\n </footer>\n </div>\n </div>\n </Host>\n );\n }\n \n}"]}
@@ -17,198 +17,135 @@ export default {
17
17
  argTypes: {
18
18
  'is-open': {
19
19
  control: 'boolean',
20
+ description: 'Defines whether the drawer is open or closed.',
21
+ },
22
+ 'remove-padding': {
23
+ control: 'boolean',
24
+ description: 'If true add padding for drawer body',
20
25
  },
21
26
  'has-back-icon': {
22
27
  control: 'boolean',
28
+ description: 'Displays a back arrow icon in the header.',
23
29
  },
24
30
  'back-text': {
25
31
  control: 'text',
32
+ description: 'Text label for the back button.',
26
33
  },
27
34
  'has-close-icon': {
28
35
  control: 'boolean',
36
+ description: 'Displays a close (X) icon in the header.',
29
37
  },
30
38
  'has-inverse-header': {
31
39
  control: 'boolean',
40
+ description: 'Uses an inverse color scheme for the header.',
32
41
  },
33
42
  position: {
34
43
  options: ['left', 'bottom', 'right'],
35
- control: {
36
- type: 'radio',
37
- },
44
+ control: { type: 'radio' },
45
+ description: 'Defines the drawer position.',
38
46
  },
39
47
  'drawer-width': {
40
48
  control: 'number',
41
- min: 0,
49
+ description: 'Sets the width of the drawer (only applicable for side drawers).',
50
+ table: {
51
+ defaultValue: { summary: 480 },
52
+ },
42
53
  },
43
54
  'drawer-title': {
44
55
  control: 'text',
56
+ description: 'Defines the title displayed in the drawer header.',
45
57
  },
46
- 'footer': {
58
+ footer: {
47
59
  control: 'text',
60
+ description: ' `<div slot="footer"><road-button color="primary" outline="true" expand="true">Annuler</road-button>`\n` <road-button color="primary" expand="true">Envoyer</road-button></div>`',
48
61
  },
49
- // mode: {
50
- // options: ['light', 'dark'],
51
- // control: {
52
- // type: null,
53
- // },
54
- // },
55
- 'title': {
62
+ title: {
56
63
  control: 'text',
64
+ description: 'Custom title slot for advanced customization.',
57
65
  },
58
66
  'aria-label': {
59
67
  control: 'text',
68
+ description: 'ARIA label for accessibility.',
60
69
  },
61
70
  'aria-label-back': {
62
71
  control: 'text',
72
+ description: 'ARIA label for the back button.',
63
73
  },
64
74
  'aria-label-close': {
65
75
  control: 'text',
76
+ description: 'ARIA label for the close button.',
66
77
  },
67
78
  ' ': {
68
79
  control: 'text',
80
+ description: 'Main content inside the drawer.',
69
81
  },
70
- open: {
71
- control: {
72
- type: null,
73
- },
74
- },
75
- close: {
76
- control: {
77
- type: null,
78
- },
79
- },
80
- back: {
81
- control: {
82
- type: null,
83
- },
82
+ '--z-index': {
83
+ table: { defaultValue: { summary: '10' } },
84
+ control: 'text',
85
+ description: 'Defines the z-index of the drawer.',
84
86
  },
85
87
  '--background': {
86
- table: {
87
- defaultValue: { summary: 'var(--road-grey-000)' },
88
- },
89
- control: {
90
- type: null,
91
- },
92
- },
93
- '--color': {
94
- table: {
95
- defaultValue: { summary: 'var(--road-grey-900)' },
96
- },
97
- control: {
98
- type: null,
99
- },
100
- },
101
- '--header-icon': {
102
- table: {
103
- defaultValue: { summary: 'var(--road-grey-900)' },
104
- },
105
- control: {
106
- type: null,
107
- },
108
- },
109
- '--header-color': {
110
- table: {
111
- defaultValue: { summary: 'var(--road-grey-900)' },
112
- },
113
- control: {
114
- type: null,
115
- },
116
- },
117
- '--header-background': {
118
- table: {
119
- defaultValue: { summary: 'var(--road-grey-000)' },
120
- },
121
- control: {
122
- type: null,
123
- },
124
- },
125
- '--header-delimiter': {
126
- table: {
127
- defaultValue: { summary: '0' },
128
- },
129
- control: {
130
- type: null,
131
- },
132
- },
133
- '--back-chevron-color': {
134
- table: {
135
- defaultValue: { summary: 'var(--road-grey-900)' },
136
- },
137
- control: {
138
- type: null,
139
- },
140
- },
141
- '--max-height': {
142
- table: {
143
- defaultValue: { summary: 'auto' },
144
- },
145
- control: {
146
- type: null,
147
- },
148
- },
149
- '--z-index': {
150
- table: {
151
- defaultValue: { summary: '10' },
152
- },
153
- control: {
154
- type: null,
155
- },
88
+ table: { defaultValue: { summary: 'var(--road-grey-000)' } },
89
+ control: 'text',
90
+ description: 'Sets the background color of the drawer.',
156
91
  },
157
92
  },
158
93
  args: {
159
94
  'is-open': true,
160
- position: null,
161
- 'drawer-width': null,
162
- 'has-inverse-header': null,
163
- 'has-back-icon': null,
164
- 'has-close-icon': undefined,
95
+ 'remove-padding': false,
96
+ position: 'right',
97
+ 'drawer-width': 480,
98
+ 'has-inverse-header': false,
99
+ 'has-back-icon': false,
100
+ 'has-close-icon': true,
101
+ 'drawer-title': 'Drawer title',
102
+ ' ': `<div>
103
+ <p>This is the drawer content.</p>
104
+ <road-button color="primary" expand>Confirm</road-button>
105
+ </div>`,
165
106
  },
166
107
  };
167
108
 
168
109
  const Template = (args) => html`
169
- <road-drawer
170
- is-open="${ifDefined(args['is-open'])}"
171
- position="${ifDefined(args.position)}"
172
- has-back-icon="${ifDefined(args['has-back-icon'])}"
173
- back-text="${ifDefined(args['back-text'])}"
174
- has-close-icon="${ifDefined(args['has-close-icon'])}"
175
- has-inverse-header="${ifDefined(args['has-inverse-header'])}"
176
- drawer-width="${ifDefined(args['drawer-width'])}"
177
- drawer-title="${ifDefined(args['drawer-title'])}"
178
- aria-label="${ifDefined(args['aria-label'])}"
179
- aria-label-back="${ifDefined(args['aria-label-back'])}"
180
- aria-label-close="${ifDefined(args['aria-label-close'])}"
181
- >
182
- ${unsafeHTML(args['title'])}
183
- ${unsafeHTML(args[' '])}
184
- ${unsafeHTML(args.footer)}
185
- </road-drawer>
110
+ <road-drawer
111
+ ?is-open="${args['is-open']}"
112
+ ?remove-padding="${args['remove-padding']}"
113
+ ?has-back-icon="${args['has-back-icon']}"
114
+ ?has-close-icon="${args['has-close-icon']}"
115
+ ?has-inverse-header="${args['has-inverse-header']}"
116
+ position="${ifDefined(args.position)}"
117
+ drawer-width="${ifDefined(args['drawer-width'])}"
118
+ drawer-title="${ifDefined(args['drawer-title'])}"
119
+ back-text="${ifDefined(args['back-text'])}"
120
+ aria-label="${ifDefined(args['aria-label'])}"
121
+ aria-label-back="${ifDefined(args['aria-label-back'])}"
122
+ aria-label-close="${ifDefined(args['aria-label-close'])}"
123
+ style="
124
+ --z-index: ${ifDefined(args['--z-index'])};
125
+ --background: ${ifDefined(args['--background'])};
126
+ "
127
+ >
128
+ ${unsafeHTML(args.title)}
129
+ ${unsafeHTML(args[' '])}
130
+ ${unsafeHTML(args.footer)}
131
+ </road-drawer>
186
132
  `;
187
133
 
188
134
  export const Playground = Template.bind({});
189
135
 
190
136
  export const HeaderInverse = Template.bind({});
191
137
  HeaderInverse.args = {
192
- 'is-open': true,
193
- position: 'right',
194
- 'drawer-width': 480,
195
- 'drawer-title': 'Drawer title',
138
+ 'has-inverse-header': true,
196
139
  };
197
140
 
198
141
  export const WithBackButton = Template.bind({});
199
142
  WithBackButton.args = {
200
- 'is-open': true,
201
- position: 'right',
202
- 'drawer-width': 480,
203
- 'drawer-title': 'Drawer title',
204
143
  'has-back-icon': true,
144
+ 'back-text': 'Back',
205
145
  };
206
146
 
207
- export const customTitle = Template.bind({});
208
- customTitle.args = {
209
- 'is-open': true,
210
- position: 'right',
211
- 'drawer-width': 480,
147
+ export const CustomTitle = Template.bind({});
148
+ CustomTitle.args = {
212
149
  title: `<div slot="title" class="d-flex align-items-center">
213
150
  <road-icon name="key" color="secondary" class="mr-16" role="img"></road-icon>
214
151
  <road-text color="secondary">618</road-text>
@@ -216,9 +153,8 @@ customTitle.args = {
216
153
  </div>`,
217
154
  };
218
155
 
219
- export const bottomDrawer = Template.bind({});
220
- bottomDrawer.args = {
221
- 'is-open': true,
156
+ export const BottomDrawer = Template.bind({});
157
+ BottomDrawer.args = {
222
158
  position: 'bottom',
223
159
  title: `<strong slot="title">Contact by SMS</strong>`,
224
160
  ' ': `<div class="bg-light p-16">
@@ -96,7 +96,7 @@
96
96
 
97
97
  .dropdown-menu {
98
98
  position: absolute;
99
- z-index: 1;
99
+ z-index: 2;
100
100
  display: flex;
101
101
  flex-direction: column;
102
102
  width: 100%;
@@ -8,84 +8,100 @@ export default {
8
8
  argTypes: {
9
9
  'is-open': {
10
10
  control: 'boolean',
11
+ description: 'Defines whether the dropdown is open or closed.',
11
12
  },
12
13
  'is-light': {
13
14
  control: 'boolean',
15
+ description: 'Applies a light style to the dropdown.',
14
16
  },
15
17
  'is-medium': {
16
18
  control: 'boolean',
19
+ description: 'Applies a medium-sized style to the dropdown.',
17
20
  },
18
21
  position: {
19
22
  options: ['left', 'right'],
20
- control: {
21
- type: 'radio',
23
+ control: { type: 'radio' },
24
+ description: 'Sets the horizontal position of the dropdown.',
25
+ table: {
26
+ defaultValue: { summary: 'left' },
22
27
  },
23
28
  },
24
29
  direction: {
25
30
  options: ['top', 'bottom'],
26
- control: {
27
- type: 'radio',
28
- },
29
- },
30
- ' ': {
31
- control: {
32
- type: null,
31
+ control: { type: 'radio' },
32
+ description: 'Sets the vertical direction in which the dropdown expands.',
33
+ table: {
34
+ defaultValue: { summary: 'bottom' },
33
35
  },
34
36
  },
35
37
  list: {
36
- control: {
37
- type: 'text',
38
- },
38
+ control: 'text',
39
+ description: 'Defines the list of items inside the dropdown.',
39
40
  },
40
41
  '--margin-top': {
41
- table: {
42
- defaultValue: { summary: '0.5rem' },
43
- },
44
- control: {
45
- type: null,
46
- },
42
+ table: { defaultValue: { summary: '0.5rem' } },
43
+ control: 'text',
44
+ description: 'Sets the margin-top of the dropdown.',
47
45
  },
48
46
  },
49
47
  args: {
48
+ 'is-open': true,
49
+ 'is-light': false,
50
+ 'is-medium': false,
50
51
  position: 'left',
51
52
  direction: 'bottom',
52
- 'is-open': true,
53
- 'is-light': null,
54
- 'is-medium': null,
55
53
  list: `<road-list slot="list">
56
- <road-item button class="border-0">
57
- <road-icon slot="start" name="picture" size="md" aria-hidden="true"></road-icon>
58
- <road-label>
59
- Label
60
- </road-label>
61
- </road-item>
62
- <road-item button class="border-0">
63
- <road-icon slot="start" name="picture" size="md" aria-hidden="true"></road-icon>
64
- <road-label>
65
- Label
66
- </road-label>
67
- </road-item>
68
- <road-item button class="border-0">
69
- <road-icon slot="start" name="picture" size="md" aria-hidden="true"></road-icon>
70
- <road-label>
71
- Label
72
- </road-label>
73
- </road-item>
74
- <road-item button class="border-0">
75
- <road-icon slot="start" name="picture" size="md" aria-hidden="true"></road-icon>
76
- <road-label>
77
- Label
78
- </road-label>
79
- </road-item>
80
- </road-list>`,
54
+ <road-item button class="border-0">
55
+ <road-icon slot="start" name="picture" size="md" aria-hidden="true"></road-icon>
56
+ <road-label>Label</road-label>
57
+ </road-item>
58
+ <road-item button class="border-0">
59
+ <road-icon slot="start" name="picture" size="md" aria-hidden="true"></road-icon>
60
+ <road-label>Label</road-label>
61
+ </road-item>
62
+ <road-item button class="border-0">
63
+ <road-icon slot="start" name="picture" size="md" aria-hidden="true"></road-icon>
64
+ <road-label>Label</road-label>
65
+ </road-item>
66
+ <road-item button class="border-0">
67
+ <road-icon slot="start" name="picture" size="md" aria-hidden="true"></road-icon>
68
+ <road-label>Label</road-label>
69
+ </road-item>
70
+ </road-list>`,
81
71
  },
82
72
  };
83
73
 
84
- export const Playground = (args) => html`
85
- <road-dropdown is-open=${ifDefined(args['is-open'])} is-light="${ifDefined(args['is-light'])}" is-medium="${ifDefined(args['is-medium'])}" position="${ifDefined(args.position)}" direction="${ifDefined(args.direction)}">
86
- ${unsafeHTML(args.list)}
87
- </road-dropdown>
88
- <road-dropdown is-open=${ifDefined(args['is-open'])} is-light="${ifDefined(args['is-light'])}" is-medium="${ifDefined(args['is-medium'])}" position="${ifDefined(args.position)}" direction="${ifDefined(args.direction)}">
89
- ${unsafeHTML(args.list)}
90
- </road-dropdown>
74
+ const Template = (args) => html`
75
+ <road-dropdown
76
+ ?is-open="${args['is-open']}"
77
+ ?is-light="${args['is-light']}"
78
+ ?is-medium="${args['is-medium']}"
79
+ position="${ifDefined(args.position)}"
80
+ direction="${ifDefined(args.direction)}"
81
+ style="--margin-top: ${ifDefined(args['--margin-top'])};"
82
+ >
83
+ ${unsafeHTML(args.list)}
84
+ </road-dropdown>
91
85
  `;
86
+
87
+ export const Playground = Template.bind({});
88
+
89
+ export const RightPosition = Template.bind({});
90
+ RightPosition.args = {
91
+ position: 'right',
92
+ };
93
+
94
+ export const TopDirection = Template.bind({});
95
+ TopDirection.args = {
96
+ direction: 'top',
97
+ };
98
+
99
+ export const LightDropdown = Template.bind({});
100
+ LightDropdown.args = {
101
+ 'is-light': true,
102
+ };
103
+
104
+ export const MediumDropdown = Template.bind({});
105
+ MediumDropdown.args = {
106
+ 'is-medium': true,
107
+ };
@@ -10,93 +10,97 @@ export default {
10
10
  },
11
11
  layout: 'fullscreen',
12
12
  actions: {
13
- handles: ['open', 'close'],
13
+ handles: ['open', 'close', 'roadselected'],
14
14
  },
15
15
  },
16
16
  argTypes: {
17
17
  'is-open': {
18
18
  control: 'boolean',
19
+ description: 'Defines whether the duration picker is open or closed.',
19
20
  },
20
21
  header: {
21
22
  control: 'text',
23
+ description: 'Title displayed in the duration picker.',
22
24
  },
23
25
  min: {
24
26
  control: 'number',
27
+ description: 'Minimum selectable duration in minutes.',
25
28
  },
26
29
  max: {
27
30
  control: 'number',
31
+ description: 'Maximum selectable duration in minutes.',
28
32
  },
29
33
  step: {
30
34
  control: 'number',
31
35
  min: 15,
36
+ description: 'Step interval for selecting the duration (in minutes).',
37
+ table: {
38
+ defaultValue: { summary: 15 },
39
+ },
32
40
  },
33
41
  roadselected: {
34
42
  action: 'roadselected',
35
- control: {
36
- type: null,
43
+ description: 'Triggered when a duration is selected.',
44
+ table: {
45
+ category: 'Events',
46
+ type: { summary: 'CustomEvent<{ value: number, label: string }>' },
37
47
  },
38
48
  },
39
- open : {
40
- description: 'Open the widget.',
49
+ open: {
50
+ description: 'Opens the duration picker.',
41
51
  table: {
42
- category: 'methods',
43
- type: {
44
- summary: 'void',
45
- },
46
- },
47
- defaultValue: {
48
- summary: null,
52
+ category: 'Methods',
53
+ type: { summary: 'void' },
49
54
  },
50
55
  },
51
- close : {
52
- description: 'Close the widget.',
56
+ close: {
57
+ description: 'Closes the duration picker.',
53
58
  table: {
54
- category: 'methods',
55
- type: {
56
- summary: 'void',
57
- },
58
- defaultValue: {
59
- summary: null,
60
- },
59
+ category: 'Methods',
60
+ type: { summary: 'void' },
61
61
  },
62
62
  },
63
63
  },
64
64
  args: {
65
65
  'is-open': true,
66
+ header: 'Select a duration',
67
+ min: 15,
68
+ max: 240,
69
+ step: 15,
66
70
  },
67
71
  };
68
72
 
69
73
  const Template = (args) => html`
70
- <road-duration
71
- is-open="${ifDefined(args['is-open'])}"
72
- header="${ifDefined(args.header)}"
73
- min="${ifDefined(args.min)}"
74
- max="${ifDefined(args.max)}"
75
- step="${ifDefined(args.step)}"
76
- @roadselected=${event => args.roadselected(event.detail)}
77
- ></road-duration>
74
+ <road-duration
75
+ ?is-open="${args['is-open']}"
76
+ header="${ifDefined(args.header)}"
77
+ min="${ifDefined(args.min)}"
78
+ max="${ifDefined(args.max)}"
79
+ step="${ifDefined(args.step)}"
80
+ @roadselected=${event => args.roadselected(event.detail)}
81
+ ></road-duration>
78
82
  `;
79
83
 
80
84
  export const Playground = Template.bind({});
81
85
 
82
86
  export const Example = () => html`
83
- <road-label class="mb-8">Duration of the service</road-label>
84
- <div class="d-flex align-items-center">
85
- <road-input
86
- class="input"
87
- aria-label="Duration of the service"
88
- style="width: 100px"
89
- placeholder="00:15"
90
- @roadfocus=${() => document.querySelector('.duration').open()}
91
- ></road-input>
92
- <div class="text-content ml-8">hour(s)</div>
93
- </div>
87
+ <road-label class="mb-8">Duration of the service</road-label>
88
+ <div class="d-flex align-items-center">
89
+ <road-input
90
+ class="input"
91
+ aria-label="Duration of the service"
92
+ style="width: 100px"
93
+ placeholder="00:15"
94
+ @roadfocus=${() => document.querySelector('.duration').open()}
95
+ ></road-input>
96
+ <div class="text-content ml-8">hour(s)</div>
97
+ </div>
94
98
 
95
- <road-duration
96
- class="duration"
97
- header="Duration of the service"
98
- @roadselected=${event => document.querySelector('.input').value = event.detail.label}
99
- ></road-duration>
99
+ <road-duration
100
+ class="duration"
101
+ header="Duration of the service"
102
+ @roadselected=${event => document.querySelector('.input').value = event.detail.label}
103
+ ></road-duration>
100
104
  `;
101
105
  Example.parameters = {
102
106
  docs: {