@performant-software/semantic-components 0.5.2 → 0.5.5

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 (440) hide show
  1. package/build/278156e41e0ad908cf7f841b17130502.woff2 +0 -0
  2. package/build/38c6d8bab26db77d8c806813e1497763.woff2 +0 -0
  3. package/build/425399f81e4ce7cbd967685402ba0260.woff +0 -0
  4. package/build/5367103510b27b78482794590e1ce3b0.ttf +0 -0
  5. package/build/62d9dae4e0040e81c980950003df0e07.svg +1518 -0
  6. package/build/65a2fb6d9aaa164b41a039302093995b.ttf +0 -0
  7. package/build/6729d29753e000c17489ed43135ba8d5.svg +1008 -0
  8. package/build/687a4990ea22bb1a49d469a5d9319790.woff2 +0 -0
  9. package/build/752905fa5edf21fc52a10a0c1ca9c7a4.eot +0 -0
  10. package/build/99f63ae7a743f21ab30847ed06a698d9.png +0 -0
  11. package/build/9c4845b4b41ef40a22faee76144fa816.svg +366 -0
  12. package/build/a01e3f2d6c83dc3aee175e2482b3f777.eot +0 -0
  13. package/build/c656b8caa454ed19b9a2ef7f4f5b8fea.ttf +0 -0
  14. package/build/cac87dc00c87a5d74711d0276713808a.woff +0 -0
  15. package/build/d68fa3e67dbb653a13cec44b1bcabcfe.eot +0 -0
  16. package/build/ddae9b1ba9b0b42f58809904b0b21349.woff +0 -0
  17. package/build/index.js +1 -1
  18. package/build/index.js.map +1 -1
  19. package/build/main.css +63 -141
  20. package/build/semantic-ui.css +61259 -0
  21. package/package.json +13 -6
  22. package/src/components/AccordionDataList.js +3 -0
  23. package/src/components/AccordionList.js +9 -2
  24. package/src/components/AccordionSelector.js +93 -86
  25. package/src/components/ArrowButtons.js +2 -0
  26. package/src/components/CancelButton.js +1 -2
  27. package/src/components/ColorPickerModal.js +36 -31
  28. package/src/components/DataList.js +11 -2
  29. package/src/components/DataTable.js +1 -0
  30. package/src/components/DataTableColumnSelector.js +53 -33
  31. package/src/components/DataView.css +4 -0
  32. package/src/components/DataView.js +413 -0
  33. package/src/components/DatabaseView.js +126 -0
  34. package/src/components/DateInput.js +1 -0
  35. package/src/components/DatePicker.css +4 -4
  36. package/src/components/DatePicker.js +4 -0
  37. package/src/components/DropdownButton.js +2 -0
  38. package/src/components/DropdownMenu.js +11 -1
  39. package/src/components/EditModal.js +1 -2
  40. package/src/components/FileUpload.css +3 -3
  41. package/src/components/FileUploadModal.js +43 -38
  42. package/src/components/FuzzyDate.js +114 -99
  43. package/src/components/HorizontalCards.js +3 -0
  44. package/src/components/Items.css +0 -4
  45. package/src/components/Items.js +2 -0
  46. package/src/components/ItemsToggle.js +4 -0
  47. package/src/components/List.js +1 -0
  48. package/src/components/ListFilters.js +115 -109
  49. package/src/components/ListTable.js +7 -4
  50. package/src/components/LoginModal.js +72 -65
  51. package/src/components/MediaList.js +1 -0
  52. package/src/components/MenuBar.css +0 -0
  53. package/src/components/MenuBar.js +84 -0
  54. package/src/components/MenuSidebar.css +0 -0
  55. package/src/components/MenuSidebar.js +84 -0
  56. package/src/components/ModalDropdown.js +6 -3
  57. package/src/components/NestedAccordion.css +4 -0
  58. package/src/components/NestedAccordion.js +1 -0
  59. package/src/components/PhotoViewer.js +23 -15
  60. package/src/components/ReferenceCodeDropdown.css +0 -0
  61. package/src/components/ReferenceCodeDropdown.js +118 -0
  62. package/src/components/ReferenceCodeModal.css +0 -0
  63. package/src/components/ReferenceCodeModal.js +38 -0
  64. package/src/components/ReferenceTableModal.css +0 -0
  65. package/src/components/ReferenceTableModal.js +73 -0
  66. package/src/components/ReferenceTablesList.css +0 -0
  67. package/src/components/ReferenceTablesList.js +44 -0
  68. package/src/components/RemoteDropdown.js +1 -0
  69. package/src/components/Selectize.js +50 -45
  70. package/src/components/TabbedModal.js +30 -24
  71. package/src/components/VideoFrameSelector.js +90 -78
  72. package/src/components/VideoPlayer.js +58 -30
  73. package/src/components/ViewXML.js +38 -32
  74. package/src/context/ModalContext.js +5 -0
  75. package/src/css/site/collections/breadcrumb.overrides +3 -0
  76. package/src/css/site/collections/breadcrumb.variables +3 -0
  77. package/src/css/site/collections/form.overrides +3 -0
  78. package/src/css/site/collections/form.variables +3 -0
  79. package/src/css/site/collections/grid.overrides +3 -0
  80. package/src/css/site/collections/grid.variables +3 -0
  81. package/src/css/site/collections/menu.overrides +3 -0
  82. package/src/css/site/collections/menu.variables +5 -0
  83. package/src/css/site/collections/message.overrides +3 -0
  84. package/src/css/site/collections/message.variables +3 -0
  85. package/src/css/site/collections/table.overrides +3 -0
  86. package/src/css/site/collections/table.variables +3 -0
  87. package/src/css/site/elements/button.overrides +3 -0
  88. package/src/css/site/elements/button.variables +5 -0
  89. package/src/css/site/elements/container.overrides +3 -0
  90. package/src/css/site/elements/container.variables +3 -0
  91. package/src/css/site/elements/divider.overrides +3 -0
  92. package/src/css/site/elements/divider.variables +3 -0
  93. package/src/css/site/elements/flag.overrides +3 -0
  94. package/src/css/site/elements/flag.variables +3 -0
  95. package/src/css/site/elements/header.overrides +3 -0
  96. package/src/css/site/elements/header.variables +3 -0
  97. package/src/css/site/elements/icon.overrides +3 -0
  98. package/src/css/site/elements/icon.variables +3 -0
  99. package/src/css/site/elements/image.overrides +3 -0
  100. package/src/css/site/elements/image.variables +3 -0
  101. package/src/css/site/elements/input.overrides +3 -0
  102. package/src/css/site/elements/input.variables +3 -0
  103. package/src/css/site/elements/label.overrides +3 -0
  104. package/src/css/site/elements/label.variables +3 -0
  105. package/src/css/site/elements/list.overrides +3 -0
  106. package/src/css/site/elements/list.variables +3 -0
  107. package/src/css/site/elements/loader.overrides +3 -0
  108. package/src/css/site/elements/loader.variables +3 -0
  109. package/src/css/site/elements/rail.overrides +3 -0
  110. package/src/css/site/elements/rail.variables +3 -0
  111. package/src/css/site/elements/reveal.overrides +3 -0
  112. package/src/css/site/elements/reveal.variables +3 -0
  113. package/src/css/site/elements/segment.overrides +3 -0
  114. package/src/css/site/elements/segment.variables +3 -0
  115. package/src/css/site/elements/step.overrides +3 -0
  116. package/src/css/site/elements/step.variables +3 -0
  117. package/src/css/site/globals/reset.overrides +3 -0
  118. package/src/css/site/globals/reset.variables +3 -0
  119. package/src/css/site/globals/site.overrides +3 -0
  120. package/src/css/site/globals/site.variables +11 -0
  121. package/src/css/site/modules/accordion.overrides +3 -0
  122. package/src/css/site/modules/accordion.variables +3 -0
  123. package/src/css/site/modules/chatroom.overrides +3 -0
  124. package/src/css/site/modules/chatroom.variables +3 -0
  125. package/src/css/site/modules/checkbox.overrides +3 -0
  126. package/src/css/site/modules/checkbox.variables +3 -0
  127. package/src/css/site/modules/dimmer.overrides +3 -0
  128. package/src/css/site/modules/dimmer.variables +3 -0
  129. package/src/css/site/modules/dropdown.overrides +3 -0
  130. package/src/css/site/modules/dropdown.variables +3 -0
  131. package/src/css/site/modules/embed.overrides +3 -0
  132. package/src/css/site/modules/embed.variables +0 -0
  133. package/src/css/site/modules/modal.overrides +3 -0
  134. package/src/css/site/modules/modal.variables +3 -0
  135. package/src/css/site/modules/nag.overrides +3 -0
  136. package/src/css/site/modules/nag.variables +3 -0
  137. package/src/css/site/modules/popup.overrides +3 -0
  138. package/src/css/site/modules/popup.variables +3 -0
  139. package/src/css/site/modules/progress.overrides +3 -0
  140. package/src/css/site/modules/progress.variables +3 -0
  141. package/src/css/site/modules/rating.overrides +3 -0
  142. package/src/css/site/modules/rating.variables +3 -0
  143. package/src/css/site/modules/search.overrides +3 -0
  144. package/src/css/site/modules/search.variables +3 -0
  145. package/src/css/site/modules/shape.overrides +3 -0
  146. package/src/css/site/modules/shape.variables +3 -0
  147. package/src/css/site/modules/sidebar.overrides +3 -0
  148. package/src/css/site/modules/sidebar.variables +3 -0
  149. package/src/css/site/modules/sticky.overrides +3 -0
  150. package/src/css/site/modules/sticky.variables +3 -0
  151. package/src/css/site/modules/tab.overrides +3 -0
  152. package/src/css/site/modules/tab.variables +3 -0
  153. package/src/css/site/modules/transition.overrides +3 -0
  154. package/src/css/site/modules/transition.variables +3 -0
  155. package/src/css/site/views/ad.overrides +3 -0
  156. package/src/css/site/views/ad.variables +3 -0
  157. package/src/css/site/views/card.overrides +3 -0
  158. package/src/css/site/views/card.variables +3 -0
  159. package/src/css/site/views/comment.overrides +3 -0
  160. package/src/css/site/views/comment.variables +3 -0
  161. package/src/css/site/views/feed.overrides +3 -0
  162. package/src/css/site/views/feed.variables +3 -0
  163. package/src/css/site/views/item.overrides +3 -0
  164. package/src/css/site/views/item.variables +3 -0
  165. package/src/css/site/views/statistic.overrides +3 -0
  166. package/src/css/site/views/statistic.variables +3 -0
  167. package/src/css/style.less +1 -0
  168. package/src/css/theme.config +94 -0
  169. package/src/css/themes/amazon/elements/button.overrides +46 -0
  170. package/src/css/themes/amazon/elements/button.variables +58 -0
  171. package/src/css/themes/amazon/globals/site.variables +43 -0
  172. package/src/css/themes/basic/assets/fonts/icons.eot +0 -0
  173. package/src/css/themes/basic/assets/fonts/icons.svg +450 -0
  174. package/src/css/themes/basic/assets/fonts/icons.ttf +0 -0
  175. package/src/css/themes/basic/assets/fonts/icons.woff +0 -0
  176. package/src/css/themes/basic/collections/table.overrides +4 -0
  177. package/src/css/themes/basic/collections/table.variables +11 -0
  178. package/src/css/themes/basic/elements/button.overrides +4 -0
  179. package/src/css/themes/basic/elements/button.variables +44 -0
  180. package/src/css/themes/basic/elements/icon.overrides +189 -0
  181. package/src/css/themes/basic/elements/icon.variables +12 -0
  182. package/src/css/themes/basic/elements/step.overrides +10 -0
  183. package/src/css/themes/basic/elements/step.variables +18 -0
  184. package/src/css/themes/basic/globals/reset.overrides +5 -0
  185. package/src/css/themes/basic/globals/reset.variables +3 -0
  186. package/src/css/themes/basic/modules/progress.overrides +3 -0
  187. package/src/css/themes/basic/modules/progress.variables +15 -0
  188. package/src/css/themes/basic/views/card.overrides +4 -0
  189. package/src/css/themes/basic/views/card.variables +35 -0
  190. package/src/css/themes/bookish/elements/header.overrides +15 -0
  191. package/src/css/themes/bookish/elements/header.variables +37 -0
  192. package/src/css/themes/bootstrap3/elements/button.overrides +0 -0
  193. package/src/css/themes/bootstrap3/elements/button.variables +63 -0
  194. package/src/css/themes/chubby/collections/form.overrides +16 -0
  195. package/src/css/themes/chubby/collections/form.variables +9 -0
  196. package/src/css/themes/chubby/collections/menu.overrides +0 -0
  197. package/src/css/themes/chubby/collections/menu.variables +40 -0
  198. package/src/css/themes/chubby/elements/button.overrides +21 -0
  199. package/src/css/themes/chubby/elements/button.variables +57 -0
  200. package/src/css/themes/chubby/elements/header.overrides +5 -0
  201. package/src/css/themes/chubby/elements/header.variables +21 -0
  202. package/src/css/themes/chubby/modules/accordion.overrides +7 -0
  203. package/src/css/themes/chubby/modules/accordion.variables +15 -0
  204. package/src/css/themes/chubby/views/comment.overrides +12 -0
  205. package/src/css/themes/chubby/views/comment.variables +46 -0
  206. package/src/css/themes/classic/collections/table.overrides +3 -0
  207. package/src/css/themes/classic/collections/table.variables +14 -0
  208. package/src/css/themes/classic/elements/button.overrides +3 -0
  209. package/src/css/themes/classic/elements/button.variables +96 -0
  210. package/src/css/themes/classic/elements/header.overrides +3 -0
  211. package/src/css/themes/classic/elements/header.variables +12 -0
  212. package/src/css/themes/classic/modules/progress.overrides +3 -0
  213. package/src/css/themes/classic/modules/progress.variables +9 -0
  214. package/src/css/themes/classic/views/card.overrides +98 -0
  215. package/src/css/themes/classic/views/card.variables +22 -0
  216. package/src/css/themes/colored/modules/checkbox.overrides +0 -0
  217. package/src/css/themes/colored/modules/checkbox.variables +29 -0
  218. package/src/css/themes/default/assets/fonts/brand-icons.eot +0 -0
  219. package/src/css/themes/default/assets/fonts/brand-icons.svg +1008 -0
  220. package/src/css/themes/default/assets/fonts/brand-icons.ttf +0 -0
  221. package/src/css/themes/default/assets/fonts/brand-icons.woff +0 -0
  222. package/src/css/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  223. package/src/css/themes/default/assets/fonts/icons.eot +0 -0
  224. package/src/css/themes/default/assets/fonts/icons.svg +1518 -0
  225. package/src/css/themes/default/assets/fonts/icons.ttf +0 -0
  226. package/src/css/themes/default/assets/fonts/icons.woff +0 -0
  227. package/src/css/themes/default/assets/fonts/icons.woff2 +0 -0
  228. package/src/css/themes/default/assets/fonts/outline-icons.eot +0 -0
  229. package/src/css/themes/default/assets/fonts/outline-icons.svg +366 -0
  230. package/src/css/themes/default/assets/fonts/outline-icons.ttf +0 -0
  231. package/src/css/themes/default/assets/fonts/outline-icons.woff +0 -0
  232. package/src/css/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  233. package/src/css/themes/default/assets/images/flags.png +0 -0
  234. package/src/css/themes/default/collections/breadcrumb.overrides +3 -0
  235. package/src/css/themes/default/collections/breadcrumb.variables +33 -0
  236. package/src/css/themes/default/collections/form.overrides +3 -0
  237. package/src/css/themes/default/collections/form.variables +195 -0
  238. package/src/css/themes/default/collections/grid.overrides +4 -0
  239. package/src/css/themes/default/collections/grid.variables +103 -0
  240. package/src/css/themes/default/collections/menu.overrides +3 -0
  241. package/src/css/themes/default/collections/menu.variables +458 -0
  242. package/src/css/themes/default/collections/message.overrides +3 -0
  243. package/src/css/themes/default/collections/message.variables +158 -0
  244. package/src/css/themes/default/collections/table.overrides +0 -0
  245. package/src/css/themes/default/collections/table.variables +247 -0
  246. package/src/css/themes/default/elements/button.overrides +3 -0
  247. package/src/css/themes/default/elements/button.variables +360 -0
  248. package/src/css/themes/default/elements/container.overrides +3 -0
  249. package/src/css/themes/default/elements/container.variables +58 -0
  250. package/src/css/themes/default/elements/divider.overrides +18 -0
  251. package/src/css/themes/default/elements/divider.variables +53 -0
  252. package/src/css/themes/default/elements/flag.overrides +991 -0
  253. package/src/css/themes/default/elements/flag.variables +13 -0
  254. package/src/css/themes/default/elements/header.overrides +4 -0
  255. package/src/css/themes/default/elements/header.variables +151 -0
  256. package/src/css/themes/default/elements/icon.overrides +1716 -0
  257. package/src/css/themes/default/elements/icon.variables +94 -0
  258. package/src/css/themes/default/elements/image.overrides +3 -0
  259. package/src/css/themes/default/elements/image.variables +44 -0
  260. package/src/css/themes/default/elements/input.overrides +3 -0
  261. package/src/css/themes/default/elements/input.variables +101 -0
  262. package/src/css/themes/default/elements/label.overrides +3 -0
  263. package/src/css/themes/default/elements/label.variables +254 -0
  264. package/src/css/themes/default/elements/list.overrides +3 -0
  265. package/src/css/themes/default/elements/list.variables +224 -0
  266. package/src/css/themes/default/elements/loader.overrides +3 -0
  267. package/src/css/themes/default/elements/loader.variables +73 -0
  268. package/src/css/themes/default/elements/placeholder.overrides +3 -0
  269. package/src/css/themes/default/elements/placeholder.variables +55 -0
  270. package/src/css/themes/default/elements/rail.overrides +3 -0
  271. package/src/css/themes/default/elements/rail.variables +34 -0
  272. package/src/css/themes/default/elements/reveal.overrides +3 -0
  273. package/src/css/themes/default/elements/reveal.variables +18 -0
  274. package/src/css/themes/default/elements/segment.overrides +3 -0
  275. package/src/css/themes/default/elements/segment.variables +154 -0
  276. package/src/css/themes/default/elements/step.overrides +16 -0
  277. package/src/css/themes/default/elements/step.variables +130 -0
  278. package/src/css/themes/default/globals/reset.overrides +447 -0
  279. package/src/css/themes/default/globals/reset.variables +3 -0
  280. package/src/css/themes/default/globals/site.overrides +3 -0
  281. package/src/css/themes/default/globals/site.variables +973 -0
  282. package/src/css/themes/default/modules/accordion.overrides +28 -0
  283. package/src/css/themes/default/modules/accordion.variables +100 -0
  284. package/src/css/themes/default/modules/chatroom.overrides +3 -0
  285. package/src/css/themes/default/modules/chatroom.variables +3 -0
  286. package/src/css/themes/default/modules/checkbox.overrides +36 -0
  287. package/src/css/themes/default/modules/checkbox.variables +193 -0
  288. package/src/css/themes/default/modules/dimmer.overrides +3 -0
  289. package/src/css/themes/default/modules/dimmer.variables +58 -0
  290. package/src/css/themes/default/modules/dropdown.overrides +59 -0
  291. package/src/css/themes/default/modules/dropdown.variables +379 -0
  292. package/src/css/themes/default/modules/embed.overrides +3 -0
  293. package/src/css/themes/default/modules/embed.variables +53 -0
  294. package/src/css/themes/default/modules/modal.overrides +3 -0
  295. package/src/css/themes/default/modules/modal.variables +192 -0
  296. package/src/css/themes/default/modules/nag.overrides +3 -0
  297. package/src/css/themes/default/modules/nag.variables +74 -0
  298. package/src/css/themes/default/modules/popup.overrides +3 -0
  299. package/src/css/themes/default/modules/popup.variables +138 -0
  300. package/src/css/themes/default/modules/progress.overrides +3 -0
  301. package/src/css/themes/default/modules/progress.variables +113 -0
  302. package/src/css/themes/default/modules/rating.overrides +68 -0
  303. package/src/css/themes/default/modules/rating.variables +103 -0
  304. package/src/css/themes/default/modules/search.overrides +3 -0
  305. package/src/css/themes/default/modules/search.variables +161 -0
  306. package/src/css/themes/default/modules/shape.overrides +3 -0
  307. package/src/css/themes/default/modules/shape.variables +40 -0
  308. package/src/css/themes/default/modules/sidebar.overrides +3 -0
  309. package/src/css/themes/default/modules/sidebar.variables +45 -0
  310. package/src/css/themes/default/modules/sticky.overrides +3 -0
  311. package/src/css/themes/default/modules/sticky.variables +7 -0
  312. package/src/css/themes/default/modules/tab.overrides +3 -0
  313. package/src/css/themes/default/modules/tab.variables +11 -0
  314. package/src/css/themes/default/modules/transition.overrides +962 -0
  315. package/src/css/themes/default/modules/transition.variables +10 -0
  316. package/src/css/themes/default/modules/video.overrides +3 -0
  317. package/src/css/themes/default/modules/video.variables +16 -0
  318. package/src/css/themes/default/views/ad.overrides +3 -0
  319. package/src/css/themes/default/views/ad.variables +13 -0
  320. package/src/css/themes/default/views/card.overrides +3 -0
  321. package/src/css/themes/default/views/card.variables +220 -0
  322. package/src/css/themes/default/views/comment.overrides +3 -0
  323. package/src/css/themes/default/views/comment.variables +98 -0
  324. package/src/css/themes/default/views/feed.overrides +3 -0
  325. package/src/css/themes/default/views/feed.variables +141 -0
  326. package/src/css/themes/default/views/item.overrides +3 -0
  327. package/src/css/themes/default/views/item.variables +157 -0
  328. package/src/css/themes/default/views/statistic.overrides +3 -0
  329. package/src/css/themes/default/views/statistic.variables +99 -0
  330. package/src/css/themes/duo/elements/loader.overrides +3 -0
  331. package/src/css/themes/duo/elements/loader.variables +6 -0
  332. package/src/css/themes/fixed-width/collections/grid.overrides +3 -0
  333. package/src/css/themes/fixed-width/collections/grid.variables +23 -0
  334. package/src/css/themes/fixed-width/modules/modal.overrides +3 -0
  335. package/src/css/themes/fixed-width/modules/modal.variables +37 -0
  336. package/src/css/themes/flat/collections/form.overrides +28 -0
  337. package/src/css/themes/flat/collections/form.variables +74 -0
  338. package/src/css/themes/flat/globals/site.overrides +3 -0
  339. package/src/css/themes/flat/globals/site.variables +107 -0
  340. package/src/css/themes/github/assets/fonts/octicons-local.ttf +0 -0
  341. package/src/css/themes/github/assets/fonts/octicons.svg +200 -0
  342. package/src/css/themes/github/assets/fonts/octicons.ttf +0 -0
  343. package/src/css/themes/github/assets/fonts/octicons.woff +0 -0
  344. package/src/css/themes/github/collections/breadcrumb.variables +11 -0
  345. package/src/css/themes/github/collections/form.overrides +16 -0
  346. package/src/css/themes/github/collections/form.variables +40 -0
  347. package/src/css/themes/github/collections/grid.variables +2 -0
  348. package/src/css/themes/github/collections/menu.overrides +7 -0
  349. package/src/css/themes/github/collections/menu.variables +61 -0
  350. package/src/css/themes/github/collections/message.overrides +11 -0
  351. package/src/css/themes/github/collections/message.variables +29 -0
  352. package/src/css/themes/github/collections/table.variables +8 -0
  353. package/src/css/themes/github/elements/button.overrides +4 -0
  354. package/src/css/themes/github/elements/button.variables +77 -0
  355. package/src/css/themes/github/elements/header.variables +9 -0
  356. package/src/css/themes/github/elements/icon.overrides +208 -0
  357. package/src/css/themes/github/elements/icon.variables +13 -0
  358. package/src/css/themes/github/elements/image.variables +5 -0
  359. package/src/css/themes/github/elements/input.overrides +32 -0
  360. package/src/css/themes/github/elements/input.variables +16 -0
  361. package/src/css/themes/github/elements/label.overrides +9 -0
  362. package/src/css/themes/github/elements/label.variables +4 -0
  363. package/src/css/themes/github/elements/segment.overrides +3 -0
  364. package/src/css/themes/github/elements/segment.variables +40 -0
  365. package/src/css/themes/github/elements/step.overrides +26 -0
  366. package/src/css/themes/github/elements/step.variables +26 -0
  367. package/src/css/themes/github/globals/site.variables +47 -0
  368. package/src/css/themes/github/modules/dropdown.overrides +53 -0
  369. package/src/css/themes/github/modules/dropdown.variables +35 -0
  370. package/src/css/themes/github/modules/popup.variables +12 -0
  371. package/src/css/themes/gmail/collections/message.overrides +0 -0
  372. package/src/css/themes/gmail/collections/message.variables +15 -0
  373. package/src/css/themes/instagram/views/card.overrides +12 -0
  374. package/src/css/themes/instagram/views/card.variables +23 -0
  375. package/src/css/themes/material/assets/fonts/icons.eot +0 -0
  376. package/src/css/themes/material/assets/fonts/icons.svg +2373 -0
  377. package/src/css/themes/material/assets/fonts/icons.ttf +0 -0
  378. package/src/css/themes/material/assets/fonts/icons.woff +0 -0
  379. package/src/css/themes/material/assets/fonts/icons.woff2 +0 -0
  380. package/src/css/themes/material/collections/menu.overrides +1 -0
  381. package/src/css/themes/material/collections/menu.variables +10 -0
  382. package/src/css/themes/material/elements/button.overrides +15 -0
  383. package/src/css/themes/material/elements/button.variables +97 -0
  384. package/src/css/themes/material/elements/header.overrides +15 -0
  385. package/src/css/themes/material/elements/header.variables +21 -0
  386. package/src/css/themes/material/elements/icon.overrides +934 -0
  387. package/src/css/themes/material/elements/icon.variables +11 -0
  388. package/src/css/themes/material/globals/site.overrides +0 -0
  389. package/src/css/themes/material/globals/site.variables +128 -0
  390. package/src/css/themes/material/modules/dropdown.overrides +5 -0
  391. package/src/css/themes/material/modules/dropdown.variables +20 -0
  392. package/src/css/themes/material/modules/modal.overrides +6 -0
  393. package/src/css/themes/material/modules/modal.variables +15 -0
  394. package/src/css/themes/pulsar/elements/loader.overrides +70 -0
  395. package/src/css/themes/pulsar/elements/loader.variables +7 -0
  396. package/src/css/themes/raised/elements/button.overrides +3 -0
  397. package/src/css/themes/raised/elements/button.variables +27 -0
  398. package/src/css/themes/resetcss/globals/reset.overrides +52 -0
  399. package/src/css/themes/resetcss/globals/reset.variables +3 -0
  400. package/src/css/themes/round/elements/button.overrides +0 -0
  401. package/src/css/themes/round/elements/button.variables +138 -0
  402. package/src/css/themes/rtl/globals/site.overrides +6 -0
  403. package/src/css/themes/rtl/globals/site.variables +14 -0
  404. package/src/css/themes/striped/modules/progress.overrides +29 -0
  405. package/src/css/themes/striped/modules/progress.variables +3 -0
  406. package/src/css/themes/timeline/views/feed.overrides +27 -0
  407. package/src/css/themes/timeline/views/feed.variables +36 -0
  408. package/src/css/themes/twitter/elements/button.overrides +13 -0
  409. package/src/css/themes/twitter/elements/button.variables +44 -0
  410. package/src/i18n/en.json +33 -0
  411. package/src/index.js +10 -0
  412. package/types/components/AccordionDataList.js.flow +3 -0
  413. package/types/components/AccordionList.js.flow +7 -0
  414. package/types/components/ArrowButtons.js.flow +2 -0
  415. package/types/components/CancelButton.js.flow +1 -2
  416. package/types/components/DataList.js.flow +11 -2
  417. package/types/components/DataTable.js.flow +1 -0
  418. package/types/components/DataTableColumnSelector.js.flow +42 -33
  419. package/types/components/DataView.js.flow +302 -20
  420. package/types/components/DateInput.js.flow +1 -0
  421. package/types/components/DatePicker.js.flow +4 -0
  422. package/types/components/DropdownButton.js.flow +2 -0
  423. package/types/components/EditModal.js.flow +1 -2
  424. package/types/components/HorizontalCards.js.flow +3 -0
  425. package/types/components/Items.js.flow +2 -0
  426. package/types/components/ItemsToggle.js.flow +4 -0
  427. package/types/components/List.js.flow +1 -0
  428. package/types/components/MediaList.js.flow +1 -0
  429. package/types/components/MenuBar.js.flow +10 -4
  430. package/types/components/MenuSidebar.js.flow +18 -6
  431. package/types/components/ModalDropdown.js.flow +6 -3
  432. package/types/components/NestedAccordion.js.flow +1 -0
  433. package/types/components/ReferenceCodeDropdown.js.flow +118 -0
  434. package/types/components/ReferenceCodeModal.js.flow +32 -0
  435. package/types/components/ReferenceTableModal.js.flow +67 -0
  436. package/types/components/ReferenceTablesList.js.flow +44 -0
  437. package/types/components/RemoteDropdown.js.flow +1 -0
  438. package/types/css/theme.js.flow +5 -0
  439. package/types/index.js.flow +8 -0
  440. package/webpack.config.js +26 -1
