dropdown-menu.stories.tsx 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. import {
  2. DropdownMenu,
  3. DropdownItem,
  4. DropdownDivider,
  5. DropdownHeader,
  6. } from '@/shared/components/dropdown/dropdown-menu'
  7. import type { Meta } from '@storybook/react'
  8. import OLDropdownMenuItem from '@/shared/components/ol/ol-dropdown-menu-item'
  9. type Args = React.ComponentProps<typeof DropdownMenu>
  10. export const Default = (args: Args) => {
  11. return (
  12. <DropdownMenu show>
  13. <li>
  14. <DropdownItem eventKey="1" href="#/action-1">
  15. Example
  16. </DropdownItem>
  17. </li>
  18. <li>
  19. <DropdownItem eventKey="2" href="#/action-2">
  20. Example
  21. </DropdownItem>
  22. </li>
  23. <DropdownDivider />
  24. <li>
  25. <DropdownItem eventKey="3" disabled={args.disabled} href="#/action-3">
  26. Example
  27. </DropdownItem>
  28. </li>
  29. </DropdownMenu>
  30. )
  31. }
  32. export const Active = (args: Args) => {
  33. return (
  34. <DropdownMenu show>
  35. <li>
  36. <DropdownItem eventKey="1" href="#/action-1">
  37. Example
  38. </DropdownItem>
  39. </li>
  40. <li>
  41. <DropdownItem
  42. eventKey="2"
  43. active
  44. href="#/action-2"
  45. trailingIcon="check"
  46. >
  47. Example
  48. </DropdownItem>
  49. </li>
  50. <DropdownDivider />
  51. <li>
  52. <DropdownItem eventKey="3" disabled={args.disabled} href="#/action-3">
  53. Example
  54. </DropdownItem>
  55. </li>
  56. </DropdownMenu>
  57. )
  58. }
  59. export const MultipleSelection = () => {
  60. return (
  61. <DropdownMenu show>
  62. <DropdownHeader>Header</DropdownHeader>
  63. <li>
  64. <DropdownItem
  65. eventKey="1"
  66. href="#/action-1"
  67. leadingIcon={<DropdownItem.EmptyLeadingIcon />}
  68. >
  69. Example
  70. </DropdownItem>
  71. </li>
  72. <li>
  73. <DropdownItem eventKey="2" href="#/action-2" leadingIcon="check">
  74. Example
  75. </DropdownItem>
  76. </li>
  77. <li>
  78. <DropdownItem eventKey="3" href="#/action-3" leadingIcon="check">
  79. Example
  80. </DropdownItem>
  81. </li>
  82. </DropdownMenu>
  83. )
  84. }
  85. export const Danger = (args: Args) => {
  86. return (
  87. <DropdownMenu show>
  88. <li>
  89. <DropdownItem eventKey="1" disabled={args.disabled} href="#/action-1">
  90. Example
  91. </DropdownItem>
  92. </li>
  93. <li>
  94. <DropdownItem eventKey="2" href="#/action-2">
  95. Example
  96. </DropdownItem>
  97. </li>
  98. <DropdownDivider />
  99. <li>
  100. <DropdownItem eventKey="3" href="#/action-3" variant="danger">
  101. Example
  102. </DropdownItem>
  103. </li>
  104. </DropdownMenu>
  105. )
  106. }
  107. export const Description = (args: Args) => {
  108. return (
  109. <DropdownMenu show>
  110. <li>
  111. <DropdownItem
  112. disabled={args.disabled}
  113. eventKey="1"
  114. href="#/action-1"
  115. description="Description of the menu"
  116. >
  117. Example
  118. </DropdownItem>
  119. </li>
  120. <li>
  121. <DropdownItem
  122. active
  123. eventKey="2"
  124. href="#/action-2"
  125. description="Description of the menu"
  126. trailingIcon="check"
  127. >
  128. Example
  129. </DropdownItem>
  130. </li>
  131. </DropdownMenu>
  132. )
  133. }
  134. export const LeadingIcon = (args: Args) => {
  135. return (
  136. <DropdownMenu show>
  137. <OLDropdownMenuItem
  138. disabled={args.disabled}
  139. eventKey="1"
  140. href="#/action-1"
  141. leadingIcon="view_column_2"
  142. >
  143. Editor & PDF
  144. </OLDropdownMenuItem>
  145. <OLDropdownMenuItem
  146. active
  147. eventKey="2"
  148. href="#/action-2"
  149. leadingIcon="terminal"
  150. >
  151. Editor only
  152. </OLDropdownMenuItem>
  153. <OLDropdownMenuItem
  154. eventKey="3"
  155. href="#/action-3"
  156. leadingIcon="picture_as_pdf"
  157. >
  158. PDF only
  159. </OLDropdownMenuItem>
  160. <OLDropdownMenuItem
  161. eventKey="4"
  162. href="#/action-4"
  163. leadingIcon="select_window"
  164. >
  165. PDF in separate tab
  166. </OLDropdownMenuItem>
  167. <OLDropdownMenuItem
  168. eventKey="5"
  169. href="#/action-5"
  170. leadingIcon="align_space_even"
  171. description="Some description"
  172. >
  173. With a description
  174. </OLDropdownMenuItem>
  175. <OLDropdownMenuItem
  176. eventKey="6"
  177. href="#/action-6"
  178. leadingIcon="align_space_even"
  179. className="dropdown-item-material-icon-small"
  180. >
  181. Small icon
  182. </OLDropdownMenuItem>
  183. </DropdownMenu>
  184. )
  185. }
  186. export const TrailingIcon = () => {
  187. return (
  188. <DropdownMenu show>
  189. <OLDropdownMenuItem eventKey="1" href="#/action-1" trailingIcon="check">
  190. Tick
  191. </OLDropdownMenuItem>
  192. <OLDropdownMenuItem
  193. eventKey="2"
  194. href="#/action-2"
  195. trailingIcon="check"
  196. description="Some description"
  197. >
  198. With a description
  199. </OLDropdownMenuItem>
  200. <OLDropdownMenuItem
  201. eventKey="3"
  202. href="#/action-3"
  203. leadingIcon="align_space_even"
  204. trailingIcon="check"
  205. description="Some description"
  206. >
  207. With a leading icon
  208. </OLDropdownMenuItem>
  209. </DropdownMenu>
  210. )
  211. }
  212. const meta: Meta<typeof DropdownMenu> = {
  213. title: 'Shared / Components / DropdownMenu',
  214. component: DropdownMenu,
  215. args: {
  216. disabled: false,
  217. },
  218. parameters: {
  219. controls: {
  220. include: ['disabled'],
  221. },
  222. },
  223. }
  224. export default meta