@simplybusiness/mobius 4.3.0 → 4.3.1

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 (451) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/components/Accordion/Accordion.d.ts +34 -0
  3. package/dist/cjs/components/Accordion/Accordion.stories.d.ts +10 -0
  4. package/dist/cjs/components/Accordion/Accordion.stories.js +62 -0
  5. package/dist/cjs/components/Accordion/Accordion.stories.js.map +1 -0
  6. package/dist/cjs/components/Accordion/Accordion.test.d.ts +1 -0
  7. package/dist/cjs/components/Accordion/Accordion.test.js +191 -0
  8. package/dist/cjs/components/Accordion/Accordion.test.js.map +1 -0
  9. package/dist/cjs/components/Accordion/index.d.ts +1 -0
  10. package/dist/cjs/components/Alert/Alert.d.ts +16 -0
  11. package/dist/cjs/components/Alert/Alert.stories.d.ts +7 -0
  12. package/dist/cjs/components/Alert/Alert.stories.js +37 -0
  13. package/dist/cjs/components/Alert/Alert.stories.js.map +1 -0
  14. package/dist/cjs/components/Alert/Alert.test.d.ts +1 -0
  15. package/dist/cjs/components/Alert/Alert.test.js +50 -0
  16. package/dist/cjs/components/Alert/Alert.test.js.map +1 -0
  17. package/dist/cjs/components/Alert/index.d.ts +1 -0
  18. package/dist/cjs/components/Box/Box.d.ts +15 -0
  19. package/dist/cjs/components/Box/Box.stories.d.ts +7 -0
  20. package/dist/cjs/components/Box/Box.stories.js +24 -0
  21. package/dist/cjs/components/Box/Box.stories.js.map +1 -0
  22. package/dist/cjs/components/Box/Box.test.d.ts +1 -0
  23. package/dist/cjs/components/Box/Box.test.js +33 -0
  24. package/dist/cjs/components/Box/Box.test.js.map +1 -0
  25. package/dist/cjs/components/Box/index.d.ts +1 -0
  26. package/dist/cjs/components/Breadcrumbs/BreadcrumbItem.d.ts +15 -0
  27. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.d.ts +12 -0
  28. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.stories.d.ts +7 -0
  29. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.stories.js +19 -0
  30. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.stories.js.map +1 -0
  31. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.test.d.ts +1 -0
  32. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.test.js +36 -0
  33. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.test.js.map +1 -0
  34. package/dist/cjs/components/Breadcrumbs/index.d.ts +2 -0
  35. package/dist/cjs/components/Button/Button.d.ts +31 -0
  36. package/dist/cjs/components/Button/Button.stories.d.ts +19 -0
  37. package/dist/cjs/components/Button/Button.stories.js +224 -0
  38. package/dist/cjs/components/Button/Button.stories.js.map +1 -0
  39. package/dist/cjs/components/Button/Button.test.d.ts +1 -0
  40. package/dist/cjs/components/Button/Button.test.js +87 -0
  41. package/dist/cjs/components/Button/Button.test.js.map +1 -0
  42. package/dist/cjs/components/Button/Loading.d.ts +2 -0
  43. package/dist/cjs/components/Button/index.d.ts +1 -0
  44. package/dist/cjs/components/Checkbox/Checkbox.d.ts +3 -0
  45. package/dist/cjs/components/Checkbox/Checkbox.stories.d.ts +10 -0
  46. package/dist/cjs/components/Checkbox/Checkbox.stories.js +83 -0
  47. package/dist/cjs/components/Checkbox/Checkbox.stories.js.map +1 -0
  48. package/dist/cjs/components/Checkbox/Checkbox.test.d.ts +1 -0
  49. package/dist/cjs/components/Checkbox/Checkbox.test.js +174 -0
  50. package/dist/cjs/components/Checkbox/Checkbox.test.js.map +1 -0
  51. package/dist/cjs/components/Checkbox/CheckboxGroup.d.ts +3 -0
  52. package/dist/cjs/components/Checkbox/CheckboxGroup.stories.d.ts +9 -0
  53. package/dist/cjs/components/Checkbox/CheckboxGroup.stories.js +67 -0
  54. package/dist/cjs/components/Checkbox/CheckboxGroup.stories.js.map +1 -0
  55. package/dist/cjs/components/Checkbox/CheckboxGroup.test.d.ts +1 -0
  56. package/dist/cjs/components/Checkbox/CheckboxGroup.test.js +242 -0
  57. package/dist/cjs/components/Checkbox/CheckboxGroup.test.js.map +1 -0
  58. package/dist/cjs/components/Checkbox/index.d.ts +3 -0
  59. package/dist/cjs/components/Checkbox/types.d.ts +56 -0
  60. package/dist/cjs/components/Container/Container.d.ts +15 -0
  61. package/dist/cjs/components/Container/Container.stories.d.ts +6 -0
  62. package/dist/cjs/components/Container/Container.stories.js +14 -0
  63. package/dist/cjs/components/Container/Container.stories.js.map +1 -0
  64. package/dist/cjs/components/Container/Container.test.d.ts +1 -0
  65. package/dist/cjs/components/Container/Container.test.js +39 -0
  66. package/dist/cjs/components/Container/Container.test.js.map +1 -0
  67. package/dist/cjs/components/Container/index.d.ts +1 -0
  68. package/dist/cjs/components/Divider/Divider.d.ts +11 -0
  69. package/dist/cjs/components/Divider/Divider.stories.d.ts +6 -0
  70. package/dist/cjs/components/Divider/Divider.stories.js +18 -0
  71. package/dist/cjs/components/Divider/Divider.stories.js.map +1 -0
  72. package/dist/cjs/components/Divider/Divider.test.d.ts +1 -0
  73. package/dist/cjs/components/Divider/Divider.test.js +31 -0
  74. package/dist/cjs/components/Divider/Divider.test.js.map +1 -0
  75. package/dist/cjs/components/Divider/index.d.ts +1 -0
  76. package/dist/cjs/components/Drawer/Content.d.ts +11 -0
  77. package/dist/cjs/components/Drawer/Drawer.d.ts +22 -0
  78. package/dist/cjs/components/Drawer/Drawer.js +29 -19
  79. package/dist/cjs/components/Drawer/Drawer.js.map +1 -1
  80. package/dist/cjs/components/Drawer/Drawer.stories.d.ts +8 -0
  81. package/dist/cjs/components/Drawer/Drawer.stories.js +54 -0
  82. package/dist/cjs/components/Drawer/Drawer.stories.js.map +1 -0
  83. package/dist/cjs/components/Drawer/Drawer.test.d.ts +1 -0
  84. package/dist/cjs/components/Drawer/Drawer.test.js +123 -0
  85. package/dist/cjs/components/Drawer/Drawer.test.js.map +1 -0
  86. package/dist/cjs/components/Drawer/DrawerContext.js +17 -0
  87. package/dist/cjs/components/Drawer/DrawerContext.js.map +1 -0
  88. package/dist/cjs/components/Drawer/Header.d.ts +11 -0
  89. package/dist/cjs/components/Drawer/index.d.ts +12 -0
  90. package/dist/cjs/components/Drawer/useDrawer.js +21 -0
  91. package/dist/cjs/components/Drawer/useDrawer.js.map +1 -0
  92. package/dist/cjs/components/DropdownMenu/DropdownMenu.d.ts +15 -0
  93. package/dist/cjs/components/DropdownMenu/DropdownMenu.stories.d.ts +7 -0
  94. package/dist/cjs/components/DropdownMenu/DropdownMenu.stories.js +66 -0
  95. package/dist/cjs/components/DropdownMenu/DropdownMenu.stories.js.map +1 -0
  96. package/dist/cjs/components/DropdownMenu/DropdownMenu.test.d.ts +1 -0
  97. package/dist/cjs/components/DropdownMenu/DropdownMenu.test.js +97 -0
  98. package/dist/cjs/components/DropdownMenu/DropdownMenu.test.js.map +1 -0
  99. package/dist/cjs/components/DropdownMenu/Item.d.ts +15 -0
  100. package/dist/cjs/components/DropdownMenu/index.d.ts +10 -0
  101. package/dist/cjs/components/ErrorMessage/ErrorMessage.d.ts +9 -0
  102. package/dist/cjs/components/ErrorMessage/ErrorMessage.stories.d.ts +7 -0
  103. package/dist/cjs/components/ErrorMessage/ErrorMessage.stories.js +23 -0
  104. package/dist/cjs/components/ErrorMessage/ErrorMessage.stories.js.map +1 -0
  105. package/dist/cjs/components/ErrorMessage/ErrorMessage.test.d.ts +1 -0
  106. package/dist/cjs/components/ErrorMessage/ErrorMessage.test.js +32 -0
  107. package/dist/cjs/components/ErrorMessage/ErrorMessage.test.js.map +1 -0
  108. package/dist/cjs/components/ErrorMessage/index.d.ts +1 -0
  109. package/dist/cjs/components/Fieldset/Fieldset.d.ts +17 -0
  110. package/dist/cjs/components/Fieldset/Fieldset.stories.d.ts +7 -0
  111. package/dist/cjs/components/Fieldset/Fieldset.stories.js +29 -0
  112. package/dist/cjs/components/Fieldset/Fieldset.stories.js.map +1 -0
  113. package/dist/cjs/components/Fieldset/Fieldset.test.d.ts +1 -0
  114. package/dist/cjs/components/Fieldset/Fieldset.test.js +12 -0
  115. package/dist/cjs/components/Fieldset/Fieldset.test.js.map +1 -0
  116. package/dist/cjs/components/Fieldset/index.d.ts +1 -0
  117. package/dist/cjs/components/Flex/Flex.d.ts +4 -0
  118. package/dist/cjs/components/Flex/Flex.stories.d.ts +7 -0
  119. package/dist/cjs/components/Flex/Flex.stories.js +147 -0
  120. package/dist/cjs/components/Flex/Flex.stories.js.map +1 -0
  121. package/dist/cjs/components/Flex/Flex.test.d.ts +1 -0
  122. package/dist/cjs/components/Flex/Flex.test.js +33 -0
  123. package/dist/cjs/components/Flex/Flex.test.js.map +1 -0
  124. package/dist/cjs/components/Flex/index.d.ts +2 -0
  125. package/dist/cjs/components/Flex/propUtils.d.ts +8 -0
  126. package/dist/cjs/components/Flex/propUtils.test.d.ts +1 -0
  127. package/dist/cjs/components/Flex/propUtils.test.js +99 -0
  128. package/dist/cjs/components/Flex/propUtils.test.js.map +1 -0
  129. package/dist/cjs/components/Flex/types.d.ts +33 -0
  130. package/dist/cjs/components/Grid/Grid.d.ts +28 -0
  131. package/dist/cjs/components/Grid/Grid.stories.d.ts +11 -0
  132. package/dist/cjs/components/Grid/Grid.stories.js +218 -0
  133. package/dist/cjs/components/Grid/Grid.stories.js.map +1 -0
  134. package/dist/cjs/components/Grid/Grid.test.d.ts +1 -0
  135. package/dist/cjs/components/Grid/Grid.test.js +97 -0
  136. package/dist/cjs/components/Grid/Grid.test.js.map +1 -0
  137. package/dist/cjs/components/Grid/Item.d.ts +30 -0
  138. package/dist/cjs/components/Grid/index.d.ts +9 -0
  139. package/dist/cjs/components/Icon/Icon.d.ts +2 -0
  140. package/dist/cjs/components/Icon/Icon.stories.d.ts +7 -0
  141. package/dist/cjs/components/Icon/Icon.stories.js +35 -0
  142. package/dist/cjs/components/Icon/Icon.stories.js.map +1 -0
  143. package/dist/cjs/components/Icon/Icon.test.d.ts +1 -0
  144. package/dist/cjs/components/Icon/Icon.test.js +34 -0
  145. package/dist/cjs/components/Icon/Icon.test.js.map +1 -0
  146. package/dist/cjs/components/Icon/IconStyle.d.ts +1 -0
  147. package/dist/cjs/components/Icon/index.d.ts +2 -0
  148. package/dist/cjs/components/Icon/types.d.ts +13 -0
  149. package/dist/cjs/components/Image/Image.d.ts +17 -0
  150. package/dist/cjs/components/Image/Image.stories.d.ts +6 -0
  151. package/dist/cjs/components/Image/Image.stories.js +19 -0
  152. package/dist/cjs/components/Image/Image.stories.js.map +1 -0
  153. package/dist/cjs/components/Image/Image.test.d.ts +1 -0
  154. package/dist/cjs/components/Image/Image.test.js +39 -0
  155. package/dist/cjs/components/Image/Image.test.js.map +1 -0
  156. package/dist/cjs/components/Image/index.d.ts +1 -0
  157. package/dist/cjs/components/Label/Label.d.ts +13 -0
  158. package/dist/cjs/components/Label/Label.stories.d.ts +6 -0
  159. package/dist/cjs/components/Label/Label.stories.js +17 -0
  160. package/dist/cjs/components/Label/Label.stories.js.map +1 -0
  161. package/dist/cjs/components/Label/Label.test.d.ts +1 -0
  162. package/dist/cjs/components/Label/Label.test.js +37 -0
  163. package/dist/cjs/components/Label/Label.test.js.map +1 -0
  164. package/dist/cjs/components/Label/index.d.ts +1 -0
  165. package/dist/cjs/components/Link/Link.d.ts +24 -0
  166. package/dist/cjs/components/Link/Link.stories.d.ts +7 -0
  167. package/dist/cjs/components/Link/Link.stories.js +45 -0
  168. package/dist/cjs/components/Link/Link.stories.js.map +1 -0
  169. package/dist/cjs/components/Link/Link.test.d.ts +1 -0
  170. package/dist/cjs/components/Link/Link.test.js +65 -0
  171. package/dist/cjs/components/Link/Link.test.js.map +1 -0
  172. package/dist/cjs/components/Link/index.d.ts +1 -0
  173. package/dist/cjs/components/LinkButton/LinkButton.d.ts +15 -0
  174. package/dist/cjs/components/LinkButton/LinkButton.stories.d.ts +6 -0
  175. package/dist/cjs/components/LinkButton/LinkButton.stories.js +46 -0
  176. package/dist/cjs/components/LinkButton/LinkButton.stories.js.map +1 -0
  177. package/dist/cjs/components/LinkButton/LinkButton.test.d.ts +1 -0
  178. package/dist/cjs/components/LinkButton/LinkButton.test.js +67 -0
  179. package/dist/cjs/components/LinkButton/LinkButton.test.js.map +1 -0
  180. package/dist/cjs/components/LinkButton/index.d.ts +1 -0
  181. package/dist/cjs/components/List/List.d.ts +17 -0
  182. package/dist/cjs/components/List/List.stories.d.ts +10 -0
  183. package/dist/cjs/components/List/List.stories.js +82 -0
  184. package/dist/cjs/components/List/List.stories.js.map +1 -0
  185. package/dist/cjs/components/List/List.test.d.ts +1 -0
  186. package/dist/cjs/components/List/List.test.js +95 -0
  187. package/dist/cjs/components/List/List.test.js.map +1 -0
  188. package/dist/cjs/components/List/ListItem.d.ts +14 -0
  189. package/dist/cjs/components/List/index.d.ts +2 -0
  190. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.d.ts +8 -0
  191. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.stories.d.ts +9 -0
  192. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.stories.js +53 -0
  193. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.stories.js.map +1 -0
  194. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.test.d.ts +1 -0
  195. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.test.js +29 -0
  196. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.test.js.map +1 -0
  197. package/dist/cjs/components/LoadingIndicator/index.d.ts +1 -0
  198. package/dist/cjs/components/Logo/Logo.d.ts +14 -0
  199. package/dist/cjs/components/Logo/Logo.stories.d.ts +6 -0
  200. package/dist/cjs/components/Logo/Logo.stories.js +22 -0
  201. package/dist/cjs/components/Logo/Logo.stories.js.map +1 -0
  202. package/dist/cjs/components/Logo/Logo.test.d.ts +1 -0
  203. package/dist/cjs/components/Logo/Logo.test.js +25 -0
  204. package/dist/cjs/components/Logo/Logo.test.js.map +1 -0
  205. package/dist/cjs/components/Logo/index.d.ts +1 -0
  206. package/dist/cjs/components/Modal/Content.d.ts +11 -0
  207. package/dist/cjs/components/Modal/Header.d.ts +11 -0
  208. package/dist/cjs/components/Modal/Modal.d.ts +35 -0
  209. package/dist/cjs/components/Modal/Modal.js +23 -20
  210. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  211. package/dist/cjs/components/Modal/Modal.stories.d.ts +10 -0
  212. package/dist/cjs/components/Modal/Modal.stories.js +90 -0
  213. package/dist/cjs/components/Modal/Modal.stories.js.map +1 -0
  214. package/dist/cjs/components/Modal/Modal.test.d.ts +1 -0
  215. package/dist/cjs/components/Modal/Modal.test.js +137 -0
  216. package/dist/cjs/components/Modal/Modal.test.js.map +1 -0
  217. package/dist/cjs/components/Modal/index.d.ts +12 -0
  218. package/dist/cjs/components/NumberField/NumberField.d.ts +35 -0
  219. package/dist/cjs/components/NumberField/NumberField.stories.d.ts +10 -0
  220. package/dist/cjs/components/NumberField/NumberField.stories.js +100 -0
  221. package/dist/cjs/components/NumberField/NumberField.stories.js.map +1 -0
  222. package/dist/cjs/components/NumberField/NumberField.test.d.ts +1 -0
  223. package/dist/cjs/components/NumberField/NumberField.test.js +117 -0
  224. package/dist/cjs/components/NumberField/NumberField.test.js.map +1 -0
  225. package/dist/cjs/components/NumberField/index.d.ts +1 -0
  226. package/dist/cjs/components/Option/Option.d.ts +10 -0
  227. package/dist/cjs/components/Option/index.d.ts +1 -0
  228. package/dist/cjs/components/PasswordField/PasswordField.d.ts +5 -0
  229. package/dist/cjs/components/PasswordField/PasswordField.stories.d.ts +6 -0
  230. package/dist/cjs/components/PasswordField/PasswordField.stories.js +41 -0
  231. package/dist/cjs/components/PasswordField/PasswordField.stories.js.map +1 -0
  232. package/dist/cjs/components/PasswordField/PasswordField.test.d.ts +1 -0
  233. package/dist/cjs/components/PasswordField/PasswordField.test.js +34 -0
  234. package/dist/cjs/components/PasswordField/PasswordField.test.js.map +1 -0
  235. package/dist/cjs/components/PasswordField/ShowHideButton.d.ts +5 -0
  236. package/dist/cjs/components/PasswordField/index.d.ts +1 -0
  237. package/dist/cjs/components/Popover/Popover.d.ts +15 -0
  238. package/dist/cjs/components/Popover/Popover.stories.d.ts +7 -0
  239. package/dist/cjs/components/Popover/Popover.stories.js +32 -0
  240. package/dist/cjs/components/Popover/Popover.stories.js.map +1 -0
  241. package/dist/cjs/components/Popover/Popover.test.d.ts +1 -0
  242. package/dist/cjs/components/Popover/Popover.test.js +104 -0
  243. package/dist/cjs/components/Popover/Popover.test.js.map +1 -0
  244. package/dist/cjs/components/Popover/index.d.ts +1 -0
  245. package/dist/cjs/components/Progress/Progress.d.ts +20 -0
  246. package/dist/cjs/components/Progress/Progress.stories.d.ts +9 -0
  247. package/dist/cjs/components/Progress/Progress.stories.js +96 -0
  248. package/dist/cjs/components/Progress/Progress.stories.js.map +1 -0
  249. package/dist/cjs/components/Progress/Progress.test.d.ts +1 -0
  250. package/dist/cjs/components/Progress/Progress.test.js +60 -0
  251. package/dist/cjs/components/Progress/Progress.test.js.map +1 -0
  252. package/dist/cjs/components/Progress/index.d.ts +1 -0
  253. package/dist/cjs/components/Radio/Radio.d.ts +53 -0
  254. package/dist/cjs/components/Radio/Radio.stories.d.ts +12 -0
  255. package/dist/cjs/components/Radio/Radio.stories.js +122 -0
  256. package/dist/cjs/components/Radio/Radio.stories.js.map +1 -0
  257. package/dist/cjs/components/Radio/Radio.test.d.ts +1 -0
  258. package/dist/cjs/components/Radio/Radio.test.js +259 -0
  259. package/dist/cjs/components/Radio/Radio.test.js.map +1 -0
  260. package/dist/cjs/components/Radio/RadioButton.d.ts +3 -0
  261. package/dist/cjs/components/Radio/RadioButton.stories.d.ts +11 -0
  262. package/dist/cjs/components/Radio/RadioButton.stories.js +90 -0
  263. package/dist/cjs/components/Radio/RadioButton.stories.js.map +1 -0
  264. package/dist/cjs/components/Radio/RadioButton.test.d.ts +1 -0
  265. package/dist/cjs/components/Radio/RadioButton.test.js +23 -0
  266. package/dist/cjs/components/Radio/RadioButton.test.js.map +1 -0
  267. package/dist/cjs/components/Radio/RadioGroup.d.ts +30 -0
  268. package/dist/cjs/components/Radio/index.d.ts +3 -0
  269. package/dist/cjs/components/SVG/SVG.d.ts +11 -0
  270. package/dist/cjs/components/SVG/SVG.stories.d.ts +6 -0
  271. package/dist/cjs/components/SVG/SVG.stories.js +21 -0
  272. package/dist/cjs/components/SVG/SVG.stories.js.map +1 -0
  273. package/dist/cjs/components/SVG/SVG.test.d.ts +1 -0
  274. package/dist/cjs/components/SVG/SVG.test.js +28 -0
  275. package/dist/cjs/components/SVG/SVG.test.js.map +1 -0
  276. package/dist/cjs/components/SVG/index.d.ts +1 -0
  277. package/dist/cjs/components/Segment/Segment.d.ts +16 -0
  278. package/dist/cjs/components/Segment/Segment.stories.d.ts +19 -0
  279. package/dist/cjs/components/Segment/Segment.stories.js +125 -0
  280. package/dist/cjs/components/Segment/Segment.stories.js.map +1 -0
  281. package/dist/cjs/components/Segment/SegmentGroup.d.ts +13 -0
  282. package/dist/cjs/components/Segment/index.d.ts +2 -0
  283. package/dist/cjs/components/Select/Select.d.ts +20 -0
  284. package/dist/cjs/components/Select/Select.stories.d.ts +10 -0
  285. package/dist/cjs/components/Select/Select.stories.js +89 -0
  286. package/dist/cjs/components/Select/Select.stories.js.map +1 -0
  287. package/dist/cjs/components/Select/Select.test.d.ts +1 -0
  288. package/dist/cjs/components/Select/Select.test.js +108 -0
  289. package/dist/cjs/components/Select/Select.test.js.map +1 -0
  290. package/dist/cjs/components/Select/index.d.ts +1 -0
  291. package/dist/cjs/components/Slider/Slider.d.ts +19 -0
  292. package/dist/cjs/components/Slider/Slider.stories.d.ts +10 -0
  293. package/dist/cjs/components/Slider/Slider.stories.js +84 -0
  294. package/dist/cjs/components/Slider/Slider.stories.js.map +1 -0
  295. package/dist/cjs/components/Slider/Slider.test.d.ts +1 -0
  296. package/dist/cjs/components/Slider/Slider.test.js +85 -0
  297. package/dist/cjs/components/Slider/Slider.test.js.map +1 -0
  298. package/dist/cjs/components/Slider/helpers.d.ts +5 -0
  299. package/dist/cjs/components/Slider/helpers.test.d.ts +1 -0
  300. package/dist/cjs/components/Slider/helpers.test.js +75 -0
  301. package/dist/cjs/components/Slider/helpers.test.js.map +1 -0
  302. package/dist/cjs/components/Slider/index.d.ts +1 -0
  303. package/dist/cjs/components/Table/Body.d.ts +9 -0
  304. package/dist/cjs/components/Table/Cell.d.ts +11 -0
  305. package/dist/cjs/components/Table/Foot.d.ts +9 -0
  306. package/dist/cjs/components/Table/Head.d.ts +9 -0
  307. package/dist/cjs/components/Table/HeaderCell.d.ts +9 -0
  308. package/dist/cjs/components/Table/Row.d.ts +9 -0
  309. package/dist/cjs/components/Table/Table.d.ts +11 -0
  310. package/dist/cjs/components/Table/Table.stories.d.ts +7 -0
  311. package/dist/cjs/components/Table/Table.stories.js +17 -0
  312. package/dist/cjs/components/Table/Table.stories.js.map +1 -0
  313. package/dist/cjs/components/Table/Table.test.d.ts +1 -0
  314. package/dist/cjs/components/Table/Table.test.js +75 -0
  315. package/dist/cjs/components/Table/Table.test.js.map +1 -0
  316. package/dist/cjs/components/Table/index.d.ts +20 -0
  317. package/dist/cjs/components/Text/Text.d.ts +21 -0
  318. package/dist/cjs/components/Text/Text.stories.d.ts +10 -0
  319. package/dist/cjs/components/Text/Text.stories.js +38 -0
  320. package/dist/cjs/components/Text/Text.stories.js.map +1 -0
  321. package/dist/cjs/components/Text/Text.test.d.ts +1 -0
  322. package/dist/cjs/components/Text/Text.test.js +33 -0
  323. package/dist/cjs/components/Text/Text.test.js.map +1 -0
  324. package/dist/cjs/components/Text/index.d.ts +1 -0
  325. package/dist/cjs/components/TextArea/TextArea.d.ts +13 -0
  326. package/dist/cjs/components/TextArea/TextArea.stories.d.ts +11 -0
  327. package/dist/cjs/components/TextArea/TextArea.stories.js +92 -0
  328. package/dist/cjs/components/TextArea/TextArea.stories.js.map +1 -0
  329. package/dist/cjs/components/TextArea/TextArea.test.d.ts +1 -0
  330. package/dist/cjs/components/TextArea/TextArea.test.js +87 -0
  331. package/dist/cjs/components/TextArea/TextArea.test.js.map +1 -0
  332. package/dist/cjs/components/TextArea/index.d.ts +1 -0
  333. package/dist/cjs/components/TextAreaInput/TextAreaInput.d.ts +14 -0
  334. package/dist/cjs/components/TextAreaInput/TextAreaInput.test.d.ts +1 -0
  335. package/dist/cjs/components/TextAreaInput/TextAreaInput.test.js +35 -0
  336. package/dist/cjs/components/TextAreaInput/TextAreaInput.test.js.map +1 -0
  337. package/dist/cjs/components/TextAreaInput/index.d.ts +1 -0
  338. package/dist/cjs/components/TextField/TextField.d.ts +19 -0
  339. package/dist/cjs/components/TextField/TextField.stories.d.ts +20 -0
  340. package/dist/cjs/components/TextField/TextField.stories.js +219 -0
  341. package/dist/cjs/components/TextField/TextField.stories.js.map +1 -0
  342. package/dist/cjs/components/TextField/TextField.test.d.ts +1 -0
  343. package/dist/cjs/components/TextField/TextField.test.js +164 -0
  344. package/dist/cjs/components/TextField/TextField.test.js.map +1 -0
  345. package/dist/cjs/components/TextField/adornmentWithClassName.d.ts +2 -0
  346. package/dist/cjs/components/TextField/index.d.ts +1 -0
  347. package/dist/cjs/components/Title/Title.d.ts +15 -0
  348. package/dist/cjs/components/Title/Title.stories.d.ts +6 -0
  349. package/dist/cjs/components/Title/Title.stories.js +18 -0
  350. package/dist/cjs/components/Title/Title.stories.js.map +1 -0
  351. package/dist/cjs/components/Title/Title.test.d.ts +1 -0
  352. package/dist/cjs/components/Title/Title.test.js +22 -0
  353. package/dist/cjs/components/Title/Title.test.js.map +1 -0
  354. package/dist/cjs/components/Title/index.d.ts +1 -0
  355. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts +11 -0
  356. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.stories.d.ts +6 -0
  357. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.stories.js +14 -0
  358. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.stories.js.map +1 -0
  359. package/dist/cjs/components/VisuallyHidden/index.d.ts +1 -0
  360. package/dist/cjs/components/index.d.ts +40 -0
  361. package/dist/cjs/hooks/index.d.ts +7 -0
  362. package/dist/cjs/hooks/useBodyScrollLock/index.d.ts +1 -0
  363. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.d.ts +3 -0
  364. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.test.d.ts +1 -0
  365. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.test.js +31 -0
  366. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.test.js.map +1 -0
  367. package/dist/cjs/hooks/useBreakpoint/index.d.ts +1 -0
  368. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.d.ts +14 -0
  369. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.stories.d.ts +7 -0
  370. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.stories.js +28 -0
  371. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.stories.js.map +1 -0
  372. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.test.d.ts +1 -0
  373. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.test.js +377 -0
  374. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.test.js.map +1 -0
  375. package/dist/cjs/hooks/useButton/index.d.ts +1 -0
  376. package/dist/cjs/hooks/useButton/useButton.d.ts +35 -0
  377. package/dist/cjs/hooks/useButton/useButton.test.d.ts +1 -0
  378. package/dist/cjs/hooks/useButton/useButton.test.js +143 -0
  379. package/dist/cjs/hooks/useButton/useButton.test.js.map +1 -0
  380. package/dist/cjs/hooks/useLabel/index.d.ts +1 -0
  381. package/dist/cjs/hooks/useLabel/useLabel.d.ts +27 -0
  382. package/dist/cjs/hooks/useLabel/useLabel.test.d.ts +1 -0
  383. package/dist/cjs/hooks/useLabel/useLabel.test.js +49 -0
  384. package/dist/cjs/hooks/useLabel/useLabel.test.js.map +1 -0
  385. package/dist/cjs/hooks/useOnClickOutside/index.d.ts +1 -0
  386. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.d.ts +2 -0
  387. package/dist/cjs/hooks/useTextField/index.d.ts +2 -0
  388. package/dist/cjs/hooks/useTextField/types.d.ts +26 -0
  389. package/dist/cjs/hooks/useTextField/useTextField.d.ts +2 -0
  390. package/dist/cjs/hooks/useTextField/useTextField.test.d.ts +1 -0
  391. package/dist/cjs/hooks/useTextField/useTextField.test.js +167 -0
  392. package/dist/cjs/hooks/useTextField/useTextField.test.js.map +1 -0
  393. package/dist/cjs/hooks/useWindowEvent/index.d.ts +1 -0
  394. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.d.ts +1 -0
  395. package/dist/cjs/index.d.ts +3 -0
  396. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  397. package/dist/cjs/types/components.d.ts +2 -0
  398. package/dist/cjs/types/dom.d.ts +3 -0
  399. package/dist/cjs/types/events.d.ts +45 -0
  400. package/dist/cjs/types/icon.d.ts +9 -0
  401. package/dist/cjs/types/index.d.ts +5 -0
  402. package/dist/cjs/types/size.d.ts +1 -0
  403. package/dist/cjs/utils/StoryContainer.d.ts +1 -0
  404. package/dist/cjs/utils/StoryContainer.js +39 -0
  405. package/dist/cjs/utils/StoryContainer.js.map +1 -0
  406. package/dist/cjs/utils/changeCSS.d.ts +1 -0
  407. package/dist/cjs/utils/excludeControls.d.ts +1 -0
  408. package/dist/cjs/utils/excludeControls.test.d.ts +1 -0
  409. package/dist/cjs/utils/excludeControls.test.js +25 -0
  410. package/dist/cjs/utils/excludeControls.test.js.map +1 -0
  411. package/dist/cjs/utils/index.d.ts +8 -0
  412. package/dist/cjs/utils/jestHTMLDialogPolyfill.d.ts +1 -0
  413. package/dist/cjs/utils/mergeRefs.d.ts +2 -0
  414. package/dist/cjs/utils/polyfill-tests.d.ts +1 -0
  415. package/dist/cjs/utils/sizeClasses.d.ts +16 -0
  416. package/dist/cjs/utils/sizeClasses.test.d.ts +1 -0
  417. package/dist/cjs/utils/sizeClasses.test.js +20 -0
  418. package/dist/cjs/utils/sizeClasses.test.js.map +1 -0
  419. package/dist/cjs/utils/spaceDelimitedList.d.ts +1 -0
  420. package/dist/cjs/utils/spaceDelimitedList.test.d.ts +1 -0
  421. package/dist/cjs/utils/spaceDelimitedList.test.js +27 -0
  422. package/dist/cjs/utils/spaceDelimitedList.test.js.map +1 -0
  423. package/dist/esm/components/Drawer/Drawer.js +29 -19
  424. package/dist/esm/components/Drawer/Drawer.js.map +1 -1
  425. package/dist/esm/components/Drawer/DrawerContext.js +7 -0
  426. package/dist/esm/components/Drawer/DrawerContext.js.map +1 -0
  427. package/dist/esm/components/Drawer/useDrawer.js +11 -0
  428. package/dist/esm/components/Drawer/useDrawer.js.map +1 -0
  429. package/dist/esm/components/Flex/propUtils.test.js +97 -0
  430. package/dist/esm/components/Flex/propUtils.test.js.map +1 -0
  431. package/dist/esm/components/Modal/Modal.js +23 -20
  432. package/dist/esm/components/Modal/Modal.js.map +1 -1
  433. package/dist/esm/components/Slider/helpers.test.js +73 -0
  434. package/dist/esm/components/Slider/helpers.test.js.map +1 -0
  435. package/dist/esm/hooks/useBodyScrollLock/useBodyScrollLock.test.js +29 -0
  436. package/dist/esm/hooks/useBodyScrollLock/useBodyScrollLock.test.js.map +1 -0
  437. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  438. package/dist/esm/utils/StoryContainer.js +29 -0
  439. package/dist/esm/utils/StoryContainer.js.map +1 -0
  440. package/dist/esm/utils/excludeControls.test.js +23 -0
  441. package/dist/esm/utils/excludeControls.test.js.map +1 -0
  442. package/dist/esm/utils/sizeClasses.test.js +18 -0
  443. package/dist/esm/utils/sizeClasses.test.js.map +1 -0
  444. package/dist/esm/utils/spaceDelimitedList.test.js +25 -0
  445. package/dist/esm/utils/spaceDelimitedList.test.js.map +1 -0
  446. package/package.json +1 -1
  447. package/src/components/Drawer/Drawer.tsx +33 -20
  448. package/src/components/Modal/Modal.mdx +0 -1
  449. package/src/components/Modal/Modal.stories.tsx +1 -1
  450. package/src/components/Modal/Modal.test.tsx +0 -13
  451. package/src/components/Modal/Modal.tsx +23 -19