@@ -1,42 +1,263 @@
1
1
  // @flow
2
2
 
3
3
  import axios from 'axios';
4
- import React, { useCallback, useEffect, useRef, useState } from 'react';
5
- import { Container } from 'semantic-ui-react';
4
+ import React, {
5
+ useCallback,
6
+ useEffect,
7
+ useMemo,
8
+ useRef,
9
+ useState
10
+ } from 'react';
11
+ import { Form, Grid, Modal } from 'semantic-ui-react';
6
12
  import _ from 'underscore';
7
- import MenuSidebar from './MenuSidebar';
13
+ import DataTable from './DataTable';
14
+ import DropdownButton from './DropdownButton';
15
+ import i18n from '../i18n/i18n';
8
16
  import MenuBar from './MenuBar';
9
- import ListTable from './ListTable';
17
+ import MenuSidebar from './MenuSidebar';
18
+ import useDataList, { SORT_ASCENDING, SORT_DESCENDING } from './DataList';
19
+ import './DataView.css';
20
+
21
+ import type { Column } from './DataTable';
22
+
23
+ type Sort = {
24
+ label: string,
25
+ value: string
26
+ };
10
27
 
11
28
  type Item = {
12
29
  id: string,
13
30
  label: string,
14
31
  group?: string,
15
- }
32
+ columns?: Array<Column>,
33
+ sorts?: Array<Sort>
34
+ };
16
35
 
