@react-ui-org/react-ui 0.52.0 → 0.53.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. package/CODEOWNERS +23 -0
  2. package/README.md +10 -7
  3. package/dist/react-ui.css +42 -0
  4. package/dist/react-ui.js +1 -0
  5. package/package.json +64 -77
  6. package/src/{lib/components → components}/Alert/Alert.jsx +1 -1
  7. package/src/{lib/components/Alert/README.mdx → components/Alert/README.md} +84 -100
  8. package/src/{lib/components → components}/Badge/Badge.jsx +1 -1
  9. package/src/{lib/components → components}/Badge/Badge.scss +1 -1
  10. package/src/components/Badge/README.md +103 -0
  11. package/src/{lib/components → components}/Button/Button.jsx +1 -1
  12. package/src/components/Button/README.md +580 -0
  13. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.jsx +11 -9
  14. package/src/{lib/components/ButtonGroup/README.mdx → components/ButtonGroup/README.md} +128 -134
  15. package/src/{lib/components → components}/Card/Card.jsx +1 -1
  16. package/src/components/Card/README.md +314 -0
  17. package/src/{lib/components/CheckboxField/README.mdx → components/CheckboxField/README.md} +96 -108
  18. package/src/{lib/components/FileInputField/README.mdx → components/FileInputField/README.md} +83 -95
  19. package/src/{lib/components → components}/FormLayout/FormLayout.jsx +4 -4
  20. package/src/components/FormLayout/README.md +462 -0
  21. package/src/{lib/components → components}/Grid/Grid.jsx +2 -2
  22. package/src/components/Grid/README.md +281 -0
  23. package/src/{lib/components → components}/InputGroup/InputGroup.jsx +20 -19
  24. package/src/{lib/components → components}/InputGroup/InputGroup.scss +1 -6
  25. package/src/{lib/components/InputGroup/README.mdx → components/InputGroup/README.md} +145 -163
  26. package/src/{lib/components → components}/Modal/Modal.jsx +6 -6
  27. package/src/components/Modal/README.md +1090 -0
  28. package/src/components/Modal/_hooks/useModalScrollPrevention.js +37 -0
  29. package/src/{lib/components/Paper/README.mdx → components/Paper/README.md} +18 -30
  30. package/src/{lib/components/Popover/README.mdx → components/Popover/README.md} +102 -132
  31. package/src/{lib/components/Radio/README.mdx → components/Radio/README.md} +122 -134
  32. package/src/{lib/components → components}/Radio/Radio.jsx +11 -12
  33. package/src/{lib/components → components}/Radio/Radio.scss +1 -6
  34. package/src/components/ScrollView/README.md +503 -0
  35. package/src/{lib/components → components}/ScrollView/ScrollView.jsx +12 -3
  36. package/src/components/SelectField/README.md +681 -0
  37. package/src/components/Table/README.md +259 -0
  38. package/src/{lib/components → components}/Table/Table.jsx +4 -1
  39. package/src/{lib/components → components}/Table/_components/TableHeaderCell/TableHeaderCell.jsx +1 -1
  40. package/src/{lib/components/Tabs/README.mdx → components/Tabs/README.md} +117 -134
  41. package/src/{lib/components → components}/Tabs/TabsItem.jsx +3 -3
  42. package/src/components/Text/README.md +220 -0
  43. package/src/components/TextArea/README.md +359 -0
  44. package/src/{lib/components/TextField/README.mdx → components/TextField/README.md} +336 -342
  45. package/src/{lib/components/TextLink/README.mdx → components/TextLink/README.md} +19 -31
  46. package/src/{lib/components/Toggle/README.mdx → components/Toggle/README.md} +98 -110
  47. package/src/components/Toolbar/README.md +359 -0
  48. package/src/{lib/components → components}/Toolbar/_helpers/getAlignClassName.js +12 -4
  49. package/src/components/_helpers/getRootPriorityClassName.js +15 -0
  50. package/src/{lib/index.js → index.js} +6 -0
  51. package/src/{lib/provider → provider}/RUIProvider.jsx +17 -11
  52. package/src/{lib/styles → styles}/tools/_caret.scss +1 -1
  53. package/src/{lib/styles → styles}/tools/form-fields/_box-field-elements.scss +1 -1
  54. package/src/{lib/styles → styles}/tools/form-fields/_box-field-layout.scss +26 -14
  55. package/src/{lib/styles → styles}/tools/form-fields/_inline-field-elements.scss +2 -2
  56. package/src/{lib/theme.scss → theme.scss} +4 -3
  57. package/CONTRIBUTING.md +0 -137
  58. package/dist/lib.development.js +0 -3179
  59. package/dist/lib.js +0 -1
  60. package/public/racom.svg +0 -11
  61. package/src/lib/components/Badge/README.mdx +0 -126
  62. package/src/lib/components/Button/README.mdx +0 -581
  63. package/src/lib/components/Card/README.mdx +0 -326
  64. package/src/lib/components/FormLayout/README.mdx +0 -501
  65. package/src/lib/components/Grid/README.mdx +0 -299
  66. package/src/lib/components/Modal/README.mdx +0 -1360
  67. package/src/lib/components/Modal/_hooks/useModalScrollPrevention.js +0 -35
  68. package/src/lib/components/ScrollView/README.mdx +0 -521
  69. package/src/lib/components/SelectField/README.mdx +0 -693
  70. package/src/lib/components/Table/README.mdx +0 -275
  71. package/src/lib/components/Text/README.mdx +0 -241
  72. package/src/lib/components/TextArea/README.mdx +0 -366
  73. package/src/lib/components/Toolbar/README.mdx +0 -386
  74. package/src/{lib/components → components}/Alert/Alert.scss +0 -0
  75. package/src/{lib/components → components}/Alert/_settings.scss +0 -0
  76. package/src/{lib/components → components}/Alert/_theme.scss +0 -0
  77. package/src/{lib/components → components}/Alert/_tools.scss +0 -0
  78. package/src/{lib/components → components}/Alert/index.js +0 -0
  79. package/src/{lib/components → components}/Badge/index.js +0 -0
  80. package/src/{lib/components → components}/Button/Button.scss +0 -0
  81. package/src/{lib/components → components}/Button/_base.scss +0 -0
  82. package/src/{lib/components → components}/Button/_priorities.scss +0 -0
  83. package/src/{lib/components → components}/Button/_settings.scss +0 -0
  84. package/src/{lib/components → components}/Button/_theme.scss +0 -0
  85. package/src/{lib/components → components}/Button/_tools.scss +0 -0
  86. package/src/{lib/components → components}/Button/helpers/getRootLabelVisibilityClassName.js +0 -0
  87. package/src/{lib/components/_helpers → components/Button/helpers}/getRootPriorityClassName.js +0 -0
  88. package/src/{lib/components → components}/Button/index.js +0 -0
  89. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.scss +0 -0
  90. package/src/{lib/components → components}/ButtonGroup/ButtonGroupContext.js +0 -0
  91. package/src/{lib/components → components}/ButtonGroup/_theme.scss +0 -0
  92. package/src/{lib/components → components}/ButtonGroup/index.js +0 -0
  93. package/src/{lib/components → components}/Card/Card.scss +0 -0
  94. package/src/{lib/components → components}/Card/CardBody.jsx +0 -0
  95. package/src/{lib/components → components}/Card/CardFooter.jsx +0 -0
  96. package/src/{lib/components → components}/Card/_theme.scss +0 -0
  97. package/src/{lib/components → components}/Card/_tools.scss +0 -0
  98. package/src/{lib/components → components}/Card/index.js +0 -0
  99. package/src/{lib/components → components}/CheckboxField/CheckboxField.jsx +0 -0
  100. package/src/{lib/components → components}/CheckboxField/CheckboxField.scss +0 -0
  101. package/src/{lib/components → components}/CheckboxField/index.js +0 -0
  102. package/src/{lib/components → components}/FileInputField/FileInputField.jsx +0 -0
  103. package/src/{lib/components → components}/FileInputField/FileInputField.scss +0 -0
  104. package/src/{lib/components → components}/FileInputField/index.js +0 -0
  105. package/src/{lib/components → components}/FormLayout/FormLayout.scss +0 -0
  106. package/src/{lib/components → components}/FormLayout/FormLayoutContext.js +0 -0
  107. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.jsx +4 -4
  108. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.scss +0 -0
  109. package/src/{lib/components → components}/FormLayout/_theme.scss +0 -0
  110. package/src/{lib/components → components}/FormLayout/index.js +0 -0
  111. package/src/{lib/components → components}/Grid/Grid.scss +0 -0
  112. package/src/{lib/components → components}/Grid/GridSpan.jsx +0 -0
  113. package/src/{lib/components → components}/Grid/_helpers/generateResponsiveCustomProperties.js +0 -0
  114. package/src/{lib/components → components}/Grid/_settings.scss +0 -0
  115. package/src/{lib/components → components}/Grid/_tools.scss +0 -0
  116. package/src/{lib/components → components}/Grid/index.js +0 -0
  117. package/src/{lib/components → components}/InputGroup/InputGroupContext.js +0 -0
  118. package/src/{lib/components → components}/InputGroup/_theme.scss +0 -0
  119. package/src/{lib/components → components}/InputGroup/index.js +0 -0
  120. package/src/{lib/components → components}/Modal/Modal.scss +0 -0
  121. package/src/{lib/components → components}/Modal/ModalBody.jsx +0 -0
  122. package/src/{lib/components → components}/Modal/ModalBody.scss +0 -0
  123. package/src/{lib/components → components}/Modal/ModalCloseButton.jsx +1 -1
  124. package/src/{lib/components → components}/Modal/ModalCloseButton.scss +0 -0
  125. package/src/{lib/components → components}/Modal/ModalContent.jsx +0 -0
  126. package/src/{lib/components → components}/Modal/ModalContent.scss +0 -0
  127. package/src/{lib/components → components}/Modal/ModalFooter.jsx +0 -0
  128. package/src/{lib/components → components}/Modal/ModalFooter.scss +0 -0
  129. package/src/{lib/components → components}/Modal/ModalHeader.jsx +0 -0
  130. package/src/{lib/components → components}/Modal/ModalHeader.scss +0 -0
  131. package/src/{lib/components → components}/Modal/ModalTitle.jsx +0 -0
  132. package/src/{lib/components → components}/Modal/ModalTitle.scss +0 -0
  133. package/src/{lib/components → components}/Modal/_helpers/getJustifyClassName.js +0 -0
  134. package/src/{lib/components → components}/Modal/_helpers/getPositionClassName.js +0 -0
  135. package/src/{lib/components → components}/Modal/_helpers/getScrollingClassName.js +0 -0
  136. package/src/{lib/components → components}/Modal/_helpers/getSizeClassName.js +0 -0
  137. package/src/{lib/components → components}/Modal/_hooks/useModalFocus.js +0 -0
  138. package/src/{lib/components → components}/Modal/_settings.scss +0 -0
  139. package/src/{lib/components → components}/Modal/_theme.scss +0 -0
  140. package/src/{lib/components → components}/Modal/index.js +0 -0
  141. package/src/{lib/components → components}/Paper/Paper.jsx +0 -0
  142. package/src/{lib/components → components}/Paper/Paper.scss +0 -0
  143. package/src/{lib/components → components}/Paper/_theme.scss +0 -0
  144. package/src/{lib/components → components}/Paper/index.js +0 -0
  145. package/src/{lib/components → components}/Popover/Popover.jsx +0 -0
  146. package/src/{lib/components → components}/Popover/Popover.scss +0 -0
  147. package/src/{lib/components → components}/Popover/PopoverWrapper.jsx +0 -0
  148. package/src/{lib/components → components}/Popover/PopoverWrapper.scss +0 -0
  149. package/src/{lib/components → components}/Popover/_helpers/getRootAlignmentClassName.js +0 -0
  150. package/src/{lib/components → components}/Popover/_helpers/getRootSideClassName.js +0 -0
  151. package/src/{lib/components → components}/Popover/_theme.scss +0 -0
  152. package/src/{lib/components → components}/Popover/index.js +0 -0
  153. package/src/{lib/components → components}/Radio/index.js +0 -0
  154. package/src/{lib/components → components}/ScrollView/ScrollView.scss +0 -0
  155. package/src/{lib/components → components}/ScrollView/_helpers/getElementsPositionDifference.js +0 -0
  156. package/src/{lib/components → components}/ScrollView/_hooks/useLoadResizeHook.js +0 -0
  157. package/src/{lib/components → components}/ScrollView/_hooks/useScrollPositionHook.js +0 -0
  158. package/src/{lib/components → components}/ScrollView/index.js +0 -0
  159. package/src/{lib/components → components}/SelectField/SelectField.jsx +0 -0
  160. package/src/{lib/components → components}/SelectField/SelectField.scss +0 -0
  161. package/src/{lib/components → components}/SelectField/_components/Option/Option.jsx +0 -0
  162. package/src/{lib/components → components}/SelectField/_components/Option/index.js +0 -0
  163. package/src/{lib/components → components}/SelectField/index.js +0 -0
  164. package/src/{lib/components → components}/Table/Table.scss +0 -0
  165. package/src/{lib/components → components}/Table/_components/TableBodyCell/TableBodyCell.jsx +0 -0
  166. package/src/{lib/components → components}/Table/_components/TableBodyCell/index.js +0 -0
  167. package/src/{lib/components → components}/Table/_components/TableCell.scss +0 -0
  168. package/src/{lib/components → components}/Table/_components/TableHeaderCell/index.js +0 -0
  169. package/src/{lib/components → components}/Table/_settings.scss +0 -0
  170. package/src/{lib/components → components}/Table/index.js +0 -0
  171. package/src/{lib/components → components}/Tabs/Tabs.jsx +0 -0
  172. package/src/{lib/components → components}/Tabs/Tabs.scss +0 -0
  173. package/src/{lib/components → components}/Tabs/TabsItem.scss +0 -0
  174. package/src/{lib/components → components}/Tabs/_theme.scss +0 -0
  175. package/src/{lib/components → components}/Tabs/index.js +0 -0
  176. package/src/{lib/components → components}/Text/Text.jsx +0 -0
  177. package/src/{lib/components → components}/Text/Text.scss +0 -0
  178. package/src/{lib/components → components}/Text/_helpers/getRootClampClassName.js +0 -0
  179. package/src/{lib/components → components}/Text/_helpers/getRootHyphensClassName.js +0 -0
  180. package/src/{lib/components → components}/Text/_helpers/getRootWordWrappingClassName.js +0 -0
  181. package/src/{lib/components → components}/Text/index.js +0 -0
  182. package/src/{lib/components → components}/TextArea/TextArea.jsx +0 -0
  183. package/src/{lib/components → components}/TextArea/TextArea.scss +0 -0
  184. package/src/{lib/components → components}/TextArea/index.js +0 -0
  185. package/src/{lib/components → components}/TextField/TextField.jsx +0 -0
  186. package/src/{lib/components → components}/TextField/TextField.scss +0 -0
  187. package/src/{lib/components → components}/TextField/index.js +0 -0
  188. package/src/{lib/components → components}/TextLink/TextLink.jsx +1 -1
  189. /package/src/{lib/components → components}/TextLink/TextLink.scss +0 -0
  190. /package/src/{lib/components → components}/TextLink/_theme.scss +0 -0
  191. /package/src/{lib/components → components}/TextLink/index.js +0 -0
  192. /package/src/{lib/components → components}/Toggle/Toggle.jsx +0 -0
  193. /package/src/{lib/components → components}/Toggle/Toggle.scss +0 -0
  194. /package/src/{lib/components → components}/Toggle/index.js +0 -0
  195. /package/src/{lib/components → components}/Toolbar/Toolbar.jsx +0 -0
  196. /package/src/{lib/components → components}/Toolbar/Toolbar.scss +0 -0
  197. /package/src/{lib/components → components}/Toolbar/ToolbarGroup.jsx +0 -0
  198. /package/src/{lib/components → components}/Toolbar/ToolbarItem.jsx +0 -0
  199. /package/src/{lib/components → components}/Toolbar/_helpers/getJustifyClassName.js +0 -0
  200. /package/src/{lib/components → components}/Toolbar/_theme.scss +0 -0
  201. /package/src/{lib/components → components}/Toolbar/index.js +0 -0
  202. /package/src/{lib/components → components}/_helpers/getRootColorClassName.js +0 -0
  203. /package/src/{lib/components → components}/_helpers/getRootSizeClassName.js +0 -0
  204. /package/src/{lib/components → components}/_helpers/getRootValidationStateClassName.js +0 -0
  205. /package/src/{lib/components → components}/_helpers/isChildrenEmpty.js +0 -0
  206. /package/src/{lib/components → components}/_helpers/resolveContextOrProp.js +0 -0
  207. /package/src/{lib/components → components}/_helpers/transferProps.js +0 -0
  208. /package/src/{lib/foundation.scss → foundation.scss} +0 -0
  209. /package/src/{lib/helpers.scss → helpers.scss} +0 -0
  210. /package/src/{lib/provider → provider}/RUIContext.jsx +0 -0
  211. /package/src/{lib/provider → provider}/index.js +0 -0
  212. /package/src/{lib/provider → provider}/withGlobalProps.jsx +0 -0
  213. /package/src/{lib/styles → styles}/_utilities.scss +0 -0
  214. /package/src/{lib/styles → styles}/elements/_code.scss +0 -0
  215. /package/src/{lib/styles → styles}/elements/_links.scss +0 -0
  216. /package/src/{lib/styles → styles}/elements/_lists.scss +0 -0
  217. /package/src/{lib/styles → styles}/elements/_page.scss +0 -0
  218. /package/src/{lib/styles → styles}/elements/_rulers.scss +0 -0
  219. /package/src/{lib/styles → styles}/elements/_small.scss +0 -0
  220. /package/src/{lib/styles → styles}/generic/_box-sizing.scss +0 -0
  221. /package/src/{lib/styles → styles}/generic/_focus.scss +0 -0
  222. /package/src/{lib/styles → styles}/generic/_forms.scss +0 -0
  223. /package/src/{lib/styles → styles}/generic/_reset.scss +0 -0
  224. /package/src/{lib/styles → styles}/generic/_shared.scss +0 -0
  225. /package/src/{lib/styles → styles}/helpers/_animation.scss +0 -0
  226. /package/src/{lib/styles → styles}/settings/_animations.scss +0 -0
  227. /package/src/{lib/styles → styles}/settings/_breakpoints.scss +0 -0
  228. /package/src/{lib/styles → styles}/settings/_escaped-characters.scss +0 -0
  229. /package/src/{lib/styles → styles}/settings/_form-fields.scss +0 -0
  230. /package/src/{lib/styles → styles}/settings/_forms.scss +0 -0
  231. /package/src/{lib/styles → styles}/settings/_utilities.scss +0 -0
  232. /package/src/{lib/styles → styles}/settings/_z-indexes.scss +0 -0
  233. /package/src/{lib/styles → styles}/theme/_accessibility.scss +0 -0
  234. /package/src/{lib/styles → styles}/theme/_borders.scss +0 -0
  235. /package/src/{lib/styles → styles}/theme/_code.scss +0 -0
  236. /package/src/{lib/styles → styles}/theme/_form-fields.scss +0 -0
  237. /package/src/{lib/styles → styles}/theme/_links.scss +0 -0
  238. /package/src/{lib/styles → styles}/theme/_lists.scss +0 -0
  239. /package/src/{lib/styles → styles}/theme/_page.scss +0 -0
  240. /package/src/{lib/styles → styles}/theme/_spacing.scss +0 -0
  241. /package/src/{lib/styles → styles}/theme/_typography.scss +0 -0
  242. /package/src/{lib/styles → styles}/theme-constants/_breakpoints.scss +0 -0
  243. /package/src/{lib/styles → styles}/theme-constants/_colors.scss +0 -0
  244. /package/src/{lib/styles → styles}/theme-constants/_svg.scss +0 -0
  245. /package/src/{lib/styles → styles}/tools/_accessibility.scss +0 -0
  246. /package/src/{lib/styles → styles}/tools/_breakpoint.scss +0 -0
  247. /package/src/{lib/styles → styles}/tools/_colors.scss +0 -0
  248. /package/src/{lib/styles → styles}/tools/_reset.scss +0 -0
  249. /package/src/{lib/styles → styles}/tools/_scrollbar.scss +0 -0
  250. /package/src/{lib/styles → styles}/tools/_spacing.scss +0 -0
  251. /package/src/{lib/styles → styles}/tools/_string.scss +0 -0
  252. /package/src/{lib/styles → styles}/tools/_svg.scss +0 -0
  253. /package/src/{lib/styles → styles}/tools/_transition.scss +0 -0
  254. /package/src/{lib/styles → styles}/tools/_utilities.scss +0 -0
  255. /package/src/{lib/styles → styles}/tools/form-fields/_box-field-sizes.scss +0 -0
  256. /package/src/{lib/styles → styles}/tools/form-fields/_foundation.scss +0 -0
  257. /package/src/{lib/styles → styles}/tools/form-fields/_inline-field-layout.scss +0 -0
  258. /package/src/{lib/styles → styles}/tools/form-fields/_variants.scss +0 -0
  259. /package/src/{lib/translations → translations}/en.js +0 -0
  260. /package/src/{lib/utils → utils}/classNames.js +0 -0