@@ -61,8 +61,8 @@ function _interop_require_wildcard(obj, nodeInterop) {
61
61
  }
62
62
  return newObj;
63
63
  }
64
+ const TRANSITION_CLASS_NAME = "--transition";
64
65
  const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
65
- var _window;
66
66
  const { isOpen, onClose, onOpen, children, className, closeLabel, isFullScreen, animation, // Deprecated props below
67
67
  size, appElement, preventCloseOnEsc, shouldFocusAfterRender, parentSelector } = props;
68
68
  const hasWarnedAboutMissingLabels = (0, _react.useRef)(false);
@@ -75,8 +75,7 @@ const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
75
75
  }
76
76
  const hasOpened = (0, _react.useRef)(false);
77
77
  const modalRef = (0, _react.useRef)(null);
78
- const dialog = modalRef.current;
79
- const noPreference = (_window = window) === null || _window === void 0 ? void 0 : _window.matchMedia("(prefers-reduced-motion: no-preference)");
78
+ const hasDialogSupport = (0, _polyfilltests.supportsDialog)();
80
79
  // Fire onOpen once
81
80
  if (onOpen && !hasOpened.current) {
82
81
  onOpen();
@@ -92,13 +91,15 @@ const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
92
91
  event.stopPropagation();
93
92
  }