17
36
  type Props = {
37
+ columnCount?: number,
18
38
  items: Array<Item>,
19
39
  layout: 'top' | 'left',
20
40
  title: string
21
41
  };
22
42
 
43
+ /**
44
+ * Sets up the List component used by the DataView component. This component is responsible for rendering the DataTable
45
+ * and handling sorting.
46
+ */
47
+ const List = useDataList((props) => {
48
+ const [activeSort, setActiveSort] = useState();
49
+
50
+ /**
51
+ * Sets the active sort object on the state.
52
+ *
53
+ * @type {(function(*): void)|*}
54
+ */
55
+ const onSortChange = useCallback((sort) => {
56
+ const newSort = { ...sort };
57
+
58
+ if (activeSort && activeSort.value === sort.value) {
59
+ newSort.direction = activeSort.direction === SORT_DESCENDING ? SORT_ASCENDING : SORT_DESCENDING;
60
+ }
61
+
62
+ setActiveSort(newSort);
63
+ }, [props.sorts, activeSort]);
64
+
65
+ /**
66
+ * Calls the onSort prop when the active sort is changed.
67
+ */
68
+ useEffect(() => {
69
+ if (activeSort) {
70
+ props.onSort(activeSort.value, activeSort.direction, props.page);
71
+ }
72
+ }, [activeSort]);
73
+
74
+ /**
75
+ * Calls the onSort prop when the component is loaded to initialize the data set.
76
+ */
77
+ useEffect(() => {
78
+ const { page } = props;
79
+
80
+ let { sortColumn = '', sortDirection = SORT_ASCENDING } = props;
81
+
82
+ if (!sortColumn) {
83
+ const defaultSort = _.first(props.sort);
84
+
85
+ if (defaultSort) {
86
+ sortColumn = defaultSort.value;
87
+
88
+ if (defaultSort.direction) {
89
+ sortDirection = defaultSort.direction;
90
+ }
91
+ }
92
+ }
93
+
94
+ props.onSort(sortColumn, sortDirection, page);
95
+ }, []);
96
+
97
+ return (
98
+ <DataTable
99
+ {...props}
100
+ renderListHeader={() => props.sorts && (
101
+ <DropdownButton
102
+ basic
103
+ icon={activeSort && activeSort.direction === SORT_DESCENDING
104
+ ? 'sort alphabet down'
105
+ : 'sort alphabet up'}
106
+ onChange={() => {}}
107
+ options={_.map(props.sorts, (sort) => ({
108
+ key: sort.value,
109
+ value: sort.value,
110
+ text: sort.label,
111
+ onClick: () => onSortChange(sort)
112
+ }))}
113
+ text={activeSort
114
+ ? i18n.t('DataView.labels.sortBy', { column: activeSort.label })
115
+ : i18n.t('DataView.labels.noSort')}
116
+ value={activeSort && activeSort.value}
117
+ />
118
+ )}
119
+ tableProps={{
120
+ ...props.tableProps || {},
121
+ celled: true
122
+ }}
123
+ />
124
+ );
125
+ });
126
+
23
127
  const DataView = (props: Props) => {
24
128
  const [activeItem, setActiveItem] = useState();
129
+ const [selectedRecord, setSelectedRecord] = useState();
130
+
25
131
  const [columns, setColumns] = useState([]);
26
132
  const [menu, setMenu] = useState([]);
27
133
  const [paddingLeft, setPaddingLeft] = useState();
134
+ const [key, setKey] = useState();
28
135
 
29
136
  const menuRef = useRef();
30
137
 
138
+ /**
139
+ * Sets the collection name based on the URL of the active item.
140
+ *
141
+ * @type {string}
142
+ */
143
+ const collectionName = useMemo(() => {
144
+ let name = '';
145
+
146
+ if (activeItem) {
147
+ name = activeItem.url.substr(activeItem.url.lastIndexOf('/') + 1, activeItem.url.length);
148
+ }
149
+
150
+ return name;
151
+ }, [activeItem]);
152
+
153
+ /**
154
+ * Merges the calculated columns with the columns passed with the active item. The idea is to allow customization
155
+ * of the columns by the implementing component, but not require it.
156
+ *
157
+ * @type {(function(*): ([]|*))|*}
158
+ */
159
+ const mergeColumns = useCallback((items) => {
160
+ if (!activeItem) {
161
+ return [];
162
+ }
163
+
164
+ // Build the list of columns based on the unique set of properties
165
+ const keys = _.chain(items)
166
+ .map((item) => _.keys(item))
167
+ .flatten()
168
+ .uniq()
169
+ .value();
170
+
171
+ // Merge any columns provided by the implementing component by name
172
+ let cols = _.map(keys, (col, index) => {
173
+ const columnValue = _.findWhere(activeItem.columns, { name: col }) || {};
174
+
175
+ const defaultValue = {
176
+ name: col,
177
+ label: col.trim().replace(/^\w/, (c) => c.toUpperCase()).replaceAll('_', ' '),
178
+ sortable: false,
179
+ resolve: (item) => resolveValue(item, col),
180
+ hidden: index > props.columnCount,
181
+ index
182
+ };
183
+
184
+ return _.extend(defaultValue, columnValue);
185
+ });
186
+
187
+ // Include any columns provided by the implementing component that do not exist on the object (i.e. extra columns)
188
+ cols = [
189
+ ...cols,
190
+ ..._.reject(activeItem.columns, (col) => _.contains(keys, col.name))
191
+ ];
192
+
193
+ // Sort the columns by the index property
194
+ return _.sortBy(cols, 'index');
195
+ }, [activeItem]);
196
+
197
+ /**
198
+ * Calls the "show" URL for the passed item. It's possible that the API does not implement a public "show" route. In
199
+ * this case and error is expected and the passed item will be set as the selected record.
200
+ *
201
+ * @type {(function(*): void)|*}
202
+ */
203
+ const onItemSelection = useCallback((item) => {
204
+ if (activeItem) {
205
+ axios
206
+ .get(`${activeItem.url}/${item.id}`)
207
+ .then(({ data }) => {
208
+ const itemKey = _.first(_.keys(data));
209
+ setSelectedRecord(data[itemKey]);
210
+ })
211
+ .catch(() => {
212
+ setSelectedRecord(item);
213
+ });
214
+ }
215
+ }, [activeItem]);
216
+
217
+ /**
218
+ * Calls the "index" URL to initialize the data set.
219
+ *
220
+ * @type {function(*): *}
221
+ */
31
222
  const onLoad = useCallback((params) => {
223
+ let promise;
224
+
32
225
  if (activeItem) {
33
- axios.get
34
- fetch(activeItem.url).then((response) => {
35
- console.log(response);
36
- });
226
+ promise = axios
227
+ .get(activeItem.url, { params })
228
+ .then((response) => {
229
+ const items = response.data[collectionName];
230
+ setColumns(mergeColumns(items));
231
+
232
+ return response;
233
+ });
234
+ } else {
235
+ promise = Promise.resolve();
37
236
  }
237
+
238
+ return promise;
38
239
  }, [activeItem]);
39
240
 
241
+ /**
242
+ * Returns the value of the passed attribute on the passed item. This function handles use cases for special
243
+ * types of objects.
244
+ *
245
+ * @type {function(*, *): *}
246
+ */
247
+ const resolveValue = useCallback((item, attribute) => {
248
+ let value = item[attribute];
249
+
250
+ if (_.isArray(value)) {
251
+ value = _.size(value);
252
+ } else if (_.isBoolean(value)) {
253
+ value = Boolean(value).toString();
254
+ } else if (_.isObject(value)) {
255
+ value = value[_.first(_.keys(value))];
256
+ }
257
+
258
+ return value;
259
+ }, []);
260
+
40
261
  /**
41
262
  * Re-formats the passed items as a menu object. If we're grouping the menu items, items will be added as
42
263
  * a child property of the group object.
@@ -66,7 +287,7 @@ const DataView = (props: Props) => {
66
287
  */
67
288
  useEffect(() => {
68
289
  if (props.items && props.items.length) {
69
- setActiveItem(props.items[0]);
290
+ setActiveItem(_.first(props.items));
70
291
  }
71
292
  }, [props.items]);
72
293
 
@@ -79,6 +300,24 @@ const DataView = (props: Props) => {
79
300
  }
80
301
  }, [menuRef, props.layout]);