@@ -1,275 +0,0 @@
1
- ---
2
- name: Table
3
- menu: 'Miscellaneous'
4
- route: /components/table
5
- ---
6
-
7
- # Table
8
-
9
- Table presents complex tabular data in an easy-to-scan way.
10
-
11
- import {
12
- Playground,
13
- Props,
14
- } from 'docz'
15
- import Icon from '../../../docs/_components/Icon'
16
- import {
17
- ScrollView,
18
- Table,
19
- } from '../..'
20
-
21
- ## Basic Usage
22
-
23
- To implement the Table component, you need to import it first:
24
-
25
- ```js
26
- import { Table } from '@react-ui-org/react-ui';
27
- ```
28
-
29
- And use it:
30
-
31
- <Playground>
32
- <Table
33
- columns={[
34
- {
35
- label: 'ID',
36
- name: 'id',
37
- },
38
- {
39
- label: 'Name',
40
- name: 'name',
41
- },
42
- {
43
- format: (date) => date.toLocaleDateString('en-GB'),
44
- label: 'Date of birth',
45
- name: 'dateOfBirth',
46
- },
47
- ]}
48
- rows={[
49
- {
50
- dateOfBirth: new Date(1940, 10, 9),
51
- id: 1,
52
- name: 'John Lennon',
53
- },
54
- {
55
- dateOfBirth: new Date(1942, 6, 18),
56
- id: 2,
57
- name: 'Paul McCartney',
58
- },
59
- {
60
- dateOfBirth: new Date(1943, 2, 25),
61
- id: 3,
62
- name: 'George Harrison',
63
- },
64
- {
65
- dateOfBirth: new Date(1940, 7, 7),
66
- id: 4,
67
- name: 'Richard Starkey (Ringo Starr)',
68
- },
69
- ]}
70
- />
71
- </Playground>
72
-
73
- See [API](#api) for all available options.
74
-
75
- ## General Guidelines
76
-
77
- - **Keep headers short** so users can quickly scan the content of the table.
78
- Just one or two words should be enough.
79
-
80
- - Tables are **good for displaying complex tabular data.** For simpler data sets
81
- or even plain key-value pairs, consider using the
82
- [Grid](/components/grid) component.
83
-
84
- - Tables make **lots of information easier to scan and compare.** If you have
85
- fewer sections and want to emphasize each group more, consider using
86
- [Cards](/components/card).
87
-
88
- ## Responsive Tables
89
-
90
- The easiest way to make tables responsive is to wrap them with the
91
- [ScrollView](/components/scroll-view) component in the horizontal mode.
92
-
93
- <Playground>
94
- <ScrollView direction="horizontal" shadowSize="100px">
95
- <Table
96
- columns={[
97
- {
98
- label: 'ID',
99
- name: 'id',
100
- },
101
- {
102
- format: (name) => (
103
- <span style={{ whiteSpace: 'nowrap' }}>{name}</span>
104
- ),
105
- label: 'Name',
106
- name: 'name',
107
- },
108
- {
109
- format: (note) => (
110
- <span style={{ whiteSpace: 'nowrap' }}>{note}</span>
111
- ),
112
- label: 'Note',
113
- name: 'note',
114
- },
115
- {
116
- format: (date) => date.toLocaleDateString('en-GB'),
117
- label: 'Date of birth',
118
- name: 'dateOfBirth',
119
- },
120
- ]}
121
- rows={[
122
- {
123
- dateOfBirth: new Date(1940, 10, 9),
124
- id: 1,
125
- name: 'John Lennon',
126
- note: 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '
127
- + 'Aenean commodo ligula eget dolor. Aenean massa. Cum sociis '
128
- + 'natoque penatibus et magnis dis parturient montes, nascetur '
129
- + 'ridiculus mus. Donec quam felis, ultricies nec, pellentesque '
130
- + 'eu, pretium quis, sem.',
131
- },
132
- {
133
- dateOfBirth: new Date(1942, 6, 18),
134
- id: 2,
135
- name: 'Paul McCartney',
136
- note: 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '
137
- + 'Aenean commodo ligula eget dolor. Aenean massa. Cum sociis '
138
- + 'natoque penatibus et magnis dis parturient montes, nascetur '
139
- + 'ridiculus mus. Donec quam felis, ultricies nec, pellentesque '
140
- + 'eu, pretium quis, sem.',
141
- },
142
- {
143
- dateOfBirth: new Date(1943, 2, 25),
144
- id: 3,
145
- name: 'George Harrison',
146
- note: 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '
147
- + 'Aenean commodo ligula eget dolor. Aenean massa. Cum sociis '
148
- + 'natoque penatibus et magnis dis parturient montes, nascetur '
149
- + 'ridiculus mus. Donec quam felis, ultricies nec, pellentesque '
150
- + 'eu, pretium quis, sem.',
151
- },
152
- {
153
- dateOfBirth: new Date(1940, 7, 7),
154
- id: 4,
155
- name: 'Richard Starkey (Ringo Starr)',
156
- note: 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '
157
- + 'Aenean commodo ligula eget dolor. Aenean massa. Cum sociis '
158
- + 'natoque penatibus et magnis dis parturient montes, nascetur '
159
- + 'ridiculus mus. Donec quam felis, ultricies nec, pellentesque '
160
- + 'eu, pretium quis, sem.',
161
- },
162
- ]}
163
- />
164
- </ScrollView>
165
- </Playground>
166
-
167
- ## Sortable Columns
168
-
169
- The Table supports sorting indicators by adding a simple configuration.
170
-
171
- ⚠️ The Table component only provides necessary visual support for sorting. Aside
172
- from icons, you must **provide the comparing functionality yourself** if you
173
- aren't rendering **already sorted data.** The reason for this decision is that
174
- client often does not have access to the full dataset.
175
-
176
- The following is an example of custom sorting function executed on the client.
177
-
178
- <Playground>
179
- {() => {
180
- const [tableSortColumn, setTableSortColumn] = React.useState('id');
181
- const [tableSortDirection, setTableSortDirection] = React.useState('asc');
182
- const [rows, setRows] = React.useState([
183
- {
184
- dateOfBirth: new Date(1940, 10, 9),
185
- id: 1,
186
- name: 'John Lennon',
187
- },
188
- {
189
- dateOfBirth: new Date(1942, 6, 18),
190
- id: 2,
191
- name: 'Paul McCartney',
192
- },
193
- {
194
- dateOfBirth: new Date(1943, 2, 25),
195
- id: 3,
196
- name: 'George Harrison',
197
- },
198
- {
199
- dateOfBirth: new Date(1940, 7, 7),
200
- id: 4,
201
- name: 'Richard Starkey (Ringo Starr)',
202
- },
203
- ]);
204
- const compare = (items, key, direction) => {
205
- const sortedItems = [...items];
206
- if (key === 'id' || key === 'dateOfBirth') {
207
- sortedItems.sort((a, b) => b[key] - a[key]);
208
- } else if (key === 'name') {
209
- sortedItems.sort((a, b) => {
210
- if (a.name < b.name) {
211
- return -1;
212
- }
213
- if (a.name > b.name) {
214
- return 1;
215
- }
216
- return 0;
217
- });
218
- }
219
- return direction === 'desc' ? sortedItems.reverse() : sortedItems;
220
- };
221
- const columns = [
222
- {
223
- isSortable: true,
224
- label: 'ID',
225
- name: 'id',
226
- },
227
- {
228
- isSortable: true,
229
- label: 'Name',
230
- name: 'name',
231
- },
232
- {
233
- format: (date) => date.toISOString(),
234
- isSortable: true,
235
- label: 'Date of birth',
236
- name: 'dateOfBirth',
237
- },
238
- ];
239
- return (
240
- <Table
241
- columns={columns}
242
- rows={rows}
243
- sort={{
244
- ascendingIcon: <Icon icon="up" />,
245
- column: tableSortColumn,
246
- descendingIcon: <Icon icon="down" />,
247
- direction: tableSortDirection,
248
- onClick: (column, direction) => {
249
- setTableSortColumn(column);
250
- setTableSortDirection(direction === 'asc' ? 'desc' : 'asc');
251
- setRows(compare(rows, column, direction));
252
- },
253
- }}
254
- />
255
- );
256
- }}
257
- </Playground>
258
-
259
- ## Forwarding HTML Attributes
260
-
261
- In addition to the options below in the [component's API](#api) section, you
262
- can specify [React synthetic events] or **any HTML attribute you like.** All
263
- attributes that don't interfere with the API are forwarded to the `<table>` HTML
264
- element. This enables making the component interactive and helps to improve its
265
- accessibility.
266
-
267
- 👉 Refer to the MDN reference for the full list of supported attributes of the
268
- [table] element.
269
-
270
- ## API
271
-
272
- <Props table of={Table} />
273
-
274
- [React synthetic events]: https://reactjs.org/docs/events.html
275
- [table]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table#attributes
@@ -1,241 +0,0 @@
1
- ---
2
- name: Text
3
- menu: 'Miscellaneous'
4
- route: /components/text
5
- ---
6
-
7
- # Text
8
-
9
- import {
10
- Playground,
11
- Props,
12
- } from 'docz'
13
- import { Placeholder } from '../../../docs/_components/Placeholder/Placeholder'
14
- import {
15
- Button,
16
- ButtonGroup,
17
- Text,
18
- TextField,
19
- Toolbar,
20
- ToolbarGroup,
21
- ToolbarItem,
22
- } from '../..'
23
-
24
- Text is a tiny component to control wrapping of text content.
25
-
26
- ## Basic Usage
27
-
28
- To implement the Text component, you need to import it first:
29
-
30
- ```js
31
- import { Text } from '@react-ui-org/react-ui';
32
- ```
33
-
34
- And use it:
35
-
36
- <Playground>
37
- <Placeholder>
38
- <Text lines={3}>
39
- Hello! This text will be clamped to three lines.
40
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo
41
- ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis
42
- dis parturient montes, nascetur ridiculus mus. Donec quam felis,
43
- ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa
44
- quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget,
45
- arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
46
- </Text>
47
- </Placeholder>
48
- </Playground>
49
-
50
- See [API](#api) for all available options.
51
-
52
- ## General Guidelines
53
-
54
- - Use Text anytime you need to **control potentially long strings** and
55
- prevent them from overflowing or breaking their container.
56
-
57
- - **By default, Text doesn't alter rendering of its content.** Use available
58
- options to achieve the result you need.
59
-
60
- - **Text renders as `<span>` by default,** so it can only contain
61
- inline-level HTML elements (like `<strong>` or `<a>`, but not `<div>`, `<p>`,
62
- or `<h2>`). If necessary, use the `blockLevel` option to render as `<div>` to
63
- keep your HTML valid.
64
-
65
- - **Use Text for short pieces of text content.** Including a couple of HTML tags
66
- shouldn't cause any harm, but keep in mind Text is not intended to wrap
67
- complex HTML structures or even React components.
68
-
69
- ## Number of Lines
70
-
71
- Specify how many `lines` of text should be visible if content doesn't fit its
72
- container. If the number of lines is exceeded, the content is truncated and
73
- appended by an ellipsis (`…`).
74
-
75
- <Playground>
76
- {() => {
77
- const [lines, setLines] = React.useState(1);
78
- return (
79
- <div>
80
- <Toolbar align="baseline">
81
- <ToolbarItem>
82
- <TextField
83
- label="Number of lines"
84
- min={1}
85
- max={100}
86
- onChange={(e) => setLines(Number(e.target.value))}
87
- type="number"
88
- value={lines}
89
- />
90
- </ToolbarItem>
91
- </Toolbar>
92
- <Placeholder>
93
- <Text lines={lines}>
94
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
95
- commodo ligula eget dolor. Aenean massa. Cum sociis natoque
96
- penatibus et magnis dis parturient montes, nascetur ridiculus mus.
97
- Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.
98
- Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
99
- aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut,
100
- imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede
101
- mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum
102
- semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula,
103
- porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem
104
- ante, dapibus in, viverra quis, feugiat a, tellus.
105
- </Text>
106
- </Placeholder>
107
- </div>
108
- );
109
- }}
110
- </Playground>
111
-
112
- ## Word Wrapping
113
-
114
- There are three possible ways of controlling wrapping of long words if they do
115
- not fit on a line. Set `wordWrapping` to one of the following values:
116
-
117
- - `normal`: Do not force any wrapping (default behavior).
118
-
119
- - `long-words`: To prevent overflow, an otherwise unbreakable string of
120
- characters — like a long word or URL — may be broken at any point if there are
121
- no otherwise-acceptable break points in the line.
122
-
123
- - `anywhere`: Create a break at the exact place where text would otherwise
124
- overflow its container (even if putting an entire word on its own line would
125
- negate the need for a break).
126
-
127
- 📖 [Read more about wrapping and breaking text at MDN.](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Text/Wrapping_Text)
128
-
129
- ### Hyphens
130
-
131
- The `hyphens` option specifies how words should be hyphenated when text wraps
132
- across multiple lines. It can prevent hyphenation entirely, hyphenate at
133
- manually-specified points within the text, or let the browser automatically
134
- insert hyphens where appropriate.
135
-
136
- 👉 The `auto` setting's behavior depends on the language being properly tagged
137
- to select the appropriate hyphenation rules. **You must specify a language**
138
- using the `lang` HTML attribute (e.g.
139
- [on `<html>` tag](/getting-started/usage#full-example)) to guarantee that
140
- automatic hyphenation is applied in that language.
141
-
142
- 👉 [Manually suggested line break opportunities](https://developer.mozilla.org/en-US/docs/Web/CSS/hyphens#suggesting_line_break_opportunities)
143
- will override automatic break point selection in `auto` mode when present.
144
-
145
- 📖 [Read more about `hyphens` CSS property at MDN.](https://developer.mozilla.org/en-US/docs/Web/CSS/hyphens)
146
-
147
- <Playground>
148
- {() => {
149
- const [hyphens, setHyphens] = React.useState('none');
150
- const [wordWrapping, setWordWrapping] = React.useState('normal');
151
- return (
152
- <div>
153
- <Toolbar>
154
- <ToolbarGroup align="baseline">
155
- <ToolbarItem>
156
- <span id="word-wrapping-options-label">Word wrapping:</span>
157
- </ToolbarItem>
158
- <ToolbarItem>
159
- <ButtonGroup aria-labelledby="word-wrapping-options-label" priority="outline">
160
- <Button
161
- aria-pressed={wordWrapping === 'normal'}
162
- color={wordWrapping === 'normal' ? 'selected' : 'secondary'}
163
- label="normal"
164
- onClick={() => setWordWrapping('normal')}
165
- />
166
- <Button
167
- aria-pressed={wordWrapping === 'long-words'}
168
- color={wordWrapping === 'long-words' ? 'selected' : 'secondary'}
169
- label="long-words"
170
- onClick={() => setWordWrapping('long-words')}
171
- />
172
- <Button
173
- aria-pressed={wordWrapping === 'anywhere'}
174
- color={wordWrapping === 'anywhere' ? 'selected' : 'secondary'}
175
- label="anywhere"
176
- onClick={() => setWordWrapping('anywhere')}
177
- />
178
- </ButtonGroup>
179
- </ToolbarItem>
180
- </ToolbarGroup>
181
- <ToolbarGroup align="baseline">
182
- <ToolbarItem>
183
- <span id="hyphens-options-label">Hyphens:</span>
184
- </ToolbarItem>
185
- <ToolbarItem>
186
- <ButtonGroup aria-labelledby="hyphens-options-label" priority="outline">
187
- <Button
188
- aria-pressed={hyphens === 'none'}
189
- color={hyphens === 'none' ? 'selected' : 'secondary'}
190
- label="none"
191
- onClick={() => setHyphens('none')}
192
- />
193
- <Button
194
- aria-pressed={hyphens === 'auto'}
195
- color={hyphens === 'auto' ? 'selected' : 'secondary'}
196
- label="auto"
197
- onClick={() => setHyphens('auto')}
198
- />
199
- <Button
200
- aria-pressed={hyphens === 'manual'}
201
- color={hyphens === 'manual' ? 'selected' : 'secondary'}
202
- label="manual"
203
- onClick={() => setHyphens('manual')}
204
- />
205
- </ButtonGroup>
206
- </ToolbarItem>
207
- </ToolbarGroup>
208
- </Toolbar>
209
- <Placeholder width="11em" bordered>
210
- <Text hyphens={hyphens} wordWrapping={wordWrapping}>
211
- {hyphens === 'manual'
212
- ? (<>LongWord&shy;ThatHasManual&shy;Breaking&shy;Possibilities</>)
213
- : (<>LongWordThatHasNoBreakingPossibilities</>)}
214
- {' '}
215
- and a couple of ordinary words that are nice and well behaved.
216
- </Text>
217
- </Placeholder>
218
- </div>
219
- );
220
- }}
221
- </Playground>
222
-
223
- ## Forwarding HTML Attributes
224
-
225
- In addition to the options below in the [component's API](#api) section, you
226
- can specify [React synthetic events] or **any HTML attribute you like.** All
227
- attributes that don't interfere with the API are forwarded either to the
228
- `<span>` or to the `<div>` HTML element in case that `blockLevel` is set to
229
- `true`. This enables making the component interactive and helps to improve its
230
- accessibility.
231
-
232
- 👉 Refer to the MDN reference for the full list of supported attributes of the
233
- [span] and [div] element.
234
-
235
- ## API
236
-
237
- <Props table of={Text} />
238
-
239
- [React synthetic events]: https://reactjs.org/docs/events.html
240
- [span]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span#attributes
241
- [div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes