@oliasoft-open-source/react-ui-library 2.4.8 → 3.0.0

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 (320) hide show
  1. package/README.md +0 -1
  2. package/dist/global.css +21840 -0
  3. package/dist/index.js +43567 -0
  4. package/package.json +37 -55
  5. package/.eslintignore +0 -2
  6. package/.eslintrc.js +0 -125
  7. package/.gitlab-ci.yml +0 -76
  8. package/.husky/pre-commit +0 -4
  9. package/.prettierignore +0 -3
  10. package/.prettierrc +0 -4
  11. package/.storybook/main.js +0 -36
  12. package/.storybook/preview.js +0 -40
  13. package/.storybook/storybook.less +0 -8
  14. package/babel.config.js +0 -31
  15. package/index.js +0 -76
  16. package/jest.config.js +0 -9
  17. package/scripts/send-mattermost-message.sh +0 -21
  18. package/src/components/accordion/accordion.jsx +0 -132
  19. package/src/components/accordion/accordion.module.less +0 -66
  20. package/src/components/accordion/accordion.stories.jsx +0 -171
  21. package/src/components/accordion/chevron/chevron.jsx +0 -12
  22. package/src/components/accordion/chevron/chevron.module.less +0 -12
  23. package/src/components/accordion/helpers/accordion-with-default-toggle.jsx +0 -106
  24. package/src/components/accordion/helpers/accordion-with-default-toggle.module.less +0 -24
  25. package/src/components/actions/actions.jsx +0 -129
  26. package/src/components/actions/actions.module.less +0 -44
  27. package/src/components/actions/actions.shape.js +0 -32
  28. package/src/components/actions/actions.stories.jsx +0 -79
  29. package/src/components/badge/badge.jsx +0 -58
  30. package/src/components/badge/badge.module.less +0 -55
  31. package/src/components/badge/badge.stories.jsx +0 -31
  32. package/src/components/breadcrumb/breadcrumb.jsx +0 -49
  33. package/src/components/breadcrumb/breadcrumb.module.less +0 -39
  34. package/src/components/breadcrumb/breadcrumb.stories.jsx +0 -45
  35. package/src/components/breadcrumb/link.jsx +0 -31
  36. package/src/components/button/button.jsx +0 -156
  37. package/src/components/button/button.module.less +0 -300
  38. package/src/components/button/button.stories.jsx +0 -74
  39. package/src/components/button-group/button-group.jsx +0 -140
  40. package/src/components/button-group/button-group.module.less +0 -24
  41. package/src/components/button-group/button-group.stories-data.jsx +0 -67
  42. package/src/components/button-group/button-group.stories.jsx +0 -63
  43. package/src/components/buttons-and-links.stories.mdx +0 -55
  44. package/src/components/card/card.jsx +0 -51
  45. package/src/components/card/card.module.less +0 -48
  46. package/src/components/card/card.stories.jsx +0 -39
  47. package/src/components/check-box/check-box.jsx +0 -92
  48. package/src/components/check-box/check-box.module.less +0 -101
  49. package/src/components/check-box/check-box.stories.jsx +0 -27
  50. package/src/components/color/color.stories-data.jsx +0 -71
  51. package/src/components/color/color.stories.mdx +0 -37
  52. package/src/components/dialog/dialog.jsx +0 -77
  53. package/src/components/dialog/dialog.module.less +0 -76
  54. package/src/components/divider/divider.jsx +0 -40
  55. package/src/components/divider/divider.module.less +0 -28
  56. package/src/components/divider/divider.stories.jsx +0 -50
  57. package/src/components/drawer/drawer-resize-wrapper.jsx +0 -76
  58. package/src/components/drawer/drawer-tabs.jsx +0 -44
  59. package/src/components/drawer/drawer.jsx +0 -161
  60. package/src/components/drawer/drawer.module.less +0 -217
  61. package/src/components/drawer/drawer.stories.jsx +0 -296
  62. package/src/components/empty/empty.jsx +0 -52
  63. package/src/components/empty/empty.module.less +0 -17
  64. package/src/components/empty/empty.stories.jsx +0 -26
  65. package/src/components/file-input/file-input.jsx +0 -101
  66. package/src/components/file-input/file-input.module.less +0 -3
  67. package/src/components/file-input/file-input.stories.jsx +0 -109
  68. package/src/components/form/field.jsx +0 -96
  69. package/src/components/form/field.stories.jsx +0 -101
  70. package/src/components/form/form.module.less +0 -30
  71. package/src/components/form/form.stories.jsx +0 -191
  72. package/src/components/heading/heading.jsx +0 -105
  73. package/src/components/heading/heading.module.less +0 -59
  74. package/src/components/heading/heading.stories.jsx +0 -60
  75. package/src/components/icon/deprecated-icon.jsx +0 -97
  76. package/src/components/icon/icon.jsx +0 -71
  77. package/src/components/icon/icon.module.less +0 -33
  78. package/src/components/icon/icon.stories.jsx +0 -37
  79. package/src/components/icon/icons.example.module.less +0 -4
  80. package/src/components/input/input.jsx +0 -167
  81. package/src/components/input/input.module.less +0 -94
  82. package/src/components/input/input.stories.jsx +0 -28
  83. package/src/components/input-group/input-group-addon/input-group-addon.jsx +0 -36
  84. package/src/components/input-group/input-group-addon/input-group-addon.module.less +0 -31
  85. package/src/components/input-group/input-group.jsx +0 -51
  86. package/src/components/input-group/input-group.module.less +0 -10
  87. package/src/components/input-group/input-group.stories.jsx +0 -77
  88. package/src/components/input-validation.stories.mdx +0 -61
  89. package/src/components/inputs.stories.mdx +0 -201
  90. package/src/components/label/label.jsx +0 -115
  91. package/src/components/label/label.module.less +0 -43
  92. package/src/components/label/label.stories.jsx +0 -60
  93. package/src/components/layout/column/column.jsx +0 -85
  94. package/src/components/layout/column/styles.js +0 -45
  95. package/src/components/layout/column.stories.jsx +0 -60
  96. package/src/components/layout/examples/afe.stories.jsx +0 -180
  97. package/src/components/layout/examples/blowout.stories.jsx +0 -68
  98. package/src/components/layout/examples/casing-loads.stories.jsx +0 -297
  99. package/src/components/layout/examples/formation.stories.jsx +0 -110
  100. package/src/components/layout/examples/projects.stories.jsx +0 -108
  101. package/src/components/layout/examples/reservoirs.stories.jsx +0 -211
  102. package/src/components/layout/examples/site.stories.jsx +0 -263
  103. package/src/components/layout/flex/flex.jsx +0 -48
  104. package/src/components/layout/flex/flex.stories.jsx +0 -59
  105. package/src/components/layout/form-row/form-row.jsx +0 -15
  106. package/src/components/layout/form-row/form-row.module.less +0 -11
  107. package/src/components/layout/grid/grid.jsx +0 -62
  108. package/src/components/layout/grid/grid.stories.jsx +0 -67
  109. package/src/components/layout/page/page.jsx +0 -42
  110. package/src/components/layout/page/page.module.less +0 -27
  111. package/src/components/layout/page.stories.jsx +0 -93
  112. package/src/components/layout/placeholder.jsx +0 -2
  113. package/src/components/layout/print-header/print-header.jsx +0 -22
  114. package/src/components/layout/print-header/print-header.module.less +0 -9
  115. package/src/components/layout/row/row.jsx +0 -75
  116. package/src/components/layout/row/row.module.less +0 -7
  117. package/src/components/layout/spacer/spacer.jsx +0 -26
  118. package/src/components/layout/spacer/spacer.stories.jsx +0 -50
  119. package/src/components/layout-forms.stories.mdx +0 -104
  120. package/src/components/layout-general.stories.mdx +0 -215
  121. package/src/components/list/list-row/item-content.jsx +0 -15
  122. package/src/components/list/list-row/label.jsx +0 -11
  123. package/src/components/list/list-row/list-heading.jsx +0 -52
  124. package/src/components/list/list-row/list-row.jsx +0 -128
  125. package/src/components/list/list-row/list-subheading.jsx +0 -72
  126. package/src/components/list/list-row/meta-content.jsx +0 -24
  127. package/src/components/list/list-row/meta-count.jsx +0 -10
  128. package/src/components/list/list-row/name.jsx +0 -45
  129. package/src/components/list/list.jsx +0 -276
  130. package/src/components/list/list.module.less +0 -256
  131. package/src/components/list/list.stories-data.jsx +0 -287
  132. package/src/components/list/list.stories.jsx +0 -458
  133. package/src/components/list/toggle-narrow.jsx +0 -13
  134. package/src/components/loader/loader.jsx +0 -63
  135. package/src/components/loader/loader.module.less +0 -63
  136. package/src/components/loader/loader.stories.jsx +0 -155
  137. package/src/components/menu/index.js +0 -7
  138. package/src/components/menu/layer/divider.jsx +0 -4
  139. package/src/components/menu/layer/heading.jsx +0 -15
  140. package/src/components/menu/layer/layer.jsx +0 -82
  141. package/src/components/menu/layer/option.jsx +0 -77
  142. package/src/components/menu/layer/path.js +0 -44
  143. package/src/components/menu/layer/placementOptions.js +0 -6
  144. package/src/components/menu/layer/section.jsx +0 -66
  145. package/src/components/menu/menu.jsx +0 -359
  146. package/src/components/menu/menu.module.less +0 -241
  147. package/src/components/menu/menu.stories-data.jsx +0 -168
  148. package/src/components/menu/menu.stories.jsx +0 -126
  149. package/src/components/menu/menu.test.js +0 -58
  150. package/src/components/menu/trigger/button.jsx +0 -50
  151. package/src/components/menu/trigger/component.jsx +0 -14
  152. package/src/components/menu/trigger/text.jsx +0 -25
  153. package/src/components/menu/trigger/trigger.jsx +0 -86
  154. package/src/components/message/dismiss.jsx +0 -26
  155. package/src/components/message/message.jsx +0 -137
  156. package/src/components/message/message.module.less +0 -114
  157. package/src/components/message/message.stories.jsx +0 -84
  158. package/src/components/modal/modal.jsx +0 -50
  159. package/src/components/modal/modal.module.less +0 -39
  160. package/src/components/modal/modal.stories.jsx +0 -162
  161. package/src/components/option-dropdown/heading.jsx +0 -6
  162. package/src/components/option-dropdown/layer.jsx +0 -81
  163. package/src/components/option-dropdown/option-dropdown.jsx +0 -53
  164. package/src/components/option-dropdown/option-dropdown.module.less +0 -50
  165. package/src/components/option-dropdown/option-dropdown.stories.jsx +0 -35
  166. package/src/components/option-dropdown/option.jsx +0 -13
  167. package/src/components/pagination/pagination.jsx +0 -139
  168. package/src/components/pagination/pagination.module.less +0 -11
  169. package/src/components/pagination/pagination.stories.jsx +0 -78
  170. package/src/components/pagination/pagination.test.js +0 -92
  171. package/src/components/pagination/pagination.viewdata.js +0 -66
  172. package/src/components/pop-confirm/content.jsx +0 -25
  173. package/src/components/pop-confirm/pop-confirm.jsx +0 -61
  174. package/src/components/pop-confirm/pop-confirm.module.less +0 -18
  175. package/src/components/pop-confirm/pop-confirm.stories.jsx +0 -53
  176. package/src/components/popover/popover.jsx +0 -112
  177. package/src/components/popover/popover.module.less +0 -22
  178. package/src/components/popover/popover.stories.jsx +0 -59
  179. package/src/components/portal/portal.jsx +0 -16
  180. package/src/components/portal/portal.stories.jsx +0 -69
  181. package/src/components/progress-bar/progress-bar.jsx +0 -64
  182. package/src/components/progress-bar/progress-bar.module.less +0 -64
  183. package/src/components/progress-bar/progress-bar.stories.jsx +0 -23
  184. package/src/components/radio-button/radio-button.jsx +0 -139
  185. package/src/components/radio-button/radio-button.module.less +0 -135
  186. package/src/components/radio-button/radio-button.stories.jsx +0 -37
  187. package/src/components/radio-button/radio-input.jsx +0 -52
  188. package/src/components/select/custom-select/custom-select.jsx +0 -440
  189. package/src/components/select/custom-select/custom-select.module.less +0 -123
  190. package/src/components/select/custom-select/custom-select.reducer.js +0 -157
  191. package/src/components/select/custom-select/layer/heading.jsx +0 -13
  192. package/src/components/select/custom-select/layer/layer.jsx +0 -73
  193. package/src/components/select/custom-select/layer/option.jsx +0 -54
  194. package/src/components/select/custom-select/layer/placementOptions.js +0 -7
  195. package/src/components/select/custom-select/layer/section.jsx +0 -35
  196. package/src/components/select/custom-select/trigger/input.jsx +0 -100
  197. package/src/components/select/custom-select/trigger/trigger.jsx +0 -155
  198. package/src/components/select/custom-select/trigger/trigger.module.less +0 -289
  199. package/src/components/select/native-select/native-select.jsx +0 -198
  200. package/src/components/select/native-select/native-select.module.less +0 -107
  201. package/src/components/select/select.input.js +0 -146
  202. package/src/components/select/select.jsx +0 -207
  203. package/src/components/select/select.stories-data.jsx +0 -92
  204. package/src/components/select/select.stories.jsx +0 -135
  205. package/src/components/select/select.test.js +0 -519
  206. package/src/components/side-bar/container.module.less +0 -29
  207. package/src/components/side-bar/link.jsx +0 -83
  208. package/src/components/side-bar/sections.jsx +0 -23
  209. package/src/components/side-bar/side-bar.jsx +0 -102
  210. package/src/components/side-bar/side-bar.module.less +0 -137
  211. package/src/components/side-bar/side-bar.stories.jsx +0 -101
  212. package/src/components/slider/rc-slider.less +0 -47
  213. package/src/components/slider/slider-tooltip.jsx +0 -20
  214. package/src/components/slider/slider.jsx +0 -233
  215. package/src/components/slider/slider.module.less +0 -40
  216. package/src/components/slider/slider.stories.jsx +0 -110
  217. package/src/components/spinner/spinner.jsx +0 -37
  218. package/src/components/spinner/spinner.module.less +0 -115
  219. package/src/components/spinner/spinner.stories.jsx +0 -24
  220. package/src/components/table/cell/cell.jsx +0 -621
  221. package/src/components/table/cell/cell.module.less +0 -164
  222. package/src/components/table/footer/footer.jsx +0 -66
  223. package/src/components/table/footer/footer.module.less +0 -14
  224. package/src/components/table/helper.js +0 -64
  225. package/src/components/table/helper.test.js +0 -166
  226. package/src/components/table/icon/icon.module.less +0 -31
  227. package/src/components/table/row/expanded-content-row.jsx +0 -16
  228. package/src/components/table/row/row.jsx +0 -253
  229. package/src/components/table/row/row.module.less +0 -62
  230. package/src/components/table/table-scroll-wrapper.jsx +0 -49
  231. package/src/components/table/table.jsx +0 -234
  232. package/src/components/table/table.module.less +0 -146
  233. package/src/components/table/table.stories-data.jsx +0 -875
  234. package/src/components/table/table.stories.jsx +0 -759
  235. package/src/components/table/table.test.js +0 -30
  236. package/src/components/table/table.variables.less +0 -11
  237. package/src/components/table/table.viewdata.js +0 -26
  238. package/src/components/table/title/title.jsx +0 -30
  239. package/src/components/table/title/title.module.less +0 -11
  240. package/src/components/tabs/content.jsx +0 -14
  241. package/src/components/tabs/label.jsx +0 -50
  242. package/src/components/tabs/tabs.jsx +0 -191
  243. package/src/components/tabs/tabs.module.less +0 -73
  244. package/src/components/tabs/tabs.stories.jsx +0 -110
  245. package/src/components/text/text.jsx +0 -64
  246. package/src/components/text/text.module.less +0 -45
  247. package/src/components/text/text.stories.jsx +0 -31
  248. package/src/components/text-link/text-link.jsx +0 -23
  249. package/src/components/text-link/text-link.stories.jsx +0 -20
  250. package/src/components/textarea/textarea.jsx +0 -126
  251. package/src/components/textarea/textarea.module.less +0 -55
  252. package/src/components/textarea/textarea.stories.jsx +0 -26
  253. package/src/components/toaster/toaster.jsx +0 -39
  254. package/src/components/toaster/toaster.less +0 -17
  255. package/src/components/toaster/toaster.stories.jsx +0 -116
  256. package/src/components/toggle/toggle.jsx +0 -65
  257. package/src/components/toggle/toggle.module.less +0 -139
  258. package/src/components/toggle/toggle.stories.jsx +0 -26
  259. package/src/components/tooltip/tooltip-layer.jsx +0 -72
  260. package/src/components/tooltip/tooltip.jsx +0 -108
  261. package/src/components/tooltip/tooltip.module.less +0 -28
  262. package/src/components/tooltip/tooltip.stories.jsx +0 -71
  263. package/src/components/top-bar/element/element.jsx +0 -72
  264. package/src/components/top-bar/element/link.jsx +0 -29
  265. package/src/components/top-bar/title.jsx +0 -24
  266. package/src/components/top-bar/top-bar.jsx +0 -79
  267. package/src/components/top-bar/top-bar.module.less +0 -190
  268. package/src/components/top-bar/top-bar.stories.jsx +0 -137
  269. package/src/components/top-bar/warning.jsx +0 -6
  270. package/src/components/tree/tree-item.jsx +0 -79
  271. package/src/components/tree/tree-placeholder.jsx +0 -6
  272. package/src/components/tree/tree.jsx +0 -129
  273. package/src/components/tree/tree.module.less +0 -33
  274. package/src/components/tree/tree.stories-data.jsx +0 -89
  275. package/src/components/tree/tree.stories.jsx +0 -106
  276. package/src/docs/components/page/page.jsx +0 -16
  277. package/src/docs/config/config.js +0 -1
  278. package/src/docs/html/favicon.png +0 -0
  279. package/src/docs/html/index.html +0 -11
  280. package/src/docs/navigation/footer/footer.jsx +0 -48
  281. package/src/docs/navigation/header/header.jsx +0 -39
  282. package/src/docs/navigation/header/header.module.less +0 -32
  283. package/src/docs/navigation/routes/routes.jsx +0 -16
  284. package/src/docs/start.jsx +0 -12
  285. package/src/docs/views/main/main.jsx +0 -209
  286. package/src/docs/views/main/main.module.less +0 -14
  287. package/src/docs/views/not-found/not-found.jsx +0 -5
  288. package/src/helpers/disabled-context.js +0 -8
  289. package/src/helpers/styles.js +0 -68
  290. package/src/helpers/text.js +0 -6
  291. package/src/helpers/types.js +0 -5
  292. package/src/hooks/index.js +0 -3
  293. package/src/hooks/use-focus.js +0 -11
  294. package/src/hooks/use-keyboard-event.js +0 -16
  295. package/src/hooks/use-window-width.js +0 -20
  296. package/src/images/icons/icon-drop.png +0 -0
  297. package/src/images/icons/icon-share.png +0 -0
  298. package/src/images/icons/icons8-junction.svg +0 -4
  299. package/src/images/logo.png +0 -0
  300. package/src/images/logo.svg +0 -13
  301. package/src/images/oliasoft-logo.svg +0 -1
  302. package/src/style/colors.less +0 -26
  303. package/src/style/external.less +0 -10
  304. package/src/style/fonts/lato/Lato-Bold.woff2 +0 -0
  305. package/src/style/fonts/lato/Lato-BoldItalic.woff2 +0 -0
  306. package/src/style/fonts/lato/Lato-Italic.woff2 +0 -0
  307. package/src/style/fonts/lato/Lato-Regular.woff2 +0 -0
  308. package/src/style/fonts.less +0 -27
  309. package/src/style/global.less +0 -51
  310. package/src/style/mixins.less +0 -68
  311. package/src/style/reset/reset.less +0 -34
  312. package/src/style/shared.less +0 -25
  313. package/src/style/theme.dark.less +0 -37
  314. package/src/style/theme.default.less +0 -74
  315. package/src/style/variables.less +0 -49
  316. package/webpack/webpack.common.js +0 -39
  317. package/webpack/webpack.common.rules.js +0 -102
  318. package/webpack/webpack.dev.js +0 -22
  319. package/webpack/webpack.prod.js +0 -23
  320. package/webpack/webpack.resolve.js +0 -22