81
302
 
303
+ /**
304
+ * Calculates the key value when the active item or columns are changed. This is done to force re-rendering
305
+ * of the List component when the columns are loaded via the API.
306
+ */
307
+ useEffect(() => {
308
+ const keys = [];
309
+
310
+ if (activeItem) {
311
+ keys.push(activeItem.id);
312
+ }
313
+
314
+ if (columns && columns.length) {
315
+ keys.push(..._.pluck(columns, 'name'));
316
+ }
317
+
318
+ setKey(keys.join(''));
319
+ }, [activeItem, columns]);
320
+
82
321
  return (
83
322
  <div
84
323
  className='data-view'
@@ -100,26 +339,69 @@ const DataView = (props: Props) => {
100
339
  items={menu}
101
340
  />
102
341
  )}
103
- <Container
342
+ <div
104
343
  style={{
105
- paddingLeft
344
+ marginLeft: paddingLeft
106
345
  }}
107
346
  >
108
347
  { activeItem && (
109
- <ListTable
110
- collectionName='items'
348
+ <List
349
+ actions={[{
350
+ name: 'details',
351
+ icon: 'info',
352
+ onClick: onItemSelection
353
+ }]}
354
+ collectionName={collectionName}
111
355
  columns={columns}
112
- onLoad={(params) => Api.onLoad(_.extend(params, {
113
- items,
114
- perPage: number('Per page', 10)
115
- }))}
356
+ key={key}
357
+ onLoad={onLoad}
358
+ perPageOptions={[10, 25, 50, 100]}
116
359
  searchable
360
+ sorts={activeItem.sorts}
117
361
  />
118
362
  )}