94
93
  const doClose = ()=>{
95
- dialog === null || dialog === void 0 ? void 0 : dialog.close();
94
+ var _modalRef_current;
95
+ (_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.close();
96
96
  onClose === null || onClose === void 0 ? void 0 : onClose();
97
97
  };
98
- if (animation) {
99
- dialog === null || dialog === void 0 ? void 0 : dialog.classList.add("close");
100
- dialog === null || dialog === void 0 ? void 0 : dialog.addEventListener("animationend", ()=>{
101
- dialog.classList.remove("close");
98
+ // Delay close to allow backdrop exit transition
99
+ if (hasDialogSupport && animation) {
100
+ var _modalRef_current, _modalRef_current1;
101
+ (_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.classList.remove(TRANSITION_CLASS_NAME);
102
+ (_modalRef_current1 = modalRef.current) === null || _modalRef_current1 === void 0 ? void 0 : _modalRef_current1.addEventListener("transitionend", ()=>{
102
103
  doClose();
103
104
  }, {
104
105
  once: true
@@ -107,31 +108,32 @@ const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
107
108
  doClose();
108
109
  }
109
110
  }, [
110
- animation,
111
- dialog,
112
- onClose
111
+ onClose,
112
+ hasDialogSupport,
113
+ animation
113
114
  ]);
114
115
  const modalClasses = (0, _dedupe.default)("mobius", "mobius/Modal", {
115
- animation,
116
+ "--no-dialog-support": !hasDialogSupport,
117
+ "--should-transition": hasDialogSupport && animation,
116
118
  "--slide-up": animation === "slideUp",
117
119
  "--fade": animation === "fade",
118
- "--has-reduced-motion": !noPreference.matches,
119
120
  "--is-fullscreen": isFullScreen
120
121
  }, className);
121
122
  // Add polyfill for HTML Dialog in old browsers
122
123
  (0, _react.useEffect)(()=>{
123
124
  async function toggleModal() {
124
- var _modalRef_current;
125
- if (!(0, _polyfilltests.supportsDialog)() && typeof window !== "undefined") {
125
+ var _modalRef_current, _modalRef_current1;
126
+ if (!hasDialogSupport && typeof window !== "undefined" && modalRef.current !== null) {
126
127
  // eslint-disable-next-line import/no-extraneous-dependencies
127
128
  const { default: dialogPolyfill } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("dialog-polyfill")));
128
129
  dialogPolyfill.registerDialog(modalRef.current);
129
130
  }
130
- if (isOpen) {
131
- var _modalRef_current1;
132
- (_modalRef_current1 = modalRef.current) === null || _modalRef_current1 === void 0 ? void 0 : _modalRef_current1.showModal();
131
+ if (isOpen && !((_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.open)) {
132
+ var _modalRef_current2, _modalRef_current3;
133
+ (_modalRef_current2 = modalRef.current) === null || _modalRef_current2 === void 0 ? void 0 : _modalRef_current2.showModal();
134
+ (_modalRef_current3 = modalRef.current) === null || _modalRef_current3 === void 0 ? void 0 : _modalRef_current3.classList.add(TRANSITION_CLASS_NAME);
133
135
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
134
- } else if ((_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.open) {
136
+ } else if (!isOpen && ((_modalRef_current1 = modalRef.current) === null || _modalRef_current1 === void 0 ? void 0 : _modalRef_current1.open)) {
135
137
  handleClose();
136
138
  }
137
139
  }
@@ -139,7 +141,8 @@ const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
139
141
  }, [
140
142
  isOpen,
141
143
  onOpen,
142
- handleClose
144
+ handleClose,
145
+ hasDialogSupport
143
146
  ]);
144
147
  return /*#__PURE__*/ (0, _jsxruntime.jsx)("dialog", {
145
148
  ref: (0, _utils.mergeRefs)([
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport {\n Children,\n Ref,\n SyntheticEvent,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { useBodyScrollLock } from \"../../hooks/useBodyScrollLock\";\nimport { supportsDialog } from \"../../utils/polyfill-tests\";\nimport { ModalProps } from \"./types\";\nimport { mergeRefs } from \"../../utils\";\n\nexport type ModalElementType = HTMLDialogElement;\nexport type ModalRef = Ref<ModalElementType>;\n\nconst Modal = forwardRef((props: ModalProps, ref: ModalRef) => {\n const {\n isOpen,\n onClose,\n onOpen,\n children,\n className,\n closeLabel,\n isFullScreen,\n animation,\n // Deprecated props below\n size,\n appElement,\n preventCloseOnEsc,\n shouldFocusAfterRender,\n parentSelector,\n } = props;\n const hasWarnedAboutMissingLabels = useRef<boolean>(false);\n // Handle deprecated props\n if (!hasWarnedAboutMissingLabels.current) {\n if (\n size ||\n appElement ||\n preventCloseOnEsc ||\n shouldFocusAfterRender ||\n parentSelector\n ) {\n console.warn(\n `Deprecation warning: Mobius Modal no longer supports the following props: size, appElement, preventCloseOnEsc, shouldFocusAfterRender and parentSelector.`,\n );\n hasWarnedAboutMissingLabels.current = true;\n }\n }\n\n const hasOpened = useRef<boolean>(false);\n const modalRef = useRef<HTMLDialogElement>(null);\n const dialog = modalRef.current as HTMLDialogElement;\n const noPreference = window?.matchMedia(\n \"(prefers-reduced-motion: no-preference)\",\n );\n\n // Fire onOpen once\n if (onOpen && !hasOpened.current) {\n onOpen();\n hasOpened.current = true;\n }\n\n useBodyScrollLock({ enabled: isOpen });\n\n // Add close handler, to enable closing animations\n const handleClose = useCallback(\n (event?: SyntheticEvent<HTMLElement, Event>) => {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const doClose = () => {\n dialog?.close();\n onClose?.();\n };\n\n if (animation) {\n dialog?.classList.add(\"close\");\n dialog?.addEventListener(\n \"animationend\",\n () => {\n dialog.classList.remove(\"close\");\n doClose();\n },\n { once: true },\n );\n } else {\n doClose();\n }\n },\n [animation, dialog, onClose],\n );\n\n const modalClasses = classNames(\n \"mobius\",\n \"mobius/Modal\",\n {\n animation,\n \"--slide-up\": animation === \"slideUp\",\n \"--fade\": animation === \"fade\",\n \"--has-reduced-motion\": !noPreference.matches,\n \"--is-fullscreen\": isFullScreen,\n },\n className,\n );\n\n // Add polyfill for HTML Dialog in old browsers\n useEffect(() => {\n async function toggleModal() {\n if (!supportsDialog() && typeof window !== \"undefined\") {\n // eslint-disable-next-line import/no-extraneous-dependencies\n const { default: dialogPolyfill } = await import(\"dialog-polyfill\");\n dialogPolyfill.registerDialog(modalRef.current as HTMLDialogElement);\n }\n\n if (isOpen) {\n modalRef.current?.showModal();\n onOpen?.();\n } else if (modalRef.current?.open) {\n handleClose();\n }\n }\n\n toggleModal();\n }, [isOpen, onOpen, handleClose]);\n\n return (\n <dialog\n ref={mergeRefs([modalRef, ref])}\n onCancel={handleClose}\n className={modalClasses}\n >\n {Children.map(children, child => {\n if (isValidElement(child)) {\n return cloneElement(child, {\n onClose: handleClose,\n closeLabel,\n } as any);\n }\n\n return child;\n })}\n </dialog>\n );\n});\n\nModal.displayName = \"Modal\";\nexport { Modal };\n"],"names":["Modal","forwardRef","props","ref","window","isOpen","onClose","onOpen","children","className","closeLabel","isFullScreen","animation","size","appElement","preventCloseOnEsc","shouldFocusAfterRender","parentSelector","hasWarnedAboutMissingLabels","useRef","current","console","warn","hasOpened","modalRef","dialog","noPreference","matchMedia","useBodyScrollLock","enabled","handleClose","useCallback","event","preventDefault","stopPropagation","doClose","close","classList","add","addEventListener","remove","once","modalClasses","classNames","matches","useEffect","toggleModal","supportsDialog","default","dialogPolyfill","registerDialog","showModal","open","mergeRefs","onCancel","Children","map","child","isValidElement","cloneElement","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport {\n Children,\n Ref,\n SyntheticEvent,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { useBodyScrollLock } from \"../../hooks/useBodyScrollLock\";\nimport { supportsDialog } from \"../../utils/polyfill-tests\";\nimport { ModalProps } from \"./types\";\nimport { mergeRefs } from \"../../utils\";\n\nexport type ModalElementType = HTMLDialogElement;\nexport type ModalRef = Ref<ModalElementType>;\n\nconst TRANSITION_CLASS_NAME = \"--transition\";\n\nconst Modal = forwardRef((props: ModalProps, ref: ModalRef) => {\n const {\n isOpen,\n onClose,\n onOpen,\n children,\n className,\n closeLabel,\n isFullScreen,\n animation,\n // Deprecated props below\n size,\n appElement,\n preventCloseOnEsc,\n shouldFocusAfterRender,\n parentSelector,\n } = props;\n const hasWarnedAboutMissingLabels = useRef<boolean>(false);\n // Handle deprecated props\n if (!hasWarnedAboutMissingLabels.current) {\n if (\n size ||\n appElement ||\n preventCloseOnEsc ||\n shouldFocusAfterRender ||\n parentSelector\n ) {\n console.warn(\n `Deprecation warning: Mobius Modal no longer supports the following props: size, appElement, preventCloseOnEsc, shouldFocusAfterRender and parentSelector.`,\n );\n hasWarnedAboutMissingLabels.current = true;\n }\n }\n\n const hasOpened = useRef<boolean>(false);\n const modalRef = useRef<HTMLDialogElement | null>(null);\n const hasDialogSupport = supportsDialog();\n\n // Fire onOpen once\n if (onOpen && !hasOpened.current) {\n onOpen();\n hasOpened.current = true;\n }\n\n useBodyScrollLock({ enabled: isOpen });\n\n // Add close handler, to enable closing animations\n const handleClose = useCallback(\n (event?: SyntheticEvent<HTMLElement, Event>) => {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const doClose = () => {\n modalRef.current?.close();\n onClose?.();\n };\n\n // Delay close to allow backdrop exit transition\n if (hasDialogSupport && animation) {\n modalRef.current?.classList.remove(TRANSITION_CLASS_NAME);\n modalRef.current?.addEventListener(\n \"transitionend\",\n () => {\n doClose();\n },\n { once: true },\n );\n } else {\n doClose();\n }\n },\n [onClose, hasDialogSupport, animation],\n );\n\n const modalClasses = classNames(\n \"mobius\",\n \"mobius/Modal\",\n {\n \"--no-dialog-support\": !hasDialogSupport, // This class is used to correctly position modal in x/y middle on iOS <= 15.2\n \"--should-transition\": hasDialogSupport && animation,\n \"--slide-up\": animation === \"slideUp\",\n \"--fade\": animation === \"fade\",\n \"--is-fullscreen\": isFullScreen,\n },\n className,\n );\n\n // Add polyfill for HTML Dialog in old browsers\n useEffect(() => {\n async function toggleModal() {\n if (\n !hasDialogSupport &&\n typeof window !== \"undefined\" &&\n modalRef.current !== null\n ) {\n // eslint-disable-next-line import/no-extraneous-dependencies\n const { default: dialogPolyfill } = await import(\"dialog-polyfill\");\n dialogPolyfill.registerDialog(modalRef.current);\n }\n\n if (isOpen && !modalRef.current?.open) {\n modalRef.current?.showModal();\n modalRef.current?.classList.add(TRANSITION_CLASS_NAME);\n onOpen?.();\n } else if (!isOpen && modalRef.current?.open) {\n handleClose();\n }\n }\n\n toggleModal();\n }, [isOpen, onOpen, handleClose, hasDialogSupport]);\n\n return (\n <dialog\n ref={mergeRefs([modalRef, ref])}\n onCancel={handleClose}\n className={modalClasses}\n >\n {Children.map(children, child => {\n if (isValidElement(child)) {\n return cloneElement(child, {\n onClose: handleClose,\n closeLabel,\n } as any);\n }\n\n return child;\n })}\n </dialog>\n );\n});\n\nModal.displayName = \"Modal\";\nexport { Modal };\n"],"names":["Modal","TRANSITION_CLASS_NAME","forwardRef","props","ref","isOpen","onClose","onOpen","children","className","closeLabel","isFullScreen","animation","size","appElement","preventCloseOnEsc","shouldFocusAfterRender","parentSelector","hasWarnedAboutMissingLabels","useRef","current","console","warn","hasOpened","modalRef","hasDialogSupport","supportsDialog","useBodyScrollLock","enabled","handleClose","useCallback","event","preventDefault","stopPropagation","doClose","close","classList","remove","addEventListener","once","modalClasses","classNames","useEffect","toggleModal","window","default","dialogPolyfill","registerDialog","open","showModal","add","dialog","mergeRefs","onCancel","Children","map","child","isValidElement","cloneElement","displayName"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { Modal } from ".";
3
+ type StoryType = StoryObj<typeof Modal>;
4
+ declare const meta: Meta<typeof Modal>;
5
+ export declare const Normal: StoryType;
6
+ export declare const FullScreen: StoryType;
7
+ export declare const WithAnimation: StoryType;
8
+ export declare const WithLongContent: StoryType;
9
+ export declare const WithNested: StoryType;
10
+ export default meta;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WithNested = exports.WithLongContent = exports.WithAnimation = exports.FullScreen = exports.Normal = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const _1 = require(".");
7
+ const utils_1 = require("../../utils");
8
+ const Button_1 = require("../Button");
9
+ const Text_1 = require("../Text");
10
+ const meta = {
11
+ title: "Components/Modal",
12
+ component: _1.Modal,
13
+ argTypes: Object.assign({ animation: {
14
+ options: ["slideUp", "fade", "neither"],
15
+ control: { type: "radio" },
16
+ mapping: {
17
+ slideUp: "slideUp",
18
+ fade: "fade",
19
+ neither: undefined,
20
+ },
21
+ } }, (0, utils_1.excludeControls)("appElement", "parentSelector", "isOpen", "preventCloseOnEsc", "shouldFocusAfterRender", "size")),
22
+ args: {
23
+ isFullScreen: false,
24
+ },
25
+ };
26
+ const Demo = (props) => {
27
+ const [open, setOpen] = (0, react_1.useState)(false);
28
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: () => setOpen(true), children: "Show Modal" }), (0, jsx_runtime_1.jsxs)(_1.Modal, Object.assign({}, props, { isOpen: open, onClose: () => setOpen(false), children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, { children: "The Latin Modal" }), (0, jsx_runtime_1.jsx)(_1.Modal.Content, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." })] }))] }));
29
+ };
30
+ const FullScreenDemo = (props) => {
31
+ const [open, setOpen] = (0, react_1.useState)(false);
32
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: () => setOpen(true), variant: "secondary", children: "Show Fullscreen Modal \uD83D\uDE80" }), (0, jsx_runtime_1.jsxs)(_1.Modal, Object.assign({}, props, { isOpen: open, isFullScreen: true, onClose: () => setOpen(false), children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, { children: "The Full Screen Modal" }), (0, jsx_runtime_1.jsx)(_1.Modal.Content, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." })] }))] }));
33
+ };
34
+ const WithAnimationDemo = ({ animation, isFullScreen, closeLabel, }) => {
35
+ const [open, setOpen] = (0, react_1.useState)(false);
36
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: () => setOpen(true), children: "Show Modal With Animation \uD83E\uDDD9\u200D\u2642\uFE0F" }), (0, jsx_runtime_1.jsxs)(_1.Modal, { isOpen: open, onClose: () => setOpen(false), animation: animation, isFullScreen: isFullScreen, closeLabel: closeLabel, children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, { children: "The Latin Modal" }), (0, jsx_runtime_1.jsx)(_1.Modal.Content, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." })] })] }));
37
+ };
38
+ const WithLongContentDemo = (props) => {
39
+ const [open, setOpen] = (0, react_1.useState)(false);
40
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: () => setOpen(true), children: "Show Modal" }), (0, jsx_runtime_1.jsxs)(_1.Modal, Object.assign({}, props, { isOpen: open, onClose: () => setOpen(false), children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, { children: "Aliquam fringilla quam vel purus rhoncus isuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Int" }), (0, jsx_runtime_1.jsxs)(_1.Modal.Content, { children: [(0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." }), (0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." }), (0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." }), (0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." }), (0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." }), (0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." }), (0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed at eros et lectus mollis posuere. Morbi augue augue, venenatis vel consectetur sed, vulputate et lorem. Integer venenatis nibh molestie commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi augue, scelerisque commodo libero vitae, vulputate interdum ex. Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla." })] })] }))] }));
41
+ };
42
+ const ChildModal = () => {
43
+ const [showModal, setShowModal] = (0, react_1.useState)(false);
44
+ const show = () => setShowModal(true);
45
+ const hide = () => setShowModal(false);
46
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: show, children: "Show child modal" }), (0, jsx_runtime_1.jsxs)(_1.Modal, { isOpen: showModal, onClose: hide, animation: "slideUp", children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, { children: "Howdy" }), (0, jsx_runtime_1.jsx)(_1.Modal.Content, { children: (0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Closing or cancelling (with Escape key) should leave the parent modal open." }) })] })] }));
47
+ };
48
+ const WithNestedDemo = ({ animation, closeLabel }) => {
49
+ const [open, setOpen] = (0, react_1.useState)(false);
50
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { onClick: () => setOpen(true), children: "Show Nested Modal" }), (0, jsx_runtime_1.jsxs)(_1.Modal, { isOpen: open, onClose: () => setOpen(false), animation: animation, closeLabel: closeLabel, children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, { children: "The Latin Modal" }), (0, jsx_runtime_1.jsxs)(_1.Modal.Content, { children: [(0, jsx_runtime_1.jsx)(Text_1.Text, { children: "Closing or cancelling the next modal should leave me open." }), (0, jsx_runtime_1.jsx)(ChildModal, {})] })] })] }));
51
+ };
52
+ exports.Normal = {
53
+ render: (args) => (0, jsx_runtime_1.jsx)(Demo, Object.assign({}, args)),
54
+ args: {
55
+ isOpen: false,
56
+ closeLabel: "Close",
57
+ },
58
+ };
59
+ exports.FullScreen = {
60
+ render: (args) => (0, jsx_runtime_1.jsx)(FullScreenDemo, Object.assign({}, args)),
61
+ args: {
62
+ isOpen: false,
63
+ closeLabel: "Close",
64
+ isFullScreen: true,
65
+ },
66
+ };
67
+ exports.WithAnimation = {
68
+ render: (args) => (0, jsx_runtime_1.jsx)(WithAnimationDemo, Object.assign({}, args)),
69
+ args: {
70
+ isOpen: false,
71
+ animation: "slideUp",
72
+ closeLabel: "Close",
73
+ },
74
+ };
75
+ exports.WithLongContent = {
76
+ render: (args) => (0, jsx_runtime_1.jsx)(WithLongContentDemo, Object.assign({}, args)),
77
+ args: {
78
+ isOpen: false,
79
+ closeLabel: "Close",
80
+ },
81
+ };
82
+ exports.WithNested = {
83
+ render: (args) => (0, jsx_runtime_1.jsx)(WithNestedDemo, Object.assign({}, args)),
84
+ args: {
85
+ isOpen: false,
86
+ closeLabel: "Close",
87
+ },
88
+ };
89
+ exports.default = meta;
90
+ //# sourceMappingURL=Modal.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.stories.js","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("@testing-library/react");
8
+ const user_event_1 = __importDefault(require("@testing-library/user-event"));
9
+ const _1 = require(".");
10
+ const jestHTMLDialogPolyfill_1 = require("../../utils/jestHTMLDialogPolyfill");
11
+ (0, jestHTMLDialogPolyfill_1.jestHTMLDialogPolyfill)();
12
+ const MODAL_CLASS_NAME = "mobius/Modal";
13
+ const MODAL_CLOSE_CLASS_NAME = "mobius/ModalClose";
14
+ const mockMatchMedia = (matches) => {
15
+ Object.defineProperty(window, "matchMedia", {
16
+ writable: true,
17
+ configurable: true,
18
+ value: jest.fn().mockImplementation(query => ({
19
+ matches,
20
+ media: query,
21
+ onchange: null,
22
+ addListener: jest.fn(),
23
+ removeListener: jest.fn(),
24
+ addEventListener: jest.fn(),
25
+ removeEventListener: jest.fn(),
26
+ dispatchEvent: jest.fn(),
27
+ })),
28
+ });
29
+ };
30
+ describe("Modal", () => {
31
+ beforeEach(() => {
32
+ mockMatchMedia(true);
33
+ });
34
+ afterAll(() => {
35
+ jest.resetAllMocks();
36
+ });
37
+ it("should render without errors", () => {
38
+ const { container } = (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Modal, { isOpen: true, onClose: () => { } }));
39
+ expect(container).toBeTruthy();
40
+ });
41
+ it("should render with default class names", () => {
42
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Modal, { isOpen: true, onClose: () => { }, children: (0, jsx_runtime_1.jsx)(_1.Modal.Header, {}) }));
43
+ const dialog = react_1.screen.getByRole("dialog");
44
+ const closeButton = react_1.screen.getByLabelText("Close");
45
+ expect(dialog).toHaveClass(MODAL_CLASS_NAME);
46
+ expect(closeButton).toHaveClass(MODAL_CLOSE_CLASS_NAME);
47
+ });
48
+ it("should render with custom class name", () => {
49
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Modal, { className: "my-test-modal", isOpen: true, onClose: () => { }, children: (0, jsx_runtime_1.jsx)(_1.Modal.Header, {}) }));
50
+ const dialog = react_1.screen.getByRole("dialog");
51
+ const closeButton = react_1.screen.getByLabelText("Close");
52
+ expect(dialog).toHaveClass(MODAL_CLASS_NAME);
53
+ expect(dialog).toHaveClass("my-test-modal");
54
+ expect(closeButton).toHaveClass(MODAL_CLOSE_CLASS_NAME);
55
+ });
56
+ describe("given the animation prop is set to slideUp", () => {
57
+ it("should render with appropriate class name", () => {
58
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Modal, { isOpen: true, onClose: () => { }, animation: "slideUp" }));
59
+ const dialog = react_1.screen.getByRole("dialog");
60
+ expect(dialog).toHaveClass("--slide-up");
61
+ });
62
+ });
63
+ describe("given the animation prop is set to fade", () => {
64
+ it("should render with appropriate class name", () => {
65
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Modal, { isOpen: true, onClose: () => { }, animation: "fade" }));
66
+ const dialog = react_1.screen.getByRole("dialog");
67
+ expect(dialog).toHaveClass("--fade");
68
+ });
69
+ });
70
+ describe("given the user has reduced motion preference enabled", () => {
71
+ beforeEach(() => {
72
+ mockMatchMedia(false);
73
+ });
74
+ it("renders with appropriate class name", () => {
75
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Modal, { isOpen: true, onClose: () => { } }));
76
+ const dialog = react_1.screen.getByRole("dialog");
77
+ expect(dialog).toHaveClass("--has-reduced-motion");
78
+ });
79
+ });
80
+ // TODO: Cannot test until HTML Dialog is supported in JSDom
81
+ xdescribe("closing and cancelling", () => {
82
+ beforeAll(() => {
83
+ HTMLDialogElement.prototype.show = jest.fn(function mock() {
84
+ this.open = true;
85
+ });
86
+ HTMLDialogElement.prototype.showModal = jest.fn(function mock() {
87
+ this.open = true;
88
+ });
89
+ HTMLDialogElement.prototype.close = jest.fn(function mock() {
90
+ this.open = false;
91
+ });
92
+ });
93
+ it.only("pressing close button should close the modal", async () => {
94
+ const content = (0, jsx_runtime_1.jsx)(_1.Modal.Content, { children: "Sample content" });
95
+ let modalOpen = true;
96
+ const onClose = () => {
97
+ modalOpen = false;
98
+ };
99
+ const user = user_event_1.default.setup();
100
+ (0, react_1.render)((0, jsx_runtime_1.jsxs)(_1.Modal, { isOpen: modalOpen, onClose: onClose, closeLabel: "Close Me", children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, {}), content] }));
101
+ const modal = react_1.screen.getByRole("dialog", { hidden: true });
102
+ expect(modal).toBeInTheDocument();
103
+ expect(modal.open).toBe(true);
104
+ react_1.screen.debug();
105
+ const closeButton = react_1.screen.getByRole("button");
106
+ await user.click(closeButton); // This errors because
107
+ expect(modal.open).toBe(false);
108
+ });
109
+ it("should cancel the modal", async () => {
110
+ const content = (0, jsx_runtime_1.jsx)(_1.Modal.Content, { children: "Sample content" });
111
+ const onClose = jest.fn();
112
+ (0, react_1.render)((0, jsx_runtime_1.jsxs)(_1.Modal, { isOpen: true, onClose: onClose, children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, {}), content] }));
113
+ const modalContent = react_1.screen.getByText("Sample content");
114
+ expect(modalContent).toBeInTheDocument();
115
+ await user_event_1.default.keyboard("{escape}");
116
+ expect(onClose).toHaveBeenCalled();
117
+ });
118
+ });
119
+ describe("closeLabel prop", () => {
120
+ describe("given the label is defined", () => {
121
+ it("should render the label", () => {
122
+ const closeLabel = "Leave";
123
+ (0, react_1.render)((0, jsx_runtime_1.jsxs)(_1.Modal, { isOpen: true, onClose: () => { }, closeLabel: closeLabel, children: [(0, jsx_runtime_1.jsx)(_1.Modal.Header, {}), "Sample content"] }));
124
+ const closeButton = react_1.screen.getByText(closeLabel);
125
+ expect(closeButton).toBeInTheDocument();
126
+ });
127
+ });
128
+ describe("given the label is not defined", () => {
129
+ it("should render the default close button", () => {
130
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Modal, { isOpen: true, onClose: () => { }, children: (0, jsx_runtime_1.jsx)(_1.Modal.Header, {}) }));
131
+ const closeButton = react_1.screen.getByLabelText("Close");
132
+ expect(closeButton).toBeInTheDocument();
133
+ });
134
+ });
135
+ });
136
+ });
137
+ //# sourceMappingURL=Modal.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.test.js","sourceRoot":"","sources":["../../../../src/components/Modal/Modal.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { DivElementType as ModalContentDivElementType, ContentProps as ModalContentProps } from "./Content";
2
+ import { HeaderElementType as ModalHeaderElementType, HeaderProps as ModalHeaderProps } from "./Header";
3
+ import { ModalProps } from "./Modal";
4
+ declare const Modal: {
5
+ ({ isOpen, onClose, children, className, closeLabel, isFullScreen, animation, size, appElement, preventCloseOnEsc, shouldFocusAfterRender, parentSelector, }: ModalProps): import("react/jsx-runtime").JSX.Element;
6
+ displayName: string;
7
+ } & {
8
+ Header: import("react").ForwardRefExoticComponent<Omit<ModalHeaderProps, "ref"> & import("react").RefAttributes<HTMLElement>>;
9
+ Content: import("react").ForwardRefExoticComponent<Omit<ModalContentProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
10
+ };
11
+ export { Modal };
12
+ export type { ModalContentDivElementType, ModalContentProps, ModalHeaderElementType, ModalHeaderProps, ModalProps, };
@@ -0,0 +1,35 @@
1
+ import { ChangeEvent, Ref, RefAttributes } from "react";
2
+ import { DOMProps } from "../../types/dom";
3
+ import { UseLabelProps } from "../../hooks";
4
+ import { ForwardedRefComponent } from "../../types/components";
5
+ export type NumberFieldElementType = HTMLInputElement;
6
+ export interface NumberFieldProps extends DOMProps, UseLabelProps, RefAttributes<NumberFieldElementType> {
7
+ id?: string;
8
+ /** Custom class name for setting specific CSS */
9
+ className?: string;
10
+ validationState?: "valid" | "invalid" | undefined;
11
+ /** The smallest value allowed for the input. */
12
+ minValue?: number;
13
+ /** The largest value allowed for the input. */
14
+ maxValue?: number;
15
+ /** The amount that the input value changes with each increment or decrement "tick". */
16
+ step?: number;
17
+ /** The default value (uncontrolled). */
18
+ defaultValue?: number;
19
+ /** Handler that is called when the value changes. */
20
+ onChange?: (event: ChangeEvent<NumberFieldElementType>) => void;
21
+ /** Temporary text that occupies the text input when it is empty. */
22
+ placeholder?: string;
23
+ /** Whether user input is required on the input before form submission. */
24
+ isRequired?: boolean;
25
+ /** Whether the input is disabled. */
26
+ isDisabled?: boolean;
27
+ /** Whether the input can be selected but not changed by the user. */
28
+ isReadOnly?: boolean;
29
+ /** An error message for the field. */
30
+ errorMessage?: string;
31
+ /** Identifies the element (or elements) that describes the object. */
32
+ "aria-describedby"?: string | undefined;
33
+ }
34
+ export type NumberFieldRef = Ref<NumberFieldElementType>;
35
+ export declare const NumberField: ForwardedRefComponent<NumberFieldProps, NumberFieldElementType>;
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { NumberField } from "./NumberField";
3
+ type StoryType = StoryObj<typeof NumberField>;
4
+ declare const meta: Meta<typeof NumberField>;
5
+ export declare const Normal: StoryType;
6
+ export declare const LimitedRange: StoryType;
7
+ export declare const Valid: StoryType;
8
+ export declare const Invalid: StoryType;
9
+ export declare const Disabled: StoryType;
10
+ export default meta;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Disabled = exports.Invalid = exports.Valid = exports.LimitedRange = exports.Normal = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const NumberField_1 = require("./NumberField");
6
+ const utils_1 = require("../../utils");
7
+ const meta = {
8
+ title: "Forms/NumberField",
9
+ component: NumberField_1.NumberField,
10
+ argTypes: Object.assign({ validationState: {
11
+ options: ["valid", "invalid", "neither"],
12
+ control: { type: "radio" },
13
+ mapping: {
14
+ valid: "valid",
15
+ invalid: "invalid",
16
+ neither: "",
17
+ },
18
+ }, minValue: {
19
+ control: {
20
+ control: { type: "range" },
21
+ min: 0,
22
+ max: 10,
23
+ step: 1,
24
+ },
25
+ }, maxValue: {
26
+ control: {
27
+ control: { type: "range" },
28
+ min: 0,
29
+ max: 10,
30
+ step: 1,
31
+ },
32
+ } }, (0, utils_1.excludeControls)("value")),
33
+ args: {
34
+ minValue: 0,
35
+ maxValue: 100,
36
+ placeholder: "",
37
+ isDisabled: false,
38
+ isReadOnly: false,
39
+ },
40
+ decorators: [
41
+ Story => ((0, jsx_runtime_1.jsx)(utils_1.StoryContainer, { children: (0, jsx_runtime_1.jsx)(Story, {}) })),
42
+ ],
43
+ };
44
+ exports.Normal = {
45
+ render: (args) => (0, jsx_runtime_1.jsx)(NumberField_1.NumberField, Object.assign({}, args)),
46
+ args: {
47
+ label: "Number field",
48
+ defaultValue: 0,
49
+ errorMessage: "",
50
+ step: 10,
51
+ isRequired: false,
52
+ },
53
+ };
54
+ exports.LimitedRange = {
55
+ render: (args) => (0, jsx_runtime_1.jsx)(NumberField_1.NumberField, Object.assign({}, args)),
56
+ args: {
57
+ label: "Number field",
58
+ minValue: -10,
59
+ maxValue: 10,
60
+ defaultValue: 0,
61
+ errorMessage: "",
62
+ step: 1,
63
+ isRequired: false,
64
+ },
65
+ };
66
+ exports.Valid = {
67
+ render: (args) => (0, jsx_runtime_1.jsx)(NumberField_1.NumberField, Object.assign({}, args)),
68
+ args: {
69
+ label: "Number field",
70
+ validationState: "valid",
71
+ defaultValue: 0,
72
+ errorMessage: "",
73
+ step: 1,
74
+ isRequired: false,
75
+ },
76
+ };
77
+ exports.Invalid = {
78
+ render: (args) => (0, jsx_runtime_1.jsx)(NumberField_1.NumberField, Object.assign({}, args)),
79
+ args: {
80
+ label: "Number field",
81
+ validationState: "invalid",
82
+ errorMessage: "Error message",
83
+ defaultValue: 0,
84
+ step: 1,
85
+ isRequired: false,
86
+ },
87
+ };
88
+ exports.Disabled = {
89
+ render: (args) => (0, jsx_runtime_1.jsx)(NumberField_1.NumberField, Object.assign({}, args)),
90
+ args: {
91
+ label: "Number field",
92
+ isDisabled: true,
93
+ defaultValue: 0,
94
+ errorMessage: "",
95
+ step: 1,
96
+ isRequired: false,
97
+ },
98
+ };
99
+ exports.default = meta;
100
+ //# sourceMappingURL=NumberField.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberField.stories.js","sourceRoot":"","sources":["../../../../src/components/NumberField/NumberField.stories.tsx"],"names":[],"mappings":";;;;AACA,+CAA8D;AAC9D,uCAA8D;AAI9D,MAAM,IAAI,GAA6B;IACrC,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,yBAAW;IACtB,QAAQ,kBACN,eAAe,EAAE;YACf,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;YACxC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,EAAE;aACZ;SACF,EACD,QAAQ,EAAE;YACR,OAAO,EAAE;gBACP,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC1B,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,CAAC;aACR;SACF,EACD,QAAQ,EAAE;YACR,OAAO,EAAE;gBACP,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC1B,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,CAAC;aACR;SACF,IACE,IAAA,uBAAe,EAAC,OAAO,CAAC,CAC5B;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;KAClB;IACD,UAAU,EAAE;QACV,KAAK,CAAC,EAAE,CAAC,CACP,uBAAC,sBAAc,cACb,uBAAC,KAAK,KAAG,GACM,CAClB;KACF;CACF,CAAC;AAEW,QAAA,MAAM,GAAc;IAC/B,MAAM,EAAE,CAAC,IAAsB,EAAE,EAAE,CAAC,uBAAC,yBAAW,oBAAK,IAAI,EAAI;IAC7D,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc;QACrB,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE;QAChB,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEW,QAAA,YAAY,GAAc;IACrC,MAAM,EAAE,CAAC,IAAsB,EAAE,EAAE,CAAC,uBAAC,yBAAW,oBAAK,IAAI,EAAI;IAC7D,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,CAAC,EAAE;QACb,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE;QAChB,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEW,QAAA,KAAK,GAAc;IAC9B,MAAM,EAAE,CAAC,IAAsB,EAAE,EAAE,CAAC,uBAAC,yBAAW,oBAAK,IAAI,EAAI;IAC7D,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc;QACrB,eAAe,EAAE,OAAO;QACxB,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE;QAChB,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEW,QAAA,OAAO,GAAc;IAChC,MAAM,EAAE,CAAC,IAAsB,EAAE,EAAE,CAAC,uBAAC,yBAAW,oBAAK,IAAI,EAAI;IAC7D,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc;QACrB,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,eAAe;QAC7B,YAAY,EAAE,CAAC;QACf,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEW,QAAA,QAAQ,GAAc;IACjC,MAAM,EAAE,CAAC,IAAsB,EAAE,EAAE,CAAC,uBAAC,yBAAW,oBAAK,IAAI,EAAI;IAC7D,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE;QAChB,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}