@decisiv/ui-components 1.36.1-alpha.3 → 2.0.1-alpha.100

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 (323) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/lib/atoms/BaseButton/index.d.ts.map +1 -1
  3. package/lib/atoms/BaseButton/index.js +1 -1
  4. package/lib/atoms/BooleanInput/elements.d.ts.map +1 -1
  5. package/lib/atoms/BooleanInput/elements.js +8 -3
  6. package/lib/atoms/BooleanInput/index.d.ts.map +1 -1
  7. package/lib/atoms/BooleanInput/index.js +26 -5
  8. package/lib/atoms/BooleanInput/index.test.js +17 -6
  9. package/lib/atoms/BooleanInput/types.d.ts +4 -0
  10. package/lib/atoms/BooleanInput/types.d.ts.map +1 -1
  11. package/lib/atoms/BooleanInput/types.js +5 -1
  12. package/lib/atoms/Calendar/hooks/useCalendar/index.d.ts.map +1 -1
  13. package/lib/atoms/Calendar/hooks/useCalendar/index.js +2 -1
  14. package/lib/atoms/Calendar/hooks/useCalendar/index.test.js +5 -6
  15. package/lib/atoms/Calendar/index.d.ts.map +1 -1
  16. package/lib/atoms/Calendar/index.js +8 -1
  17. package/lib/atoms/Calendar/index.test.js +70 -40
  18. package/lib/atoms/Calendar/types.js +5 -1
  19. package/lib/atoms/InputField/Containers.d.ts +11 -6
  20. package/lib/atoms/InputField/Containers.d.ts.map +1 -1
  21. package/lib/atoms/InputField/Containers.js +6 -6
  22. package/lib/atoms/InputField/InputLabel.d.ts +1 -0
  23. package/lib/atoms/InputField/InputLabel.d.ts.map +1 -1
  24. package/lib/atoms/InputField/InputLabel.js +2 -1
  25. package/lib/atoms/InputField/index.d.ts +5 -0
  26. package/lib/atoms/InputField/index.d.ts.map +1 -1
  27. package/lib/atoms/InputField/index.js +21 -7
  28. package/lib/atoms/InputField/index.test.js +91 -0
  29. package/lib/atoms/InputField/schema.d.ts.map +1 -1
  30. package/lib/atoms/InputField/schema.js +1 -0
  31. package/lib/atoms/OptionsList/Category.d.ts +1 -1
  32. package/lib/atoms/OptionsList/Category.d.ts.map +1 -1
  33. package/lib/atoms/OptionsList/Category.js +4 -2
  34. package/lib/atoms/OptionsList/Footer.d.ts +8 -0
  35. package/lib/atoms/OptionsList/Footer.d.ts.map +1 -0
  36. package/lib/atoms/OptionsList/Footer.js +72 -0
  37. package/lib/atoms/OptionsList/Option.d.ts.map +1 -1
  38. package/lib/atoms/OptionsList/Option.js +8 -5
  39. package/lib/atoms/OptionsList/index.d.ts.map +1 -1
  40. package/lib/atoms/OptionsList/index.js +43 -16
  41. package/lib/atoms/OptionsList/index.test.js +107 -11
  42. package/lib/atoms/OptionsList/schema.d.ts.map +1 -1
  43. package/lib/atoms/OptionsList/schema.js +4 -0
  44. package/lib/atoms/OptionsList/types.d.ts +14 -0
  45. package/lib/atoms/OptionsList/types.d.ts.map +1 -1
  46. package/lib/atoms/OptionsList/types.js +5 -1
  47. package/lib/atoms/OptionsList/useListSelectionKeyboardActions.d.ts.map +1 -1
  48. package/lib/atoms/OptionsList/useListSelectionKeyboardActions.js +9 -4
  49. package/lib/atoms/RequiredIcon.d.ts +9 -0
  50. package/lib/atoms/RequiredIcon.d.ts.map +1 -0
  51. package/lib/atoms/{InputField/RequiredIcon.js → RequiredIcon.js} +7 -3
  52. package/lib/components/Accordion/types.js +5 -1
  53. package/lib/components/Accordion/useAccordion/types.js +5 -1
  54. package/lib/components/Alert/Container.d.ts +201 -0
  55. package/lib/components/Alert/Container.d.ts.map +1 -0
  56. package/lib/components/Alert/Container.js +26 -0
  57. package/lib/components/Alert/StyledButton.d.ts +5 -0
  58. package/lib/components/Alert/StyledButton.d.ts.map +1 -0
  59. package/lib/components/Alert/StyledButton.js +23 -0
  60. package/lib/components/Alert/index.d.ts +27 -0
  61. package/lib/components/Alert/index.d.ts.map +1 -0
  62. package/lib/components/Alert/index.js +112 -0
  63. package/lib/components/Alert/index.test.js +79 -0
  64. package/lib/components/Alert/intents.d.ts +13 -0
  65. package/lib/components/Alert/intents.d.ts.map +1 -0
  66. package/lib/components/Alert/intents.js +72 -0
  67. package/lib/components/Alert/schema.d.ts +3 -0
  68. package/lib/components/Alert/schema.d.ts.map +1 -0
  69. package/lib/components/Alert/schema.js +25 -0
  70. package/lib/components/Alert/types.d.ts +36 -0
  71. package/lib/components/Alert/types.d.ts.map +1 -0
  72. package/lib/components/Alert/types.js +32 -0
  73. package/lib/components/Avatar/types.js +5 -1
  74. package/lib/components/Badge/constants.d.ts +2 -0
  75. package/lib/components/Badge/constants.d.ts.map +1 -0
  76. package/lib/components/Badge/constants.js +29 -0
  77. package/lib/components/Badge/index.d.ts.map +1 -1
  78. package/lib/components/Badge/index.js +12 -23
  79. package/lib/components/Badge/index.test.js +51 -8
  80. package/lib/components/Badge/schema.js +1 -1
  81. package/lib/components/Badge/types.d.ts +1 -1
  82. package/lib/components/Badge/types.d.ts.map +1 -1
  83. package/lib/components/Badge/types.js +7 -3
  84. package/lib/components/Breadcrumbs/types.js +5 -1
  85. package/lib/components/Button/schema.d.ts +6 -1
  86. package/lib/components/Button/schema.d.ts.map +1 -1
  87. package/lib/components/Button/schema.js +9 -4
  88. package/lib/components/Button/types.js +5 -1
  89. package/lib/components/Checkbox/index.d.ts.map +1 -1
  90. package/lib/components/Checkbox/index.js +3 -1
  91. package/lib/components/Checkbox/schema.d.ts.map +1 -1
  92. package/lib/components/Checkbox/schema.js +2 -0
  93. package/lib/components/Combobox/Target.d.ts.map +1 -1
  94. package/lib/components/Combobox/Target.js +45 -14
  95. package/lib/components/Combobox/index.d.ts.map +1 -1
  96. package/lib/components/Combobox/index.js +193 -65
  97. package/lib/components/Combobox/index.test.js +358 -135
  98. package/lib/components/Combobox/schema.d.ts.map +1 -1
  99. package/lib/components/Combobox/schema.js +9 -2
  100. package/lib/components/Combobox/types.d.ts +12 -3
  101. package/lib/components/Combobox/types.d.ts.map +1 -1
  102. package/lib/components/Combobox/types.js +5 -1
  103. package/lib/components/DropdownList/index.d.ts +4 -0
  104. package/lib/components/DropdownList/index.d.ts.map +1 -1
  105. package/lib/components/DropdownList/index.js +76 -11
  106. package/lib/components/DropdownList/propTypes.d.ts +4 -0
  107. package/lib/components/DropdownList/propTypes.d.ts.map +1 -0
  108. package/lib/components/DropdownList/propTypes.js +42 -0
  109. package/lib/components/DropdownList/schema.d.ts.map +1 -1
  110. package/lib/components/DropdownList/schema.js +5 -0
  111. package/lib/components/DropdownList/types.d.ts +4 -1
  112. package/lib/components/DropdownList/types.d.ts.map +1 -1
  113. package/lib/components/Filter/IconWrapper/index.d.ts +197 -0
  114. package/lib/components/Filter/IconWrapper/index.d.ts.map +1 -0
  115. package/lib/components/Filter/IconWrapper/index.js +35 -0
  116. package/lib/components/Filter/SimplePrimary/index.d.ts +31 -0
  117. package/lib/components/Filter/SimplePrimary/index.d.ts.map +1 -0
  118. package/lib/components/Filter/SimplePrimary/index.js +58 -0
  119. package/lib/components/Filter/SimplePrimary/index.test.js +34 -0
  120. package/lib/components/Filter/StyledFilter.d.ts +4 -0
  121. package/lib/components/Filter/StyledFilter.d.ts.map +1 -0
  122. package/lib/components/Filter/StyledFilter.js +39 -0
  123. package/lib/components/Filter/StyledLabel/index.d.ts +8 -0
  124. package/lib/components/Filter/StyledLabel/index.d.ts.map +1 -0
  125. package/lib/components/Filter/StyledLabel/index.js +30 -0
  126. package/lib/components/Filter/index.d.ts +27 -0
  127. package/lib/components/Filter/index.d.ts.map +1 -0
  128. package/lib/components/Filter/index.js +95 -0
  129. package/lib/components/Filter/index.test.js +41 -0
  130. package/lib/components/Filter/kind.d.ts +6 -0
  131. package/lib/components/Filter/kind.d.ts.map +1 -0
  132. package/lib/components/Filter/kind.js +45 -0
  133. package/lib/components/Filter/schema.d.ts +9 -0
  134. package/lib/components/Filter/schema.d.ts.map +1 -0
  135. package/lib/components/Filter/schema.js +32 -0
  136. package/lib/components/Filter/types.d.ts +17 -0
  137. package/lib/components/Filter/types.d.ts.map +1 -0
  138. package/lib/components/Filter/types.js +5 -0
  139. package/lib/components/JumpTo/JumpToMenu.d.ts +2 -2
  140. package/lib/components/JumpTo/JumpToMenu.d.ts.map +1 -1
  141. package/lib/components/JumpTo/JumpToMenu.js +3 -3
  142. package/lib/components/JumpTo/types.js +5 -1
  143. package/lib/components/LeftNav/Item/ClickArea.d.ts.map +1 -1
  144. package/lib/components/LeftNav/Item/ClickArea.js +2 -2
  145. package/lib/components/LeftNav/Item/ItemWrapper.d.ts.map +1 -1
  146. package/lib/components/LeftNav/Item/ItemWrapper.js +3 -3
  147. package/lib/components/LeftNav/Item/MenuItemWrapper.d.ts +7 -0
  148. package/lib/components/LeftNav/Item/MenuItemWrapper.d.ts.map +1 -0
  149. package/lib/components/LeftNav/Item/MenuItemWrapper.js +20 -0
  150. package/lib/components/LeftNav/Item/NavCollapsedXItem/index.d.ts.map +1 -1
  151. package/lib/components/LeftNav/Item/NavCollapsedXItem/index.js +7 -5
  152. package/lib/components/LeftNav/Item/NavExpandedItem/index.d.ts.map +1 -1
  153. package/lib/components/LeftNav/Item/NavExpandedItem/index.js +24 -13
  154. package/lib/components/LeftNav/Item/types.d.ts +1 -1
  155. package/lib/components/LeftNav/Item/types.d.ts.map +1 -1
  156. package/lib/components/LeftNav/Item/types.js +5 -1
  157. package/lib/components/LeftNav/index.test.js +13 -3
  158. package/lib/components/LeftNav/schema.d.ts.map +1 -1
  159. package/lib/components/LeftNav/schema.js +2 -0
  160. package/lib/components/LeftNav/types.d.ts +1 -0
  161. package/lib/components/LeftNav/types.d.ts.map +1 -1
  162. package/lib/components/LeftNav/types.js +5 -1
  163. package/lib/components/Link/index.d.ts +2 -2
  164. package/lib/components/Link/index.d.ts.map +1 -1
  165. package/lib/components/Link/index.js +1 -1
  166. package/lib/components/Link/index.test.js +8 -0
  167. package/lib/components/Link/schema.d.ts.map +1 -1
  168. package/lib/components/Link/schema.js +1 -1
  169. package/lib/components/Menu/index.d.ts.map +1 -1
  170. package/lib/components/Menu/index.js +3 -1
  171. package/lib/components/Menu/types.d.ts +2 -0
  172. package/lib/components/Menu/types.d.ts.map +1 -1
  173. package/lib/components/Menu/types.js +5 -1
  174. package/lib/components/Modal/components.d.ts +2 -2
  175. package/lib/components/Modal/index.d.ts.map +1 -1
  176. package/lib/components/Modal/index.js +5 -5
  177. package/lib/components/Modal/index.test.js +32 -0
  178. package/lib/components/Modal/schema.d.ts.map +1 -1
  179. package/lib/components/Modal/schema.js +2 -2
  180. package/lib/components/Modal/types.d.ts +2 -2
  181. package/lib/components/Modal/types.d.ts.map +1 -1
  182. package/lib/components/Modal/types.js +5 -1
  183. package/lib/components/Notifications/Notification/components.d.ts +3 -3
  184. package/lib/components/Notifications/Notification/components.d.ts.map +1 -1
  185. package/lib/components/Notifications/Notification/components.js +12 -6
  186. package/lib/components/Notifications/Notification/index.d.ts +3 -6
  187. package/lib/components/Notifications/Notification/index.d.ts.map +1 -1
  188. package/lib/components/Notifications/Notification/index.js +19 -12
  189. package/lib/components/Notifications/Notification/index.test.js +38 -19
  190. package/lib/components/Notifications/NotificationsPanel/index.d.ts +2 -1
  191. package/lib/components/Notifications/NotificationsPanel/index.d.ts.map +1 -1
  192. package/lib/components/Notifications/NotificationsPanel/index.js +44 -21
  193. package/lib/components/Notifications/NotificationsPanel/schema.js +1 -1
  194. package/lib/components/Notifications/Notifier.test.js +79 -10
  195. package/lib/components/Notifications/constants.d.ts +2 -0
  196. package/lib/components/Notifications/constants.d.ts.map +1 -0
  197. package/lib/components/Notifications/constants.js +16 -0
  198. package/lib/components/Notifications/schema.d.ts.map +1 -1
  199. package/lib/components/Notifications/schema.js +2 -1
  200. package/lib/components/Notifications/useNotifications.d.ts +1 -0
  201. package/lib/components/Notifications/useNotifications.d.ts.map +1 -1
  202. package/lib/components/Notifications/useNotifications.js +3 -3
  203. package/lib/components/Notifications/useNotifications.test.js +7 -4
  204. package/lib/components/Pagination/Pagination.d.ts +1 -1
  205. package/lib/components/Pagination/Pagination.d.ts.map +1 -1
  206. package/lib/components/Pagination/Pagination.js +1 -0
  207. package/lib/components/Pagination/Pagination.test.js +9 -0
  208. package/lib/components/Pagination/types.js +5 -1
  209. package/lib/components/Select/Target.js +1 -1
  210. package/lib/components/Select/index.d.ts.map +1 -1
  211. package/lib/components/Select/index.js +37 -1
  212. package/lib/components/Select/index.test.js +82 -23
  213. package/lib/components/Select/schema.d.ts.map +1 -1
  214. package/lib/components/Select/schema.js +7 -0
  215. package/lib/components/Select/types.d.ts +4 -1
  216. package/lib/components/Select/types.d.ts.map +1 -1
  217. package/lib/components/Select/types.js +5 -1
  218. package/lib/components/SelectDate/Target.js +1 -1
  219. package/lib/components/SelectDate/index.d.ts.map +1 -1
  220. package/lib/components/SelectDate/index.js +28 -1
  221. package/lib/components/SelectDate/index.test.js +108 -51
  222. package/lib/components/SelectDate/schema.d.ts.map +1 -1
  223. package/lib/components/SelectDate/schema.js +2 -0
  224. package/lib/components/SelectDate/types.d.ts +2 -0
  225. package/lib/components/SelectDate/types.d.ts.map +1 -1
  226. package/lib/components/SelectDate/types.js +5 -1
  227. package/lib/components/SelectDateRange/index.d.ts.map +1 -1
  228. package/lib/components/SelectDateRange/index.js +28 -1
  229. package/lib/components/SelectDateRange/index.test.js +115 -58
  230. package/lib/components/SelectDateRange/schema.d.ts.map +1 -1
  231. package/lib/components/SelectDateRange/schema.js +2 -0
  232. package/lib/components/SelectDateRange/types.js +5 -1
  233. package/lib/components/SelectMenu/index.d.ts +5 -0
  234. package/lib/components/SelectMenu/index.d.ts.map +1 -1
  235. package/lib/components/SelectMenu/index.js +27 -3
  236. package/lib/components/SelectMenu/schema.d.ts.map +1 -1
  237. package/lib/components/SelectMenu/schema.js +4 -0
  238. package/lib/components/Table/Body.d.ts.map +1 -1
  239. package/lib/components/Table/Body.js +182 -38
  240. package/lib/components/Table/Container.d.ts.map +1 -1
  241. package/lib/components/Table/Container.js +3 -3
  242. package/lib/components/Table/DataRow.d.ts.map +1 -1
  243. package/lib/components/Table/DataRow.js +54 -10
  244. package/lib/components/Table/DraggableWrapper.d.ts +5 -0
  245. package/lib/components/Table/DraggableWrapper.d.ts.map +1 -0
  246. package/lib/components/Table/DraggableWrapper.js +38 -0
  247. package/lib/components/Table/Grip.d.ts +4 -0
  248. package/lib/components/Table/Grip.d.ts.map +1 -0
  249. package/lib/components/Table/Grip.js +30 -0
  250. package/lib/components/Table/Head.d.ts +1 -1
  251. package/lib/components/Table/Head.d.ts.map +1 -1
  252. package/lib/components/Table/Head.js +12 -9
  253. package/lib/components/Table/HeaderCell/index.d.ts.map +1 -1
  254. package/lib/components/Table/HeaderCell/index.js +57 -4
  255. package/lib/components/Table/HeaderCell/types.d.ts +6 -0
  256. package/lib/components/Table/HeaderCell/types.d.ts.map +1 -1
  257. package/lib/components/Table/HeaderCell/types.js +5 -1
  258. package/lib/components/Table/Provider.d.ts +18 -3
  259. package/lib/components/Table/Provider.d.ts.map +1 -1
  260. package/lib/components/Table/Provider.js +50 -4
  261. package/lib/components/Table/index.d.ts.map +1 -1
  262. package/lib/components/Table/index.js +167 -21
  263. package/lib/components/Table/index.test.js +335 -64
  264. package/lib/components/Table/schema.columns.d.ts.map +1 -1
  265. package/lib/components/Table/schema.columns.js +7 -4
  266. package/lib/components/Table/schema.d.ts.map +1 -1
  267. package/lib/components/Table/schema.js +8 -6
  268. package/lib/components/Table/types.d.ts +34 -3
  269. package/lib/components/Table/types.d.ts.map +1 -1
  270. package/lib/components/Table/utils.d.ts +4 -1
  271. package/lib/components/Table/utils.d.ts.map +1 -1
  272. package/lib/components/Table/utils.js +30 -1
  273. package/lib/components/Tabs/types.js +5 -1
  274. package/lib/components/Tag/types.d.ts +1 -1
  275. package/lib/components/Tag/types.d.ts.map +1 -1
  276. package/lib/components/Tag/types.js +5 -1
  277. package/lib/components/TextArea/TextArea.d.ts.map +1 -1
  278. package/lib/components/TextArea/TextArea.js +1 -1
  279. package/lib/components/TextArea/index.js +1 -0
  280. package/lib/components/TextArea/index.test.js +5 -0
  281. package/lib/components/TextField/Input.js +1 -1
  282. package/lib/components/TextField/index.test.js +5 -0
  283. package/lib/components/Toggle/index.d.ts.map +1 -1
  284. package/lib/components/Toggle/index.js +4 -0
  285. package/lib/components/Toggle/index.test.js +39 -10
  286. package/lib/components/Toggle/types.js +5 -1
  287. package/lib/components/TopNav/BrandInfo/index.d.ts +2 -1
  288. package/lib/components/TopNav/BrandInfo/index.d.ts.map +1 -1
  289. package/lib/components/TopNav/BrandInfo/index.js +9 -1
  290. package/lib/components/TopNav/BrandInfo/schema.d.ts.map +1 -1
  291. package/lib/components/TopNav/BrandInfo/schema.js +4 -1
  292. package/lib/components/TopNav/index.test.js +28 -0
  293. package/lib/components/Typography/withColors.d.ts +1 -1
  294. package/lib/components/Typography/withColors.js +2 -2
  295. package/lib/components/index.d.ts +2 -0
  296. package/lib/components/index.d.ts.map +1 -1
  297. package/lib/components/index.js +25 -0
  298. package/lib/providers/ConfigProvider/index.d.ts.map +1 -1
  299. package/lib/providers/ConfigProvider/index.js +5 -1
  300. package/lib/providers/ConfigProvider/utils/context.d.ts +1 -1
  301. package/lib/providers/ConfigProvider/utils/context.d.ts.map +1 -1
  302. package/lib/providers/ConfigProvider/utils/normalizer.d.ts.map +1 -1
  303. package/lib/providers/ConfigProvider/utils/normalizer.js +1 -1
  304. package/lib/providers/ConfigProvider/utils/translations.d.ts +5 -1
  305. package/lib/providers/ConfigProvider/utils/translations.d.ts.map +1 -1
  306. package/lib/providers/ConfigProvider/utils/translations.js +5 -1
  307. package/lib/providers/NotificationsProvider/index.d.ts +6 -5
  308. package/lib/providers/NotificationsProvider/index.d.ts.map +1 -1
  309. package/lib/providers/NotificationsProvider/index.js +47 -28
  310. package/lib/providers/NotificationsProvider/types.d.ts +4 -1
  311. package/lib/providers/NotificationsProvider/types.d.ts.map +1 -1
  312. package/lib/utils/joinClassnames.d.ts +3 -0
  313. package/lib/utils/joinClassnames.d.ts.map +1 -0
  314. package/lib/utils/joinClassnames.js +26 -0
  315. package/lib/utils/useFirstMount.d.ts +2 -0
  316. package/lib/utils/useFirstMount.d.ts.map +1 -0
  317. package/lib/utils/useFirstMount.js +19 -0
  318. package/lib/utils/useUpdateEffect.d.ts +4 -0
  319. package/lib/utils/useUpdateEffect.d.ts.map +1 -0
  320. package/lib/utils/useUpdateEffect.js +28 -0
  321. package/package.json +9 -7
  322. package/lib/atoms/InputField/RequiredIcon.d.ts +0 -4
  323. package/lib/atoms/InputField/RequiredIcon.d.ts.map +0 -1
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+
5
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _ = _interopRequireDefault(require("."));
10
+
11
+ var _providers = require("../../providers");
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
16
+
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
18
+
19
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+
21
+ describe('InputField', function () {
22
+ var wrapper = function wrapper(_ref) {
23
+ var children = _ref.children;
24
+ return _react.default.createElement(_providers.ConfigProvider, null, children);
25
+ };
26
+
27
+ var render = function render(ui, options) {
28
+ return (0, _react2.render)(ui, _objectSpread({}, options, {
29
+ wrapper: wrapper
30
+ }));
31
+ };
32
+
33
+ var Dummy = _styledComponents.default.textarea.attrs({
34
+ 'data-testid': 'test-textarea'
35
+ }).withConfig({
36
+ displayName: "indextest__Dummy",
37
+ componentId: "i3buhi-0"
38
+ })([""]);
39
+
40
+ var textFinder = function textFinder(text) {
41
+ return function (content, node) {
42
+ var hasText = function hasText(n) {
43
+ return n.textContent === text;
44
+ };
45
+
46
+ var nodeHasText = hasText(node);
47
+ var childrenDontHaveText = Array.from(node.children).every(function (child) {
48
+ return !hasText(child);
49
+ });
50
+ return nodeHasText && childrenDontHaveText;
51
+ };
52
+ };
53
+
54
+ describe('character counter', function () {
55
+ it('updates as text is entered', function () {
56
+ var label = 'label';
57
+ var initialValue = 'Initial text';
58
+
59
+ var _render = render(_react.default.createElement(_.default, {
60
+ label: label,
61
+ value: initialValue,
62
+ showCharacterCount: true,
63
+ maxLength: 100
64
+ }, function (p) {
65
+ return _react.default.createElement(Dummy, p);
66
+ })),
67
+ getByText = _render.getByText,
68
+ getByTestId = _render.getByTestId;
69
+
70
+ expect(getByText(textFinder("You have ".concat(100 - initialValue.length, " characters left (100 max).")))).toBeTruthy();
71
+ var textarea = getByTestId('test-textarea');
72
+ var newValue = "".concat(initialValue, " with some additional text");
73
+
74
+ _react2.fireEvent.change(textarea, {
75
+ target: {
76
+ value: newValue
77
+ }
78
+ });
79
+
80
+ expect(getByText(textFinder("You have ".concat(100 - newValue.length, " characters left (100 max).")))).toBeTruthy();
81
+
82
+ _react2.fireEvent.change(textarea, {
83
+ target: {
84
+ value: ''
85
+ }
86
+ });
87
+
88
+ expect(getByText(textFinder("You have 100 characters left (100 max)."))).toBeTruthy();
89
+ });
90
+ });
91
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/atoms/InputField/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAAqC,CAAC;AAiElD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/atoms/InputField/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAAqC,CAAC;AAsElD,eAAe,MAAM,CAAC"}
@@ -16,6 +16,7 @@ schema.makePropTypes = function () {
16
16
  return {
17
17
  disabled: _reactDesc.PropTypes.bool.description('Sets the input state to disabled if true.'),
18
18
  helpMessage: _reactDesc.PropTypes.string.description("A short message to help clarify the input's purpose to the user."),
19
+ hideLabel: _reactDesc.PropTypes.bool.description("Visually hides the label, but leaves it available for screen readers. Use this only if you are sure the input doesn't need a visual label").defaultValue('false'),
19
20
  icon: _reactDesc.PropTypes.element.description('An icon to be rendered on the left side of the input.'),
20
21
  id: _reactDesc.PropTypes.string.description('A unique ID for the input.'),
21
22
  inputContainerRef: _reactDesc.PropTypes.oneOfType([// Either a function
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
- declare const Category: ({ borderRadius, label, items, }: import("./types").Category) => JSX.Element;
2
+ declare const Category: ({ borderRadius, label, items, showCheckbox, }: import("./types").Category) => JSX.Element;
3
3
  export default Category;
4
4
  //# sourceMappingURL=Category.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Category.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Category.tsx"],"names":[],"mappings":";AAuBA,QAAA,MAAM,QAAQ,8EAkBb,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Category.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Category.tsx"],"names":[],"mappings":";AAuBA,QAAA,MAAM,QAAQ,4FAyBb,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -36,13 +36,15 @@ var StyledCategory = _styledComponents.default.li.attrs({
36
36
  var Category = function Category(_ref) {
37
37
  var borderRadius = _ref.borderRadius,
38
38
  label = _ref.label,
39
- items = _ref.items;
39
+ items = _ref.items,
40
+ showCheckbox = _ref.showCheckbox;
40
41
  return _react.default.createElement(_react.Fragment, null, _react.default.createElement(StyledCategory, null, label), items.map(function (subItem) {
41
42
  var id = (0, _utils.getId)(subItem);
42
43
  return _react.default.createElement(_Option.default, _extends({}, subItem, {
43
44
  key: id,
44
45
  id: id,
45
- borderRadius: borderRadius
46
+ borderRadius: borderRadius,
47
+ showCheckbox: showCheckbox
46
48
  }));
47
49
  }));
48
50
  };
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { FooterActions } from './types';
3
+ interface Props {
4
+ actions: FooterActions;
5
+ }
6
+ declare function DropdownFooter(props: Props): JSX.Element;
7
+ export default DropdownFooter;
8
+ //# sourceMappingURL=Footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Footer.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,aAAa,EAAe,MAAM,SAAS,CAAC;AAErD,UAAU,KAAK;IACb,OAAO,EAAE,aAAa,CAAC;CACxB;AAOD,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA6BjD;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _designTokens = require("@decisiv/design-tokens");
13
+
14
+ var _toColorString = _interopRequireDefault(require("polished/lib/color/toColorString"));
15
+
16
+ var _Button = _interopRequireDefault(require("../../components/Button"));
17
+
18
+ var _Flex = _interopRequireDefault(require("../../components/Flex"));
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
+
24
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
25
+
26
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
27
+
28
+ var ButtonsRow = (0, _styledComponents.default)(_Flex.default).withConfig({
29
+ displayName: "Footer__ButtonsRow",
30
+ componentId: "sc-1nxwudp-0"
31
+ })(["border-top:1px solid ", ";background-color:", ";"], (0, _toColorString.default)(_designTokens.color.opacity.charcoal15), (0, _toColorString.default)(_designTokens.color.opacity.fullMoon50));
32
+
33
+ function DropdownFooter(props) {
34
+ var actions = props.actions;
35
+
36
+ var buttonRender = function buttonRender(_ref) {
37
+ var id = _ref.id,
38
+ rest = _objectWithoutProperties(_ref, ["id"]);
39
+
40
+ return _react.default.createElement(_Flex.default, {
41
+ key: id,
42
+ paddingLeft: 0.25,
43
+ paddingRight: 0.25
44
+ }, _react.default.createElement(_Button.default, _extends({
45
+ size: "small"
46
+ }, rest)));
47
+ };
48
+
49
+ return Array.isArray(actions) ? _react.default.createElement(ButtonsRow, {
50
+ flex: 1,
51
+ padding: 1
52
+ }, _react.default.createElement(_Flex.default, {
53
+ flex: 1,
54
+ justifyContent: "flex-start"
55
+ }, actions.map(buttonRender))) : _react.default.createElement(ButtonsRow, {
56
+ flex: 1,
57
+ padding: 1
58
+ }, _react.default.createElement(_Flex.default, {
59
+ flex: 1,
60
+ justifyContent: "space-between"
61
+ }, _react.default.createElement(_Flex.default, {
62
+ flex: 1,
63
+ justifyContent: "flex-start"
64
+ }, actions.left && actions.left.map(buttonRender)), _react.default.createElement(_Flex.default, {
65
+ flex: 1,
66
+ justifyContent: "flex-end",
67
+ paddingLeft: 2
68
+ }, actions.right && actions.right.map(buttonRender))));
69
+ }
70
+
71
+ var _default = DropdownFooter;
72
+ exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Option.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,EACL,WAAW,EAMZ,MAAM,SAAS,CAAC;AA+MjB,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CA+F/C;;AAED,wBAAkC"}
1
+ {"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Option.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,EACL,WAAW,EAMZ,MAAM,SAAS,CAAC;AA+MjB,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CA4G/C;;AAED,wBAAkC"}
@@ -108,7 +108,9 @@ function Option(props) {
108
108
  label = props.label,
109
109
  decoration = props.decoration,
110
110
  disabled = props.disabled,
111
- borderRadius = props.borderRadius;
111
+ borderRadius = props.borderRadius,
112
+ _props$showCheckbox = props.showCheckbox,
113
+ showCheckbox = _props$showCheckbox === void 0 ? true : _props$showCheckbox;
112
114
  var decorationType = (0, _get.default)(decoration, 'type');
113
115
 
114
116
  var _useOptionsList = (0, _context.useOptionsList)(),
@@ -136,8 +138,8 @@ function Option(props) {
136
138
  updateActiveId(disabled ? '' : id);
137
139
  }, [setInputMethod, updateActiveId, disabled, id]);
138
140
  var handleClick = (0, _react.useCallback)(function () {
139
- toggleItemSelection(id);
140
- }, [toggleItemSelection, id]);
141
+ if (!disabled) toggleItemSelection(id);
142
+ }, [toggleItemSelection, id, disabled]);
141
143
  var LabelWrapper = (0, _react.useMemo)(function () {
142
144
  return function (_ref2) {
143
145
  var children = _ref2.children;
@@ -168,7 +170,7 @@ function Option(props) {
168
170
  text: label,
169
171
  icon: isDecoration(decoration) && decoration.type === 'Icon' ? decoration.icon : undefined,
170
172
  disabled: !!disabled
171
- }) : _react.default.createElement(LabelWrapper, null, selectable && (multiple ? _react.default.createElement(_Checkbox.default, _extends({}, commonProps, {
173
+ }) : _react.default.createElement(LabelWrapper, null, selectable && (multiple && !!showCheckbox ? _react.default.createElement(_Checkbox.default, _extends({}, commonProps, {
172
174
  disabled: !!disabled,
173
175
  size: "small",
174
176
  value: props.value
@@ -182,7 +184,8 @@ function Option(props) {
182
184
  id: id,
183
185
  label: label,
184
186
  value: props.value,
185
- disabled: disabled
187
+ disabled: disabled,
188
+ meta: props.meta
186
189
  }) : _react.default.createElement(_Typography.P, {
187
190
  as: "span",
188
191
  color: "inherit"
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAIf,OAAO,EAGL,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAyBjB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAmCrB,CAAC;AAoRF,QAAA,MAAM,2BAA2B,2FAA0B,CAAC;AAa5D,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAcf,OAAO,EAGL,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAwBjB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAmCrB,CAAC;AA4SF,QAAA,MAAM,2BAA2B,2FAA0B,CAAC;AAkC5D,eAAe,2BAA2B,CAAC"}
@@ -7,21 +7,17 @@ exports.default = exports.Container = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
10
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
11
13
 
12
14
  var _rem = _interopRequireDefault(require("polished/lib/helpers/rem"));
13
15
 
14
16
  var _isArray = _interopRequireDefault(require("lodash/isArray"));
15
17
 
16
- var _context = require("./context");
17
-
18
- var _Option = _interopRequireDefault(require("./Option"));
18
+ var _Button = require("../../components/Button");
19
19
 
20
- var _Category = _interopRequireDefault(require("./Category"));
21
-
22
- var _utils = require("./utils");
23
-
24
- var _schema = _interopRequireDefault(require("./schema"));
20
+ var _Grid = _interopRequireDefault(require("../../components/Grid"));
25
21
 
26
22
  var _canUseDOM = _interopRequireDefault(require("../../utils/canUseDOM"));
27
23
 
@@ -31,8 +27,20 @@ var _assignRef = _interopRequireDefault(require("../../utils/assignRef"));
31
27
 
32
28
  var _isCtrlCmd = _interopRequireDefault(require("../../utils/isCtrlCmd"));
33
29
 
30
+ var _Option = _interopRequireDefault(require("./Option"));
31
+
32
+ var _Category = _interopRequireDefault(require("./Category"));
33
+
34
+ var _Footer = _interopRequireDefault(require("./Footer"));
35
+
36
+ var _context = require("./context");
37
+
38
+ var _utils = require("./utils");
39
+
34
40
  var _useListSelectionKeyboardActions = _interopRequireDefault(require("./useListSelectionKeyboardActions"));
35
41
 
42
+ var _schema = _interopRequireDefault(require("./schema"));
43
+
36
44
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
45
 
38
46
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
@@ -61,6 +69,7 @@ function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d =
61
69
 
62
70
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
63
71
 
72
+ var Row = _Grid.default.Row;
64
73
  var isUsingKeyboard = false;
65
74
 
66
75
  if (_canUseDOM.default) {
@@ -75,7 +84,7 @@ if (_canUseDOM.default) {
75
84
  var Container = _styledComponents.default.ul.withConfig({
76
85
  displayName: "OptionsList__Container",
77
86
  componentId: "sc-107p8d5-0"
78
- })(["list-style:none;margin:0;width:auto;height:auto;max-height:", ";max-width:", ";padding:0;overflow:auto;position:relative;", " ", " ", " &:focus{outline:none;}"], (0, _rem.default)(310), (0, _rem.default)(340), function (_ref) {
87
+ })(["list-style:none;margin:0;width:100%;height:auto;max-height:", ";max-width:", ";padding:0;overflow:auto;position:relative;", " ", " ", " &:focus{outline:none;}"], (0, _rem.default)(310), (0, _rem.default)(340), function (_ref) {
79
88
  var minWidth = _ref.minWidth;
80
89
  return minWidth ? "\n min-width: ".concat(minWidth, ";\n ") : '';
81
90
  }, function (_ref2) {
@@ -89,7 +98,8 @@ var Container = _styledComponents.default.ul.withConfig({
89
98
  exports.Container = Container;
90
99
 
91
100
  function OptionsList(props, forwardedRef) {
92
- var items = props.items,
101
+ var actions = props.actions,
102
+ items = props.items,
93
103
  multiple = props.multiple,
94
104
  onChange = props.onChange,
95
105
  name = props.name,
@@ -100,6 +110,7 @@ function OptionsList(props, forwardedRef) {
100
110
  activeIdProp = props.activeId,
101
111
  onChangeActiveItem = props.onChangeActiveItem,
102
112
  onKeyDownProp = props.onKeyDown,
113
+ showCheckbox = props.showCheckbox,
103
114
  tabIndex = props.tabIndex,
104
115
  selectable = props.selectable,
105
116
  defaultSelected = props.defaultSelected,
@@ -266,7 +277,7 @@ function OptionsList(props, forwardedRef) {
266
277
  selectable: !!selectable,
267
278
  itemRole: itemRole
268
279
  }
269
- }, _react.default.createElement(Container, {
280
+ }, _react.default.createElement(_Grid.default.Container, null, _react.default.createElement(Row, null, _react.default.createElement(Container, {
270
281
  "aria-activedescendant": activeId,
271
282
  "aria-multiselectable": !!multiple,
272
283
  ref: setContainerRefFunc,
@@ -287,25 +298,41 @@ function OptionsList(props, forwardedRef) {
287
298
  if ((0, _utils.isCategory)(item)) {
288
299
  return _react.default.createElement(_Category.default, _extends({}, item, {
289
300
  key: id,
290
- borderRadius: borderRadius
301
+ borderRadius: borderRadius,
302
+ showCheckbox: showCheckbox
291
303
  }));
292
304
  }
293
305
 
294
306
  return _react.default.createElement(_Option.default, _extends({}, item, {
295
307
  key: id,
296
- borderRadius: borderRadius
308
+ borderRadius: borderRadius,
309
+ showCheckbox: showCheckbox
297
310
  }));
298
- })));
311
+ }))), actions && _react.default.createElement(Row, null, _react.default.createElement(_Footer.default, {
312
+ actions: actions
313
+ }))));
299
314
  }
300
315
 
301
316
  var OptionsListWithContainerRef = (0, _react.forwardRef)(OptionsList); // @ts-ignore
302
317
 
303
- OptionsListWithContainerRef.propTypes = _objectSpread({}, _schema.default.propTypes);
318
+ OptionsListWithContainerRef.propTypes = _objectSpread({}, _schema.default.propTypes, {
319
+ actions: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.shape((0, _Button.makeButtonSchemaPropTypes)({
320
+ id: _propTypes.default.string.isRequired
321
+ }))), _propTypes.default.shape({
322
+ left: _propTypes.default.arrayOf(_propTypes.default.shape((0, _Button.makeButtonSchemaPropTypes)({
323
+ id: _propTypes.default.string.isRequired
324
+ }))),
325
+ right: _propTypes.default.arrayOf(_propTypes.default.shape((0, _Button.makeButtonSchemaPropTypes)({
326
+ id: _propTypes.default.string.isRequired
327
+ })))
328
+ })])
329
+ });
304
330
  OptionsListWithContainerRef.defaultProps = {
305
331
  role: 'listbox',
306
332
  itemRole: 'option',
307
333
  tabIndex: 0,
308
- selectable: true
334
+ selectable: true,
335
+ showCheckbox: true
309
336
  };
310
337
  var _default = OptionsListWithContainerRef;
311
338
  exports.default = _default;
@@ -41,6 +41,8 @@ var item0Id = '0';
41
41
  var item0Label = 'Option 0';
42
42
  var item2Id = '2';
43
43
  var item2Label = 'Option 2';
44
+ var disabledItemLabel = 'Option 4';
45
+ var disabledItemId = '4';
44
46
  var items = [{
45
47
  id: item0Id,
46
48
  label: item0Label,
@@ -75,8 +77,8 @@ var items = [{
75
77
  }, {
76
78
  label: 'Category 2',
77
79
  items: [{
78
- id: '4',
79
- label: 'Option 4',
80
+ id: disabledItemId,
81
+ label: disabledItemLabel,
80
82
  value: '4',
81
83
  disabled: true
82
84
  }, {
@@ -189,15 +191,58 @@ describe('OptionsList', function () {
189
191
  expect(onChange).toHaveBeenCalledWith(selectedItem.id);
190
192
  expect(getByLabelText(selectedItem.label)).toBeChecked();
191
193
  });
194
+ describe('selecting disabled element with keyboard', function () {
195
+ it('selects an item with Enter or Space key', function () {
196
+ var onChange = jest.fn();
197
+ var onlyDisabledItems = [{
198
+ id: '2',
199
+ label: 'Option 2',
200
+ value: '2',
201
+ disabled: true
202
+ }, {
203
+ id: disabledItemId,
204
+ label: disabledItemLabel,
205
+ value: '4',
206
+ disabled: true
207
+ }];
208
+
209
+ var _render5 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
210
+ items: onlyDisabledItems,
211
+ onChange: onChange
212
+ }))),
213
+ getByLabelText = _render5.getByLabelText,
214
+ container = _render5.container;
215
+
216
+ var optionsList = container.querySelector('ul'); // simulate it is focused while tabbing
217
+
218
+ _react2.fireEvent.keyDown(container, {
219
+ key: 'Tab'
220
+ });
221
+
222
+ _react2.fireEvent.focus(optionsList);
223
+
224
+ _react2.fireEvent.keyDown(optionsList, {
225
+ key: 'ArrowDown'
226
+ });
227
+
228
+ _react2.fireEvent.keyDown(optionsList, {
229
+ key: 'Enter'
230
+ });
231
+
232
+ expect(onChange).not.toHaveBeenCalledWith(disabledItemId);
233
+ expect(onChange).not.toHaveBeenCalled();
234
+ expect(getByLabelText(disabledItemLabel)).not.toBeChecked();
235
+ });
236
+ });
192
237
  describe('single selection', function () {
193
238
  it('calls onChange with id when item is clicked', function () {
194
239
  var onChange = jest.fn();
195
240
 
196
- var _render5 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
241
+ var _render6 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
197
242
  onChange: onChange
198
243
  }))),
199
- getByText = _render5.getByText,
200
- getByLabelText = _render5.getByLabelText;
244
+ getByText = _render6.getByText,
245
+ getByLabelText = _render6.getByLabelText;
201
246
 
202
247
  var item = items[0];
203
248
 
@@ -212,15 +257,33 @@ describe('OptionsList', function () {
212
257
 
213
258
  expect(getByLabelText(subItem.label)).toBeChecked();
214
259
  });
260
+ describe('disabled element', function () {
261
+ it('does not calls onChange when item is clicked', function () {
262
+ var onChange = jest.fn();
263
+
264
+ var _render7 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
265
+ onChange: onChange
266
+ }))),
267
+ getByText = _render7.getByText,
268
+ getByLabelText = _render7.getByLabelText;
269
+
270
+ _react2.fireEvent.click(getByText(disabledItemLabel));
271
+
272
+ expect(onChange).not.toHaveBeenLastCalledWith(disabledItemId);
273
+ expect(onChange).not.toHaveBeenCalled(); // the item shouldn't be marked as selected
274
+
275
+ expect(getByLabelText(disabledItemLabel)).not.toBeChecked();
276
+ });
277
+ });
215
278
  describe('controlled', function () {
216
279
  it('prefers value over internal', function () {
217
280
  var selected = items[1];
218
281
 
219
- var _render6 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
282
+ var _render8 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
220
283
  selected: selected.id
221
284
  }))),
222
- getByText = _render6.getByText,
223
- getByLabelText = _render6.getByLabelText;
285
+ getByText = _render8.getByText,
286
+ getByLabelText = _render8.getByLabelText;
224
287
 
225
288
  var item = items[0];
226
289
 
@@ -235,12 +298,12 @@ describe('OptionsList', function () {
235
298
  it('calls onChange with array of selected ids when item is clicked', function () {
236
299
  var onChange = jest.fn();
237
300
 
238
- var _render7 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
301
+ var _render9 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
239
302
  onChange: onChange,
240
303
  multiple: true
241
304
  }))),
242
- getByText = _render7.getByText,
243
- getByLabelText = _render7.getByLabelText;
305
+ getByText = _render9.getByText,
306
+ getByLabelText = _render9.getByLabelText;
244
307
 
245
308
  var item = items[0];
246
309
 
@@ -259,5 +322,38 @@ describe('OptionsList', function () {
259
322
 
260
323
  expect(onChange).toHaveBeenLastCalledWith([subItem.id]);
261
324
  });
325
+ it('adds a footer with buttons when actions are provided', function () {
326
+ var onClick = jest.fn();
327
+ var actions = [{
328
+ id: '1',
329
+ text: 'apply',
330
+ onClick: onClick
331
+ }, {
332
+ id: '2',
333
+ text: 'cancel',
334
+ kind: 'secondary',
335
+ onClick: onClick
336
+ }, {
337
+ id: '3',
338
+ text: 'clear',
339
+ kind: 'secondary',
340
+ variant: 'ghost',
341
+ paddingLeft: 4,
342
+ onClick: onClick
343
+ }];
344
+
345
+ var _render10 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
346
+ actions: actions,
347
+ multiple: true
348
+ }))),
349
+ baseElement = _render10.baseElement,
350
+ getByText = _render10.getByText;
351
+
352
+ actions.forEach(function (_ref5) {
353
+ var label = _ref5.text;
354
+ return expect(getByText(label)).toBeTruthy();
355
+ });
356
+ expect(baseElement).toMatchSnapshot();
357
+ });
262
358
  });
263
359
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAA2C,CAAC;AA2DxD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAA2C,CAAC;AAoExD,eAAe,MAAM,CAAC"}
@@ -15,6 +15,10 @@ var schema = (0, _reactDesc.describe)({
15
15
  schema.makePropTypes = function () {
16
16
  return {
17
17
  defaultSelected: _reactDesc.PropTypes.oneOfType([_reactDesc.PropTypes.string, _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.string)]).description('These IDs will appear as selected the first time the user opens the dropdown.'),
18
+ actions: _reactDesc.PropTypes.oneOfType([_reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.object), _reactDesc.PropTypes.shape({
19
+ left: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.object),
20
+ right: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.object)
21
+ })]).description('A collection of objects, each containing a subset of props valid for a Button component. Check the notes below.'),
18
22
  items: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.shape({
19
23
  decoration: _reactDesc.PropTypes.shape({
20
24
  type: _reactDesc.PropTypes.oneOf(['Avatar', 'Badge', 'Icon'])
@@ -4,6 +4,7 @@ import { IconProps } from '@decisiv/iconix';
4
4
  import { AvatarProps } from '../../components/Avatar';
5
5
  import { BadgeProps } from '../../components/Badge';
6
6
  import { DimensionsProps } from '../../modifiers/dimensions';
7
+ import { ButtonProps } from '../../components/Button';
7
8
  export declare type OptionAvatarProps = Omit<AvatarProps, 'ref' | 'size'>;
8
9
  export declare type OptionBadgeProps = Omit<BadgeProps, 'size' | 'variant'>;
9
10
  export declare type InputMethod = 'mouse' | 'keyboard' | undefined;
@@ -22,12 +23,21 @@ interface IconDecoration {
22
23
  icon: IconComponent;
23
24
  disabled?: boolean;
24
25
  }
26
+ export interface ActionProps extends ButtonProps {
27
+ id: string;
28
+ }
29
+ interface SideActionProps {
30
+ left?: ActionProps[];
31
+ right?: ActionProps[];
32
+ }
33
+ export declare type FooterActions = SideActionProps | ActionProps[];
25
34
  export declare type Decoration = AvatarDecoration | BadgeDecoration | IconDecoration;
26
35
  export interface Category {
27
36
  borderRadius?: BorderRadiusProperty<string>;
28
37
  id?: string;
29
38
  items: Option[];
30
39
  label: string;
40
+ showCheckbox?: boolean;
31
41
  }
32
42
  export declare type CategoryProps = Category;
33
43
  export declare type IconComponent = (props: IconProps) => JSX.Element;
@@ -37,6 +47,8 @@ interface BaseOption {
37
47
  disabled?: boolean;
38
48
  id: string;
39
49
  label: string;
50
+ showCheckbox?: boolean;
51
+ meta?: object;
40
52
  }
41
53
  export interface ItemOption extends BaseOption {
42
54
  value?: string;
@@ -49,6 +61,7 @@ export declare type OptionProps = Option;
49
61
  export declare type Item = Category | Option;
50
62
  export interface OptionsListProps extends OptionsListDimensions {
51
63
  items: Item[];
64
+ actions?: FooterActions;
52
65
  name?: string;
53
66
  multiple?: boolean;
54
67
  onChange: (ids: Selection) => void;
@@ -59,6 +72,7 @@ export interface OptionsListProps extends OptionsListDimensions {
59
72
  defaultActiveId?: string;
60
73
  onChangeActiveItem?: (activeId: string) => void;
61
74
  onKeyDown?: (event: KeyboardEvent) => void;
75
+ showCheckbox?: boolean;
62
76
  tabIndex?: number;
63
77
  selectable?: boolean;
64
78
  defaultSelected?: Selection;