119
- <div>Content</div>
120
- </Container>
363
+ </div>
364
+ { selectedRecord && (
365
+ <Modal
366
+ as={Form}
367
+ centered={false}
368
+ className='data-view-modal'
369
+ closeIcon
370
+ onClose={() => setSelectedRecord(null)}
371
+ open
372
+ >
373
+ <Modal.Header
374
+ content={i18n.t('DataView.labels.details')}
375
+ />
376
+ <Modal.Content>
377
+ <Grid
378
+ columns={3}
379
+ doubling
380
+ >
381
+ { _.map(mergeColumns([selectedRecord]), (column) => (
382
+ <Grid.Column
383
+ as={Form.Field}
384
+ key={column.name}
385
+ >
386
+ <span
387
+ className='label'
388
+ >
389
+ { column.label }
390
+ </span>
391
+ { resolveValue(selectedRecord, column.name) }
392
+ </Grid.Column>
393
+ ))}
394
+ </Grid>
395
+ </Modal.Content>
396
+ </Modal>
397
+ )}
121
398
  </div>
122
399
  );
123
400
  };
124
401
 
402
+ DataView.defaultProps = {
403
+ columnCount: 5,
404
+ layout: 'left'
405
+ };
406
+
125
407
  export default DataView;
@@ -28,6 +28,7 @@ const DateInput = (props: Props) => {
28
28
 
29
29
  return (
30
30
  <Input
31
+ aria-label='Date Input'
31
32
  className='date-input icon'
32
33
  icon='calendar alternate outline'
33
34
  iconPosition='left'
@@ -62,9 +62,13 @@ const DatePicker = (props: Props) => {
62
62
  setCalendar(false);
63
63
  }
64
64
  }}
