@react-ui-org/react-ui 0.42.0 → 0.44.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 (167) hide show
  1. package/CONTRIBUTING.md +44 -25
  2. package/README.md +1 -1
  3. package/dist/lib.development.js +1598 -652
  4. package/dist/lib.js +1 -9
  5. package/package.json +49 -48
  6. package/src/lib/components/{ui/Alert → Alert}/Alert.jsx +17 -14
  7. package/src/lib/components/{ui/Alert → Alert}/Alert.scss +3 -3
  8. package/src/lib/components/{ui/Alert → Alert}/README.mdx +6 -6
  9. package/src/lib/components/{ui/Alert → Alert}/_settings.scss +1 -1
  10. package/src/lib/components/{ui/Alert → Alert}/_theme.scss +0 -0
  11. package/src/lib/components/{ui/Alert → Alert}/_tools.scss +0 -0
  12. package/src/lib/components/{ui/Alert → Alert}/index.js +0 -0
  13. package/src/lib/components/{ui/Badge → Badge}/Badge.jsx +2 -2
  14. package/src/lib/components/{ui/Badge → Badge}/Badge.scss +3 -3
  15. package/src/lib/components/{ui/Badge → Badge}/README.mdx +3 -3
  16. package/src/lib/components/{ui/Badge → Badge}/index.js +0 -0
  17. package/src/lib/components/Button/Button.jsx +198 -0
  18. package/src/lib/components/{ui/Button → Button}/Button.scss +0 -0
  19. package/src/lib/components/{ui/Button → Button}/README.mdx +160 -75
  20. package/src/lib/components/Button/_base.scss +148 -0
  21. package/src/lib/components/{ui/Button → Button}/_priorities.scss +0 -4
  22. package/src/lib/components/{ui/Button → Button}/_settings.scss +2 -3
  23. package/src/lib/components/{ui/Button → Button}/_theme.scss +3 -11
  24. package/src/lib/components/{ui/Button → Button}/_tools.scss +27 -44
  25. package/src/lib/components/Button/helpers/getRootLabelVisibilityClassName.js +33 -0
  26. package/src/lib/components/{ui/Button → Button}/helpers/getRootPriorityClassName.js +0 -4
  27. package/src/lib/components/{ui/Button → Button}/index.js +0 -0
  28. package/src/lib/components/{ui/ButtonGroup → ButtonGroup}/ButtonGroup.jsx +9 -11
  29. package/src/lib/components/{ui/ButtonGroup → ButtonGroup}/ButtonGroup.scss +0 -0
  30. package/src/lib/components/ButtonGroup/ButtonGroupContext.js +3 -0
  31. package/src/lib/components/{ui/ButtonGroup → ButtonGroup}/README.mdx +26 -2
  32. package/src/lib/components/ButtonGroup/index.js +2 -0
  33. package/src/lib/components/{layout/CTA → CTA}/CTA.jsx +5 -2
  34. package/src/lib/components/{layout/CTA → CTA}/CTA.scss +2 -2
  35. package/src/lib/components/{layout/CTA → CTA}/CTACenter.jsx +1 -1
  36. package/src/lib/components/{layout/CTA → CTA}/CTAEnd.jsx +1 -1
  37. package/src/lib/components/{layout/CTA → CTA}/CTAStart.jsx +1 -1
  38. package/src/lib/components/{layout/CTA → CTA}/README.mdx +3 -3
  39. package/src/lib/components/{layout/CTA → CTA}/index.js +0 -0
  40. package/src/lib/components/{ui/Card → Card}/Card.jsx +6 -4
  41. package/src/lib/components/{ui/Card → Card}/Card.scss +1 -1
  42. package/src/lib/components/{ui/Card → Card}/CardBody.jsx +1 -1
  43. package/src/lib/components/{ui/Card → Card}/CardFooter.jsx +1 -1
  44. package/src/lib/components/{ui/Card → Card}/README.mdx +2 -2
  45. package/src/lib/components/{ui/Card → Card}/_theme.scss +0 -0
  46. package/src/lib/components/{ui/Card → Card}/_tools.scss +0 -0
  47. package/src/lib/components/{ui/Card → Card}/index.js +0 -0
  48. package/src/lib/components/{layout/Center → Center}/Center.jsx +1 -1
  49. package/src/lib/components/{layout/Center → Center}/Center.scss +0 -0
  50. package/src/lib/components/{layout/Center → Center}/README.mdx +2 -2
  51. package/src/lib/components/{layout/Center → Center}/index.js +0 -0
  52. package/src/lib/components/CheckboxField/CheckboxField.jsx +164 -0
  53. package/src/lib/components/{ui/CheckboxField → CheckboxField}/CheckboxField.scss +5 -5
  54. package/src/lib/components/{ui/CheckboxField → CheckboxField}/README.mdx +15 -12
  55. package/src/lib/components/{ui/CheckboxField → CheckboxField}/index.js +0 -0
  56. package/src/lib/components/FileInputField/FileInputField.jsx +162 -0
  57. package/src/lib/components/{ui/FileInputField → FileInputField}/FileInputField.scss +5 -5
  58. package/src/lib/components/{ui/FileInputField → FileInputField}/README.mdx +8 -6
  59. package/src/lib/components/{ui/FileInputField → FileInputField}/index.js +0 -0
  60. package/src/lib/components/{layout/FormLayout → FormLayout}/FormLayout.jsx +16 -18
  61. package/src/lib/components/{layout/FormLayout → FormLayout}/FormLayout.scss +3 -3
  62. package/src/lib/components/FormLayout/FormLayoutContext.js +3 -0
  63. package/src/lib/components/{layout/FormLayout → FormLayout}/FormLayoutCustomField.jsx +33 -30
  64. package/src/lib/components/{layout/FormLayout → FormLayout}/FormLayoutCustomField.scss +4 -4
  65. package/src/lib/components/{layout/FormLayout → FormLayout}/README.mdx +30 -40
  66. package/src/lib/components/{layout/FormLayout → FormLayout}/_theme.scss +0 -0
  67. package/src/lib/components/{layout/FormLayout → FormLayout}/index.js +1 -0
  68. package/src/lib/components/{layout/Grid → Grid}/Grid.jsx +23 -5
  69. package/src/lib/components/{layout/Grid → Grid}/Grid.scss +2 -4
  70. package/src/lib/components/{layout/Grid → Grid}/GridSpan.jsx +10 -3
  71. package/src/lib/components/{layout/Grid → Grid}/README.mdx +42 -38
  72. package/src/lib/components/{layout/Grid → Grid}/_theme.scss +1 -2
  73. package/src/lib/components/{layout/Grid → Grid}/_tools.scss +2 -2
  74. package/src/lib/components/{layout/Grid → Grid}/helpers/generateResponsiveCustomProperties.js +0 -0
  75. package/src/lib/components/{layout/Grid → Grid}/index.js +0 -0
  76. package/src/lib/components/Link/Link.jsx +45 -0
  77. package/src/lib/components/Link/Link.scss +11 -0
  78. package/src/lib/components/Link/README.mdx +85 -0
  79. package/src/lib/components/Link/_theme.scss +4 -0
  80. package/src/lib/components/Link/index.js +1 -0
  81. package/src/lib/components/{layout/List → List}/List.jsx +1 -1
  82. package/src/lib/components/{layout/List → List}/List.scss +2 -2
  83. package/src/lib/components/{layout/List → List}/ListItem.jsx +1 -1
  84. package/src/lib/components/{layout/List → List}/README.mdx +2 -2
  85. package/src/lib/components/{layout/List → List}/_theme.scss +0 -0
  86. package/src/lib/components/{layout/List → List}/index.js +0 -0
  87. package/src/lib/components/{layout/Media → Media}/Media.jsx +4 -2
  88. package/src/lib/components/{layout/Media → Media}/Media.scss +1 -1
  89. package/src/lib/components/{layout/Media → Media}/MediaBody.jsx +1 -1
  90. package/src/lib/components/{layout/Media → Media}/MediaObject.jsx +1 -1
  91. package/src/lib/components/{layout/Media → Media}/README.mdx +2 -2
  92. package/src/lib/components/{layout/Media → Media}/index.js +0 -0
  93. package/src/lib/components/{ui/Modal → Modal}/Modal.jsx +28 -27
  94. package/src/lib/components/{ui/Modal → Modal}/Modal.scss +5 -5
  95. package/src/lib/components/{ui/Modal → Modal}/README.mdx +40 -40
  96. package/src/lib/components/{ui/Modal → Modal}/_settings.scss +4 -4
  97. package/src/lib/components/{ui/Modal → Modal}/_theme.scss +0 -0
  98. package/src/lib/components/{ui/Modal → Modal}/index.js +0 -0
  99. package/src/lib/components/{ui/Paper → Paper}/Paper.jsx +8 -1
  100. package/src/lib/components/{ui/Paper → Paper}/Paper.scss +5 -0
  101. package/src/lib/components/{ui/Paper → Paper}/README.mdx +14 -2
  102. package/src/lib/components/{ui/Paper → Paper}/_theme.scss +2 -0
  103. package/src/lib/components/{ui/Paper → Paper}/index.js +0 -0
  104. package/src/lib/components/{ui/Radio → Radio}/README.mdx +17 -14
  105. package/src/lib/components/Radio/Radio.jsx +188 -0
  106. package/src/lib/components/{ui/Radio → Radio}/Radio.scss +9 -9
  107. package/src/lib/components/{ui/Radio → Radio}/index.js +0 -0
  108. package/src/lib/components/{ui/ScrollView → ScrollView}/README.mdx +10 -10
  109. package/src/lib/components/{ui/ScrollView → ScrollView}/ScrollView.jsx +9 -10
  110. package/src/lib/components/{ui/ScrollView → ScrollView}/ScrollView.scss +6 -6
  111. package/src/lib/components/{ui/ScrollView → ScrollView}/_theme.scss +0 -0
  112. package/src/lib/components/{ui/ScrollView → ScrollView}/index.js +0 -0
  113. package/src/lib/components/{ui/SelectField → SelectField}/README.mdx +44 -41
  114. package/src/lib/components/SelectField/SelectField.jsx +219 -0
  115. package/src/lib/components/{ui/SelectField → SelectField}/SelectField.scss +6 -6
  116. package/src/lib/components/{ui/SelectField → SelectField}/index.js +0 -0
  117. package/src/lib/components/{ui/Table → Table}/README.mdx +7 -7
  118. package/src/lib/components/{ui/Table → Table}/Table.jsx +9 -13
  119. package/src/lib/components/{ui/Table → Table}/Table.scss +1 -1
  120. package/src/lib/components/{ui/Table → Table}/_settings.scss +4 -4
  121. package/src/lib/components/{ui/Table → Table}/index.js +0 -0
  122. package/src/lib/components/{ui/Tabs → Tabs}/README.mdx +3 -3
  123. package/src/lib/components/{ui/Tabs → Tabs}/Tabs.jsx +4 -4
  124. package/src/lib/components/{ui/Tabs → Tabs}/Tabs.scss +1 -1
  125. package/src/lib/components/{ui/Tabs → Tabs}/TabsItem.jsx +4 -3
  126. package/src/lib/components/{ui/Tabs → Tabs}/TabsItem.scss +3 -3
  127. package/src/lib/components/{ui/Tabs → Tabs}/_theme.scss +0 -0
  128. package/src/lib/components/{ui/Tabs → Tabs}/index.js +0 -0
  129. package/src/lib/components/{ui/Text → Text}/README.mdx +19 -19
  130. package/src/lib/components/{ui/Text → Text}/Text.jsx +1 -1
  131. package/src/lib/components/{ui/Text → Text}/Text.scss +0 -0
  132. package/src/lib/components/{ui/Text → Text}/helpers/getRootHyphensClassName.js +0 -0
  133. package/src/lib/components/{ui/Text → Text}/helpers/getRootWordWrappingClassName.js +0 -0
  134. package/src/lib/components/{ui/Text → Text}/index.js +0 -0
  135. package/src/lib/components/{ui/TextArea → TextArea}/README.mdx +8 -6
  136. package/src/lib/components/{ui/TextArea → TextArea}/TextArea.jsx +78 -78
  137. package/src/lib/components/{ui/TextArea → TextArea}/TextArea.scss +6 -6
  138. package/src/lib/components/{ui/TextArea → TextArea}/index.js +0 -0
  139. package/src/lib/components/{ui/TextField → TextField}/README.mdx +7 -6
  140. package/src/lib/components/{ui/TextField → TextField}/TextField.jsx +20 -23
  141. package/src/lib/components/{ui/TextField → TextField}/TextField.scss +6 -6
  142. package/src/lib/components/{ui/TextField → TextField}/index.js +0 -0
  143. package/src/lib/components/{ui/Toggle → Toggle}/README.mdx +15 -12
  144. package/src/lib/components/Toggle/Toggle.jsx +163 -0
  145. package/src/lib/components/{ui/Toggle → Toggle}/Toggle.scss +5 -5
  146. package/src/lib/components/{ui/Toggle → Toggle}/index.js +0 -0
  147. package/src/lib/components/{layout/Toolbar → Toolbar}/README.mdx +26 -26
  148. package/src/lib/components/{layout/Toolbar → Toolbar}/Toolbar.jsx +1 -1
  149. package/src/lib/components/{layout/Toolbar → Toolbar}/Toolbar.scss +1 -1
  150. package/src/lib/components/{layout/Toolbar → Toolbar}/ToolbarGroup.jsx +1 -1
  151. package/src/lib/components/{layout/Toolbar → Toolbar}/ToolbarItem.jsx +1 -1
  152. package/src/lib/components/{layout/Toolbar → Toolbar}/_theme.scss +0 -0
  153. package/src/lib/components/{layout/Toolbar → Toolbar}/index.js +0 -0
  154. package/src/lib/components/{ui/withForwardedRef.jsx → withForwardedRef.jsx} +0 -0
  155. package/src/lib/helpers/resolveContextOrProp.js +7 -0
  156. package/src/lib/index.js +34 -35
  157. package/src/lib/styles/tools/_accessibility.scss +9 -0
  158. package/src/lib/theme.scss +25 -7
  159. package/src/lib/components/ui/Button/Button.jsx +0 -191
  160. package/src/lib/components/ui/Button/_base.scss +0 -154
  161. package/src/lib/components/ui/Button/helpers/getRootLabelVisibilityClassName.js +0 -11
  162. package/src/lib/components/ui/ButtonGroup/index.js +0 -1
  163. package/src/lib/components/ui/CheckboxField/CheckboxField.jsx +0 -173
  164. package/src/lib/components/ui/FileInputField/FileInputField.jsx +0 -158
  165. package/src/lib/components/ui/Radio/Radio.jsx +0 -179
  166. package/src/lib/components/ui/SelectField/SelectField.jsx +0 -214
  167. package/src/lib/components/ui/Toggle/Toggle.jsx +0 -174
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-ui-org/react-ui",
3
3
  "description": "React UI is a themeable UI library for React apps.",
4
- "version": "0.42.0",
4
+ "version": "0.44.0",
5
5
  "keywords": [
6
6
  "react",
7
7
  "ui",
@@ -33,69 +33,69 @@
33
33
  "npm": ">=6.14.8"
34
34
  },
35
35
  "dependencies": {
36
- "@nejcm/docz-theme-extended": "^2.0.14",
37
- "docz": "^2.3.1",
38
- "gatsby-plugin-sass": "^3.2.0",
39
- "normalize.css": "^8.0.1",
40
- "prism-react-renderer": "^1.2.1",
41
- "prop-types": "^15.7.2",
42
- "react": "^16.14.0",
43
- "react-dom": "^16.14.0",
44
- "react-keyed-flatten-children": "^1.3.0"
36
+ "normalize.css": "^8.0.1"
45
37
  },
46
38
  "devDependencies": {
47
- "@babel/cli": "^7.14.3",
48
- "@babel/core": "^7.14.3",
49
- "@babel/plugin-proposal-class-properties": "^7.13.0",
50
- "@babel/plugin-transform-spread": "7.13.0",
51
- "@babel/preset-env": "^7.14.4",
52
- "@babel/preset-react": "^7.13.13",
53
- "@babel/register": "^7.13.16",
39
+ "@babel/cli": "^7.16.0",
40
+ "@babel/core": "^7.16.0",
41
+ "@babel/eslint-parser": "^7.16.3",
42
+ "@babel/plugin-proposal-class-properties": "^7.16.0",
43
+ "@babel/plugin-transform-spread": "^7.16.0",
44
+ "@babel/preset-env": "^7.16.0",
45
+ "@babel/preset-react": "^7.16.0",
46
+ "@babel/register": "^7.16.0",
47
+ "@nejcm/docz-theme-extended": "^2.0.14",
48
+ "@testing-library/jest-dom": "^5.15.0",
49
+ "@testing-library/react": "^12.1.2",
50
+ "@testing-library/user-event": "^13.5.0",
54
51
  "@visionappscz/eslint-config-visionapps": "^1.5.0",
55
52
  "@visionappscz/stylelint-config-visionapps": "^2.0.1",
56
53
  "@visionappscz/stylelint-config-visionapps-order": "^2.1.0",
57
- "autoprefixer": "^10.2.6",
54
+ "autoprefixer": "^10.4.0",
58
55
  "babel-core": "^7.0.0-bridge.0",
59
- "babel-eslint": "^10.1.0",
60
- "babel-jest": "^27.0.2",
61
- "babel-loader": "^8.2.2",
62
- "concurrently": "^6.2.0",
63
- "core-js": "^3.14.0",
64
- "css-loader": "^5.2.6",
65
- "enzyme": "^3.11.0",
66
- "enzyme-adapter-react-16": "^1.15.6",
67
- "enzyme-to-json": "^3.6.2",
68
- "eslint": "^7.28.0",
69
- "eslint-config-airbnb": "^18.2.1",
56
+ "babel-jest": "^27.3.1",
57
+ "babel-loader": "^8.2.3",
58
+ "concurrently": "^6.4.0",
59
+ "core-js": "^3.19.1",
60
+ "css-loader": "^5.2.7",
61
+ "docz": "^2.3.3-alpha.0",
62
+ "eslint": "^7.32.0",
63
+ "eslint-config-airbnb": "^19.0.0",
70
64
  "eslint-loader": "^4.0.2",
71
- "eslint-plugin-import": "^2.23.4",
72
- "eslint-plugin-jsx-a11y": "^6.4.1",
73
- "eslint-plugin-markdown": "^2.2.0",
74
- "eslint-plugin-mdx": "^1.13.0",
75
- "eslint-plugin-react": "^7.24.0",
76
- "eslint-plugin-react-hooks": "^4.2.0",
65
+ "eslint-plugin-import": "^2.25.3",
66
+ "eslint-plugin-jsx-a11y": "^6.5.1",
67
+ "eslint-plugin-markdown": "^2.2.1",
68
+ "eslint-plugin-mdx": "^1.16.0",
69
+ "eslint-plugin-react": "^7.27.0",
70
+ "eslint-plugin-react-hooks": "^4.3.0",
71
+ "gatsby-plugin-sass": "^3.2.0",
77
72
  "identity-obj-proxy": "^3.0.0",
78
- "jest": "^27.0.4",
79
- "markdownlint-cli2": "~0.1.3",
80
- "nodemon": "^2.0.7",
81
- "postcss": "^8.3.0",
73
+ "jest": "^27.3.1",
74
+ "markdownlint-cli2": "~0.3.2",
75
+ "nodemon": "^2.0.15",
76
+ "postcss": "^8.3.11",
82
77
  "postcss-loader": "^4.3.0",
78
+ "prism-react-renderer": "^1.2.1",
79
+ "prop-types": "^15.7.2",
80
+ "react": "^17.0.2",
81
+ "react-dom": "^17.0.2",
83
82
  "rimraf": "^3.0.2",
84
- "sass": "^1.34.1",
83
+ "sass": "^1.43.4",
85
84
  "sass-loader": "^10.2.0",
86
- "sinon": "^11.1.1",
85
+ "sinon": "^12.0.1",
87
86
  "style-loader": "^2.0.0",
88
87
  "stylelint": "^13.13.1",
89
- "stylelint-config-css-modules": "^2.2.0",
90
- "stylelint-order": "^4.1.0",
91
- "stylelint-webpack-plugin": "^2.1.1",
88
+ "stylelint-config-css-modules": "^2.3.0",
89
+ "stylelint-order": "^5.0.0",
90
+ "stylelint-webpack-plugin": "^3.1.0",
92
91
  "webpack": "^4.46.0",
93
92
  "webpack-cli": "^3.3.12",
94
93
  "webpack-visualizer-plugin": "^0.1.11"
95
94
  },
