dropdown-menu.stories.tsx 5.3 KB

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