65
+ next2AriaLabel='Next Year'
65
66
  next2Label={<Icon name='angle double right' />}
67
+ nextAriaLabel='Next Month'
66
68
  nextLabel={<Icon name='chevron right' />}
69
+ prev2AriaLabel='Previous Year'
67
70
  prev2Label={<Icon name='angle double left' />}
71
+ prevAriaLabel='Previous Month'
68
72
  prevLabel={<Icon name='chevron left' />}
69
73
  value={props.value}
70
74
  />
@@ -34,12 +34,14 @@ const DropdownButton = (props: Props) => {
34
34
  color={props.color}
35
35
  >
36
36
  <Button
37
+ aria-label='Select'
37
38
  content={props.text}
38
39
  disabled={props.disabled}
39
40
  icon={props.icon}
40
41
  onClick={(e) => dropdownRef.current && dropdownRef.current.handleClick(e)}
41
42
  />
42
43
  <Dropdown
44
+ aria-label='Select'
43
45
  className='button icon'
44
46
  direction={props.direction}
45
47
  disabled={props.disabled}
@@ -78,10 +78,9 @@ const EditModal = (props: Props) => {
78
78
  )}
79
79
  </Button>
80
80
  <Button
81
+ basic
81
82
  disabled={props.saving}
82
- inverted
83
83
  onClick={props.onClose.bind(this)}