96
95
  "peerDependencies": {
97
- "react": "^16.13.1",
98
- "react-dom": "^16.13.1"
96
+ "prop-types": "^15.7.2",
97
+ "react": "^17.0.2",
98
+ "react-dom": "^17.0.2"
99
99
  },
100
100
  "resolutions": {
101
101
  "@babel/plugin-transform-spread": "7.12.1"
@@ -107,12 +107,13 @@
107
107
  "docs:serve": "rimraf .docz && npm run docs:build && docz serve",
108
108
  "lib:build": "concurrently \"webpack --mode development --config webpack.config.js\" \"webpack --mode production --config webpack.config.js\"",
109
109
  "lib:jest": "jest",
110
- "lib:test": "stylelint \"src/lib/**/*.scss\" --config stylelint.config.js && eslint src/lib --ext js,jsx && npm run lib:jest",
110
+ "lib:test:js": "concurrently \"eslint --ext js,jsx src/lib tests/propTests\" \"npm run lib:jest\"",
111
+ "lib:test:css": "stylelint \"src/lib/**/*.scss\" --config stylelint.config.js",
111
112
  "markdown:lint": "markdownlint-cli2 \"**/*.md?(x)\" \"#.docz\" \"#dist\" \"#node_modules\" && eslint \"**/*.md?(x)\"",
112
113
  "markdown:watch": "nodemon --watch . --ext md,mdx --exec \"npm run markdown:lint\"",
113
114
  "prepublishOnly": "npm run lib:build",
114
115
  "start": "concurrently --kill-others \"npm run watch\" \"npm run docs:dev\"",
115
- "test": "concurrently \"npm run markdown:lint\" \"npm run lib:test\"",
116
+ "test": "concurrently \"npm run markdown:lint\" \"npm run lib:test:js\" \"npm run lib:test:css\"",
116
117
  "watch": "npm run markdown:watch"
117
118
  }