@@ -1,201 +0,0 @@
1
- import { Canvas, Meta, Story } from '@storybook/addon-docs';
2
- import {
3
- Input,
4
- Button,
5
- CheckBox,
6
- Toggle,
7
- TextArea,
8
- Select,
9
- RadioButton,
10
- Slider,
11
- FileInput,
12
- FormRow,
13
- OptionDropdown,
14
- } from '../..';
15
-
16
- <Meta title="Inputs" />
17
-
18
- # Inputs
19
-
20
- React UI Library provides a comprehensive set of user input components.
21
-
22
- ## Button
23
-
24
- Use buttons when users need to invoke actions.
25
-
26
- <Canvas>
27
- <FormRow>
28
- <Button label="Save" colored />
29
- <Button label="Cancel" />
30
- </FormRow>
31
- </Canvas>
32
-
33
- **Guidelines**
34
-
35
- - only the primary button on a page or view should normally be colored
36
- - all other buttons should use the default style (try to limit using different variants and colors of buttons)
37
- - for serious actions (e.g. permanently deleting records), use a red button
38
-
39
- ## Input
40
-
41
- Use an `Input` when users need to enter or edit single-line values.
42
-
43
- <Canvas>
44
- <FormRow>
45
- <Input width="200px" />
46
- </FormRow>
47
- </Canvas>
48
-
49
- ### Number Input
50
-
51
- <Canvas>
52
- <FormRow>
53
- <Input width="200px" type="number" value={3} />
54
- </FormRow>
55
- </Canvas>
56
-
57
- ### Date Input
58
-
59
- <Canvas>
60
- <FormRow>
61
- <Input width="200px" value="2020-05-22" type="date" />
62
- </FormRow>
63
- </Canvas>
64
-
65
- ## TextArea
66
-
67
- Use a `TextArea` when users need to enter or edit multiline text.
68
-
69
- <Canvas>
70
- <FormRow>
71
- <TextArea />
72
- </FormRow>
73
- </Canvas>
74
-
75
- ## Select
76
-
77
- Use a `Select` component when users need to choose from one or more values from a longer list of options (> 6 options).
78
-
79
- React UI Library provides two different `Select` components, through one unified interface.
80
-
81
- ### Native Select
82
-
83
- Native `Select` is a styled native browser [select input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).
84
- You enable it via the `native` prop. It's most useful for simple situations. Its advantages come from the browser
85
- handling dropdown positioning, performance, and accessibility. Its drawbacks are limited features and styling
86
- possibilities. A native `Select` looks like this:
87
-
88
- <Canvas>
89
- <FormRow>
90
- <Select native options={['Rare', 'Medium', 'Well Done']} value="Medium" />
91
- </FormRow>
92
- </Canvas>
93
-
94
- ### Custom Select
95
-
96
- Custom `Select` is a full implementation of a select component as a custom React component. It covers many additional
97
- features not offered by native select inputs, such as filtering and multi-select. Its drawbacks are that positioning and
98
- accessibility are not handled out-the-box by the browser, requiring custom code internally within the component. The
99
- custom `Select` in GUI Library uses [react-laag](https://www.react-laag.com/) as a positioning engine.
100
-
101
- <Canvas>
102
- <FormRow>
103
- <Select
104
- width="auto"
105
- options={['Rare', 'Medium', 'Well Done']}
106
- value="Medium"
107
- />
108
- <Select
109
- width="300px"
110
- options={['Onions', 'Olives', 'Mushrooms', 'Ham']}
111
- value={['Olives', 'Mushrooms']}
112
- />
113
- </FormRow>
114
- </Canvas>
115
-
116
- ## RadioButton
117
-
118
- Use a `RadioButton` group when users need to choose a single value from a short list of options (< 6 options). They are
119
- suitable for related but mutually exclusive choices.
120
-
121
- <Canvas>
122
- <RadioButton
123
- options={[
124
- { label: 'Delivery', value: 'delivery' },
125
- { label: 'Collection', value: 'collection' },
126
- ]}
127
- value={{ label: 'Collection', value: 'collection' }}
128
- inline
129
- />
130
- </Canvas>
131
-
132
- ## CheckBox
133
-
134
- Use a `CheckBox` when users need to select between opposite states (switching a binary value on or off). A CheckBox
135
- should have a label prop which makes the opposite states clear.
136
-
137
- <Canvas>
138
- <CheckBox checked label="I agree" />
139
- </Canvas>
140
-
141
- You can also use a group of checkboxes when users need to select multiple values from a short list of options
142
- (< 6 options).
143
-
144
- <Canvas>
145
- <FormRow>
146
- <CheckBox checked label="Breakfast" />
147
- <CheckBox checked label="Lunch" />
148
- <CheckBox checked label="Dinner" />
149
- </FormRow>
150
- </Canvas>
151
-
152
- ## OptionDropdown
153
-
154
- For a larger number of `CheckBox` options and where space is limited, there's a convenience component called `OptionDropdown`,
155
- which allows selecting a multiple values, by presenting them in a dropdown, with an easy way to select all or clear.
156
-
157
- <Canvas>
158
- <OptionDropdown
159
- label="Meals"
160
- options={[
161
- { label: 'Breakfast', value: 'breakfast' },
162
- { label: 'Lunch', value: 'lunch' },
163
- { label: 'Dinner', value: 'dinner', selected: true },
164
- ]}
165
- onChange={() => {}}
166
- />
167
- </Canvas>
168
-
169
- ## Toggle
170
-
171
- A `Toggle` is just an alternative variant to a `CheckBox` and has the same use-case (switching a binary value on or off).
172
-
173
- <Canvas>
174
- <Toggle checked label="Express mode" onChange={() => {}} />
175
- </Canvas>
176
-
177
- ## Slider
178
-
179
- A `Slider` helps a user to select a numerical value between two endpoints. It can be more convenient than typing values,
180
- particularly on touch devices.
181
-
182
- A `Slider` can also be used to set a range of values (start and end points).
183
-
184
- <Canvas>
185
- <Slider
186
- value={30}
187
- min={0}
188
- max={100}
189
- step={1}
190
- width="200px"
191
- onChange={() => {}}
192
- />
193
- </Canvas>
194
-
195
- ## File Input
196
-
197
- Use a `FileInput` when a user needs to upload a file. The `accept` prop allows you to restrict the accepted file types.
198
-
199
- <Canvas>
200
- <FileInput accept=".json" width="200px" />
201
- </Canvas>
@@ -1,115 +0,0 @@
1
- import React from 'react';
2
- import cx from 'classnames';
3
- import PropTypes from 'prop-types';
4
- import { FaQuestionCircle, FaInfoCircle, FaBook } from 'react-icons/fa';
5
- import { HiLockClosed, HiLockOpen } from 'react-icons/hi';
6
- import { Tooltip } from '../tooltip/tooltip';
7
- import { IconWrapper } from '../heading/heading';
8
- import styles from './label.module.less';
9
-
10
- export const Label = ({
11
- label,
12
- width,
13
- helpText,
14
- helpTextMaxWidth,
15
- onClickHelp,
16
- lock,
17
- info,
18
- libraryIcon,
19
- labelLeft,
20
- }) => {
21
- return (
22
- <div className={cx(styles.label, labelLeft ? styles.labelLeft : '')}>
23
- <label style={{ width: width || '' }}>
24
- {label}
25
- <div className={styles.icons}>
26
- {helpText && !onClickHelp ? (
27
- <Tooltip text={helpText} maxWidth={helpTextMaxWidth}>
28
- <FaQuestionCircle className={styles.icon} />
29
- </Tooltip>
30
- ) : (
31
- onClickHelp && (
32
- <IconWrapper
33
- onClick={onClickHelp}
34
- icon={<FaQuestionCircle />}
35
- isHelp
36
- />
37
- )
38
- )}
39
- {info && (
40
- <Tooltip text={info}>
41
- <FaInfoCircle className={styles.icon} />
42
- </Tooltip>
43
- )}
44
- {lock && lock.visible && lock.onClick && (
45
- <Tooltip text={lock?.tooltip ?? ''}>
46
- <IconWrapper
47
- onClick={lock.onClick}
48
- isLock
49
- icon={lock.active ? <HiLockClosed /> : <HiLockOpen />}
50
- isFaint={!lock.active}
51
- testId={lock.testId}
52
- />
53
- </Tooltip>
54
- )}
55
- {libraryIcon && (
56
- <Tooltip text={libraryIcon?.tooltip ?? ''}>
57
- <IconWrapper onClick={libraryIcon.onClick} icon={<FaBook />} />
58
- </Tooltip>
59
- )}
60
- </div>
61
- </label>
62
- </div>
63
- );
64
- };
65
-
66
- Label.defaultProps = {
67
- label: null,
68
- helpText: null,
69
- helpTextMaxWidth: '300px',
70
- width: 'auto',
71
- info: null,
72
- onClickHelp: null,
73
- lock: {
74
- visible: false,
75
- active: false,
76
- onClick: () => {},
77
- tooltip: '',
78
- testId: undefined,
79
- },
80
- libraryIcon: null,
81
- labelLeft: false,
82
- };
83
-
84
- Label.propTypes = {
85
- label: PropTypes.oneOfType([
86
- PropTypes.string,
87
- PropTypes.number,
88
- PropTypes.node,
89
- ]),
90
- /** Adds a help icon with a tooltip */
91
- helpText: PropTypes.oneOfType([
92
- PropTypes.string,
93
- PropTypes.number,
94
- PropTypes.node,
95
- ]),
96
- helpTextMaxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), //'none' to disable
97
- width: PropTypes.string,
98
- /** Adds an info icon with an optional tooltip and onClick event */
99
- info: PropTypes.string,
100
- onClickHelp: PropTypes.func,
101
- /** Adds a lock icon with a tooltip */
102
- lock: PropTypes.shape({
103
- visible: PropTypes.bool,
104
- active: PropTypes.bool,
105
- onClick: PropTypes.func,
106
- tooltip: PropTypes.string,
107
- testId: PropTypes.string,
108
- }),
109
- /** Adds a library icon with a tooltip and onClick event */
110
- libraryIcon: PropTypes.shape({
111
- onClick: PropTypes.func,
112
- tooltip: PropTypes.string,
113
- }),
114
- labelLeft: PropTypes.bool,
115
- };
@@ -1,43 +0,0 @@
1
- @import '../../style/variables.less';
2
-
3
- .label {
4
- display: flex;
5
- align-items: center;
6
-
7
- &.labelLeft {
8
- margin-bottom: 0;
9
- flex-shrink: 0;
10
- padding-right: 10px;
11
-
12
- > label {
13
- margin-bottom: 0;
14
- }
15
- }
16
-
17
- .icons {
18
- display: inline-flex;
19
-
20
- > * {
21
- margin-left: 8px;
22
- }
23
- }
24
-
25
- .icon {
26
- margin-left: auto;
27
- color: var(--color-text-faint);
28
- line-height: 0;
29
- font-size: 13px;
30
- }
31
-
32
- > label {
33
- display: flex;
34
- align-items: center;
35
- font-weight: bold;
36
- font-size: 13px;
37
- margin-bottom: 5px;
38
-
39
- span {
40
- line-height: 0; // Strip whitespace from icon
41
- }
42
- }
43
- }
@@ -1,60 +0,0 @@
1
- import { useState } from '@storybook/addons';
2
- import React from 'react';
3
- import { Label } from '../../..';
4
-
5
- export default {
6
- title: 'Forms/Label',
7
- component: Label,
8
- args: {
9
- label: 'Label',
10
- },
11
- };
12
-
13
- const Template = (args) => (
14
- <Label
15
- // eslint-disable-next-line react/jsx-props-no-spreading
16
- {...args}
17
- />
18
- );
19
-
20
- export const Default = Template.bind({});
21
-
22
- export const HelpIconTooltip = Template.bind({});
23
- HelpIconTooltip.args = {
24
- helpText: 'Tooltip goes here',
25
- };
26
-
27
- export const HelpIconClickable = Template.bind({});
28
- HelpIconClickable.args = {
29
- onClickHelp: () => {},
30
- };
31
-
32
- export const InfoIcon = Template.bind({});
33
- InfoIcon.args = {
34
- info: 'Info goes here',
35
- };
36
-
37
- export const LockIcon = () => {
38
- const [locked, setLocked] = useState(false);
39
- const handleToggleLock = () => setLocked(!locked);
40
- return (
41
- <Label
42
- label="Label"
43
- lock={{
44
- visible: true,
45
- active: locked,
46
- onClick: handleToggleLock,
47
- tooltip: locked ? 'Unlock' : 'Lock',
48
- testId: 'testId',
49
- }}
50
- />
51
- );
52
- };
53
-
54
- export const LibraryIcon = Template.bind({});
55
- LibraryIcon.args = {
56
- libraryIcon: {
57
- onClick: () => {},
58
- tooltip: 'View in library',
59
- },
60
- };
@@ -1,85 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { StyledColumn } from './styles.js';
4
-
5
- export const Column = ({
6
- background,
7
- borderLeft,
8
- borderRight,
9
- children,
10
- flex,
11
- flexbox,
12
- padding,
13
- scroll,
14
- showScrollbar,
15
- spacing,
16
- width,
17
- widthMobile,
18
- widthTablet,
19
- testId,
20
- }) => {
21
- const getWidthString = (w) => {
22
- return typeof w === 'string'
23
- ? w
24
- : typeof w === 'number'
25
- ? `${w}px`
26
- : undefined;
27
- };
28
-
29
- return (
30
- <StyledColumn
31
- background={background}
32
- borderLeft={borderLeft}
33
- borderRight={borderRight}
34
- flex={flex}
35
- flexbox={flexbox}
36
- padding={padding}
37
- scroll={scroll}
38
- showScrollbar={showScrollbar}
39
- spacing={spacing}
40
- width={getWidthString(width)}
41
- widthTablet={getWidthString(widthTablet)}
42
- widthMobile={getWidthString(widthMobile)}
43
- >
44
- <div className="inner" data-testid={testId}>
45
- {children}
46
- </div>
47
- </StyledColumn>
48
- );
49
- };
50
-
51
- Column.defaultProps = {
52
- background: 'transparent',
53
- borderLeft: null,
54
- borderRight: null,
55
- children: null,
56
- flex: true,
57
- flexbox: false,
58
- padding: false,
59
- scroll: false,
60
- showScrollbar: true,
61
- spacing: 20,
62
- width: null,
63
- widthMobile: null,
64
- widthTablet: null,
65
- testId: '',
66
- };
67
-
68
- Column.propTypes = {
69
- background: PropTypes.string,
70
- borderLeft: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
71
- borderRight: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
72
- children: PropTypes.node,
73
- /** Fill available `Row` width */
74
- flex: PropTypes.bool,
75
- /** Give `Column` children flexbox layout */
76
- flexbox: PropTypes.bool,
77
- padding: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
78
- scroll: PropTypes.bool,
79
- showScrollbar: PropTypes.bool,
80
- spacing: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
81
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
82
- widthMobile: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
83
- widthTablet: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
84
- testId: PropTypes.string,
85
- };
@@ -1,45 +0,0 @@
1
- import styled, { css } from 'styled-components';
2
-
3
- const noScrollbars = css`
4
- scrollbar-width: none;
5
- -ms-overflow-style: none;
6
- &::-webkit-scrollbar {
7
- display: none;
8
- }
9
- `;
10
-
11
- export const StyledColumn = styled.div`
12
- position: relative; //for react-laag
13
- display: flex;
14
- flex-direction: column;
15
- min-width: 0;
16
- flex-basis: ${(p) => p.width || 'auto'};
17
- flex-grow: ${(p) => (!p.width && p.flex ? '1' : '0')};
18
- flex-shrink: ${(p) => (p.width || !p.flex ? '0' : '1')};
19
- overflow: ${(p) => (p.scroll ? 'auto' : 'initial')};
20
- background: ${(p) => p.background};
21
- border-left: ${(p) =>
22
- p.borderLeft === true ? '1px solid var(--color-border)' : p.borderLeft};
23
- border-right: ${(p) =>
24
- p.borderRight === true ? '1px solid var(--color-border)' : p.borderRight};
25
- padding: ${(p) => (p.spacing ? `0 ${p.spacing / 2}px` : '0')};
26
- ${(p) => !p.showScrollbar && noScrollbars}
27
-
28
- @media (max-width: 992px) {
29
- ${(p) => p.widthTablet && `flex-basis: ${p.widthTablet};`}
30
- }
31
-
32
- @media (max-width: 575px) {
33
- ${(p) => p.widthMobile && `flex-basis: ${p.widthMobile};`}
34
- }
35
-
36
- > .inner {
37
- flex-basis: 100%;
38
- position: relative;
39
- z-index: 0;
40
- min-height: 0;
41
- display: ${(p) => (p.flexbox && !p.scroll ? 'flex' : 'block')};
42
- ${(p) => p.flexbox && `flex-direction: column;`}
43
- padding: ${(p) => (p.padding === true ? '16px 20px' : p.padding)};
44
- }
45
- `;
@@ -1,60 +0,0 @@
1
- import React from 'react';
2
- import { Column, Row, Heading } from '../../..';
3
-
4
- export default {
5
- title: 'Layout/Columns & Rows',
6
- component: Column,
7
- parameters: {
8
- layout: 'fullscreen',
9
- },
10
- args: {
11
- width: '400px',
12
- padding: '20px',
13
- borderRight: true,
14
- },
15
- argTypes: {
16
- width: { control: { type: 'text' } },
17
- padding: { control: { type: 'text' } },
18
- borderLeft: { control: { type: 'boolean' } },
19
- borderRight: { control: { type: 'boolean' } },
20
- },
21
- };
22
-
23
- const Template = (args) => {
24
- const { height, wrap, ...columnArgs } = args;
25
- return (
26
- <Row spacing={0} height={height} wrap={wrap}>
27
- <Column
28
- // eslint-disable-next-line react/jsx-props-no-spreading
29
- {...columnArgs}
30
- >
31
- <Heading top>Column</Heading>
32
- {'Example content goes here lorem ipsum. '.repeat(20)}
33
- </Column>
34
- <Column padding="20px" background="var(--color-background)" />
35
- </Row>
36
- );
37
- };
38
-
39
- export const Default = Template.bind({});
40
-
41
- export const Scroll = Template.bind({});
42
- Scroll.args = {
43
- scroll: true,
44
- height: '200px',
45
- };
46
-
47
- export const HideScrollbar = Template.bind({});
48
- HideScrollbar.args = {
49
- scroll: true,
50
- showScrollbar: false,
51
- height: '200px',
52
- };
53
-
54
- export const ResponsiveWidth = Template.bind({});
55
- ResponsiveWidth.args = {
56
- wrap: true,
57
- widthTablet: '50%',
58
- widthMobile: '100%',
59
- borderRight: false,
60
- };