84
- primary
85
84
  size='medium'
86
85
  type='button'
87
86
  >
@@ -170,6 +170,7 @@ const HorizontalCards = (props: Props) => {
170
170
  if (_.isString(image) || !image) {
171
171
  return (
172
172
  <Image
173
+ alt={item.alt}
173
174
  className='image-placeholder'
174
175
  src={image}
175
176
  style={{
@@ -201,12 +202,14 @@ const HorizontalCards = (props: Props) => {
201
202
  className='pagination'
202
203
  >
203
204
  <Button
205
+ aria-label='Left'
204
206
  basic
205
207
  circular
206
208
  icon='angle left'
207
209
  onClick={onPageChange.bind(this, -1)}
208
210
  />
209
211
  <Button
212
+ aria-label='Right'
210
213
  basic
211
214
  circular
212
215
  icon='angle right'
@@ -168,6 +168,7 @@ class Items extends Component<Props, {}> {
168
168
  >
169
169
  { _.map(this.getActions(item), (action, actionIndex) => (
170
170
  <Button
171
+ aria-label={action.name}
171
172
  basic
172
173
  color={action.resolveColor ? action.resolveColor(item) : action.color}
173
174
  icon={action.resolveIcon ? action.resolveIcon(item) : action.icon}
@@ -177,6 +178,7 @@ class Items extends Component<Props, {}> {
177
178
  ))}
178
179
  { this.isSelectable() && (
179
180
  <Button
181
+ aria-label='Select'
180
182
  basic
181
183
  color={this.props.isRowSelected && this.props.isRowSelected(item) ? 'green' : undefined}
182
184
  icon='checkmark'
@@ -118,12 +118,14 @@ const useItemsToggle = (WrappedComponent: ComponentType<any>) => (
118
118
  <>
119
119
  <Button
120
120
  active={this.state.view === Views.list}
121
+ aria-label='List View'
121
122
  basic
122
123
  icon='list'
123
124
  onClick={() => this.setState({ view: Views.list })}
124
125
  />
125
126
  <Button
126
127
  active={this.state.view === Views.grid}
128
+ aria-label='Grid View'
127
129
  basic
128
130
  icon='grid layout'
129
131
  onClick={() => this.setState({ view: Views.grid })}
@@ -136,11 +138,13 @@ const useItemsToggle = (WrappedComponent: ComponentType<any>) => (
136
138
  }}
137
139
  >
138
140
  <Button
141
+ aria-label='Sort by'
139
142
  content={this.getSortValue()}
140
143
  icon={this.props.sortDirection === SORT_ASCENDING ? 'sort alphabet up' : 'sort alphabet down'}
141
144
  onClick={(e) => this.sortDropdown.handleClick(e)}
142
145
  />
143
146
  <Dropdown
147
+ aria-label='Sort'
144
148
  className='button icon'
145
149
  floating
146
150
  options={_.map(this.props.sort, (sort) => ({
@@ -544,6 +544,7 @@ const useList = (WrappedComponent: ComponentType<any>) => (
544
544
  return (
545
545
  <Button
546
546
  active={this.props.filters.active}
547
+ aria-label='Filter'
547
548
  basic
548
549
  icon='filter'
549
550
  onClick={this.onFilterButton.bind(this)}
@@ -43,6 +43,7 @@ const MediaList = (props: Props) => (
43
43
  onClick={props.onClick.bind(this, item, i)}
44
44
  >
45
45
  <Image
46
+ alt={item.alt}
46
47
  src={item.image}
47
48
  style={{
48
49
  objectFit: 'cover'
@@ -24,8 +24,11 @@ const MenuBar = ({ header, items, ...props }: Props) => {
24
24
  *
25
25
  * @returns {JSX.Element}
26
26
  */
27
- const renderDropdownItem = useCallback((item) => (
28
- <Dropdown.Item {...item} />
27
+ const renderDropdownItem = useCallback((item, index) => (
28
+ <Dropdown.Item
29
+ key={index}
30
+ {...item}
31
+ />
29
32
  ), []);
30
33
 
31
34
  /**
@@ -33,8 +36,9 @@ const MenuBar = ({ header, items, ...props }: Props) => {
33
36
  *
34
37
  * @returns {JSX.Element}
35
38
  */
36
- const renderMenuItem = useCallback((item) => (
39
+ const renderMenuItem = useCallback((item, index) => (
37
40
  <Menu.Item
41
+ key={index}
38
42
  {...item}
39
43
  />
40
44
  ), []);
@@ -44,9 +48,11 @@ const MenuBar = ({ header, items, ...props }: Props) => {
44
48
  *
45
49
  * @returns {JSX.Element}
46
50
  */
47
- const renderDropdown = useCallback((item) => (
51
+ const renderDropdown = useCallback((item, index) => (
48
52
  <DropdownMenu
53
+ aria-label={item.content}
49
54
  item
55
+ key={index}
50
56
  text={item.content}
51
57
  >
52
58
  { _.map(item.items, (i) => (i.items ? renderDropdown(i) : renderDropdownItem(i)))}
@@ -4,24 +4,35 @@ import React, { useCallback } from 'react';
4
4
  import {
5
5
  Header,
6
6
  Menu,
7
+ Ref,
7
8
  type HeaderProps,
8
- type MenuItemProps, Ref
9
+ type MenuItemProps
9
10
  } from 'semantic-ui-react';
10
11
  import _ from 'underscore';
11
12
 
12
13
  type Props = {
14
+ contextRef: {
15
+ current: ?HTMLElement
16
+ },
13
17
  header: HeaderProps,
14
18
  items: Array<HeaderProps | MenuItemProps>
15
19
  };
16
20
 
17
- const MenuSidebar = ({ header, items, ...props }: Props) => {
21
+ const MenuSidebar = ({
22
+ contextRef,
23
+ header,
24
+ items,
25
+ ...props
26
+ }: Props) => {
18
27
  /**
19
28
  * Renders the passed item as a menu.
20
29
  *
21
30
  * @type {unknown}
22
31
  */
23
- const renderMenu = useCallback((item) => (
24
- <Menu.Item>
32
+ const renderMenu = useCallback((item, index) => (
33
+ <Menu.Item
34
+ key={index}
35
+ >
25
36
  <Menu.Header
26
37
  {...item}
27
38
  />
@@ -36,8 +47,9 @@ const MenuSidebar = ({ header, items, ...props }: Props) => {
36
47
  *
37
48
  * @type {unknown}
38
49
  */
39
- const renderMenuItem = useCallback((item) => (
50
+ const renderMenuItem = useCallback((item, index) => (
40
51
  <Menu.Item
52
+ key={index}
41
53
  {...item}
42
54
  />
43
55
  ), []);
@@ -51,7 +63,7 @@ const MenuSidebar = ({ header, items, ...props }: Props) => {
51
63
 
52
64
  return (
53
65
  <Ref
54
- innerRef={props.contextRef}
66
+ innerRef={contextRef}
55
67
  >
56
68
  <Menu
57
69
  {...props}
@@ -3,13 +3,13 @@
3
3
  import React, { Component } from 'react';
4
4
  import { withTranslation } from 'react-i18next';
5
5
  import { Button, Dropdown } from 'semantic-ui-react';
6
+ import i18n from '../i18n/i18n';
6
7
  import './ModalDropdown.css';
7
8
 
8
9
  type Props = {
9
10
  onClear: () => void,
10
11
  renderModal: ({ onClose: () => void, open: boolean }) => void,
11
- searchQuery: ?string,
12
- t: (key: string) => string
12
+ searchQuery: ?string
13
13
  };
14
14
 
15
15
  type State = {
@@ -51,13 +51,16 @@ class ModalDropdown extends Component<Props, State> {
51
51
  onSearchChange={() => {}}
52
52
  open={false}
53
53
  search
54
+ searchInput={{
55
+ 'aria-label': 'Search'
56
+ }}
54
57
  selection
55
58
  searchQuery={this.props.searchQuery || ''}
56
59
  />
57
60
  <Button.Group>
58
61
  <Button
59
62
  basic
60
- content={this.props.t('Common.buttons.clear')}
63
+ content={i18n.t('Common.buttons.clear')}
61
64
  icon='times'
62
65
  onClick={this.props.onClear.bind(this)}
63
66
  type='button'
@@ -230,6 +230,7 @@ class NestedAccordion extends Component<Props, State> {
230
230
  renderToggle(item: any) {
231
231
  return (
232
232
  <Button
233
+ aria-label='Open'
233
234
  compact
234
235
  className={this.getButtonClass(item)}
235
236
  icon='dropdown'