118
119
  }
@@ -1,15 +1,15 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import getRootColorClassName from '../../../helpers/getRootColorClassName';
4
- import { withProviderContext } from '../../../provider';
3
+ import getRootColorClassName from '../../helpers/getRootColorClassName';
4
+ import { withProviderContext } from '../../provider';
5
5
  import styles from './Alert.scss';
6
6
 
7
7
  export const Alert = ({
8
8
  children,
9
- closeHandler,
10
9
  color,
11
10
  icon,
12
11
  id,
12
+ onClose,
13
13
  translations,
14
14
  }) => (
15
15
  <div
@@ -31,13 +31,13 @@ export const Alert = ({
31
31
  >
32
32
  {children}
33
33
  </div>
34
- {closeHandler && (
34
+ {onClose && (
35
35
  <button
36
36
  type="button"
37
37
  {...(id && { id: `${id}__close` })}
38
38
  className={styles.close}
39
- onClick={() => closeHandler()}
40
- onKeyPress={() => closeHandler()}
39
+ onClick={() => onClose()}
40
+ onKeyPress={() => onClose()}
41
41
  tabIndex="0"
42
42
  title={translations.close}
43
43
  >
@@ -48,10 +48,10 @@ export const Alert = ({
48
48
  );
49
49
 
50
50
  Alert.defaultProps = {
51
- closeHandler: null,
52
51
  color: 'note',
53
52
  icon: null,
54
53
  id: undefined,
54
+ onClose: null,
55
55
  };
56
56
 
57
57
  Alert.propTypes = {
@@ -59,11 +59,6 @@ Alert.propTypes = {
59
59
  * Alert body.
60
60
  */
61
61
  children: PropTypes.node.isRequired,
62
- /**
63
- * Function to call when the close button is clicked. If not provided, close buttons will be
64
- * hidden.
65
- */
66
- closeHandler: PropTypes.func,
67
62
  /**
68
63
  * [Color variant](/foundation/colors#component-colors) to clarify importance and meaning of the alert.
69
64
  */
@@ -75,10 +70,18 @@ Alert.propTypes = {
75
70
  */
76
71
  icon: PropTypes.node,
77
72
  /**
78
- * ID of the root HTML element. It also serves as a prefix for alert body and and close button
79
- * elements: `<ID>__content` and `<ID>__close`.
73
+ * ID of the root HTML element.
74
+ *
75
+ * Also serves as base for ids of nested elements:
76
+ * * `<ID>__close`
77
+ * * `<ID>__content`
80
78
  */
81
79
  id: PropTypes.string,
80
+ /**
81
+ * Function to call when the close button is clicked. If not provided, close buttons will be
82
+ * hidden.
83
+ */
84
+ onClose: PropTypes.func,
82
85
  /**
83
86
  * Translations required by the component.
84
87
  */
@@ -1,7 +1,7 @@
1
1
  @use 'sass:map';
2
- @use '../../../styles/theme/typography';
3
- @use '../../../styles/tools/accessibility';
4
- @use '../../../styles/tools/reset';
2
+ @use '../../styles/theme/typography';
3
+ @use '../../styles/tools/accessibility';
4
+ @use '../../styles/tools/reset';
5
5
  @use 'settings';
6
6
  @use 'theme';
7
7
  @use 'tools';
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: Alert
3
- menu: 'UI'
4
- route: /components/ui/alert
3
+ menu: 'Miscellaneous'
4
+ route: /components/alert
5
5
  ---
6
6
 
7
7
  # Alert
@@ -10,8 +10,8 @@ import {
10
10
  Playground,
11
11
  Props,
12
12
  } from 'docz'
13
- import Icon from '../../../../docs/_components/Icon'
14
- import Placeholder from '../../../../docs/_components/Placeholder'
13
+ import Icon from '../../../docs/_components/Icon'
14
+ import Placeholder from '../../../docs/_components/Placeholder'
15
15
  import Button from '../Button'
16
16
  import {
17
17
  AlertWithContext as Alert,
@@ -190,14 +190,14 @@ click on the close button:
190
190
  <Alert
191
191
  color="success"
192
192
  icon={<Icon icon="success" />}
193
- closeHandler={() => setIsAlertVisible(false)}
193
+ onClose={() => setIsAlertVisible(false)}
194
194
  >
195
195
  <strong>Success:</strong> Settings have been successfully saved.
196
196
  </Alert>
197
197
  ) : (
198
198
  <Button
199
- clickHandler={() => setIsAlertVisible(true)}
200
199
  label="Bring the alert back!"
200
+ onClick={() => setIsAlertVisible(true)}
201
201
  />
202
202
  )}
203
203
  </>
@@ -1,5 +1,5 @@
1
1
  @use 'sass:map';
2
- @use '../../../styles/theme/typography';
2
+ @use '../../styles/theme/typography';
3
3
  @use 'theme';
4
4
 
5
5
  $font-size: map.get(typography.$size-values, 0);
File without changes
@@ -1,7 +1,7 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import getRootColorClassName from '../../../helpers/getRootColorClassName';
4
- import { withProviderContext } from '../../../provider';
3
+ import getRootColorClassName from '../../helpers/getRootColorClassName';
4
+ import { withProviderContext } from '../../provider';
5
5
  import styles from './Badge.scss';
6
6
 
7
7
  export const Badge = ({
@@ -1,8 +1,8 @@
1
1
  @use 'sass:map';
2
2
  @use 'sass:math';
3
- @use '../../../styles/theme/borders';
4
- @use '../../../styles/theme/colors';
5
- @use '../../../styles/theme/typography';
3
+ @use '../../styles/theme/borders';
4
+ @use '../../styles/theme/colors';
5
+ @use '../../styles/theme/typography';
6
6
 
7
7
  $_badge-size: 1.25rem;
8
8
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: Badge
3
- menu: 'UI'
4
- route: /components/ui/badge
3
+ menu: 'Miscellaneous'
4
+ route: /components/badge
5
5
  ---
6
6
 
7
7
  # Badge
@@ -12,7 +12,7 @@ import {
12
12
  Playground,
13
13
  Props,
14
14
  } from 'docz'
15
- import Placeholder from '../../../../docs/_components/Placeholder'
15
+ import Placeholder from '../../../docs/_components/Placeholder'
16
16
  import { Badge } from './Badge'
17
17
 
18
18
  ## Basic Usage
File without changes
@@ -0,0 +1,198 @@
1
+ import PropTypes from 'prop-types';
2
+ import React, { useContext } from 'react';
3
+ import getRootSizeClassName from '../../helpers/getRootSizeClassName';
4
+ import getRootColorClassName from '../../helpers/getRootColorClassName';
5
+ import { resolveContextOrProp } from '../../helpers/resolveContextOrProp';
6
+ import { withProviderContext } from '../../provider';
7
+ import transferProps from '../../utils/transferProps';
8
+ import withForwardedRef from '../withForwardedRef';
9
+ import { ButtonGroupContext } from '../ButtonGroup';
10
+ import getRootLabelVisibilityClassName from './helpers/getRootLabelVisibilityClassName';
11
+ import getRootPriorityClassName from './helpers/getRootPriorityClassName';
12
+ import styles from './Button.scss';
13
+
14
+ export const Button = ({
15
+ afterLabel,
16
+ beforeLabel,
17
+ block,
18
+ disabled,
19
+ endCorner,
20
+ feedbackIcon,
21
+ forwardedRef,
22
+ id,
23
+ label,
24
+ labelVisibility,
25
+ priority,
26
+ size,
27
+ startCorner,
28
+ type,
29
+ color,
30
+ ...restProps
31
+ }) => {
32
+ const context = useContext(ButtonGroupContext);
33
+
34
+ return (
35
+ /* No worries, `type` is always assigned correctly through props. */
36
+ /* eslint-disable react/button-has-type */
37
+ <button
38
+ {...transferProps(restProps)}
39
+ className={[
40
+ styles.root,
41
+ getRootPriorityClassName(
42
+ resolveContextOrProp(context && context.priority, priority),
43
+ styles,
44
+ ),
45
+ getRootColorClassName(color, styles),
46
+ getRootSizeClassName(
47
+ resolveContextOrProp(context && context.size, size),
48
+ styles,
49
+ ),
50
+ getRootLabelVisibilityClassName(labelVisibility, styles),
51
+ resolveContextOrProp(context && context.block, block) ? styles.rootBlock : '',
52
+ context ? styles.rootGrouped : '',
53
+ feedbackIcon ? styles.hasRootFeedback : '',
54
+ ].join(' ')}
55
+ disabled={resolveContextOrProp(context && context.disabled, disabled) || !!feedbackIcon}
56
+ id={id}
57
+ ref={forwardedRef}
58
+ type={type}
59
+ >
60
+ {startCorner && (
61
+ <span className={styles.startCorner}>
62
+ {startCorner}
63
+ </span>
64
+ )}
65
+ {beforeLabel && (
66
+ <span className={styles.beforeLabel}>
67
+ {beforeLabel}
68
+ </span>
69
+ )}
70
+ <span
71
+ className={styles.label}
72
+ {...(id && { id: `${id}__labelText` })}
73
+ >
74
+ {label}
75
+ </span>
76
+ {afterLabel && (
77
+ <span className={styles.afterLabel}>
78
+ {afterLabel}
79
+ </span>
80
+ )}
81
+ {endCorner && (
82
+ <span className={styles.endCorner}>
83
+ {endCorner}
84
+ </span>
85
+ )}
86
+ {feedbackIcon && (
87
+ <span className={styles.feedbackIcon}>
88
+ {feedbackIcon}
89
+ </span>
90
+ )}
91
+ </button>
92
+ /* eslint-enable react/button-has-type */
93
+ );
94
+ };
95
+
96
+ Button.defaultProps = {
97
+ afterLabel: null,
98
+ beforeLabel: null,
99
+ block: false,
100
+ color: 'primary',
101
+ disabled: false,
102
+ endCorner: null,
103
+ feedbackIcon: null,
104
+ forwardedRef: undefined,
105
+ id: undefined,
106
+ labelVisibility: 'xs',
107
+ priority: 'filled',
108
+ size: 'medium',
109
+ startCorner: null,
110
+ type: 'button',
111
+ };
112
+
113
+ Button.propTypes = {
114
+ /**
115
+ * Element to be displayed after label, eg. an icon.
116
+ */
117
+ afterLabel: PropTypes.node,
118
+ /**
119
+ * Element to be displayed before label, eg. an icon.
120
+ */
121
+ beforeLabel: PropTypes.node,
122
+ /**
123
+ * If `true`, the button will span the full width of its parent.
124
+ *
125
+ * Ignored if the component is rendered within `ButtonGroup` component
126
+ * as the value is inherited in such case.
127
+ */
128
+ block: PropTypes.bool,
129
+ /**
130
+ * [Color variant](/foundation/colors#component-colors) to clarify importance and meaning of the button.
131
+ */
132
+ color: PropTypes.oneOf(['primary', 'secondary', 'success', 'warning', 'danger', 'help', 'info', 'note', 'light', 'dark']),
133
+ /**
134
+ * If `true`, the button will be disabled.
135
+ *
136
+ * Ignored if the component is rendered within `ButtonGroup` component
137
+ * as the value is inherited in such case.
138
+ */
139
+ disabled: PropTypes.bool,
140
+ /**
141
+ * Element to be displayed in the top right corner.
142
+ */
143
+ endCorner: PropTypes.node,
144
+ /**
145
+ * Element to be displayed as a feedback icon on top of button label. When defined, it implies the
146
+ * button is in feedback state.
147
+ */
148
+ feedbackIcon: PropTypes.node,
149
+ /**
150
+ * Reference forwarded to the `button` element.
151
+ */
152
+ forwardedRef: PropTypes.oneOfType([
153
+ PropTypes.func,
154
+ // eslint-disable-next-line react/forbid-prop-types
155
+ PropTypes.shape({ current: PropTypes.any }),
156
+ ]),
157
+ /**
158
+ * ID of the root HTML element.
159
+ *
160
+ * Also serves as base for ids of nested elements:
161
+ * * `<ID>__labelText`
162
+ */
163
+ id: PropTypes.string,
164
+ /**
165
+ * Button label.
166
+ */
167
+ label: PropTypes.string.isRequired,
168
+ /**
169
+ * Defines minimum breakpoint from which the button label will be visible.
170
+ */
171
+ labelVisibility: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl', 'none']),
172
+ /**
173
+ * Visual priority to highlight or suppress the button.
174
+ *
175
+ * Ignored if the component is rendered within `ButtonGroup` component
176
+ * as the value is inherited in such case.
177
+ */
178
+ priority: PropTypes.oneOf(['filled', 'outline', 'flat']),
179
+ /**
180
+ * Size of the button.
181
+ *
182
+ * Ignored if the component is rendered within `ButtonGroup` component
183
+ * as the value is inherited in such case.
184
+ */
185
+ size: PropTypes.oneOf(['small', 'medium', 'large']),
186
+ /**
187
+ * Element to be displayed in the top left corner.
188
+ */
189
+ startCorner: PropTypes.node,
190
+ /**
191
+ * Set the HTML `type` attribute of the `button` element.
192
+ */
193
+ type: PropTypes.oneOf(['button', 'submit']),
194
+ };
195
+
196
+ export const ButtonWithContext = withForwardedRef(withProviderContext(Button, 'Button'));
197
+
198
+ export default ButtonWithContext;